@zsviczian/excalidraw 0.10.0-obsidian-15 → 0.10.0-obsidian-19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/excalidraw.development.js +5 -5
- package/dist/excalidraw.production.min.js +1 -1
- package/package.json +1 -2
- package/types/packages/excalidraw/index.d.ts +1 -1
- package/types/packages/excalidraw/webpack.dev.config.d.ts +1 -0
- package/types/packages/excalidraw/webpack.prod.config.d.ts +1 -0
- package/types/packages/utils.d.ts +2 -0
|
@@ -575,7 +575,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
|
|
|
575
575
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
576
576
|
|
|
577
577
|
"use strict";
|
|
578
|
-
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"line\\\": () => (/* binding */ line),\\n/* harmony export */ \\\"linearPath\\\": () => (/* binding */ linearPath),\\n/* harmony export */ \\\"polygon\\\": () => (/* binding */ polygon),\\n/* harmony export */ \\\"rectangle\\\": () => (/* binding */ rectangle),\\n/* harmony export */ \\\"curve\\\": () => (/* binding */ curve),\\n/* harmony export */ \\\"ellipse\\\": () => (/* binding */ ellipse),\\n/* harmony export */ \\\"generateEllipseParams\\\": () => (/* binding */ generateEllipseParams),\\n/* harmony export */ \\\"ellipseWithParams\\\": () => (/* binding */ ellipseWithParams),\\n/* harmony export */ \\\"arc\\\": () => (/* binding */ arc),\\n/* harmony export */ \\\"svgPath\\\": () => (/* binding */ svgPath),\\n/* harmony export */ \\\"solidFillPolygon\\\": () => (/* binding */ solidFillPolygon),\\n/* harmony export */ \\\"patternFillPolygons\\\": () => (/* binding */ patternFillPolygons),\\n/* harmony export */ \\\"patternFillArc\\\": () => (/* binding */ patternFillArc),\\n/* harmony export */ \\\"randOffset\\\": () => (/* binding */ randOffset),\\n/* harmony export */ \\\"randOffsetWithRange\\\": () => (/* binding */ randOffsetWithRange),\\n/* harmony export */ \\\"doubleLineFillOps\\\": () => (/* binding */ doubleLineFillOps)\\n/* harmony export */ });\\n/* harmony import */ var _fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fillers/filler.js */ \\\"../../../node_modules/roughjs/bin/fillers/filler.js\\\");\\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \\\"../../../node_modules/roughjs/bin/math.js\\\");\\n/* harmony import */ var path_data_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path-data-parser */ \\\"../../../node_modules/path-data-parser/lib/index.js\\\");\\n\\n\\n\\nconst helper = {\\n randOffset,\\n randOffsetWithRange,\\n ellipse,\\n doubleLineOps: doubleLineFillOps,\\n};\\nfunction line(x1, y1, x2, y2, o) {\\n return { type: 'path', ops: _doubleLine(x1, y1, x2, y2, o) };\\n}\\nfunction linearPath(points, close, o) {\\n const len = (points || []).length;\\n if (len > 2) {\\n const ops = [];\\n for (let i = 0; i < (len - 1); i++) {\\n ops.push(..._doubleLine(points[i][0], points[i][1], points[i + 1][0], points[i + 1][1], o));\\n }\\n if (close) {\\n ops.push(..._doubleLine(points[len - 1][0], points[len - 1][1], points[0][0], points[0][1], o));\\n }\\n return { type: 'path', ops };\\n }\\n else if (len === 2) {\\n return line(points[0][0], points[0][1], points[1][0], points[1][1], o);\\n }\\n return { type: 'path', ops: [] };\\n}\\nfunction polygon(points, o) {\\n return linearPath(points, true, o);\\n}\\nfunction rectangle(x, y, width, height, o) {\\n const points = [\\n [x, y],\\n [x + width, y],\\n [x + width, y + height],\\n [x, y + height],\\n ];\\n return polygon(points, o);\\n}\\nfunction curve(points, o) {\\n let o1 = _curveWithOffset(points, 1 * (1 + o.roughness * 0.2), o);\\n if (!o.disableMultiStroke) {\\n const o2 = _curveWithOffset(points, 1.5 * (1 + o.roughness * 0.22), cloneOptionsAlterSeed(o));\\n o1 = o1.concat(o2);\\n }\\n return { type: 'path', ops: o1 };\\n}\\nfunction ellipse(x, y, width, height, o) {\\n const params = generateEllipseParams(width, height, o);\\n return ellipseWithParams(x, y, o, params).opset;\\n}\\nfunction generateEllipseParams(width, height, o) {\\n const psq = Math.sqrt(Math.PI * 2 * Math.sqrt((Math.pow(width / 2, 2) + Math.pow(height / 2, 2)) / 2));\\n const stepCount = Math.max(o.curveStepCount, (o.curveStepCount / Math.sqrt(200)) * psq);\\n const increment = (Math.PI * 2) / stepCount;\\n let rx = Math.abs(width / 2);\\n let ry = Math.abs(height / 2);\\n const curveFitRandomness = 1 - o.curveFitting;\\n rx += _offsetOpt(rx * curveFitRandomness, o);\\n ry += _offsetOpt(ry * curveFitRandomness, o);\\n return { increment, rx, ry };\\n}\\nfunction ellipseWithParams(x, y, o, ellipseParams) {\\n const [ap1, cp1] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1, ellipseParams.increment * _offset(0.1, _offset(0.4, 1, o), o), o);\\n let o1 = _curve(ap1, null, o);\\n if ((!o.disableMultiStroke) && (o.roughness !== 0)) {\\n const [ap2] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1.5, 0, o);\\n const o2 = _curve(ap2, null, o);\\n o1 = o1.concat(o2);\\n }\\n return {\\n estimatedPoints: cp1,\\n opset: { type: 'path', ops: o1 },\\n };\\n}\\nfunction arc(x, y, width, height, start, stop, closed, roughClosure, o) {\\n const cx = x;\\n const cy = y;\\n let rx = Math.abs(width / 2);\\n let ry = Math.abs(height / 2);\\n rx += _offsetOpt(rx * 0.01, o);\\n ry += _offsetOpt(ry * 0.01, o);\\n let strt = start;\\n let stp = stop;\\n while (strt < 0) {\\n strt += Math.PI * 2;\\n stp += Math.PI * 2;\\n }\\n if ((stp - strt) > (Math.PI * 2)) {\\n strt = 0;\\n stp = Math.PI * 2;\\n }\\n const ellipseInc = (Math.PI * 2) / o.curveStepCount;\\n const arcInc = Math.min(ellipseInc / 2, (stp - strt) / 2);\\n const ops = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1, o);\\n if (!o.disableMultiStroke) {\\n const o2 = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1.5, o);\\n ops.push(...o2);\\n }\\n if (closed) {\\n if (roughClosure) {\\n ops.push(..._doubleLine(cx, cy, cx + rx * Math.cos(strt), cy + ry * Math.sin(strt), o), ..._doubleLine(cx, cy, cx + rx * Math.cos(stp), cy + ry * Math.sin(stp), o));\\n }\\n else {\\n ops.push({ op: 'lineTo', data: [cx, cy] }, { op: 'lineTo', data: [cx + rx * Math.cos(strt), cy + ry * Math.sin(strt)] });\\n }\\n }\\n return { type: 'path', ops };\\n}\\nfunction svgPath(path, o) {\\n const segments = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.normalize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.absolutize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.parsePath)(path)));\\n const ops = [];\\n let first = [0, 0];\\n let current = [0, 0];\\n for (const { key, data } of segments) {\\n switch (key) {\\n case 'M': {\\n const ro = 1 * (o.maxRandomnessOffset || 0);\\n const pv = o.preserveVertices;\\n ops.push({ op: 'move', data: data.map((d) => d + (pv ? 0 : _offsetOpt(ro, o))) });\\n current = [data[0], data[1]];\\n first = [data[0], data[1]];\\n break;\\n }\\n case 'L':\\n ops.push(..._doubleLine(current[0], current[1], data[0], data[1], o));\\n current = [data[0], data[1]];\\n break;\\n case 'C': {\\n const [x1, y1, x2, y2, x, y] = data;\\n ops.push(..._bezierTo(x1, y1, x2, y2, x, y, current, o));\\n current = [x, y];\\n break;\\n }\\n case 'Z':\\n ops.push(..._doubleLine(current[0], current[1], first[0], first[1], o));\\n current = [first[0], first[1]];\\n break;\\n }\\n }\\n return { type: 'path', ops };\\n}\\n// Fills\\nfunction solidFillPolygon(polygonList, o) {\\n const ops = [];\\n for (const points of polygonList) {\\n if (points.length) {\\n const offset = o.maxRandomnessOffset || 0;\\n const len = points.length;\\n if (len > 2) {\\n ops.push({ op: 'move', data: [points[0][0] + _offsetOpt(offset, o), points[0][1] + _offsetOpt(offset, o)] });\\n for (let i = 1; i < len; i++) {\\n ops.push({ op: 'lineTo', data: [points[i][0] + _offsetOpt(offset, o), points[i][1] + _offsetOpt(offset, o)] });\\n }\\n }\\n }\\n }\\n return { type: 'fillPath', ops };\\n}\\nfunction patternFillPolygons(polygonList, o) {\\n return (0,_fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__.getFiller)(o, helper).fillPolygons(polygonList, o);\\n}\\nfunction patternFillArc(x, y, width, height, start, stop, o) {\\n const cx = x;\\n const cy = y;\\n let rx = Math.abs(width / 2);\\n let ry = Math.abs(height / 2);\\n rx += _offsetOpt(rx * 0.01, o);\\n ry += _offsetOpt(ry * 0.01, o);\\n let strt = start;\\n let stp = stop;\\n while (strt < 0) {\\n strt += Math.PI * 2;\\n stp += Math.PI * 2;\\n }\\n if ((stp - strt) > (Math.PI * 2)) {\\n strt = 0;\\n stp = Math.PI * 2;\\n }\\n const increment = (stp - strt) / o.curveStepCount;\\n const points = [];\\n for (let angle = strt; angle <= stp; angle = angle + increment) {\\n points.push([cx + rx * Math.cos(angle), cy + ry * Math.sin(angle)]);\\n }\\n points.push([cx + rx * Math.cos(stp), cy + ry * Math.sin(stp)]);\\n points.push([cx, cy]);\\n return patternFillPolygons([points], o);\\n}\\nfunction randOffset(x, o) {\\n return _offsetOpt(x, o);\\n}\\nfunction randOffsetWithRange(min, max, o) {\\n return _offset(min, max, o);\\n}\\nfunction doubleLineFillOps(x1, y1, x2, y2, o) {\\n return _doubleLine(x1, y1, x2, y2, o, true);\\n}\\n// Private helpers\\nfunction cloneOptionsAlterSeed(ops) {\\n const result = Object.assign({}, ops);\\n result.randomizer = undefined;\\n if (ops.seed) {\\n result.seed = ops.seed + 1;\\n }\\n return result;\\n}\\nfunction random(ops) {\\n if (!ops.randomizer) {\\n ops.randomizer = new _math_js__WEBPACK_IMPORTED_MODULE_1__.Random(ops.seed || 0);\\n }\\n return ops.randomizer.next();\\n}\\nfunction _offset(min, max, ops, roughnessGain = 1) {\\n return ops.roughness * roughnessGain * ((random(ops) * (max - min)) + min);\\n}\\nfunction _offsetOpt(x, ops, roughnessGain = 1) {\\n return _offset(-x, x, ops, roughnessGain);\\n}\\nfunction _doubleLine(x1, y1, x2, y2, o, filling = false) {\\n const singleStroke = filling ? o.disableMultiStrokeFill : o.disableMultiStroke;\\n const o1 = _line(x1, y1, x2, y2, o, true, false);\\n if (singleStroke) {\\n return o1;\\n }\\n const o2 = _line(x1, y1, x2, y2, o, true, true);\\n return o1.concat(o2);\\n}\\nfunction _line(x1, y1, x2, y2, o, move, overlay) {\\n const lengthSq = Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2);\\n const length = Math.sqrt(lengthSq);\\n let roughnessGain = 1;\\n if (length < 200) {\\n roughnessGain = 1;\\n }\\n else if (length > 500) {\\n roughnessGain = 0.4;\\n }\\n else {\\n roughnessGain = (-0.0016668) * length + 1.233334;\\n }\\n let offset = o.maxRandomnessOffset || 0;\\n if ((offset * offset * 100) > lengthSq) {\\n offset = length / 10;\\n }\\n const halfOffset = offset / 2;\\n const divergePoint = 0.2 + random(o) * 0.2;\\n let midDispX = o.bowing * o.maxRandomnessOffset * (y2 - y1) / 200;\\n let midDispY = o.bowing * o.maxRandomnessOffset * (x1 - x2) / 200;\\n midDispX = _offsetOpt(midDispX, o, roughnessGain);\\n midDispY = _offsetOpt(midDispY, o, roughnessGain);\\n const ops = [];\\n const randomHalf = () => _offsetOpt(halfOffset, o, roughnessGain);\\n const randomFull = () => _offsetOpt(offset, o, roughnessGain);\\n const preserveVertices = o.preserveVertices;\\n if (move) {\\n if (overlay) {\\n ops.push({\\n op: 'move', data: [\\n x1 + (preserveVertices ? 0 : randomHalf()),\\n y1 + (preserveVertices ? 0 : randomHalf()),\\n ],\\n });\\n }\\n else {\\n ops.push({\\n op: 'move', data: [\\n x1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),\\n y1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),\\n ],\\n });\\n }\\n }\\n if (overlay) {\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n midDispX + x1 + (x2 - x1) * divergePoint + randomHalf(),\\n midDispY + y1 + (y2 - y1) * divergePoint + randomHalf(),\\n midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomHalf(),\\n midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomHalf(),\\n x2 + (preserveVertices ? 0 : randomHalf()),\\n y2 + (preserveVertices ? 0 : randomHalf()),\\n ],\\n });\\n }\\n else {\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n midDispX + x1 + (x2 - x1) * divergePoint + randomFull(),\\n midDispY + y1 + (y2 - y1) * divergePoint + randomFull(),\\n midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomFull(),\\n midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomFull(),\\n x2 + (preserveVertices ? 0 : randomFull()),\\n y2 + (preserveVertices ? 0 : randomFull()),\\n ],\\n });\\n }\\n return ops;\\n}\\nfunction _curveWithOffset(points, offset, o) {\\n const ps = [];\\n ps.push([\\n points[0][0] + _offsetOpt(offset, o),\\n points[0][1] + _offsetOpt(offset, o),\\n ]);\\n ps.push([\\n points[0][0] + _offsetOpt(offset, o),\\n points[0][1] + _offsetOpt(offset, o),\\n ]);\\n for (let i = 1; i < points.length; i++) {\\n ps.push([\\n points[i][0] + _offsetOpt(offset, o),\\n points[i][1] + _offsetOpt(offset, o),\\n ]);\\n if (i === (points.length - 1)) {\\n ps.push([\\n points[i][0] + _offsetOpt(offset, o),\\n points[i][1] + _offsetOpt(offset, o),\\n ]);\\n }\\n }\\n return _curve(ps, null, o);\\n}\\nfunction _curve(points, closePoint, o) {\\n const len = points.length;\\n const ops = [];\\n if (len > 3) {\\n const b = [];\\n const s = 1 - o.curveTightness;\\n ops.push({ op: 'move', data: [points[1][0], points[1][1]] });\\n for (let i = 1; (i + 2) < len; i++) {\\n const cachedVertArray = points[i];\\n b[0] = [cachedVertArray[0], cachedVertArray[1]];\\n b[1] = [cachedVertArray[0] + (s * points[i + 1][0] - s * points[i - 1][0]) / 6, cachedVertArray[1] + (s * points[i + 1][1] - s * points[i - 1][1]) / 6];\\n b[2] = [points[i + 1][0] + (s * points[i][0] - s * points[i + 2][0]) / 6, points[i + 1][1] + (s * points[i][1] - s * points[i + 2][1]) / 6];\\n b[3] = [points[i + 1][0], points[i + 1][1]];\\n ops.push({ op: 'bcurveTo', data: [b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1]] });\\n }\\n if (closePoint && closePoint.length === 2) {\\n const ro = o.maxRandomnessOffset;\\n ops.push({ op: 'lineTo', data: [closePoint[0] + _offsetOpt(ro, o), closePoint[1] + _offsetOpt(ro, o)] });\\n }\\n }\\n else if (len === 3) {\\n ops.push({ op: 'move', data: [points[1][0], points[1][1]] });\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n points[1][0], points[1][1],\\n points[2][0], points[2][1],\\n points[2][0], points[2][1],\\n ],\\n });\\n }\\n else if (len === 2) {\\n ops.push(..._doubleLine(points[0][0], points[0][1], points[1][0], points[1][1], o));\\n }\\n return ops;\\n}\\nfunction _computeEllipsePoints(increment, cx, cy, rx, ry, offset, overlap, o) {\\n const corePoints = [];\\n const allPoints = [];\\n const radOffset = _offsetOpt(0.5, o) - (Math.PI / 2);\\n const coreOnly = o.roughness === 0;\\n if (!coreOnly) {\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),\\n _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),\\n ]);\\n }\\n const endAngle = Math.PI * 2 + (coreOnly ? 0 : (radOffset - 0.01));\\n for (let angle = radOffset; angle < endAngle; angle = angle + increment) {\\n const p = [\\n _offsetOpt(offset, o) + cx + rx * Math.cos(angle),\\n _offsetOpt(offset, o) + cy + ry * Math.sin(angle),\\n ];\\n corePoints.push(p);\\n allPoints.push(p);\\n }\\n if (!coreOnly) {\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + rx * Math.cos(radOffset + Math.PI * 2 + overlap * 0.5),\\n _offsetOpt(offset, o) + cy + ry * Math.sin(radOffset + Math.PI * 2 + overlap * 0.5),\\n ]);\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + 0.98 * rx * Math.cos(radOffset + overlap),\\n _offsetOpt(offset, o) + cy + 0.98 * ry * Math.sin(radOffset + overlap),\\n ]);\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset + overlap * 0.5),\\n _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset + overlap * 0.5),\\n ]);\\n }\\n return [allPoints, corePoints];\\n}\\nfunction _arc(increment, cx, cy, rx, ry, strt, stp, offset, o) {\\n const radOffset = strt + _offsetOpt(0.1, o);\\n const points = [];\\n points.push([\\n _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),\\n _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),\\n ]);\\n for (let angle = radOffset; angle <= stp; angle = angle + increment) {\\n points.push([\\n _offsetOpt(offset, o) + cx + rx * Math.cos(angle),\\n _offsetOpt(offset, o) + cy + ry * Math.sin(angle),\\n ]);\\n }\\n points.push([\\n cx + rx * Math.cos(stp),\\n cy + ry * Math.sin(stp),\\n ]);\\n points.push([\\n cx + rx * Math.cos(stp),\\n cy + ry * Math.sin(stp),\\n ]);\\n return _curve(points, null, o);\\n}\\nfunction _bezierTo(x1, y1, x2, y2, x, y, current, o) {\\n const ops = [];\\n const ros = [o.maxRandomnessOffset || 1, (o.maxRandomnessOffset || 1) + 0.3];\\n let f = [0, 0];\\n const iterations = o.disableMultiStroke ? 1 : 2;\\n const preserveVertices = o.preserveVertices;\\n for (let i = 0; i < iterations; i++) {\\n if (i === 0) {\\n ops.push({ op: 'move', data: [current[0], current[1]] });\\n }\\n else {\\n ops.push({ op: 'move', data: [current[0] + (preserveVertices ? 0 : _offsetOpt(ros[0], o)), current[1] + (preserveVertices ? 0 : _offsetOpt(ros[0], o))] });\\n }\\n f = preserveVertices ? [x, y] : [x + _offsetOpt(ros[i], o), y + _offsetOpt(ros[i], o)];\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n x1 + _offsetOpt(ros[i], o), y1 + _offsetOpt(ros[i], o),\\n x2 + _offsetOpt(ros[i], o), y2 + _offsetOpt(ros[i], o),\\n f[0], f[1],\\n ],\\n });\\n }\\n return ops;\\n}\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL3JlbmRlcmVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDYjtBQUNpQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDhCQUE4QixJQUFJLDBFQUEwRTtBQUNuSTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUCxxQkFBcUIsMkRBQVMsQ0FBQyw0REFBVSxDQUFDLDJEQUFTO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFFQUFxRTtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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dUIsOElBQThJO0FBQ3JLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL3JlbmRlcmVyLmpzPzBkM2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RmlsbGVyIH0gZnJvbSAnLi9maWxsZXJzL2ZpbGxlci5qcyc7XG5pbXBvcnQgeyBSYW5kb20gfSBmcm9tICcuL21hdGguanMnO1xuaW1wb3J0IHsgcGFyc2VQYXRoLCBub3JtYWxpemUsIGFic29sdXRpemUgfSBmcm9tICdwYXRoLWRhdGEtcGFyc2VyJztcbmNvbnN0IGhlbHBlciA9IHtcbiAgICByYW5kT2Zmc2V0LFxuICAgIHJhbmRPZmZzZXRXaXRoUmFuZ2UsXG4gICAgZWxsaXBzZSxcbiAgICBkb3VibGVMaW5lT3BzOiBkb3VibGVMaW5lRmlsbE9wcyxcbn07XG5leHBvcnQgZnVuY3Rpb24gbGluZSh4MSwgeTEsIHgyLCB5Miwgbykge1xuICAgIHJldHVybiB7IHR5cGU6ICdwYXRoJywgb3BzOiBfZG91YmxlTGluZSh4MSwgeTEsIHgyLCB5MiwgbykgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJQYXRoKHBvaW50cywgY2xvc2UsIG8pIHtcbiAgICBjb25zdCBsZW4gPSAocG9pbnRzIHx8IFtdKS5sZW5ndGg7XG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgICAgY29uc3Qgb3BzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgKGxlbiAtIDEpOyBpKyspIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKC4uLl9kb3VibGVMaW5lKHBvaW50c1tpXVswXSwgcG9pbnRzW2ldWzFdLCBwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdLCBvKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsb3NlKSB7XG4gICAgICAgICAgICBvcHMucHVzaCguLi5fZG91YmxlTGluZShwb2ludHNbbGVuIC0gMV1bMF0sIHBvaW50c1tsZW4gLSAxXVsxXSwgcG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV0sIG8pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlOiAncGF0aCcsIG9wcyB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUocG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV0sIHBvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdLCBvKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZTogJ3BhdGgnLCBvcHM6IFtdIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcG9seWdvbihwb2ludHMsIG8pIHtcbiAgICByZXR1cm4gbGluZWFyUGF0aChwb2ludHMsIHRydWUsIG8pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlY3RhbmdsZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBvKSB7XG4gICAgY29uc3QgcG9pbnRzID0gW1xuICAgICAgICBbeCwgeV0sXG4gICAgICAgIFt4ICsgd2lkdGgsIHldLFxuICAgICAgICBbeCArIHdpZHRoLCB5ICsgaGVpZ2h0XSxcbiAgICAgICAgW3gsIHkgKyBoZWlnaHRdLFxuICAgIF07XG4gICAgcmV0dXJuIHBvbHlnb24ocG9pbnRzLCBvKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjdXJ2ZShwb2ludHMsIG8pIHtcbiAgICBsZXQgbzEgPSBfY3VydmVXaXRoT2Zmc2V0KHBvaW50cywgMSAqICgxICsgby5yb3VnaG5lc3MgKiAwLjIpLCBvKTtcbiAgICBpZiAoIW8uZGlzYWJsZU11bHRpU3Ryb2tlKSB7XG4gICAgICAgIGNvbnN0IG8yID0gX2N1cnZlV2l0aE9mZnNldChwb2ludHMsIDEuNSAqICgxICsgby5yb3VnaG5lc3MgKiAwLjIyKSwgY2xvbmVPcHRpb25zQWx0ZXJTZWVkKG8pKTtcbiAgICAgICAgbzEgPSBvMS5jb25jYXQobzIpO1xuICAgIH1cbiAgICByZXR1cm4geyB0eXBlOiAncGF0aCcsIG9wczogbzEgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbGxpcHNlKHgsIHksIHdpZHRoLCBoZWlnaHQsIG8pIHtcbiAgICBjb25zdCBwYXJhbXMgPSBnZW5lcmF0ZUVsbGlwc2VQYXJhbXMod2lkdGgsIGhlaWdodCwgbyk7XG4gICAgcmV0dXJuIGVsbGlwc2VXaXRoUGFyYW1zKHgsIHksIG8sIHBhcmFtcykub3BzZXQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFbGxpcHNlUGFyYW1zKHdpZHRoLCBoZWlnaHQsIG8pIHtcbiAgICBjb25zdCBwc3EgPSBNYXRoLnNxcnQoTWF0aC5QSSAqIDIgKiBNYXRoLnNxcnQoKE1hdGgucG93KHdpZHRoIC8gMiwgMikgKyBNYXRoLnBvdyhoZWlnaHQgLyAyLCAyKSkgLyAyKSk7XG4gICAgY29uc3Qgc3RlcENvdW50ID0gTWF0aC5tYXgoby5jdXJ2ZVN0ZXBDb3VudCwgKG8uY3VydmVTdGVwQ291bnQgLyBNYXRoLnNxcnQoMjAwKSkgKiBwc3EpO1xuICAgIGNvbnN0IGluY3JlbWVudCA9IChNYXRoLlBJICogMikgLyBzdGVwQ291bnQ7XG4gICAgbGV0IHJ4ID0gTWF0aC5hYnMod2lkdGggLyAyKTtcbiAgICBsZXQgcnkgPSBNYXRoLmFicyhoZWlnaHQgLyAyKTtcbiAgICBjb25zdCBjdXJ2ZUZpdFJhbmRvbW5lc3MgPSAxIC0gby5jdXJ2ZUZpdHRpbmc7XG4gICAgcnggKz0gX29mZnNldE9wdChyeCAqIGN1cnZlRml0UmFuZG9tbmVzcywgbyk7XG4gICAgcnkgKz0gX29mZnNldE9wdChyeSAqIGN1cnZlRml0UmFuZG9tbmVzcywgbyk7XG4gICAgcmV0dXJuIHsgaW5jcmVtZW50LCByeCwgcnkgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbGxpcHNlV2l0aFBhcmFtcyh4LCB5LCBvLCBlbGxpcHNlUGFyYW1zKSB7XG4gICAgY29uc3QgW2FwMSwgY3AxXSA9IF9jb21wdXRlRWxsaXBzZVBvaW50cyhlbGxpcHNlUGFyYW1zLmluY3JlbWVudCwgeCwgeSwgZWxsaXBzZVBhcmFtcy5yeCwgZWxsaXBzZVBhcmFtcy5yeSwgMSwgZWxsaXBzZVBhcmFtcy5pbmNyZW1lbnQgKiBfb2Zmc2V0KDAuMSwgX29mZnNldCgwLjQsIDEsIG8pLCBvKSwgbyk7XG4gICAgbGV0IG8xID0gX2N1cnZlKGFwMSwgbnVsbCwgbyk7XG4gICAgaWYgKCghby5kaXNhYmxlTXVsdGlTdHJva2UpICYmIChvLnJvdWdobmVzcyAhPT0gMCkpIHtcbiAgICAgICAgY29uc3QgW2FwMl0gPSBfY29tcHV0ZUVsbGlwc2VQb2ludHMoZWxsaXBzZVBhcmFtcy5pbmNyZW1lbnQsIHgsIHksIGVsbGlwc2VQYXJhbXMucngsIGVsbGlwc2VQYXJhbXMucnksIDEuNSwgMCwgbyk7XG4gICAgICAgIGNvbnN0IG8yID0gX2N1cnZlKGFwMiwgbnVsbCwgbyk7XG4gICAgICAgIG8xID0gbzEuY29uY2F0KG8yKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZXN0aW1hdGVkUG9pbnRzOiBjcDEsXG4gICAgICAgIG9wc2V0OiB7IHR5cGU6ICdwYXRoJywgb3BzOiBvMSB9LFxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gYXJjKHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0YXJ0LCBzdG9wLCBjbG9zZWQsIHJvdWdoQ2xvc3VyZSwgbykge1xuICAgIGNvbnN0IGN4ID0geDtcbiAgICBjb25zdCBjeSA9IHk7XG4gICAgbGV0IHJ4ID0gTWF0aC5hYnMod2lkdGggLyAyKTtcbiAgICBsZXQgcnkgPSBNYXRoLmFicyhoZWlnaHQgLyAyKTtcbiAgICByeCArPSBfb2Zmc2V0T3B0KHJ4ICogMC4wMSwgbyk7XG4gICAgcnkgKz0gX29mZnNldE9wdChyeSAqIDAuMDEsIG8pO1xuICAgIGxldCBzdHJ0ID0gc3RhcnQ7XG4gICAgbGV0IHN0cCA9IHN0b3A7XG4gICAgd2hpbGUgKHN0cnQgPCAwKSB7XG4gICAgICAgIHN0cnQgKz0gTWF0aC5QSSAqIDI7XG4gICAgICAgIHN0cCArPSBNYXRoLlBJICogMjtcbiAgICB9XG4gICAgaWYgKChzdHAgLSBzdHJ0KSA+IChNYXRoLlBJICogMikpIHtcbiAgICAgICAgc3RydCA9IDA7XG4gICAgICAgIHN0cCA9IE1hdGguUEkgKiAyO1xuICAgIH1cbiAgICBjb25zdCBlbGxpcHNlSW5jID0gKE1hdGguUEkgKiAyKSAvIG8uY3VydmVTdGVwQ291bnQ7XG4gICAgY29uc3QgYXJjSW5jID0gTWF0aC5taW4oZWxsaXBzZUluYyAvIDIsIChzdHAgLSBzdHJ0KSAvIDIpO1xuICAgIGNvbnN0IG9wcyA9IF9hcmMoYXJjSW5jLCBjeCwgY3ksIHJ4LCByeSwgc3RydCwgc3RwLCAxLCBvKTtcbiAgICBpZiAoIW8uZGlzYWJsZU11bHRpU3Ryb2tlKSB7XG4gICAgICAgIGNvbnN0IG8yID0gX2FyYyhhcmNJbmMsIGN4LCBjeSwgcngsIHJ5LCBzdHJ0LCBzdHAsIDEuNSwgbyk7XG4gICAgICAgIG9wcy5wdXNoKC4uLm8yKTtcbiAgICB9XG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgICBpZiAocm91Z2hDbG9zdXJlKSB7XG4gICAgICAgICAgICBvcHMucHVzaCguLi5fZG91YmxlTGluZShjeCwgY3ksIGN4ICsgcnggKiBNYXRoLmNvcyhzdHJ0KSwgY3kgKyByeSAqIE1hdGguc2luKHN0cnQpLCBvKSwgLi4uX2RvdWJsZUxpbmUoY3gsIGN5LCBjeCArIHJ4ICogTWF0aC5jb3Moc3RwKSwgY3kgKyByeSAqIE1hdGguc2luKHN0cCksIG8pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKHsgb3A6ICdsaW5lVG8nLCBkYXRhOiBbY3gsIGN5XSB9LCB7IG9wOiAnbGluZVRvJywgZGF0YTogW2N4ICsgcnggKiBNYXRoLmNvcyhzdHJ0KSwgY3kgKyByeSAqIE1hdGguc2luKHN0cnQpXSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB0eXBlOiAncGF0aCcsIG9wcyB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN2Z1BhdGgocGF0aCwgbykge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gbm9ybWFsaXplKGFic29sdXRpemUocGFyc2VQYXRoKHBhdGgpKSk7XG4gICAgY29uc3Qgb3BzID0gW107XG4gICAgbGV0IGZpcnN0ID0gWzAsIDBdO1xuICAgIGxldCBjdXJyZW50ID0gWzAsIDBdO1xuICAgIGZvciAoY29uc3QgeyBrZXksIGRhdGEgfSBvZiBzZWdtZW50cykge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnTSc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBybyA9IDEgKiAoby5tYXhSYW5kb21uZXNzT2Zmc2V0IHx8IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHB2ID0gby5wcmVzZXJ2ZVZlcnRpY2VzO1xuICAgICAgICAgICAgICAgIG9wcy5wdXNoKHsgb3A6ICdtb3ZlJywgZGF0YTogZGF0YS5tYXAoKGQpID0+IGQgKyAocHYgPyAwIDogX29mZnNldE9wdChybywgbykpKSB9KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gW2RhdGFbMF0sIGRhdGFbMV1dO1xuICAgICAgICAgICAgICAgIGZpcnN0ID0gW2RhdGFbMF0sIGRhdGFbMV1dO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goLi4uX2RvdWJsZUxpbmUoY3VycmVudFswXSwgY3VycmVudFsxXSwgZGF0YVswXSwgZGF0YVsxXSwgbykpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBbZGF0YVswXSwgZGF0YVsxXV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5MiwgeCwgeV0gPSBkYXRhO1xuICAgICAgICAgICAgICAgIG9wcy5wdXNoKC4uLl9iZXppZXJUbyh4MSwgeTEsIHgyLCB5MiwgeCwgeSwgY3VycmVudCwgbykpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBbeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICBvcHMucHVzaCguLi5fZG91YmxlTGluZShjdXJyZW50WzBdLCBjdXJyZW50WzFdLCBmaXJzdFswXSwgZmlyc3RbMV0sIG8pKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gW2ZpcnN0WzBdLCBmaXJzdFsxXV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZTogJ3BhdGgnLCBvcHMgfTtcbn1cbi8vIEZpbGxzXG5leHBvcnQgZnVuY3Rpb24gc29saWRGaWxsUG9seWdvbihwb2x5Z29uTGlzdCwgbykge1xuICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcG9pbnRzIG9mIHBvbHlnb25MaXN0KSB7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBvLm1heFJhbmRvbW5lc3NPZmZzZXQgfHwgMDtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgICAgICAgIG9wcy5wdXNoKHsgb3A6ICdtb3ZlJywgZGF0YTogW3BvaW50c1swXVswXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSwgcG9pbnRzWzBdWzFdICsgX29mZnNldE9wdChvZmZzZXQsIG8pXSB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wcy5wdXNoKHsgb3A6ICdsaW5lVG8nLCBkYXRhOiBbcG9pbnRzW2ldWzBdICsgX29mZnNldE9wdChvZmZzZXQsIG8pLCBwb2ludHNbaV1bMV0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyldIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB0eXBlOiAnZmlsbFBhdGgnLCBvcHMgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXR0ZXJuRmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgcmV0dXJuIGdldEZpbGxlcihvLCBoZWxwZXIpLmZpbGxQb2x5Z29ucyhwb2x5Z29uTGlzdCwgbyk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybkZpbGxBcmMoeCwgeSwgd2lkdGgsIGhlaWdodCwgc3RhcnQsIHN0b3AsIG8pIHtcbiAgICBjb25zdCBjeCA9IHg7XG4gICAgY29uc3QgY3kgPSB5O1xuICAgIGxldCByeCA9IE1hdGguYWJzKHdpZHRoIC8gMik7XG4gICAgbGV0IHJ5ID0gTWF0aC5hYnMoaGVpZ2h0IC8gMik7XG4gICAgcnggKz0gX29mZnNldE9wdChyeCAqIDAuMDEsIG8pO1xuICAgIHJ5ICs9IF9vZmZzZXRPcHQocnkgKiAwLjAxLCBvKTtcbiAgICBsZXQgc3RydCA9IHN0YXJ0O1xuICAgIGxldCBzdHAgPSBzdG9wO1xuICAgIHdoaWxlIChzdHJ0IDwgMCkge1xuICAgICAgICBzdHJ0ICs9IE1hdGguUEkgKiAyO1xuICAgICAgICBzdHAgKz0gTWF0aC5QSSAqIDI7XG4gICAgfVxuICAgIGlmICgoc3RwIC0gc3RydCkgPiAoTWF0aC5QSSAqIDIpKSB7XG4gICAgICAgIHN0cnQgPSAwO1xuICAgICAgICBzdHAgPSBNYXRoLlBJICogMjtcbiAgICB9XG4gICAgY29uc3QgaW5jcmVtZW50ID0gKHN0cCAtIHN0cnQpIC8gby5jdXJ2ZVN0ZXBDb3VudDtcbiAgICBjb25zdCBwb2ludHMgPSBbXTtcbiAgICBmb3IgKGxldCBhbmdsZSA9IHN0cnQ7IGFuZ2xlIDw9IHN0cDsgYW5nbGUgPSBhbmdsZSArIGluY3JlbWVudCkge1xuICAgICAgICBwb2ludHMucHVzaChbY3ggKyByeCAqIE1hdGguY29zKGFuZ2xlKSwgY3kgKyByeSAqIE1hdGguc2luKGFuZ2xlKV0pO1xuICAgIH1cbiAgICBwb2ludHMucHVzaChbY3ggKyByeCAqIE1hdGguY29zKHN0cCksIGN5ICsgcnkgKiBNYXRoLnNpbihzdHApXSk7XG4gICAgcG9pbnRzLnB1c2goW2N4LCBjeV0pO1xuICAgIHJldHVybiBwYXR0ZXJuRmlsbFBvbHlnb25zKFtwb2ludHNdLCBvKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByYW5kT2Zmc2V0KHgsIG8pIHtcbiAgICByZXR1cm4gX29mZnNldE9wdCh4LCBvKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByYW5kT2Zmc2V0V2l0aFJhbmdlKG1pbiwgbWF4LCBvKSB7XG4gICAgcmV0dXJuIF9vZmZzZXQobWluLCBtYXgsIG8pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRvdWJsZUxpbmVGaWxsT3BzKHgxLCB5MSwgeDIsIHkyLCBvKSB7XG4gICAgcmV0dXJuIF9kb3VibGVMaW5lKHgxLCB5MSwgeDIsIHkyLCBvLCB0cnVlKTtcbn1cbi8vIFByaXZhdGUgaGVscGVyc1xuZnVuY3Rpb24gY2xvbmVPcHRpb25zQWx0ZXJTZWVkKG9wcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIG9wcyk7XG4gICAgcmVzdWx0LnJhbmRvbWl6ZXIgPSB1bmRlZmluZWQ7XG4gICAgaWYgKG9wcy5zZWVkKSB7XG4gICAgICAgIHJlc3VsdC5zZWVkID0gb3BzLnNlZWQgKyAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcmFuZG9tKG9wcykge1xuICAgIGlmICghb3BzLnJhbmRvbWl6ZXIpIHtcbiAgICAgICAgb3BzLnJhbmRvbWl6ZXIgPSBuZXcgUmFuZG9tKG9wcy5zZWVkIHx8IDApO1xuICAgIH1cbiAgICByZXR1cm4gb3BzLnJhbmRvbWl6ZXIubmV4dCgpO1xufVxuZnVuY3Rpb24gX29mZnNldChtaW4sIG1heCwgb3BzLCByb3VnaG5lc3NHYWluID0gMSkge1xuICAgIHJldHVybiBvcHMucm91Z2huZXNzICogcm91Z2huZXNzR2FpbiAqICgocmFuZG9tKG9wcykgKiAobWF4IC0gbWluKSkgKyBtaW4pO1xufVxuZnVuY3Rpb24gX29mZnNldE9wdCh4LCBvcHMsIHJvdWdobmVzc0dhaW4gPSAxKSB7XG4gICAgcmV0dXJuIF9vZmZzZXQoLXgsIHgsIG9wcywgcm91Z2huZXNzR2Fpbik7XG59XG5mdW5jdGlvbiBfZG91YmxlTGluZSh4MSwgeTEsIHgyLCB5MiwgbywgZmlsbGluZyA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2luZ2xlU3Ryb2tlID0gZmlsbGluZyA/IG8uZGlzYWJsZU11bHRpU3Ryb2tlRmlsbCA6IG8uZGlzYWJsZU11bHRpU3Ryb2tlO1xuICAgIGNvbnN0IG8xID0gX2xpbmUoeDEsIHkxLCB4MiwgeTIsIG8sIHRydWUsIGZhbHNlKTtcbiAgICBpZiAoc2luZ2xlU3Ryb2tlKSB7XG4gICAgICAgIHJldHVybiBvMTtcbiAgICB9XG4gICAgY29uc3QgbzIgPSBfbGluZSh4MSwgeTEsIHgyLCB5MiwgbywgdHJ1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIG8xLmNvbmNhdChvMik7XG59XG5mdW5jdGlvbiBfbGluZSh4MSwgeTEsIHgyLCB5MiwgbywgbW92ZSwgb3ZlcmxheSkge1xuICAgIGNvbnN0IGxlbmd0aFNxID0gTWF0aC5wb3coKHgxIC0geDIpLCAyKSArIE1hdGgucG93KCh5MSAtIHkyKSwgMik7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5zcXJ0KGxlbmd0aFNxKTtcbiAgICBsZXQgcm91Z2huZXNzR2FpbiA9IDE7XG4gICAgaWYgKGxlbmd0aCA8IDIwMCkge1xuICAgICAgICByb3VnaG5lc3NHYWluID0gMTtcbiAgICB9XG4gICAgZWxzZSBpZiAobGVuZ3RoID4gNTAwKSB7XG4gICAgICAgIHJvdWdobmVzc0dhaW4gPSAwLjQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByb3VnaG5lc3NHYWluID0gKC0wLjAwMTY2NjgpICogbGVuZ3RoICsgMS4yMzMzMzQ7XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSBvLm1heFJhbmRvbW5lc3NPZmZzZXQgfHwgMDtcbiAgICBpZiAoKG9mZnNldCAqIG9mZnNldCAqIDEwMCkgPiBsZW5ndGhTcSkge1xuICAgICAgICBvZmZzZXQgPSBsZW5ndGggLyAxMDtcbiAgICB9XG4gICAgY29uc3QgaGFsZk9mZnNldCA9IG9mZnNldCAvIDI7XG4gICAgY29uc3QgZGl2ZXJnZVBvaW50ID0gMC4yICsgcmFuZG9tKG8pICogMC4yO1xuICAgIGxldCBtaWREaXNwWCA9IG8uYm93aW5nICogby5tYXhSYW5kb21uZXNzT2Zmc2V0ICogKHkyIC0geTEpIC8gMjAwO1xuICAgIGxldCBtaWREaXNwWSA9IG8uYm93aW5nICogby5tYXhSYW5kb21uZXNzT2Zmc2V0ICogKHgxIC0geDIpIC8gMjAwO1xuICAgIG1pZERpc3BYID0gX29mZnNldE9wdChtaWREaXNwWCwgbywgcm91Z2huZXNzR2Fpbik7XG4gICAgbWlkRGlzcFkgPSBfb2Zmc2V0T3B0KG1pZERpc3BZLCBvLCByb3VnaG5lc3NHYWluKTtcbiAgICBjb25zdCBvcHMgPSBbXTtcbiAgICBjb25zdCByYW5kb21IYWxmID0gKCkgPT4gX29mZnNldE9wdChoYWxmT2Zmc2V0LCBvLCByb3VnaG5lc3NHYWluKTtcbiAgICBjb25zdCByYW5kb21GdWxsID0gKCkgPT4gX29mZnNldE9wdChvZmZzZXQsIG8sIHJvdWdobmVzc0dhaW4pO1xuICAgIGNvbnN0IHByZXNlcnZlVmVydGljZXMgPSBvLnByZXNlcnZlVmVydGljZXM7XG4gICAgaWYgKG1vdmUpIHtcbiAgICAgICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcDogJ21vdmUnLCBkYXRhOiBbXG4gICAgICAgICAgICAgICAgICAgIHgxICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogcmFuZG9tSGFsZigpKSxcbiAgICAgICAgICAgICAgICAgICAgeTEgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiByYW5kb21IYWxmKCkpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcDogJ21vdmUnLCBkYXRhOiBbXG4gICAgICAgICAgICAgICAgICAgIHgxICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogX29mZnNldE9wdChvZmZzZXQsIG8sIHJvdWdobmVzc0dhaW4pKSxcbiAgICAgICAgICAgICAgICAgICAgeTEgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiBfb2Zmc2V0T3B0KG9mZnNldCwgbywgcm91Z2huZXNzR2FpbikpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICBvcHMucHVzaCh7XG4gICAgICAgICAgICBvcDogJ2JjdXJ2ZVRvJyxcbiAgICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgICAgICBtaWREaXNwWCArIHgxICsgKHgyIC0geDEpICogZGl2ZXJnZVBvaW50ICsgcmFuZG9tSGFsZigpLFxuICAgICAgICAgICAgICAgIG1pZERpc3BZICsgeTEgKyAoeTIgLSB5MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21IYWxmKCksXG4gICAgICAgICAgICAgICAgbWlkRGlzcFggKyB4MSArIDIgKiAoeDIgLSB4MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21IYWxmKCksXG4gICAgICAgICAgICAgICAgbWlkRGlzcFkgKyB5MSArIDIgKiAoeTIgLSB5MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21IYWxmKCksXG4gICAgICAgICAgICAgICAgeDIgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiByYW5kb21IYWxmKCkpLFxuICAgICAgICAgICAgICAgIHkyICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogcmFuZG9tSGFsZigpKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb3BzLnB1c2goe1xuICAgICAgICAgICAgb3A6ICdiY3VydmVUbycsXG4gICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAgbWlkRGlzcFggKyB4MSArICh4MiAtIHgxKSAqIGRpdmVyZ2VQb2ludCArIHJhbmRvbUZ1bGwoKSxcbiAgICAgICAgICAgICAgICBtaWREaXNwWSArIHkxICsgKHkyIC0geTEpICogZGl2ZXJnZVBvaW50ICsgcmFuZG9tRnVsbCgpLFxuICAgICAgICAgICAgICAgIG1pZERpc3BYICsgeDEgKyAyICogKHgyIC0geDEpICogZGl2ZXJnZVBvaW50ICsgcmFuZG9tRnVsbCgpLFxuICAgICAgICAgICAgICAgIG1pZERpc3BZICsgeTEgKyAyICogKHkyIC0geTEpICogZGl2ZXJnZVBvaW50ICsgcmFuZG9tRnVsbCgpLFxuICAgICAgICAgICAgICAgIHgyICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogcmFuZG9tRnVsbCgpKSxcbiAgICAgICAgICAgICAgICB5MiArIChwcmVzZXJ2ZVZlcnRpY2VzID8gMCA6IHJhbmRvbUZ1bGwoKSksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wcztcbn1cbmZ1bmN0aW9uIF9jdXJ2ZVdpdGhPZmZzZXQocG9pbnRzLCBvZmZzZXQsIG8pIHtcbiAgICBjb25zdCBwcyA9IFtdO1xuICAgIHBzLnB1c2goW1xuICAgICAgICBwb2ludHNbMF1bMF0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksXG4gICAgICAgIHBvaW50c1swXVsxXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSxcbiAgICBdKTtcbiAgICBwcy5wdXNoKFtcbiAgICAgICAgcG9pbnRzWzBdWzBdICsgX29mZnNldE9wdChvZmZzZXQsIG8pLFxuICAgICAgICBwb2ludHNbMF1bMV0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksXG4gICAgXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHMucHVzaChbXG4gICAgICAgICAgICBwb2ludHNbaV1bMF0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksXG4gICAgICAgICAgICBwb2ludHNbaV1bMV0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksXG4gICAgICAgIF0pO1xuICAgICAgICBpZiAoaSA9PT0gKHBvaW50cy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgcHMucHVzaChbXG4gICAgICAgICAgICAgICAgcG9pbnRzW2ldWzBdICsgX29mZnNldE9wdChvZmZzZXQsIG8pLFxuICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfY3VydmUocHMsIG51bGwsIG8pO1xufVxuZnVuY3Rpb24gX2N1cnZlKHBvaW50cywgY2xvc2VQb2ludCwgbykge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgY29uc3Qgb3BzID0gW107XG4gICAgaWYgKGxlbiA+IDMpIHtcbiAgICAgICAgY29uc3QgYiA9IFtdO1xuICAgICAgICBjb25zdCBzID0gMSAtIG8uY3VydmVUaWdodG5lc3M7XG4gICAgICAgIG9wcy5wdXNoKHsgb3A6ICdtb3ZlJywgZGF0YTogW3BvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdXSB9KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IChpICsgMikgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkVmVydEFycmF5ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgYlswXSA9IFtjYWNoZWRWZXJ0QXJyYXlbMF0sIGNhY2hlZFZlcnRBcnJheVsxXV07XG4gICAgICAgICAgICBiWzFdID0gW2NhY2hlZFZlcnRBcnJheVswXSArIChzICogcG9pbnRzW2kgKyAxXVswXSAtIHMgKiBwb2ludHNbaSAtIDFdWzBdKSAvIDYsIGNhY2hlZFZlcnRBcnJheVsxXSArIChzICogcG9pbnRzW2kgKyAxXVsxXSAtIHMgKiBwb2ludHNbaSAtIDFdWzFdKSAvIDZdO1xuICAgICAgICAgICAgYlsyXSA9IFtwb2ludHNbaSArIDFdWzBdICsgKHMgKiBwb2ludHNbaV1bMF0gLSBzICogcG9pbnRzW2kgKyAyXVswXSkgLyA2LCBwb2ludHNbaSArIDFdWzFdICsgKHMgKiBwb2ludHNbaV1bMV0gLSBzICogcG9pbnRzW2kgKyAyXVsxXSkgLyA2XTtcbiAgICAgICAgICAgIGJbM10gPSBbcG9pbnRzW2kgKyAxXVswXSwgcG9pbnRzW2kgKyAxXVsxXV07XG4gICAgICAgICAgICBvcHMucHVzaCh7IG9wOiAnYmN1cnZlVG8nLCBkYXRhOiBbYlsxXVswXSwgYlsxXVsxXSwgYlsyXVswXSwgYlsyXVsxXSwgYlszXVswXSwgYlszXVsxXV0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsb3NlUG9pbnQgJiYgY2xvc2VQb2ludC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvID0gby5tYXhSYW5kb21uZXNzT2Zmc2V0O1xuICAgICAgICAgICAgb3BzLnB1c2goeyBvcDogJ2xpbmVUbycsIGRhdGE6IFtjbG9zZVBvaW50WzBdICsgX29mZnNldE9wdChybywgbyksIGNsb3NlUG9pbnRbMV0gKyBfb2Zmc2V0T3B0KHJvLCBvKV0gfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAobGVuID09PSAzKSB7XG4gICAgICAgIG9wcy5wdXNoKHsgb3A6ICdtb3ZlJywgZGF0YTogW3BvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdXSB9KTtcbiAgICAgICAgb3BzLnB1c2goe1xuICAgICAgICAgICAgb3A6ICdiY3VydmVUbycsXG4gICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAgcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV0sXG4gICAgICAgICAgICAgICAgcG9pbnRzWzJdWzBdLCBwb2ludHNbMl1bMV0sXG4gICAgICAgICAgICAgICAgcG9pbnRzWzJdWzBdLCBwb2ludHNbMl1bMV0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICAgIG9wcy5wdXNoKC4uLl9kb3VibGVMaW5lKHBvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdLCBwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXSwgbykpO1xuICAgIH1cbiAgICByZXR1cm4gb3BzO1xufVxuZnVuY3Rpb24gX2NvbXB1dGVFbGxpcHNlUG9pbnRzKGluY3JlbWVudCwgY3gsIGN5LCByeCwgcnksIG9mZnNldCwgb3ZlcmxhcCwgbykge1xuICAgIGNvbnN0IGNvcmVQb2ludHMgPSBbXTtcbiAgICBjb25zdCBhbGxQb2ludHMgPSBbXTtcbiAgICBjb25zdCByYWRPZmZzZXQgPSBfb2Zmc2V0T3B0KDAuNSwgbykgLSAoTWF0aC5QSSAvIDIpO1xuICAgIGNvbnN0IGNvcmVPbmx5ID0gby5yb3VnaG5lc3MgPT09IDA7XG4gICAgaWYgKCFjb3JlT25seSkge1xuICAgICAgICBhbGxQb2ludHMucHVzaChbXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIDAuOSAqIHJ4ICogTWF0aC5jb3MocmFkT2Zmc2V0IC0gaW5jcmVtZW50KSxcbiAgICAgICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN5ICsgMC45ICogcnkgKiBNYXRoLnNpbihyYWRPZmZzZXQgLSBpbmNyZW1lbnQpLFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgY29uc3QgZW5kQW5nbGUgPSBNYXRoLlBJICogMiArIChjb3JlT25seSA/IDAgOiAocmFkT2Zmc2V0IC0gMC4wMSkpO1xuICAgIGZvciAobGV0IGFuZ2xlID0gcmFkT2Zmc2V0OyBhbmdsZSA8IGVuZEFuZ2xlOyBhbmdsZSA9IGFuZ2xlICsgaW5jcmVtZW50KSB7XG4gICAgICAgIGNvbnN0IHAgPSBbXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIHJ4ICogTWF0aC5jb3MoYW5nbGUpLFxuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3kgKyByeSAqIE1hdGguc2luKGFuZ2xlKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29yZVBvaW50cy5wdXNoKHApO1xuICAgICAgICBhbGxQb2ludHMucHVzaChwKTtcbiAgICB9XG4gICAgaWYgKCFjb3JlT25seSkge1xuICAgICAgICBhbGxQb2ludHMucHVzaChbXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIHJ4ICogTWF0aC5jb3MocmFkT2Zmc2V0ICsgTWF0aC5QSSAqIDIgKyBvdmVybGFwICogMC41KSxcbiAgICAgICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN5ICsgcnkgKiBNYXRoLnNpbihyYWRPZmZzZXQgKyBNYXRoLlBJICogMiArIG92ZXJsYXAgKiAwLjUpLFxuICAgICAgICBdKTtcbiAgICAgICAgYWxsUG9pbnRzLnB1c2goW1xuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3ggKyAwLjk4ICogcnggKiBNYXRoLmNvcyhyYWRPZmZzZXQgKyBvdmVybGFwKSxcbiAgICAgICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN5ICsgMC45OCAqIHJ5ICogTWF0aC5zaW4ocmFkT2Zmc2V0ICsgb3ZlcmxhcCksXG4gICAgICAgIF0pO1xuICAgICAgICBhbGxQb2ludHMucHVzaChbXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIDAuOSAqIHJ4ICogTWF0aC5jb3MocmFkT2Zmc2V0ICsgb3ZlcmxhcCAqIDAuNSksXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeSArIDAuOSAqIHJ5ICogTWF0aC5zaW4ocmFkT2Zmc2V0ICsgb3ZlcmxhcCAqIDAuNSksXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gW2FsbFBvaW50cywgY29yZVBvaW50c107XG59XG5mdW5jdGlvbiBfYXJjKGluY3JlbWVudCwgY3gsIGN5LCByeCwgcnksIHN0cnQsIHN0cCwgb2Zmc2V0LCBvKSB7XG4gICAgY29uc3QgcmFkT2Zmc2V0ID0gc3RydCArIF9vZmZzZXRPcHQoMC4xLCBvKTtcbiAgICBjb25zdCBwb2ludHMgPSBbXTtcbiAgICBwb2ludHMucHVzaChbXG4gICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN4ICsgMC45ICogcnggKiBNYXRoLmNvcyhyYWRPZmZzZXQgLSBpbmNyZW1lbnQpLFxuICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeSArIDAuOSAqIHJ5ICogTWF0aC5zaW4ocmFkT2Zmc2V0IC0gaW5jcmVtZW50KSxcbiAgICBdKTtcbiAgICBmb3IgKGxldCBhbmdsZSA9IHJhZE9mZnNldDsgYW5nbGUgPD0gc3RwOyBhbmdsZSA9IGFuZ2xlICsgaW5jcmVtZW50KSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtcbiAgICAgICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN4ICsgcnggKiBNYXRoLmNvcyhhbmdsZSksXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeSArIHJ5ICogTWF0aC5zaW4oYW5nbGUpLFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcG9pbnRzLnB1c2goW1xuICAgICAgICBjeCArIHJ4ICogTWF0aC5jb3Moc3RwKSxcbiAgICAgICAgY3kgKyByeSAqIE1hdGguc2luKHN0cCksXG4gICAgXSk7XG4gICAgcG9pbnRzLnB1c2goW1xuICAgICAgICBjeCArIHJ4ICogTWF0aC5jb3Moc3RwKSxcbiAgICAgICAgY3kgKyByeSAqIE1hdGguc2luKHN0cCksXG4gICAgXSk7XG4gICAgcmV0dXJuIF9jdXJ2ZShwb2ludHMsIG51bGwsIG8pO1xufVxuZnVuY3Rpb24gX2JlemllclRvKHgxLCB5MSwgeDIsIHkyLCB4LCB5LCBjdXJyZW50LCBvKSB7XG4gICAgY29uc3Qgb3BzID0gW107XG4gICAgY29uc3Qgcm9zID0gW28ubWF4UmFuZG9tbmVzc09mZnNldCB8fCAxLCAoby5tYXhSYW5kb21uZXNzT2Zmc2V0IHx8IDEpICsgMC4zXTtcbiAgICBsZXQgZiA9IFswLCAwXTtcbiAgICBjb25zdCBpdGVyYXRpb25zID0gby5kaXNhYmxlTXVsdGlTdHJva2UgPyAxIDogMjtcbiAgICBjb25zdCBwcmVzZXJ2ZVZlcnRpY2VzID0gby5wcmVzZXJ2ZVZlcnRpY2VzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBvcHMucHVzaCh7IG9wOiAnbW92ZScsIGRhdGE6IFtjdXJyZW50WzBdLCBjdXJyZW50WzFdXSB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKHsgb3A6ICdtb3ZlJywgZGF0YTogW2N1cnJlbnRbMF0gKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiBfb2Zmc2V0T3B0KHJvc1swXSwgbykpLCBjdXJyZW50WzFdICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogX29mZnNldE9wdChyb3NbMF0sIG8pKV0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgZiA9IHByZXNlcnZlVmVydGljZXMgPyBbeCwgeV0gOiBbeCArIF9vZmZzZXRPcHQocm9zW2ldLCBvKSwgeSArIF9vZmZzZXRPcHQocm9zW2ldLCBvKV07XG4gICAgICAgIG9wcy5wdXNoKHtcbiAgICAgICAgICAgIG9wOiAnYmN1cnZlVG8nLFxuICAgICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAgICAgIHgxICsgX29mZnNldE9wdChyb3NbaV0sIG8pLCB5MSArIF9vZmZzZXRPcHQocm9zW2ldLCBvKSxcbiAgICAgICAgICAgICAgICB4MiArIF9vZmZzZXRPcHQocm9zW2ldLCBvKSwgeTIgKyBfb2Zmc2V0T3B0KHJvc1tpXSwgbyksXG4gICAgICAgICAgICAgICAgZlswXSwgZlsxXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3BzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/renderer.js\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../../node_modules/roughjs/bin/renderer.js?");
|
|
578
|
+
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"line\\\": () => (/* binding */ line),\\n/* harmony export */ \\\"linearPath\\\": () => (/* binding */ linearPath),\\n/* harmony export */ \\\"polygon\\\": () => (/* binding */ polygon),\\n/* harmony export */ \\\"rectangle\\\": () => (/* binding */ rectangle),\\n/* harmony export */ \\\"curve\\\": () => (/* binding */ curve),\\n/* harmony export */ \\\"ellipse\\\": () => (/* binding */ ellipse),\\n/* harmony export */ \\\"generateEllipseParams\\\": () => (/* binding */ generateEllipseParams),\\n/* harmony export */ \\\"ellipseWithParams\\\": () => (/* binding */ ellipseWithParams),\\n/* harmony export */ \\\"arc\\\": () => (/* binding */ arc),\\n/* harmony export */ \\\"svgPath\\\": () => (/* binding */ svgPath),\\n/* harmony export */ \\\"solidFillPolygon\\\": () => (/* binding */ solidFillPolygon),\\n/* harmony export */ \\\"patternFillPolygons\\\": () => (/* binding */ patternFillPolygons),\\n/* harmony export */ \\\"patternFillArc\\\": () => (/* binding */ patternFillArc),\\n/* harmony export */ \\\"randOffset\\\": () => (/* binding */ randOffset),\\n/* harmony export */ \\\"randOffsetWithRange\\\": () => (/* binding */ randOffsetWithRange),\\n/* harmony export */ \\\"doubleLineFillOps\\\": () => (/* binding */ doubleLineFillOps)\\n/* harmony export */ });\\n/* harmony import */ var _fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fillers/filler.js */ \\\"../../../node_modules/roughjs/bin/fillers/filler.js\\\");\\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \\\"../../../node_modules/roughjs/bin/math.js\\\");\\n/* harmony import */ var path_data_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path-data-parser */ \\\"../../../node_modules/path-data-parser/lib/index.js\\\");\\n\\n\\n\\nconst helper = {\\n randOffset,\\n randOffsetWithRange,\\n ellipse,\\n doubleLineOps: doubleLineFillOps,\\n};\\nfunction line(x1, y1, x2, y2, o) {\\n return { type: 'path', ops: _doubleLine(x1, y1, x2, y2, o) };\\n}\\nfunction linearPath(points, close, o) {\\n const len = (points || []).length;\\n if (len > 2) {\\n const ops = [];\\n for (let i = 0; i < (len - 1); i++) {\\n ops.push(..._doubleLine(points[i][0], points[i][1], points[i + 1][0], points[i + 1][1], o));\\n }\\n if (close) {\\n ops.push(..._doubleLine(points[len - 1][0], points[len - 1][1], points[0][0], points[0][1], o));\\n }\\n return { type: 'path', ops };\\n }\\n else if (len === 2) {\\n return line(points[0][0], points[0][1], points[1][0], points[1][1], o);\\n }\\n return { type: 'path', ops: [] };\\n}\\nfunction polygon(points, o) {\\n return linearPath(points, true, o);\\n}\\nfunction rectangle(x, y, width, height, o) {\\n const points = [\\n [x, y],\\n [x + width, y],\\n [x + width, y + height],\\n [x, y + height],\\n ];\\n return polygon(points, o);\\n}\\nfunction curve(points, o) {\\n let o1 = _curveWithOffset(points, 1 * (1 + o.roughness * 0.2), o);\\n if (!o.disableMultiStroke) {\\n const o2 = _curveWithOffset(points, 1.5 * (1 + o.roughness * 0.22), cloneOptionsAlterSeed(o));\\n o1 = o1.concat(o2);\\n }\\n return { type: 'path', ops: o1 };\\n}\\nfunction ellipse(x, y, width, height, o) {\\n const params = generateEllipseParams(width, height, o);\\n return ellipseWithParams(x, y, o, params).opset;\\n}\\nfunction generateEllipseParams(width, height, o) {\\n const psq = Math.sqrt(Math.PI * 2 * Math.sqrt((Math.pow(width / 2, 2) + Math.pow(height / 2, 2)) / 2));\\n const stepCount = Math.ceil(Math.max(o.curveStepCount, (o.curveStepCount / Math.sqrt(200)) * psq));\\n const increment = (Math.PI * 2) / stepCount;\\n let rx = Math.abs(width / 2);\\n let ry = Math.abs(height / 2);\\n const curveFitRandomness = 1 - o.curveFitting;\\n rx += _offsetOpt(rx * curveFitRandomness, o);\\n ry += _offsetOpt(ry * curveFitRandomness, o);\\n return { increment, rx, ry };\\n}\\nfunction ellipseWithParams(x, y, o, ellipseParams) {\\n const [ap1, cp1] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1, ellipseParams.increment * _offset(0.1, _offset(0.4, 1, o), o), o);\\n let o1 = _curve(ap1, null, o);\\n if ((!o.disableMultiStroke) && (o.roughness !== 0)) {\\n const [ap2] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1.5, 0, o);\\n const o2 = _curve(ap2, null, o);\\n o1 = o1.concat(o2);\\n }\\n return {\\n estimatedPoints: cp1,\\n opset: { type: 'path', ops: o1 },\\n };\\n}\\nfunction arc(x, y, width, height, start, stop, closed, roughClosure, o) {\\n const cx = x;\\n const cy = y;\\n let rx = Math.abs(width / 2);\\n let ry = Math.abs(height / 2);\\n rx += _offsetOpt(rx * 0.01, o);\\n ry += _offsetOpt(ry * 0.01, o);\\n let strt = start;\\n let stp = stop;\\n while (strt < 0) {\\n strt += Math.PI * 2;\\n stp += Math.PI * 2;\\n }\\n if ((stp - strt) > (Math.PI * 2)) {\\n strt = 0;\\n stp = Math.PI * 2;\\n }\\n const ellipseInc = (Math.PI * 2) / o.curveStepCount;\\n const arcInc = Math.min(ellipseInc / 2, (stp - strt) / 2);\\n const ops = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1, o);\\n if (!o.disableMultiStroke) {\\n const o2 = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1.5, o);\\n ops.push(...o2);\\n }\\n if (closed) {\\n if (roughClosure) {\\n ops.push(..._doubleLine(cx, cy, cx + rx * Math.cos(strt), cy + ry * Math.sin(strt), o), ..._doubleLine(cx, cy, cx + rx * Math.cos(stp), cy + ry * Math.sin(stp), o));\\n }\\n else {\\n ops.push({ op: 'lineTo', data: [cx, cy] }, { op: 'lineTo', data: [cx + rx * Math.cos(strt), cy + ry * Math.sin(strt)] });\\n }\\n }\\n return { type: 'path', ops };\\n}\\nfunction svgPath(path, o) {\\n const segments = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.normalize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.absolutize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.parsePath)(path)));\\n const ops = [];\\n let first = [0, 0];\\n let current = [0, 0];\\n for (const { key, data } of segments) {\\n switch (key) {\\n case 'M': {\\n const ro = 1 * (o.maxRandomnessOffset || 0);\\n const pv = o.preserveVertices;\\n ops.push({ op: 'move', data: data.map((d) => d + (pv ? 0 : _offsetOpt(ro, o))) });\\n current = [data[0], data[1]];\\n first = [data[0], data[1]];\\n break;\\n }\\n case 'L':\\n ops.push(..._doubleLine(current[0], current[1], data[0], data[1], o));\\n current = [data[0], data[1]];\\n break;\\n case 'C': {\\n const [x1, y1, x2, y2, x, y] = data;\\n ops.push(..._bezierTo(x1, y1, x2, y2, x, y, current, o));\\n current = [x, y];\\n break;\\n }\\n case 'Z':\\n ops.push(..._doubleLine(current[0], current[1], first[0], first[1], o));\\n current = [first[0], first[1]];\\n break;\\n }\\n }\\n return { type: 'path', ops };\\n}\\n// Fills\\nfunction solidFillPolygon(polygonList, o) {\\n const ops = [];\\n for (const points of polygonList) {\\n if (points.length) {\\n const offset = o.maxRandomnessOffset || 0;\\n const len = points.length;\\n if (len > 2) {\\n ops.push({ op: 'move', data: [points[0][0] + _offsetOpt(offset, o), points[0][1] + _offsetOpt(offset, o)] });\\n for (let i = 1; i < len; i++) {\\n ops.push({ op: 'lineTo', data: [points[i][0] + _offsetOpt(offset, o), points[i][1] + _offsetOpt(offset, o)] });\\n }\\n }\\n }\\n }\\n return { type: 'fillPath', ops };\\n}\\nfunction patternFillPolygons(polygonList, o) {\\n return (0,_fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__.getFiller)(o, helper).fillPolygons(polygonList, o);\\n}\\nfunction patternFillArc(x, y, width, height, start, stop, o) {\\n const cx = x;\\n const cy = y;\\n let rx = Math.abs(width / 2);\\n let ry = Math.abs(height / 2);\\n rx += _offsetOpt(rx * 0.01, o);\\n ry += _offsetOpt(ry * 0.01, o);\\n let strt = start;\\n let stp = stop;\\n while (strt < 0) {\\n strt += Math.PI * 2;\\n stp += Math.PI * 2;\\n }\\n if ((stp - strt) > (Math.PI * 2)) {\\n strt = 0;\\n stp = Math.PI * 2;\\n }\\n const increment = (stp - strt) / o.curveStepCount;\\n const points = [];\\n for (let angle = strt; angle <= stp; angle = angle + increment) {\\n points.push([cx + rx * Math.cos(angle), cy + ry * Math.sin(angle)]);\\n }\\n points.push([cx + rx * Math.cos(stp), cy + ry * Math.sin(stp)]);\\n points.push([cx, cy]);\\n return patternFillPolygons([points], o);\\n}\\nfunction randOffset(x, o) {\\n return _offsetOpt(x, o);\\n}\\nfunction randOffsetWithRange(min, max, o) {\\n return _offset(min, max, o);\\n}\\nfunction doubleLineFillOps(x1, y1, x2, y2, o) {\\n return _doubleLine(x1, y1, x2, y2, o, true);\\n}\\n// Private helpers\\nfunction cloneOptionsAlterSeed(ops) {\\n const result = Object.assign({}, ops);\\n result.randomizer = undefined;\\n if (ops.seed) {\\n result.seed = ops.seed + 1;\\n }\\n return result;\\n}\\nfunction random(ops) {\\n if (!ops.randomizer) {\\n ops.randomizer = new _math_js__WEBPACK_IMPORTED_MODULE_1__.Random(ops.seed || 0);\\n }\\n return ops.randomizer.next();\\n}\\nfunction _offset(min, max, ops, roughnessGain = 1) {\\n return ops.roughness * roughnessGain * ((random(ops) * (max - min)) + min);\\n}\\nfunction _offsetOpt(x, ops, roughnessGain = 1) {\\n return _offset(-x, x, ops, roughnessGain);\\n}\\nfunction _doubleLine(x1, y1, x2, y2, o, filling = false) {\\n const singleStroke = filling ? o.disableMultiStrokeFill : o.disableMultiStroke;\\n const o1 = _line(x1, y1, x2, y2, o, true, false);\\n if (singleStroke) {\\n return o1;\\n }\\n const o2 = _line(x1, y1, x2, y2, o, true, true);\\n return o1.concat(o2);\\n}\\nfunction _line(x1, y1, x2, y2, o, move, overlay) {\\n const lengthSq = Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2);\\n const length = Math.sqrt(lengthSq);\\n let roughnessGain = 1;\\n if (length < 200) {\\n roughnessGain = 1;\\n }\\n else if (length > 500) {\\n roughnessGain = 0.4;\\n }\\n else {\\n roughnessGain = (-0.0016668) * length + 1.233334;\\n }\\n let offset = o.maxRandomnessOffset || 0;\\n if ((offset * offset * 100) > lengthSq) {\\n offset = length / 10;\\n }\\n const halfOffset = offset / 2;\\n const divergePoint = 0.2 + random(o) * 0.2;\\n let midDispX = o.bowing * o.maxRandomnessOffset * (y2 - y1) / 200;\\n let midDispY = o.bowing * o.maxRandomnessOffset * (x1 - x2) / 200;\\n midDispX = _offsetOpt(midDispX, o, roughnessGain);\\n midDispY = _offsetOpt(midDispY, o, roughnessGain);\\n const ops = [];\\n const randomHalf = () => _offsetOpt(halfOffset, o, roughnessGain);\\n const randomFull = () => _offsetOpt(offset, o, roughnessGain);\\n const preserveVertices = o.preserveVertices;\\n if (move) {\\n if (overlay) {\\n ops.push({\\n op: 'move', data: [\\n x1 + (preserveVertices ? 0 : randomHalf()),\\n y1 + (preserveVertices ? 0 : randomHalf()),\\n ],\\n });\\n }\\n else {\\n ops.push({\\n op: 'move', data: [\\n x1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),\\n y1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),\\n ],\\n });\\n }\\n }\\n if (overlay) {\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n midDispX + x1 + (x2 - x1) * divergePoint + randomHalf(),\\n midDispY + y1 + (y2 - y1) * divergePoint + randomHalf(),\\n midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomHalf(),\\n midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomHalf(),\\n x2 + (preserveVertices ? 0 : randomHalf()),\\n y2 + (preserveVertices ? 0 : randomHalf()),\\n ],\\n });\\n }\\n else {\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n midDispX + x1 + (x2 - x1) * divergePoint + randomFull(),\\n midDispY + y1 + (y2 - y1) * divergePoint + randomFull(),\\n midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomFull(),\\n midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomFull(),\\n x2 + (preserveVertices ? 0 : randomFull()),\\n y2 + (preserveVertices ? 0 : randomFull()),\\n ],\\n });\\n }\\n return ops;\\n}\\nfunction _curveWithOffset(points, offset, o) {\\n const ps = [];\\n ps.push([\\n points[0][0] + _offsetOpt(offset, o),\\n points[0][1] + _offsetOpt(offset, o),\\n ]);\\n ps.push([\\n points[0][0] + _offsetOpt(offset, o),\\n points[0][1] + _offsetOpt(offset, o),\\n ]);\\n for (let i = 1; i < points.length; i++) {\\n ps.push([\\n points[i][0] + _offsetOpt(offset, o),\\n points[i][1] + _offsetOpt(offset, o),\\n ]);\\n if (i === (points.length - 1)) {\\n ps.push([\\n points[i][0] + _offsetOpt(offset, o),\\n points[i][1] + _offsetOpt(offset, o),\\n ]);\\n }\\n }\\n return _curve(ps, null, o);\\n}\\nfunction _curve(points, closePoint, o) {\\n const len = points.length;\\n const ops = [];\\n if (len > 3) {\\n const b = [];\\n const s = 1 - o.curveTightness;\\n ops.push({ op: 'move', data: [points[1][0], points[1][1]] });\\n for (let i = 1; (i + 2) < len; i++) {\\n const cachedVertArray = points[i];\\n b[0] = [cachedVertArray[0], cachedVertArray[1]];\\n b[1] = [cachedVertArray[0] + (s * points[i + 1][0] - s * points[i - 1][0]) / 6, cachedVertArray[1] + (s * points[i + 1][1] - s * points[i - 1][1]) / 6];\\n b[2] = [points[i + 1][0] + (s * points[i][0] - s * points[i + 2][0]) / 6, points[i + 1][1] + (s * points[i][1] - s * points[i + 2][1]) / 6];\\n b[3] = [points[i + 1][0], points[i + 1][1]];\\n ops.push({ op: 'bcurveTo', data: [b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1]] });\\n }\\n if (closePoint && closePoint.length === 2) {\\n const ro = o.maxRandomnessOffset;\\n ops.push({ op: 'lineTo', data: [closePoint[0] + _offsetOpt(ro, o), closePoint[1] + _offsetOpt(ro, o)] });\\n }\\n }\\n else if (len === 3) {\\n ops.push({ op: 'move', data: [points[1][0], points[1][1]] });\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n points[1][0], points[1][1],\\n points[2][0], points[2][1],\\n points[2][0], points[2][1],\\n ],\\n });\\n }\\n else if (len === 2) {\\n ops.push(..._doubleLine(points[0][0], points[0][1], points[1][0], points[1][1], o));\\n }\\n return ops;\\n}\\nfunction _computeEllipsePoints(increment, cx, cy, rx, ry, offset, overlap, o) {\\n const coreOnly = o.roughness === 0;\\n const corePoints = [];\\n const allPoints = [];\\n if (coreOnly) {\\n increment = increment / 4;\\n allPoints.push([\\n cx + rx * Math.cos(-increment),\\n cy + ry * Math.sin(-increment),\\n ]);\\n for (let angle = 0; angle <= Math.PI * 2; angle = angle + increment) {\\n const p = [\\n cx + rx * Math.cos(angle),\\n cy + ry * Math.sin(angle),\\n ];\\n corePoints.push(p);\\n allPoints.push(p);\\n }\\n allPoints.push([\\n cx + rx * Math.cos(0),\\n cy + ry * Math.sin(0),\\n ]);\\n allPoints.push([\\n cx + rx * Math.cos(increment),\\n cy + ry * Math.sin(increment),\\n ]);\\n }\\n else {\\n const radOffset = _offsetOpt(0.5, o) - (Math.PI / 2);\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),\\n _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),\\n ]);\\n const endAngle = Math.PI * 2 + radOffset - 0.01;\\n for (let angle = radOffset; angle < endAngle; angle = angle + increment) {\\n const p = [\\n _offsetOpt(offset, o) + cx + rx * Math.cos(angle),\\n _offsetOpt(offset, o) + cy + ry * Math.sin(angle),\\n ];\\n corePoints.push(p);\\n allPoints.push(p);\\n }\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + rx * Math.cos(radOffset + Math.PI * 2 + overlap * 0.5),\\n _offsetOpt(offset, o) + cy + ry * Math.sin(radOffset + Math.PI * 2 + overlap * 0.5),\\n ]);\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + 0.98 * rx * Math.cos(radOffset + overlap),\\n _offsetOpt(offset, o) + cy + 0.98 * ry * Math.sin(radOffset + overlap),\\n ]);\\n allPoints.push([\\n _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset + overlap * 0.5),\\n _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset + overlap * 0.5),\\n ]);\\n }\\n return [allPoints, corePoints];\\n}\\nfunction _arc(increment, cx, cy, rx, ry, strt, stp, offset, o) {\\n const radOffset = strt + _offsetOpt(0.1, o);\\n const points = [];\\n points.push([\\n _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),\\n _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),\\n ]);\\n for (let angle = radOffset; angle <= stp; angle = angle + increment) {\\n points.push([\\n _offsetOpt(offset, o) + cx + rx * Math.cos(angle),\\n _offsetOpt(offset, o) + cy + ry * Math.sin(angle),\\n ]);\\n }\\n points.push([\\n cx + rx * Math.cos(stp),\\n cy + ry * Math.sin(stp),\\n ]);\\n points.push([\\n cx + rx * Math.cos(stp),\\n cy + ry * Math.sin(stp),\\n ]);\\n return _curve(points, null, o);\\n}\\nfunction _bezierTo(x1, y1, x2, y2, x, y, current, o) {\\n const ops = [];\\n const ros = [o.maxRandomnessOffset || 1, (o.maxRandomnessOffset || 1) + 0.3];\\n let f = [0, 0];\\n const iterations = o.disableMultiStroke ? 1 : 2;\\n const preserveVertices = o.preserveVertices;\\n for (let i = 0; i < iterations; i++) {\\n if (i === 0) {\\n ops.push({ op: 'move', data: [current[0], current[1]] });\\n }\\n else {\\n ops.push({ op: 'move', data: [current[0] + (preserveVertices ? 0 : _offsetOpt(ros[0], o)), current[1] + (preserveVertices ? 0 : _offsetOpt(ros[0], o))] });\\n }\\n f = preserveVertices ? [x, y] : [x + _offsetOpt(ros[i], o), y + _offsetOpt(ros[i], o)];\\n ops.push({\\n op: 'bcurveTo',\\n data: [\\n x1 + _offsetOpt(ros[i], o), y1 + _offsetOpt(ros[i], o),\\n x2 + _offsetOpt(ros[i], o), y2 + _offsetOpt(ros[i], o),\\n f[0], f[1],\\n ],\\n });\\n }\\n return ops;\\n}\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL3JlbmRlcmVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDYjtBQUNpQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDhCQUE4QixJQUFJLDBFQUEwRTtBQUNuSTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUCxxQkFBcUIsMkRBQVMsQ0FBQyw0REFBVSxDQUFDLDJEQUFTO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFFQUFxRTtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixnQkFBZ0I7QUFDcEM7QUFDQSx1QkFBdUIsNENBQTRDO0FBQ25FO0FBQ0E7QUFDQSx1QkFBdUIsOElBQThJO0FBQ3JLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL3JlbmRlcmVyLmpzPzBkM2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RmlsbGVyIH0gZnJvbSAnLi9maWxsZXJzL2ZpbGxlci5qcyc7XG5pbXBvcnQgeyBSYW5kb20gfSBmcm9tICcuL21hdGguanMnO1xuaW1wb3J0IHsgcGFyc2VQYXRoLCBub3JtYWxpemUsIGFic29sdXRpemUgfSBmcm9tICdwYXRoLWRhdGEtcGFyc2VyJztcbmNvbnN0IGhlbHBlciA9IHtcbiAgICByYW5kT2Zmc2V0LFxuICAgIHJhbmRPZmZzZXRXaXRoUmFuZ2UsXG4gICAgZWxsaXBzZSxcbiAgICBkb3VibGVMaW5lT3BzOiBkb3VibGVMaW5lRmlsbE9wcyxcbn07XG5leHBvcnQgZnVuY3Rpb24gbGluZSh4MSwgeTEsIHgyLCB5Miwgbykge1xuICAgIHJldHVybiB7IHR5cGU6ICdwYXRoJywgb3BzOiBfZG91YmxlTGluZSh4MSwgeTEsIHgyLCB5MiwgbykgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJQYXRoKHBvaW50cywgY2xvc2UsIG8pIHtcbiAgICBjb25zdCBsZW4gPSAocG9pbnRzIHx8IFtdKS5sZW5ndGg7XG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgICAgY29uc3Qgb3BzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgKGxlbiAtIDEpOyBpKyspIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKC4uLl9kb3VibGVMaW5lKHBvaW50c1tpXVswXSwgcG9pbnRzW2ldWzFdLCBwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdLCBvKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsb3NlKSB7XG4gICAgICAgICAgICBvcHMucHVzaCguLi5fZG91YmxlTGluZShwb2ludHNbbGVuIC0gMV1bMF0sIHBvaW50c1tsZW4gLSAxXVsxXSwgcG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV0sIG8pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlOiAncGF0aCcsIG9wcyB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUocG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV0sIHBvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdLCBvKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZTogJ3BhdGgnLCBvcHM6IFtdIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcG9seWdvbihwb2ludHMsIG8pIHtcbiAgICByZXR1cm4gbGluZWFyUGF0aChwb2ludHMsIHRydWUsIG8pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlY3RhbmdsZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBvKSB7XG4gICAgY29uc3QgcG9pbnRzID0gW1xuICAgICAgICBbeCwgeV0sXG4gICAgICAgIFt4ICsgd2lkdGgsIHldLFxuICAgICAgICBbeCArIHdpZHRoLCB5ICsgaGVpZ2h0XSxcbiAgICAgICAgW3gsIHkgKyBoZWlnaHRdLFxuICAgIF07XG4gICAgcmV0dXJuIHBvbHlnb24ocG9pbnRzLCBvKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjdXJ2ZShwb2ludHMsIG8pIHtcbiAgICBsZXQgbzEgPSBfY3VydmVXaXRoT2Zmc2V0KHBvaW50cywgMSAqICgxICsgby5yb3VnaG5lc3MgKiAwLjIpLCBvKTtcbiAgICBpZiAoIW8uZGlzYWJsZU11bHRpU3Ryb2tlKSB7XG4gICAgICAgIGNvbnN0IG8yID0gX2N1cnZlV2l0aE9mZnNldChwb2ludHMsIDEuNSAqICgxICsgby5yb3VnaG5lc3MgKiAwLjIyKSwgY2xvbmVPcHRpb25zQWx0ZXJTZWVkKG8pKTtcbiAgICAgICAgbzEgPSBvMS5jb25jYXQobzIpO1xuICAgIH1cbiAgICByZXR1cm4geyB0eXBlOiAncGF0aCcsIG9wczogbzEgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbGxpcHNlKHgsIHksIHdpZHRoLCBoZWlnaHQsIG8pIHtcbiAgICBjb25zdCBwYXJhbXMgPSBnZW5lcmF0ZUVsbGlwc2VQYXJhbXMod2lkdGgsIGhlaWdodCwgbyk7XG4gICAgcmV0dXJuIGVsbGlwc2VXaXRoUGFyYW1zKHgsIHksIG8sIHBhcmFtcykub3BzZXQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFbGxpcHNlUGFyYW1zKHdpZHRoLCBoZWlnaHQsIG8pIHtcbiAgICBjb25zdCBwc3EgPSBNYXRoLnNxcnQoTWF0aC5QSSAqIDIgKiBNYXRoLnNxcnQoKE1hdGgucG93KHdpZHRoIC8gMiwgMikgKyBNYXRoLnBvdyhoZWlnaHQgLyAyLCAyKSkgLyAyKSk7XG4gICAgY29uc3Qgc3RlcENvdW50ID0gTWF0aC5jZWlsKE1hdGgubWF4KG8uY3VydmVTdGVwQ291bnQsIChvLmN1cnZlU3RlcENvdW50IC8gTWF0aC5zcXJ0KDIwMCkpICogcHNxKSk7XG4gICAgY29uc3QgaW5jcmVtZW50ID0gKE1hdGguUEkgKiAyKSAvIHN0ZXBDb3VudDtcbiAgICBsZXQgcnggPSBNYXRoLmFicyh3aWR0aCAvIDIpO1xuICAgIGxldCByeSA9IE1hdGguYWJzKGhlaWdodCAvIDIpO1xuICAgIGNvbnN0IGN1cnZlRml0UmFuZG9tbmVzcyA9IDEgLSBvLmN1cnZlRml0dGluZztcbiAgICByeCArPSBfb2Zmc2V0T3B0KHJ4ICogY3VydmVGaXRSYW5kb21uZXNzLCBvKTtcbiAgICByeSArPSBfb2Zmc2V0T3B0KHJ5ICogY3VydmVGaXRSYW5kb21uZXNzLCBvKTtcbiAgICByZXR1cm4geyBpbmNyZW1lbnQsIHJ4LCByeSB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGVsbGlwc2VXaXRoUGFyYW1zKHgsIHksIG8sIGVsbGlwc2VQYXJhbXMpIHtcbiAgICBjb25zdCBbYXAxLCBjcDFdID0gX2NvbXB1dGVFbGxpcHNlUG9pbnRzKGVsbGlwc2VQYXJhbXMuaW5jcmVtZW50LCB4LCB5LCBlbGxpcHNlUGFyYW1zLnJ4LCBlbGxpcHNlUGFyYW1zLnJ5LCAxLCBlbGxpcHNlUGFyYW1zLmluY3JlbWVudCAqIF9vZmZzZXQoMC4xLCBfb2Zmc2V0KDAuNCwgMSwgbyksIG8pLCBvKTtcbiAgICBsZXQgbzEgPSBfY3VydmUoYXAxLCBudWxsLCBvKTtcbiAgICBpZiAoKCFvLmRpc2FibGVNdWx0aVN0cm9rZSkgJiYgKG8ucm91Z2huZXNzICE9PSAwKSkge1xuICAgICAgICBjb25zdCBbYXAyXSA9IF9jb21wdXRlRWxsaXBzZVBvaW50cyhlbGxpcHNlUGFyYW1zLmluY3JlbWVudCwgeCwgeSwgZWxsaXBzZVBhcmFtcy5yeCwgZWxsaXBzZVBhcmFtcy5yeSwgMS41LCAwLCBvKTtcbiAgICAgICAgY29uc3QgbzIgPSBfY3VydmUoYXAyLCBudWxsLCBvKTtcbiAgICAgICAgbzEgPSBvMS5jb25jYXQobzIpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBlc3RpbWF0ZWRQb2ludHM6IGNwMSxcbiAgICAgICAgb3BzZXQ6IHsgdHlwZTogJ3BhdGgnLCBvcHM6IG8xIH0sXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhcmMoeCwgeSwgd2lkdGgsIGhlaWdodCwgc3RhcnQsIHN0b3AsIGNsb3NlZCwgcm91Z2hDbG9zdXJlLCBvKSB7XG4gICAgY29uc3QgY3ggPSB4O1xuICAgIGNvbnN0IGN5ID0geTtcbiAgICBsZXQgcnggPSBNYXRoLmFicyh3aWR0aCAvIDIpO1xuICAgIGxldCByeSA9IE1hdGguYWJzKGhlaWdodCAvIDIpO1xuICAgIHJ4ICs9IF9vZmZzZXRPcHQocnggKiAwLjAxLCBvKTtcbiAgICByeSArPSBfb2Zmc2V0T3B0KHJ5ICogMC4wMSwgbyk7XG4gICAgbGV0IHN0cnQgPSBzdGFydDtcbiAgICBsZXQgc3RwID0gc3RvcDtcbiAgICB3aGlsZSAoc3RydCA8IDApIHtcbiAgICAgICAgc3RydCArPSBNYXRoLlBJICogMjtcbiAgICAgICAgc3RwICs9IE1hdGguUEkgKiAyO1xuICAgIH1cbiAgICBpZiAoKHN0cCAtIHN0cnQpID4gKE1hdGguUEkgKiAyKSkge1xuICAgICAgICBzdHJ0ID0gMDtcbiAgICAgICAgc3RwID0gTWF0aC5QSSAqIDI7XG4gICAgfVxuICAgIGNvbnN0IGVsbGlwc2VJbmMgPSAoTWF0aC5QSSAqIDIpIC8gby5jdXJ2ZVN0ZXBDb3VudDtcbiAgICBjb25zdCBhcmNJbmMgPSBNYXRoLm1pbihlbGxpcHNlSW5jIC8gMiwgKHN0cCAtIHN0cnQpIC8gMik7XG4gICAgY29uc3Qgb3BzID0gX2FyYyhhcmNJbmMsIGN4LCBjeSwgcngsIHJ5LCBzdHJ0LCBzdHAsIDEsIG8pO1xuICAgIGlmICghby5kaXNhYmxlTXVsdGlTdHJva2UpIHtcbiAgICAgICAgY29uc3QgbzIgPSBfYXJjKGFyY0luYywgY3gsIGN5LCByeCwgcnksIHN0cnQsIHN0cCwgMS41LCBvKTtcbiAgICAgICAgb3BzLnB1c2goLi4ubzIpO1xuICAgIH1cbiAgICBpZiAoY2xvc2VkKSB7XG4gICAgICAgIGlmIChyb3VnaENsb3N1cmUpIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKC4uLl9kb3VibGVMaW5lKGN4LCBjeSwgY3ggKyByeCAqIE1hdGguY29zKHN0cnQpLCBjeSArIHJ5ICogTWF0aC5zaW4oc3RydCksIG8pLCAuLi5fZG91YmxlTGluZShjeCwgY3ksIGN4ICsgcnggKiBNYXRoLmNvcyhzdHApLCBjeSArIHJ5ICogTWF0aC5zaW4oc3RwKSwgbykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3BzLnB1c2goeyBvcDogJ2xpbmVUbycsIGRhdGE6IFtjeCwgY3ldIH0sIHsgb3A6ICdsaW5lVG8nLCBkYXRhOiBbY3ggKyByeCAqIE1hdGguY29zKHN0cnQpLCBjeSArIHJ5ICogTWF0aC5zaW4oc3RydCldIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHR5cGU6ICdwYXRoJywgb3BzIH07XG59XG5leHBvcnQgZnVuY3Rpb24gc3ZnUGF0aChwYXRoLCBvKSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemUoYWJzb2x1dGl6ZShwYXJzZVBhdGgocGF0aCkpKTtcbiAgICBjb25zdCBvcHMgPSBbXTtcbiAgICBsZXQgZmlyc3QgPSBbMCwgMF07XG4gICAgbGV0IGN1cnJlbnQgPSBbMCwgMF07XG4gICAgZm9yIChjb25zdCB7IGtleSwgZGF0YSB9IG9mIHNlZ21lbnRzKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdNJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvID0gMSAqIChvLm1heFJhbmRvbW5lc3NPZmZzZXQgfHwgMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHYgPSBvLnByZXNlcnZlVmVydGljZXM7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goeyBvcDogJ21vdmUnLCBkYXRhOiBkYXRhLm1hcCgoZCkgPT4gZCArIChwdiA/IDAgOiBfb2Zmc2V0T3B0KHJvLCBvKSkpIH0pO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBbZGF0YVswXSwgZGF0YVsxXV07XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBbZGF0YVswXSwgZGF0YVsxXV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICBvcHMucHVzaCguLi5fZG91YmxlTGluZShjdXJyZW50WzBdLCBjdXJyZW50WzFdLCBkYXRhWzBdLCBkYXRhWzFdLCBvKSk7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IFtkYXRhWzBdLCBkYXRhWzFdXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyLCB4LCB5XSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goLi4uX2JlemllclRvKHgxLCB5MSwgeDIsIHkyLCB4LCB5LCBjdXJyZW50LCBvKSk7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IFt4LCB5XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgIG9wcy5wdXNoKC4uLl9kb3VibGVMaW5lKGN1cnJlbnRbMF0sIGN1cnJlbnRbMV0sIGZpcnN0WzBdLCBmaXJzdFsxXSwgbykpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBbZmlyc3RbMF0sIGZpcnN0WzFdXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB0eXBlOiAncGF0aCcsIG9wcyB9O1xufVxuLy8gRmlsbHNcbmV4cG9ydCBmdW5jdGlvbiBzb2xpZEZpbGxQb2x5Z29uKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgY29uc3Qgb3BzID0gW107XG4gICAgZm9yIChjb25zdCBwb2ludHMgb2YgcG9seWdvbkxpc3QpIHtcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IG8ubWF4UmFuZG9tbmVzc09mZnNldCB8fCAwO1xuICAgICAgICAgICAgY29uc3QgbGVuID0gcG9pbnRzLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChsZW4gPiAyKSB7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goeyBvcDogJ21vdmUnLCBkYXRhOiBbcG9pbnRzWzBdWzBdICsgX29mZnNldE9wdChvZmZzZXQsIG8pLCBwb2ludHNbMF1bMV0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyldIH0pO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgb3BzLnB1c2goeyBvcDogJ2xpbmVUbycsIGRhdGE6IFtwb2ludHNbaV1bMF0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksIHBvaW50c1tpXVsxXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKV0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHR5cGU6ICdmaWxsUGF0aCcsIG9wcyB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhdHRlcm5GaWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pIHtcbiAgICByZXR1cm4gZ2V0RmlsbGVyKG8sIGhlbHBlcikuZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXR0ZXJuRmlsbEFyYyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzdGFydCwgc3RvcCwgbykge1xuICAgIGNvbnN0IGN4ID0geDtcbiAgICBjb25zdCBjeSA9IHk7XG4gICAgbGV0IHJ4ID0gTWF0aC5hYnMod2lkdGggLyAyKTtcbiAgICBsZXQgcnkgPSBNYXRoLmFicyhoZWlnaHQgLyAyKTtcbiAgICByeCArPSBfb2Zmc2V0T3B0KHJ4ICogMC4wMSwgbyk7XG4gICAgcnkgKz0gX29mZnNldE9wdChyeSAqIDAuMDEsIG8pO1xuICAgIGxldCBzdHJ0ID0gc3RhcnQ7XG4gICAgbGV0IHN0cCA9IHN0b3A7XG4gICAgd2hpbGUgKHN0cnQgPCAwKSB7XG4gICAgICAgIHN0cnQgKz0gTWF0aC5QSSAqIDI7XG4gICAgICAgIHN0cCArPSBNYXRoLlBJICogMjtcbiAgICB9XG4gICAgaWYgKChzdHAgLSBzdHJ0KSA+IChNYXRoLlBJICogMikpIHtcbiAgICAgICAgc3RydCA9IDA7XG4gICAgICAgIHN0cCA9IE1hdGguUEkgKiAyO1xuICAgIH1cbiAgICBjb25zdCBpbmNyZW1lbnQgPSAoc3RwIC0gc3RydCkgLyBvLmN1cnZlU3RlcENvdW50O1xuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGZvciAobGV0IGFuZ2xlID0gc3RydDsgYW5nbGUgPD0gc3RwOyBhbmdsZSA9IGFuZ2xlICsgaW5jcmVtZW50KSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtjeCArIHJ4ICogTWF0aC5jb3MoYW5nbGUpLCBjeSArIHJ5ICogTWF0aC5zaW4oYW5nbGUpXSk7XG4gICAgfVxuICAgIHBvaW50cy5wdXNoKFtjeCArIHJ4ICogTWF0aC5jb3Moc3RwKSwgY3kgKyByeSAqIE1hdGguc2luKHN0cCldKTtcbiAgICBwb2ludHMucHVzaChbY3gsIGN5XSk7XG4gICAgcmV0dXJuIHBhdHRlcm5GaWxsUG9seWdvbnMoW3BvaW50c10sIG8pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRPZmZzZXQoeCwgbykge1xuICAgIHJldHVybiBfb2Zmc2V0T3B0KHgsIG8pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRPZmZzZXRXaXRoUmFuZ2UobWluLCBtYXgsIG8pIHtcbiAgICByZXR1cm4gX29mZnNldChtaW4sIG1heCwgbyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZG91YmxlTGluZUZpbGxPcHMoeDEsIHkxLCB4MiwgeTIsIG8pIHtcbiAgICByZXR1cm4gX2RvdWJsZUxpbmUoeDEsIHkxLCB4MiwgeTIsIG8sIHRydWUpO1xufVxuLy8gUHJpdmF0ZSBoZWxwZXJzXG5mdW5jdGlvbiBjbG9uZU9wdGlvbnNBbHRlclNlZWQob3BzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb3BzKTtcbiAgICByZXN1bHQucmFuZG9taXplciA9IHVuZGVmaW5lZDtcbiAgICBpZiAob3BzLnNlZWQpIHtcbiAgICAgICAgcmVzdWx0LnNlZWQgPSBvcHMuc2VlZCArIDE7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiByYW5kb20ob3BzKSB7XG4gICAgaWYgKCFvcHMucmFuZG9taXplcikge1xuICAgICAgICBvcHMucmFuZG9taXplciA9IG5ldyBSYW5kb20ob3BzLnNlZWQgfHwgMCk7XG4gICAgfVxuICAgIHJldHVybiBvcHMucmFuZG9taXplci5uZXh0KCk7XG59XG5mdW5jdGlvbiBfb2Zmc2V0KG1pbiwgbWF4LCBvcHMsIHJvdWdobmVzc0dhaW4gPSAxKSB7XG4gICAgcmV0dXJuIG9wcy5yb3VnaG5lc3MgKiByb3VnaG5lc3NHYWluICogKChyYW5kb20ob3BzKSAqIChtYXggLSBtaW4pKSArIG1pbik7XG59XG5mdW5jdGlvbiBfb2Zmc2V0T3B0KHgsIG9wcywgcm91Z2huZXNzR2FpbiA9IDEpIHtcbiAgICByZXR1cm4gX29mZnNldCgteCwgeCwgb3BzLCByb3VnaG5lc3NHYWluKTtcbn1cbmZ1bmN0aW9uIF9kb3VibGVMaW5lKHgxLCB5MSwgeDIsIHkyLCBvLCBmaWxsaW5nID0gZmFsc2UpIHtcbiAgICBjb25zdCBzaW5nbGVTdHJva2UgPSBmaWxsaW5nID8gby5kaXNhYmxlTXVsdGlTdHJva2VGaWxsIDogby5kaXNhYmxlTXVsdGlTdHJva2U7XG4gICAgY29uc3QgbzEgPSBfbGluZSh4MSwgeTEsIHgyLCB5MiwgbywgdHJ1ZSwgZmFsc2UpO1xuICAgIGlmIChzaW5nbGVTdHJva2UpIHtcbiAgICAgICAgcmV0dXJuIG8xO1xuICAgIH1cbiAgICBjb25zdCBvMiA9IF9saW5lKHgxLCB5MSwgeDIsIHkyLCBvLCB0cnVlLCB0cnVlKTtcbiAgICByZXR1cm4gbzEuY29uY2F0KG8yKTtcbn1cbmZ1bmN0aW9uIF9saW5lKHgxLCB5MSwgeDIsIHkyLCBvLCBtb3ZlLCBvdmVybGF5KSB7XG4gICAgY29uc3QgbGVuZ3RoU3EgPSBNYXRoLnBvdygoeDEgLSB4MiksIDIpICsgTWF0aC5wb3coKHkxIC0geTIpLCAyKTtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQobGVuZ3RoU3EpO1xuICAgIGxldCByb3VnaG5lc3NHYWluID0gMTtcbiAgICBpZiAobGVuZ3RoIDwgMjAwKSB7XG4gICAgICAgIHJvdWdobmVzc0dhaW4gPSAxO1xuICAgIH1cbiAgICBlbHNlIGlmIChsZW5ndGggPiA1MDApIHtcbiAgICAgICAgcm91Z2huZXNzR2FpbiA9IDAuNDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJvdWdobmVzc0dhaW4gPSAoLTAuMDAxNjY2OCkgKiBsZW5ndGggKyAxLjIzMzMzNDtcbiAgICB9XG4gICAgbGV0IG9mZnNldCA9IG8ubWF4UmFuZG9tbmVzc09mZnNldCB8fCAwO1xuICAgIGlmICgob2Zmc2V0ICogb2Zmc2V0ICogMTAwKSA+IGxlbmd0aFNxKSB7XG4gICAgICAgIG9mZnNldCA9IGxlbmd0aCAvIDEwO1xuICAgIH1cbiAgICBjb25zdCBoYWxmT2Zmc2V0ID0gb2Zmc2V0IC8gMjtcbiAgICBjb25zdCBkaXZlcmdlUG9pbnQgPSAwLjIgKyByYW5kb20obykgKiAwLjI7XG4gICAgbGV0IG1pZERpc3BYID0gby5ib3dpbmcgKiBvLm1heFJhbmRvbW5lc3NPZmZzZXQgKiAoeTIgLSB5MSkgLyAyMDA7XG4gICAgbGV0IG1pZERpc3BZID0gby5ib3dpbmcgKiBvLm1heFJhbmRvbW5lc3NPZmZzZXQgKiAoeDEgLSB4MikgLyAyMDA7XG4gICAgbWlkRGlzcFggPSBfb2Zmc2V0T3B0KG1pZERpc3BYLCBvLCByb3VnaG5lc3NHYWluKTtcbiAgICBtaWREaXNwWSA9IF9vZmZzZXRPcHQobWlkRGlzcFksIG8sIHJvdWdobmVzc0dhaW4pO1xuICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgIGNvbnN0IHJhbmRvbUhhbGYgPSAoKSA9PiBfb2Zmc2V0T3B0KGhhbGZPZmZzZXQsIG8sIHJvdWdobmVzc0dhaW4pO1xuICAgIGNvbnN0IHJhbmRvbUZ1bGwgPSAoKSA9PiBfb2Zmc2V0T3B0KG9mZnNldCwgbywgcm91Z2huZXNzR2Fpbik7XG4gICAgY29uc3QgcHJlc2VydmVWZXJ0aWNlcyA9IG8ucHJlc2VydmVWZXJ0aWNlcztcbiAgICBpZiAobW92ZSkge1xuICAgICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICAgICAgb3BzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9wOiAnbW92ZScsIGRhdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgeDEgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiByYW5kb21IYWxmKCkpLFxuICAgICAgICAgICAgICAgICAgICB5MSArIChwcmVzZXJ2ZVZlcnRpY2VzID8gMCA6IHJhbmRvbUhhbGYoKSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3BzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9wOiAnbW92ZScsIGRhdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgeDEgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiBfb2Zmc2V0T3B0KG9mZnNldCwgbywgcm91Z2huZXNzR2FpbikpLFxuICAgICAgICAgICAgICAgICAgICB5MSArIChwcmVzZXJ2ZVZlcnRpY2VzID8gMCA6IF9vZmZzZXRPcHQob2Zmc2V0LCBvLCByb3VnaG5lc3NHYWluKSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICAgIG9wcy5wdXNoKHtcbiAgICAgICAgICAgIG9wOiAnYmN1cnZlVG8nLFxuICAgICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAgICAgIG1pZERpc3BYICsgeDEgKyAoeDIgLSB4MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21IYWxmKCksXG4gICAgICAgICAgICAgICAgbWlkRGlzcFkgKyB5MSArICh5MiAtIHkxKSAqIGRpdmVyZ2VQb2ludCArIHJhbmRvbUhhbGYoKSxcbiAgICAgICAgICAgICAgICBtaWREaXNwWCArIHgxICsgMiAqICh4MiAtIHgxKSAqIGRpdmVyZ2VQb2ludCArIHJhbmRvbUhhbGYoKSxcbiAgICAgICAgICAgICAgICBtaWREaXNwWSArIHkxICsgMiAqICh5MiAtIHkxKSAqIGRpdmVyZ2VQb2ludCArIHJhbmRvbUhhbGYoKSxcbiAgICAgICAgICAgICAgICB4MiArIChwcmVzZXJ2ZVZlcnRpY2VzID8gMCA6IHJhbmRvbUhhbGYoKSksXG4gICAgICAgICAgICAgICAgeTIgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiByYW5kb21IYWxmKCkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBvcHMucHVzaCh7XG4gICAgICAgICAgICBvcDogJ2JjdXJ2ZVRvJyxcbiAgICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgICAgICBtaWREaXNwWCArIHgxICsgKHgyIC0geDEpICogZGl2ZXJnZVBvaW50ICsgcmFuZG9tRnVsbCgpLFxuICAgICAgICAgICAgICAgIG1pZERpc3BZICsgeTEgKyAoeTIgLSB5MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21GdWxsKCksXG4gICAgICAgICAgICAgICAgbWlkRGlzcFggKyB4MSArIDIgKiAoeDIgLSB4MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21GdWxsKCksXG4gICAgICAgICAgICAgICAgbWlkRGlzcFkgKyB5MSArIDIgKiAoeTIgLSB5MSkgKiBkaXZlcmdlUG9pbnQgKyByYW5kb21GdWxsKCksXG4gICAgICAgICAgICAgICAgeDIgKyAocHJlc2VydmVWZXJ0aWNlcyA/IDAgOiByYW5kb21GdWxsKCkpLFxuICAgICAgICAgICAgICAgIHkyICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogcmFuZG9tRnVsbCgpKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3BzO1xufVxuZnVuY3Rpb24gX2N1cnZlV2l0aE9mZnNldChwb2ludHMsIG9mZnNldCwgbykge1xuICAgIGNvbnN0IHBzID0gW107XG4gICAgcHMucHVzaChbXG4gICAgICAgIHBvaW50c1swXVswXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSxcbiAgICAgICAgcG9pbnRzWzBdWzFdICsgX29mZnNldE9wdChvZmZzZXQsIG8pLFxuICAgIF0pO1xuICAgIHBzLnB1c2goW1xuICAgICAgICBwb2ludHNbMF1bMF0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksXG4gICAgICAgIHBvaW50c1swXVsxXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSxcbiAgICBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwcy5wdXNoKFtcbiAgICAgICAgICAgIHBvaW50c1tpXVswXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSxcbiAgICAgICAgICAgIHBvaW50c1tpXVsxXSArIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGlmIChpID09PSAocG9pbnRzLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgICBwcy5wdXNoKFtcbiAgICAgICAgICAgICAgICBwb2ludHNbaV1bMF0gKyBfb2Zmc2V0T3B0KG9mZnNldCwgbyksXG4gICAgICAgICAgICAgICAgcG9pbnRzW2ldWzFdICsgX29mZnNldE9wdChvZmZzZXQsIG8pLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9jdXJ2ZShwcywgbnVsbCwgbyk7XG59XG5mdW5jdGlvbiBfY3VydmUocG9pbnRzLCBjbG9zZVBvaW50LCBvKSB7XG4gICAgY29uc3QgbGVuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBjb25zdCBvcHMgPSBbXTtcbiAgICBpZiAobGVuID4gMykge1xuICAgICAgICBjb25zdCBiID0gW107XG4gICAgICAgIGNvbnN0IHMgPSAxIC0gby5jdXJ2ZVRpZ2h0bmVzcztcbiAgICAgICAgb3BzLnB1c2goeyBvcDogJ21vdmUnLCBkYXRhOiBbcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV1dIH0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgKGkgKyAyKSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjYWNoZWRWZXJ0QXJyYXkgPSBwb2ludHNbaV07XG4gICAgICAgICAgICBiWzBdID0gW2NhY2hlZFZlcnRBcnJheVswXSwgY2FjaGVkVmVydEFycmF5WzFdXTtcbiAgICAgICAgICAgIGJbMV0gPSBbY2FjaGVkVmVydEFycmF5WzBdICsgKHMgKiBwb2ludHNbaSArIDFdWzBdIC0gcyAqIHBvaW50c1tpIC0gMV1bMF0pIC8gNiwgY2FjaGVkVmVydEFycmF5WzFdICsgKHMgKiBwb2ludHNbaSArIDFdWzFdIC0gcyAqIHBvaW50c1tpIC0gMV1bMV0pIC8gNl07XG4gICAgICAgICAgICBiWzJdID0gW3BvaW50c1tpICsgMV1bMF0gKyAocyAqIHBvaW50c1tpXVswXSAtIHMgKiBwb2ludHNbaSArIDJdWzBdKSAvIDYsIHBvaW50c1tpICsgMV1bMV0gKyAocyAqIHBvaW50c1tpXVsxXSAtIHMgKiBwb2ludHNbaSArIDJdWzFdKSAvIDZdO1xuICAgICAgICAgICAgYlszXSA9IFtwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdXTtcbiAgICAgICAgICAgIG9wcy5wdXNoKHsgb3A6ICdiY3VydmVUbycsIGRhdGE6IFtiWzFdWzBdLCBiWzFdWzFdLCBiWzJdWzBdLCBiWzJdWzFdLCBiWzNdWzBdLCBiWzNdWzFdXSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xvc2VQb2ludCAmJiBjbG9zZVBvaW50Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3Qgcm8gPSBvLm1heFJhbmRvbW5lc3NPZmZzZXQ7XG4gICAgICAgICAgICBvcHMucHVzaCh7IG9wOiAnbGluZVRvJywgZGF0YTogW2Nsb3NlUG9pbnRbMF0gKyBfb2Zmc2V0T3B0KHJvLCBvKSwgY2xvc2VQb2ludFsxXSArIF9vZmZzZXRPcHQocm8sIG8pXSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChsZW4gPT09IDMpIHtcbiAgICAgICAgb3BzLnB1c2goeyBvcDogJ21vdmUnLCBkYXRhOiBbcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV1dIH0pO1xuICAgICAgICBvcHMucHVzaCh7XG4gICAgICAgICAgICBvcDogJ2JjdXJ2ZVRvJyxcbiAgICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgICAgICBwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXSxcbiAgICAgICAgICAgICAgICBwb2ludHNbMl1bMF0sIHBvaW50c1syXVsxXSxcbiAgICAgICAgICAgICAgICBwb2ludHNbMl1bMF0sIHBvaW50c1syXVsxXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgICAgb3BzLnB1c2goLi4uX2RvdWJsZUxpbmUocG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV0sIHBvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdLCBvKSk7XG4gICAgfVxuICAgIHJldHVybiBvcHM7XG59XG5mdW5jdGlvbiBfY29tcHV0ZUVsbGlwc2VQb2ludHMoaW5jcmVtZW50LCBjeCwgY3ksIHJ4LCByeSwgb2Zmc2V0LCBvdmVybGFwLCBvKSB7XG4gICAgY29uc3QgY29yZU9ubHkgPSBvLnJvdWdobmVzcyA9PT0gMDtcbiAgICBjb25zdCBjb3JlUG9pbnRzID0gW107XG4gICAgY29uc3QgYWxsUG9pbnRzID0gW107XG4gICAgaWYgKGNvcmVPbmx5KSB7XG4gICAgICAgIGluY3JlbWVudCA9IGluY3JlbWVudCAvIDQ7XG4gICAgICAgIGFsbFBvaW50cy5wdXNoKFtcbiAgICAgICAgICAgIGN4ICsgcnggKiBNYXRoLmNvcygtaW5jcmVtZW50KSxcbiAgICAgICAgICAgIGN5ICsgcnkgKiBNYXRoLnNpbigtaW5jcmVtZW50KSxcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGFuZ2xlID0gMDsgYW5nbGUgPD0gTWF0aC5QSSAqIDI7IGFuZ2xlID0gYW5nbGUgKyBpbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBbXG4gICAgICAgICAgICAgICAgY3ggKyByeCAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgICAgICAgICBjeSArIHJ5ICogTWF0aC5zaW4oYW5nbGUpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNvcmVQb2ludHMucHVzaChwKTtcbiAgICAgICAgICAgIGFsbFBvaW50cy5wdXNoKHApO1xuICAgICAgICB9XG4gICAgICAgIGFsbFBvaW50cy5wdXNoKFtcbiAgICAgICAgICAgIGN4ICsgcnggKiBNYXRoLmNvcygwKSxcbiAgICAgICAgICAgIGN5ICsgcnkgKiBNYXRoLnNpbigwKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGFsbFBvaW50cy5wdXNoKFtcbiAgICAgICAgICAgIGN4ICsgcnggKiBNYXRoLmNvcyhpbmNyZW1lbnQpLFxuICAgICAgICAgICAgY3kgKyByeSAqIE1hdGguc2luKGluY3JlbWVudCksXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcmFkT2Zmc2V0ID0gX29mZnNldE9wdCgwLjUsIG8pIC0gKE1hdGguUEkgLyAyKTtcbiAgICAgICAgYWxsUG9pbnRzLnB1c2goW1xuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3ggKyAwLjkgKiByeCAqIE1hdGguY29zKHJhZE9mZnNldCAtIGluY3JlbWVudCksXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeSArIDAuOSAqIHJ5ICogTWF0aC5zaW4ocmFkT2Zmc2V0IC0gaW5jcmVtZW50KSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IGVuZEFuZ2xlID0gTWF0aC5QSSAqIDIgKyByYWRPZmZzZXQgLSAwLjAxO1xuICAgICAgICBmb3IgKGxldCBhbmdsZSA9IHJhZE9mZnNldDsgYW5nbGUgPCBlbmRBbmdsZTsgYW5nbGUgPSBhbmdsZSArIGluY3JlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgcCA9IFtcbiAgICAgICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIHJ4ICogTWF0aC5jb3MoYW5nbGUpLFxuICAgICAgICAgICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN5ICsgcnkgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29yZVBvaW50cy5wdXNoKHApO1xuICAgICAgICAgICAgYWxsUG9pbnRzLnB1c2gocCk7XG4gICAgICAgIH1cbiAgICAgICAgYWxsUG9pbnRzLnB1c2goW1xuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3ggKyByeCAqIE1hdGguY29zKHJhZE9mZnNldCArIE1hdGguUEkgKiAyICsgb3ZlcmxhcCAqIDAuNSksXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeSArIHJ5ICogTWF0aC5zaW4ocmFkT2Zmc2V0ICsgTWF0aC5QSSAqIDIgKyBvdmVybGFwICogMC41KSxcbiAgICAgICAgXSk7XG4gICAgICAgIGFsbFBvaW50cy5wdXNoKFtcbiAgICAgICAgICAgIF9vZmZzZXRPcHQob2Zmc2V0LCBvKSArIGN4ICsgMC45OCAqIHJ4ICogTWF0aC5jb3MocmFkT2Zmc2V0ICsgb3ZlcmxhcCksXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeSArIDAuOTggKiByeSAqIE1hdGguc2luKHJhZE9mZnNldCArIG92ZXJsYXApLFxuICAgICAgICBdKTtcbiAgICAgICAgYWxsUG9pbnRzLnB1c2goW1xuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3ggKyAwLjkgKiByeCAqIE1hdGguY29zKHJhZE9mZnNldCArIG92ZXJsYXAgKiAwLjUpLFxuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3kgKyAwLjkgKiByeSAqIE1hdGguc2luKHJhZE9mZnNldCArIG92ZXJsYXAgKiAwLjUpLFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcmV0dXJuIFthbGxQb2ludHMsIGNvcmVQb2ludHNdO1xufVxuZnVuY3Rpb24gX2FyYyhpbmNyZW1lbnQsIGN4LCBjeSwgcngsIHJ5LCBzdHJ0LCBzdHAsIG9mZnNldCwgbykge1xuICAgIGNvbnN0IHJhZE9mZnNldCA9IHN0cnQgKyBfb2Zmc2V0T3B0KDAuMSwgbyk7XG4gICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgcG9pbnRzLnB1c2goW1xuICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIDAuOSAqIHJ4ICogTWF0aC5jb3MocmFkT2Zmc2V0IC0gaW5jcmVtZW50KSxcbiAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3kgKyAwLjkgKiByeSAqIE1hdGguc2luKHJhZE9mZnNldCAtIGluY3JlbWVudCksXG4gICAgXSk7XG4gICAgZm9yIChsZXQgYW5nbGUgPSByYWRPZmZzZXQ7IGFuZ2xlIDw9IHN0cDsgYW5nbGUgPSBhbmdsZSArIGluY3JlbWVudCkge1xuICAgICAgICBwb2ludHMucHVzaChbXG4gICAgICAgICAgICBfb2Zmc2V0T3B0KG9mZnNldCwgbykgKyBjeCArIHJ4ICogTWF0aC5jb3MoYW5nbGUpLFxuICAgICAgICAgICAgX29mZnNldE9wdChvZmZzZXQsIG8pICsgY3kgKyByeSAqIE1hdGguc2luKGFuZ2xlKSxcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIHBvaW50cy5wdXNoKFtcbiAgICAgICAgY3ggKyByeCAqIE1hdGguY29zKHN0cCksXG4gICAgICAgIGN5ICsgcnkgKiBNYXRoLnNpbihzdHApLFxuICAgIF0pO1xuICAgIHBvaW50cy5wdXNoKFtcbiAgICAgICAgY3ggKyByeCAqIE1hdGguY29zKHN0cCksXG4gICAgICAgIGN5ICsgcnkgKiBNYXRoLnNpbihzdHApLFxuICAgIF0pO1xuICAgIHJldHVybiBfY3VydmUocG9pbnRzLCBudWxsLCBvKTtcbn1cbmZ1bmN0aW9uIF9iZXppZXJUbyh4MSwgeTEsIHgyLCB5MiwgeCwgeSwgY3VycmVudCwgbykge1xuICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgIGNvbnN0IHJvcyA9IFtvLm1heFJhbmRvbW5lc3NPZmZzZXQgfHwgMSwgKG8ubWF4UmFuZG9tbmVzc09mZnNldCB8fCAxKSArIDAuM107XG4gICAgbGV0IGYgPSBbMCwgMF07XG4gICAgY29uc3QgaXRlcmF0aW9ucyA9IG8uZGlzYWJsZU11bHRpU3Ryb2tlID8gMSA6IDI7XG4gICAgY29uc3QgcHJlc2VydmVWZXJ0aWNlcyA9IG8ucHJlc2VydmVWZXJ0aWNlcztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgb3BzLnB1c2goeyBvcDogJ21vdmUnLCBkYXRhOiBbY3VycmVudFswXSwgY3VycmVudFsxXV0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvcHMucHVzaCh7IG9wOiAnbW92ZScsIGRhdGE6IFtjdXJyZW50WzBdICsgKHByZXNlcnZlVmVydGljZXMgPyAwIDogX29mZnNldE9wdChyb3NbMF0sIG8pKSwgY3VycmVudFsxXSArIChwcmVzZXJ2ZVZlcnRpY2VzID8gMCA6IF9vZmZzZXRPcHQocm9zWzBdLCBvKSldIH0pO1xuICAgICAgICB9XG4gICAgICAgIGYgPSBwcmVzZXJ2ZVZlcnRpY2VzID8gW3gsIHldIDogW3ggKyBfb2Zmc2V0T3B0KHJvc1tpXSwgbyksIHkgKyBfb2Zmc2V0T3B0KHJvc1tpXSwgbyldO1xuICAgICAgICBvcHMucHVzaCh7XG4gICAgICAgICAgICBvcDogJ2JjdXJ2ZVRvJyxcbiAgICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgICAgICB4MSArIF9vZmZzZXRPcHQocm9zW2ldLCBvKSwgeTEgKyBfb2Zmc2V0T3B0KHJvc1tpXSwgbyksXG4gICAgICAgICAgICAgICAgeDIgKyBfb2Zmc2V0T3B0KHJvc1tpXSwgbyksIHkyICsgX29mZnNldE9wdChyb3NbaV0sIG8pLFxuICAgICAgICAgICAgICAgIGZbMF0sIGZbMV0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/renderer.js\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../../node_modules/roughjs/bin/renderer.js?");
|
|
579
579
|
|
|
580
580
|
/***/ }),
|
|
581
581
|
|
|
@@ -2832,7 +2832,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
|
|
|
2832
2832
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2833
2833
|
|
|
2834
2834
|
"use strict";
|
|
2835
|
-
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.THEME),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.bumpVersion),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.defaultLang),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToBlob),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToCanvas),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToSvg),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getCommonBoundingBox),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getMaximumGroups),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isLinearElement),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.languages),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadLibraryFromBlob),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.newElementWith),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreElements),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.serializeAsJSON)\\n/* harmony export */ });\\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \\\"./index.tsx\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../public/fonts.css */ \\\"../../../public/fonts.css\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_public_fonts_css__WEBPACK_IMPORTED_MODULE_1__);\\n\\r\\n\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_index__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
2835
|
+
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.THEME),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.bumpVersion),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.defaultLang),\\n/* harmony export */ \\\"determineFocusDistance\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.determineFocusDistance),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToBlob),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToCanvas),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToSvg),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getCommonBoundingBox),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getMaximumGroups),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getSceneVersion),\\n/* harmony export */ \\\"intersectElementWithLine\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.intersectElementWithLine),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isLinearElement),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.languages),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadLibraryFromBlob),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.newElementWith),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreElements),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.serializeAsJSON)\\n/* harmony export */ });\\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \\\"./index.tsx\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../public/fonts.css */ \\\"../../../public/fonts.css\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_public_fonts_css__WEBPACK_IMPORTED_MODULE_1__);\\n\\r\\n\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_index__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9lbnRyeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpQztBQUNFO0FBQ25DLGlFQUFlLDhDQUFVLEVBQUM7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2VudHJ5LmpzPzVhZTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4Y2FsaWRyYXcgZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uLy4uL3B1YmxpYy9mb250cy5jc3NcIjtcbmV4cG9ydCBkZWZhdWx0IEV4Y2FsaWRyYXc7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleFwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///./entry.js\\n\");\n\n//# sourceURL=webpack://Excalidraw/./entry.js?");
|
|
2836
2836
|
|
|
2837
2837
|
/***/ }),
|
|
2838
2838
|
|
|
@@ -2843,7 +2843,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
|
|
|
2843
2843
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2844
2844
|
|
|
2845
2845
|
"use strict";
|
|
2846
|
-
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.isInvisiblySmallElement),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getNonDeletedElements),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.languages),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreElements),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.serializeAsJSON),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadLibraryFromBlob),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getCommonBoundingBox),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getMaximumGroups),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__.isLinearElement),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.THEME),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.newElementWith),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.bumpVersion)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \\\"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"./node_modules/@babel/runtime/helpers/defineProperty.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _publicPath__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./publicPath */ \\\"./publicPath.js\\\");\\n/* harmony import */ var _components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/InitializeApp */ \\\"../../components/InitializeApp.tsx\\\");\\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/app.scss */ \\\"../../css/app.scss\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_css_app_scss__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../css/styles.scss */ \\\"../../css/styles.scss\\\");\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_css_styles_scss__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../packages/utils */ \\\"../utils.ts\\\");\\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../element/mutateElement */ \\\"../../element/mutateElement.ts\\\");\\n\\r\\n\\r\\nconst _excluded = [\\\"initialData\\\", \\\"UIOptions\\\"], _excluded2 = [\\\"initialData\\\", \\\"UIOptions\\\"];\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst Excalidraw = function (props) {\\r\\n var _a, _b, _c;\\r\\n const { onChange, initialData, excalidrawRef, onCollabButtonClick, isCollaborating, onPointerUpdate, renderTopRightUI, renderFooter, langCode = _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang.code, viewModeEnabled, zenModeEnabled, gridModeEnabled, libraryReturnUrl, theme, name, renderCustomStats, onPaste, onDrop, detectScroll = true, handleKeyboardGlobally = false, onLibraryChange, autoFocus = false, onBeforeTextEdit, onBeforeTextSubmit, generateIdForFile, onThemeChange } = props;\\r\\n const canvasActions = (_a = props.UIOptions) === null || _a === void 0 ? void 0 : _a.canvasActions;\\r\\n const UIOptions = {\\r\\n canvasActions: _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions), canvasActions)\\r\\n };\\r\\n if (canvasActions === null || canvasActions === void 0 ? void 0 : canvasActions.export) {\\r\\n UIOptions.canvasActions.export.saveFileToDisk = (_c = (_b = canvasActions.export) === null || _b === void 0 ? void 0 : _b.saveFileToDisk) !== null && _c !== void 0 ? _c : _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions[\\\"export\\\"].saveFileToDisk;\\r\\n }\\r\\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\\r\\n // Block pinch-zooming on iOS outside of the content area\\r\\n const handleTouchMove = function (event) {\\r\\n // @ts-ignore\\r\\n if (typeof event.scale === \\\"number\\\" && event.scale !== 1) {\\r\\n event.preventDefault();\\r\\n }\\r\\n };\\r\\n document.addEventListener(\\\"touchmove\\\", handleTouchMove, {\\r\\n passive: false\\r\\n });\\r\\n return function () {\\r\\n document.removeEventListener(\\\"touchmove\\\", handleTouchMove);\\r\\n };\\r\\n }, []);\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__.InitializeApp, {\\r\\n langCode: langCode,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"], {\\r\\n onChange: onChange,\\r\\n initialData: initialData,\\r\\n excalidrawRef: excalidrawRef,\\r\\n onCollabButtonClick: onCollabButtonClick,\\r\\n isCollaborating: isCollaborating,\\r\\n onPointerUpdate: onPointerUpdate,\\r\\n renderTopRightUI: renderTopRightUI,\\r\\n renderFooter: renderFooter,\\r\\n langCode: langCode,\\r\\n viewModeEnabled: viewModeEnabled,\\r\\n zenModeEnabled: zenModeEnabled,\\r\\n gridModeEnabled: gridModeEnabled,\\r\\n libraryReturnUrl: libraryReturnUrl,\\r\\n theme: theme,\\r\\n name: name,\\r\\n renderCustomStats: renderCustomStats,\\r\\n UIOptions: UIOptions,\\r\\n onPaste: onPaste,\\r\\n onDrop: onDrop,\\r\\n detectScroll: detectScroll,\\r\\n handleKeyboardGlobally: handleKeyboardGlobally,\\r\\n onLibraryChange: onLibraryChange,\\r\\n autoFocus: autoFocus,\\r\\n onBeforeTextEdit: onBeforeTextEdit,\\r\\n onBeforeTextSubmit: onBeforeTextSubmit,\\r\\n generateIdForFile: generateIdForFile,\\r\\n onThemeChange: onThemeChange\\r\\n })\\r\\n });\\r\\n};\\r\\nconst areEqual = function (prevProps, nextProps) {\\r\\n const { initialData: prevInitialData, UIOptions: prevUIOptions = {} } = prevProps, prev = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(prevProps, _excluded);\\r\\n const { initialData: nextInitialData, UIOptions: nextUIOptions = {} } = nextProps, next = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(nextProps, _excluded2); // comparing UIOptions\\r\\n const prevUIOptionsKeys = Object.keys(prevUIOptions);\\r\\n const nextUIOptionsKeys = Object.keys(nextUIOptions);\\r\\n if (prevUIOptionsKeys.length !== nextUIOptionsKeys.length) {\\r\\n return false;\\r\\n }\\r\\n const isUIOptionsSame = prevUIOptionsKeys.every(function (key) {\\r\\n if (key === \\\"canvasActions\\\") {\\r\\n const canvasOptionKeys = Object.keys(prevUIOptions.canvasActions);\\r\\n canvasOptionKeys.every(function (key) {\\r\\n var _a, _b, _c, _d;\\r\\n if (key === \\\"export\\\" && ((_a = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _a === void 0 ? void 0 : _a.export) && ((_b = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _b === void 0 ? void 0 : _b.export)) {\\r\\n return prevUIOptions.canvasActions.export.saveFileToDisk === nextUIOptions.canvasActions.export.saveFileToDisk;\\r\\n }\\r\\n return ((_c = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _c === void 0 ? void 0 : _c[key]) === ((_d = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _d === void 0 ? void 0 : _d[key]);\\r\\n });\\r\\n }\\r\\n return true;\\r\\n });\\r\\n const prevKeys = Object.keys(prevProps);\\r\\n const nextKeys = Object.keys(nextProps);\\r\\n return isUIOptionsSame && prevKeys.length === nextKeys.length && prevKeys.every(function (key) {\\r\\n return prev[key] === next[key];\\r\\n });\\r\\n};\\r\\nconst forwardedRefComp = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(function (props, ref) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(Excalidraw, _objectSpread(_objectSpread({}, props), {}, {\\r\\n excalidrawRef: ref\\r\\n }));\\r\\n});\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().memo(forwardedRefComp, areEqual));\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNGO0FBQ2xCO0FBQ3BFLE1BQU0sU0FBUyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUN4QyxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFaEQsU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsSUFBSSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMscUJBQXFCLEVBQUU7SUFBRSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFBQyxJQUFJLGNBQWMsRUFBRTtRQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFO0lBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFelYsU0FBUyxhQUFhLENBQUMsTUFBTSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQUUsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSw0RUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFO1NBQU0sSUFBSSxNQUFNLENBQUMseUJBQXlCLEVBQUU7UUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQUU7U0FBTTtRQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQUU7Q0FBRSxDQUFDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQztBQUVqZTtBQUMvQjtBQUN5QztBQUN4QjtBQUNYO0FBQ0c7QUFDVTtBQUNZO0FBQ0w7QUFFaEQsTUFBTSxVQUFVLEdBQUcsVUFBVSxLQUFLOztJQUNoQyxNQUFNLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixRQUFRLEdBQUcsbURBQWdCLEVBQzNCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixLQUFLLEVBQ0wsSUFBSSxFQUNKLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksR0FBRyxJQUFJLEVBQ25CLHNCQUFzQixHQUFHLEtBQUssRUFDOUIsZUFBZSxFQUNmLFNBQVMsR0FBRyxLQUFLLEVBQ2pCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDZCxHQUFHLEtBQUssQ0FBQztJQUNWLE1BQU0sYUFBYSxHQUFHLFdBQUssQ0FBQyxTQUFTLDBDQUFFLGFBQWEsQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRztRQUNoQixhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsd0VBQWdDLENBQUMsRUFBRSxhQUFhLENBQUM7S0FDakcsQ0FBQztJQUVGLElBQUksYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLE1BQU0sRUFBRTtRQUN6QixTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcseUJBQWEsQ0FBQyxNQUFNLDBDQUFFLGNBQWMsbUNBQUksaUdBQXNELENBQUM7S0FDaEo7SUFFRCxnREFBUyxDQUFDO1FBQ1IseURBQXlEO1FBQ3pELE1BQU0sZUFBZSxHQUFHLFVBQVUsS0FBSztZQUNyQyxhQUFhO1lBQ2IsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO2dCQUN4RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRTtZQUN0RCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztRQUNILE9BQU87WUFDTCxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNQLE9BQU8sYUFBYSx3REFBSSxDQUFDLG9FQUFhLEVBQUU7UUFDdEMsUUFBUSxFQUFFLFFBQVE7UUFDbEIsUUFBUSxFQUFFLGFBQWEsd0RBQUksQ0FBQyx1REFBRyxFQUFFO1lBQy9CLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLGFBQWEsRUFBRSxhQUFhO1lBQzVCLG1CQUFtQixFQUFFLG1CQUFtQjtZQUN4QyxlQUFlLEVBQUUsZUFBZTtZQUNoQyxlQUFlLEVBQUUsZUFBZTtZQUNoQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsWUFBWSxFQUFFLFlBQVk7WUFDMUIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLElBQUk7WUFDVixpQkFBaUIsRUFBRSxpQkFBaUI7WUFDcEMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxZQUFZLEVBQUUsWUFBWTtZQUMxQixzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsZUFBZSxFQUFFLGVBQWU7WUFDaEMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGtCQUFrQixFQUFFLGtCQUFrQjtZQUN0QyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDcEMsYUFBYSxFQUFFLGFBQWE7U0FDN0IsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLFVBQVUsU0FBUyxFQUFFLFNBQVM7SUFDN0MsTUFBTSxFQUNKLFdBQVcsRUFBRSxlQUFlLEVBQzVCLFNBQVMsRUFBRSxhQUFhLEdBQUcsRUFBRSxFQUM5QixHQUFHLFNBQVMsRUFDUCxJQUFJLEdBQUcscUZBQXdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRTVELE1BQU0sRUFDSixXQUFXLEVBQUUsZUFBZSxFQUM1QixTQUFTLEVBQUUsYUFBYSxHQUFHLEVBQUUsRUFDOUIsR0FBRyxTQUFTLEVBQ1AsSUFBSSxHQUFHLHFGQUF3QixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUdwRixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXJELElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLE1BQU0sRUFBRTtRQUN6RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRztRQUMzRCxJQUFJLEdBQUcsS0FBSyxlQUFlLEVBQUU7WUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHOztnQkFDbEMsSUFBSSxHQUFHLEtBQUssUUFBUSxLQUFJLG1CQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsYUFBYSwwQ0FBRSxNQUFNLE1BQUksbUJBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxhQUFhLDBDQUFFLE1BQU0sR0FBRTtvQkFDcEcsT0FBTyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO2lCQUNoSDtnQkFFRCxPQUFPLG9CQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsYUFBYSwwQ0FBRyxHQUFHLENBQUMsT0FBSyxtQkFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLGFBQWEsMENBQUcsR0FBRyxDQUFDLEVBQUM7WUFDckYsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsT0FBTyxlQUFlLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHO1FBQzNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxrREFBVSxDQUFDLFVBQVUsS0FBSyxFQUFFLEdBQUc7SUFDbkUsT0FBTyxhQUFhLHdEQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUMvRSxhQUFhLEVBQUUsR0FBRztLQUNuQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ0gsOEVBQTRCLGlEQUFVLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEVBQUM7QUFDNkI7QUFDNUM7QUFDMkI7QUFDa0g7QUFDdEk7QUFDTjtBQUNvQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2luZGV4LnRzeD9jZTc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImluaXRpYWxEYXRhXCIsIFwiVUlPcHRpb25zXCJdLFxuICAgICAgX2V4Y2x1ZGVkMiA9IFtcImluaXRpYWxEYXRhXCIsIFwiVUlPcHRpb25zXCJdO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBcIi4vcHVibGljUGF0aFwiO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZUFwcCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL0luaXRpYWxpemVBcHBcIjtcbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgXCIuLi8uLi9jc3MvYXBwLnNjc3NcIjtcbmltcG9ydCBcIi4uLy4uL2Nzcy9zdHlsZXMuc2Nzc1wiO1xuaW1wb3J0IHsgZGVmYXVsdExhbmcgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuaW1wb3J0IHsgREVGQVVMVF9VSV9PUFRJT05TIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcblxuY29uc3QgRXhjYWxpZHJhdyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICBjb25zdCB7XG4gICAgb25DaGFuZ2UsXG4gICAgaW5pdGlhbERhdGEsXG4gICAgZXhjYWxpZHJhd1JlZixcbiAgICBvbkNvbGxhYkJ1dHRvbkNsaWNrLFxuICAgIGlzQ29sbGFib3JhdGluZyxcbiAgICBvblBvaW50ZXJVcGRhdGUsXG4gICAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgICByZW5kZXJGb290ZXIsXG4gICAgbGFuZ0NvZGUgPSBkZWZhdWx0TGFuZy5jb2RlLFxuICAgIHZpZXdNb2RlRW5hYmxlZCxcbiAgICB6ZW5Nb2RlRW5hYmxlZCxcbiAgICBncmlkTW9kZUVuYWJsZWQsXG4gICAgbGlicmFyeVJldHVyblVybCxcbiAgICB0aGVtZSxcbiAgICBuYW1lLFxuICAgIHJlbmRlckN1c3RvbVN0YXRzLFxuICAgIG9uUGFzdGUsXG4gICAgb25Ecm9wLFxuICAgIGRldGVjdFNjcm9sbCA9IHRydWUsXG4gICAgaGFuZGxlS2V5Ym9hcmRHbG9iYWxseSA9IGZhbHNlLFxuICAgIG9uTGlicmFyeUNoYW5nZSxcbiAgICBhdXRvRm9jdXMgPSBmYWxzZSxcbiAgICBvbkJlZm9yZVRleHRFZGl0LFxuICAgIG9uQmVmb3JlVGV4dFN1Ym1pdCxcbiAgICBnZW5lcmF0ZUlkRm9yRmlsZSxcbiAgICBvblRoZW1lQ2hhbmdlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgY2FudmFzQWN0aW9ucyA9IHByb3BzLlVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucztcbiAgY29uc3QgVUlPcHRpb25zID0ge1xuICAgIGNhbnZhc0FjdGlvbnM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgREVGQVVMVF9VSV9PUFRJT05TLmNhbnZhc0FjdGlvbnMpLCBjYW52YXNBY3Rpb25zKVxuICB9O1xuXG4gIGlmIChjYW52YXNBY3Rpb25zPy5leHBvcnQpIHtcbiAgICBVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2sgPSBjYW52YXNBY3Rpb25zLmV4cG9ydD8uc2F2ZUZpbGVUb0Rpc2sgPz8gREVGQVVMVF9VSV9PUFRJT05TLmNhbnZhc0FjdGlvbnMuZXhwb3J0LnNhdmVGaWxlVG9EaXNrO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAvLyBCbG9jayBwaW5jaC16b29taW5nIG9uIGlPUyBvdXRzaWRlIG9mIHRoZSBjb250ZW50IGFyZWFcbiAgICBjb25zdCBoYW5kbGVUb3VjaE1vdmUgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICh0eXBlb2YgZXZlbnQuc2NhbGUgPT09IFwibnVtYmVyXCIgJiYgZXZlbnQuc2NhbGUgIT09IDEpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBoYW5kbGVUb3VjaE1vdmUsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgaGFuZGxlVG91Y2hNb3ZlKTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChJbml0aWFsaXplQXBwLCB7XG4gICAgbGFuZ0NvZGU6IGxhbmdDb2RlLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChBcHAsIHtcbiAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICAgIGluaXRpYWxEYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgIGV4Y2FsaWRyYXdSZWY6IGV4Y2FsaWRyYXdSZWYsXG4gICAgICBvbkNvbGxhYkJ1dHRvbkNsaWNrOiBvbkNvbGxhYkJ1dHRvbkNsaWNrLFxuICAgICAgaXNDb2xsYWJvcmF0aW5nOiBpc0NvbGxhYm9yYXRpbmcsXG4gICAgICBvblBvaW50ZXJVcGRhdGU6IG9uUG9pbnRlclVwZGF0ZSxcbiAgICAgIHJlbmRlclRvcFJpZ2h0VUk6IHJlbmRlclRvcFJpZ2h0VUksXG4gICAgICByZW5kZXJGb290ZXI6IHJlbmRlckZvb3RlcixcbiAgICAgIGxhbmdDb2RlOiBsYW5nQ29kZSxcbiAgICAgIHZpZXdNb2RlRW5hYmxlZDogdmlld01vZGVFbmFibGVkLFxuICAgICAgemVuTW9kZUVuYWJsZWQ6IHplbk1vZGVFbmFibGVkLFxuICAgICAgZ3JpZE1vZGVFbmFibGVkOiBncmlkTW9kZUVuYWJsZWQsXG4gICAgICBsaWJyYXJ5UmV0dXJuVXJsOiBsaWJyYXJ5UmV0dXJuVXJsLFxuICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHJlbmRlckN1c3RvbVN0YXRzOiByZW5kZXJDdXN0b21TdGF0cyxcbiAgICAgIFVJT3B0aW9uczogVUlPcHRpb25zLFxuICAgICAgb25QYXN0ZTogb25QYXN0ZSxcbiAgICAgIG9uRHJvcDogb25Ecm9wLFxuICAgICAgZGV0ZWN0U2Nyb2xsOiBkZXRlY3RTY3JvbGwsXG4gICAgICBoYW5kbGVLZXlib2FyZEdsb2JhbGx5OiBoYW5kbGVLZXlib2FyZEdsb2JhbGx5LFxuICAgICAgb25MaWJyYXJ5Q2hhbmdlOiBvbkxpYnJhcnlDaGFuZ2UsXG4gICAgICBhdXRvRm9jdXM6IGF1dG9Gb2N1cyxcbiAgICAgIG9uQmVmb3JlVGV4dEVkaXQ6IG9uQmVmb3JlVGV4dEVkaXQsXG4gICAgICBvbkJlZm9yZVRleHRTdWJtaXQ6IG9uQmVmb3JlVGV4dFN1Ym1pdCxcbiAgICAgIGdlbmVyYXRlSWRGb3JGaWxlOiBnZW5lcmF0ZUlkRm9yRmlsZSxcbiAgICAgIG9uVGhlbWVDaGFuZ2U6IG9uVGhlbWVDaGFuZ2VcbiAgICB9KVxuICB9KTtcbn07XG5cbmNvbnN0IGFyZUVxdWFsID0gZnVuY3Rpb24gKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBpbml0aWFsRGF0YTogcHJldkluaXRpYWxEYXRhLFxuICAgIFVJT3B0aW9uczogcHJldlVJT3B0aW9ucyA9IHt9XG4gIH0gPSBwcmV2UHJvcHMsXG4gICAgICAgIHByZXYgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJldlByb3BzLCBfZXhjbHVkZWQpO1xuXG4gIGNvbnN0IHtcbiAgICBpbml0aWFsRGF0YTogbmV4dEluaXRpYWxEYXRhLFxuICAgIFVJT3B0aW9uczogbmV4dFVJT3B0aW9ucyA9IHt9XG4gIH0gPSBuZXh0UHJvcHMsXG4gICAgICAgIG5leHQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMobmV4dFByb3BzLCBfZXhjbHVkZWQyKTsgLy8gY29tcGFyaW5nIFVJT3B0aW9uc1xuXG5cbiAgY29uc3QgcHJldlVJT3B0aW9uc0tleXMgPSBPYmplY3Qua2V5cyhwcmV2VUlPcHRpb25zKTtcbiAgY29uc3QgbmV4dFVJT3B0aW9uc0tleXMgPSBPYmplY3Qua2V5cyhuZXh0VUlPcHRpb25zKTtcblxuICBpZiAocHJldlVJT3B0aW9uc0tleXMubGVuZ3RoICE9PSBuZXh0VUlPcHRpb25zS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpc1VJT3B0aW9uc1NhbWUgPSBwcmV2VUlPcHRpb25zS2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGtleSA9PT0gXCJjYW52YXNBY3Rpb25zXCIpIHtcbiAgICAgIGNvbnN0IGNhbnZhc09wdGlvbktleXMgPSBPYmplY3Qua2V5cyhwcmV2VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMpO1xuICAgICAgY2FudmFzT3B0aW9uS2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT09IFwiZXhwb3J0XCIgJiYgcHJldlVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucz8uZXhwb3J0ICYmIG5leHRVSU9wdGlvbnM/LmNhbnZhc0FjdGlvbnM/LmV4cG9ydCkge1xuICAgICAgICAgIHJldHVybiBwcmV2VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0LnNhdmVGaWxlVG9EaXNrID09PSBuZXh0VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0LnNhdmVGaWxlVG9EaXNrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByZXZVSU9wdGlvbnM/LmNhbnZhc0FjdGlvbnM/LltrZXldID09PSBuZXh0VUlPcHRpb25zPy5jYW52YXNBY3Rpb25zPy5ba2V5XTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcHJldktleXMgPSBPYmplY3Qua2V5cyhwcmV2UHJvcHMpO1xuICBjb25zdCBuZXh0S2V5cyA9IE9iamVjdC5rZXlzKG5leHRQcm9wcyk7XG4gIHJldHVybiBpc1VJT3B0aW9uc1NhbWUgJiYgcHJldktleXMubGVuZ3RoID09PSBuZXh0S2V5cy5sZW5ndGggJiYgcHJldktleXMuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBwcmV2W2tleV0gPT09IG5leHRba2V5XTtcbiAgfSk7XG59O1xuXG5jb25zdCBmb3J3YXJkZWRSZWZDb21wID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEV4Y2FsaWRyYXcsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIGV4Y2FsaWRyYXdSZWY6IHJlZlxuICB9KSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi9SZWFjdC5tZW1vKGZvcndhcmRlZFJlZkNvbXAsIGFyZUVxdWFsKTtcbmV4cG9ydCB7IGdldFNjZW5lVmVyc2lvbiwgaXNJbnZpc2libHlTbWFsbEVsZW1lbnQsIGdldE5vbkRlbGV0ZWRFbGVtZW50cyB9IGZyb20gXCIuLi8uLi9lbGVtZW50XCI7XG5leHBvcnQgeyBkZWZhdWx0TGFuZywgbGFuZ3VhZ2VzIH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmV4cG9ydCB7IHJlc3RvcmUsIHJlc3RvcmVBcHBTdGF0ZSwgcmVzdG9yZUVsZW1lbnRzIH0gZnJvbSBcIi4uLy4uL2RhdGEvcmVzdG9yZVwiO1xuZXhwb3J0IHsgZXhwb3J0VG9DYW52YXMsIGV4cG9ydFRvQmxvYiwgZXhwb3J0VG9TdmcsIHNlcmlhbGl6ZUFzSlNPTiwgbG9hZExpYnJhcnlGcm9tQmxvYiwgbG9hZEZyb21CbG9iLCBnZXRGcmVlRHJhd1N2Z1BhdGgsIGdldENvbW1vbkJvdW5kaW5nQm94LCBnZXRNYXhpbXVtR3JvdXBzIH0gZnJvbSBcIi4uLy4uL3BhY2thZ2VzL3V0aWxzXCI7XG5leHBvcnQgeyBpc0xpbmVhckVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5leHBvcnQgeyBGT05UX0ZBTUlMWSwgVEhFTUUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgeyBtdXRhdGVFbGVtZW50LCBuZXdFbGVtZW50V2l0aCwgYnVtcFZlcnNpb24gfSBmcm9tIFwiLi4vLi4vZWxlbWVudC9tdXRhdGVFbGVtZW50XCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///./index.tsx\\n\");\n\n//# sourceURL=webpack://Excalidraw/./index.tsx?");
|
|
2846
|
+
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.isInvisiblySmallElement),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getNonDeletedElements),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.languages),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreElements),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.serializeAsJSON),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadLibraryFromBlob),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getCommonBoundingBox),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getMaximumGroups),\\n/* harmony export */ \\\"intersectElementWithLine\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.intersectElementWithLine),\\n/* harmony export */ \\\"determineFocusDistance\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.determineFocusDistance),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__.isLinearElement),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.THEME),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.newElementWith),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.bumpVersion)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \\\"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"./node_modules/@babel/runtime/helpers/defineProperty.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _publicPath__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./publicPath */ \\\"./publicPath.js\\\");\\n/* harmony import */ var _components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/InitializeApp */ \\\"../../components/InitializeApp.tsx\\\");\\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/app.scss */ \\\"../../css/app.scss\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_css_app_scss__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../css/styles.scss */ \\\"../../css/styles.scss\\\");\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_css_styles_scss__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../packages/utils */ \\\"../utils.ts\\\");\\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../element/mutateElement */ \\\"../../element/mutateElement.ts\\\");\\n\\r\\n\\r\\nconst _excluded = [\\\"initialData\\\", \\\"UIOptions\\\"], _excluded2 = [\\\"initialData\\\", \\\"UIOptions\\\"];\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst Excalidraw = function (props) {\\r\\n var _a, _b, _c;\\r\\n const { onChange, initialData, excalidrawRef, onCollabButtonClick, isCollaborating, onPointerUpdate, renderTopRightUI, renderFooter, langCode = _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang.code, viewModeEnabled, zenModeEnabled, gridModeEnabled, libraryReturnUrl, theme, name, renderCustomStats, onPaste, onDrop, detectScroll = true, handleKeyboardGlobally = false, onLibraryChange, autoFocus = false, onBeforeTextEdit, onBeforeTextSubmit, generateIdForFile, onThemeChange } = props;\\r\\n const canvasActions = (_a = props.UIOptions) === null || _a === void 0 ? void 0 : _a.canvasActions;\\r\\n const UIOptions = {\\r\\n canvasActions: _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions), canvasActions)\\r\\n };\\r\\n if (canvasActions === null || canvasActions === void 0 ? void 0 : canvasActions.export) {\\r\\n UIOptions.canvasActions.export.saveFileToDisk = (_c = (_b = canvasActions.export) === null || _b === void 0 ? void 0 : _b.saveFileToDisk) !== null && _c !== void 0 ? _c : _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions[\\\"export\\\"].saveFileToDisk;\\r\\n }\\r\\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\\r\\n // Block pinch-zooming on iOS outside of the content area\\r\\n const handleTouchMove = function (event) {\\r\\n // @ts-ignore\\r\\n if (typeof event.scale === \\\"number\\\" && event.scale !== 1) {\\r\\n event.preventDefault();\\r\\n }\\r\\n };\\r\\n document.addEventListener(\\\"touchmove\\\", handleTouchMove, {\\r\\n passive: false\\r\\n });\\r\\n return function () {\\r\\n document.removeEventListener(\\\"touchmove\\\", handleTouchMove);\\r\\n };\\r\\n }, []);\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__.InitializeApp, {\\r\\n langCode: langCode,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"], {\\r\\n onChange: onChange,\\r\\n initialData: initialData,\\r\\n excalidrawRef: excalidrawRef,\\r\\n onCollabButtonClick: onCollabButtonClick,\\r\\n isCollaborating: isCollaborating,\\r\\n onPointerUpdate: onPointerUpdate,\\r\\n renderTopRightUI: renderTopRightUI,\\r\\n renderFooter: renderFooter,\\r\\n langCode: langCode,\\r\\n viewModeEnabled: viewModeEnabled,\\r\\n zenModeEnabled: zenModeEnabled,\\r\\n gridModeEnabled: gridModeEnabled,\\r\\n libraryReturnUrl: libraryReturnUrl,\\r\\n theme: theme,\\r\\n name: name,\\r\\n renderCustomStats: renderCustomStats,\\r\\n UIOptions: UIOptions,\\r\\n onPaste: onPaste,\\r\\n onDrop: onDrop,\\r\\n detectScroll: detectScroll,\\r\\n handleKeyboardGlobally: handleKeyboardGlobally,\\r\\n onLibraryChange: onLibraryChange,\\r\\n autoFocus: autoFocus,\\r\\n onBeforeTextEdit: onBeforeTextEdit,\\r\\n onBeforeTextSubmit: onBeforeTextSubmit,\\r\\n generateIdForFile: generateIdForFile,\\r\\n onThemeChange: onThemeChange\\r\\n })\\r\\n });\\r\\n};\\r\\nconst areEqual = function (prevProps, nextProps) {\\r\\n const { initialData: prevInitialData, UIOptions: prevUIOptions = {} } = prevProps, prev = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(prevProps, _excluded);\\r\\n const { initialData: nextInitialData, UIOptions: nextUIOptions = {} } = nextProps, next = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(nextProps, _excluded2); // comparing UIOptions\\r\\n const prevUIOptionsKeys = Object.keys(prevUIOptions);\\r\\n const nextUIOptionsKeys = Object.keys(nextUIOptions);\\r\\n if (prevUIOptionsKeys.length !== nextUIOptionsKeys.length) {\\r\\n return false;\\r\\n }\\r\\n const isUIOptionsSame = prevUIOptionsKeys.every(function (key) {\\r\\n if (key === \\\"canvasActions\\\") {\\r\\n const canvasOptionKeys = Object.keys(prevUIOptions.canvasActions);\\r\\n canvasOptionKeys.every(function (key) {\\r\\n var _a, _b, _c, _d;\\r\\n if (key === \\\"export\\\" && ((_a = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _a === void 0 ? void 0 : _a.export) && ((_b = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _b === void 0 ? void 0 : _b.export)) {\\r\\n return prevUIOptions.canvasActions.export.saveFileToDisk === nextUIOptions.canvasActions.export.saveFileToDisk;\\r\\n }\\r\\n return ((_c = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _c === void 0 ? void 0 : _c[key]) === ((_d = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _d === void 0 ? void 0 : _d[key]);\\r\\n });\\r\\n }\\r\\n return true;\\r\\n });\\r\\n const prevKeys = Object.keys(prevProps);\\r\\n const nextKeys = Object.keys(nextProps);\\r\\n return isUIOptionsSame && prevKeys.length === nextKeys.length && prevKeys.every(function (key) {\\r\\n return prev[key] === next[key];\\r\\n });\\r\\n};\\r\\nconst forwardedRefComp = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(function (props, ref) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(Excalidraw, _objectSpread(_objectSpread({}, props), {}, {\\r\\n excalidrawRef: ref\\r\\n }));\\r\\n});\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().memo(forwardedRefComp, areEqual));\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QztJQUN4QyxPQUFPLGVBQWUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUc7UUFDM0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLGtEQUFVLENBQUMsVUFBVSxLQUFLLEVBQUUsR0FBRztJQUNuRSxPQUFPLGFBQWEsd0RBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQy9FLGFBQWEsRUFBRSxHQUFHO0tBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUM7QUFDSCw4RUFBNEIsaURBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBQztBQUM2QjtBQUM1QztBQUMyQjtBQUNvSztBQUN4TDtBQUNOO0FBQ29DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW5kZXgudHN4P2NlNzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiaW5pdGlhbERhdGFcIiwgXCJVSU9wdGlvbnNcIl0sXG4gICAgICBfZXhjbHVkZWQyID0gW1wiaW5pdGlhbERhdGFcIiwgXCJVSU9wdGlvbnNcIl07XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHsgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyB9IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9wdWJsaWNQYXRoXCI7XG5pbXBvcnQgeyBJbml0aWFsaXplQXBwIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvSW5pdGlhbGl6ZUFwcFwiO1xuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9BcHBcIjtcbmltcG9ydCBcIi4uLy4uL2Nzcy9hcHAuc2Nzc1wiO1xuaW1wb3J0IFwiLi4vLi4vY3NzL3N0eWxlcy5zY3NzXCI7XG5pbXBvcnQgeyBkZWZhdWx0TGFuZyB9IGZyb20gXCIuLi8uLi9pMThuXCI7XG5pbXBvcnQgeyBERUZBVUxUX1VJX09QVElPTlMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuXG5jb25zdCBFeGNhbGlkcmF3ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBvbkNoYW5nZSxcbiAgICBpbml0aWFsRGF0YSxcbiAgICBleGNhbGlkcmF3UmVmLFxuICAgIG9uQ29sbGFiQnV0dG9uQ2xpY2ssXG4gICAgaXNDb2xsYWJvcmF0aW5nLFxuICAgIG9uUG9pbnRlclVwZGF0ZSxcbiAgICByZW5kZXJUb3BSaWdodFVJLFxuICAgIHJlbmRlckZvb3RlcixcbiAgICBsYW5nQ29kZSA9IGRlZmF1bHRMYW5nLmNvZGUsXG4gICAgdmlld01vZGVFbmFibGVkLFxuICAgIHplbk1vZGVFbmFibGVkLFxuICAgIGdyaWRNb2RlRW5hYmxlZCxcbiAgICBsaWJyYXJ5UmV0dXJuVXJsLFxuICAgIHRoZW1lLFxuICAgIG5hbWUsXG4gICAgcmVuZGVyQ3VzdG9tU3RhdHMsXG4gICAgb25QYXN0ZSxcbiAgICBvbkRyb3AsXG4gICAgZGV0ZWN0U2Nyb2xsID0gdHJ1ZSxcbiAgICBoYW5kbGVLZXlib2FyZEdsb2JhbGx5ID0gZmFsc2UsXG4gICAgb25MaWJyYXJ5Q2hhbmdlLFxuICAgIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICAgIG9uQmVmb3JlVGV4dEVkaXQsXG4gICAgb25CZWZvcmVUZXh0U3VibWl0LFxuICAgIGdlbmVyYXRlSWRGb3JGaWxlLFxuICAgIG9uVGhlbWVDaGFuZ2VcbiAgfSA9IHByb3BzO1xuICBjb25zdCBjYW52YXNBY3Rpb25zID0gcHJvcHMuVUlPcHRpb25zPy5jYW52YXNBY3Rpb25zO1xuICBjb25zdCBVSU9wdGlvbnMgPSB7XG4gICAgY2FudmFzQWN0aW9uczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBERUZBVUxUX1VJX09QVElPTlMuY2FudmFzQWN0aW9ucyksIGNhbnZhc0FjdGlvbnMpXG4gIH07XG5cbiAgaWYgKGNhbnZhc0FjdGlvbnM/LmV4cG9ydCkge1xuICAgIFVJT3B0aW9ucy5jYW52YXNBY3Rpb25zLmV4cG9ydC5zYXZlRmlsZVRvRGlzayA9IGNhbnZhc0FjdGlvbnMuZXhwb3J0Py5zYXZlRmlsZVRvRGlzayA/PyBERUZBVUxUX1VJX09QVElPTlMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2s7XG4gIH1cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIC8vIEJsb2NrIHBpbmNoLXpvb21pbmcgb24gaU9TIG91dHNpZGUgb2YgdGhlIGNvbnRlbnQgYXJlYVxuICAgIGNvbnN0IGhhbmRsZVRvdWNoTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHR5cGVvZiBldmVudC5zY2FsZSA9PT0gXCJudW1iZXJcIiAmJiBldmVudC5zY2FsZSAhPT0gMSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIGhhbmRsZVRvdWNoTW92ZSwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBoYW5kbGVUb3VjaE1vdmUpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEluaXRpYWxpemVBcHAsIHtcbiAgICBsYW5nQ29kZTogbGFuZ0NvZGUsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEFwcCwge1xuICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgICAgaW5pdGlhbERhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgZXhjYWxpZHJhd1JlZjogZXhjYWxpZHJhd1JlZixcbiAgICAgIG9uQ29sbGFiQnV0dG9uQ2xpY2s6IG9uQ29sbGFiQnV0dG9uQ2xpY2ssXG4gICAgICBpc0NvbGxhYm9yYXRpbmc6IGlzQ29sbGFib3JhdGluZyxcbiAgICAgIG9uUG9pbnRlclVwZGF0ZTogb25Qb2ludGVyVXBkYXRlLFxuICAgICAgcmVuZGVyVG9wUmlnaHRVSTogcmVuZGVyVG9wUmlnaHRVSSxcbiAgICAgIHJlbmRlckZvb3RlcjogcmVuZGVyRm9vdGVyLFxuICAgICAgbGFuZ0NvZGU6IGxhbmdDb2RlLFxuICAgICAgdmlld01vZGVFbmFibGVkOiB2aWV3TW9kZUVuYWJsZWQsXG4gICAgICB6ZW5Nb2RlRW5hYmxlZDogemVuTW9kZUVuYWJsZWQsXG4gICAgICBncmlkTW9kZUVuYWJsZWQ6IGdyaWRNb2RlRW5hYmxlZCxcbiAgICAgIGxpYnJhcnlSZXR1cm5Vcmw6IGxpYnJhcnlSZXR1cm5VcmwsXG4gICAgICB0aGVtZTogdGhlbWUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgcmVuZGVyQ3VzdG9tU3RhdHM6IHJlbmRlckN1c3RvbVN0YXRzLFxuICAgICAgVUlPcHRpb25zOiBVSU9wdGlvbnMsXG4gICAgICBvblBhc3RlOiBvblBhc3RlLFxuICAgICAgb25Ecm9wOiBvbkRyb3AsXG4gICAgICBkZXRlY3RTY3JvbGw6IGRldGVjdFNjcm9sbCxcbiAgICAgIGhhbmRsZUtleWJvYXJkR2xvYmFsbHk6IGhhbmRsZUtleWJvYXJkR2xvYmFsbHksXG4gICAgICBvbkxpYnJhcnlDaGFuZ2U6IG9uTGlicmFyeUNoYW5nZSxcbiAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgb25CZWZvcmVUZXh0RWRpdDogb25CZWZvcmVUZXh0RWRpdCxcbiAgICAgIG9uQmVmb3JlVGV4dFN1Ym1pdDogb25CZWZvcmVUZXh0U3VibWl0LFxuICAgICAgZ2VuZXJhdGVJZEZvckZpbGU6IGdlbmVyYXRlSWRGb3JGaWxlLFxuICAgICAgb25UaGVtZUNoYW5nZTogb25UaGVtZUNoYW5nZVxuICAgIH0pXG4gIH0pO1xufTtcblxuY29uc3QgYXJlRXF1YWwgPSBmdW5jdGlvbiAocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGluaXRpYWxEYXRhOiBwcmV2SW5pdGlhbERhdGEsXG4gICAgVUlPcHRpb25zOiBwcmV2VUlPcHRpb25zID0ge31cbiAgfSA9IHByZXZQcm9wcyxcbiAgICAgICAgcHJldiA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcmV2UHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgY29uc3Qge1xuICAgIGluaXRpYWxEYXRhOiBuZXh0SW5pdGlhbERhdGEsXG4gICAgVUlPcHRpb25zOiBuZXh0VUlPcHRpb25zID0ge31cbiAgfSA9IG5leHRQcm9wcyxcbiAgICAgICAgbmV4dCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhuZXh0UHJvcHMsIF9leGNsdWRlZDIpOyAvLyBjb21wYXJpbmcgVUlPcHRpb25zXG5cblxuICBjb25zdCBwcmV2VUlPcHRpb25zS2V5cyA9IE9iamVjdC5rZXlzKHByZXZVSU9wdGlvbnMpO1xuICBjb25zdCBuZXh0VUlPcHRpb25zS2V5cyA9IE9iamVjdC5rZXlzKG5leHRVSU9wdGlvbnMpO1xuXG4gIGlmIChwcmV2VUlPcHRpb25zS2V5cy5sZW5ndGggIT09IG5leHRVSU9wdGlvbnNLZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlzVUlPcHRpb25zU2FtZSA9IHByZXZVSU9wdGlvbnNLZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoa2V5ID09PSBcImNhbnZhc0FjdGlvbnNcIikge1xuICAgICAgY29uc3QgY2FudmFzT3B0aW9uS2V5cyA9IE9iamVjdC5rZXlzKHByZXZVSU9wdGlvbnMuY2FudmFzQWN0aW9ucyk7XG4gICAgICBjYW52YXNPcHRpb25LZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gXCJleHBvcnRcIiAmJiBwcmV2VUlPcHRpb25zPy5jYW52YXNBY3Rpb25zPy5leHBvcnQgJiYgbmV4dFVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucz8uZXhwb3J0KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2sgPT09IG5leHRVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2s7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJldlVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucz8uW2tleV0gPT09IG5leHRVSU9wdGlvbnM/LmNhbnZhc0FjdGlvbnM/LltrZXldO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuICBjb25zdCBwcmV2S2V5cyA9IE9iamVjdC5rZXlzKHByZXZQcm9wcyk7XG4gIGNvbnN0IG5leHRLZXlzID0gT2JqZWN0LmtleXMobmV4dFByb3BzKTtcbiAgcmV0dXJuIGlzVUlPcHRpb25zU2FtZSAmJiBwcmV2S2V5cy5sZW5ndGggPT09IG5leHRLZXlzLmxlbmd0aCAmJiBwcmV2S2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHByZXZba2V5XSA9PT0gbmV4dFtrZXldO1xuICB9KTtcbn07XG5cbmNvbnN0IGZvcndhcmRlZFJlZkNvbXAgPSAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRXhjYWxpZHJhdywgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgZXhjYWxpZHJhd1JlZjogcmVmXG4gIH0pKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oZm9yd2FyZGVkUmVmQ29tcCwgYXJlRXF1YWwpO1xuZXhwb3J0IHsgZ2V0U2NlbmVWZXJzaW9uLCBpc0ludmlzaWJseVNtYWxsRWxlbWVudCwgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHRMYW5nLCBsYW5ndWFnZXMgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuZXhwb3J0IHsgcmVzdG9yZSwgcmVzdG9yZUFwcFN0YXRlLCByZXN0b3JlRWxlbWVudHMgfSBmcm9tIFwiLi4vLi4vZGF0YS9yZXN0b3JlXCI7XG5leHBvcnQgeyBleHBvcnRUb0NhbnZhcywgZXhwb3J0VG9CbG9iLCBleHBvcnRUb1N2Zywgc2VyaWFsaXplQXNKU09OLCBsb2FkTGlicmFyeUZyb21CbG9iLCBsb2FkRnJvbUJsb2IsIGdldEZyZWVEcmF3U3ZnUGF0aCwgZ2V0Q29tbW9uQm91bmRpbmdCb3gsIGdldE1heGltdW1Hcm91cHMsIGludGVyc2VjdEVsZW1lbnRXaXRoTGluZSwgZGV0ZXJtaW5lRm9jdXNEaXN0YW5jZSB9IGZyb20gXCIuLi8uLi9wYWNrYWdlcy91dGlsc1wiO1xuZXhwb3J0IHsgaXNMaW5lYXJFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2VsZW1lbnQvdHlwZUNoZWNrc1wiO1xuZXhwb3J0IHsgRk9OVF9GQU1JTFksIFRIRU1FIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuZXhwb3J0IHsgbXV0YXRlRWxlbWVudCwgbmV3RWxlbWVudFdpdGgsIGJ1bXBWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnQvbXV0YXRlRWxlbWVudFwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///./index.tsx\\n\");\n\n//# sourceURL=webpack://Excalidraw/./index.tsx?");
|
|
2847
2847
|
|
|
2848
2848
|
/***/ }),
|
|
2849
2849
|
|
|
@@ -2865,7 +2865,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */
|
|
|
2865
2865
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2866
2866
|
|
|
2867
2867
|
"use strict";
|
|
2868
|
-
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* binding */ exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_7__.serializeAsJSON),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadLibraryFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_10__.getCommonBoundingBox),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_11__.getMaximumGroups)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \\\"../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/export */ \\\"../../scene/export.ts\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/blob */ \\\"../../data/blob.ts\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../align */ \\\"../../align.ts\\\");\\n\\r\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst exportToCanvas = function (_ref) {\\r\\n let { elements, appState, files, maxWidthOrHeight, getDimensions } = _ref;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n const { exportBackground, viewBackgroundColor } = restoredAppState;\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToCanvas)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n offsetTop: 0,\\r\\n offsetLeft: 0,\\r\\n width: 0,\\r\\n height: 0\\r\\n }), files || {}, {\\r\\n exportBackground,\\r\\n viewBackgroundColor\\r\\n }, function (width, height) {\\r\\n var _a;\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n if (maxWidthOrHeight) {\\r\\n if (typeof getDimensions === \\\"function\\\") {\\r\\n console.warn(\\\"`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.\\\");\\r\\n }\\r\\n const max = Math.max(width, height);\\r\\n const scale = maxWidthOrHeight / max;\\r\\n canvas.width = width * scale;\\r\\n canvas.height = height * scale;\\r\\n return {\\r\\n canvas,\\r\\n scale\\r\\n };\\r\\n }\\r\\n const ret = (getDimensions === null || getDimensions === void 0 ? void 0 : getDimensions(width, height)) || {\\r\\n width,\\r\\n height\\r\\n };\\r\\n canvas.width = ret.width;\\r\\n canvas.height = ret.height;\\r\\n return {\\r\\n canvas,\\r\\n scale: (_a = ret.scale) !== null && _a !== void 0 ? _a : 1\\r\\n };\\r\\n });\\r\\n};\\r\\nconst exportToBlob = /*#__PURE__*/ function () {\\r\\n var _ref2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (opts) {\\r\\n var _a;\\r\\n let { mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png, quality } = opts;\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png && typeof quality === \\\"number\\\") {\\r\\n console.warn(`\\\"quality\\\" will be ignored for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png}\\\" mimeType`);\\r\\n } // typo in MIME type (should be \\\"jpeg\\\")\\r\\n if (mimeType === \\\"image/jpg\\\") {\\r\\n mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg;\\r\\n }\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg && !((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportBackground)) {\\r\\n console.warn(`Defaulting \\\"exportBackground\\\" to \\\"true\\\" for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg}\\\" mimeType`);\\r\\n opts = _objectSpread(_objectSpread({}, opts), {}, {\\r\\n appState: _objectSpread(_objectSpread({}, opts.appState), {}, {\\r\\n exportBackground: true\\r\\n })\\r\\n });\\r\\n }\\r\\n const canvas = yield exportToCanvas(opts);\\r\\n quality = quality ? quality : /image\\\\/jpe?g/.test(mimeType) ? 0.92 : 0.8;\\r\\n return new Promise(function (resolve) {\\r\\n canvas.toBlob(function (blob) {\\r\\n resolve(blob);\\r\\n }, mimeType, quality);\\r\\n });\\r\\n });\\r\\n return function exportToBlob(_x) {\\r\\n return _ref2.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\nconst exportToSvg = /*#__PURE__*/ function () {\\r\\n var _ref3 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (_ref4) {\\r\\n let { elements, appState = (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)(), files = {}, exportPadding } = _ref4;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToSvg)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n exportPadding\\r\\n }), files);\\r\\n });\\r\\n return function exportToSvg(_x2) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsWUFBWSxDQUFDLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7QUFDSixDQUFDLEVBQUUsQ0FBQztBQUNHLE1BQU0sV0FBVyxHQUFHLGFBQWE7SUFDdEMsSUFBSSxLQUFLLEdBQUcsbUZBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztRQUM1QyxJQUFJLEVBQ0YsUUFBUSxFQUNSLFFBQVEsR0FBRyw2REFBa0IsRUFBRSxFQUMvQixLQUFLLEdBQUcsRUFBRSxFQUNWLGFBQWEsRUFDZCxHQUFHLEtBQUssQ0FBQztRQUNWLE1BQU0sRUFDSixRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFFBQVEsRUFBRSxnQkFBZ0IsRUFDM0IsR0FBRyxzREFBTyxDQUFDO1lBQ1YsUUFBUTtZQUNSLFFBQVE7U0FDVCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNmLE9BQU8sMERBQVksQ0FBQywrREFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ2xILGFBQWE7U0FDZCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxXQUFXLENBQUMsR0FBRztRQUM3QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMsRUFBRSxDQUFDO0FBQzJDO0FBQ2tCO0FBQ0Y7QUFDTjtBQUNiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL3V0aWxzLnRzP2IxYjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgeyBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IH0ga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBleHBvcnRUb0NhbnZhcyBhcyBfZXhwb3J0VG9DYW52YXMsIGV4cG9ydFRvU3ZnIGFzIF9leHBvcnRUb1N2ZyB9IGZyb20gXCIuLi9zY2VuZS9leHBvcnRcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IHJlc3RvcmUgfSBmcm9tIFwiLi4vZGF0YS9yZXN0b3JlXCI7XG5pbXBvcnQgeyBNSU1FX1RZUEVTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICBhcHBTdGF0ZSxcbiAgICBmaWxlcyxcbiAgICBtYXhXaWR0aE9ySGVpZ2h0LFxuICAgIGdldERpbWVuc2lvbnNcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50czogcmVzdG9yZWRFbGVtZW50cyxcbiAgICBhcHBTdGF0ZTogcmVzdG9yZWRBcHBTdGF0ZVxuICB9ID0gcmVzdG9yZSh7XG4gICAgZWxlbWVudHMsXG4gICAgYXBwU3RhdGVcbiAgfSwgbnVsbCwgbnVsbCk7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgfSA9IHJlc3RvcmVkQXBwU3RhdGU7XG4gIHJldHVybiBfZXhwb3J0VG9DYW52YXMoZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKHJlc3RvcmVkRWxlbWVudHMpLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RvcmVkQXBwU3RhdGUpLCB7fSwge1xuICAgIG9mZnNldFRvcDogMCxcbiAgICBvZmZzZXRMZWZ0OiAwLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9KSwgZmlsZXMgfHwge30sIHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgfSwgZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuXG4gICAgaWYgKG1heFdpZHRoT3JIZWlnaHQpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2V0RGltZW5zaW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcImBnZXREaW1lbnNpb25zKClgIGlzIGlnbm9yZWQgd2hlbiBgbWF4V2lkdGhPckhlaWdodGAgaXMgc3VwcGxpZWQuXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXggPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGNvbnN0IHNjYWxlID0gbWF4V2lkdGhPckhlaWdodCAvIG1heDtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjYW52YXMsXG4gICAgICAgIHNjYWxlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IGdldERpbWVuc2lvbnM/Lih3aWR0aCwgaGVpZ2h0KSB8fCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH07XG4gICAgY2FudmFzLndpZHRoID0gcmV0LndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSByZXQuaGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICBjYW52YXMsXG4gICAgICBzY2FsZTogcmV0LnNjYWxlID8/IDFcbiAgICB9O1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgZXhwb3J0VG9CbG9iID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChvcHRzKSB7XG4gICAgbGV0IHtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFUy5wbmcsXG4gICAgICBxdWFsaXR5XG4gICAgfSA9IG9wdHM7XG5cbiAgICBpZiAobWltZVR5cGUgPT09IE1JTUVfVFlQRVMucG5nICYmIHR5cGVvZiBxdWFsaXR5ID09PSBcIm51bWJlclwiKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFwicXVhbGl0eVwiIHdpbGwgYmUgaWdub3JlZCBmb3IgXCIke01JTUVfVFlQRVMucG5nfVwiIG1pbWVUeXBlYCk7XG4gICAgfSAvLyB0eXBvIGluIE1JTUUgdHlwZSAoc2hvdWxkIGJlIFwianBlZ1wiKVxuXG5cbiAgICBpZiAobWltZVR5cGUgPT09IFwiaW1hZ2UvanBnXCIpIHtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFUy5qcGc7XG4gICAgfVxuXG4gICAgaWYgKG1pbWVUeXBlID09PSBNSU1FX1RZUEVTLmpwZyAmJiAhb3B0cy5hcHBTdGF0ZT8uZXhwb3J0QmFja2dyb3VuZCkge1xuICAgICAgY29uc29sZS53YXJuKGBEZWZhdWx0aW5nIFwiZXhwb3J0QmFja2dyb3VuZFwiIHRvIFwidHJ1ZVwiIGZvciBcIiR7TUlNRV9UWVBFUy5qcGd9XCIgbWltZVR5cGVgKTtcbiAgICAgIG9wdHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdHMpLCB7fSwge1xuICAgICAgICBhcHBTdGF0ZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvcHRzLmFwcFN0YXRlKSwge30sIHtcbiAgICAgICAgICBleHBvcnRCYWNrZ3JvdW5kOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW52YXMgPSB5aWVsZCBleHBvcnRUb0NhbnZhcyhvcHRzKTtcbiAgICBxdWFsaXR5ID0gcXVhbGl0eSA/IHF1YWxpdHkgOiAvaW1hZ2VcXC9qcGU/Zy8udGVzdChtaW1lVHlwZSkgPyAwLjkyIDogMC44O1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgY2FudmFzLnRvQmxvYihmdW5jdGlvbiAoYmxvYikge1xuICAgICAgICByZXNvbHZlKGJsb2IpO1xuICAgICAgfSwgbWltZVR5cGUsIHF1YWxpdHkpO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9CbG9iKF94KSB7XG4gICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9TdmcgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKF9yZWY0KSB7XG4gICAgbGV0IHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKSxcbiAgICAgIGZpbGVzID0ge30sXG4gICAgICBleHBvcnRQYWRkaW5nXG4gICAgfSA9IF9yZWY0O1xuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnRzOiByZXN0b3JlZEVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGU6IHJlc3RvcmVkQXBwU3RhdGVcbiAgICB9ID0gcmVzdG9yZSh7XG4gICAgICBlbGVtZW50cyxcbiAgICAgIGFwcFN0YXRlXG4gICAgfSwgbnVsbCwgbnVsbCk7XG4gICAgcmV0dXJuIF9leHBvcnRUb1N2ZyhnZXROb25EZWxldGVkRWxlbWVudHMocmVzdG9yZWRFbGVtZW50cyksIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdG9yZWRBcHBTdGF0ZSksIHt9LCB7XG4gICAgICBleHBvcnRQYWRkaW5nXG4gICAgfSksIGZpbGVzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGV4cG9ydFRvU3ZnKF94Mikge1xuICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuZXhwb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuZXhwb3J0IHsgbG9hZEZyb21CbG9iLCBsb2FkTGlicmFyeUZyb21CbG9iIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuZXhwb3J0IHsgZ2V0RnJlZURyYXdTdmdQYXRoIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlckVsZW1lbnRcIjtcbmV4cG9ydCB7IGdldENvbW1vbkJvdW5kaW5nQm94IH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5leHBvcnQgeyBnZXRNYXhpbXVtR3JvdXBzIH0gZnJvbSBcIi4uL2FsaWduXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../utils.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../utils.ts?");
|
|
2868
|
+
eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* binding */ exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_7__.serializeAsJSON),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadLibraryFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_10__.getCommonBoundingBox),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_11__.getMaximumGroups),\\n/* harmony export */ \\\"intersectElementWithLine\\\": () => (/* reexport safe */ _element_collision__WEBPACK_IMPORTED_MODULE_12__.intersectElementWithLine),\\n/* harmony export */ \\\"determineFocusDistance\\\": () => (/* reexport safe */ _element_collision__WEBPACK_IMPORTED_MODULE_12__.determineFocusDistance)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \\\"../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/export */ \\\"../../scene/export.ts\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/blob */ \\\"../../data/blob.ts\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../align */ \\\"../../align.ts\\\");\\n/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/collision */ \\\"../../element/collision.ts\\\");\\n\\r\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst exportToCanvas = function (_ref) {\\r\\n let { elements, appState, files, maxWidthOrHeight, getDimensions } = _ref;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n const { exportBackground, viewBackgroundColor } = restoredAppState;\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToCanvas)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n offsetTop: 0,\\r\\n offsetLeft: 0,\\r\\n width: 0,\\r\\n height: 0\\r\\n }), files || {}, {\\r\\n exportBackground,\\r\\n viewBackgroundColor\\r\\n }, function (width, height) {\\r\\n var _a;\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n if (maxWidthOrHeight) {\\r\\n if (typeof getDimensions === \\\"function\\\") {\\r\\n console.warn(\\\"`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.\\\");\\r\\n }\\r\\n const max = Math.max(width, height);\\r\\n const scale = maxWidthOrHeight / max;\\r\\n canvas.width = width * scale;\\r\\n canvas.height = height * scale;\\r\\n return {\\r\\n canvas,\\r\\n scale\\r\\n };\\r\\n }\\r\\n const ret = (getDimensions === null || getDimensions === void 0 ? void 0 : getDimensions(width, height)) || {\\r\\n width,\\r\\n height\\r\\n };\\r\\n canvas.width = ret.width;\\r\\n canvas.height = ret.height;\\r\\n return {\\r\\n canvas,\\r\\n scale: (_a = ret.scale) !== null && _a !== void 0 ? _a : 1\\r\\n };\\r\\n });\\r\\n};\\r\\nconst exportToBlob = /*#__PURE__*/ function () {\\r\\n var _ref2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (opts) {\\r\\n var _a;\\r\\n let { mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png, quality } = opts;\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png && typeof quality === \\\"number\\\") {\\r\\n console.warn(`\\\"quality\\\" will be ignored for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png}\\\" mimeType`);\\r\\n } // typo in MIME type (should be \\\"jpeg\\\")\\r\\n if (mimeType === \\\"image/jpg\\\") {\\r\\n mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg;\\r\\n }\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg && !((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportBackground)) {\\r\\n console.warn(`Defaulting \\\"exportBackground\\\" to \\\"true\\\" for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg}\\\" mimeType`);\\r\\n opts = _objectSpread(_objectSpread({}, opts), {}, {\\r\\n appState: _objectSpread(_objectSpread({}, opts.appState), {}, {\\r\\n exportBackground: true\\r\\n })\\r\\n });\\r\\n }\\r\\n const canvas = yield exportToCanvas(opts);\\r\\n quality = quality ? quality : /image\\\\/jpe?g/.test(mimeType) ? 0.92 : 0.8;\\r\\n return new Promise(function (resolve) {\\r\\n canvas.toBlob(function (blob) {\\r\\n resolve(blob);\\r\\n }, mimeType, quality);\\r\\n });\\r\\n });\\r\\n return function exportToBlob(_x) {\\r\\n return _ref2.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\nconst exportToSvg = /*#__PURE__*/ function () {\\r\\n var _ref3 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (_ref4) {\\r\\n let { elements, appState = (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)(), files = {}, exportPadding } = _ref4;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToSvg)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n exportPadding\\r\\n }), files);\\r\\n });\\r\\n return function exportToSvg(_x2) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsWUFBWSxDQUFDLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7QUFDSixDQUFDLEVBQUUsQ0FBQztBQUNHLE1BQU0sV0FBVyxHQUFHLGFBQWE7SUFDdEMsSUFBSSxLQUFLLEdBQUcsbUZBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztRQUM1QyxJQUFJLEVBQ0YsUUFBUSxFQUNSLFFBQVEsR0FBRyw2REFBa0IsRUFBRSxFQUMvQixLQUFLLEdBQUcsRUFBRSxFQUNWLGFBQWEsRUFDZCxHQUFHLEtBQUssQ0FBQztRQUNWLE1BQU0sRUFDSixRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFFBQVEsRUFBRSxnQkFBZ0IsRUFDM0IsR0FBRyxzREFBTyxDQUFDO1lBQ1YsUUFBUTtZQUNSLFFBQVE7U0FDVCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNmLE9BQU8sMERBQVksQ0FBQywrREFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ2xILGFBQWE7U0FDZCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxXQUFXLENBQUMsR0FBRztRQUM3QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMsRUFBRSxDQUFDO0FBQzJDO0FBQ2tCO0FBQ0Y7QUFDTjtBQUNiO0FBQ29CO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vdXRpbHMudHM/YjFiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGV4cG9ydFRvQ2FudmFzIGFzIF9leHBvcnRUb0NhbnZhcywgZXhwb3J0VG9TdmcgYXMgX2V4cG9ydFRvU3ZnIH0gZnJvbSBcIi4uL3NjZW5lL2V4cG9ydFwiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEFwcFN0YXRlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBnZXROb25EZWxldGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgcmVzdG9yZSB9IGZyb20gXCIuLi9kYXRhL3Jlc3RvcmVcIjtcbmltcG9ydCB7IE1JTUVfVFlQRVMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9DYW52YXMgPSBmdW5jdGlvbiAoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIGFwcFN0YXRlLFxuICAgIGZpbGVzLFxuICAgIG1heFdpZHRoT3JIZWlnaHQsXG4gICAgZ2V0RGltZW5zaW9uc1xuICB9ID0gX3JlZjtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRzOiByZXN0b3JlZEVsZW1lbnRzLFxuICAgIGFwcFN0YXRlOiByZXN0b3JlZEFwcFN0YXRlXG4gIH0gPSByZXN0b3JlKHtcbiAgICBlbGVtZW50cyxcbiAgICBhcHBTdGF0ZVxuICB9LCBudWxsLCBudWxsKTtcbiAgY29uc3Qge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvclxuICB9ID0gcmVzdG9yZWRBcHBTdGF0ZTtcbiAgcmV0dXJuIF9leHBvcnRUb0NhbnZhcyhnZXROb25EZWxldGVkRWxlbWVudHMocmVzdG9yZWRFbGVtZW50cyksIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdG9yZWRBcHBTdGF0ZSksIHt9LCB7XG4gICAgb2Zmc2V0VG9wOiAwLFxuICAgIG9mZnNldExlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0pLCBmaWxlcyB8fCB7fSwge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvclxuICB9LCBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG5cbiAgICBpZiAobWF4V2lkdGhPckhlaWdodCkge1xuICAgICAgaWYgKHR5cGVvZiBnZXREaW1lbnNpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiYGdldERpbWVuc2lvbnMoKWAgaXMgaWdub3JlZCB3aGVuIGBtYXhXaWR0aE9ySGVpZ2h0YCBpcyBzdXBwbGllZC5cIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuICAgICAgY29uc3Qgc2NhbGUgPSBtYXhXaWR0aE9ySGVpZ2h0IC8gbWF4O1xuICAgICAgY2FudmFzLndpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNhbnZhcyxcbiAgICAgICAgc2NhbGVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmV0ID0gZ2V0RGltZW5zaW9ucz8uKHdpZHRoLCBoZWlnaHQpIHx8IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfTtcbiAgICBjYW52YXMud2lkdGggPSByZXQud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHJldC5oZWlnaHQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhbnZhcyxcbiAgICAgIHNjYWxlOiByZXQuc2NhbGUgPz8gMVxuICAgIH07XG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb0Jsb2IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKG9wdHMpIHtcbiAgICBsZXQge1xuICAgICAgbWltZVR5cGUgPSBNSU1FX1RZUEVTLnBuZyxcbiAgICAgIHF1YWxpdHlcbiAgICB9ID0gb3B0cztcblxuICAgIGlmIChtaW1lVHlwZSA9PT0gTUlNRV9UWVBFUy5wbmcgJiYgdHlwZW9mIHF1YWxpdHkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgXCJxdWFsaXR5XCIgd2lsbCBiZSBpZ25vcmVkIGZvciBcIiR7TUlNRV9UWVBFUy5wbmd9XCIgbWltZVR5cGVgKTtcbiAgICB9IC8vIHR5cG8gaW4gTUlNRSB0eXBlIChzaG91bGQgYmUgXCJqcGVnXCIpXG5cblxuICAgIGlmIChtaW1lVHlwZSA9PT0gXCJpbWFnZS9qcGdcIikge1xuICAgICAgbWltZVR5cGUgPSBNSU1FX1RZUEVTLmpwZztcbiAgICB9XG5cbiAgICBpZiAobWltZVR5cGUgPT09IE1JTUVfVFlQRVMuanBnICYmICFvcHRzLmFwcFN0YXRlPy5leHBvcnRCYWNrZ3JvdW5kKSB7XG4gICAgICBjb25zb2xlLndhcm4oYERlZmF1bHRpbmcgXCJleHBvcnRCYWNrZ3JvdW5kXCIgdG8gXCJ0cnVlXCIgZm9yIFwiJHtNSU1FX1RZUEVTLmpwZ31cIiBtaW1lVHlwZWApO1xuICAgICAgb3B0cyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0cyksIHt9LCB7XG4gICAgICAgIGFwcFN0YXRlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdHMuYXBwU3RhdGUpLCB7fSwge1xuICAgICAgICAgIGV4cG9ydEJhY2tncm91bmQ6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbnZhcyA9IHlpZWxkIGV4cG9ydFRvQ2FudmFzKG9wdHMpO1xuICAgIHF1YWxpdHkgPSBxdWFsaXR5ID8gcXVhbGl0eSA6IC9pbWFnZVxcL2pwZT9nLy50ZXN0KG1pbWVUeXBlKSA/IDAuOTIgOiAwLjg7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICB9LCBtaW1lVHlwZSwgcXVhbGl0eSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb0Jsb2IoX3gpIHtcbiAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb1N2ZyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmMyA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAoX3JlZjQpIHtcbiAgICBsZXQge1xuICAgICAgZWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZSA9IGdldERlZmF1bHRBcHBTdGF0ZSgpLFxuICAgICAgZmlsZXMgPSB7fSxcbiAgICAgIGV4cG9ydFBhZGRpbmdcbiAgICB9ID0gX3JlZjQ7XG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudHM6IHJlc3RvcmVkRWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZTogcmVzdG9yZWRBcHBTdGF0ZVxuICAgIH0gPSByZXN0b3JlKHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGVcbiAgICB9LCBudWxsLCBudWxsKTtcbiAgICByZXR1cm4gX2V4cG9ydFRvU3ZnKGdldE5vbkRlbGV0ZWRFbGVtZW50cyhyZXN0b3JlZEVsZW1lbnRzKSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0b3JlZEFwcFN0YXRlKSwge30sIHtcbiAgICAgIGV4cG9ydFBhZGRpbmdcbiAgICB9KSwgZmlsZXMpO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9TdmcoX3gyKSB7XG4gICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5leHBvcnQgeyBzZXJpYWxpemVBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5leHBvcnQgeyBsb2FkRnJvbUJsb2IsIGxvYWRMaWJyYXJ5RnJvbUJsb2IgfSBmcm9tIFwiLi4vZGF0YS9ibG9iXCI7XG5leHBvcnQgeyBnZXRGcmVlRHJhd1N2Z1BhdGggfSBmcm9tIFwiLi4vcmVuZGVyZXIvcmVuZGVyRWxlbWVudFwiO1xuZXhwb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmV4cG9ydCB7IGdldE1heGltdW1Hcm91cHMgfSBmcm9tIFwiLi4vYWxpZ25cIjtcbmV4cG9ydCB7IGludGVyc2VjdEVsZW1lbnRXaXRoTGluZSB9IGZyb20gXCIuLi9lbGVtZW50L2NvbGxpc2lvblwiO1xuZXhwb3J0IHsgZGV0ZXJtaW5lRm9jdXNEaXN0YW5jZSB9IGZyb20gXCIuLi9lbGVtZW50L2NvbGxpc2lvblwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../utils.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../utils.ts?");
|
|
2869
2869
|
|
|
2870
2870
|
/***/ }),
|
|
2871
2871
|
|
|
@@ -3734,7 +3734,7 @@ eval("module.exports = JSON.parse('{\"labels\":{\"paste\":\"貼上\",\"pasteChar
|
|
|
3734
3734
|
/***/ ((module) => {
|
|
3735
3735
|
|
|
3736
3736
|
"use strict";
|
|
3737
|
-
eval("module.exports = JSON.parse('{\"name\":\"@zsviczian/excalidraw\",\"version\":\"0.10.0-obsidian-
|
|
3737
|
+
eval("module.exports = JSON.parse('{\"name\":\"@zsviczian/excalidraw\",\"version\":\"0.10.0-obsidian-19\",\"main\":\"main.js\",\"types\":\"types/packages/excalidraw/index.d.ts\",\"files\":[\"dist/*\",\"types/*\"],\"publishConfig\":{\"access\":\"public\"},\"description\":\"Excalidraw as a React component\",\"repository\":\"https://github.com/excalidraw/excalidraw\",\"license\":\"MIT\",\"keywords\":[\"excalidraw\",\"excalidraw-embed\",\"react\",\"npm\",\"npm excalidraw\"],\"browserslist\":{\"production\":[\">0.2%\",\"not dead\",\"not ie <= 11\",\"not op_mini all\",\"not safari < 12\",\"not kaios <= 2.5\",\"not edge < 79\",\"not chrome < 70\",\"not and_uc < 13\",\"not samsung < 10\"],\"development\":[\"last 1 chrome version\",\"last 1 firefox version\",\"last 1 safari version\"]},\"peerDependencies\":{\"react\":\"^17.0.2\",\"react-dom\":\"^17.0.2\"},\"devDependencies\":{\"@babel/core\":\"7.16.0\",\"@babel/plugin-transform-arrow-functions\":\"7.16.0\",\"@babel/plugin-transform-async-to-generator\":\"7.16.0\",\"@babel/plugin-transform-runtime\":\"7.16.4\",\"@babel/plugin-transform-typescript\":\"7.16.1\",\"@babel/preset-env\":\"7.16.4\",\"@babel/preset-react\":\"7.16.0\",\"@babel/preset-typescript\":\"7.16.0\",\"autoprefixer\":\"10.4.0\",\"babel-loader\":\"8.2.3\",\"babel-plugin-transform-class-properties\":\"6.24.1\",\"cross-env\":\"7.0.3\",\"css-loader\":\"6.5.1\",\"mini-css-extract-plugin\":\"2.4.5\",\"postcss-loader\":\"6.2.1\",\"sass-loader\":\"12.3.0\",\"terser-webpack-plugin\":\"5.2.5\",\"ts-loader\":\"9.2.6\",\"typescript\":\"4.5.2\",\"webpack\":\"5.64.4\",\"webpack-bundle-analyzer\":\"4.5.0\",\"webpack-cli\":\"4.9.1\"},\"bugs\":\"https://github.com/excalidraw/excalidraw/issues\",\"homepage\":\"https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw\",\"scripts\":{\"gen:types\":\"tsc --project ../../../tsconfig-types.json\",\"build:umd\":\"cross-env NODE_ENV=production webpack --config webpack.prod.config.js && cross-env NODE_ENV=development webpack --config webpack.dev.config.js && yarn gen:types\",\"build:umd:withAnalyzer\":\"cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js\",\"pack\":\"yarn build:umd && yarn pack\"},\"dependencies\":{\"dotenv\":\"10.0.0\"}}');\n\n//# sourceURL=webpack://Excalidraw/./package.json?");
|
|
3738
3738
|
|
|
3739
3739
|
/***/ })
|
|
3740
3740
|
|