@zsviczian/excalidraw 0.12.0-obsidian-6 → 0.12.0-obsidian-7

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.
@@ -1476,7 +1476,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
1476
1476
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1477
1477
 
1478
1478
  "use strict";
1479
- 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 */ });\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \\\"./node_modules/css-loader/dist/runtime/sourceMaps.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \\\"./node_modules/css-loader/dist/runtime/api.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ \\\"./node_modules/css-loader/dist/runtime/getUrl.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\\n// Imports\\n\\n\\n\\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\\n// Module\\n___CSS_LOADER_EXPORT___.push([module.id, \\\":export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n rightSidebarWidth: 302px;\\\\n}\\\\n\\\\n:export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n rightSidebarWidth: 302px;\\\\n}\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #ffe3e3;\\\\n --button-destructive-color: #c92a2a;\\\\n --button-gray-1: #e9ecef;\\\\n --button-gray-2: #ced4da;\\\\n --button-gray-3: #adb5bd;\\\\n --button-special-active-bg-color: #ebfbee;\\\\n --dialog-border-color: #868e96;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\\");\\\\n --focus-highlight-color: #a5d8ff;\\\\n --icon-fill-color: #212529;\\\\n --icon-green-fill-color: #2b8a3e;\\\\n --default-bg-color: #ffffff;\\\\n --input-bg-color: #ffffff;\\\\n --input-border-color: #ced4da;\\\\n --input-hover-bg-color: #f1f3f5;\\\\n --input-label-color: #495057;\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #adb5bd;\\\\n --link-color: #1c7ed6;\\\\n --overlay-bg-color: rgba(255, 255, 255, 0.88);\\\\n --popup-bg-color: #ffffff;\\\\n --popup-secondary-bg-color: #f1f3f5;\\\\n --popup-text-color: #000000;\\\\n --popup-text-inverted-color: #ffffff;\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #339af0;\\\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #343a40;\\\\n --color-primary: #6965db;\\\\n --color-primary-darker: #5b57d1;\\\\n --color-primary-darkest: #4a47b1;\\\\n --color-primary-light: #e2e1fc;\\\\n --border-radius-md: 0.375rem;\\\\n --border-radius-lg: 0.5rem;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n background: #000000;\\\\n}\\\\n.excalidraw.theme--dark.theme--dark-background-none {\\\\n background: none;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n --theme-filter: invert(93%) hue-rotate(180deg);\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #ffa8a8;\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #212529;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\\");\\\\n --focus-highlight-color: #228be6;\\\\n --icon-fill-color: #ced4da;\\\\n --icon-green-fill-color: #69db7c;\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #e9ecef;\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #868e96;\\\\n --link-color: #4dabf7;\\\\n --overlay-bg-color: rgba(52, 58, 64, 0.12);\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #ced4da;\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #4dabf7;\\\\n --shadow-island: 1px 1px 5px rgba(0, 0, 0, 0.3);\\\\n --text-primary-color: #ced4da;\\\\n --color-primary: #5650f0;\\\\n --color-primary-darker: #4b46d8;\\\\n --color-primary-darkest: #3e39be;\\\\n --color-primary-light: #3f3d64;\\\\n}\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n user-select: none;\\\\n}\\\\n.excalidraw:focus {\\\\n outline: none;\\\\n}\\\\n.excalidraw a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n}\\\\n.excalidraw a:hover {\\\\n text-decoration: underline;\\\\n}\\\\n.excalidraw canvas {\\\\n touch-action: none;\\\\n image-rendering: pixelated;\\\\n image-rendering: -moz-crisp-edges;\\\\n z-index: var(--zIndex-canvas);\\\\n}\\\\n.excalidraw__canvas {\\\\n position: absolute;\\\\n}\\\\n.excalidraw.theme--dark canvas {\\\\n filter: var(--theme-filter);\\\\n}\\\\n.excalidraw .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n}\\\\n.excalidraw .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n}\\\\n.excalidraw .panelColumn h3,\\\\n.excalidraw .panelColumn legend,\\\\n.excalidraw .panelColumn .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n}\\\\n.excalidraw .panelColumn .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n}\\\\n.excalidraw .panelColumn h3:first-child,\\\\n.excalidraw .panelColumn legend:first-child,\\\\n.excalidraw .panelColumn .control-label:first-child {\\\\n margin-top: 0;\\\\n}\\\\n.excalidraw .panelColumn legend {\\\\n padding: 0;\\\\n}\\\\n.excalidraw .panelColumn .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n}\\\\n.excalidraw .panelColumn .buttonList {\\\\n flex-wrap: wrap;\\\\n}\\\\n.excalidraw .panelColumn .buttonList label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n}\\\\n.excalidraw .panelColumn .buttonList input[type=radio],\\\\n.excalidraw .panelColumn .buttonList input[type=button] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .iconRow {\\\\n margin-top: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n}\\\\n.excalidraw .panelColumn fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n}\\\\n.excalidraw .divider {\\\\n width: 1px;\\\\n background-color: #e9ecef;\\\\n margin: 1px;\\\\n}\\\\n.excalidraw .buttonList label:focus-within,\\\\n.excalidraw input:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button,\\\\n.excalidraw .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: var(--border-radius-md);\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n cursor: pointer;\\\\n}\\\\n.excalidraw button:focus-visible,\\\\n.excalidraw .buttonList label:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button:hover,\\\\n.excalidraw .buttonList label:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw button:active,\\\\n.excalidraw .buttonList label:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw button:disabled,\\\\n.excalidraw .buttonList label:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .active,\\\\n.excalidraw .buttonList label.active {\\\\n background-color: var(--color-primary);\\\\n --icon-fill-color: #ffffff;\\\\n}\\\\n.excalidraw .active:hover,\\\\n.excalidraw .buttonList label.active:hover {\\\\n background-color: var(--color-primary-darker);\\\\n}\\\\n.excalidraw .active:active,\\\\n.excalidraw .buttonList label.active:active {\\\\n background-color: var(--color-primary-darkest);\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label svg {\\\\n width: 35px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label.active svg {\\\\n opacity: 1;\\\\n}\\\\n.excalidraw .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: max(var(--bar-padding), var(--sat,0));\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island {\\\\n /*width: 100%; //zsviczian*/\\\\n max-width: 100%;\\\\n /*min-width: 100%; //zsviczian*/\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n}\\\\n.excalidraw .App-toolbar {\\\\n width: 100%;\\\\n box-sizing: border-box;\\\\n}\\\\n.excalidraw .App-toolbar .eraser.ToolIcon:hover {\\\\n --icon-fill-color: #fff;\\\\n --keybinding-color: #fff;\\\\n}\\\\n.excalidraw .App-toolbar .eraser.active {\\\\n background-color: var(--color-primary);\\\\n}\\\\n.excalidraw .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n}\\\\n.excalidraw .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n min-height: 250px;\\\\n /* //zsviczian */\\\\n}\\\\n.excalidraw .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .App-menu_top {\\\\n grid-template-columns: auto max-content auto;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n}\\\\n.excalidraw .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n}\\\\n:root[dir=ltr] .excalidraw .App-menu_bottom {\\\\n left: 0.25rem;\\\\n}\\\\n:root[dir=rtl] .excalidraw .App-menu_bottom {\\\\n right: 0.25rem;\\\\n}\\\\n.excalidraw .App-menu_bottom--transition-left section {\\\\n width: 185px;\\\\n}\\\\n.excalidraw .App-menu_bottom section {\\\\n display: flex;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu__left {\\\\n overflow-y: auto;\\\\n box-shadow: var(--shadow-island);\\\\n}\\\\n.excalidraw .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n background-size: 0.65em auto, 100%;\\\\n}\\\\n:root[dir=rtl] .excalidraw .dropdown-select {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n}\\\\n.excalidraw .dropdown-select:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .dropdown-select:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .dropdown-select:active {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n}\\\\n.excalidraw .zIndexButton svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n}\\\\n.excalidraw .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n pointer-events: all;\\\\n}\\\\n.excalidraw .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: #868e96;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .help-icon svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n}\\\\n.excalidraw .help-icon:hover {\\\\n background: none;\\\\n}\\\\n.excalidraw .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n}\\\\n.excalidraw .finalize-button {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n}\\\\n.excalidraw .undo-redo-buttons,\\\\n.excalidraw .eraser-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n}\\\\n.excalidraw--mobile.excalidraw aside {\\\\n display: none;\\\\n}\\\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n}\\\\n\\\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\\\n transform: scaleX(-1);\\\\n}\\\\n.excalidraw .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw.excalidraw--view-mode .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw input[type=text],\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:not(:focus):hover,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:focus,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n@media print {\\\\n .excalidraw .App-bottom-bar,\\\\n.excalidraw .FixedSideContainer,\\\\n.excalidraw .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n}\\\\n.excalidraw ::-webkit-scrollbar {\\\\n width: 5px;\\\\n}\\\\n.excalidraw ::-webkit-scrollbar-thumb {\\\\n background: var(--button-gray-2);\\\\n border-radius: 10px;\\\\n}\\\\n.excalidraw ::-webkit-scrollbar-thumb:hover {\\\\n background: var(--button-gray-3);\\\\n}\\\\n.excalidraw ::-webkit-scrollbar-thumb:active {\\\\n background: var(--button-gray-2);\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n padding: 40px;\\\\n background-color: #ffe3e3;\\\\n border: 3px solid #c92a2a;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\\\n text-align: center;\\\\n}\\\\n.ErrorSplash.excalidraw .bigger,\\\\n.ErrorSplash.excalidraw .bigger button {\\\\n font-size: 1.1em;\\\\n}\\\\n.ErrorSplash.excalidraw .smaller,\\\\n.ErrorSplash.excalidraw .smaller button {\\\\n font-size: 0.9em;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n}\\\", \\\"\\\",{\\\"version\\\":3,\\\"sources\\\":[\\\"webpack://./../../css/variables.module.scss\\\",\\\"webpack://./../../css/styles.scss\\\",\\\"webpack://./../../css/theme.scss\\\",\\\"webpack://./../../../node_modules/open-color/open-color.scss\\\"],\\\"names\\\":[],\\\"mappings\\\":\\\"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\\\",\\\"sourcesContent\\\":[\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n\\\\n@mixin isMobile() {\\\\n @at-root .excalidraw--mobile#{&} {\\\\n @content;\\\\n }\\\\n}\\\\n\\\\n@mixin toolbarButtonColorStates {\\\\n .ToolIcon_type_radio,\\\\n .ToolIcon_type_checkbox {\\\\n & + .ToolIcon__icon:active {\\\\n background: var(--color-primary-light);\\\\n }\\\\n &:checked + .ToolIcon__icon {\\\\n background: var(--color-primary);\\\\n --icon-fill-color: #{$oc-white};\\\\n --keybinding-color: #{$oc-white};\\\\n }\\\\n &:checked + .ToolIcon__icon:active {\\\\n background: var(--color-primary-darker);\\\\n }\\\\n }\\\\n\\\\n .ToolIcon__keybinding {\\\\n bottom: 4px;\\\\n right: 4px;\\\\n }\\\\n}\\\\n\\\\n$theme-filter: \\\\\\\"invert(93%) hue-rotate(180deg)\\\\\\\";\\\\n$right-sidebar-width: \\\\\\\"302px\\\\\\\";\\\\n\\\\n:export {\\\\n themeFilter: unquote($theme-filter);\\\\n rightSidebarWidth: unquote($right-sidebar-width);\\\\n}\\\\n\\\",\\\"@import \\\\\\\"./variables.module\\\\\\\";\\\\n@import \\\\\\\"./theme\\\\\\\";\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n }\\\\n\\\\n // serves 2 purposes:\\\\n // 1. prevent selecting text outside the component when double-clicking or\\\\n // dragging inside it (e.g. on canvas)\\\\n // 2. prevent selecting UI, both from the inside, and from outside the\\\\n // component (e.g. if you select text in a sidebar)\\\\n user-select: none;\\\\n\\\\n a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n\\\\n &:hover {\\\\n text-decoration: underline;\\\\n }\\\\n }\\\\n\\\\n canvas {\\\\n touch-action: none;\\\\n\\\\n // following props improve blurriness at certain devicePixelRatios.\\\\n // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\\\n\\\\n image-rendering: pixelated; // chromium\\\\n // NOTE: must be declared *after* the above\\\\n image-rendering: -moz-crisp-edges; // FF\\\\n\\\\n z-index: var(--zIndex-canvas);\\\\n\\\\n // Remove the main canvas from document flow to avoid resizeObserver\\\\n // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\\\n }\\\\n\\\\n &__canvas {\\\\n position: absolute;\\\\n }\\\\n\\\\n &.theme--dark {\\\\n // The percentage is inspired by\\\\n // https://material.io/design/color/dark-theme.html#properties, which\\\\n // recommends surface color of #121212, 93% yields #111111 for #FFF\\\\n\\\\n canvas {\\\\n filter: var(--theme-filter);\\\\n }\\\\n }\\\\n\\\\n .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n }\\\\n\\\\n .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n\\\\n .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n\\\\n h3,\\\\n legend,\\\\n .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n }\\\\n\\\\n .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n }\\\\n\\\\n h3:first-child,\\\\n legend:first-child,\\\\n .control-label:first-child {\\\\n margin-top: 0;\\\\n }\\\\n\\\\n legend {\\\\n padding: 0;\\\\n }\\\\n\\\\n .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n }\\\\n\\\\n .buttonList {\\\\n flex-wrap: wrap;\\\\n\\\\n label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n }\\\\n\\\\n input[type=\\\\\\\"radio\\\\\\\"],\\\\n input[type=\\\\\\\"button\\\\\\\"] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n }\\\\n\\\\n .iconRow {\\\\n margin-top: 8px;\\\\n }\\\\n\\\\n .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n\\\\n &:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n }\\\\n }\\\\n\\\\n fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n }\\\\n }\\\\n\\\\n .divider {\\\\n width: 1px;\\\\n background-color: $oc-gray-2;\\\\n margin: 1px;\\\\n }\\\\n\\\\n .buttonList label:focus-within,\\\\n input:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n button,\\\\n .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: var(--border-radius-md);\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n\\\\n cursor: pointer;\\\\n\\\\n &:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .active,\\\\n .buttonList label.active {\\\\n background-color: var(--color-primary);\\\\n\\\\n --icon-fill-color: #{$oc-white};\\\\n\\\\n &:hover {\\\\n background-color: var(--color-primary-darker);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--color-primary-darkest);\\\\n }\\\\n }\\\\n\\\\n .buttonList.buttonListIcon {\\\\n label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n svg {\\\\n width: 35px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n }\\\\n &.active svg {\\\\n opacity: 1;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n }\\\\n\\\\n .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: #{\\\\\\\"max(var(--bar-padding), var(--sat,0))\\\\\\\"};\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n\\\\n > .Island {\\\\n /*width: 100%; //zsviczian*/\\\\n max-width: 100%;\\\\n /*min-width: 100%; //zsviczian*/\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n\\\\n .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-toolbar {\\\\n width: 100%;\\\\n\\\\n box-sizing: border-box;\\\\n\\\\n .eraser {\\\\n &.ToolIcon:hover {\\\\n --icon-fill-color: #fff;\\\\n --keybinding-color: #fff;\\\\n }\\\\n &.active {\\\\n background-color: var(--color-primary);\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n }\\\\n\\\\n .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n min-height: 250px; /* //zsviczian */\\\\n }\\\\n\\\\n .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n }\\\\n\\\\n .App-menu_top {\\\\n grid-template-columns: auto max-content auto;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n }\\\\n\\\\n .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n\\\\n :root[dir=\\\\\\\"ltr\\\\\\\"] & {\\\\n left: 0.25rem;\\\\n }\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n right: 0.25rem;\\\\n }\\\\n\\\\n &--transition-left {\\\\n section {\\\\n width: 185px;\\\\n }\\\\n }\\\\n\\\\n section {\\\\n display: flex;\\\\n }\\\\n }\\\\n\\\\n .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu__left {\\\\n overflow-y: auto;\\\\n box-shadow: var(--shadow-island);\\\\n }\\\\n\\\\n .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n }\\\\n\\\\n background-size: 0.65em auto, 100%;\\\\n\\\\n &:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n }\\\\n\\\\n .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n }\\\\n }\\\\n\\\\n .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n pointer-events: all;\\\\n }\\\\n\\\\n .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: $oc-gray-6;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n\\\\n svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n }\\\\n\\\\n &:hover {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n }\\\\n\\\\n .finalize-button {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n }\\\\n\\\\n .undo-redo-buttons,\\\\n .eraser-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n }\\\\n\\\\n @include isMobile {\\\\n aside {\\\\n display: none;\\\\n }\\\\n .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n }\\\\n }\\\\n\\\\n .rtl-mirror {\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n transform: scaleX(-1);\\\\n }\\\\n }\\\\n\\\\n .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n\\\\n &.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n }\\\\n }\\\\n\\\\n .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n &.excalidraw--view-mode {\\\\n .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n }\\\\n\\\\n input[type=\\\\\\\"text\\\\\\\"],\\\\n textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n\\\\n &:not(:focus) {\\\\n &:hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n }\\\\n }\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n }\\\\n\\\\n @media print {\\\\n .App-bottom-bar,\\\\n .FixedSideContainer,\\\\n .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n }\\\\n\\\\n // use custom, minimalistic scrollbar\\\\n // (doesn't work in Firefox)\\\\n ::-webkit-scrollbar {\\\\n width: 5px;\\\\n }\\\\n ::-webkit-scrollbar-thumb {\\\\n background: var(--button-gray-2);\\\\n border-radius: 10px;\\\\n }\\\\n ::-webkit-scrollbar-thumb:hover {\\\\n background: var(--button-gray-3);\\\\n }\\\\n ::-webkit-scrollbar-thumb:active {\\\\n background: var(--button-gray-2);\\\\n }\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n\\\\n .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n padding: 40px;\\\\n background-color: $oc-red-1;\\\\n border: 3px solid $oc-red-9;\\\\n }\\\\n\\\\n .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n\\\\n &.align-center {\\\\n text-align: center;\\\\n }\\\\n }\\\\n\\\\n .bigger,\\\\n .bigger button {\\\\n font-size: 1.1em;\\\\n }\\\\n\\\\n .smaller,\\\\n .smaller button {\\\\n font-size: 0.9em;\\\\n }\\\\n\\\\n .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n\\\\n textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n }\\\\n }\\\\n}\\\\n\\\",\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n@import \\\\\\\"./variables.module.scss\\\\\\\";\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #{$oc-red-1};\\\\n --button-destructive-color: #{$oc-red-9};\\\\n --button-gray-1: #{$oc-gray-2};\\\\n --button-gray-2: #{$oc-gray-4};\\\\n --button-gray-3: #{$oc-gray-5};\\\\n --button-special-active-bg-color: #{$oc-green-0};\\\\n --dialog-border-color: #{$oc-gray-6};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-2};\\\\n --icon-fill-color: #{$oc-gray-9};\\\\n --icon-green-fill-color: #{$oc-green-9};\\\\n --default-bg-color: #{$oc-white};\\\\n --input-bg-color: #{$oc-white};\\\\n --input-border-color: #{$oc-gray-4};\\\\n --input-hover-bg-color: #{$oc-gray-1};\\\\n --input-label-color: #{$oc-gray-7};\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #{$oc-gray-5};\\\\n --link-color: #{$oc-blue-7};\\\\n --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\\\n --popup-bg-color: #{$oc-white};\\\\n --popup-secondary-bg-color: #{$oc-gray-1};\\\\n --popup-text-color: #{$oc-black};\\\\n --popup-text-inverted-color: #{$oc-white};\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #{$oc-blue-5};\\\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\\\n\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #{$oc-gray-8};\\\\n\\\\n --color-primary: #6965db;\\\\n --color-primary-darker: #5b57d1;\\\\n --color-primary-darkest: #4a47b1;\\\\n --color-primary-light: #e2e1fc;\\\\n\\\\n --border-radius-md: 0.375rem;\\\\n --border-radius-lg: 0.5rem;\\\\n\\\\n &.theme--dark {\\\\n background: $oc-black;\\\\n\\\\n &.theme--dark-background-none {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n &.theme--dark {\\\\n --theme-filter: #{$theme-filter};\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #{$oc-red-3};\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #{$oc-gray-9};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-6};\\\\n --icon-fill-color: #{$oc-gray-4};\\\\n --icon-green-fill-color: #{$oc-green-4};\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #{$oc-gray-2};\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #{$oc-gray-6};\\\\n --link-color: #{$oc-blue-4};\\\\n --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #{$oc-gray-4};\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #{$oc-blue-4};\\\\n --shadow-island: 1px 1px 5px #{transparentize($oc-black, 0.7)};\\\\n --text-primary-color: #{$oc-gray-4};\\\\n\\\\n --color-primary: #5650f0;\\\\n --color-primary-darker: #4b46d8;\\\\n --color-primary-darkest: #3e39be;\\\\n --color-primary-light: #3f3d64;\\\\n }\\\\n}\\\\n\\\",\\\"//\\\\n//\\\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\\\n// v 1.9.1\\\\n//\\\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\\\n\\\\n\\\\n// General\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-white: #ffffff;\\\\n$oc-black: #000000;\\\\n\\\\n\\\\n// Gray\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-gray-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f9fa,\\\\n \\\\\\\"1\\\\\\\": #f1f3f5,\\\\n \\\\\\\"2\\\\\\\": #e9ecef,\\\\n \\\\\\\"3\\\\\\\": #dee2e6,\\\\n \\\\\\\"4\\\\\\\": #ced4da,\\\\n \\\\\\\"5\\\\\\\": #adb5bd,\\\\n \\\\\\\"6\\\\\\\": #868e96,\\\\n \\\\\\\"7\\\\\\\": #495057,\\\\n \\\\\\\"8\\\\\\\": #343a40,\\\\n \\\\\\\"9\\\\\\\": #212529\\\\n);\\\\n\\\\n$oc-gray-0: map-get($oc-gray-list, \\\\\\\"0\\\\\\\");\\\\n$oc-gray-1: map-get($oc-gray-list, \\\\\\\"1\\\\\\\");\\\\n$oc-gray-2: map-get($oc-gray-list, \\\\\\\"2\\\\\\\");\\\\n$oc-gray-3: map-get($oc-gray-list, \\\\\\\"3\\\\\\\");\\\\n$oc-gray-4: map-get($oc-gray-list, \\\\\\\"4\\\\\\\");\\\\n$oc-gray-5: map-get($oc-gray-list, \\\\\\\"5\\\\\\\");\\\\n$oc-gray-6: map-get($oc-gray-list, \\\\\\\"6\\\\\\\");\\\\n$oc-gray-7: map-get($oc-gray-list, \\\\\\\"7\\\\\\\");\\\\n$oc-gray-8: map-get($oc-gray-list, \\\\\\\"8\\\\\\\");\\\\n$oc-gray-9: map-get($oc-gray-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Red\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-red-list: (\\\\n \\\\\\\"0\\\\\\\": #fff5f5,\\\\n \\\\\\\"1\\\\\\\": #ffe3e3,\\\\n \\\\\\\"2\\\\\\\": #ffc9c9,\\\\n \\\\\\\"3\\\\\\\": #ffa8a8,\\\\n \\\\\\\"4\\\\\\\": #ff8787,\\\\n \\\\\\\"5\\\\\\\": #ff6b6b,\\\\n \\\\\\\"6\\\\\\\": #fa5252,\\\\n \\\\\\\"7\\\\\\\": #f03e3e,\\\\n \\\\\\\"8\\\\\\\": #e03131,\\\\n \\\\\\\"9\\\\\\\": #c92a2a\\\\n);\\\\n\\\\n$oc-red-0: map-get($oc-red-list, \\\\\\\"0\\\\\\\");\\\\n$oc-red-1: map-get($oc-red-list, \\\\\\\"1\\\\\\\");\\\\n$oc-red-2: map-get($oc-red-list, \\\\\\\"2\\\\\\\");\\\\n$oc-red-3: map-get($oc-red-list, \\\\\\\"3\\\\\\\");\\\\n$oc-red-4: map-get($oc-red-list, \\\\\\\"4\\\\\\\");\\\\n$oc-red-5: map-get($oc-red-list, \\\\\\\"5\\\\\\\");\\\\n$oc-red-6: map-get($oc-red-list, \\\\\\\"6\\\\\\\");\\\\n$oc-red-7: map-get($oc-red-list, \\\\\\\"7\\\\\\\");\\\\n$oc-red-8: map-get($oc-red-list, \\\\\\\"8\\\\\\\");\\\\n$oc-red-9: map-get($oc-red-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Pink\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-pink-list: (\\\\n \\\\\\\"0\\\\\\\": #fff0f6,\\\\n \\\\\\\"1\\\\\\\": #ffdeeb,\\\\n \\\\\\\"2\\\\\\\": #fcc2d7,\\\\n \\\\\\\"3\\\\\\\": #faa2c1,\\\\n \\\\\\\"4\\\\\\\": #f783ac,\\\\n \\\\\\\"5\\\\\\\": #f06595,\\\\n \\\\\\\"6\\\\\\\": #e64980,\\\\n \\\\\\\"7\\\\\\\": #d6336c,\\\\n \\\\\\\"8\\\\\\\": #c2255c,\\\\n \\\\\\\"9\\\\\\\": #a61e4d\\\\n);\\\\n\\\\n$oc-pink-0: map-get($oc-pink-list, \\\\\\\"0\\\\\\\");\\\\n$oc-pink-1: map-get($oc-pink-list, \\\\\\\"1\\\\\\\");\\\\n$oc-pink-2: map-get($oc-pink-list, \\\\\\\"2\\\\\\\");\\\\n$oc-pink-3: map-get($oc-pink-list, \\\\\\\"3\\\\\\\");\\\\n$oc-pink-4: map-get($oc-pink-list, \\\\\\\"4\\\\\\\");\\\\n$oc-pink-5: map-get($oc-pink-list, \\\\\\\"5\\\\\\\");\\\\n$oc-pink-6: map-get($oc-pink-list, \\\\\\\"6\\\\\\\");\\\\n$oc-pink-7: map-get($oc-pink-list, \\\\\\\"7\\\\\\\");\\\\n$oc-pink-8: map-get($oc-pink-list, \\\\\\\"8\\\\\\\");\\\\n$oc-pink-9: map-get($oc-pink-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Grape\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-grape-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f0fc,\\\\n \\\\\\\"1\\\\\\\": #f3d9fa,\\\\n \\\\\\\"2\\\\\\\": #eebefa,\\\\n \\\\\\\"3\\\\\\\": #e599f7,\\\\n \\\\\\\"4\\\\\\\": #da77f2,\\\\n \\\\\\\"5\\\\\\\": #cc5de8,\\\\n \\\\\\\"6\\\\\\\": #be4bdb,\\\\n \\\\\\\"7\\\\\\\": #ae3ec9,\\\\n \\\\\\\"8\\\\\\\": #9c36b5,\\\\n \\\\\\\"9\\\\\\\": #862e9c\\\\n);\\\\n\\\\n$oc-grape-0: map-get($oc-grape-list, \\\\\\\"0\\\\\\\");\\\\n$oc-grape-1: map-get($oc-grape-list, \\\\\\\"1\\\\\\\");\\\\n$oc-grape-2: map-get($oc-grape-list, \\\\\\\"2\\\\\\\");\\\\n$oc-grape-3: map-get($oc-grape-list, \\\\\\\"3\\\\\\\");\\\\n$oc-grape-4: map-get($oc-grape-list, \\\\\\\"4\\\\\\\");\\\\n$oc-grape-5: map-get($oc-grape-list, \\\\\\\"5\\\\\\\");\\\\n$oc-grape-6: map-get($oc-grape-list, \\\\\\\"6\\\\\\\");\\\\n$oc-grape-7: map-get($oc-grape-list, \\\\\\\"7\\\\\\\");\\\\n$oc-grape-8: map-get($oc-grape-list, \\\\\\\"8\\\\\\\");\\\\n$oc-grape-9: map-get($oc-grape-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Violet\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-violet-list: (\\\\n \\\\\\\"0\\\\\\\": #f3f0ff,\\\\n \\\\\\\"1\\\\\\\": #e5dbff,\\\\n \\\\\\\"2\\\\\\\": #d0bfff,\\\\n \\\\\\\"3\\\\\\\": #b197fc,\\\\n \\\\\\\"4\\\\\\\": #9775fa,\\\\n \\\\\\\"5\\\\\\\": #845ef7,\\\\n \\\\\\\"6\\\\\\\": #7950f2,\\\\n \\\\\\\"7\\\\\\\": #7048e8,\\\\n \\\\\\\"8\\\\\\\": #6741d9,\\\\n \\\\\\\"9\\\\\\\": #5f3dc4\\\\n);\\\\n\\\\n$oc-violet-0: map-get($oc-violet-list, \\\\\\\"0\\\\\\\");\\\\n$oc-violet-1: map-get($oc-violet-list, \\\\\\\"1\\\\\\\");\\\\n$oc-violet-2: map-get($oc-violet-list, \\\\\\\"2\\\\\\\");\\\\n$oc-violet-3: map-get($oc-violet-list, \\\\\\\"3\\\\\\\");\\\\n$oc-violet-4: map-get($oc-violet-list, \\\\\\\"4\\\\\\\");\\\\n$oc-violet-5: map-get($oc-violet-list, \\\\\\\"5\\\\\\\");\\\\n$oc-violet-6: map-get($oc-violet-list, \\\\\\\"6\\\\\\\");\\\\n$oc-violet-7: map-get($oc-violet-list, \\\\\\\"7\\\\\\\");\\\\n$oc-violet-8: map-get($oc-violet-list, \\\\\\\"8\\\\\\\");\\\\n$oc-violet-9: map-get($oc-violet-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Indigo\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-indigo-list: (\\\\n \\\\\\\"0\\\\\\\": #edf2ff,\\\\n \\\\\\\"1\\\\\\\": #dbe4ff,\\\\n \\\\\\\"2\\\\\\\": #bac8ff,\\\\n \\\\\\\"3\\\\\\\": #91a7ff,\\\\n \\\\\\\"4\\\\\\\": #748ffc,\\\\n \\\\\\\"5\\\\\\\": #5c7cfa,\\\\n \\\\\\\"6\\\\\\\": #4c6ef5,\\\\n \\\\\\\"7\\\\\\\": #4263eb,\\\\n \\\\\\\"8\\\\\\\": #3b5bdb,\\\\n \\\\\\\"9\\\\\\\": #364fc7\\\\n);\\\\n\\\\n$oc-indigo-0: map-get($oc-indigo-list, \\\\\\\"0\\\\\\\");\\\\n$oc-indigo-1: map-get($oc-indigo-list, \\\\\\\"1\\\\\\\");\\\\n$oc-indigo-2: map-get($oc-indigo-list, \\\\\\\"2\\\\\\\");\\\\n$oc-indigo-3: map-get($oc-indigo-list, \\\\\\\"3\\\\\\\");\\\\n$oc-indigo-4: map-get($oc-indigo-list, \\\\\\\"4\\\\\\\");\\\\n$oc-indigo-5: map-get($oc-indigo-list, \\\\\\\"5\\\\\\\");\\\\n$oc-indigo-6: map-get($oc-indigo-list, \\\\\\\"6\\\\\\\");\\\\n$oc-indigo-7: map-get($oc-indigo-list, \\\\\\\"7\\\\\\\");\\\\n$oc-indigo-8: map-get($oc-indigo-list, \\\\\\\"8\\\\\\\");\\\\n$oc-indigo-9: map-get($oc-indigo-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Blue\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-blue-list: (\\\\n \\\\\\\"0\\\\\\\": #e7f5ff,\\\\n \\\\\\\"1\\\\\\\": #d0ebff,\\\\n \\\\\\\"2\\\\\\\": #a5d8ff,\\\\n \\\\\\\"3\\\\\\\": #74c0fc,\\\\n \\\\\\\"4\\\\\\\": #4dabf7,\\\\n \\\\\\\"5\\\\\\\": #339af0,\\\\n \\\\\\\"6\\\\\\\": #228be6,\\\\n \\\\\\\"7\\\\\\\": #1c7ed6,\\\\n \\\\\\\"8\\\\\\\": #1971c2,\\\\n \\\\\\\"9\\\\\\\": #1864ab\\\\n);\\\\n\\\\n$oc-blue-0: map-get($oc-blue-list, \\\\\\\"0\\\\\\\");\\\\n$oc-blue-1: map-get($oc-blue-list, \\\\\\\"1\\\\\\\");\\\\n$oc-blue-2: map-get($oc-blue-list, \\\\\\\"2\\\\\\\");\\\\n$oc-blue-3: map-get($oc-blue-list, \\\\\\\"3\\\\\\\");\\\\n$oc-blue-4: map-get($oc-blue-list, \\\\\\\"4\\\\\\\");\\\\n$oc-blue-5: map-get($oc-blue-list, \\\\\\\"5\\\\\\\");\\\\n$oc-blue-6: map-get($oc-blue-list, \\\\\\\"6\\\\\\\");\\\\n$oc-blue-7: map-get($oc-blue-list, \\\\\\\"7\\\\\\\");\\\\n$oc-blue-8: map-get($oc-blue-list, \\\\\\\"8\\\\\\\");\\\\n$oc-blue-9: map-get($oc-blue-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Cyan\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-cyan-list: (\\\\n \\\\\\\"0\\\\\\\": #e3fafc,\\\\n \\\\\\\"1\\\\\\\": #c5f6fa,\\\\n \\\\\\\"2\\\\\\\": #99e9f2,\\\\n \\\\\\\"3\\\\\\\": #66d9e8,\\\\n \\\\\\\"4\\\\\\\": #3bc9db,\\\\n \\\\\\\"5\\\\\\\": #22b8cf,\\\\n \\\\\\\"6\\\\\\\": #15aabf,\\\\n \\\\\\\"7\\\\\\\": #1098ad,\\\\n \\\\\\\"8\\\\\\\": #0c8599,\\\\n \\\\\\\"9\\\\\\\": #0b7285\\\\n);\\\\n\\\\n$oc-cyan-0: map-get($oc-cyan-list, \\\\\\\"0\\\\\\\");\\\\n$oc-cyan-1: map-get($oc-cyan-list, \\\\\\\"1\\\\\\\");\\\\n$oc-cyan-2: map-get($oc-cyan-list, \\\\\\\"2\\\\\\\");\\\\n$oc-cyan-3: map-get($oc-cyan-list, \\\\\\\"3\\\\\\\");\\\\n$oc-cyan-4: map-get($oc-cyan-list, \\\\\\\"4\\\\\\\");\\\\n$oc-cyan-5: map-get($oc-cyan-list, \\\\\\\"5\\\\\\\");\\\\n$oc-cyan-6: map-get($oc-cyan-list, \\\\\\\"6\\\\\\\");\\\\n$oc-cyan-7: map-get($oc-cyan-list, \\\\\\\"7\\\\\\\");\\\\n$oc-cyan-8: map-get($oc-cyan-list, \\\\\\\"8\\\\\\\");\\\\n$oc-cyan-9: map-get($oc-cyan-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Teal\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-teal-list: (\\\\n \\\\\\\"0\\\\\\\": #e6fcf5,\\\\n \\\\\\\"1\\\\\\\": #c3fae8,\\\\n \\\\\\\"2\\\\\\\": #96f2d7,\\\\n \\\\\\\"3\\\\\\\": #63e6be,\\\\n \\\\\\\"4\\\\\\\": #38d9a9,\\\\n \\\\\\\"5\\\\\\\": #20c997,\\\\n \\\\\\\"6\\\\\\\": #12b886,\\\\n \\\\\\\"7\\\\\\\": #0ca678,\\\\n \\\\\\\"8\\\\\\\": #099268,\\\\n \\\\\\\"9\\\\\\\": #087f5b\\\\n);\\\\n\\\\n$oc-teal-0: map-get($oc-teal-list, \\\\\\\"0\\\\\\\");\\\\n$oc-teal-1: map-get($oc-teal-list, \\\\\\\"1\\\\\\\");\\\\n$oc-teal-2: map-get($oc-teal-list, \\\\\\\"2\\\\\\\");\\\\n$oc-teal-3: map-get($oc-teal-list, \\\\\\\"3\\\\\\\");\\\\n$oc-teal-4: map-get($oc-teal-list, \\\\\\\"4\\\\\\\");\\\\n$oc-teal-5: map-get($oc-teal-list, \\\\\\\"5\\\\\\\");\\\\n$oc-teal-6: map-get($oc-teal-list, \\\\\\\"6\\\\\\\");\\\\n$oc-teal-7: map-get($oc-teal-list, \\\\\\\"7\\\\\\\");\\\\n$oc-teal-8: map-get($oc-teal-list, \\\\\\\"8\\\\\\\");\\\\n$oc-teal-9: map-get($oc-teal-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Green\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-green-list: (\\\\n \\\\\\\"0\\\\\\\": #ebfbee,\\\\n \\\\\\\"1\\\\\\\": #d3f9d8,\\\\n \\\\\\\"2\\\\\\\": #b2f2bb,\\\\n \\\\\\\"3\\\\\\\": #8ce99a,\\\\n \\\\\\\"4\\\\\\\": #69db7c,\\\\n \\\\\\\"5\\\\\\\": #51cf66,\\\\n \\\\\\\"6\\\\\\\": #40c057,\\\\n \\\\\\\"7\\\\\\\": #37b24d,\\\\n \\\\\\\"8\\\\\\\": #2f9e44,\\\\n \\\\\\\"9\\\\\\\": #2b8a3e\\\\n);\\\\n\\\\n$oc-green-0: map-get($oc-green-list, \\\\\\\"0\\\\\\\");\\\\n$oc-green-1: map-get($oc-green-list, \\\\\\\"1\\\\\\\");\\\\n$oc-green-2: map-get($oc-green-list, \\\\\\\"2\\\\\\\");\\\\n$oc-green-3: map-get($oc-green-list, \\\\\\\"3\\\\\\\");\\\\n$oc-green-4: map-get($oc-green-list, \\\\\\\"4\\\\\\\");\\\\n$oc-green-5: map-get($oc-green-list, \\\\\\\"5\\\\\\\");\\\\n$oc-green-6: map-get($oc-green-list, \\\\\\\"6\\\\\\\");\\\\n$oc-green-7: map-get($oc-green-list, \\\\\\\"7\\\\\\\");\\\\n$oc-green-8: map-get($oc-green-list, \\\\\\\"8\\\\\\\");\\\\n$oc-green-9: map-get($oc-green-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Lime\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-lime-list: (\\\\n \\\\\\\"0\\\\\\\": #f4fce3,\\\\n \\\\\\\"1\\\\\\\": #e9fac8,\\\\n \\\\\\\"2\\\\\\\": #d8f5a2,\\\\n \\\\\\\"3\\\\\\\": #c0eb75,\\\\n \\\\\\\"4\\\\\\\": #a9e34b,\\\\n \\\\\\\"5\\\\\\\": #94d82d,\\\\n \\\\\\\"6\\\\\\\": #82c91e,\\\\n \\\\\\\"7\\\\\\\": #74b816,\\\\n \\\\\\\"8\\\\\\\": #66a80f,\\\\n \\\\\\\"9\\\\\\\": #5c940d\\\\n);\\\\n\\\\n$oc-lime-0: map-get($oc-lime-list, \\\\\\\"0\\\\\\\");\\\\n$oc-lime-1: map-get($oc-lime-list, \\\\\\\"1\\\\\\\");\\\\n$oc-lime-2: map-get($oc-lime-list, \\\\\\\"2\\\\\\\");\\\\n$oc-lime-3: map-get($oc-lime-list, \\\\\\\"3\\\\\\\");\\\\n$oc-lime-4: map-get($oc-lime-list, \\\\\\\"4\\\\\\\");\\\\n$oc-lime-5: map-get($oc-lime-list, \\\\\\\"5\\\\\\\");\\\\n$oc-lime-6: map-get($oc-lime-list, \\\\\\\"6\\\\\\\");\\\\n$oc-lime-7: map-get($oc-lime-list, \\\\\\\"7\\\\\\\");\\\\n$oc-lime-8: map-get($oc-lime-list, \\\\\\\"8\\\\\\\");\\\\n$oc-lime-9: map-get($oc-lime-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Yellow\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-yellow-list: (\\\\n \\\\\\\"0\\\\\\\": #fff9db,\\\\n \\\\\\\"1\\\\\\\": #fff3bf,\\\\n \\\\\\\"2\\\\\\\": #ffec99,\\\\n \\\\\\\"3\\\\\\\": #ffe066,\\\\n \\\\\\\"4\\\\\\\": #ffd43b,\\\\n \\\\\\\"5\\\\\\\": #fcc419,\\\\n \\\\\\\"6\\\\\\\": #fab005,\\\\n \\\\\\\"7\\\\\\\": #f59f00,\\\\n \\\\\\\"8\\\\\\\": #f08c00,\\\\n \\\\\\\"9\\\\\\\": #e67700\\\\n);\\\\n\\\\n$oc-yellow-0: map-get($oc-yellow-list, \\\\\\\"0\\\\\\\");\\\\n$oc-yellow-1: map-get($oc-yellow-list, \\\\\\\"1\\\\\\\");\\\\n$oc-yellow-2: map-get($oc-yellow-list, \\\\\\\"2\\\\\\\");\\\\n$oc-yellow-3: map-get($oc-yellow-list, \\\\\\\"3\\\\\\\");\\\\n$oc-yellow-4: map-get($oc-yellow-list, \\\\\\\"4\\\\\\\");\\\\n$oc-yellow-5: map-get($oc-yellow-list, \\\\\\\"5\\\\\\\");\\\\n$oc-yellow-6: map-get($oc-yellow-list, \\\\\\\"6\\\\\\\");\\\\n$oc-yellow-7: map-get($oc-yellow-list, \\\\\\\"7\\\\\\\");\\\\n$oc-yellow-8: map-get($oc-yellow-list, \\\\\\\"8\\\\\\\");\\\\n$oc-yellow-9: map-get($oc-yellow-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Orange\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-orange-list: (\\\\n \\\\\\\"0\\\\\\\": #fff4e6,\\\\n \\\\\\\"1\\\\\\\": #ffe8cc,\\\\n \\\\\\\"2\\\\\\\": #ffd8a8,\\\\n \\\\\\\"3\\\\\\\": #ffc078,\\\\n \\\\\\\"4\\\\\\\": #ffa94d,\\\\n \\\\\\\"5\\\\\\\": #ff922b,\\\\n \\\\\\\"6\\\\\\\": #fd7e14,\\\\n \\\\\\\"7\\\\\\\": #f76707,\\\\n \\\\\\\"8\\\\\\\": #e8590c,\\\\n \\\\\\\"9\\\\\\\": #d9480f\\\\n);\\\\n\\\\n$oc-orange-0: map-get($oc-orange-list, \\\\\\\"0\\\\\\\");\\\\n$oc-orange-1: map-get($oc-orange-list, \\\\\\\"1\\\\\\\");\\\\n$oc-orange-2: map-get($oc-orange-list, \\\\\\\"2\\\\\\\");\\\\n$oc-orange-3: map-get($oc-orange-list, \\\\\\\"3\\\\\\\");\\\\n$oc-orange-4: map-get($oc-orange-list, \\\\\\\"4\\\\\\\");\\\\n$oc-orange-5: map-get($oc-orange-list, \\\\\\\"5\\\\\\\");\\\\n$oc-orange-6: map-get($oc-orange-list, \\\\\\\"6\\\\\\\");\\\\n$oc-orange-7: map-get($oc-orange-list, \\\\\\\"7\\\\\\\");\\\\n$oc-orange-8: map-get($oc-orange-list, \\\\\\\"8\\\\\\\");\\\\n$oc-orange-9: map-get($oc-orange-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Color list\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-color-spectrum: 9;\\\\n\\\\n$oc-color-list: (\\\\n $oc-gray-list: \\\\\\\"gray\\\\\\\",\\\\n $oc-red-list: \\\\\\\"red\\\\\\\",\\\\n $oc-pink-list: \\\\\\\"pink\\\\\\\",\\\\n $oc-grape-list: \\\\\\\"grape\\\\\\\",\\\\n $oc-violet-list: \\\\\\\"violet\\\\\\\",\\\\n $oc-indigo-list: \\\\\\\"indigo\\\\\\\",\\\\n $oc-blue-list: \\\\\\\"blue\\\\\\\",\\\\n $oc-cyan-list: \\\\\\\"cyan\\\\\\\",\\\\n $oc-teal-list: \\\\\\\"teal\\\\\\\",\\\\n $oc-green-list: \\\\\\\"green\\\\\\\",\\\\n $oc-lime-list: \\\\\\\"lime\\\\\\\",\\\\n $oc-yellow-list: \\\\\\\"yellow\\\\\\\",\\\\n $oc-orange-list: \\\\\\\"orange\\\\\\\"\\\\n);\\\\n\\\"],\\\"sourceRoot\\\":\\\"\\\"}]);\\n// Exports\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUNPO0FBQ3BILDRDQUE0Qyw2akJBQWtSO0FBQzlULDRDQUE0QyxpbUJBQXFTO0FBQ2pWLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0YseUNBQXlDLDBHQUErQjtBQUN4RSx5Q0FBeUMsMEdBQStCO0FBQ3hFO0FBQ0EsbURBQW1ELGdEQUFnRCw2QkFBNkIsR0FBRyxhQUFhLGdEQUFnRCw2QkFBNkIsR0FBRyxpQkFBaUIseUJBQXlCLDJDQUEyQyx3Q0FBd0MsNkJBQTZCLDZCQUE2Qiw2QkFBNkIsOENBQThDLG1DQUFtQyxxRUFBcUUscUNBQXFDLCtCQUErQixxQ0FBcUMsZ0NBQWdDLDhCQUE4QixrQ0FBa0Msb0NBQW9DLGlDQUFpQyxpREFBaUQsZ0NBQWdDLDBCQUEwQixrREFBa0QsOEJBQThCLHdDQUF3QyxnQ0FBZ0MseUNBQXlDLHVDQUF1QyxxQ0FBcUMsc0NBQXNDLG9DQUFvQyxzQ0FBc0MsaUZBQWlGLDRCQUE0QixrQ0FBa0MsNkJBQTZCLG9DQUFvQyxxQ0FBcUMsbUNBQW1DLGlDQUFpQywrQkFBK0IsR0FBRywyQkFBMkIsd0JBQXdCLEdBQUcsdURBQXVELHFCQUFxQixHQUFHLDJCQUEyQixtREFBbUQsMkNBQTJDLHdDQUF3Qyw2QkFBNkIsNkJBQTZCLDBCQUEwQiw4Q0FBOEMsbUNBQW1DLHFFQUFxRSxxQ0FBcUMsK0JBQStCLHFDQUFxQyxnQ0FBZ0MsOEJBQThCLGtDQUFrQyxvQ0FBb0MsaUNBQWlDLDhDQUE4QyxnQ0FBZ0MsMEJBQTBCLCtDQUErQyw4QkFBOEIscUNB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QVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLFFBQVEsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsTUFBTSxNQUFNLFVBQVUsVUFBVSxNQUFNLFFBQVEsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE9BQU8sVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsWUFBWSxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxVQUFVLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxXQUFXLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFlBQVksT0FBTyxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxVQUFVLE1BQU0sS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdB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QUFnRCxnREFBZ0QsZ0RBQWdELGdSQUFnUixrREFBa0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsOFFBQThRLGdEQUFnRCw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLGdSQUFnUixrREFBa0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ1JBQWdSLGtEQUFrRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCx5RkFBeUYsdWRBQXVkLHFCQUFxQjtBQUNsOCtDO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY3NzL3N0eWxlcy5zY3NzPzBkNTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI5Mi40XFxcIiBoZWlnaHQ9XFxcIjI5Mi40XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjkyIDI5MlxcXCI+PHBhdGggZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+XCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzFfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBmaWxsPVxcXCIlMjNjZWQ0ZGFcXFwiIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPlwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCI6ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IGludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiAzMDJweDtcXG59XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgLS10aGVtZS1maWx0ZXI6IG5vbmU7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1iZy1jb2xvcjogI2ZmZTNlMztcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjYzkyYTJhO1xcbiAgLS1idXR0b24tZ3JheS0xOiAjZTllY2VmO1xcbiAgLS1idXR0b24tZ3JheS0yOiAjY2VkNGRhO1xcbiAgLS1idXR0b24tZ3JheS0zOiAjYWRiNWJkO1xcbiAgLS1idXR0b24tc3BlY2lhbC1hY3RpdmUtYmctY29sb3I6ICNlYmZiZWU7XFxuICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICM4NjhlOTY7XFxuICAtLWRyb3Bkb3duLWljb246IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIik7XFxuICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI2E1ZDhmZjtcXG4gIC0taWNvbi1maWxsLWNvbG9yOiAjMjEyNTI5O1xcbiAgLS1pY29uLWdyZWVuLWZpbGwtY29sb3I6ICMyYjhhM2U7XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICNmZmZmZmY7XFxuICAtLWlucHV0LWJnLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1pbnB1dC1ib3JkZXItY29sb3I6ICNjZWQ0ZGE7XFxuICAtLWlucHV0LWhvdmVyLWJnLWNvbG9yOiAjZjFmM2Y1O1xcbiAgLS1pbnB1dC1sYWJlbC1jb2xvcjogIzQ5NTA1NztcXG4gIC0taXNsYW5kLWJnLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpO1xcbiAgLS1rZXliaW5kaW5nLWNvbG9yOiAjYWRiNWJkO1xcbiAgLS1saW5rLWNvbG9yOiAjMWM3ZWQ2O1xcbiAgLS1vdmVybGF5LWJnLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODgpO1xcbiAgLS1wb3B1cC1iZy1jb2xvcjogI2ZmZmZmZjtcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjZjFmM2Y1O1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjMDAwMDAwO1xcbiAgLS1wb3B1cC10ZXh0LWludmVydGVkLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1zYWI6IGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcXG4gIC0tc2FsOiBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpO1xcbiAgLS1zYXI6IGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpO1xcbiAgLS1zYXQ6IGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKTtcXG4gIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogIzMzOWFmMDtcXG4gIC0tc2hhZG93LWlzbGFuZDogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSksIDFweCAxcHggNXB4IHJnYigwIDAgMCAvIDEyJSk7XFxuICAtLXNwYWNlLWZhY3RvcjogMC4yNXJlbTtcXG4gIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiAjMzQzYTQwO1xcbiAgLS1jb2xvci1wcmltYXJ5OiAjNjk2NWRiO1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlcjogIzViNTdkMTtcXG4gIC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0OiAjNGE0N2IxO1xcbiAgLS1jb2xvci1wcmltYXJ5LWxpZ2h0OiAjZTJlMWZjO1xcbiAgLS1ib3JkZXItcmFkaXVzLW1kOiAwLjM3NXJlbTtcXG4gIC0tYm9yZGVyLXJhZGl1cy1sZzogMC41cmVtO1xcbn1cXG4uZXhjYWxpZHJhdy50aGVtZS0tZGFyayB7XFxuICBiYWNrZ3JvdW5kOiAjMDAwMDAwO1xcbn1cXG4uZXhjYWxpZHJhdy50aGVtZS0tZGFyay50aGVtZS0tZGFyay1iYWNrZ3JvdW5kLW5vbmUge1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcudGhlbWUtLWRhcmsge1xcbiAgLS10aGVtZS1maWx0ZXI6IGludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjNWEwMDAwO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtY29sb3I6ICNmZmE4YTg7XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICMzNjM2MzY7XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICMyNzI3Mjc7XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICMyMjI7XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogIzIwNDYyNDtcXG4gIC0tZGlhbG9nLWJvcmRlci1jb2xvcjogIzIxMjUyOTtcXG4gIC0tZHJvcGRvd24taWNvbjogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyArIFwiKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjMjI4YmU2O1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICNjZWQ0ZGE7XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogIzY5ZGI3YztcXG4gIC0tZGVmYXVsdC1iZy1jb2xvcjogIzEyMTIxMjtcXG4gIC0taW5wdXQtYmctY29sb3I6ICMxMjEyMTI7XFxuICAtLWlucHV0LWJvcmRlci1jb2xvcjogIzJlMmUyZTtcXG4gIC0taW5wdXQtaG92ZXItYmctY29sb3I6ICMxODE4MTg7XFxuICAtLWlucHV0LWxhYmVsLWNvbG9yOiAjZTllY2VmO1xcbiAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC45OCk7XFxuICAtLWtleWJpbmRpbmctY29sb3I6ICM4NjhlOTY7XFxuICAtLWxpbmstY29sb3I6ICM0ZGFiZjc7XFxuICAtLW92ZXJsYXktYmctY29sb3I6IHJnYmEoNTIsIDU4LCA2NCwgMC4xMik7XFxuICAtLXBvcHVwLWJnLWNvbG9yOiAjMmMyYzJjO1xcbiAgLS1wb3B1cC1zZWNvbmRhcnktYmctY29sb3I6ICMyMjI7XFxuICAtLXBvcHVwLXRleHQtY29sb3I6ICNjZWQ0ZGE7XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICMyYzJjMmM7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICM0ZGFiZjc7XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDFweCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1jb2xvci1wcmltYXJ5OiAjNTY1MGYwO1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlcjogIzRiNDZkODtcXG4gIC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0OiAjM2UzOWJlO1xcbiAgLS1jb2xvci1wcmltYXJ5LWxpZ2h0OiAjM2YzZDY0O1xcbn1cXG5cXG46cm9vdCB7XFxuICAtLXpJbmRleC1jYW52YXM6IDE7XFxuICAtLXpJbmRleC13eXNpd3lnOiAyO1xcbiAgLS16SW5kZXgtbGF5ZXJVSTogMztcXG59XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3OmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IGEge1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgYTpob3ZlciB7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG59XFxuLmV4Y2FsaWRyYXcgY2FudmFzIHtcXG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcXG4gIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO1xcbiAgei1pbmRleDogdmFyKC0tekluZGV4LWNhbnZhcyk7XFxufVxcbi5leGNhbGlkcmF3X19jYW52YXMge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbn1cXG4uZXhjYWxpZHJhdy50aGVtZS0tZGFyayBjYW52YXMge1xcbiAgZmlsdGVyOiB2YXIoLS10aGVtZS1maWx0ZXIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuRml4ZWRTaWRlQ29udGFpbmVyIHtcXG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zYXQsIDApO1xcbiAgcGFkZGluZy1yaWdodDogdmFyKC0tc2FyLCAwKTtcXG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zYWIsIDApO1xcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxSb3cge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gaDMsXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIGxlZ2VuZCxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmNvbnRyb2wtbGFiZWwge1xcbiAgbWFyZ2luLXRvcDogMC4zMzNyZW07XFxuICBtYXJnaW4tYm90dG9tOiAwLjMzM3JlbTtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5jb250cm9sLWxhYmVsIGlucHV0IHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBoMzpmaXJzdC1jaGlsZCxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kOmZpcnN0LWNoaWxkLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuY29udHJvbC1sYWJlbDpmaXJzdC1jaGlsZCB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kIHtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuaWNvblNlbGVjdExpc3Qge1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3Qge1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgaW5wdXRbdHlwZT1yYWRpb10sXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IGlucHV0W3R5cGU9YnV0dG9uXSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuaWNvblJvdyB7XFxuICBtYXJnaW4tdG9wOiA4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgbWFyZ2luLWlubGluZS1lbmQ6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbjpmb2N1cyB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbjpkaXNhYmxlZCB7XFxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uX19pY29uIHtcXG4gIHdpZHRoOiAyOHB4O1xcbiAgaGVpZ2h0OiAyOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gZmllbGRzZXQge1xcbiAgbWFyZ2luOiAwO1xcbiAgbWFyZ2luLXRvcDogMC4zMzNyZW07XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAuZGl2aWRlciB7XFxuICB3aWR0aDogMXB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcXG4gIG1hcmdpbjogMXB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbDpmb2N1cy13aXRoaW4sXFxuLmV4Y2FsaWRyYXcgaW5wdXQ6Zm9jdXMtdmlzaWJsZSB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b24sXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpO1xcbiAgbWFyZ2luOiAwLjEyNXJlbSAwO1xcbiAgcGFkZGluZzogMC4yNXJlbTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbjpmb2N1cy12aXNpYmxlLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXZpc2libGUge1xcbiAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmhvdmVyLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246YWN0aXZlLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmRpc2FibGVkLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5hY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICNmZmZmZmY7XFxufVxcbi5leGNhbGlkcmF3IC5hY3RpdmU6aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZTphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlc3QpO1xcbn1cXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdC5idXR0b25MaXN0SWNvbiBsYWJlbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24gbGFiZWwgc3ZnIHtcXG4gIHdpZHRoOiAzNXB4O1xcbiAgaGVpZ2h0OiAxNHB4O1xcbiAgcGFkZGluZzogMnB4O1xcbiAgb3BhY2l0eTogMC42O1xcbn1cXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdC5idXR0b25MaXN0SWNvbiBsYWJlbC5hY3RpdmUgc3ZnIHtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9wLWJhciB7XFxuICB6LWluZGV4OiB2YXIoLS16SW5kZXgtbGF5ZXJVSSk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICAtLWJhci1wYWRkaW5nOiBjYWxjKDQgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKTtcXG4gIHBhZGRpbmctdG9wOiBtYXgodmFyKC0tYmFyLXBhZGRpbmcpLCB2YXIoLS1zYXQsMCkpO1xcbiAgcGFkZGluZy1yaWdodDogdmFyKC0tc2FyLCAwKTtcXG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zYWIsIDApO1xcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgei1pbmRleDogNDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1ib3R0b20tYmFyID4gLklzbGFuZCB7XFxuICAvKndpZHRoOiAxMDAlOyAvL3pzdmljemlhbiovXFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICAvKm1pbi13aWR0aDogMTAwJTsgLy96c3ZpY3ppYW4qL1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIgPiAuSXNsYW5kIC5wYW5lbENvbHVtbiB7XFxuICBwYWRkaW5nOiA4cHggOHB4IDAgOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIgLmVyYXNlci5Ub29sSWNvbjpob3ZlciB7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZjtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI2ZmZjtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC10b29sYmFyIC5lcmFzZXIuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXItY29udGVudCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIHBhZGRpbmc6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tb2JpbGUtbWVudSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG4gIG1pbi1oZWlnaHQ6IDI1MHB4O1xcbiAgLyogLy96c3ZpY3ppYW4gKi9cXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51IHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X3RvcCB7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWF4LWNvbnRlbnQgYXV0bztcXG4gIGdyaWQtZ2FwOiA0cHg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5sYXllci11aV9fd3JhcHBlcjpub3QoLmRpc2FibGUtcG9pbnRlckV2ZW50cykgLkFwcC1tZW51X3RvcCA+ICoge1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X3RvcCA+ICo6Zmlyc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wID4gKjpsYXN0LWNoaWxkIHtcXG4gIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwO1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCBhdXRvIG1pbi1jb250ZW50O1xcbiAgZ3JpZC1nYXA6IDE1cHg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbjpyb290W2Rpcj1sdHJdIC5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20ge1xcbiAgbGVmdDogMC4yNXJlbTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICByaWdodDogMC4yNXJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbS0tdHJhbnNpdGlvbi1sZWZ0IHNlY3Rpb24ge1xcbiAgd2lkdGg6IDE4NXB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tIHNlY3Rpb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSA+ICo6Zmlyc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tID4gKjpsYXN0LWNoaWxkIHtcXG4gIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9sZWZ0IHtcXG4gIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG8gMWZyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfcmlnaHQge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9fbGVmdCB7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWlzbGFuZCk7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcbiAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuekluZGV4QnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICBwYWRkaW5nOiA1cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLnpJbmRleEJ1dHRvbiBzdmcge1xcbiAgd2lkdGg6IDE4cHg7XFxuICBoZWlnaHQ6IDE4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC10ZXh0LWNvbG9yKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvdHRvbTogMzBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZpbGw6ICM4NjhlOTY7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuaGVscC1pY29uIHN2ZyB7XFxuICB3aWR0aDogMS41cmVtO1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnJlc2V0LXpvb20tYnV0dG9uIHtcXG4gIHBhZGRpbmc6IDAuMmVtO1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG59XFxuLmV4Y2FsaWRyYXcgLmZpbmFsaXplLWJ1dHRvbiB7XFxuICBkaXNwbGF5OiBncmlkO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gIGdhcDogMC40ZW07XFxuICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgbWFyZ2luLWJvdHRvbTogYXV0bztcXG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAudW5kby1yZWRvLWJ1dHRvbnMsXFxuLmV4Y2FsaWRyYXcgLmVyYXNlci1idXR0b25zIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgZ2FwOiAwLjRlbTtcXG4gIG1hcmdpbi10b3A6IGF1dG87XFxuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyBhc2lkZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy0tbW9iaWxlLmV4Y2FsaWRyYXcgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgYm90dG9tOiBjYWxjKDgwcHggKyB2YXIoLS1zYWIsIDApKTtcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAucnRsLW1pcnJvciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgd2lkdGg6IGF1dG87XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5Lnplbi1tb2RlLXZpc2liaWxpdHktLWhpZGRlbiB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC5kaXNhYmxlLXBvaW50ZXJFdmVudHMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcuZXhjYWxpZHJhdy0tdmlldy1tb2RlIC5BcHAtbWVudSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKSB7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWJnLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgaW5wdXRbdHlwZT10ZXh0XTpub3QoOmZvY3VzKTpob3ZlcixcXG4uZXhjYWxpZHJhdyB0ZXh0YXJlYTpub3QoLmV4Y2FsaWRyYXctd3lzaXd5Zyk6bm90KDpmb2N1cyk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtaG92ZXItYmctY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKTpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbkBtZWRpYSBwcmludCB7XFxuICAuZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIsXFxuLmV4Y2FsaWRyYXcgLkZpeGVkU2lkZUNvbnRhaW5lcixcXG4uZXhjYWxpZHJhdyAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA1cHg7XFxufVxcbi5leGNhbGlkcmF3IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB1c2VyLXNlbGVjdDogdGV4dDtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLkVycm9yU3BsYXNoLW1lc3NhZ2VDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBwYWRkaW5nOiA0MHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTNlMztcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNjOTJhMmE7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1wYXJhZ3JhcGgge1xcbiAgbWFyZ2luOiAxNXB4IDA7XFxuICBtYXgtd2lkdGg6IDYwMHB4O1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoLmFsaWduLWNlbnRlciB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5iaWdnZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLmJpZ2dlciBidXR0b24ge1xcbiAgZm9udC1zaXplOiAxLjFlbTtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIgYnV0dG9uIHtcXG4gIGZvbnQtc2l6ZTogMC45ZW07XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHRleHRhcmVhIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAxMHB4IDA7XFxuICBmb250LWZhbWlseTogXFxcIkNhc2NhZGlhXFxcIjtcXG4gIGZvbnQtc2l6ZTogMC44ZW07XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY3NzL3RoZW1lLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9vcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBRDhCQTtFQUNFLDJDQUFBO0VBQ0Esd0JBQUE7QUMzQkY7O0FDTEE7RUFDRSxvQkFBQTtFQUNBLHNDQUFBO0VBQ0EsbUNBQUE7RUFDQSx3QkFBQTtFQUNBLHdCQUFBO0VBQ0Esd0JBQUE7RUFDQSx5Q0FBQTtFQUNBLDhCQUFBO0VBQ0Esd0RBQUE7RUFD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Qko7QUFDRjtBQTBCRTtFQUNFLFVBQUE7QUF4Qko7QUEwQkU7RUFDRSxnQ0FBQTtFQUNBLG1CQUFBO0FBeEJKO0FBMEJFO0VBQ0UsZ0NBQUE7QUF4Qko7QUEwQkU7RUFDRSxnQ0FBQTtBQXhCSjs7QUE0QkE7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFDQSxpQkFBQTtBQXpCRjtBQTJCRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFFQSxhQUFBO0VBQ0EseUJFamlCTztFRmtpQlAseUJBQUE7QUExQko7QUE2QkU7RUFDRSxjQUFBO0VBQ0EsZ0JBQUE7QUEzQko7QUE2Qkk7RUFDRSxrQkFBQTtBQTNCTjtBQStCRTs7RUFFRSxnQkFBQTtBQTdCSjtBQWdDRTs7RUFFRSxnQkFBQTtBQTlCSjtBQWlDRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLHVCQUFBO0FBL0JKO0FBaUNJO0VBQ0UsV0FBQTtFQUNBLGNBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0FBL0JOXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcIm9wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXFxcIjtcXG5cXG5AbWl4aW4gaXNNb2JpbGUoKSB7XFxuICBAYXQtcm9vdCAuZXhjYWxpZHJhdy0tbW9iaWxlI3smfSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gdG9vbGJhckJ1dHRvbkNvbG9yU3RhdGVzIHtcXG4gIC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbiAgLlRvb2xJY29uX3R5cGVfY2hlY2tib3gge1xcbiAgICAmICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICAtLWljb24tZmlsbC1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19rZXliaW5kaW5nIHtcXG4gICAgYm90dG9tOiA0cHg7XFxuICAgIHJpZ2h0OiA0cHg7XFxuICB9XFxufVxcblxcbiR0aGVtZS1maWx0ZXI6IFxcXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcXFwiO1xcbiRyaWdodC1zaWRlYmFyLXdpZHRoOiBcXFwiMzAycHhcXFwiO1xcblxcbjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IHVucXVvdGUoJHRoZW1lLWZpbHRlcik7XFxuICByaWdodFNpZGViYXJXaWR0aDogdW5xdW90ZSgkcmlnaHQtc2lkZWJhci13aWR0aCk7XFxufVxcblwiLFwiQGltcG9ydCBcXFwiLi92YXJpYWJsZXMubW9kdWxlXFxcIjtcXG5AaW1wb3J0IFxcXCIuL3RoZW1lXFxcIjtcXG5cXG46cm9vdCB7XFxuICAtLXpJbmRleC1jYW52YXM6IDE7XFxuICAtLXpJbmRleC13eXNpd3lnOiAyO1xcbiAgLS16SW5kZXgtbGF5ZXJVSTogMztcXG59XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcblxcbiAgJjpmb2N1cyB7XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICB9XFxuXFxuICAvLyBzZXJ2ZXMgMiBwdXJwb3NlczpcXG4gIC8vIDEuIHByZXZlbnQgc2VsZWN0aW5nIHRleHQgb3V0c2lkZSB0aGUgY29tcG9uZW50IHdoZW4gZG91YmxlLWNsaWNraW5nIG9yXFxuICAvLyAgICBkcmFnZ2luZyBpbnNpZGUgaXQgKGUuZy4gb24gY2FudmFzKVxcbiAgLy8gMi4gcHJldmVudCBzZWxlY3RpbmcgVUksIGJvdGggZnJvbSB0aGUgaW5zaWRlLCBhbmQgZnJvbSBvdXRzaWRlIHRoZVxcbiAgLy8gICAgY29tcG9uZW50IChlLmcuIGlmIHlvdSBzZWxlY3QgdGV4dCBpbiBhIHNpZGViYXIpXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG5cXG4gIGEge1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIGNhbnZhcyB7XFxuICAgIHRvdWNoLWFjdGlvbjogbm9uZTtcXG5cXG4gICAgLy8gZm9sbG93aW5nIHByb3BzIGltcHJvdmUgYmx1cnJpbmVzcyBhdCBjZXJ0YWluIGRldmljZVBpeGVsUmF0aW9zLlxcbiAgICAvLyBBRkFJSyBpdCBkb2Vzbid0IGFmZmVjdCBleHBvcnQgKGluIGZhY3QsIGV4cG9ydCBzZWVtcyBzaGFycCBlaXRoZXIgd2F5KS5cXG5cXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7IC8vIGNocm9taXVtXFxuICAgIC8vIE5PVEU6IG11c3QgYmUgZGVjbGFyZWQgKmFmdGVyKiB0aGUgYWJvdmVcXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzOyAvLyBGRlxcblxcbiAgICB6LWluZGV4OiB2YXIoLS16SW5kZXgtY2FudmFzKTtcXG5cXG4gICAgLy8gUmVtb3ZlIHRoZSBtYWluIGNhbnZhcyBmcm9tIGRvY3VtZW50IGZsb3cgdG8gYXZvaWQgcmVzaXplT2JzZXJ2ZXJcXG4gICAgLy8gZmVlZGJhY2sgbG9vcCAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8zMzc5KVxcbiAgfVxcblxcbiAgJl9fY2FudmFzIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgfVxcblxcbiAgJi50aGVtZS0tZGFyayB7XFxuICAgIC8vIFRoZSBwZXJjZW50YWdlIGlzIGluc3BpcmVkIGJ5XFxuICAgIC8vIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbG9yL2RhcmstdGhlbWUuaHRtbCNwcm9wZXJ0aWVzLCB3aGljaFxcbiAgICAvLyByZWNvbW1lbmRzIHN1cmZhY2UgY29sb3Igb2YgIzEyMTIxMiwgOTMlIHlpZWxkcyAjMTExMTExIGZvciAjRkZGXFxuXFxuICAgIGNhbnZhcyB7XFxuICAgICAgZmlsdGVyOiB2YXIoLS10aGVtZS1maWx0ZXIpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuRml4ZWRTaWRlQ29udGFpbmVyIHtcXG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNhdCwgMCk7XFxuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNhciwgMCk7XFxuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zYWIsIDApO1xcbiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxuICB9XFxuXFxuICAucGFuZWxSb3cge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICB9XFxuXFxuICAucGFuZWxDb2x1bW4ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblxcbiAgICBoMyxcXG4gICAgbGVnZW5kLFxcbiAgICAuY29udHJvbC1sYWJlbCB7XFxuICAgICAgbWFyZ2luLXRvcDogMC4zMzNyZW07XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMC4zMzNyZW07XFxuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgIC5jb250cm9sLWxhYmVsIGlucHV0IHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgfVxcblxcbiAgICBoMzpmaXJzdC1jaGlsZCxcXG4gICAgbGVnZW5kOmZpcnN0LWNoaWxkLFxcbiAgICAuY29udHJvbC1sYWJlbDpmaXJzdC1jaGlsZCB7XFxuICAgICAgbWFyZ2luLXRvcDogMDtcXG4gICAgfVxcblxcbiAgICBsZWdlbmQge1xcbiAgICAgIHBhZGRpbmc6IDA7XFxuICAgIH1cXG5cXG4gICAgLmljb25TZWxlY3RMaXN0IHtcXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICB9XFxuXFxuICAgIC5idXR0b25MaXN0IHtcXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XFxuXFxuICAgICAgbGFiZWwge1xcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICAgIH1cXG5cXG4gICAgICBpbnB1dFt0eXBlPVxcXCJyYWRpb1xcXCJdLFxcbiAgICAgIGlucHV0W3R5cGU9XFxcImJ1dHRvblxcXCJdIHtcXG4gICAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgICB9XFxuXFxuICAgICAgLmljb25Sb3cge1xcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xcbiAgICAgIH1cXG5cXG4gICAgICAuVG9vbEljb24ge1xcbiAgICAgICAgbWFyZ2luOiAwO1xcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDhweDtcXG5cXG4gICAgICAgICY6Zm9jdXMge1xcbiAgICAgICAgICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmOmFjdGl2ZSB7XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjpkaXNhYmxlZCB7XFxuICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgICB3aWR0aDogMjhweDtcXG4gICAgICAgIGhlaWdodDogMjhweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgZmllbGRzZXQge1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmRpdmlkZXIge1xcbiAgICB3aWR0aDogMXB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2MtZ3JheS0yO1xcbiAgICBtYXJnaW46IDFweDtcXG4gIH1cXG5cXG4gIC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXdpdGhpbixcXG4gIGlucHV0OmZvY3VzLXZpc2libGUge1xcbiAgICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICB9XFxuXFxuICBidXR0b24sXFxuICAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTtcXG4gICAgbWFyZ2luOiAwLjEyNXJlbSAwO1xcbiAgICBwYWRkaW5nOiAwLjI1cmVtO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuXFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgICB9XFxuXFxuICAgICY6ZGlzYWJsZWQge1xcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5hY3RpdmUsXFxuICAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG5cXG4gICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlc3QpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYnV0dG9uTGlzdC5idXR0b25MaXN0SWNvbiB7XFxuICAgIGxhYmVsIHtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIHN2ZyB7XFxuICAgICAgICB3aWR0aDogMzVweDtcXG4gICAgICAgIGhlaWdodDogMTRweDtcXG4gICAgICAgIHBhZGRpbmc6IDJweDtcXG4gICAgICAgIG9wYWNpdHk6IDAuNjtcXG4gICAgICB9XFxuICAgICAgJi5hY3RpdmUgc3ZnIHtcXG4gICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLXRvcC1iYXIge1xcbiAgICB6LWluZGV4OiB2YXIoLS16SW5kZXgtbGF5ZXJVSSk7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICB9XFxuXFxuICAuQXBwLWJvdHRvbS1iYXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgLS1iYXItcGFkZGluZzogY2FsYyg0ICogdmFyKC0tc3BhY2UtZmFjdG9yKSk7XFxuICAgIHBhZGRpbmctdG9wOiAje1xcXCJtYXgodmFyKC0tYmFyLXBhZGRpbmcpLCB2YXIoLS1zYXQsMCkpXFxcIn07XFxuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNhciwgMCk7XFxuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zYWIsIDApO1xcbiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxuICAgIHotaW5kZXg6IDQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFxuICAgID4gLklzbGFuZCB7XFxuICAgICAgLyp3aWR0aDogMTAwJTsgLy96c3ZpY3ppYW4qL1xcbiAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICAvKm1pbi13aWR0aDogMTAwJTsgLy96c3ZpY3ppYW4qL1xcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgbWF4LWhlaWdodDogMTAwJTtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxuXFxuICAgICAgLnBhbmVsQ29sdW1uIHtcXG4gICAgICAgIHBhZGRpbmc6IDhweCA4cHggMCA4cHg7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLXRvb2xiYXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG5cXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXG4gICAgLmVyYXNlciB7XFxuICAgICAgJi5Ub29sSWNvbjpob3ZlciB7XFxuICAgICAgICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZjtcXG4gICAgICAgIC0ta2V5YmluZGluZy1jb2xvcjogI2ZmZjtcXG4gICAgICB9XFxuICAgICAgJi5hY3RpdmUge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLXRvb2xiYXItY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgcGFkZGluZzogOHB4O1xcbiAgfVxcblxcbiAgLkFwcC1tb2JpbGUtbWVudSB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBvdmVyZmxvdy14OiB2aXNpYmxlO1xcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1iYXItcGFkZGluZyk7XFxuICAgIG1pbi1oZWlnaHQ6IDI1MHB4OyAvKiAvL3pzdmljemlhbiAqL1xcbiAgfVxcblxcbiAgLkFwcC1tZW51IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfdG9wIHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1heC1jb250ZW50IGF1dG87XFxuICAgIGdyaWQtZ2FwOiA0cHg7XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxuICB9XFxuXFxuICAubGF5ZXItdWlfX3dyYXBwZXI6bm90KC5kaXNhYmxlLXBvaW50ZXJFdmVudHMpIC5BcHAtbWVudV90b3AgPiAqIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV90b3AgPiAqOmZpcnN0LWNoaWxkIHtcXG4gICAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3RvcCA+ICo6bGFzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfYm90dG9tIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IDA7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWluLWNvbnRlbnQgYXV0byBtaW4tY29udGVudDtcXG4gICAgZ3JpZC1nYXA6IDE1cHg7XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxuXFxuICAgIDpyb290W2Rpcj1cXFwibHRyXFxcIl0gJiB7XFxuICAgICAgbGVmdDogMC4yNXJlbTtcXG4gICAgfVxcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIHJpZ2h0OiAwLjI1cmVtO1xcbiAgICB9XFxuXFxuICAgICYtLXRyYW5zaXRpb24tbGVmdCB7XFxuICAgICAgc2VjdGlvbiB7XFxuICAgICAgICB3aWR0aDogMTg1cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIHNlY3Rpb24ge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9ib3R0b20gPiAqOmZpcnN0LWNoaWxkIHtcXG4gICAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSA+ICo6bGFzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfbGVmdCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG8gMWZyO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfcmlnaHQge1xcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X19sZWZ0IHtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWlzbGFuZCk7XFxuICB9XFxuXFxuICAuZHJvcGRvd24tc2VsZWN0IHtcXG4gICAgaGVpZ2h0OiAxLjVyZW07XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwLjVyZW07XFxuICAgIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xcbiAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICBmb250LXNpemU6IDAuOHJlbTtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tZHJvcGRvd24taWNvbik7XFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxuXFxuICAgIDpyb290W2Rpcj1cXFwicnRsXFxcIl0gJiB7XFxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcbiAgICB9XFxuXFxuICAgIGJhY2tncm91bmQtc2l6ZTogMC42NWVtIGF1dG8sIDEwMCU7XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnpJbmRleEJ1dHRvbiB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IDhweDtcXG4gICAgcGFkZGluZzogNXB4O1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IDE4cHg7XFxuICAgICAgaGVpZ2h0OiAxOHB4O1xcbiAgICB9XFxuICB9XFxuXFxuICAuc2Nyb2xsLWJhY2stdG8tY29udGVudCB7XFxuICAgIGNvbG9yOiB2YXIoLS1wb3B1cC10ZXh0LWNvbG9yKTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBsZWZ0OiA1MCU7XFxuICAgIGJvdHRvbTogMzBweDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB9XFxuXFxuICAuaGVscC1pY29uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBmaWxsOiAkb2MtZ3JheS02O1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiAxLjVyZW07XFxuICAgICAgaGVpZ2h0OiAxLjVyZW07XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnJlc2V0LXpvb20tYnV0dG9uIHtcXG4gICAgcGFkZGluZzogMC4yZW07XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXVpLWZvbnQpO1xcbiAgfVxcblxcbiAgLmZpbmFsaXplLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XFxuICAgIGdhcDogMC40ZW07XFxuICAgIG1hcmdpbi10b3A6IGF1dG87XFxuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XFxuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNmVtO1xcbiAgfVxcblxcbiAgLnVuZG8tcmVkby1idXR0b25zLFxcbiAgLmVyYXNlci1idXR0b25zIHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gICAgZ2FwOiAwLjRlbTtcXG4gICAgbWFyZ2luLXRvcDogYXV0bztcXG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcXG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxuICB9XFxuXFxuICBAaW5jbHVkZSBpc01vYmlsZSB7XFxuICAgIGFzaWRlIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICAgIC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gICAgICBib3R0b206IGNhbGMoODBweCArIHZhcigtLXNhYiwgMCkpO1xcbiAgICAgIHotaW5kZXg6IC0xO1xcbiAgICB9XFxuICB9XFxuXFxuICAucnRsLW1pcnJvciB7XFxuICAgIDpyb290W2Rpcj1cXFwicnRsXFxcIl0gJiB7XFxuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuemVuLW1vZGUtdmlzaWJpbGl0eSB7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgd2lkdGg6IGF1dG87XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG5cXG4gICAgJi56ZW4tbW9kZS12aXNpYmlsaXR5LS1oaWRkZW4ge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgICBvcGFjaXR5OiAwO1xcbiAgICAgIGhlaWdodDogMDtcXG4gICAgICB3aWR0aDogMDtcXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kaXNhYmxlLXBvaW50ZXJFdmVudHMge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgJi5leGNhbGlkcmF3LS12aWV3LW1vZGUge1xcbiAgICAuQXBwLW1lbnUge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICB9XFxuICB9XFxuXFxuICBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl0sXFxuICB0ZXh0YXJlYTpub3QoLmV4Y2FsaWRyYXctd3lzaXd5Zykge1xcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpO1xcbiAgICBwYWRkaW5nOiAwLjc1cmVtO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1iZy1jb2xvcik7XFxuXFxuICAgICY6bm90KDpmb2N1cykge1xcbiAgICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtaG92ZXItYmctY29sb3IpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICB9XFxuICB9XFxuXFxuICBAbWVkaWEgcHJpbnQge1xcbiAgICAuQXBwLWJvdHRvbS1iYXIsXFxuICAgIC5GaXhlZFNpZGVDb250YWluZXIsXFxuICAgIC5sYXllci11aV9fd3JhcHBlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLy8gdXNlIGN1c3RvbSwgbWluaW1hbGlzdGljIHNjcm9sbGJhclxcbiAgLy8gKGRvZXNuJ3Qgd29yayBpbiBGaXJlZm94KVxcbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XFxuICAgIHdpZHRoOiA1cHg7XFxuICB9XFxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICB9XFxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICB9XFxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgfVxcbn1cXG5cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyB7XFxuICBtaW4taGVpZ2h0OiAxMDB2aDtcXG4gIHBhZGRpbmc6IDIwcHggMDtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHVzZXItc2VsZWN0OiB0ZXh0O1xcblxcbiAgLkVycm9yU3BsYXNoLW1lc3NhZ2VDb250YWluZXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXG4gICAgcGFkZGluZzogNDBweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9jLXJlZC0xO1xcbiAgICBib3JkZXI6IDNweCBzb2xpZCAkb2MtcmVkLTk7XFxuICB9XFxuXFxuICAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoIHtcXG4gICAgbWFyZ2luOiAxNXB4IDA7XFxuICAgIG1heC13aWR0aDogNjAwcHg7XFxuXFxuICAgICYuYWxpZ24tY2VudGVyIHtcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5iaWdnZXIsXFxuICAuYmlnZ2VyIGJ1dHRvbiB7XFxuICAgIGZvbnQtc2l6ZTogMS4xZW07XFxuICB9XFxuXFxuICAuc21hbGxlcixcXG4gIC5zbWFsbGVyIGJ1dHRvbiB7XFxuICAgIGZvbnQtc2l6ZTogMC45ZW07XFxuICB9XFxuXFxuICAuRXJyb3JTcGxhc2gtZGV0YWlscyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcblxcbiAgICB0ZXh0YXJlYSB7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAxMHB4IDA7XFxuICAgICAgZm9udC1mYW1pbHk6IFxcXCJDYXNjYWRpYVxcXCI7XFxuICAgICAgZm9udC1zaXplOiAwLjhlbTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIkBpbXBvcnQgXFxcIm9wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXFxcIjtcXG5AaW1wb3J0IFxcXCIuL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1xcXCI7XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgLS10aGVtZS1maWx0ZXI6IG5vbmU7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1iZy1jb2xvcjogI3skb2MtcmVkLTF9O1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtY29sb3I6ICN7JG9jLXJlZC05fTtcXG4gIC0tYnV0dG9uLWdyYXktMTogI3skb2MtZ3JheS0yfTtcXG4gIC0tYnV0dG9uLWdyYXktMjogI3skb2MtZ3JheS00fTtcXG4gIC0tYnV0dG9uLWdyYXktMzogI3skb2MtZ3JheS01fTtcXG4gIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjeyRvYy1ncmVlbi0wfTtcXG4gIC0tZGlhbG9nLWJvcmRlci1jb2xvcjogI3skb2MtZ3JheS02fTtcXG4gIC0tZHJvcGRvd24taWNvbjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPicpO1xcbiAgLS1mb2N1cy1oaWdobGlnaHQtY29sb3I6ICN7JG9jLWJsdWUtMn07XFxuICAtLWljb24tZmlsbC1jb2xvcjogI3skb2MtZ3JheS05fTtcXG4gIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjeyRvYy1ncmVlbi05fTtcXG4gIC0tZGVmYXVsdC1iZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgLS1pbnB1dC1iZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgLS1pbnB1dC1ib3JkZXItY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAtLWlucHV0LWhvdmVyLWJnLWNvbG9yOiAjeyRvYy1ncmF5LTF9O1xcbiAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI3skb2MtZ3JheS03fTtcXG4gIC0taXNsYW5kLWJnLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpO1xcbiAgLS1rZXliaW5kaW5nLWNvbG9yOiAjeyRvYy1ncmF5LTV9O1xcbiAgLS1saW5rLWNvbG9yOiAjeyRvYy1ibHVlLTd9O1xcbiAgLS1vdmVybGF5LWJnLWNvbG9yOiAje3RyYW5zcGFyZW50aXplKCRvYy13aGl0ZSwgMC4xMil9O1xcbiAgLS1wb3B1cC1iZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgLS1wb3B1cC1zZWNvbmRhcnktYmctY29sb3I6ICN7JG9jLWdyYXktMX07XFxuICAtLXBvcHVwLXRleHQtY29sb3I6ICN7JG9jLWJsYWNrfTtcXG4gIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgLS1zYWI6IGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcXG4gIC0tc2FsOiBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpO1xcbiAgLS1zYXI6IGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpO1xcbiAgLS1zYXQ6IGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKTtcXG4gIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS01fTtcXG4gIC0tc2hhZG93LWlzbGFuZDogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSksIDFweCAxcHggNXB4IHJnYigwIDAgMCAvIDEyJSk7XFxuXFxuICAtLXNwYWNlLWZhY3RvcjogMC4yNXJlbTtcXG4gIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiAjeyRvYy1ncmF5LTh9O1xcblxcbiAgLS1jb2xvci1wcmltYXJ5OiAjNjk2NWRiO1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlcjogIzViNTdkMTtcXG4gIC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0OiAjNGE0N2IxO1xcbiAgLS1jb2xvci1wcmltYXJ5LWxpZ2h0OiAjZTJlMWZjO1xcblxcbiAgLS1ib3JkZXItcmFkaXVzLW1kOiAwLjM3NXJlbTtcXG4gIC0tYm9yZGVyLXJhZGl1cy1sZzogMC41cmVtO1xcblxcbiAgJi50aGVtZS0tZGFyayB7XFxuICAgIGJhY2tncm91bmQ6ICRvYy1ibGFjaztcXG5cXG4gICAgJi50aGVtZS0tZGFyay1iYWNrZ3JvdW5kLW5vbmUge1xcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICAtLXRoZW1lLWZpbHRlcjogI3skdGhlbWUtZmlsdGVyfTtcXG4gICAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICM1YTAwMDA7XFxuICAgIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjeyRvYy1yZWQtM307XFxuICAgIC0tYnV0dG9uLWdyYXktMTogIzM2MzYzNjtcXG4gICAgLS1idXR0b24tZ3JheS0yOiAjMjcyNzI3O1xcbiAgICAtLWJ1dHRvbi1ncmF5LTM6ICMyMjI7XFxuICAgIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjMjA0NjI0O1xcbiAgICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICN7JG9jLWdyYXktOX07XFxuICAgIC0tZHJvcGRvd24taWNvbjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGZpbGw9XFxcIiUyM2NlZDRkYVxcXCIgZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+Jyk7XFxuICAgIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjeyRvYy1ibHVlLTZ9O1xcbiAgICAtLWljb24tZmlsbC1jb2xvcjogI3skb2MtZ3JheS00fTtcXG4gICAgLS1pY29uLWdyZWVuLWZpbGwtY29sb3I6ICN7JG9jLWdyZWVuLTR9O1xcbiAgICAtLWRlZmF1bHQtYmctY29sb3I6ICMxMjEyMTI7XFxuICAgIC0taW5wdXQtYmctY29sb3I6ICMxMjEyMTI7XFxuICAgIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjMmUyZTJlO1xcbiAgICAtLWlucHV0LWhvdmVyLWJnLWNvbG9yOiAjMTgxODE4O1xcbiAgICAtLWlucHV0LWxhYmVsLWNvbG9yOiAjeyRvYy1ncmF5LTJ9O1xcbiAgICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgzMCwgMzAsIDMwLCAwLjk4KTtcXG4gICAgLS1rZXliaW5kaW5nLWNvbG9yOiAjeyRvYy1ncmF5LTZ9O1xcbiAgICAtLWxpbmstY29sb3I6ICN7JG9jLWJsdWUtNH07XFxuICAgIC0tb3ZlcmxheS1iZy1jb2xvcjogI3t0cmFuc3BhcmVudGl6ZSgkb2MtZ3JheS04LCAwLjg4KX07XFxuICAgIC0tcG9wdXAtYmctY29sb3I6ICMyYzJjMmM7XFxuICAgIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjMjIyO1xcbiAgICAtLXBvcHVwLXRleHQtY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAgIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogIzJjMmMyYztcXG4gICAgLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yOiAjeyRvYy1ibHVlLTR9O1xcbiAgICAtLXNoYWRvdy1pc2xhbmQ6IDFweCAxcHggNXB4ICN7dHJhbnNwYXJlbnRpemUoJG9jLWJsYWNrLCAwLjcpfTtcXG4gICAgLS10ZXh0LXByaW1hcnktY29sb3I6ICN7JG9jLWdyYXktNH07XFxuXFxuICAgIC0tY29sb3ItcHJpbWFyeTogIzU2NTBmMDtcXG4gICAgLS1jb2xvci1wcmltYXJ5LWRhcmtlcjogIzRiNDZkODtcXG4gICAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICMzZTM5YmU7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1saWdodDogIzNmM2Q2NDtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vXFxuLy8gIPCdl5Yg8J2XoiDwnZefIPCdl6Ig8J2XpVxcbi8vICB2IDEuOS4xXFxuLy9cXG4vLyAg4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSBXFxuXFxuXFxuLy8gIEdlbmVyYWxcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXdoaXRlOiAgICAgICAgICNmZmZmZmY7XFxuJG9jLWJsYWNrOiAgICAgICAgICMwMDAwMDA7XFxuXFxuXFxuLy8gIEdyYXlcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyYXktbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjhmOWZhLFxcbiAgXFxcIjFcXFwiOiAjZjFmM2Y1LFxcbiAgXFxcIjJcXFwiOiAjZTllY2VmLFxcbiAgXFxcIjNcXFwiOiAjZGVlMmU2LFxcbiAgXFxcIjRcXFwiOiAjY2VkNGRhLFxcbiAgXFxcIjVcXFwiOiAjYWRiNWJkLFxcbiAgXFxcIjZcXFwiOiAjODY4ZTk2LFxcbiAgXFxcIjdcXFwiOiAjNDk1MDU3LFxcbiAgXFxcIjhcXFwiOiAjMzQzYTQwLFxcbiAgXFxcIjlcXFwiOiAjMjEyNTI5XFxuKTtcXG5cXG4kb2MtZ3JheS0wOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyYXktMTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmF5LTI6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JheS0zOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyYXktNDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmF5LTU6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JheS02OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyYXktNzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmF5LTg6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JheS05OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFJlZFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtcmVkLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjVmNSxcXG4gIFxcXCIxXFxcIjogI2ZmZTNlMyxcXG4gIFxcXCIyXFxcIjogI2ZmYzljOSxcXG4gIFxcXCIzXFxcIjogI2ZmYThhOCxcXG4gIFxcXCI0XFxcIjogI2ZmODc4NyxcXG4gIFxcXCI1XFxcIjogI2ZmNmI2YixcXG4gIFxcXCI2XFxcIjogI2ZhNTI1MixcXG4gIFxcXCI3XFxcIjogI2YwM2UzZSxcXG4gIFxcXCI4XFxcIjogI2UwMzEzMSxcXG4gIFxcXCI5XFxcIjogI2M5MmEyYVxcbik7XFxuXFxuJG9jLXJlZC0wOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtcmVkLTE6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1yZWQtMjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXJlZC0zOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtcmVkLTQ6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1yZWQtNTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXJlZC02OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtcmVkLTc6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1yZWQtODogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXJlZC05OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgUGlua1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtcGluay1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmYwZjYsXFxuICBcXFwiMVxcXCI6ICNmZmRlZWIsXFxuICBcXFwiMlxcXCI6ICNmY2MyZDcsXFxuICBcXFwiM1xcXCI6ICNmYWEyYzEsXFxuICBcXFwiNFxcXCI6ICNmNzgzYWMsXFxuICBcXFwiNVxcXCI6ICNmMDY1OTUsXFxuICBcXFwiNlxcXCI6ICNlNjQ5ODAsXFxuICBcXFwiN1xcXCI6ICNkNjMzNmMsXFxuICBcXFwiOFxcXCI6ICNjMjI1NWMsXFxuICBcXFwiOVxcXCI6ICNhNjFlNGRcXG4pO1xcblxcbiRvYy1waW5rLTA6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtcGluay0xOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXBpbmstMjogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1waW5rLTM6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtcGluay00OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXBpbmstNTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1waW5rLTY6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtcGluay03OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXBpbmstODogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1waW5rLTk6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JhcGVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyYXBlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjBmYyxcXG4gIFxcXCIxXFxcIjogI2YzZDlmYSxcXG4gIFxcXCIyXFxcIjogI2VlYmVmYSxcXG4gIFxcXCIzXFxcIjogI2U1OTlmNyxcXG4gIFxcXCI0XFxcIjogI2RhNzdmMixcXG4gIFxcXCI1XFxcIjogI2NjNWRlOCxcXG4gIFxcXCI2XFxcIjogI2JlNGJkYixcXG4gIFxcXCI3XFxcIjogI2FlM2VjOSxcXG4gIFxcXCI4XFxcIjogIzljMzZiNSxcXG4gIFxcXCI5XFxcIjogIzg2MmU5Y1xcbik7XFxuXFxuJG9jLWdyYXBlLTA6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyYXBlLTE6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyYXBlLTI6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXBlLTM6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyYXBlLTQ6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyYXBlLTU6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXBlLTY6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyYXBlLTc6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyYXBlLTg6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXBlLTk6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFZpb2xldFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdmlvbGV0LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2YzZjBmZixcXG4gIFxcXCIxXFxcIjogI2U1ZGJmZixcXG4gIFxcXCIyXFxcIjogI2QwYmZmZixcXG4gIFxcXCIzXFxcIjogI2IxOTdmYyxcXG4gIFxcXCI0XFxcIjogIzk3NzVmYSxcXG4gIFxcXCI1XFxcIjogIzg0NWVmNyxcXG4gIFxcXCI2XFxcIjogIzc5NTBmMixcXG4gIFxcXCI3XFxcIjogIzcwNDhlOCxcXG4gIFxcXCI4XFxcIjogIzY3NDFkOSxcXG4gIFxcXCI5XFxcIjogIzVmM2RjNFxcbik7XFxuXFxuJG9jLXZpb2xldC0wOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdmlvbGV0LTE6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy12aW9sZXQtMjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXZpb2xldC0zOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdmlvbGV0LTQ6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy12aW9sZXQtNTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXZpb2xldC02OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdmlvbGV0LTc6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy12aW9sZXQtODogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXZpb2xldC05OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgSW5kaWdvXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1pbmRpZ28tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZWRmMmZmLFxcbiAgXFxcIjFcXFwiOiAjZGJlNGZmLFxcbiAgXFxcIjJcXFwiOiAjYmFjOGZmLFxcbiAgXFxcIjNcXFwiOiAjOTFhN2ZmLFxcbiAgXFxcIjRcXFwiOiAjNzQ4ZmZjLFxcbiAgXFxcIjVcXFwiOiAjNWM3Y2ZhLFxcbiAgXFxcIjZcXFwiOiAjNGM2ZWY1LFxcbiAgXFxcIjdcXFwiOiAjNDI2M2ViLFxcbiAgXFxcIjhcXFwiOiAjM2I1YmRiLFxcbiAgXFxcIjlcXFwiOiAjMzY0ZmM3XFxuKTtcXG5cXG4kb2MtaW5kaWdvLTA6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1pbmRpZ28tMTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWluZGlnby0yOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtaW5kaWdvLTM6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1pbmRpZ28tNDogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWluZGlnby01OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtaW5kaWdvLTY6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1pbmRpZ28tNzogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWluZGlnby04OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtaW5kaWdvLTk6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBCbHVlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ibHVlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2U3ZjVmZixcXG4gIFxcXCIxXFxcIjogI2QwZWJmZixcXG4gIFxcXCIyXFxcIjogI2E1ZDhmZixcXG4gIFxcXCIzXFxcIjogIzc0YzBmYyxcXG4gIFxcXCI0XFxcIjogIzRkYWJmNyxcXG4gIFxcXCI1XFxcIjogIzMzOWFmMCxcXG4gIFxcXCI2XFxcIjogIzIyOGJlNixcXG4gIFxcXCI3XFxcIjogIzFjN2VkNixcXG4gIFxcXCI4XFxcIjogIzE5NzFjMixcXG4gIFxcXCI5XFxcIjogIzE4NjRhYlxcbik7XFxuXFxuJG9jLWJsdWUtMDogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ibHVlLTE6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtYmx1ZS0yOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWJsdWUtMzogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ibHVlLTQ6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtYmx1ZS01OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWJsdWUtNjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ibHVlLTc6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtYmx1ZS04OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWJsdWUtOTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDeWFuXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jeWFuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2UzZmFmYyxcXG4gIFxcXCIxXFxcIjogI2M1ZjZmYSxcXG4gIFxcXCIyXFxcIjogIzk5ZTlmMixcXG4gIFxcXCIzXFxcIjogIzY2ZDllOCxcXG4gIFxcXCI0XFxcIjogIzNiYzlkYixcXG4gIFxcXCI1XFxcIjogIzIyYjhjZixcXG4gIFxcXCI2XFxcIjogIzE1YWFiZixcXG4gIFxcXCI3XFxcIjogIzEwOThhZCxcXG4gIFxcXCI4XFxcIjogIzBjODU5OSxcXG4gIFxcXCI5XFxcIjogIzBiNzI4NVxcbik7XFxuXFxuJG9jLWN5YW4tMDogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1jeWFuLTE6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtY3lhbi0yOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWN5YW4tMzogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1jeWFuLTQ6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtY3lhbi01OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWN5YW4tNjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1jeWFuLTc6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtY3lhbi04OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWN5YW4tOTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBUZWFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy10ZWFsLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2U2ZmNmNSxcXG4gIFxcXCIxXFxcIjogI2MzZmFlOCxcXG4gIFxcXCIyXFxcIjogIzk2ZjJkNyxcXG4gIFxcXCIzXFxcIjogIzYzZTZiZSxcXG4gIFxcXCI0XFxcIjogIzM4ZDlhOSxcXG4gIFxcXCI1XFxcIjogIzIwYzk5NyxcXG4gIFxcXCI2XFxcIjogIzEyYjg4NixcXG4gIFxcXCI3XFxcIjogIzBjYTY3OCxcXG4gIFxcXCI4XFxcIjogIzA5OTI2OCxcXG4gIFxcXCI5XFxcIjogIzA4N2Y1Ylxcbik7XFxuXFxuJG9jLXRlYWwtMDogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy10ZWFsLTE6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdGVhbC0yOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXRlYWwtMzogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy10ZWFsLTQ6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdGVhbC01OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXRlYWwtNjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy10ZWFsLTc6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdGVhbC04OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXRlYWwtOTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBHcmVlblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtZ3JlZW4tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZWJmYmVlLFxcbiAgXFxcIjFcXFwiOiAjZDNmOWQ4LFxcbiAgXFxcIjJcXFwiOiAjYjJmMmJiLFxcbiAgXFxcIjNcXFwiOiAjOGNlOTlhLFxcbiAgXFxcIjRcXFwiOiAjNjlkYjdjLFxcbiAgXFxcIjVcXFwiOiAjNTFjZjY2LFxcbiAgXFxcIjZcXFwiOiAjNDBjMDU3LFxcbiAgXFxcIjdcXFwiOiAjMzdiMjRkLFxcbiAgXFxcIjhcXFwiOiAjMmY5ZTQ0LFxcbiAgXFxcIjlcXFwiOiAjMmI4YTNlXFxuKTtcXG5cXG4kb2MtZ3JlZW4tMDogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtZ3JlZW4tMTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JlZW4tMjogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JlZW4tMzogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtZ3JlZW4tNDogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JlZW4tNTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JlZW4tNjogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtZ3JlZW4tNzogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JlZW4tODogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JlZW4tOTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgTGltZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtbGltZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmNGZjZTMsXFxuICBcXFwiMVxcXCI6ICNlOWZhYzgsXFxuICBcXFwiMlxcXCI6ICNkOGY1YTIsXFxuICBcXFwiM1xcXCI6ICNjMGViNzUsXFxuICBcXFwiNFxcXCI6ICNhOWUzNGIsXFxuICBcXFwiNVxcXCI6ICM5NGQ4MmQsXFxuICBcXFwiNlxcXCI6ICM4MmM5MWUsXFxuICBcXFwiN1xcXCI6ICM3NGI4MTYsXFxuICBcXFwiOFxcXCI6ICM2NmE4MGYsXFxuICBcXFwiOVxcXCI6ICM1Yzk0MGRcXG4pO1xcblxcbiRvYy1saW1lLTA6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtbGltZS0xOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWxpbWUtMjogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1saW1lLTM6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtbGltZS00OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWxpbWUtNTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1saW1lLTY6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtbGltZS03OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWxpbWUtODogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1saW1lLTk6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgWWVsbG93XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy15ZWxsb3ctbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmOWRiLFxcbiAgXFxcIjFcXFwiOiAjZmZmM2JmLFxcbiAgXFxcIjJcXFwiOiAjZmZlYzk5LFxcbiAgXFxcIjNcXFwiOiAjZmZlMDY2LFxcbiAgXFxcIjRcXFwiOiAjZmZkNDNiLFxcbiAgXFxcIjVcXFwiOiAjZmNjNDE5LFxcbiAgXFxcIjZcXFwiOiAjZmFiMDA1LFxcbiAgXFxcIjdcXFwiOiAjZjU5ZjAwLFxcbiAgXFxcIjhcXFwiOiAjZjA4YzAwLFxcbiAgXFxcIjlcXFwiOiAjZTY3NzAwXFxuKTtcXG5cXG4kb2MteWVsbG93LTA6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy15ZWxsb3ctMTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXllbGxvdy0yOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MteWVsbG93LTM6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy15ZWxsb3ctNDogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXllbGxvdy01OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MteWVsbG93LTY6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy15ZWxsb3ctNzogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXllbGxvdy04OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MteWVsbG93LTk6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBPcmFuZ2VcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLW9yYW5nZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY0ZTYsXFxuICBcXFwiMVxcXCI6ICNmZmU4Y2MsXFxuICBcXFwiMlxcXCI6ICNmZmQ4YTgsXFxuICBcXFwiM1xcXCI6ICNmZmMwNzgsXFxuICBcXFwiNFxcXCI6ICNmZmE5NGQsXFxuICBcXFwiNVxcXCI6ICNmZjkyMmIsXFxuICBcXFwiNlxcXCI6ICNmZDdlMTQsXFxuICBcXFwiN1xcXCI6ICNmNzY3MDcsXFxuICBcXFwiOFxcXCI6ICNlODU5MGMsXFxuICBcXFwiOVxcXCI6ICNkOTQ4MGZcXG4pO1xcblxcbiRvYy1vcmFuZ2UtMDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLW9yYW5nZS0xOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2Mtb3JhbmdlLTI6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1vcmFuZ2UtMzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLW9yYW5nZS00OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2Mtb3JhbmdlLTU6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1vcmFuZ2UtNjogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLW9yYW5nZS03OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2Mtb3JhbmdlLTg6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1vcmFuZ2UtOTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIENvbG9yIGxpc3RcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWNvbG9yLXNwZWN0cnVtOiAgIDk7XFxuXFxuJG9jLWNvbG9yLWxpc3Q6IChcXG4gICRvYy1ncmF5LWxpc3Q6ICAgICAgXFxcImdyYXlcXFwiLFxcbiAgJG9jLXJlZC1saXN0OiAgICAgIFxcXCJyZWRcXFwiLFxcbiAgJG9jLXBpbmstbGlzdDogICAgICBcXFwicGlua1xcXCIsXFxuICAkb2MtZ3JhcGUtbGlzdDogICAgICBcXFwiZ3JhcGVcXFwiLFxcbiAgJG9jLXZpb2xldC1saXN0OiAgICAgIFxcXCJ2aW9sZXRcXFwiLFxcbiAgJG9jLWluZGlnby1saXN0OiAgICAgIFxcXCJpbmRpZ29cXFwiLFxcbiAgJG9jLWJsdWUtbGlzdDogICAgICBcXFwiYmx1ZVxcXCIsXFxuICAkb2MtY3lhbi1saXN0OiAgICAgIFxcXCJjeWFuXFxcIixcXG4gICRvYy10ZWFsLWxpc3Q6ICAgICAgXFxcInRlYWxcXFwiLFxcbiAgJG9jLWdyZWVuLWxpc3Q6ICAgICAgXFxcImdyZWVuXFxcIixcXG4gICRvYy1saW1lLWxpc3Q6ICAgICAgXFxcImxpbWVcXFwiLFxcbiAgJG9jLXllbGxvdy1saXN0OiAgICAgIFxcXCJ5ZWxsb3dcXFwiLFxcbiAgJG9jLW9yYW5nZS1saXN0OiAgICAgIFxcXCJvcmFuZ2VcXFwiXFxuKTtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../css/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B0%5D.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js");
1479
+ 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 */ });\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \\\"./node_modules/css-loader/dist/runtime/sourceMaps.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \\\"./node_modules/css-loader/dist/runtime/api.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ \\\"./node_modules/css-loader/dist/runtime/getUrl.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\\n// Imports\\n\\n\\n\\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\\n// Module\\n___CSS_LOADER_EXPORT___.push([module.id, \\\":export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n rightSidebarWidth: 302px;\\\\n}\\\\n\\\\n:export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n rightSidebarWidth: 302px;\\\\n}\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #ffe3e3;\\\\n --button-destructive-color: #c92a2a;\\\\n --button-gray-1: #e9ecef;\\\\n --button-gray-2: #ced4da;\\\\n --button-gray-3: #adb5bd;\\\\n --button-special-active-bg-color: #ebfbee;\\\\n --dialog-border-color: #868e96;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\\");\\\\n --focus-highlight-color: #a5d8ff;\\\\n --icon-fill-color: #212529;\\\\n --icon-green-fill-color: #2b8a3e;\\\\n --default-bg-color: #ffffff;\\\\n --input-bg-color: #ffffff;\\\\n --input-border-color: #ced4da;\\\\n --input-hover-bg-color: #f1f3f5;\\\\n --input-label-color: #495057;\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #adb5bd;\\\\n --link-color: #1c7ed6;\\\\n --overlay-bg-color: rgba(255, 255, 255, 0.88);\\\\n --popup-bg-color: #ffffff;\\\\n --popup-secondary-bg-color: #f1f3f5;\\\\n --popup-text-color: #000000;\\\\n --popup-text-inverted-color: #ffffff;\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #339af0;\\\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #343a40;\\\\n --color-primary: #6965db;\\\\n --color-primary-darker: #5b57d1;\\\\n --color-primary-darkest: #4a47b1;\\\\n --color-primary-light: #e2e1fc;\\\\n --border-radius-md: 0.375rem;\\\\n --border-radius-lg: 0.5rem;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n background: #000000;\\\\n}\\\\n.excalidraw.theme--dark.theme--dark-background-none {\\\\n background: none;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n --theme-filter: invert(93%) hue-rotate(180deg);\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #ffa8a8;\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #212529;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\\");\\\\n --focus-highlight-color: #228be6;\\\\n --icon-fill-color: #ced4da;\\\\n --icon-green-fill-color: #69db7c;\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #e9ecef;\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #868e96;\\\\n --link-color: #4dabf7;\\\\n --overlay-bg-color: rgba(52, 58, 64, 0.12);\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #ced4da;\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #4dabf7;\\\\n --shadow-island: 1px 1px 5px rgba(0, 0, 0, 0.3);\\\\n --text-primary-color: #ced4da;\\\\n --color-primary: #5650f0;\\\\n --color-primary-darker: #4b46d8;\\\\n --color-primary-darkest: #3e39be;\\\\n --color-primary-light: #3f3d64;\\\\n}\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n user-select: none;\\\\n /*zsvcziain*/\\\\n /*zsviczian*/\\\\n}\\\\n.excalidraw:focus {\\\\n outline: none;\\\\n}\\\\n.excalidraw a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n}\\\\n.excalidraw a:hover {\\\\n text-decoration: underline;\\\\n}\\\\n.excalidraw canvas {\\\\n touch-action: none;\\\\n image-rendering: pixelated;\\\\n image-rendering: -moz-crisp-edges;\\\\n z-index: var(--zIndex-canvas);\\\\n}\\\\n.excalidraw__canvas {\\\\n position: absolute;\\\\n}\\\\n.excalidraw.theme--dark canvas {\\\\n filter: var(--theme-filter);\\\\n}\\\\n.excalidraw .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n}\\\\n.excalidraw .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n}\\\\n.excalidraw .panelColumn h3,\\\\n.excalidraw .panelColumn legend,\\\\n.excalidraw .panelColumn .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n}\\\\n.excalidraw .panelColumn .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n}\\\\n.excalidraw .panelColumn h3:first-child,\\\\n.excalidraw .panelColumn legend:first-child,\\\\n.excalidraw .panelColumn .control-label:first-child {\\\\n margin-top: 0;\\\\n}\\\\n.excalidraw .panelColumn legend {\\\\n padding: 0;\\\\n}\\\\n.excalidraw .panelColumn .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n}\\\\n.excalidraw .panelColumn .buttonList {\\\\n flex-wrap: wrap;\\\\n}\\\\n.excalidraw .panelColumn .buttonList label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n}\\\\n.excalidraw .panelColumn .buttonList input[type=radio],\\\\n.excalidraw .panelColumn .buttonList input[type=button] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .iconRow {\\\\n margin-top: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n}\\\\n.excalidraw .panelColumn fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n}\\\\n.excalidraw .divider {\\\\n width: 1px;\\\\n background-color: #e9ecef;\\\\n margin: 1px;\\\\n}\\\\n.excalidraw .buttonList label:focus-within,\\\\n.excalidraw input:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button,\\\\n.excalidraw .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: var(--border-radius-md);\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n cursor: pointer;\\\\n}\\\\n.excalidraw button:focus-visible,\\\\n.excalidraw .buttonList label:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button:hover,\\\\n.excalidraw .buttonList label:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw button:active,\\\\n.excalidraw .buttonList label:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw button:disabled,\\\\n.excalidraw .buttonList label:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .active,\\\\n.excalidraw .buttonList label.active {\\\\n background-color: var(--color-primary);\\\\n --icon-fill-color: #ffffff;\\\\n}\\\\n.excalidraw .active:hover,\\\\n.excalidraw .buttonList label.active:hover {\\\\n background-color: var(--color-primary-darker);\\\\n}\\\\n.excalidraw .active:active,\\\\n.excalidraw .buttonList label.active:active {\\\\n background-color: var(--color-primary-darkest);\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label svg {\\\\n width: 35px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label.active svg {\\\\n opacity: 1;\\\\n}\\\\n.excalidraw .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: max(var(--bar-padding), var(--sat,0));\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island {\\\\n /*width: 100%; //zsviczian*/\\\\n max-width: 100%;\\\\n /*min-width: 100%; //zsviczian*/\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n}\\\\n.excalidraw .App-toolbar {\\\\n width: 100%;\\\\n box-sizing: border-box;\\\\n}\\\\n.excalidraw .App-toolbar .eraser.ToolIcon:hover {\\\\n --icon-fill-color: #fff;\\\\n --keybinding-color: #fff;\\\\n}\\\\n.excalidraw .App-toolbar .eraser.active {\\\\n background-color: var(--color-primary);\\\\n}\\\\n.excalidraw .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n}\\\\n.excalidraw .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n min-height: 250px;\\\\n /* //zsviczian */\\\\n}\\\\n.excalidraw .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .App-menu_top {\\\\n grid-template-columns: auto max-content auto;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n}\\\\n.excalidraw .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n}\\\\n:root[dir=ltr] .excalidraw .App-menu_bottom {\\\\n left: 0.25rem;\\\\n}\\\\n:root[dir=rtl] .excalidraw .App-menu_bottom {\\\\n right: 0.25rem;\\\\n}\\\\n.excalidraw .App-menu_bottom--transition-left section {\\\\n width: 185px;\\\\n}\\\\n.excalidraw .App-menu_bottom section {\\\\n display: flex;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu__left {\\\\n overflow-y: auto;\\\\n box-shadow: var(--shadow-island);\\\\n}\\\\n.excalidraw .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n background-size: 0.65em auto, 100%;\\\\n}\\\\n:root[dir=rtl] .excalidraw .dropdown-select {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n}\\\\n.excalidraw .dropdown-select:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .dropdown-select:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .dropdown-select:active {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n}\\\\n.excalidraw .zIndexButton svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n}\\\\n.excalidraw .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n pointer-events: all;\\\\n}\\\\n.excalidraw .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: #868e96;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .help-icon svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n}\\\\n.excalidraw .help-icon:hover {\\\\n background: none;\\\\n}\\\\n.excalidraw .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n}\\\\n.excalidraw .finalize-button {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n}\\\\n.excalidraw .tray-zoom {\\\\n pointer-events: initial;\\\\n padding-bottom: 0.25rem;\\\\n padding-top: 0.25rem;\\\\n}\\\\n.excalidraw .undo-redo-buttons,\\\\n.excalidraw .eraser-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n}\\\\n.excalidraw--mobile.excalidraw aside {\\\\n display: none;\\\\n}\\\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n}\\\\n\\\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\\\n transform: scaleX(-1);\\\\n}\\\\n.excalidraw .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw.excalidraw--view-mode .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw textarea.excalidraw-wysiwyg {\\\\n border: none;\\\\n outline: none;\\\\n box-shadow: none;\\\\n border-radius: 0;\\\\n}\\\\n.excalidraw input[type=text],\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:not(:focus):hover,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:focus,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n@media print {\\\\n .excalidraw .App-bottom-bar,\\\\n.excalidraw .FixedSideContainer,\\\\n.excalidraw .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n}\\\\n.excalidraw ::-webkit-scrollbar {\\\\n width: 5px;\\\\n}\\\\n.excalidraw ::-webkit-scrollbar-thumb {\\\\n background: var(--button-gray-2);\\\\n border-radius: 10px;\\\\n}\\\\n.excalidraw ::-webkit-scrollbar-thumb:hover {\\\\n background: var(--button-gray-3);\\\\n}\\\\n.excalidraw ::-webkit-scrollbar-thumb:active {\\\\n background: var(--button-gray-2);\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n padding: 40px;\\\\n background-color: #ffe3e3;\\\\n border: 3px solid #c92a2a;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\\\n text-align: center;\\\\n}\\\\n.ErrorSplash.excalidraw .bigger,\\\\n.ErrorSplash.excalidraw .bigger button {\\\\n font-size: 1.1em;\\\\n}\\\\n.ErrorSplash.excalidraw .smaller,\\\\n.ErrorSplash.excalidraw .smaller button {\\\\n font-size: 0.9em;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n}\\\", \\\"\\\",{\\\"version\\\":3,\\\"sources\\\":[\\\"webpack://./../../css/variables.module.scss\\\",\\\"webpack://./../../css/styles.scss\\\",\\\"webpack://./../../css/theme.scss\\\",\\\"webpack://./../../../node_modules/open-color/open-color.scss\\\"],\\\"names\\\":[],\\\"mappings\\\":\\\"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\\\",\\\"sourcesContent\\\":[\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n\\\\n@mixin isMobile() {\\\\n @at-root .excalidraw--mobile#{&} {\\\\n @content;\\\\n }\\\\n}\\\\n\\\\n@mixin toolbarButtonColorStates {\\\\n .ToolIcon_type_radio,\\\\n .ToolIcon_type_checkbox {\\\\n & + .ToolIcon__icon:active {\\\\n background: var(--color-primary-light);\\\\n }\\\\n &:checked + .ToolIcon__icon {\\\\n background: var(--color-primary);\\\\n --icon-fill-color: #{$oc-white};\\\\n --keybinding-color: #{$oc-white};\\\\n }\\\\n &:checked + .ToolIcon__icon:active {\\\\n background: var(--color-primary-darker);\\\\n }\\\\n }\\\\n\\\\n .ToolIcon__keybinding {\\\\n bottom: 4px;\\\\n right: 4px;\\\\n }\\\\n}\\\\n\\\\n$theme-filter: \\\\\\\"invert(93%) hue-rotate(180deg)\\\\\\\";\\\\n$right-sidebar-width: \\\\\\\"302px\\\\\\\";\\\\n\\\\n:export {\\\\n themeFilter: unquote($theme-filter);\\\\n rightSidebarWidth: unquote($right-sidebar-width);\\\\n}\\\\n\\\",\\\"@import \\\\\\\"./variables.module\\\\\\\";\\\\n@import \\\\\\\"./theme\\\\\\\";\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n }\\\\n\\\\n // serves 2 purposes:\\\\n // 1. prevent selecting text outside the component when double-clicking or\\\\n // dragging inside it (e.g. on canvas)\\\\n // 2. prevent selecting UI, both from the inside, and from outside the\\\\n // component (e.g. if you select text in a sidebar)\\\\n user-select: none;\\\\n\\\\n a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n\\\\n &:hover {\\\\n text-decoration: underline;\\\\n }\\\\n }\\\\n\\\\n canvas {\\\\n touch-action: none;\\\\n\\\\n // following props improve blurriness at certain devicePixelRatios.\\\\n // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\\\n\\\\n image-rendering: pixelated; // chromium\\\\n // NOTE: must be declared *after* the above\\\\n image-rendering: -moz-crisp-edges; // FF\\\\n\\\\n z-index: var(--zIndex-canvas);\\\\n\\\\n // Remove the main canvas from document flow to avoid resizeObserver\\\\n // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\\\n }\\\\n\\\\n &__canvas {\\\\n position: absolute;\\\\n }\\\\n\\\\n &.theme--dark {\\\\n // The percentage is inspired by\\\\n // https://material.io/design/color/dark-theme.html#properties, which\\\\n // recommends surface color of #121212, 93% yields #111111 for #FFF\\\\n\\\\n canvas {\\\\n filter: var(--theme-filter);\\\\n }\\\\n }\\\\n\\\\n .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n }\\\\n\\\\n .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n\\\\n .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n\\\\n h3,\\\\n legend,\\\\n .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n }\\\\n\\\\n .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n }\\\\n\\\\n h3:first-child,\\\\n legend:first-child,\\\\n .control-label:first-child {\\\\n margin-top: 0;\\\\n }\\\\n\\\\n legend {\\\\n padding: 0;\\\\n }\\\\n\\\\n .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n }\\\\n\\\\n .buttonList {\\\\n flex-wrap: wrap;\\\\n\\\\n label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n }\\\\n\\\\n input[type=\\\\\\\"radio\\\\\\\"],\\\\n input[type=\\\\\\\"button\\\\\\\"] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n }\\\\n\\\\n .iconRow {\\\\n margin-top: 8px;\\\\n }\\\\n\\\\n .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n\\\\n &:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n }\\\\n }\\\\n\\\\n fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n }\\\\n }\\\\n\\\\n .divider {\\\\n width: 1px;\\\\n background-color: $oc-gray-2;\\\\n margin: 1px;\\\\n }\\\\n\\\\n .buttonList label:focus-within,\\\\n input:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n button,\\\\n .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: var(--border-radius-md);\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n\\\\n cursor: pointer;\\\\n\\\\n &:focus-visible {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .active,\\\\n .buttonList label.active {\\\\n background-color: var(--color-primary);\\\\n\\\\n --icon-fill-color: #{$oc-white};\\\\n\\\\n &:hover {\\\\n background-color: var(--color-primary-darker);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--color-primary-darkest);\\\\n }\\\\n }\\\\n\\\\n .buttonList.buttonListIcon {\\\\n label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n svg {\\\\n width: 35px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n }\\\\n &.active svg {\\\\n opacity: 1;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n }\\\\n\\\\n .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: #{\\\\\\\"max(var(--bar-padding), var(--sat,0))\\\\\\\"};\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n\\\\n > .Island {\\\\n /*width: 100%; //zsviczian*/\\\\n max-width: 100%;\\\\n /*min-width: 100%; //zsviczian*/\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n\\\\n .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-toolbar {\\\\n width: 100%;\\\\n\\\\n box-sizing: border-box;\\\\n\\\\n .eraser {\\\\n &.ToolIcon:hover {\\\\n --icon-fill-color: #fff;\\\\n --keybinding-color: #fff;\\\\n }\\\\n &.active {\\\\n background-color: var(--color-primary);\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n }\\\\n\\\\n .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n min-height: 250px; /* //zsviczian */\\\\n }\\\\n\\\\n .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n }\\\\n\\\\n .App-menu_top {\\\\n grid-template-columns: auto max-content auto;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n }\\\\n\\\\n .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n\\\\n :root[dir=\\\\\\\"ltr\\\\\\\"] & {\\\\n left: 0.25rem;\\\\n }\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n right: 0.25rem;\\\\n }\\\\n\\\\n &--transition-left {\\\\n section {\\\\n width: 185px;\\\\n }\\\\n }\\\\n\\\\n section {\\\\n display: flex;\\\\n }\\\\n }\\\\n\\\\n .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu__left {\\\\n overflow-y: auto;\\\\n box-shadow: var(--shadow-island);\\\\n }\\\\n\\\\n .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n }\\\\n\\\\n background-size: 0.65em auto, 100%;\\\\n\\\\n &:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n }\\\\n\\\\n .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n }\\\\n }\\\\n\\\\n .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n pointer-events: all;\\\\n }\\\\n\\\\n .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: $oc-gray-6;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n\\\\n svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n }\\\\n\\\\n &:hover {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n }\\\\n\\\\n .finalize-button {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n }\\\\n\\\\n /*zsvcziain*/\\\\n .tray-zoom {\\\\n pointer-events: initial;\\\\n padding-bottom: 0.25rem;\\\\n padding-top: 0.25rem;\\\\n }\\\\n\\\\n .undo-redo-buttons,\\\\n .eraser-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n }\\\\n\\\\n @include isMobile {\\\\n aside {\\\\n display: none;\\\\n }\\\\n .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n }\\\\n }\\\\n\\\\n .rtl-mirror {\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n transform: scaleX(-1);\\\\n }\\\\n }\\\\n\\\\n .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n\\\\n &.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n }\\\\n }\\\\n\\\\n .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n &.excalidraw--view-mode {\\\\n .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n }\\\\n\\\\n /*zsviczian*/\\\\n textarea.excalidraw-wysiwyg {\\\\n border: none;\\\\n outline: none;\\\\n -webkit-box-shadow: none;\\\\n -moz-box-shadow: none;\\\\n box-shadow: none;\\\\n border-radius: 0;\\\\n }\\\\n\\\\n input[type=\\\\\\\"text\\\\\\\"],\\\\n textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n\\\\n &:not(:focus) {\\\\n &:hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n }\\\\n }\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n }\\\\n\\\\n @media print {\\\\n .App-bottom-bar,\\\\n .FixedSideContainer,\\\\n .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n }\\\\n\\\\n // use custom, minimalistic scrollbar\\\\n // (doesn't work in Firefox)\\\\n ::-webkit-scrollbar {\\\\n width: 5px;\\\\n }\\\\n ::-webkit-scrollbar-thumb {\\\\n background: var(--button-gray-2);\\\\n border-radius: 10px;\\\\n }\\\\n ::-webkit-scrollbar-thumb:hover {\\\\n background: var(--button-gray-3);\\\\n }\\\\n ::-webkit-scrollbar-thumb:active {\\\\n background: var(--button-gray-2);\\\\n }\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n\\\\n .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n padding: 40px;\\\\n background-color: $oc-red-1;\\\\n border: 3px solid $oc-red-9;\\\\n }\\\\n\\\\n .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n\\\\n &.align-center {\\\\n text-align: center;\\\\n }\\\\n }\\\\n\\\\n .bigger,\\\\n .bigger button {\\\\n font-size: 1.1em;\\\\n }\\\\n\\\\n .smaller,\\\\n .smaller button {\\\\n font-size: 0.9em;\\\\n }\\\\n\\\\n .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n\\\\n textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n }\\\\n }\\\\n}\\\\n\\\",\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n@import \\\\\\\"./variables.module.scss\\\\\\\";\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #{$oc-red-1};\\\\n --button-destructive-color: #{$oc-red-9};\\\\n --button-gray-1: #{$oc-gray-2};\\\\n --button-gray-2: #{$oc-gray-4};\\\\n --button-gray-3: #{$oc-gray-5};\\\\n --button-special-active-bg-color: #{$oc-green-0};\\\\n --dialog-border-color: #{$oc-gray-6};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-2};\\\\n --icon-fill-color: #{$oc-gray-9};\\\\n --icon-green-fill-color: #{$oc-green-9};\\\\n --default-bg-color: #{$oc-white};\\\\n --input-bg-color: #{$oc-white};\\\\n --input-border-color: #{$oc-gray-4};\\\\n --input-hover-bg-color: #{$oc-gray-1};\\\\n --input-label-color: #{$oc-gray-7};\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #{$oc-gray-5};\\\\n --link-color: #{$oc-blue-7};\\\\n --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\\\n --popup-bg-color: #{$oc-white};\\\\n --popup-secondary-bg-color: #{$oc-gray-1};\\\\n --popup-text-color: #{$oc-black};\\\\n --popup-text-inverted-color: #{$oc-white};\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #{$oc-blue-5};\\\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\\\n\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #{$oc-gray-8};\\\\n\\\\n --color-primary: #6965db;\\\\n --color-primary-darker: #5b57d1;\\\\n --color-primary-darkest: #4a47b1;\\\\n --color-primary-light: #e2e1fc;\\\\n\\\\n --border-radius-md: 0.375rem;\\\\n --border-radius-lg: 0.5rem;\\\\n\\\\n &.theme--dark {\\\\n background: $oc-black;\\\\n\\\\n &.theme--dark-background-none {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n &.theme--dark {\\\\n --theme-filter: #{$theme-filter};\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #{$oc-red-3};\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #{$oc-gray-9};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-6};\\\\n --icon-fill-color: #{$oc-gray-4};\\\\n --icon-green-fill-color: #{$oc-green-4};\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #{$oc-gray-2};\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #{$oc-gray-6};\\\\n --link-color: #{$oc-blue-4};\\\\n --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #{$oc-gray-4};\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #{$oc-blue-4};\\\\n --shadow-island: 1px 1px 5px #{transparentize($oc-black, 0.7)};\\\\n --text-primary-color: #{$oc-gray-4};\\\\n\\\\n --color-primary: #5650f0;\\\\n --color-primary-darker: #4b46d8;\\\\n --color-primary-darkest: #3e39be;\\\\n --color-primary-light: #3f3d64;\\\\n }\\\\n}\\\\n\\\",\\\"//\\\\n//\\\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\\\n// v 1.9.1\\\\n//\\\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\\\n\\\\n\\\\n// General\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-white: #ffffff;\\\\n$oc-black: #000000;\\\\n\\\\n\\\\n// Gray\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-gray-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f9fa,\\\\n \\\\\\\"1\\\\\\\": #f1f3f5,\\\\n \\\\\\\"2\\\\\\\": #e9ecef,\\\\n \\\\\\\"3\\\\\\\": #dee2e6,\\\\n \\\\\\\"4\\\\\\\": #ced4da,\\\\n \\\\\\\"5\\\\\\\": #adb5bd,\\\\n \\\\\\\"6\\\\\\\": #868e96,\\\\n \\\\\\\"7\\\\\\\": #495057,\\\\n \\\\\\\"8\\\\\\\": #343a40,\\\\n \\\\\\\"9\\\\\\\": #212529\\\\n);\\\\n\\\\n$oc-gray-0: map-get($oc-gray-list, \\\\\\\"0\\\\\\\");\\\\n$oc-gray-1: map-get($oc-gray-list, \\\\\\\"1\\\\\\\");\\\\n$oc-gray-2: map-get($oc-gray-list, \\\\\\\"2\\\\\\\");\\\\n$oc-gray-3: map-get($oc-gray-list, \\\\\\\"3\\\\\\\");\\\\n$oc-gray-4: map-get($oc-gray-list, \\\\\\\"4\\\\\\\");\\\\n$oc-gray-5: map-get($oc-gray-list, \\\\\\\"5\\\\\\\");\\\\n$oc-gray-6: map-get($oc-gray-list, \\\\\\\"6\\\\\\\");\\\\n$oc-gray-7: map-get($oc-gray-list, \\\\\\\"7\\\\\\\");\\\\n$oc-gray-8: map-get($oc-gray-list, \\\\\\\"8\\\\\\\");\\\\n$oc-gray-9: map-get($oc-gray-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Red\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-red-list: (\\\\n \\\\\\\"0\\\\\\\": #fff5f5,\\\\n \\\\\\\"1\\\\\\\": #ffe3e3,\\\\n \\\\\\\"2\\\\\\\": #ffc9c9,\\\\n \\\\\\\"3\\\\\\\": #ffa8a8,\\\\n \\\\\\\"4\\\\\\\": #ff8787,\\\\n \\\\\\\"5\\\\\\\": #ff6b6b,\\\\n \\\\\\\"6\\\\\\\": #fa5252,\\\\n \\\\\\\"7\\\\\\\": #f03e3e,\\\\n \\\\\\\"8\\\\\\\": #e03131,\\\\n \\\\\\\"9\\\\\\\": #c92a2a\\\\n);\\\\n\\\\n$oc-red-0: map-get($oc-red-list, \\\\\\\"0\\\\\\\");\\\\n$oc-red-1: map-get($oc-red-list, \\\\\\\"1\\\\\\\");\\\\n$oc-red-2: map-get($oc-red-list, \\\\\\\"2\\\\\\\");\\\\n$oc-red-3: map-get($oc-red-list, \\\\\\\"3\\\\\\\");\\\\n$oc-red-4: map-get($oc-red-list, \\\\\\\"4\\\\\\\");\\\\n$oc-red-5: map-get($oc-red-list, \\\\\\\"5\\\\\\\");\\\\n$oc-red-6: map-get($oc-red-list, \\\\\\\"6\\\\\\\");\\\\n$oc-red-7: map-get($oc-red-list, \\\\\\\"7\\\\\\\");\\\\n$oc-red-8: map-get($oc-red-list, \\\\\\\"8\\\\\\\");\\\\n$oc-red-9: map-get($oc-red-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Pink\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-pink-list: (\\\\n \\\\\\\"0\\\\\\\": #fff0f6,\\\\n \\\\\\\"1\\\\\\\": #ffdeeb,\\\\n \\\\\\\"2\\\\\\\": #fcc2d7,\\\\n \\\\\\\"3\\\\\\\": #faa2c1,\\\\n \\\\\\\"4\\\\\\\": #f783ac,\\\\n \\\\\\\"5\\\\\\\": #f06595,\\\\n \\\\\\\"6\\\\\\\": #e64980,\\\\n \\\\\\\"7\\\\\\\": #d6336c,\\\\n \\\\\\\"8\\\\\\\": #c2255c,\\\\n \\\\\\\"9\\\\\\\": #a61e4d\\\\n);\\\\n\\\\n$oc-pink-0: map-get($oc-pink-list, \\\\\\\"0\\\\\\\");\\\\n$oc-pink-1: map-get($oc-pink-list, \\\\\\\"1\\\\\\\");\\\\n$oc-pink-2: map-get($oc-pink-list, \\\\\\\"2\\\\\\\");\\\\n$oc-pink-3: map-get($oc-pink-list, \\\\\\\"3\\\\\\\");\\\\n$oc-pink-4: map-get($oc-pink-list, \\\\\\\"4\\\\\\\");\\\\n$oc-pink-5: map-get($oc-pink-list, \\\\\\\"5\\\\\\\");\\\\n$oc-pink-6: map-get($oc-pink-list, \\\\\\\"6\\\\\\\");\\\\n$oc-pink-7: map-get($oc-pink-list, \\\\\\\"7\\\\\\\");\\\\n$oc-pink-8: map-get($oc-pink-list, \\\\\\\"8\\\\\\\");\\\\n$oc-pink-9: map-get($oc-pink-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Grape\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-grape-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f0fc,\\\\n \\\\\\\"1\\\\\\\": #f3d9fa,\\\\n \\\\\\\"2\\\\\\\": #eebefa,\\\\n \\\\\\\"3\\\\\\\": #e599f7,\\\\n \\\\\\\"4\\\\\\\": #da77f2,\\\\n \\\\\\\"5\\\\\\\": #cc5de8,\\\\n \\\\\\\"6\\\\\\\": #be4bdb,\\\\n \\\\\\\"7\\\\\\\": #ae3ec9,\\\\n \\\\\\\"8\\\\\\\": #9c36b5,\\\\n \\\\\\\"9\\\\\\\": #862e9c\\\\n);\\\\n\\\\n$oc-grape-0: map-get($oc-grape-list, \\\\\\\"0\\\\\\\");\\\\n$oc-grape-1: map-get($oc-grape-list, \\\\\\\"1\\\\\\\");\\\\n$oc-grape-2: map-get($oc-grape-list, \\\\\\\"2\\\\\\\");\\\\n$oc-grape-3: map-get($oc-grape-list, \\\\\\\"3\\\\\\\");\\\\n$oc-grape-4: map-get($oc-grape-list, \\\\\\\"4\\\\\\\");\\\\n$oc-grape-5: map-get($oc-grape-list, \\\\\\\"5\\\\\\\");\\\\n$oc-grape-6: map-get($oc-grape-list, \\\\\\\"6\\\\\\\");\\\\n$oc-grape-7: map-get($oc-grape-list, \\\\\\\"7\\\\\\\");\\\\n$oc-grape-8: map-get($oc-grape-list, \\\\\\\"8\\\\\\\");\\\\n$oc-grape-9: map-get($oc-grape-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Violet\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-violet-list: (\\\\n \\\\\\\"0\\\\\\\": #f3f0ff,\\\\n \\\\\\\"1\\\\\\\": #e5dbff,\\\\n \\\\\\\"2\\\\\\\": #d0bfff,\\\\n \\\\\\\"3\\\\\\\": #b197fc,\\\\n \\\\\\\"4\\\\\\\": #9775fa,\\\\n \\\\\\\"5\\\\\\\": #845ef7,\\\\n \\\\\\\"6\\\\\\\": #7950f2,\\\\n \\\\\\\"7\\\\\\\": #7048e8,\\\\n \\\\\\\"8\\\\\\\": #6741d9,\\\\n \\\\\\\"9\\\\\\\": #5f3dc4\\\\n);\\\\n\\\\n$oc-violet-0: map-get($oc-violet-list, \\\\\\\"0\\\\\\\");\\\\n$oc-violet-1: map-get($oc-violet-list, \\\\\\\"1\\\\\\\");\\\\n$oc-violet-2: map-get($oc-violet-list, \\\\\\\"2\\\\\\\");\\\\n$oc-violet-3: map-get($oc-violet-list, \\\\\\\"3\\\\\\\");\\\\n$oc-violet-4: map-get($oc-violet-list, \\\\\\\"4\\\\\\\");\\\\n$oc-violet-5: map-get($oc-violet-list, \\\\\\\"5\\\\\\\");\\\\n$oc-violet-6: map-get($oc-violet-list, \\\\\\\"6\\\\\\\");\\\\n$oc-violet-7: map-get($oc-violet-list, \\\\\\\"7\\\\\\\");\\\\n$oc-violet-8: map-get($oc-violet-list, \\\\\\\"8\\\\\\\");\\\\n$oc-violet-9: map-get($oc-violet-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Indigo\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-indigo-list: (\\\\n \\\\\\\"0\\\\\\\": #edf2ff,\\\\n \\\\\\\"1\\\\\\\": #dbe4ff,\\\\n \\\\\\\"2\\\\\\\": #bac8ff,\\\\n \\\\\\\"3\\\\\\\": #91a7ff,\\\\n \\\\\\\"4\\\\\\\": #748ffc,\\\\n \\\\\\\"5\\\\\\\": #5c7cfa,\\\\n \\\\\\\"6\\\\\\\": #4c6ef5,\\\\n \\\\\\\"7\\\\\\\": #4263eb,\\\\n \\\\\\\"8\\\\\\\": #3b5bdb,\\\\n \\\\\\\"9\\\\\\\": #364fc7\\\\n);\\\\n\\\\n$oc-indigo-0: map-get($oc-indigo-list, \\\\\\\"0\\\\\\\");\\\\n$oc-indigo-1: map-get($oc-indigo-list, \\\\\\\"1\\\\\\\");\\\\n$oc-indigo-2: map-get($oc-indigo-list, \\\\\\\"2\\\\\\\");\\\\n$oc-indigo-3: map-get($oc-indigo-list, \\\\\\\"3\\\\\\\");\\\\n$oc-indigo-4: map-get($oc-indigo-list, \\\\\\\"4\\\\\\\");\\\\n$oc-indigo-5: map-get($oc-indigo-list, \\\\\\\"5\\\\\\\");\\\\n$oc-indigo-6: map-get($oc-indigo-list, \\\\\\\"6\\\\\\\");\\\\n$oc-indigo-7: map-get($oc-indigo-list, \\\\\\\"7\\\\\\\");\\\\n$oc-indigo-8: map-get($oc-indigo-list, \\\\\\\"8\\\\\\\");\\\\n$oc-indigo-9: map-get($oc-indigo-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Blue\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-blue-list: (\\\\n \\\\\\\"0\\\\\\\": #e7f5ff,\\\\n \\\\\\\"1\\\\\\\": #d0ebff,\\\\n \\\\\\\"2\\\\\\\": #a5d8ff,\\\\n \\\\\\\"3\\\\\\\": #74c0fc,\\\\n \\\\\\\"4\\\\\\\": #4dabf7,\\\\n \\\\\\\"5\\\\\\\": #339af0,\\\\n \\\\\\\"6\\\\\\\": #228be6,\\\\n \\\\\\\"7\\\\\\\": #1c7ed6,\\\\n \\\\\\\"8\\\\\\\": #1971c2,\\\\n \\\\\\\"9\\\\\\\": #1864ab\\\\n);\\\\n\\\\n$oc-blue-0: map-get($oc-blue-list, \\\\\\\"0\\\\\\\");\\\\n$oc-blue-1: map-get($oc-blue-list, \\\\\\\"1\\\\\\\");\\\\n$oc-blue-2: map-get($oc-blue-list, \\\\\\\"2\\\\\\\");\\\\n$oc-blue-3: map-get($oc-blue-list, \\\\\\\"3\\\\\\\");\\\\n$oc-blue-4: map-get($oc-blue-list, \\\\\\\"4\\\\\\\");\\\\n$oc-blue-5: map-get($oc-blue-list, \\\\\\\"5\\\\\\\");\\\\n$oc-blue-6: map-get($oc-blue-list, \\\\\\\"6\\\\\\\");\\\\n$oc-blue-7: map-get($oc-blue-list, \\\\\\\"7\\\\\\\");\\\\n$oc-blue-8: map-get($oc-blue-list, \\\\\\\"8\\\\\\\");\\\\n$oc-blue-9: map-get($oc-blue-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Cyan\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-cyan-list: (\\\\n \\\\\\\"0\\\\\\\": #e3fafc,\\\\n \\\\\\\"1\\\\\\\": #c5f6fa,\\\\n \\\\\\\"2\\\\\\\": #99e9f2,\\\\n \\\\\\\"3\\\\\\\": #66d9e8,\\\\n \\\\\\\"4\\\\\\\": #3bc9db,\\\\n \\\\\\\"5\\\\\\\": #22b8cf,\\\\n \\\\\\\"6\\\\\\\": #15aabf,\\\\n \\\\\\\"7\\\\\\\": #1098ad,\\\\n \\\\\\\"8\\\\\\\": #0c8599,\\\\n \\\\\\\"9\\\\\\\": #0b7285\\\\n);\\\\n\\\\n$oc-cyan-0: map-get($oc-cyan-list, \\\\\\\"0\\\\\\\");\\\\n$oc-cyan-1: map-get($oc-cyan-list, \\\\\\\"1\\\\\\\");\\\\n$oc-cyan-2: map-get($oc-cyan-list, \\\\\\\"2\\\\\\\");\\\\n$oc-cyan-3: map-get($oc-cyan-list, \\\\\\\"3\\\\\\\");\\\\n$oc-cyan-4: map-get($oc-cyan-list, \\\\\\\"4\\\\\\\");\\\\n$oc-cyan-5: map-get($oc-cyan-list, \\\\\\\"5\\\\\\\");\\\\n$oc-cyan-6: map-get($oc-cyan-list, \\\\\\\"6\\\\\\\");\\\\n$oc-cyan-7: map-get($oc-cyan-list, \\\\\\\"7\\\\\\\");\\\\n$oc-cyan-8: map-get($oc-cyan-list, \\\\\\\"8\\\\\\\");\\\\n$oc-cyan-9: map-get($oc-cyan-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Teal\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-teal-list: (\\\\n \\\\\\\"0\\\\\\\": #e6fcf5,\\\\n \\\\\\\"1\\\\\\\": #c3fae8,\\\\n \\\\\\\"2\\\\\\\": #96f2d7,\\\\n \\\\\\\"3\\\\\\\": #63e6be,\\\\n \\\\\\\"4\\\\\\\": #38d9a9,\\\\n \\\\\\\"5\\\\\\\": #20c997,\\\\n \\\\\\\"6\\\\\\\": #12b886,\\\\n \\\\\\\"7\\\\\\\": #0ca678,\\\\n \\\\\\\"8\\\\\\\": #099268,\\\\n \\\\\\\"9\\\\\\\": #087f5b\\\\n);\\\\n\\\\n$oc-teal-0: map-get($oc-teal-list, \\\\\\\"0\\\\\\\");\\\\n$oc-teal-1: map-get($oc-teal-list, \\\\\\\"1\\\\\\\");\\\\n$oc-teal-2: map-get($oc-teal-list, \\\\\\\"2\\\\\\\");\\\\n$oc-teal-3: map-get($oc-teal-list, \\\\\\\"3\\\\\\\");\\\\n$oc-teal-4: map-get($oc-teal-list, \\\\\\\"4\\\\\\\");\\\\n$oc-teal-5: map-get($oc-teal-list, \\\\\\\"5\\\\\\\");\\\\n$oc-teal-6: map-get($oc-teal-list, \\\\\\\"6\\\\\\\");\\\\n$oc-teal-7: map-get($oc-teal-list, \\\\\\\"7\\\\\\\");\\\\n$oc-teal-8: map-get($oc-teal-list, \\\\\\\"8\\\\\\\");\\\\n$oc-teal-9: map-get($oc-teal-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Green\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-green-list: (\\\\n \\\\\\\"0\\\\\\\": #ebfbee,\\\\n \\\\\\\"1\\\\\\\": #d3f9d8,\\\\n \\\\\\\"2\\\\\\\": #b2f2bb,\\\\n \\\\\\\"3\\\\\\\": #8ce99a,\\\\n \\\\\\\"4\\\\\\\": #69db7c,\\\\n \\\\\\\"5\\\\\\\": #51cf66,\\\\n \\\\\\\"6\\\\\\\": #40c057,\\\\n \\\\\\\"7\\\\\\\": #37b24d,\\\\n \\\\\\\"8\\\\\\\": #2f9e44,\\\\n \\\\\\\"9\\\\\\\": #2b8a3e\\\\n);\\\\n\\\\n$oc-green-0: map-get($oc-green-list, \\\\\\\"0\\\\\\\");\\\\n$oc-green-1: map-get($oc-green-list, \\\\\\\"1\\\\\\\");\\\\n$oc-green-2: map-get($oc-green-list, \\\\\\\"2\\\\\\\");\\\\n$oc-green-3: map-get($oc-green-list, \\\\\\\"3\\\\\\\");\\\\n$oc-green-4: map-get($oc-green-list, \\\\\\\"4\\\\\\\");\\\\n$oc-green-5: map-get($oc-green-list, \\\\\\\"5\\\\\\\");\\\\n$oc-green-6: map-get($oc-green-list, \\\\\\\"6\\\\\\\");\\\\n$oc-green-7: map-get($oc-green-list, \\\\\\\"7\\\\\\\");\\\\n$oc-green-8: map-get($oc-green-list, \\\\\\\"8\\\\\\\");\\\\n$oc-green-9: map-get($oc-green-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Lime\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-lime-list: (\\\\n \\\\\\\"0\\\\\\\": #f4fce3,\\\\n \\\\\\\"1\\\\\\\": #e9fac8,\\\\n \\\\\\\"2\\\\\\\": #d8f5a2,\\\\n \\\\\\\"3\\\\\\\": #c0eb75,\\\\n \\\\\\\"4\\\\\\\": #a9e34b,\\\\n \\\\\\\"5\\\\\\\": #94d82d,\\\\n \\\\\\\"6\\\\\\\": #82c91e,\\\\n \\\\\\\"7\\\\\\\": #74b816,\\\\n \\\\\\\"8\\\\\\\": #66a80f,\\\\n \\\\\\\"9\\\\\\\": #5c940d\\\\n);\\\\n\\\\n$oc-lime-0: map-get($oc-lime-list, \\\\\\\"0\\\\\\\");\\\\n$oc-lime-1: map-get($oc-lime-list, \\\\\\\"1\\\\\\\");\\\\n$oc-lime-2: map-get($oc-lime-list, \\\\\\\"2\\\\\\\");\\\\n$oc-lime-3: map-get($oc-lime-list, \\\\\\\"3\\\\\\\");\\\\n$oc-lime-4: map-get($oc-lime-list, \\\\\\\"4\\\\\\\");\\\\n$oc-lime-5: map-get($oc-lime-list, \\\\\\\"5\\\\\\\");\\\\n$oc-lime-6: map-get($oc-lime-list, \\\\\\\"6\\\\\\\");\\\\n$oc-lime-7: map-get($oc-lime-list, \\\\\\\"7\\\\\\\");\\\\n$oc-lime-8: map-get($oc-lime-list, \\\\\\\"8\\\\\\\");\\\\n$oc-lime-9: map-get($oc-lime-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Yellow\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-yellow-list: (\\\\n \\\\\\\"0\\\\\\\": #fff9db,\\\\n \\\\\\\"1\\\\\\\": #fff3bf,\\\\n \\\\\\\"2\\\\\\\": #ffec99,\\\\n \\\\\\\"3\\\\\\\": #ffe066,\\\\n \\\\\\\"4\\\\\\\": #ffd43b,\\\\n \\\\\\\"5\\\\\\\": #fcc419,\\\\n \\\\\\\"6\\\\\\\": #fab005,\\\\n \\\\\\\"7\\\\\\\": #f59f00,\\\\n \\\\\\\"8\\\\\\\": #f08c00,\\\\n \\\\\\\"9\\\\\\\": #e67700\\\\n);\\\\n\\\\n$oc-yellow-0: map-get($oc-yellow-list, \\\\\\\"0\\\\\\\");\\\\n$oc-yellow-1: map-get($oc-yellow-list, \\\\\\\"1\\\\\\\");\\\\n$oc-yellow-2: map-get($oc-yellow-list, \\\\\\\"2\\\\\\\");\\\\n$oc-yellow-3: map-get($oc-yellow-list, \\\\\\\"3\\\\\\\");\\\\n$oc-yellow-4: map-get($oc-yellow-list, \\\\\\\"4\\\\\\\");\\\\n$oc-yellow-5: map-get($oc-yellow-list, \\\\\\\"5\\\\\\\");\\\\n$oc-yellow-6: map-get($oc-yellow-list, \\\\\\\"6\\\\\\\");\\\\n$oc-yellow-7: map-get($oc-yellow-list, \\\\\\\"7\\\\\\\");\\\\n$oc-yellow-8: map-get($oc-yellow-list, \\\\\\\"8\\\\\\\");\\\\n$oc-yellow-9: map-get($oc-yellow-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Orange\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-orange-list: (\\\\n \\\\\\\"0\\\\\\\": #fff4e6,\\\\n \\\\\\\"1\\\\\\\": #ffe8cc,\\\\n \\\\\\\"2\\\\\\\": #ffd8a8,\\\\n \\\\\\\"3\\\\\\\": #ffc078,\\\\n \\\\\\\"4\\\\\\\": #ffa94d,\\\\n \\\\\\\"5\\\\\\\": #ff922b,\\\\n \\\\\\\"6\\\\\\\": #fd7e14,\\\\n \\\\\\\"7\\\\\\\": #f76707,\\\\n \\\\\\\"8\\\\\\\": #e8590c,\\\\n \\\\\\\"9\\\\\\\": #d9480f\\\\n);\\\\n\\\\n$oc-orange-0: map-get($oc-orange-list, \\\\\\\"0\\\\\\\");\\\\n$oc-orange-1: map-get($oc-orange-list, \\\\\\\"1\\\\\\\");\\\\n$oc-orange-2: map-get($oc-orange-list, \\\\\\\"2\\\\\\\");\\\\n$oc-orange-3: map-get($oc-orange-list, \\\\\\\"3\\\\\\\");\\\\n$oc-orange-4: map-get($oc-orange-list, \\\\\\\"4\\\\\\\");\\\\n$oc-orange-5: map-get($oc-orange-list, \\\\\\\"5\\\\\\\");\\\\n$oc-orange-6: map-get($oc-orange-list, \\\\\\\"6\\\\\\\");\\\\n$oc-orange-7: map-get($oc-orange-list, \\\\\\\"7\\\\\\\");\\\\n$oc-orange-8: map-get($oc-orange-list, \\\\\\\"8\\\\\\\");\\\\n$oc-orange-9: map-get($oc-orange-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Color list\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-color-spectrum: 9;\\\\n\\\\n$oc-color-list: (\\\\n $oc-gray-list: \\\\\\\"gray\\\\\\\",\\\\n $oc-red-list: \\\\\\\"red\\\\\\\",\\\\n $oc-pink-list: \\\\\\\"pink\\\\\\\",\\\\n $oc-grape-list: \\\\\\\"grape\\\\\\\",\\\\n $oc-violet-list: \\\\\\\"violet\\\\\\\",\\\\n $oc-indigo-list: \\\\\\\"indigo\\\\\\\",\\\\n $oc-blue-list: \\\\\\\"blue\\\\\\\",\\\\n $oc-cyan-list: \\\\\\\"cyan\\\\\\\",\\\\n $oc-teal-list: \\\\\\\"teal\\\\\\\",\\\\n $oc-green-list: \\\\\\\"green\\\\\\\",\\\\n $oc-lime-list: \\\\\\\"lime\\\\\\\",\\\\n $oc-yellow-list: \\\\\\\"yellow\\\\\\\",\\\\n $oc-orange-list: \\\\\\\"orange\\\\\\\"\\\\n);\\\\n\\\"],\\\"sourceRoot\\\":\\\"\\\"}]);\\n// Exports\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUNPO0FBQ3BILDRDQUE0Qyw2akJBQWtSO0FBQzlULDRDQUE0QyxpbUJBQXFTO0FBQ2pWLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0YseUNBQXlDLDBHQUErQjtBQUN4RSx5Q0FBeUMsMEdBQStCO0FBQ3hFO0FBQ0EsbURBQW1ELGdEQUFnRCw2QkFBNkIsR0FBRyxhQUFhLGdEQUFnRCw2QkFBNkIsR0FBRyxpQkFBaUIseUJBQXlCLDJDQUEyQyx3Q0FBd0MsNkJBQTZCLDZCQUE2Qiw2QkFBNkIsOENBQThDLG1DQUFtQyxxRUFBcUUscUNBQXFDLCtCQUErQixxQ0FBcUMsZ0NBQWdDLDhCQUE4QixrQ0FBa0Msb0NBQW9DLGlDQUFpQyxpREFBaUQsZ0NBQWdDLDBCQUEwQixrREFBa0QsOEJBQThCLHdDQUF3QyxnQ0FBZ0MseUNBQXlDLHVDQUF1QyxxQ0FBcUMsc0NBQXNDLG9DQUFvQyxzQ0FBc0MsaUZBQWlGLDRCQUE0QixrQ0FBa0MsNkJBQTZCLG9DQUFvQyxxQ0FBcUMsbUNBQW1DLGlDQUFpQywrQkFBK0IsR0FBRywyQkFBMkIsd0JBQXdCLEdBQUcsdURBQXVELHFCQUFxQixHQUFHLDJCQUEyQixtREFBbUQsMkNBQTJDLHdDQUF3Qyw2QkFBNkIsNkJBQTZCLDBCQUEwQiw4Q0FBOEMsbUNBQW1DLHFFQUFxRSxxQ0FBcUMsK0JBQStCLHFDQUFxQyxnQ0FBZ0MsOEJBQThCLGtDQUFrQyxvQ0FBb0MsaUNBQWlDLDhDQUE4QyxnQ0FBZ0MsMEJBQTBCLCtDQUErQyw4QkFBOEIscUNB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QVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxRQUFRLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLE1BQU0sTUFBTSxVQUFVLFVBQVUsTUFBTSxRQUFRLFVBQVUsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxXQUFXLFdBQVcsTUFBTSxPQUFPLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sVUFBVSxVQUFVLE1BQU0sTUFBTSxVQUFVLFdBQVcsVUFBVSxVQUFVLE1BQU0sTUFBTSxVQUFVLFlBQVksV0FBVyxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsTUFBTSxPQUFPLFdBQVcsV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxVQUFVLFVBQVUsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxVQUFVLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxZQUFZLE9BQU8sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLEtBQUssVUFBVSxNQUFNLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssV0FBVyxVQUFVLE1BQU0sS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sVUFBVSxXQUFXLE1BQU0sTUFBTSxPQUFPLFVBQVUsTUFBTSxLQUFLLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE9BQU8sTUFBTSxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxXQUFXLFVBQVUsYUFBYSxhQUFhLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsV0FBVyxXQUFXLGlFQUFpRSx1QkFBdUIsa0NBQWtDLElBQUksZUFBZSxL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ZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3Mvc3R5bGVzLnNjc3M/MGQ1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz5cIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGZpbGw9XFxcIiUyM2NlZDRkYVxcXCIgZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+XCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IGludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiAzMDJweDtcXG59XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IDMwMnB4O1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAtLXRoZW1lLWZpbHRlcjogbm9uZTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjZmZlM2UzO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtY29sb3I6ICNjOTJhMmE7XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICNlOWVjZWY7XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICNjZWQ0ZGE7XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICNhZGI1YmQ7XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogI2ViZmJlZTtcXG4gIC0tZGlhbG9nLWJvcmRlci1jb2xvcjogIzg2OGU5NjtcXG4gIC0tZHJvcGRvd24taWNvbjogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjYTVkOGZmO1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICMyMTI1Mjk7XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogIzJiOGEzZTtcXG4gIC0tZGVmYXVsdC1iZy1jb2xvcjogI2ZmZmZmZjtcXG4gIC0taW5wdXQtYmctY29sb3I6ICNmZmZmZmY7XFxuICAtLWlucHV0LWJvcmRlci1jb2xvcjogI2NlZDRkYTtcXG4gIC0taW5wdXQtaG92ZXItYmctY29sb3I6ICNmMWYzZjU7XFxuICAtLWlucHV0LWxhYmVsLWNvbG9yOiAjNDk1MDU3O1xcbiAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Nik7XFxuICAtLWtleWJpbmRpbmctY29sb3I6ICNhZGI1YmQ7XFxuICAtLWxpbmstY29sb3I6ICMxYzdlZDY7XFxuICAtLW92ZXJsYXktYmctY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44OCk7XFxuICAtLXBvcHVwLWJnLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1wb3B1cC1zZWNvbmRhcnktYmctY29sb3I6ICNmMWYzZjU7XFxuICAtLXBvcHVwLXRleHQtY29sb3I6ICMwMDAwMDA7XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICNmZmZmZmY7XFxuICAtLXNhYjogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xcbiAgLS1zYWw6IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7XFxuICAtLXNhcjogZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCk7XFxuICAtLXNhdDogZW52KHNhZmUtYXJlYS1pbnNldC10b3ApO1xcbiAgLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yOiAjMzM5YWYwO1xcbiAgLS1zaGFkb3ctaXNsYW5kOiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjAxKSwgMXB4IDFweCA1cHggcmdiKDAgMCAwIC8gMTIlKTtcXG4gIC0tc3BhY2UtZmFjdG9yOiAwLjI1cmVtO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICMzNDNhNDA7XFxuICAtLWNvbG9yLXByaW1hcnk6ICM2OTY1ZGI7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VyOiAjNWI1N2QxO1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICM0YTQ3YjE7XFxuICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICNlMmUxZmM7XFxuICAtLWJvcmRlci1yYWRpdXMtbWQ6IDAuMzc1cmVtO1xcbiAgLS1ib3JkZXItcmFkaXVzLWxnOiAwLjVyZW07XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIHtcXG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrLnRoZW1lLS1kYXJrLWJhY2tncm91bmQtbm9uZSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy50aGVtZS0tZGFyayB7XFxuICAtLXRoZW1lLWZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICM1YTAwMDA7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI2ZmYThhODtcXG4gIC0tYnV0dG9uLWdyYXktMTogIzM2MzYzNjtcXG4gIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gIC0tYnV0dG9uLWdyYXktMzogIzIyMjtcXG4gIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjMjA0NjI0O1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjMjEyNTI5O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fICsgXCIpO1xcbiAgLS1mb2N1cy1oaWdobGlnaHQtY29sb3I6ICMyMjhiZTY7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2NlZDRkYTtcXG4gIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjNjlkYjdjO1xcbiAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgLS1pbnB1dC1iZy1jb2xvcjogIzEyMTIxMjtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjMmUyZTJlO1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICNlOWVjZWY7XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgzMCwgMzAsIDMwLCAwLjk4KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogIzg2OGU5NjtcXG4gIC0tbGluay1jb2xvcjogIzRkYWJmNztcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogcmdiYSg1MiwgNTgsIDY0LCAwLjEyKTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICMyYzJjMmM7XFxuICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gIC0tcG9wdXAtdGV4dC1jb2xvcjogI2NlZDRkYTtcXG4gIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogIzJjMmMyYztcXG4gIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogIzRkYWJmNztcXG4gIC0tc2hhZG93LWlzbGFuZDogMXB4IDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICNjZWQ0ZGE7XFxuICAtLWNvbG9yLXByaW1hcnk6ICM1NjUwZjA7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VyOiAjNGI0NmQ4O1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICMzZTM5YmU7XFxuICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICMzZjNkNjQ7XFxufVxcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIC8qenN2Y3ppYWluKi9cXG4gIC8qenN2aWN6aWFuKi9cXG59XFxuLmV4Y2FsaWRyYXc6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgYSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBhOmhvdmVyIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG4uZXhjYWxpZHJhdyBjYW52YXMge1xcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7XFxuICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XFxuICB6LWluZGV4OiB2YXIoLS16SW5kZXgtY2FudmFzKTtcXG59XFxuLmV4Y2FsaWRyYXdfX2NhbnZhcyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIGNhbnZhcyB7XFxuICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxufVxcbi5leGNhbGlkcmF3IC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgcGFkZGluZy10b3A6IHZhcigtLXNhdCwgMCk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbFJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBoMyxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuY29udHJvbC1sYWJlbCB7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIGgzOmZpcnN0LWNoaWxkLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQge1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5pY29uU2VsZWN0TGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBpbnB1dFt0eXBlPXJhZGlvXSxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgaW5wdXRbdHlwZT1idXR0b25dIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5pY29uUm93IHtcXG4gIG1hcmdpbi10b3A6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbiB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmZvY3VzIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb25fX2ljb24ge1xcbiAgd2lkdGg6IDI4cHg7XFxuICBoZWlnaHQ6IDI4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBmaWVsZHNldCB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5kaXZpZGVyIHtcXG4gIHdpZHRoOiAxcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgbWFyZ2luOiAxcHg7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXdpdGhpbixcXG4uZXhjYWxpZHJhdyBpbnB1dDpmb2N1cy12aXNpYmxlIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbixcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgYm9yZGVyOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XFxuICBtYXJnaW46IDAuMTI1cmVtIDA7XFxuICBwYWRkaW5nOiAwLjI1cmVtO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmZvY3VzLXZpc2libGUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMtdmlzaWJsZSB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246ZGlzYWJsZWQsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6ZGlzYWJsZWQge1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZmZmZjtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZTpob3ZlcixcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuYWN0aXZlOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmU6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VzdCk7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdC5idXR0b25MaXN0SWNvbiBsYWJlbCBzdmcge1xcbiAgd2lkdGg6IDM1cHg7XFxuICBoZWlnaHQ6IDE0cHg7XFxuICBwYWRkaW5nOiAycHg7XFxuICBvcGFjaXR5OiAwLjY7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsLmFjdGl2ZSBzdmcge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC10b3AtYmFyIHtcXG4gIHotaW5kZXg6IHZhcigtLXpJbmRleC1sYXllclVJKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1ib3R0b20tYmFyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIC0tYmFyLXBhZGRpbmc6IGNhbGMoNCAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgcGFkZGluZy10b3A6IG1heCh2YXIoLS1iYXItcGFkZGluZyksIHZhcigtLXNhdCwwKSk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxuICB6LWluZGV4OiA0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIgPiAuSXNsYW5kIHtcXG4gIC8qd2lkdGg6IDEwMCU7IC8venN2aWN6aWFuKi9cXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIC8qbWluLXdpZHRoOiAxMDAlOyAvL3pzdmljemlhbiovXFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWF4LWhlaWdodDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhciA+IC5Jc2xhbmQgLnBhbmVsQ29sdW1uIHtcXG4gIHBhZGRpbmc6IDhweCA4cHggMCA4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhciAuZXJhc2VyLlRvb2xJY29uOmhvdmVyIHtcXG4gIC0taWNvbi1maWxsLWNvbG9yOiAjZmZmO1xcbiAgLS1rZXliaW5kaW5nLWNvbG9yOiAjZmZmO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIgLmVyYXNlci5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgcGFkZGluZzogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1vYmlsZS1tZW51IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3cteDogdmlzaWJsZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tYmFyLXBhZGRpbmcpO1xcbiAgbWluLWhlaWdodDogMjUwcHg7XFxuICAvKiAvL3pzdmljemlhbiAqL1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnUge1xcbiAgZGlzcGxheTogZ3JpZDtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wIHtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtYXgtY29udGVudCBhdXRvO1xcbiAgZ3JpZC1nYXA6IDRweDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICBncmlkLWdhcDogMTVweDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuOnJvb3RbZGlyPWx0cl0gLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICBsZWZ0OiAwLjI1cmVtO1xcbn1cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tIHtcXG4gIHJpZ2h0OiAwLjI1cmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tLS10cmFuc2l0aW9uLWxlZnQgc2VjdGlvbiB7XFxuICB3aWR0aDogMTg1cHg7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20gc2VjdGlvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tID4gKjpmaXJzdC1jaGlsZCB7XFxuICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20gPiAqOmxhc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2xlZnQge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIgYXV0byAxZnI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9yaWdodCB7XFxuICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X19sZWZ0IHtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaXNsYW5kKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICBoZWlnaHQ6IDEuNXJlbTtcXG4gIHBhZGRpbmc6IDA7XFxuICBwYWRkaW5nLWlubGluZS1zdGFydDogMC41cmVtO1xcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAxLjVyZW07XFxuICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYXBwZWFyYW5jZTogbm9uZTtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRyb3Bkb3duLWljb24pO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDAuNjVlbSBhdXRvLCAxMDAlO1xcbn1cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAuZHJvcGRvd24tc2VsZWN0IHtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgMC43cmVtIHRvcCA1MCUsIDAgMDtcXG59XFxuLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdDpmb2N1cyB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdDphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC56SW5kZXhCdXR0b24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgbWFyZ2luLWlubGluZS1lbmQ6IDhweDtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuekluZGV4QnV0dG9uIHN2ZyB7XFxuICB3aWR0aDogMThweDtcXG4gIGhlaWdodDogMThweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgY29sb3I6IHZhcigtLXBvcHVwLXRleHQtY29sb3IpO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgYm90dG9tOiAzMHB4O1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgcGFkZGluZzogMTBweCAyMHB4O1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG59XFxuLmV4Y2FsaWRyYXcgLmhlbHAtaWNvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZmlsbDogIzg2OGU5NjtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IDA7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb24gc3ZnIHtcXG4gIHdpZHRoOiAxLjVyZW07XFxuICBoZWlnaHQ6IDEuNXJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLmhlbHAtaWNvbjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAucmVzZXQtem9vbS1idXR0b24ge1xcbiAgcGFkZGluZzogMC4yZW07XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLXVpLWZvbnQpO1xcbn1cXG4uZXhjYWxpZHJhdyAuZmluYWxpemUtYnV0dG9uIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgZ2FwOiAwLjRlbTtcXG4gIG1hcmdpbi10b3A6IGF1dG87XFxuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3IC50cmF5LXpvb20ge1xcbiAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcXG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAudW5kby1yZWRvLWJ1dHRvbnMsXFxuLmV4Y2FsaWRyYXcgLmVyYXNlci1idXR0b25zIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgZ2FwOiAwLjRlbTtcXG4gIG1hcmdpbi10b3A6IGF1dG87XFxuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyBhc2lkZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy0tbW9iaWxlLmV4Y2FsaWRyYXcgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgYm90dG9tOiBjYWxjKDgwcHggKyB2YXIoLS1zYWIsIDApKTtcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAucnRsLW1pcnJvciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgd2lkdGg6IGF1dG87XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5Lnplbi1tb2RlLXZpc2liaWxpdHktLWhpZGRlbiB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC5kaXNhYmxlLXBvaW50ZXJFdmVudHMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcuZXhjYWxpZHJhdy0tdmlldy1tb2RlIC5BcHAtbWVudSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyB0ZXh0YXJlYS5leGNhbGlkcmF3LXd5c2l3eWcge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKSB7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWJnLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgaW5wdXRbdHlwZT10ZXh0XTpub3QoOmZvY3VzKTpob3ZlcixcXG4uZXhjYWxpZHJhdyB0ZXh0YXJlYTpub3QoLmV4Y2FsaWRyYXctd3lzaXd5Zyk6bm90KDpmb2N1cyk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtaG92ZXItYmctY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKTpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbkBtZWRpYSBwcmludCB7XFxuICAuZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIsXFxuLmV4Y2FsaWRyYXcgLkZpeGVkU2lkZUNvbnRhaW5lcixcXG4uZXhjYWxpZHJhdyAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA1cHg7XFxufVxcbi5leGNhbGlkcmF3IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB1c2VyLXNlbGVjdDogdGV4dDtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLkVycm9yU3BsYXNoLW1lc3NhZ2VDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBwYWRkaW5nOiA0MHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTNlMztcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNjOTJhMmE7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1wYXJhZ3JhcGgge1xcbiAgbWFyZ2luOiAxNXB4IDA7XFxuICBtYXgtd2lkdGg6IDYwMHB4O1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoLmFsaWduLWNlbnRlciB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5iaWdnZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLmJpZ2dlciBidXR0b24ge1xcbiAgZm9udC1zaXplOiAxLjFlbTtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIgYnV0dG9uIHtcXG4gIGZvbnQtc2l6ZTogMC45ZW07XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHRleHRhcmVhIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAxMHB4IDA7XFxuICBmb250LWZhbWlseTogXFxcIkNhc2NhZGlhXFxcIjtcXG4gIGZvbnQtc2l6ZTogMC44ZW07XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY3NzL3RoZW1lLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9vcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBRDhCQTtFQUNFLDJDQUFBO0VBQ0Esd0JBQUE7QUMzQkY7O0FDTEE7RUFDRSxvQkFBQTtFQUNBLHNDQUFBO0VBQ0EsbUNBQUE7RUFDQSx3QkFBQTtFQUNBLHdCQUFBO0VBQ0Esd0JBQUE7RUFDQSx5Q0FBQTtFQUNBLDhCQUFBO0VBQ0Esd0RBQUE7RUFDQSxnQ0FBQTtFQUNBLDBCQUFBO0VBQ0EsZ0NBQUE7RUFDQSwyQkFBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSwrQkFBQTtFQUNBLDRCQUFBO0VBQ0EsNENBQUE7RUFDQSwyQkFBQTtFQUNBLHFCQUFBO0VBQ0EsNkNBQUE7RUFDQSx5QkFBQTtFQUNBLG1DQUFBO0VBQ0EsMkJBQUE7RUFDQSxvQ0FBQTtFQUNBLGtDQUFBO0VBQ0EsZ0NBQUE7RUFDQSxpQ0FBQTtFQUNBLCtCQUFBO0VBQ0EsaUNBQUE7RUFDQSw0RUFBQTtFQUVBLHVCQUFBO0VBQ0EsNkJBQUE7RUFFQSx3QkFBQTtFQUNBLCtCQUFBO0VBQ0EsZ0NBQUE7RUFDQSw4QkFBQTtFQUVBLDRCQUFBO0VBQ0EsMEJBQUE7QURLRjtBQ0hFO0VBQ0UsbUJDcENlO0FGeUNuQjtBQ0hJO0VBQ0UsZ0JBQUE7QURLTjtBQ0RFO0VBQ0UsOENBQUE7RUFDQSxzQ0FBQTtFQUNBLG1DQUFBO0VBQ0Esd0JBQUE7RUFDQSx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EseUNBQUE7RUFDQSw4QkFBQTtFQUNBLHdEQUFBO0VBQ0EsZ0NBQUE7RUFDQSwwQkFBQTtFQUNBLGdDQUFBO0VBQ0EsMkJBQUE7RUFDQSx5QkFBQTtFQUNBLDZCQUFBO0VBQ0EsK0JBQUE7RUFDQSw0QkFBQTtFQUNBLHlDQUFBO0VBQ0EsMkJBQUE7RUFDQSxxQkFBQTtFQUNBLDBDQUFBO0VBQ0EseUJBQUE7RUFDQSxnQ0FBQTtFQUNBLDJCQUFBO0VBQ0Esb0NBQUE7RUFDQSxpQ0FBQTtFQUNBLCtDQUFBO0VBQ0EsNkJBQUE7RUFFQSx3QkFBQTtFQUNBLCtCQUFBO0VBQ0EsZ0NBQUE7RUFDQSw4QkFBQTtBREVKOztBQXZGQTtFQUNFLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtBQTBGRjs7QUF2RkE7RUFDRSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxhQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBV0EsaUJBQUE7RUE0Y0EsWUFBQTtFQTREQSxZQUFBO0FBdGJGO0FBM0ZFO0VBQ0UsYUFBQTtBQTZGSjtBQW5GRTtFQUNFLGdCQUFBO0VBQ0EscUJBQUE7RUFDQSx3QkFBQTtBQXFGSjtBQW5GSTtFQUNFLDBCQUFBO0FBcUZOO0FBakZFO0VBQ0Usa0JBQUE7RUFLQSwwQkFBQTtFQUVBLGlDQUFBO0VBRUEsNkJBQUE7QUE2RUo7QUF2RUU7RUFDRSxrQkFBQTtBQXlFSjtBQWpFSTtFQUNFLDJCQUFBO0FBbUVOO0FBL0RFO0VBQ0UsMEJBQUE7RUFDQSw0QkFBQTtFQUNBLDZCQUFBO0VBQ0EsMkJBQUE7QUFpRUo7QUE5REU7RUFDRSxhQUFBO0VBQ0EsOEJBQUE7QUFnRUo7QUE3REU7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7QUErREo7QUE3REk7OztFQUdFLG9CQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdDQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FBK0ROO0FBNURJO0VBQ0UsY0FBQTtFQUNBLFdBQUE7QUE4RE47QUEzREk7OztFQUdFLGFBQUE7QUE2RE47QUExREk7RUFDRSxVQUFBO0FBNEROO0FBekRJO0VBQ0UsZUFBQTtFQUNBLGtCQUFBO0FBMkROO0FBeERJO0VBQ0UsZUFBQTtBQTBETjtBQXhETTtFQUNFLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxxQkFBQTtBQTBEUjtBQXZETTs7RUFFRSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtBQXlEUjtBQXRETTtFQUNFLGVBQUE7QUF3RFI7QUFyRE07RUFDRSxTQUFBO0VBQ0Esc0JBQUE7QUF1RFI7QUFyRFE7RUFDRSxvQkFBQTtFQUNBLGtEQUFBO0FBdURWO0FBcERRO0VBQ0Usc0NBQUE7QUFzRFY7QUFuRFE7RUFDRSxzQ0FBQTtBQXFEVjtBQWxEUTtFQUNFLG1CQUFBO0FBb0RWO0FBaERNO0VBQ0UsV0FBQTtFQUNBLFlBQUE7QUFrRFI7QUE5Q0k7RUFDRSxTQUFBO0VBQ0Esb0JBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtBQWdETjtBQTVDRTtFQUNFLFVBQUE7RUFDQSx5QkVoSlE7RUZpSlIsV0FBQTtBQThDSjtBQTNDRTs7RUFFRSxvQkFBQTtFQUNBLGtEQUFBO0FBNkNKO0FBMUNFOztFQUVFLGlCQUFBO0VBQ0Esc0NBQUE7RUFDQSxTQUFBO0VBQ0Esc0NBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFFQSxlQUFBO0FBMkNKO0FBekNJOztFQUNFLG9CQUFBO0VBQ0Esa0RBQUE7QUE0Q047QUF6Q0k7O0VBQ0Usc0NBQUE7QUE0Q047QUF6Q0k7O0VBQ0Usc0NBQUE7QUE0Q047QUF6Q0k7O0VBQ0UsbUJBQUE7QUE0Q047QUF4Q0U7O0VBRUUsc0NBQUE7RUFFQSwwQkFBQTtBQXlDSjtBQXZDSTs7RUFDRSw2Q0FBQTtBQTBDTjtBQXZDSTs7RUFDRSw4Q0FBQTtBQTBDTjtBQXJDSTtFQUNFLG9CQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtBQXVDTjtBQXRDTTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7QUF3Q1I7QUF0Q007RUFDRSxVQUFBO0FBd0NSO0FBbkNFO0VBQ0UsOEJBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtBQXFDSjtBQWxDRTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLDRDQUFBO0VBQ0Esa0RBQUE7RUFDQSw0QkFBQTtFQUNBLDZCQUFBO0VBQ0EsMkJBQUE7RUFDQSxVQUFBO0VBQ0EsYUFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7QUFvQ0o7QUFsQ0k7RUFDRSwyQkFBQTtFQUNBLGVBQUE7RUFDQSwrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtBQW9DTjtBQWxDTTtFQUNFLHNCQUFBO0FBb0NSO0FBL0JFO0VBQ0UsV0FBQTtFQUVBLHNCQUFBO0FBZ0NKO0FBN0JNO0VBQ0UsdUJBQUE7RUFDQSx3QkFBQTtBQStCUjtBQTdCTTtFQUNFLHNDQUFBO0FBK0JSO0FBMUJFO0VBQ0UsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0FBNEJKO0FBekJFO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxzQkFBQTtFQUNBLGlDQUFBO0VBQ0EsaUJBQUE7RUFBbUIsZ0JBQUE7QUE0QnZCO0FBekJFO0VBQ0UsYUFBQTtFQUNBLDZCQUFBO0FBMkJKO0FBeEJFO0VBQ0UsNENBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxlQUFBO0VBQ0EsK0JBQUE7QUEwQko7QUF2QkU7RUFDRSxtQkFBQTtBQXlCSjtBQXRCRTtFQUNFLHdCQUFBO0FBd0JKO0FBckJFO0VBQ0Usc0JBQUE7QUF1Qko7QUFwQkU7RUFDRSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxtREFBQTtFQUNBLGNBQUE7RUFDQSx1QkFBQTtFQUNBLGVBQUE7RUFDQSwrQkFBQTtBQXNCSjtBQXBCSTtFQUNFLGFBQUE7QUFzQk47QUFuQkk7RUFDRSxjQUFBO0FBcUJOO0FBakJNO0VBQ0UsWUFBQTtBQW1CUjtBQWZJO0VBQ0UsYUFBQTtBQWlCTjtBQWJFO0VBQ0Usd0JBQUE7QUFlSjtBQVpFO0VBQ0Usc0JBQUE7QUFjSjtBQVhFO0VBQ0UsZ0NBQUE7RUFDQSxZQUFBO0FBYUo7QUFWRTtFQUNFLHVCQUFBO0VBQ0EsWUFBQTtBQVlKO0FBVEU7RUFDRSxnQkFBQTtFQUNBLGdDQUFBO0FBV0o7QUFSRTtFQUNFLGNBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSwwQkFBQTtFQUNBLDZCQUFBO0VBQ0Esc0NBQUE7RUFDQSxrQ0FBQTtFQUNBLHNDQUFBO0VBQ0EsaUJBQUE7RUFDQSxhQUFBO0VBQ0EsZ0JBQUE7RUFDQSxzQ0FBQTtFQUNBLDRCQUFBO0VBQ0EsOENBQUE7RUFNQSxrQ0FBQTtBQUtKO0FBVEk7RUFDRSw2Q0FBQTtBQVdOO0FBTkk7RUFDRSxrREFBQTtBQVFOO0FBTEk7RUFDRSxzQ0FBQTtBQU9OO0FBSkk7RUFDRSxzQ0FBQTtBQU1OO0FBRkU7RUFDRSxTQUFBO0VBQ0Esc0JBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0FBSUo7QUFGSTtFQUNFLFdBQUE7RUFDQSxZQUFBO0FBSU47QUFBRTtFQUNFLDhCQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsWUFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtBQUVKO0FBQ0U7RUFDRSxhQUFBO0VBQ0EsZUFBQTtFQUNBLGFFcmFRO0VGc2FSLFVBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7RUFDQSw2QkFBQTtBQUNKO0FBQ0k7RUFDRSxhQUFBO0VBQ0EsY0FBQTtBQUNOO0FBRUk7RUFDRSxnQkFBQTtBQUFOO0FBSUU7RUFDRSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQ0FBQTtFQUNBLDJCQUFBO0FBRko7QUFLRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsMEJBQUE7QUFISjtBQU9FO0VBQ0UsdUJBQUE7RUFDQSx1QkFBQTtFQUNBLG9CQUFBO0FBTEo7QUFRRTs7RUFFRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLDBCQUFBO0FBTko7QUFVSTtFQUNFLGFBQUE7QUFSTjtBQVVJO0VBQ0Usa0NBQUE7RUFDQSxXQUFBO0FBUk47O0FBYUk7RUFDRSxxQkFBQTtBQVZOO0FBY0U7RUFDRSxtQkFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLHdCQUFBO0FBWko7QUFjSTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0Esd0JBQUE7QUFaTjtBQWdCRTtFQUNFLCtCQUFBO0FBZEo7QUFrQkk7RUFDRSxhQUFBO0VBQ0EsOEJBQUE7QUFoQk47QUFxQkU7RUFDRSxZQUFBO0VBQ0EsYUFBQTtFQUdBLGdCQUFBO0VBQ0EsZ0JBQUE7QUFuQko7QUFzQkU7O0VBRUUsZ0NBQUE7RUFDQSw2Q0FBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQ0FBQTtFQUNBLHVDQUFBO0FBcEJKO0FBdUJNOztFQUNFLDZDQUFBO0FBcEJSO0FBd0JJOztFQUNFLGFBQUE7RUFDQSxrREFBQTtBQXJCTjtBQXlCRTtFQUNFOzs7SUFHRSxhQUFBO0VBdkJKO0FBQ0Y7QUE0QkU7RUFDRSxVQUFBO0FBMUJKO0FBNEJFO0VBQ0UsZ0NBQUE7RUFDQSxtQkFBQTtBQTFCSjtBQTRCRTtFQUNFLGdDQUFBO0FBMUJKO0FBNEJFO0VBQ0UsZ0NBQUE7QUExQko7O0FBOEJBO0VBQ0UsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7QUEzQkY7QUE2QkU7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBRUEsYUFBQTtFQUNBLHlCRWxqQk87RUZtakJQLHlCQUFBO0FBNUJKO0FBK0JFO0VBQ0UsY0FBQTtFQUNBLGdCQUFBO0FBN0JKO0FBK0JJO0VBQ0Usa0JBQUE7QUE3Qk47QUFpQ0U7O0VBRUUsZ0JBQUE7QUEvQko7QUFrQ0U7O0VBRUUsZ0JBQUE7QUFoQ0o7QUFtQ0U7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtBQWpDSjtBQW1DSTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBQWpDTlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuXFxuQG1peGluIGlzTW9iaWxlKCkge1xcbiAgQGF0LXJvb3QgLmV4Y2FsaWRyYXctLW1vYmlsZSN7Jn0ge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuQG1peGluIHRvb2xiYXJCdXR0b25Db2xvclN0YXRlcyB7XFxuICAuVG9vbEljb25fdHlwZV9yYWRpbyxcXG4gIC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gICAgJiArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAgICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgICAtLWtleWJpbmRpbmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9fa2V5YmluZGluZyB7XFxuICAgIGJvdHRvbTogNHB4O1xcbiAgICByaWdodDogNHB4O1xcbiAgfVxcbn1cXG5cXG4kdGhlbWUtZmlsdGVyOiBcXFwiaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpXFxcIjtcXG4kcmlnaHQtc2lkZWJhci13aWR0aDogXFxcIjMwMnB4XFxcIjtcXG5cXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiB1bnF1b3RlKCR0aGVtZS1maWx0ZXIpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IHVucXVvdGUoJHJpZ2h0LXNpZGViYXItd2lkdGgpO1xcbn1cXG5cIixcIkBpbXBvcnQgXFxcIi4vdmFyaWFibGVzLm1vZHVsZVxcXCI7XFxuQGltcG9ydCBcXFwiLi90aGVtZVxcXCI7XFxuXFxuOnJvb3Qge1xcbiAgLS16SW5kZXgtY2FudmFzOiAxO1xcbiAgLS16SW5kZXgtd3lzaXd5ZzogMjtcXG4gIC0tekluZGV4LWxheWVyVUk6IDM7XFxufVxcblxcbi5leGNhbGlkcmF3IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG5cXG4gICY6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgfVxcblxcbiAgLy8gc2VydmVzIDIgcHVycG9zZXM6XFxuICAvLyAxLiBwcmV2ZW50IHNlbGVjdGluZyB0ZXh0IG91dHNpZGUgdGhlIGNvbXBvbmVudCB3aGVuIGRvdWJsZS1jbGlja2luZyBvclxcbiAgLy8gICAgZHJhZ2dpbmcgaW5zaWRlIGl0IChlLmcuIG9uIGNhbnZhcylcXG4gIC8vIDIuIHByZXZlbnQgc2VsZWN0aW5nIFVJLCBib3RoIGZyb20gdGhlIGluc2lkZSwgYW5kIGZyb20gb3V0c2lkZSB0aGVcXG4gIC8vICAgIGNvbXBvbmVudCAoZS5nLiBpZiB5b3Ugc2VsZWN0IHRleHQgaW4gYSBzaWRlYmFyKVxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFxuICBhIHtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0tbGluay1jb2xvcik7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbiAgICB9XFxuICB9XFxuXFxuICBjYW52YXMge1xcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XFxuXFxuICAgIC8vIGZvbGxvd2luZyBwcm9wcyBpbXByb3ZlIGJsdXJyaW5lc3MgYXQgY2VydGFpbiBkZXZpY2VQaXhlbFJhdGlvcy5cXG4gICAgLy8gQUZBSUsgaXQgZG9lc24ndCBhZmZlY3QgZXhwb3J0IChpbiBmYWN0LCBleHBvcnQgc2VlbXMgc2hhcnAgZWl0aGVyIHdheSkuXFxuXFxuICAgIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyAvLyBjaHJvbWl1bVxcbiAgICAvLyBOT1RFOiBtdXN0IGJlIGRlY2xhcmVkICphZnRlciogdGhlIGFib3ZlXFxuICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsgLy8gRkZcXG5cXG4gICAgei1pbmRleDogdmFyKC0tekluZGV4LWNhbnZhcyk7XFxuXFxuICAgIC8vIFJlbW92ZSB0aGUgbWFpbiBjYW52YXMgZnJvbSBkb2N1bWVudCBmbG93IHRvIGF2b2lkIHJlc2l6ZU9ic2VydmVyXFxuICAgIC8vIGZlZWRiYWNrIGxvb3AgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L3B1bGwvMzM3OSlcXG4gIH1cXG5cXG4gICZfX2NhbnZhcyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIH1cXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBpbnNwaXJlZCBieVxcbiAgICAvLyBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb2xvci9kYXJrLXRoZW1lLmh0bWwjcHJvcGVydGllcywgd2hpY2hcXG4gICAgLy8gcmVjb21tZW5kcyBzdXJmYWNlIGNvbG9yIG9mICMxMjEyMTIsIDkzJSB5aWVsZHMgIzExMTExMSBmb3IgI0ZGRlxcblxcbiAgICBjYW52YXMge1xcbiAgICAgIGZpbHRlcjogdmFyKC0tdGhlbWUtZmlsdGVyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLkZpeGVkU2lkZUNvbnRhaW5lciB7XFxuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zYXQsIDApO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgfVxcblxcbiAgLnBhbmVsUm93IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgfVxcblxcbiAgLnBhbmVsQ29sdW1uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXG4gICAgaDMsXFxuICAgIGxlZ2VuZCxcXG4gICAgLmNvbnRyb2wtbGFiZWwge1xcbiAgICAgIG1hcmdpbi10b3A6IDAuMzMzcmVtO1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAuY29udHJvbC1sYWJlbCBpbnB1dCB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgIH1cXG5cXG4gICAgaDM6Zmlyc3QtY2hpbGQsXFxuICAgIGxlZ2VuZDpmaXJzdC1jaGlsZCxcXG4gICAgLmNvbnRyb2wtbGFiZWw6Zmlyc3QtY2hpbGQge1xcbiAgICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIH1cXG5cXG4gICAgbGVnZW5kIHtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICB9XFxuXFxuICAgIC5pY29uU2VsZWN0TGlzdCB7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgfVxcblxcbiAgICAuYnV0dG9uTGlzdCB7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcblxcbiAgICAgIGxhYmVsIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcXG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICB9XFxuXFxuICAgICAgaW5wdXRbdHlwZT1cXFwicmFkaW9cXFwiXSxcXG4gICAgICBpbnB1dFt0eXBlPVxcXCJidXR0b25cXFwiXSB7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgICAgfVxcblxcbiAgICAgIC5pY29uUm93IHtcXG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcXG4gICAgICB9XFxuXFxuICAgICAgLlRvb2xJY29uIHtcXG4gICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuXFxuICAgICAgICAmOmZvY3VzIHtcXG4gICAgICAgICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6ZGlzYWJsZWQge1xcbiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgICAgd2lkdGg6IDI4cHg7XFxuICAgICAgICBoZWlnaHQ6IDI4cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGZpZWxkc2V0IHtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgbWFyZ2luLXRvcDogMC4zMzNyZW07XFxuICAgICAgcGFkZGluZzogMDtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kaXZpZGVyIHtcXG4gICAgd2lkdGg6IDFweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9jLWdyYXktMjtcXG4gICAgbWFyZ2luOiAxcHg7XFxuICB9XFxuXFxuICAuYnV0dG9uTGlzdCBsYWJlbDpmb2N1cy13aXRoaW4sXFxuICBpbnB1dDpmb2N1cy12aXNpYmxlIHtcXG4gICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgfVxcblxcbiAgYnV0dG9uLFxcbiAgLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XFxuICAgIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gICAgcGFkZGluZzogMC4yNXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgfVxcblxcbiAgICAmOmRpc2FibGVkIHtcXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYWN0aXZlLFxcbiAgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuXFxuICAgIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24ge1xcbiAgICBsYWJlbCB7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBzdmcge1xcbiAgICAgICAgd2lkdGg6IDM1cHg7XFxuICAgICAgICBoZWlnaHQ6IDE0cHg7XFxuICAgICAgICBwYWRkaW5nOiAycHg7XFxuICAgICAgICBvcGFjaXR5OiAwLjY7XFxuICAgICAgfVxcbiAgICAgICYuYWN0aXZlIHN2ZyB7XFxuICAgICAgICBvcGFjaXR5OiAxO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLkFwcC10b3AtYmFyIHtcXG4gICAgei1pbmRleDogdmFyKC0tekluZGV4LWxheWVyVUkpO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgfVxcblxcbiAgLkFwcC1ib3R0b20tYmFyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIC0tYmFyLXBhZGRpbmc6IGNhbGMoNCAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgICBwYWRkaW5nLXRvcDogI3tcXFwibWF4KHZhcigtLWJhci1wYWRkaW5nKSwgdmFyKC0tc2F0LDApKVxcXCJ9O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgICB6LWluZGV4OiA0O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICA+IC5Jc2xhbmQge1xcbiAgICAgIC8qd2lkdGg6IDEwMCU7IC8venN2aWN6aWFuKi9cXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICAgICAgLyptaW4td2lkdGg6IDEwMCU7IC8venN2aWN6aWFuKi9cXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xcblxcbiAgICAgIC5wYW5lbENvbHVtbiB7XFxuICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDAgOHB4O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLkFwcC10b29sYmFyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuXFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFxuICAgIC5lcmFzZXIge1xcbiAgICAgICYuVG9vbEljb246aG92ZXIge1xcbiAgICAgICAgLS1pY29uLWZpbGwtY29sb3I6ICNmZmY7XFxuICAgICAgICAtLWtleWJpbmRpbmctY29sb3I6ICNmZmY7XFxuICAgICAgfVxcbiAgICAgICYuYWN0aXZlIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLkFwcC10b29sYmFyLWNvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIHBhZGRpbmc6IDhweDtcXG4gIH1cXG5cXG4gIC5BcHAtbW9iaWxlLW1lbnUge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgb3ZlcmZsb3cteDogdmlzaWJsZTtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tYmFyLXBhZGRpbmcpO1xcbiAgICBtaW4taGVpZ2h0OiAyNTBweDsgLyogLy96c3ZpY3ppYW4gKi9cXG4gIH1cXG5cXG4gIC5BcHAtbWVudSB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3RvcCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtYXgtY29udGVudCBhdXRvO1xcbiAgICBncmlkLWdhcDogNHB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICAgIGdyaWQtZ2FwOiAxNXB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcblxcbiAgICA6cm9vdFtkaXI9XFxcImx0clxcXCJdICYge1xcbiAgICAgIGxlZnQ6IDAuMjVyZW07XFxuICAgIH1cXG5cXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICByaWdodDogMC4yNXJlbTtcXG4gICAgfVxcblxcbiAgICAmLS10cmFuc2l0aW9uLWxlZnQge1xcbiAgICAgIHNlY3Rpb24ge1xcbiAgICAgICAgd2lkdGg6IDE4NXB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBzZWN0aW9uIHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfYm90dG9tID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9ib3R0b20gPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2xlZnQge1xcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmciBhdXRvIDFmcjtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3JpZ2h0IHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9fbGVmdCB7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgfVxcblxcbiAgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICAgIGhlaWdodDogMS41cmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMC41cmVtO1xcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDEuNXJlbTtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgZm9udC1zaXplOiAwLjhyZW07XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRyb3Bkb3duLWljb24pO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgMC43cmVtIHRvcCA1MCUsIDAgMDtcXG4gICAgfVxcblxcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDAuNjVlbSBhdXRvLCAxMDAlO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC56SW5kZXhCdXR0b24ge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiAxOHB4O1xcbiAgICAgIGhlaWdodDogMThweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgICBjb2xvcjogdmFyKC0tcG9wdXAtdGV4dC1jb2xvcik7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBib3R0b206IDMwcHg7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgfVxcblxcbiAgLmhlbHAtaWNvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgZmlsbDogJG9jLWdyYXktNjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogMS41cmVtO1xcbiAgICAgIGhlaWdodDogMS41cmVtO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5yZXNldC16b29tLWJ1dHRvbiB7XFxuICAgIHBhZGRpbmc6IDAuMmVtO1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG4gIH1cXG5cXG4gIC5maW5hbGl6ZS1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBnYXA6IDAuNGVtO1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG4gIH1cXG5cXG4gIC8qenN2Y3ppYWluKi9cXG4gIC50cmF5LXpvb20ge1xcbiAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xcbiAgfVxcblxcbiAgLnVuZG8tcmVkby1idXR0b25zLFxcbiAgLmVyYXNlci1idXR0b25zIHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gICAgZ2FwOiAwLjRlbTtcXG4gICAgbWFyZ2luLXRvcDogYXV0bztcXG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcXG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxuICB9XFxuXFxuICBAaW5jbHVkZSBpc01vYmlsZSB7XFxuICAgIGFzaWRlIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICAgIC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gICAgICBib3R0b206IGNhbGMoODBweCArIHZhcigtLXNhYiwgMCkpO1xcbiAgICAgIHotaW5kZXg6IC0xO1xcbiAgICB9XFxuICB9XFxuXFxuICAucnRsLW1pcnJvciB7XFxuICAgIDpyb290W2Rpcj1cXFwicnRsXFxcIl0gJiB7XFxuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuemVuLW1vZGUtdmlzaWJpbGl0eSB7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgd2lkdGg6IGF1dG87XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG5cXG4gICAgJi56ZW4tbW9kZS12aXNpYmlsaXR5LS1oaWRkZW4ge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgICBvcGFjaXR5OiAwO1xcbiAgICAgIGhlaWdodDogMDtcXG4gICAgICB3aWR0aDogMDtcXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kaXNhYmxlLXBvaW50ZXJFdmVudHMge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgJi5leGNhbGlkcmF3LS12aWV3LW1vZGUge1xcbiAgICAuQXBwLW1lbnUge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICB9XFxuICB9XFxuXFxuICAvKnpzdmljemlhbiovXFxuICB0ZXh0YXJlYS5leGNhbGlkcmF3LXd5c2l3eWcge1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcXG4gICAgLW1vei1ib3gtc2hhZG93OiBub25lO1xcbiAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBib3JkZXItcmFkaXVzOiAwO1xcbiAgfVxcblxcbiAgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpIHtcXG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gICAgcGFkZGluZzogMC43NXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtYmctY29sb3IpO1xcblxcbiAgICAmOm5vdCg6Zm9jdXMpIHtcXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWhvdmVyLWJnLWNvbG9yKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIHByaW50IHtcXG4gICAgLkFwcC1ib3R0b20tYmFyLFxcbiAgICAuRml4ZWRTaWRlQ29udGFpbmVyLFxcbiAgICAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIHVzZSBjdXN0b20sIG1pbmltYWxpc3RpYyBzY3JvbGxiYXJcXG4gIC8vIChkb2Vzbid0IHdvcmsgaW4gRmlyZWZveClcXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgICB3aWR0aDogNXB4O1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIH1cXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB1c2VyLXNlbGVjdDogdGV4dDtcXG5cXG4gIC5FcnJvclNwbGFzaC1tZXNzYWdlQ29udGFpbmVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFxuICAgIHBhZGRpbmc6IDQwcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvYy1yZWQtMTtcXG4gICAgYm9yZGVyOiAzcHggc29saWQgJG9jLXJlZC05O1xcbiAgfVxcblxcbiAgLkVycm9yU3BsYXNoLXBhcmFncmFwaCB7XFxuICAgIG1hcmdpbjogMTVweCAwO1xcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xcblxcbiAgICAmLmFsaWduLWNlbnRlciB7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYmlnZ2VyLFxcbiAgLmJpZ2dlciBidXR0b24ge1xcbiAgICBmb250LXNpemU6IDEuMWVtO1xcbiAgfVxcblxcbiAgLnNtYWxsZXIsXFxuICAuc21hbGxlciBidXR0b24ge1xcbiAgICBmb250LXNpemU6IDAuOWVtO1xcbiAgfVxcblxcbiAgLkVycm9yU3BsYXNoLWRldGFpbHMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG5cXG4gICAgdGV4dGFyZWEge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1hcmdpbjogMTBweCAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBcXFwiQ2FzY2FkaWFcXFwiO1xcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuQGltcG9ydCBcXFwiLi92YXJpYWJsZXMubW9kdWxlLnNjc3NcXFwiO1xcblxcbi5leGNhbGlkcmF3IHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBub25lO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICN7JG9jLXJlZC0xfTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjeyRvYy1yZWQtOX07XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICN7JG9jLWdyYXktMn07XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICN7JG9jLWdyYXktNH07XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICN7JG9jLWdyYXktNX07XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogI3skb2MtZ3JlZW4tMH07XFxuICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICN7JG9jLWdyYXktNn07XFxuICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz4nKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjeyRvYy1ibHVlLTJ9O1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktOX07XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogI3skb2MtZ3JlZW4tOX07XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI3skb2MtZ3JheS0xfTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICN7JG9jLWdyYXktN307XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS01fTtcXG4gIC0tbGluay1jb2xvcjogI3skb2MtYmx1ZS03fTtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogI3t0cmFuc3BhcmVudGl6ZSgkb2Mtd2hpdGUsIDAuMTIpfTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjeyRvYy1ncmF5LTF9O1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICN7JG9jLWJsdWUtNX07XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDEpLCAxcHggMXB4IDVweCByZ2IoMCAwIDAgLyAxMiUpO1xcblxcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS04fTtcXG5cXG4gIC0tY29sb3ItcHJpbWFyeTogIzY5NjVkYjtcXG4gIC0tY29sb3ItcHJpbWFyeS1kYXJrZXI6ICM1YjU3ZDE7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VzdDogIzRhNDdiMTtcXG4gIC0tY29sb3ItcHJpbWFyeS1saWdodDogI2UyZTFmYztcXG5cXG4gIC0tYm9yZGVyLXJhZGl1cy1tZDogMC4zNzVyZW07XFxuICAtLWJvcmRlci1yYWRpdXMtbGc6IDAuNXJlbTtcXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICBiYWNrZ3JvdW5kOiAkb2MtYmxhY2s7XFxuXFxuICAgICYudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLS10aGVtZS1maWx0ZXI6ICN7JHRoZW1lLWZpbHRlcn07XFxuICAgIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjNWEwMDAwO1xcbiAgICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTN9O1xcbiAgICAtLWJ1dHRvbi1ncmF5LTE6ICMzNjM2MzY7XFxuICAgIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gICAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogIzIwNDYyNDtcXG4gICAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTl9O1xcbiAgICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBmaWxsPVxcXCIlMjNjZWQ0ZGFcXFwiIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPicpO1xcbiAgICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS02fTtcXG4gICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAgIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjeyRvYy1ncmVlbi00fTtcXG4gICAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJvcmRlci1jb2xvcjogIzJlMmUyZTtcXG4gICAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gICAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI3skb2MtZ3JheS0yfTtcXG4gICAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC45OCk7XFxuICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS02fTtcXG4gICAgLS1saW5rLWNvbG9yOiAjeyRvYy1ibHVlLTR9O1xcbiAgICAtLW92ZXJsYXktYmctY29sb3I6ICN7dHJhbnNwYXJlbnRpemUoJG9jLWdyYXktOCwgMC44OCl9O1xcbiAgICAtLXBvcHVwLWJnLWNvbG9yOiAjMmMyYzJjO1xcbiAgICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gICAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICMyYzJjMmM7XFxuICAgIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS00fTtcXG4gICAgLS1zaGFkb3ctaXNsYW5kOiAxcHggMXB4IDVweCAje3RyYW5zcGFyZW50aXplKCRvYy1ibGFjaywgMC43KX07XFxuICAgIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcblxcbiAgICAtLWNvbG9yLXByaW1hcnk6ICM1NjUwZjA7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1kYXJrZXI6ICM0YjQ2ZDg7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0OiAjM2UzOWJlO1xcbiAgICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICMzZjNkNjQ7XFxuICB9XFxufVxcblwiLFwiLy9cXG4vL1xcbi8vICDwnZeWIPCdl6Ig8J2XnyDwnZeiIPCdl6VcXG4vLyAgdiAxLjkuMVxcbi8vXFxuLy8gIOKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgVxcblxcblxcbi8vICBHZW5lcmFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy13aGl0ZTogICAgICAgICAjZmZmZmZmO1xcbiRvYy1ibGFjazogICAgICAgICAjMDAwMDAwO1xcblxcblxcbi8vICBHcmF5XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmF5LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjlmYSxcXG4gIFxcXCIxXFxcIjogI2YxZjNmNSxcXG4gIFxcXCIyXFxcIjogI2U5ZWNlZixcXG4gIFxcXCIzXFxcIjogI2RlZTJlNixcXG4gIFxcXCI0XFxcIjogI2NlZDRkYSxcXG4gIFxcXCI1XFxcIjogI2FkYjViZCxcXG4gIFxcXCI2XFxcIjogIzg2OGU5NixcXG4gIFxcXCI3XFxcIjogIzQ5NTA1NyxcXG4gIFxcXCI4XFxcIjogIzM0M2E0MCxcXG4gIFxcXCI5XFxcIjogIzIxMjUyOVxcbik7XFxuXFxuJG9jLWdyYXktMDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmF5LTE6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JheS0yOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXktMzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmF5LTQ6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JheS01OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXktNjogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmF5LTc6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JheS04OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXktOTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBSZWRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXJlZC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY1ZjUsXFxuICBcXFwiMVxcXCI6ICNmZmUzZTMsXFxuICBcXFwiMlxcXCI6ICNmZmM5YzksXFxuICBcXFwiM1xcXCI6ICNmZmE4YTgsXFxuICBcXFwiNFxcXCI6ICNmZjg3ODcsXFxuICBcXFwiNVxcXCI6ICNmZjZiNmIsXFxuICBcXFwiNlxcXCI6ICNmYTUyNTIsXFxuICBcXFwiN1xcXCI6ICNmMDNlM2UsXFxuICBcXFwiOFxcXCI6ICNlMDMxMzEsXFxuICBcXFwiOVxcXCI6ICNjOTJhMmFcXG4pO1xcblxcbiRvYy1yZWQtMDogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXJlZC0xOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtcmVkLTI6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1yZWQtMzogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXJlZC00OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtcmVkLTU6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1yZWQtNjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXJlZC03OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtcmVkLTg6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1yZWQtOTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFBpbmtcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXBpbmstbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmMGY2LFxcbiAgXFxcIjFcXFwiOiAjZmZkZWViLFxcbiAgXFxcIjJcXFwiOiAjZmNjMmQ3LFxcbiAgXFxcIjNcXFwiOiAjZmFhMmMxLFxcbiAgXFxcIjRcXFwiOiAjZjc4M2FjLFxcbiAgXFxcIjVcXFwiOiAjZjA2NTk1LFxcbiAgXFxcIjZcXFwiOiAjZTY0OTgwLFxcbiAgXFxcIjdcXFwiOiAjZDYzMzZjLFxcbiAgXFxcIjhcXFwiOiAjYzIyNTVjLFxcbiAgXFxcIjlcXFwiOiAjYTYxZTRkXFxuKTtcXG5cXG4kb2MtcGluay0wOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXBpbmstMTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1waW5rLTI6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtcGluay0zOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXBpbmstNDogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1waW5rLTU6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtcGluay02OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXBpbmstNzogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1waW5rLTg6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtcGluay05OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEdyYXBlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmFwZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmOGYwZmMsXFxuICBcXFwiMVxcXCI6ICNmM2Q5ZmEsXFxuICBcXFwiMlxcXCI6ICNlZWJlZmEsXFxuICBcXFwiM1xcXCI6ICNlNTk5ZjcsXFxuICBcXFwiNFxcXCI6ICNkYTc3ZjIsXFxuICBcXFwiNVxcXCI6ICNjYzVkZTgsXFxuICBcXFwiNlxcXCI6ICNiZTRiZGIsXFxuICBcXFwiN1xcXCI6ICNhZTNlYzksXFxuICBcXFwiOFxcXCI6ICM5YzM2YjUsXFxuICBcXFwiOVxcXCI6ICM4NjJlOWNcXG4pO1xcblxcbiRvYy1ncmFwZS0wOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmFwZS0xOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmFwZS0yOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ncmFwZS0zOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmFwZS00OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmFwZS01OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ncmFwZS02OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmFwZS03OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmFwZS04OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ncmFwZS05OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBWaW9sZXRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXZpb2xldC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmM2YwZmYsXFxuICBcXFwiMVxcXCI6ICNlNWRiZmYsXFxuICBcXFwiMlxcXCI6ICNkMGJmZmYsXFxuICBcXFwiM1xcXCI6ICNiMTk3ZmMsXFxuICBcXFwiNFxcXCI6ICM5Nzc1ZmEsXFxuICBcXFwiNVxcXCI6ICM4NDVlZjcsXFxuICBcXFwiNlxcXCI6ICM3OTUwZjIsXFxuICBcXFwiN1xcXCI6ICM3MDQ4ZTgsXFxuICBcXFwiOFxcXCI6ICM2NzQxZDksXFxuICBcXFwiOVxcXCI6ICM1ZjNkYzRcXG4pO1xcblxcbiRvYy12aW9sZXQtMDogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXZpb2xldC0xOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdmlvbGV0LTI6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy12aW9sZXQtMzogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXZpb2xldC00OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdmlvbGV0LTU6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy12aW9sZXQtNjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXZpb2xldC03OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdmlvbGV0LTg6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy12aW9sZXQtOTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEluZGlnb1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtaW5kaWdvLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2VkZjJmZixcXG4gIFxcXCIxXFxcIjogI2RiZTRmZixcXG4gIFxcXCIyXFxcIjogI2JhYzhmZixcXG4gIFxcXCIzXFxcIjogIzkxYTdmZixcXG4gIFxcXCI0XFxcIjogIzc0OGZmYyxcXG4gIFxcXCI1XFxcIjogIzVjN2NmYSxcXG4gIFxcXCI2XFxcIjogIzRjNmVmNSxcXG4gIFxcXCI3XFxcIjogIzQyNjNlYixcXG4gIFxcXCI4XFxcIjogIzNiNWJkYixcXG4gIFxcXCI5XFxcIjogIzM2NGZjN1xcbik7XFxuXFxuJG9jLWluZGlnby0wOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtaW5kaWdvLTE6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1pbmRpZ28tMjogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWluZGlnby0zOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtaW5kaWdvLTQ6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1pbmRpZ28tNTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWluZGlnby02OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtaW5kaWdvLTc6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1pbmRpZ28tODogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWluZGlnby05OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQmx1ZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtYmx1ZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlN2Y1ZmYsXFxuICBcXFwiMVxcXCI6ICNkMGViZmYsXFxuICBcXFwiMlxcXCI6ICNhNWQ4ZmYsXFxuICBcXFwiM1xcXCI6ICM3NGMwZmMsXFxuICBcXFwiNFxcXCI6ICM0ZGFiZjcsXFxuICBcXFwiNVxcXCI6ICMzMzlhZjAsXFxuICBcXFwiNlxcXCI6ICMyMjhiZTYsXFxuICBcXFwiN1xcXCI6ICMxYzdlZDYsXFxuICBcXFwiOFxcXCI6ICMxOTcxYzIsXFxuICBcXFwiOVxcXCI6ICMxODY0YWJcXG4pO1xcblxcbiRvYy1ibHVlLTA6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtYmx1ZS0xOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWJsdWUtMjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ibHVlLTM6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtYmx1ZS00OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWJsdWUtNTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ibHVlLTY6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtYmx1ZS03OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWJsdWUtODogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ibHVlLTk6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQ3lhblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtY3lhbi1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlM2ZhZmMsXFxuICBcXFwiMVxcXCI6ICNjNWY2ZmEsXFxuICBcXFwiMlxcXCI6ICM5OWU5ZjIsXFxuICBcXFwiM1xcXCI6ICM2NmQ5ZTgsXFxuICBcXFwiNFxcXCI6ICMzYmM5ZGIsXFxuICBcXFwiNVxcXCI6ICMyMmI4Y2YsXFxuICBcXFwiNlxcXCI6ICMxNWFhYmYsXFxuICBcXFwiN1xcXCI6ICMxMDk4YWQsXFxuICBcXFwiOFxcXCI6ICMwYzg1OTksXFxuICBcXFwiOVxcXCI6ICMwYjcyODVcXG4pO1xcblxcbiRvYy1jeWFuLTA6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtY3lhbi0xOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWN5YW4tMjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1jeWFuLTM6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtY3lhbi00OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWN5YW4tNTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1jeWFuLTY6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtY3lhbi03OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWN5YW4tODogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1jeWFuLTk6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgVGVhbFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdGVhbC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlNmZjZjUsXFxuICBcXFwiMVxcXCI6ICNjM2ZhZTgsXFxuICBcXFwiMlxcXCI6ICM5NmYyZDcsXFxuICBcXFwiM1xcXCI6ICM2M2U2YmUsXFxuICBcXFwiNFxcXCI6ICMzOGQ5YTksXFxuICBcXFwiNVxcXCI6ICMyMGM5OTcsXFxuICBcXFwiNlxcXCI6ICMxMmI4ODYsXFxuICBcXFwiN1xcXCI6ICMwY2E2NzgsXFxuICBcXFwiOFxcXCI6ICMwOTkyNjgsXFxuICBcXFwiOVxcXCI6ICMwODdmNWJcXG4pO1xcblxcbiRvYy10ZWFsLTA6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdGVhbC0xOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXRlYWwtMjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy10ZWFsLTM6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdGVhbC00OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXRlYWwtNTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy10ZWFsLTY6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdGVhbC03OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXRlYWwtODogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy10ZWFsLTk6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JlZW5cXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyZWVuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ViZmJlZSxcXG4gIFxcXCIxXFxcIjogI2QzZjlkOCxcXG4gIFxcXCIyXFxcIjogI2IyZjJiYixcXG4gIFxcXCIzXFxcIjogIzhjZTk5YSxcXG4gIFxcXCI0XFxcIjogIzY5ZGI3YyxcXG4gIFxcXCI1XFxcIjogIzUxY2Y2NixcXG4gIFxcXCI2XFxcIjogIzQwYzA1NyxcXG4gIFxcXCI3XFxcIjogIzM3YjI0ZCxcXG4gIFxcXCI4XFxcIjogIzJmOWU0NCxcXG4gIFxcXCI5XFxcIjogIzJiOGEzZVxcbik7XFxuXFxuJG9jLWdyZWVuLTA6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyZWVuLTE6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyZWVuLTI6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyZWVuLTM6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyZWVuLTQ6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyZWVuLTU6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyZWVuLTY6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyZWVuLTc6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyZWVuLTg6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyZWVuLTk6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIExpbWVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWxpbWUtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjRmY2UzLFxcbiAgXFxcIjFcXFwiOiAjZTlmYWM4LFxcbiAgXFxcIjJcXFwiOiAjZDhmNWEyLFxcbiAgXFxcIjNcXFwiOiAjYzBlYjc1LFxcbiAgXFxcIjRcXFwiOiAjYTllMzRiLFxcbiAgXFxcIjVcXFwiOiAjOTRkODJkLFxcbiAgXFxcIjZcXFwiOiAjODJjOTFlLFxcbiAgXFxcIjdcXFwiOiAjNzRiODE2LFxcbiAgXFxcIjhcXFwiOiAjNjZhODBmLFxcbiAgXFxcIjlcXFwiOiAjNWM5NDBkXFxuKTtcXG5cXG4kb2MtbGltZS0wOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWxpbWUtMTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1saW1lLTI6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtbGltZS0zOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWxpbWUtNDogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1saW1lLTU6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtbGltZS02OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWxpbWUtNzogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1saW1lLTg6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtbGltZS05OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFllbGxvd1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MteWVsbG93LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjlkYixcXG4gIFxcXCIxXFxcIjogI2ZmZjNiZixcXG4gIFxcXCIyXFxcIjogI2ZmZWM5OSxcXG4gIFxcXCIzXFxcIjogI2ZmZTA2NixcXG4gIFxcXCI0XFxcIjogI2ZmZDQzYixcXG4gIFxcXCI1XFxcIjogI2ZjYzQxOSxcXG4gIFxcXCI2XFxcIjogI2ZhYjAwNSxcXG4gIFxcXCI3XFxcIjogI2Y1OWYwMCxcXG4gIFxcXCI4XFxcIjogI2YwOGMwMCxcXG4gIFxcXCI5XFxcIjogI2U2NzcwMFxcbik7XFxuXFxuJG9jLXllbGxvdy0wOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MteWVsbG93LTE6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy15ZWxsb3ctMjogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXllbGxvdy0zOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MteWVsbG93LTQ6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy15ZWxsb3ctNTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXllbGxvdy02OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MteWVsbG93LTc6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy15ZWxsb3ctODogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXllbGxvdy05OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgT3JhbmdlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1vcmFuZ2UtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmNGU2LFxcbiAgXFxcIjFcXFwiOiAjZmZlOGNjLFxcbiAgXFxcIjJcXFwiOiAjZmZkOGE4LFxcbiAgXFxcIjNcXFwiOiAjZmZjMDc4LFxcbiAgXFxcIjRcXFwiOiAjZmZhOTRkLFxcbiAgXFxcIjVcXFwiOiAjZmY5MjJiLFxcbiAgXFxcIjZcXFwiOiAjZmQ3ZTE0LFxcbiAgXFxcIjdcXFwiOiAjZjc2NzA3LFxcbiAgXFxcIjhcXFwiOiAjZTg1OTBjLFxcbiAgXFxcIjlcXFwiOiAjZDk0ODBmXFxuKTtcXG5cXG4kb2Mtb3JhbmdlLTA6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1vcmFuZ2UtMTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLW9yYW5nZS0yOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2Mtb3JhbmdlLTM6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1vcmFuZ2UtNDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLW9yYW5nZS01OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2Mtb3JhbmdlLTY6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1vcmFuZ2UtNzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLW9yYW5nZS04OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2Mtb3JhbmdlLTk6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDb2xvciBsaXN0XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jb2xvci1zcGVjdHJ1bTogICA5O1xcblxcbiRvYy1jb2xvci1saXN0OiAoXFxuICAkb2MtZ3JheS1saXN0OiAgICAgIFxcXCJncmF5XFxcIixcXG4gICRvYy1yZWQtbGlzdDogICAgICBcXFwicmVkXFxcIixcXG4gICRvYy1waW5rLWxpc3Q6ICAgICAgXFxcInBpbmtcXFwiLFxcbiAgJG9jLWdyYXBlLWxpc3Q6ICAgICAgXFxcImdyYXBlXFxcIixcXG4gICRvYy12aW9sZXQtbGlzdDogICAgICBcXFwidmlvbGV0XFxcIixcXG4gICRvYy1pbmRpZ28tbGlzdDogICAgICBcXFwiaW5kaWdvXFxcIixcXG4gICRvYy1ibHVlLWxpc3Q6ICAgICAgXFxcImJsdWVcXFwiLFxcbiAgJG9jLWN5YW4tbGlzdDogICAgICBcXFwiY3lhblxcXCIsXFxuICAkb2MtdGVhbC1saXN0OiAgICAgIFxcXCJ0ZWFsXFxcIixcXG4gICRvYy1ncmVlbi1saXN0OiAgICAgIFxcXCJncmVlblxcXCIsXFxuICAkb2MtbGltZS1saXN0OiAgICAgIFxcXCJsaW1lXFxcIixcXG4gICRvYy15ZWxsb3ctbGlzdDogICAgICBcXFwieWVsbG93XFxcIixcXG4gICRvYy1vcmFuZ2UtbGlzdDogICAgICBcXFwib3JhbmdlXFxcIlxcbik7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../css/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B0%5D.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js");
1480
1480
 
1481
1481
  /***/ }),
1482
1482
 
@@ -1861,7 +1861,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
1861
1861
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1862
1862
 
1863
1863
  "use strict";
1864
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"trackEvent\\\": () => (/* binding */ trackEvent)\\n/* harmony export */ });\\nvar _a, _b;\\r\\nconst trackEvent = typeof process !== \\\"undefined\\\" && ((_a = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-5\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _a === void 0 ? void 0 : _a.REACT_APP_GOOGLE_ANALYTICS_ID) && typeof window !== \\\"undefined\\\" && window.gtag ? function (category, action, label, value) {\\r\\n try {\\r\\n window.gtag(\\\"event\\\", action, {\\r\\n event_category: category,\\r\\n event_label: label,\\r\\n value\\r\\n });\\r\\n }\\r\\n catch (error) {\\r\\n console.error(\\\"error logging to ga\\\", error);\\r\\n }\\r\\n} : typeof process !== \\\"undefined\\\" && ((_b = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-5\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _b === void 0 ? void 0 : _b.JEST_WORKER_ID) ? function (category, action, label, value) { } : function (category, action, label, value) {\\r\\n // console.log(\\\"Track Event\\\", { category, action, label, value });\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sTUFBTSxVQUFVLEdBQUcsT0FBTyxPQUFPLEtBQUssV0FBVyxLQUFJLG00QkFBVywwQ0FBRSw2QkFBNkIsS0FBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQy9MLElBQUk7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7WUFDM0IsY0FBYyxFQUFFLFFBQVE7WUFDeEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsS0FBSztTQUNOLENBQUMsQ0FBQztLQUNKO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzdDO0FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEtBQUksbTRCQUFXLDBDQUFFLGNBQWMsRUFBQyxDQUFDLENBQUMsVUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDekosa0VBQWtFO0FBQ3BFLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hbmFseXRpY3MudHM/ZmIxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdHJhY2tFdmVudCA9IHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5SRUFDVF9BUFBfR09PR0xFX0FOQUxZVElDU19JRCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5ndGFnID8gZnVuY3Rpb24gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkge1xuICB0cnkge1xuICAgIHdpbmRvdy5ndGFnKFwiZXZlbnRcIiwgYWN0aW9uLCB7XG4gICAgICBldmVudF9jYXRlZ29yeTogY2F0ZWdvcnksXG4gICAgICBldmVudF9sYWJlbDogbGFiZWwsXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJlcnJvciBsb2dnaW5nIHRvIGdhXCIsIGVycm9yKTtcbiAgfVxufSA6IHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5KRVNUX1dPUktFUl9JRCA/IGZ1bmN0aW9uIChjYXRlZ29yeSwgYWN0aW9uLCBsYWJlbCwgdmFsdWUpIHt9IDogZnVuY3Rpb24gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgey8vIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIHRyYWNrIGxvY2FsbHlcbiAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../analytics.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../analytics.ts?");
1864
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"trackEvent\\\": () => (/* binding */ trackEvent)\\n/* harmony export */ });\\nvar _a, _b;\\r\\nconst trackEvent = typeof process !== \\\"undefined\\\" && ((_a = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-7\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _a === void 0 ? void 0 : _a.REACT_APP_GOOGLE_ANALYTICS_ID) && typeof window !== \\\"undefined\\\" && window.gtag ? function (category, action, label, value) {\\r\\n try {\\r\\n window.gtag(\\\"event\\\", action, {\\r\\n event_category: category,\\r\\n event_label: label,\\r\\n value\\r\\n });\\r\\n }\\r\\n catch (error) {\\r\\n console.error(\\\"error logging to ga\\\", error);\\r\\n }\\r\\n} : typeof process !== \\\"undefined\\\" && ((_b = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-7\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _b === void 0 ? void 0 : _b.JEST_WORKER_ID) ? function (category, action, label, value) { } : function (category, action, label, value) {\\r\\n // console.log(\\\"Track Event\\\", { category, action, label, value });\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sTUFBTSxVQUFVLEdBQUcsT0FBTyxPQUFPLEtBQUssV0FBVyxLQUFJLG00QkFBVywwQ0FBRSw2QkFBNkIsS0FBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQy9MLElBQUk7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7WUFDM0IsY0FBYyxFQUFFLFFBQVE7WUFDeEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsS0FBSztTQUNOLENBQUMsQ0FBQztLQUNKO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzdDO0FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEtBQUksbTRCQUFXLDBDQUFFLGNBQWMsRUFBQyxDQUFDLENBQUMsVUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDekosa0VBQWtFO0FBQ3BFLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hbmFseXRpY3MudHM/ZmIxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdHJhY2tFdmVudCA9IHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5SRUFDVF9BUFBfR09PR0xFX0FOQUxZVElDU19JRCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5ndGFnID8gZnVuY3Rpb24gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkge1xuICB0cnkge1xuICAgIHdpbmRvdy5ndGFnKFwiZXZlbnRcIiwgYWN0aW9uLCB7XG4gICAgICBldmVudF9jYXRlZ29yeTogY2F0ZWdvcnksXG4gICAgICBldmVudF9sYWJlbDogbGFiZWwsXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJlcnJvciBsb2dnaW5nIHRvIGdhXCIsIGVycm9yKTtcbiAgfVxufSA6IHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5KRVNUX1dPUktFUl9JRCA/IGZ1bmN0aW9uIChjYXRlZ29yeSwgYWN0aW9uLCBsYWJlbCwgdmFsdWUpIHt9IDogZnVuY3Rpb24gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgey8vIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIHRyYWNrIGxvY2FsbHlcbiAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../analytics.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../analytics.ts?");
1865
1865
 
1866
1866
  /***/ }),
1867
1867
 
@@ -1927,7 +1927,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
1927
1927
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1928
1928
 
1929
1929
  "use strict";
1930
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"ExitZenModeAction\\\": () => (/* binding */ ExitZenModeAction),\\n/* harmony export */ \\\"FinalizeAction\\\": () => (/* binding */ FinalizeAction),\\n/* harmony export */ \\\"SelectedShapeActions\\\": () => (/* binding */ SelectedShapeActions),\\n/* harmony export */ \\\"ShapesSwitcher\\\": () => (/* binding */ ShapesSwitcher),\\n/* harmony export */ \\\"UndoRedoActions\\\": () => (/* binding */ UndoRedoActions),\\n/* harmony export */ \\\"ZoomActions\\\": () => (/* binding */ ZoomActions)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene */ \\\"../../scene/index.ts\\\");\\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shapes */ \\\"../../shapes.tsx\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Stack */ \\\"../../components/Stack.tsx\\\");\\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ToolButton */ \\\"../../components/ToolButton.tsx\\\");\\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene/comparisons */ \\\"../../scene/comparisons.ts\\\");\\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../analytics */ \\\"../../analytics.ts\\\");\\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! clsx */ \\\"../../../node_modules/clsx/dist/clsx.m.js\\\");\\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../actions */ \\\"../../actions/index.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), 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 = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst SelectedShapeActions = function (_ref) {\\r\\n var _a;\\r\\n let { appState, elements, renderAction } = _ref;\\r\\n const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_1__.getNonDeletedElements)(elements), appState);\\r\\n let isSingleElementBoundContainer = false;\\r\\n if (targetElements.length === 2 && ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[0]) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[1]))) {\\r\\n isSingleElementBoundContainer = true;\\r\\n }\\r\\n const isEditing = Boolean(appState.editingElement);\\r\\n const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_3__.useDevice)();\\r\\n const isRTL = document.documentElement.getAttribute(\\\"dir\\\") === \\\"rtl\\\";\\r\\n const showFillIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(element.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_6__.isTransparent)(element.backgroundColor);\\r\\n });\\r\\n const showChangeBackgroundIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(element.type);\\r\\n });\\r\\n const showLinkIcon = targetElements.length === 1 || isSingleElementBoundContainer;\\r\\n let commonSelectedType = ((_a = targetElements[0]) === null || _a === void 0 ? void 0 : _a.type) || null;\\r\\n for (const element of targetElements) {\\r\\n if (element.type !== commonSelectedType) {\\r\\n commonSelectedType = null;\\r\\n break;\\r\\n }\\r\\n }\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"panelColumn\\\",\\r\\n children: [((0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_9__.hasStrokeColor)(appState.activeTool.type) && appState.activeTool.type !== \\\"image\\\" && commonSelectedType !== \\\"image\\\" || targetElements.some(function (element) {\\r\\n return (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_9__.hasStrokeColor)(element.type);\\r\\n })) && renderAction(\\\"changeStrokeColor\\\"), showChangeBackgroundIcons && renderAction(\\\"changeBackgroundColor\\\"), showFillIcons && renderAction(\\\"changeFillStyle\\\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeWidth)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeWidth)(element.type);\\r\\n })) && renderAction(\\\"changeStrokeWidth\\\"), (appState.activeTool.type === \\\"freedraw\\\" || targetElements.some(function (element) {\\r\\n return element.type === \\\"freedraw\\\";\\r\\n })) && renderAction(\\\"changeStrokeShape\\\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeStyle)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeStyle)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"changeStrokeStyle\\\"), renderAction(\\\"changeSloppiness\\\")]\\r\\n }), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.canChangeSharpness)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.canChangeSharpness)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: renderAction(\\\"changeSharpness\\\")\\r\\n }), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasText)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasText)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"changeFontSize\\\"), renderAction(\\\"changeFontFamily\\\"), renderAction(\\\"changeTextAlign\\\")]\\r\\n }), targetElements.some(function (element) {\\r\\n return (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(element);\\r\\n }) && renderAction(\\\"changeVerticalAlign\\\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.canHaveArrowheads)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.canHaveArrowheads)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: renderAction(\\\"changeArrowhead\\\")\\r\\n }), renderAction(\\\"changeOpacity\\\"), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"labels.layers\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"buttonList\\\",\\r\\n children: [renderAction(\\\"sendToBack\\\"), renderAction(\\\"sendBackward\\\"), renderAction(\\\"bringToFront\\\"), renderAction(\\\"bringForward\\\")]\\r\\n })]\\r\\n }), targetElements.length > 1 && !isSingleElementBoundContainer && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"labels.align\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"buttonList\\\",\\r\\n children: [isRTL ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"alignRight\\\"), renderAction(\\\"alignHorizontallyCentered\\\"), renderAction(\\\"alignLeft\\\")]\\r\\n }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"alignLeft\\\"), renderAction(\\\"alignHorizontallyCentered\\\"), renderAction(\\\"alignRight\\\")]\\r\\n }), targetElements.length > 2 && renderAction(\\\"distributeHorizontally\\\"), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"iconRow\\\",\\r\\n children: [renderAction(\\\"alignTop\\\"), renderAction(\\\"alignVerticallyCentered\\\"), renderAction(\\\"alignBottom\\\"), targetElements.length > 2 && renderAction(\\\"distributeVertically\\\")]\\r\\n })]\\r\\n })]\\r\\n }), !isEditing && targetElements.length > 0 && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"labels.actions\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"buttonList\\\",\\r\\n children: [!device.isMobile && renderAction(\\\"duplicateSelection\\\"), !device.isMobile && renderAction(\\\"deleteSelectedElements\\\"), renderAction(\\\"group\\\"), renderAction(\\\"ungroup\\\"), showLinkIcon && renderAction(\\\"hyperlink\\\")]\\r\\n })]\\r\\n })]\\r\\n });\\r\\n};\\r\\nconst ShapesSwitcher = function (_ref2) {\\r\\n let { canvas, activeTool, setAppState, onImageAction, appState } = _ref2;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: _shapes__WEBPACK_IMPORTED_MODULE_5__.SHAPES.map(function (_ref3, index) {\\r\\n let { value, icon, key } = _ref3;\\r\\n const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(`toolBar.${value}`);\\r\\n const letter = key && (typeof key === \\\"string\\\" ? key : key[0]);\\r\\n const shortcut = letter ? `${(0,_utils__WEBPACK_IMPORTED_MODULE_6__.capitalizeString)(letter)} ${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"helpDialog.or\\\")} ${index + 1}` : `${index + 1}`;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_8__.ToolButton, {\\r\\n className: \\\"Shape\\\",\\r\\n type: \\\"radio\\\",\\r\\n icon: icon,\\r\\n checked: activeTool.type === value,\\r\\n name: \\\"editor-current-shape\\\",\\r\\n title: `${(0,_utils__WEBPACK_IMPORTED_MODULE_6__.capitalizeString)(label)} — ${shortcut}`,\\r\\n keyBindingLabel: `${index + 1}`,\\r\\n \\\"aria-label\\\": (0,_utils__WEBPACK_IMPORTED_MODULE_6__.capitalizeString)(label),\\r\\n \\\"aria-keyshortcuts\\\": shortcut,\\r\\n \\\"data-testid\\\": value,\\r\\n onPointerDown: function (_ref4) {\\r\\n let { pointerType } = _ref4;\\r\\n if (!appState.penDetected && pointerType === \\\"pen\\\") {\\r\\n setAppState({\\r\\n penDetected: true,\\r\\n penMode: true\\r\\n });\\r\\n }\\r\\n },\\r\\n onChange: function (_ref5) {\\r\\n let { pointerType } = _ref5;\\r\\n if (appState.activeTool.type !== value) {\\r\\n (0,_analytics__WEBPACK_IMPORTED_MODULE_10__.trackEvent)(\\\"toolbar\\\", value, \\\"ui\\\");\\r\\n }\\r\\n const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.updateActiveTool)(appState, {\\r\\n type: value\\r\\n });\\r\\n setAppState({\\r\\n activeTool: nextActiveTool,\\r\\n multiElement: null,\\r\\n selectedElementIds: {}\\r\\n });\\r\\n (0,_utils__WEBPACK_IMPORTED_MODULE_6__.setCursorForShape)(canvas, _objectSpread(_objectSpread({}, appState), {}, {\\r\\n activeTool: nextActiveTool\\r\\n }));\\r\\n if (value === \\\"image\\\") {\\r\\n onImageAction({\\r\\n pointerType\\r\\n });\\r\\n }\\r\\n }\\r\\n }, value);\\r\\n })\\r\\n });\\r\\n};\\r\\nconst ZoomActions = function (_ref6) {\\r\\n let { renderAction, zoom } = _ref6;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].Col, {\\r\\n gap: 1,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].Row, {\\r\\n gap: 1,\\r\\n align: \\\"center\\\",\\r\\n children: [renderAction(\\\"zoomOut\\\"), renderAction(\\\"zoomIn\\\"), renderAction(\\\"resetZoom\\\")]\\r\\n })\\r\\n });\\r\\n};\\r\\nconst UndoRedoActions = function (_ref7) {\\r\\n let { renderAction, className } = _ref7;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: `undo-redo-buttons ${className}`,\\r\\n children: [renderAction(\\\"undo\\\", {\\r\\n size: \\\"small\\\"\\r\\n }), renderAction(\\\"redo\\\", {\\r\\n size: \\\"small\\\"\\r\\n })]\\r\\n });\\r\\n};\\r\\nconst ExitZenModeAction = function (_ref8) {\\r\\n let { executeAction, showExitZenModeBtn } = _ref8;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"button\\\", {\\r\\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"])(\\\"disable-zen-mode\\\", {\\r\\n \\\"disable-zen-mode--visible\\\": showExitZenModeBtn\\r\\n }),\\r\\n onClick: function () {\\r\\n return executeAction(_actions__WEBPACK_IMPORTED_MODULE_13__.actionToggleZenMode);\\r\\n },\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"buttons.exitZenMode\\\")\\r\\n });\\r\\n};\\r\\nconst FinalizeAction = function (_ref9) {\\r\\n let { renderAction, className } = _ref9;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"div\\\", {\\r\\n className: `finalize-button ${className}`,\\r\\n children: renderAction(\\\"finalize\\\", {\\r\\n size: \\\"small\\\"\\r\\n })\\r\\n });\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQztBQUNMLENBQUMsQ0FBQztBQUNLLE1BQU0sY0FBYyxHQUFHLFVBQVUsS0FBSztJQUMzQyxJQUFJLEVBQ0YsWUFBWSxFQUNaLFNBQVMsRUFDVixHQUFHLEtBQUssQ0FBQztJQUNWLE9BQU8sYUFBYSx3REFBSSxDQUFDLEtBQUssRUFBRTtRQUM5QixTQUFTLEVBQUUsbUJBQW1CLFNBQVMsRUFBRTtRQUN6QyxRQUFRLEVBQUUsWUFBWSxDQUFDLFVBQVUsRUFBRTtZQUNqQyxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9BY3Rpb25zLnRzeD8xNzI1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgeyBjYW5DaGFuZ2VTaGFycG5lc3MsIGNhbkhhdmVBcnJvd2hlYWRzLCBnZXRUYXJnZXRFbGVtZW50cywgaGFzQmFja2dyb3VuZCwgaGFzU3Ryb2tlU3R5bGUsIGhhc1N0cm9rZVdpZHRoLCBoYXNUZXh0IH0gZnJvbSBcIi4uL3NjZW5lXCI7XG5pbXBvcnQgeyBTSEFQRVMgfSBmcm9tIFwiLi4vc2hhcGVzXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplU3RyaW5nLCBpc1RyYW5zcGFyZW50LCB1cGRhdGVBY3RpdmVUb29sLCBzZXRDdXJzb3JGb3JTaGFwZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBUb29sQnV0dG9uIH0gZnJvbSBcIi4vVG9vbEJ1dHRvblwiO1xuaW1wb3J0IHsgaGFzU3Ryb2tlQ29sb3IgfSBmcm9tIFwiLi4vc2NlbmUvY29tcGFyaXNvbnNcIjtcbmltcG9ydCB7IHRyYWNrRXZlbnQgfSBmcm9tIFwiLi4vYW5hbHl0aWNzXCI7XG5pbXBvcnQgeyBoYXNCb3VuZFRleHRFbGVtZW50LCBpc0JvdW5kVG9Db250YWluZXIgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgYWN0aW9uVG9nZ2xlWmVuTW9kZSB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgY29uc3QgU2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSBmdW5jdGlvbiAoX3JlZikge1xuICBsZXQge1xuICAgIGFwcFN0YXRlLFxuICAgIGVsZW1lbnRzLFxuICAgIHJlbmRlckFjdGlvblxuICB9ID0gX3JlZjtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudHMgPSBnZXRUYXJnZXRFbGVtZW50cyhnZXROb25EZWxldGVkRWxlbWVudHMoZWxlbWVudHMpLCBhcHBTdGF0ZSk7XG4gIGxldCBpc1NpbmdsZUVsZW1lbnRCb3VuZENvbnRhaW5lciA9IGZhbHNlO1xuXG4gIGlmICh0YXJnZXRFbGVtZW50cy5sZW5ndGggPT09IDIgJiYgKGhhc0JvdW5kVGV4dEVsZW1lbnQodGFyZ2V0RWxlbWVudHNbMF0pIHx8IGhhc0JvdW5kVGV4dEVsZW1lbnQodGFyZ2V0RWxlbWVudHNbMV0pKSkge1xuICAgIGlzU2luZ2xlRWxlbWVudEJvdW5kQ29udGFpbmVyID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGlzRWRpdGluZyA9IEJvb2xlYW4oYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQpO1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3QgaXNSVEwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGlyXCIpID09PSBcInJ0bFwiO1xuICBjb25zdCBzaG93RmlsbEljb25zID0gaGFzQmFja2dyb3VuZChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gaGFzQmFja2dyb3VuZChlbGVtZW50LnR5cGUpICYmICFpc1RyYW5zcGFyZW50KGVsZW1lbnQuYmFja2dyb3VuZENvbG9yKTtcbiAgfSk7XG4gIGNvbnN0IHNob3dDaGFuZ2VCYWNrZ3JvdW5kSWNvbnMgPSBoYXNCYWNrZ3JvdW5kKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSkgfHwgdGFyZ2V0RWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBoYXNCYWNrZ3JvdW5kKGVsZW1lbnQudHlwZSk7XG4gIH0pO1xuICBjb25zdCBzaG93TGlua0ljb24gPSB0YXJnZXRFbGVtZW50cy5sZW5ndGggPT09IDEgfHwgaXNTaW5nbGVFbGVtZW50Qm91bmRDb250YWluZXI7XG4gIGxldCBjb21tb25TZWxlY3RlZFR5cGUgPSB0YXJnZXRFbGVtZW50c1swXT8udHlwZSB8fCBudWxsO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiB0YXJnZXRFbGVtZW50cykge1xuICAgIGlmIChlbGVtZW50LnR5cGUgIT09IGNvbW1vblNlbGVjdGVkVHlwZSkge1xuICAgICAgY29tbW9uU2VsZWN0ZWRUeXBlID0gbnVsbDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogXCJwYW5lbENvbHVtblwiLFxuICAgIGNoaWxkcmVuOiBbKGhhc1N0cm9rZUNvbG9yKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSkgJiYgYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlICE9PSBcImltYWdlXCIgJiYgY29tbW9uU2VsZWN0ZWRUeXBlICE9PSBcImltYWdlXCIgfHwgdGFyZ2V0RWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGhhc1N0cm9rZUNvbG9yKGVsZW1lbnQudHlwZSk7XG4gICAgfSkpICYmIHJlbmRlckFjdGlvbihcImNoYW5nZVN0cm9rZUNvbG9yXCIpLCBzaG93Q2hhbmdlQmFja2dyb3VuZEljb25zICYmIHJlbmRlckFjdGlvbihcImNoYW5nZUJhY2tncm91bmRDb2xvclwiKSwgc2hvd0ZpbGxJY29ucyAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VGaWxsU3R5bGVcIiksIChoYXNTdHJva2VXaWR0aChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBoYXNTdHJva2VXaWR0aChlbGVtZW50LnR5cGUpO1xuICAgIH0pKSAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VTdHJva2VXaWR0aFwiKSwgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSA9PT0gXCJmcmVlZHJhd1wiIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09IFwiZnJlZWRyYXdcIjtcbiAgICB9KSkgJiYgcmVuZGVyQWN0aW9uKFwiY2hhbmdlU3Ryb2tlU2hhcGVcIiksIChoYXNTdHJva2VTdHlsZShhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBoYXNTdHJva2VTdHlsZShlbGVtZW50LnR5cGUpO1xuICAgIH0pKSAmJiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcImNoYW5nZVN0cm9rZVN0eWxlXCIpLCByZW5kZXJBY3Rpb24oXCJjaGFuZ2VTbG9wcGluZXNzXCIpXVxuICAgIH0pLCAoY2FuQ2hhbmdlU2hhcnBuZXNzKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSkgfHwgdGFyZ2V0RWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGNhbkNoYW5nZVNoYXJwbmVzcyhlbGVtZW50LnR5cGUpO1xuICAgIH0pKSAmJiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICAgIGNoaWxkcmVuOiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VTaGFycG5lc3NcIilcbiAgICB9KSwgKGhhc1RleHQoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSB8fCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gaGFzVGV4dChlbGVtZW50LnR5cGUpO1xuICAgIH0pKSAmJiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcImNoYW5nZUZvbnRTaXplXCIpLCByZW5kZXJBY3Rpb24oXCJjaGFuZ2VGb250RmFtaWx5XCIpLCByZW5kZXJBY3Rpb24oXCJjaGFuZ2VUZXh0QWxpZ25cIildXG4gICAgfSksIHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBoYXNCb3VuZFRleHRFbGVtZW50KGVsZW1lbnQpIHx8IGlzQm91bmRUb0NvbnRhaW5lcihlbGVtZW50KTtcbiAgICB9KSAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VWZXJ0aWNhbEFsaWduXCIpLCAoY2FuSGF2ZUFycm93aGVhZHMoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSB8fCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gY2FuSGF2ZUFycm93aGVhZHMoZWxlbWVudC50eXBlKTtcbiAgICB9KSkgJiYgLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogcmVuZGVyQWN0aW9uKFwiY2hhbmdlQXJyb3doZWFkXCIpXG4gICAgfSksIHJlbmRlckFjdGlvbihcImNoYW5nZU9wYWNpdHlcIiksIC8qI19fUFVSRV9fKi9fanN4cyhcImZpZWxkc2V0XCIsIHtcbiAgICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goXCJsZWdlbmRcIiwge1xuICAgICAgICBjaGlsZHJlbjogdChcImxhYmVscy5sYXllcnNcIilcbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiYnV0dG9uTGlzdFwiLFxuICAgICAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcInNlbmRUb0JhY2tcIiksIHJlbmRlckFjdGlvbihcInNlbmRCYWNrd2FyZFwiKSwgcmVuZGVyQWN0aW9uKFwiYnJpbmdUb0Zyb250XCIpLCByZW5kZXJBY3Rpb24oXCJicmluZ0ZvcndhcmRcIildXG4gICAgICB9KV1cbiAgICB9KSwgdGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMSAmJiAhaXNTaW5nbGVFbGVtZW50Qm91bmRDb250YWluZXIgJiYgLyojX19QVVJFX18qL19qc3hzKFwiZmllbGRzZXRcIiwge1xuICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChcImxlZ2VuZFwiLCB7XG4gICAgICAgIGNoaWxkcmVuOiB0KFwibGFiZWxzLmFsaWduXCIpXG4gICAgICB9KSwgLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1dHRvbkxpc3RcIixcbiAgICAgICAgY2hpbGRyZW46IFtpc1JUTCA/IC8qI19fUFVSRV9fKi9fanN4cyhfRnJhZ21lbnQsIHtcbiAgICAgICAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcImFsaWduUmlnaHRcIiksIHJlbmRlckFjdGlvbihcImFsaWduSG9yaXpvbnRhbGx5Q2VudGVyZWRcIiksIHJlbmRlckFjdGlvbihcImFsaWduTGVmdFwiKV1cbiAgICAgICAgfSkgOiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJhbGlnbkxlZnRcIiksIHJlbmRlckFjdGlvbihcImFsaWduSG9yaXpvbnRhbGx5Q2VudGVyZWRcIiksIHJlbmRlckFjdGlvbihcImFsaWduUmlnaHRcIildXG4gICAgICAgIH0pLCB0YXJnZXRFbGVtZW50cy5sZW5ndGggPiAyICYmIHJlbmRlckFjdGlvbihcImRpc3RyaWJ1dGVIb3Jpem9udGFsbHlcIiksIC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcImljb25Sb3dcIixcbiAgICAgICAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcImFsaWduVG9wXCIpLCByZW5kZXJBY3Rpb24oXCJhbGlnblZlcnRpY2FsbHlDZW50ZXJlZFwiKSwgcmVuZGVyQWN0aW9uKFwiYWxpZ25Cb3R0b21cIiksIHRhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDIgJiYgcmVuZGVyQWN0aW9uKFwiZGlzdHJpYnV0ZVZlcnRpY2FsbHlcIildXG4gICAgICAgIH0pXVxuICAgICAgfSldXG4gICAgfSksICFpc0VkaXRpbmcgJiYgdGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMCAmJiAvKiNfX1BVUkVfXyovX2pzeHMoXCJmaWVsZHNldFwiLCB7XG4gICAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KFwibGVnZW5kXCIsIHtcbiAgICAgICAgY2hpbGRyZW46IHQoXCJsYWJlbHMuYWN0aW9uc1wiKVxuICAgICAgfSksIC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJidXR0b25MaXN0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbIWRldmljZS5pc01vYmlsZSAmJiByZW5kZXJBY3Rpb24oXCJkdXBsaWNhdGVTZWxlY3Rpb25cIiksICFkZXZpY2UuaXNNb2JpbGUgJiYgcmVuZGVyQWN0aW9uKFwiZGVsZXRlU2VsZWN0ZWRFbGVtZW50c1wiKSwgcmVuZGVyQWN0aW9uKFwiZ3JvdXBcIiksIHJlbmRlckFjdGlvbihcInVuZ3JvdXBcIiksIHNob3dMaW5rSWNvbiAmJiByZW5kZXJBY3Rpb24oXCJoeXBlcmxpbmtcIildXG4gICAgICB9KV1cbiAgICB9KV1cbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IFNoYXBlc1N3aXRjaGVyID0gZnVuY3Rpb24gKF9yZWYyKSB7XG4gIGxldCB7XG4gICAgY2FudmFzLFxuICAgIGFjdGl2ZVRvb2wsXG4gICAgc2V0QXBwU3RhdGUsXG4gICAgb25JbWFnZUFjdGlvbixcbiAgICBhcHBTdGF0ZVxuICB9ID0gX3JlZjI7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogU0hBUEVTLm1hcChmdW5jdGlvbiAoX3JlZjMsIGluZGV4KSB7XG4gICAgICBsZXQge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaWNvbixcbiAgICAgICAga2V5XG4gICAgICB9ID0gX3JlZjM7XG4gICAgICBjb25zdCBsYWJlbCA9IHQoYHRvb2xCYXIuJHt2YWx1ZX1gKTtcbiAgICAgIGNvbnN0IGxldHRlciA9IGtleSAmJiAodHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiA/IGtleSA6IGtleVswXSk7XG4gICAgICBjb25zdCBzaG9ydGN1dCA9IGxldHRlciA/IGAke2NhcGl0YWxpemVTdHJpbmcobGV0dGVyKX0gJHt0KFwiaGVscERpYWxvZy5vclwiKX0gJHtpbmRleCArIDF9YCA6IGAke2luZGV4ICsgMX1gO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRvb2xCdXR0b24sIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlNoYXBlXCIsXG4gICAgICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICAgICAgaWNvbjogaWNvbixcbiAgICAgICAgY2hlY2tlZDogYWN0aXZlVG9vbC50eXBlID09PSB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJlZGl0b3ItY3VycmVudC1zaGFwZVwiLFxuICAgICAgICB0aXRsZTogYCR7Y2FwaXRhbGl6ZVN0cmluZyhsYWJlbCl9IOKAlCAke3Nob3J0Y3V0fWAsXG4gICAgICAgIGtleUJpbmRpbmdMYWJlbDogYCR7aW5kZXggKyAxfWAsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiBjYXBpdGFsaXplU3RyaW5nKGxhYmVsKSxcbiAgICAgICAgXCJhcmlhLWtleXNob3J0Y3V0c1wiOiBzaG9ydGN1dCxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiB2YWx1ZSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIHBvaW50ZXJUeXBlXG4gICAgICAgICAgfSA9IF9yZWY0O1xuXG4gICAgICAgICAgaWYgKCFhcHBTdGF0ZS5wZW5EZXRlY3RlZCAmJiBwb2ludGVyVHlwZSA9PT0gXCJwZW5cIikge1xuICAgICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgICBwZW5EZXRlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgcGVuTW9kZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gKF9yZWY1KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIHBvaW50ZXJUeXBlXG4gICAgICAgICAgfSA9IF9yZWY1O1xuXG4gICAgICAgICAgaWYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRyYWNrRXZlbnQoXCJ0b29sYmFyXCIsIHZhbHVlLCBcInVpXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5leHRBY3RpdmVUb29sID0gdXBkYXRlQWN0aXZlVG9vbChhcHBTdGF0ZSwge1xuICAgICAgICAgICAgdHlwZTogdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgICBhY3RpdmVUb29sOiBuZXh0QWN0aXZlVG9vbCxcbiAgICAgICAgICAgIG11bHRpRWxlbWVudDogbnVsbCxcbiAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudElkczoge31cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzZXRDdXJzb3JGb3JTaGFwZShjYW52YXMsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXBwU3RhdGUpLCB7fSwge1xuICAgICAgICAgICAgYWN0aXZlVG9vbDogbmV4dEFjdGl2ZVRvb2xcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICAgICAgb25JbWFnZUFjdGlvbih7XG4gICAgICAgICAgICAgIHBvaW50ZXJUeXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIHZhbHVlKTtcbiAgICB9KVxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgWm9vbUFjdGlvbnMgPSBmdW5jdGlvbiAoX3JlZjYpIHtcbiAgbGV0IHtcbiAgICByZW5kZXJBY3Rpb24sXG4gICAgem9vbVxuICB9ID0gX3JlZjY7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTdGFjay5Db2wsIHtcbiAgICBnYXA6IDEsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4cyhTdGFjay5Sb3csIHtcbiAgICAgIGdhcDogMSxcbiAgICAgIGFsaWduOiBcImNlbnRlclwiLFxuICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJ6b29tT3V0XCIpLCByZW5kZXJBY3Rpb24oXCJ6b29tSW5cIiksIHJlbmRlckFjdGlvbihcInJlc2V0Wm9vbVwiKV1cbiAgICB9KVxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgVW5kb1JlZG9BY3Rpb25zID0gZnVuY3Rpb24gKF9yZWY3KSB7XG4gIGxldCB7XG4gICAgcmVuZGVyQWN0aW9uLFxuICAgIGNsYXNzTmFtZVxuICB9ID0gX3JlZjc7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogYHVuZG8tcmVkby1idXR0b25zICR7Y2xhc3NOYW1lfWAsXG4gICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJ1bmRvXCIsIHtcbiAgICAgIHNpemU6IFwic21hbGxcIlxuICAgIH0pLCByZW5kZXJBY3Rpb24oXCJyZWRvXCIsIHtcbiAgICAgIHNpemU6IFwic21hbGxcIlxuICAgIH0pXVxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgRXhpdFplbk1vZGVBY3Rpb24gPSBmdW5jdGlvbiAoX3JlZjgpIHtcbiAgbGV0IHtcbiAgICBleGVjdXRlQWN0aW9uLFxuICAgIHNob3dFeGl0WmVuTW9kZUJ0blxuICB9ID0gX3JlZjg7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImJ1dHRvblwiLCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiZGlzYWJsZS16ZW4tbW9kZVwiLCB7XG4gICAgICBcImRpc2FibGUtemVuLW1vZGUtLXZpc2libGVcIjogc2hvd0V4aXRaZW5Nb2RlQnRuXG4gICAgfSksXG4gICAgb25DbGljazogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGV4ZWN1dGVBY3Rpb24oYWN0aW9uVG9nZ2xlWmVuTW9kZSk7XG4gICAgfSxcbiAgICBjaGlsZHJlbjogdChcImJ1dHRvbnMuZXhpdFplbk1vZGVcIilcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IEZpbmFsaXplQWN0aW9uID0gZnVuY3Rpb24gKF9yZWY5KSB7XG4gIGxldCB7XG4gICAgcmVuZGVyQWN0aW9uLFxuICAgIGNsYXNzTmFtZVxuICB9ID0gX3JlZjk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBgZmluYWxpemUtYnV0dG9uICR7Y2xhc3NOYW1lfWAsXG4gICAgY2hpbGRyZW46IHJlbmRlckFjdGlvbihcImZpbmFsaXplXCIsIHtcbiAgICAgIHNpemU6IFwic21hbGxcIlxuICAgIH0pXG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../components/Actions.tsx\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../components/Actions.tsx?");
1930
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"ExitZenModeAction\\\": () => (/* binding */ ExitZenModeAction),\\n/* harmony export */ \\\"FinalizeAction\\\": () => (/* binding */ FinalizeAction),\\n/* harmony export */ \\\"SelectedShapeActions\\\": () => (/* binding */ SelectedShapeActions),\\n/* harmony export */ \\\"ShapesSwitcher\\\": () => (/* binding */ ShapesSwitcher),\\n/* harmony export */ \\\"UndoRedoActions\\\": () => (/* binding */ UndoRedoActions),\\n/* harmony export */ \\\"ZoomActions\\\": () => (/* binding */ ZoomActions)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene */ \\\"../../scene/index.ts\\\");\\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shapes */ \\\"../../shapes.tsx\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Stack */ \\\"../../components/Stack.tsx\\\");\\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ToolButton */ \\\"../../components/ToolButton.tsx\\\");\\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene/comparisons */ \\\"../../scene/comparisons.ts\\\");\\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../analytics */ \\\"../../analytics.ts\\\");\\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! clsx */ \\\"../../../node_modules/clsx/dist/clsx.m.js\\\");\\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../actions */ \\\"../../actions/index.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), 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 = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst SelectedShapeActions = function (_ref) {\\r\\n var _a;\\r\\n let { appState, elements, renderAction } = _ref;\\r\\n const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_1__.getNonDeletedElements)(elements), appState);\\r\\n let isSingleElementBoundContainer = false;\\r\\n if (targetElements.length === 2 && ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[0]) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[1]))) {\\r\\n isSingleElementBoundContainer = true;\\r\\n }\\r\\n const isEditing = Boolean(appState.editingElement);\\r\\n const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_3__.useDevice)();\\r\\n const isRTL = document.documentElement.getAttribute(\\\"dir\\\") === \\\"rtl\\\";\\r\\n const showFillIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(element.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_6__.isTransparent)(element.backgroundColor);\\r\\n });\\r\\n const showChangeBackgroundIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasBackground)(element.type);\\r\\n });\\r\\n const showLinkIcon = targetElements.length === 1 || isSingleElementBoundContainer;\\r\\n let commonSelectedType = ((_a = targetElements[0]) === null || _a === void 0 ? void 0 : _a.type) || null;\\r\\n for (const element of targetElements) {\\r\\n if (element.type !== commonSelectedType) {\\r\\n commonSelectedType = null;\\r\\n break;\\r\\n }\\r\\n }\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"panelColumn\\\",\\r\\n children: [((0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_9__.hasStrokeColor)(appState.activeTool.type) && appState.activeTool.type !== \\\"image\\\" && commonSelectedType !== \\\"image\\\" || targetElements.some(function (element) {\\r\\n return (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_9__.hasStrokeColor)(element.type);\\r\\n })) && renderAction(\\\"changeStrokeColor\\\"), showChangeBackgroundIcons && renderAction(\\\"changeBackgroundColor\\\"), showFillIcons && renderAction(\\\"changeFillStyle\\\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeWidth)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeWidth)(element.type);\\r\\n })) && renderAction(\\\"changeStrokeWidth\\\"), (appState.activeTool.type === \\\"freedraw\\\" || targetElements.some(function (element) {\\r\\n return element.type === \\\"freedraw\\\";\\r\\n })) && renderAction(\\\"changeStrokeShape\\\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeStyle)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasStrokeStyle)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"changeStrokeStyle\\\"), renderAction(\\\"changeSloppiness\\\")]\\r\\n }), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.canChangeSharpness)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.canChangeSharpness)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: renderAction(\\\"changeSharpness\\\")\\r\\n }), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasText)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.hasText)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"changeFontSize\\\"), renderAction(\\\"changeFontFamily\\\"), renderAction(\\\"changeTextAlign\\\")]\\r\\n }), targetElements.some(function (element) {\\r\\n return (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(element);\\r\\n }) && renderAction(\\\"changeVerticalAlign\\\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_4__.canHaveArrowheads)(appState.activeTool.type) || targetElements.some(function (element) {\\r\\n return (0,_scene__WEBPACK_IMPORTED_MODULE_4__.canHaveArrowheads)(element.type);\\r\\n })) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: renderAction(\\\"changeArrowhead\\\")\\r\\n }), renderAction(\\\"changeOpacity\\\"), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"labels.layers\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"buttonList\\\",\\r\\n children: [renderAction(\\\"sendToBack\\\"), renderAction(\\\"sendBackward\\\"), renderAction(\\\"bringToFront\\\"), renderAction(\\\"bringForward\\\")]\\r\\n })]\\r\\n }), targetElements.length > 1 && !isSingleElementBoundContainer && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"labels.align\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"buttonList\\\",\\r\\n children: [isRTL ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"alignRight\\\"), renderAction(\\\"alignHorizontallyCentered\\\"), renderAction(\\\"alignLeft\\\")]\\r\\n }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: [renderAction(\\\"alignLeft\\\"), renderAction(\\\"alignHorizontallyCentered\\\"), renderAction(\\\"alignRight\\\")]\\r\\n }), targetElements.length > 2 && renderAction(\\\"distributeHorizontally\\\"), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"iconRow\\\",\\r\\n children: [renderAction(\\\"alignTop\\\"), renderAction(\\\"alignVerticallyCentered\\\"), renderAction(\\\"alignBottom\\\"), targetElements.length > 2 && renderAction(\\\"distributeVertically\\\")]\\r\\n })]\\r\\n })]\\r\\n }), !isEditing && targetElements.length > 0 && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"labels.actions\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"buttonList\\\",\\r\\n children: [!device.isMobile && renderAction(\\\"duplicateSelection\\\"), !device.isMobile && renderAction(\\\"deleteSelectedElements\\\"), renderAction(\\\"group\\\"), renderAction(\\\"ungroup\\\"), showLinkIcon && renderAction(\\\"hyperlink\\\")]\\r\\n })]\\r\\n })]\\r\\n });\\r\\n};\\r\\nconst ShapesSwitcher = function (_ref2) {\\r\\n let { canvas, activeTool, setAppState, onImageAction, appState } = _ref2;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.Fragment, {\\r\\n children: _shapes__WEBPACK_IMPORTED_MODULE_5__.SHAPES.map(function (_ref3, index) {\\r\\n let { value, icon, key } = _ref3;\\r\\n const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(`toolBar.${value}`);\\r\\n const letter = key && (typeof key === \\\"string\\\" ? key : key[0]);\\r\\n const shortcut = letter ? `${(0,_utils__WEBPACK_IMPORTED_MODULE_6__.capitalizeString)(letter)} ${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"helpDialog.or\\\")} ${index + 1}` : `${index + 1}`;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_8__.ToolButton, {\\r\\n className: \\\"Shape\\\",\\r\\n type: \\\"radio\\\",\\r\\n icon: icon,\\r\\n checked: activeTool.type === value,\\r\\n name: \\\"editor-current-shape\\\",\\r\\n title: `${(0,_utils__WEBPACK_IMPORTED_MODULE_6__.capitalizeString)(label)} — ${shortcut}`,\\r\\n keyBindingLabel: `${index + 1}`,\\r\\n \\\"aria-label\\\": (0,_utils__WEBPACK_IMPORTED_MODULE_6__.capitalizeString)(label),\\r\\n \\\"aria-keyshortcuts\\\": shortcut,\\r\\n \\\"data-testid\\\": value,\\r\\n onPointerDown: function (_ref4) {\\r\\n let { pointerType } = _ref4;\\r\\n if (!appState.penDetected && pointerType === \\\"pen\\\") {\\r\\n setAppState({\\r\\n penDetected: true,\\r\\n penMode: true\\r\\n });\\r\\n }\\r\\n },\\r\\n onChange: function (_ref5) {\\r\\n let { pointerType } = _ref5;\\r\\n if (appState.activeTool.type !== value) {\\r\\n (0,_analytics__WEBPACK_IMPORTED_MODULE_10__.trackEvent)(\\\"toolbar\\\", value, \\\"ui\\\");\\r\\n }\\r\\n const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.updateActiveTool)(appState, {\\r\\n type: value\\r\\n });\\r\\n setAppState({\\r\\n activeTool: nextActiveTool,\\r\\n multiElement: null,\\r\\n selectedElementIds: {}\\r\\n });\\r\\n (0,_utils__WEBPACK_IMPORTED_MODULE_6__.setCursorForShape)(canvas, _objectSpread(_objectSpread({}, appState), {}, {\\r\\n activeTool: nextActiveTool\\r\\n }));\\r\\n if (value === \\\"image\\\") {\\r\\n onImageAction({\\r\\n pointerType\\r\\n });\\r\\n }\\r\\n }\\r\\n }, value);\\r\\n })\\r\\n });\\r\\n};\\r\\nconst ZoomActions = function (_ref6) {\\r\\n let { renderAction, zoom, trayMode = false //zsviczian\\r\\n } = _ref6;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].Col, {\\r\\n gap: 1,\\r\\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"])({\\r\\n \\\"tray-zoom\\\": trayMode\\r\\n }),\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].Row, {\\r\\n gap: 1,\\r\\n align: \\\"center\\\",\\r\\n children: [renderAction(\\\"zoomOut\\\"), renderAction(\\\"zoomIn\\\"), renderAction(\\\"resetZoom\\\")]\\r\\n })\\r\\n });\\r\\n};\\r\\nconst UndoRedoActions = function (_ref7) {\\r\\n let { renderAction, className } = _ref7;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(\\\"div\\\", {\\r\\n className: `undo-redo-buttons ${className}`,\\r\\n children: [renderAction(\\\"undo\\\", {\\r\\n size: \\\"small\\\"\\r\\n }), renderAction(\\\"redo\\\", {\\r\\n size: \\\"small\\\"\\r\\n })]\\r\\n });\\r\\n};\\r\\nconst ExitZenModeAction = function (_ref8) {\\r\\n let { executeAction, showExitZenModeBtn } = _ref8;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"button\\\", {\\r\\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"])(\\\"disable-zen-mode\\\", {\\r\\n \\\"disable-zen-mode--visible\\\": showExitZenModeBtn\\r\\n }),\\r\\n onClick: function () {\\r\\n return executeAction(_actions__WEBPACK_IMPORTED_MODULE_13__.actionToggleZenMode);\\r\\n },\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\\\"buttons.exitZenMode\\\")\\r\\n });\\r\\n};\\r\\nconst FinalizeAction = function (_ref9) {\\r\\n let { renderAction, className } = _ref9;\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(\\\"div\\\", {\\r\\n className: `finalize-button ${className}`,\\r\\n children: renderAction(\\\"finalize\\\", {\\r\\n size: \\\"small\\\"\\r\\n })\\r\\n });\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LGFBQWEsQ0FBQywwREFBbUIsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxRQUFRLEVBQUUsd0NBQUMsQ0FBQyxxQkFBcUIsQ0FBQztLQUNuQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFDSyxNQUFNLGNBQWMsR0FBRyxVQUFVLEtBQUs7SUFDM0MsSUFBSSxFQUNGLFlBQVksRUFDWixTQUFTLEVBQ1YsR0FBRyxLQUFLLENBQUM7SUFDVixPQUFPLGFBQWEsd0RBQUksQ0FBQyxLQUFLLEVBQUU7UUFDOUIsU0FBUyxFQUFFLG1CQUFtQixTQUFTLEVBQUU7UUFDekMsUUFBUSxFQUFFLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDakMsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQWN0aW9ucy50c3g/MTcyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGdldE5vbkRlbGV0ZWRFbGVtZW50cyB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IHVzZURldmljZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL0FwcFwiO1xuaW1wb3J0IHsgY2FuQ2hhbmdlU2hhcnBuZXNzLCBjYW5IYXZlQXJyb3doZWFkcywgZ2V0VGFyZ2V0RWxlbWVudHMsIGhhc0JhY2tncm91bmQsIGhhc1N0cm9rZVN0eWxlLCBoYXNTdHJva2VXaWR0aCwgaGFzVGV4dCB9IGZyb20gXCIuLi9zY2VuZVwiO1xuaW1wb3J0IHsgU0hBUEVTIH0gZnJvbSBcIi4uL3NoYXBlc1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVN0cmluZywgaXNUcmFuc3BhcmVudCwgdXBkYXRlQWN0aXZlVG9vbCwgc2V0Q3Vyc29yRm9yU2hhcGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi9TdGFja1wiO1xuaW1wb3J0IHsgVG9vbEJ1dHRvbiB9IGZyb20gXCIuL1Rvb2xCdXR0b25cIjtcbmltcG9ydCB7IGhhc1N0cm9rZUNvbG9yIH0gZnJvbSBcIi4uL3NjZW5lL2NvbXBhcmlzb25zXCI7XG5pbXBvcnQgeyB0cmFja0V2ZW50IH0gZnJvbSBcIi4uL2FuYWx5dGljc1wiO1xuaW1wb3J0IHsgaGFzQm91bmRUZXh0RWxlbWVudCwgaXNCb3VuZFRvQ29udGFpbmVyIH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZUNoZWNrc1wiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGFjdGlvblRvZ2dsZVplbk1vZGUgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IFNlbGVjdGVkU2hhcGVBY3Rpb25zID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBhcHBTdGF0ZSxcbiAgICBlbGVtZW50cyxcbiAgICByZW5kZXJBY3Rpb25cbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gZ2V0VGFyZ2V0RWxlbWVudHMoZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKGVsZW1lbnRzKSwgYXBwU3RhdGUpO1xuICBsZXQgaXNTaW5nbGVFbGVtZW50Qm91bmRDb250YWluZXIgPSBmYWxzZTtcblxuICBpZiAodGFyZ2V0RWxlbWVudHMubGVuZ3RoID09PSAyICYmIChoYXNCb3VuZFRleHRFbGVtZW50KHRhcmdldEVsZW1lbnRzWzBdKSB8fCBoYXNCb3VuZFRleHRFbGVtZW50KHRhcmdldEVsZW1lbnRzWzFdKSkpIHtcbiAgICBpc1NpbmdsZUVsZW1lbnRCb3VuZENvbnRhaW5lciA9IHRydWU7XG4gIH1cblxuICBjb25zdCBpc0VkaXRpbmcgPSBCb29sZWFuKGFwcFN0YXRlLmVkaXRpbmdFbGVtZW50KTtcbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIGNvbnN0IGlzUlRMID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZShcImRpclwiKSA9PT0gXCJydGxcIjtcbiAgY29uc3Qgc2hvd0ZpbGxJY29ucyA9IGhhc0JhY2tncm91bmQoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSB8fCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGhhc0JhY2tncm91bmQoZWxlbWVudC50eXBlKSAmJiAhaXNUcmFuc3BhcmVudChlbGVtZW50LmJhY2tncm91bmRDb2xvcik7XG4gIH0pO1xuICBjb25zdCBzaG93Q2hhbmdlQmFja2dyb3VuZEljb25zID0gaGFzQmFja2dyb3VuZChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gaGFzQmFja2dyb3VuZChlbGVtZW50LnR5cGUpO1xuICB9KTtcbiAgY29uc3Qgc2hvd0xpbmtJY29uID0gdGFyZ2V0RWxlbWVudHMubGVuZ3RoID09PSAxIHx8IGlzU2luZ2xlRWxlbWVudEJvdW5kQ29udGFpbmVyO1xuICBsZXQgY29tbW9uU2VsZWN0ZWRUeXBlID0gdGFyZ2V0RWxlbWVudHNbMF0/LnR5cGUgfHwgbnVsbDtcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGFyZ2V0RWxlbWVudHMpIHtcbiAgICBpZiAoZWxlbWVudC50eXBlICE9PSBjb21tb25TZWxlY3RlZFR5cGUpIHtcbiAgICAgIGNvbW1vblNlbGVjdGVkVHlwZSA9IG51bGw7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICBjbGFzc05hbWU6IFwicGFuZWxDb2x1bW5cIixcbiAgICBjaGlsZHJlbjogWyhoYXNTdHJva2VDb2xvcihhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpICYmIGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJpbWFnZVwiICYmIGNvbW1vblNlbGVjdGVkVHlwZSAhPT0gXCJpbWFnZVwiIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBoYXNTdHJva2VDb2xvcihlbGVtZW50LnR5cGUpO1xuICAgIH0pKSAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VTdHJva2VDb2xvclwiKSwgc2hvd0NoYW5nZUJhY2tncm91bmRJY29ucyAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VCYWNrZ3JvdW5kQ29sb3JcIiksIHNob3dGaWxsSWNvbnMgJiYgcmVuZGVyQWN0aW9uKFwiY2hhbmdlRmlsbFN0eWxlXCIpLCAoaGFzU3Ryb2tlV2lkdGgoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSB8fCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gaGFzU3Ryb2tlV2lkdGgoZWxlbWVudC50eXBlKTtcbiAgICB9KSkgJiYgcmVuZGVyQWN0aW9uKFwiY2hhbmdlU3Ryb2tlV2lkdGhcIiksIChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUgPT09IFwiZnJlZWRyYXdcIiB8fCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC50eXBlID09PSBcImZyZWVkcmF3XCI7XG4gICAgfSkpICYmIHJlbmRlckFjdGlvbihcImNoYW5nZVN0cm9rZVNoYXBlXCIpLCAoaGFzU3Ryb2tlU3R5bGUoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSB8fCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gaGFzU3Ryb2tlU3R5bGUoZWxlbWVudC50eXBlKTtcbiAgICB9KSkgJiYgLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJjaGFuZ2VTdHJva2VTdHlsZVwiKSwgcmVuZGVyQWN0aW9uKFwiY2hhbmdlU2xvcHBpbmVzc1wiKV1cbiAgICB9KSwgKGNhbkNoYW5nZVNoYXJwbmVzcyhhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpIHx8IHRhcmdldEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBjYW5DaGFuZ2VTaGFycG5lc3MoZWxlbWVudC50eXBlKTtcbiAgICB9KSkgJiYgLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogcmVuZGVyQWN0aW9uKFwiY2hhbmdlU2hhcnBuZXNzXCIpXG4gICAgfSksIChoYXNUZXh0KGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSkgfHwgdGFyZ2V0RWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGhhc1RleHQoZWxlbWVudC50eXBlKTtcbiAgICB9KSkgJiYgLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJjaGFuZ2VGb250U2l6ZVwiKSwgcmVuZGVyQWN0aW9uKFwiY2hhbmdlRm9udEZhbWlseVwiKSwgcmVuZGVyQWN0aW9uKFwiY2hhbmdlVGV4dEFsaWduXCIpXVxuICAgIH0pLCB0YXJnZXRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gaGFzQm91bmRUZXh0RWxlbWVudChlbGVtZW50KSB8fCBpc0JvdW5kVG9Db250YWluZXIoZWxlbWVudCk7XG4gICAgfSkgJiYgcmVuZGVyQWN0aW9uKFwiY2hhbmdlVmVydGljYWxBbGlnblwiKSwgKGNhbkhhdmVBcnJvd2hlYWRzKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSkgfHwgdGFyZ2V0RWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGNhbkhhdmVBcnJvd2hlYWRzKGVsZW1lbnQudHlwZSk7XG4gICAgfSkpICYmIC8qI19fUFVSRV9fKi9fanN4KF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IHJlbmRlckFjdGlvbihcImNoYW5nZUFycm93aGVhZFwiKVxuICAgIH0pLCByZW5kZXJBY3Rpb24oXCJjaGFuZ2VPcGFjaXR5XCIpLCAvKiNfX1BVUkVfXyovX2pzeHMoXCJmaWVsZHNldFwiLCB7XG4gICAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KFwibGVnZW5kXCIsIHtcbiAgICAgICAgY2hpbGRyZW46IHQoXCJsYWJlbHMubGF5ZXJzXCIpXG4gICAgICB9KSwgLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1dHRvbkxpc3RcIixcbiAgICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJzZW5kVG9CYWNrXCIpLCByZW5kZXJBY3Rpb24oXCJzZW5kQmFja3dhcmRcIiksIHJlbmRlckFjdGlvbihcImJyaW5nVG9Gcm9udFwiKSwgcmVuZGVyQWN0aW9uKFwiYnJpbmdGb3J3YXJkXCIpXVxuICAgICAgfSldXG4gICAgfSksIHRhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDEgJiYgIWlzU2luZ2xlRWxlbWVudEJvdW5kQ29udGFpbmVyICYmIC8qI19fUFVSRV9fKi9fanN4cyhcImZpZWxkc2V0XCIsIHtcbiAgICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goXCJsZWdlbmRcIiwge1xuICAgICAgICBjaGlsZHJlbjogdChcImxhYmVscy5hbGlnblwiKVxuICAgICAgfSksIC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJidXR0b25MaXN0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbaXNSVEwgPyAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJhbGlnblJpZ2h0XCIpLCByZW5kZXJBY3Rpb24oXCJhbGlnbkhvcml6b250YWxseUNlbnRlcmVkXCIpLCByZW5kZXJBY3Rpb24oXCJhbGlnbkxlZnRcIildXG4gICAgICAgIH0pIDogLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgICAgIGNoaWxkcmVuOiBbcmVuZGVyQWN0aW9uKFwiYWxpZ25MZWZ0XCIpLCByZW5kZXJBY3Rpb24oXCJhbGlnbkhvcml6b250YWxseUNlbnRlcmVkXCIpLCByZW5kZXJBY3Rpb24oXCJhbGlnblJpZ2h0XCIpXVxuICAgICAgICB9KSwgdGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMiAmJiByZW5kZXJBY3Rpb24oXCJkaXN0cmlidXRlSG9yaXpvbnRhbGx5XCIpLCAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJpY29uUm93XCIsXG4gICAgICAgICAgY2hpbGRyZW46IFtyZW5kZXJBY3Rpb24oXCJhbGlnblRvcFwiKSwgcmVuZGVyQWN0aW9uKFwiYWxpZ25WZXJ0aWNhbGx5Q2VudGVyZWRcIiksIHJlbmRlckFjdGlvbihcImFsaWduQm90dG9tXCIpLCB0YXJnZXRFbGVtZW50cy5sZW5ndGggPiAyICYmIHJlbmRlckFjdGlvbihcImRpc3RyaWJ1dGVWZXJ0aWNhbGx5XCIpXVxuICAgICAgICB9KV1cbiAgICAgIH0pXVxuICAgIH0pLCAhaXNFZGl0aW5nICYmIHRhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgLyojX19QVVJFX18qL19qc3hzKFwiZmllbGRzZXRcIiwge1xuICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChcImxlZ2VuZFwiLCB7XG4gICAgICAgIGNoaWxkcmVuOiB0KFwibGFiZWxzLmFjdGlvbnNcIilcbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiYnV0dG9uTGlzdFwiLFxuICAgICAgICBjaGlsZHJlbjogWyFkZXZpY2UuaXNNb2JpbGUgJiYgcmVuZGVyQWN0aW9uKFwiZHVwbGljYXRlU2VsZWN0aW9uXCIpLCAhZGV2aWNlLmlzTW9iaWxlICYmIHJlbmRlckFjdGlvbihcImRlbGV0ZVNlbGVjdGVkRWxlbWVudHNcIiksIHJlbmRlckFjdGlvbihcImdyb3VwXCIpLCByZW5kZXJBY3Rpb24oXCJ1bmdyb3VwXCIpLCBzaG93TGlua0ljb24gJiYgcmVuZGVyQWN0aW9uKFwiaHlwZXJsaW5rXCIpXVxuICAgICAgfSldXG4gICAgfSldXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBTaGFwZXNTd2l0Y2hlciA9IGZ1bmN0aW9uIChfcmVmMikge1xuICBsZXQge1xuICAgIGNhbnZhcyxcbiAgICBhY3RpdmVUb29sLFxuICAgIHNldEFwcFN0YXRlLFxuICAgIG9uSW1hZ2VBY3Rpb24sXG4gICAgYXBwU3RhdGVcbiAgfSA9IF9yZWYyO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IFNIQVBFUy5tYXAoZnVuY3Rpb24gKF9yZWYzLCBpbmRleCkge1xuICAgICAgbGV0IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGljb24sXG4gICAgICAgIGtleVxuICAgICAgfSA9IF9yZWYzO1xuICAgICAgY29uc3QgbGFiZWwgPSB0KGB0b29sQmFyLiR7dmFsdWV9YCk7XG4gICAgICBjb25zdCBsZXR0ZXIgPSBrZXkgJiYgKHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgPyBrZXkgOiBrZXlbMF0pO1xuICAgICAgY29uc3Qgc2hvcnRjdXQgPSBsZXR0ZXIgPyBgJHtjYXBpdGFsaXplU3RyaW5nKGxldHRlcil9ICR7dChcImhlbHBEaWFsb2cub3JcIil9ICR7aW5kZXggKyAxfWAgOiBgJHtpbmRleCArIDF9YDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUb29sQnV0dG9uLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJTaGFwZVwiLFxuICAgICAgICB0eXBlOiBcInJhZGlvXCIsXG4gICAgICAgIGljb246IGljb24sXG4gICAgICAgIGNoZWNrZWQ6IGFjdGl2ZVRvb2wudHlwZSA9PT0gdmFsdWUsXG4gICAgICAgIG5hbWU6IFwiZWRpdG9yLWN1cnJlbnQtc2hhcGVcIixcbiAgICAgICAgdGl0bGU6IGAke2NhcGl0YWxpemVTdHJpbmcobGFiZWwpfSDigJQgJHtzaG9ydGN1dH1gLFxuICAgICAgICBrZXlCaW5kaW5nTGFiZWw6IGAke2luZGV4ICsgMX1gLFxuICAgICAgICBcImFyaWEtbGFiZWxcIjogY2FwaXRhbGl6ZVN0cmluZyhsYWJlbCksXG4gICAgICAgIFwiYXJpYS1rZXlzaG9ydGN1dHNcIjogc2hvcnRjdXQsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogdmFsdWUsXG4gICAgICAgIG9uUG9pbnRlckRvd246IGZ1bmN0aW9uIChfcmVmNCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgICAgIH0gPSBfcmVmNDtcblxuICAgICAgICAgIGlmICghYXBwU3RhdGUucGVuRGV0ZWN0ZWQgJiYgcG9pbnRlclR5cGUgPT09IFwicGVuXCIpIHtcbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgcGVuRGV0ZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHBlbk1vZGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIChfcmVmNSkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgICAgIH0gPSBfcmVmNTtcblxuICAgICAgICAgIGlmIChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0cmFja0V2ZW50KFwidG9vbGJhclwiLCB2YWx1ZSwgXCJ1aVwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBuZXh0QWN0aXZlVG9vbCA9IHVwZGF0ZUFjdGl2ZVRvb2woYXBwU3RhdGUsIHtcbiAgICAgICAgICAgIHR5cGU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgYWN0aXZlVG9vbDogbmV4dEFjdGl2ZVRvb2wsXG4gICAgICAgICAgICBtdWx0aUVsZW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRJZHM6IHt9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2V0Q3Vyc29yRm9yU2hhcGUoY2FudmFzLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGFwcFN0YXRlKSwge30sIHtcbiAgICAgICAgICAgIGFjdGl2ZVRvb2w6IG5leHRBY3RpdmVUb29sXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgaWYgKHZhbHVlID09PSBcImltYWdlXCIpIHtcbiAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb24oe1xuICAgICAgICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCB2YWx1ZSk7XG4gICAgfSlcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IFpvb21BY3Rpb25zID0gZnVuY3Rpb24gKF9yZWY2KSB7XG4gIGxldCB7XG4gICAgcmVuZGVyQWN0aW9uLFxuICAgIHpvb20sXG4gICAgdHJheU1vZGUgPSBmYWxzZSAvL3pzdmljemlhblxuXG4gIH0gPSBfcmVmNjtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFN0YWNrLkNvbCwge1xuICAgIGdhcDogMSxcbiAgICBjbGFzc05hbWU6IGNsc3goe1xuICAgICAgXCJ0cmF5LXpvb21cIjogdHJheU1vZGVcbiAgICB9KSxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3hzKFN0YWNrLlJvdywge1xuICAgICAgZ2FwOiAxLFxuICAgICAgYWxpZ246IFwiY2VudGVyXCIsXG4gICAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcInpvb21PdXRcIiksIHJlbmRlckFjdGlvbihcInpvb21JblwiKSwgcmVuZGVyQWN0aW9uKFwicmVzZXRab29tXCIpXVxuICAgIH0pXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBVbmRvUmVkb0FjdGlvbnMgPSBmdW5jdGlvbiAoX3JlZjcpIHtcbiAgbGV0IHtcbiAgICByZW5kZXJBY3Rpb24sXG4gICAgY2xhc3NOYW1lXG4gIH0gPSBfcmVmNztcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBgdW5kby1yZWRvLWJ1dHRvbnMgJHtjbGFzc05hbWV9YCxcbiAgICBjaGlsZHJlbjogW3JlbmRlckFjdGlvbihcInVuZG9cIiwge1xuICAgICAgc2l6ZTogXCJzbWFsbFwiXG4gICAgfSksIHJlbmRlckFjdGlvbihcInJlZG9cIiwge1xuICAgICAgc2l6ZTogXCJzbWFsbFwiXG4gICAgfSldXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBFeGl0WmVuTW9kZUFjdGlvbiA9IGZ1bmN0aW9uIChfcmVmOCkge1xuICBsZXQge1xuICAgIGV4ZWN1dGVBY3Rpb24sXG4gICAgc2hvd0V4aXRaZW5Nb2RlQnRuXG4gIH0gPSBfcmVmODtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwiYnV0dG9uXCIsIHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJkaXNhYmxlLXplbi1tb2RlXCIsIHtcbiAgICAgIFwiZGlzYWJsZS16ZW4tbW9kZS0tdmlzaWJsZVwiOiBzaG93RXhpdFplbk1vZGVCdG5cbiAgICB9KSxcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZXhlY3V0ZUFjdGlvbihhY3Rpb25Ub2dnbGVaZW5Nb2RlKTtcbiAgICB9LFxuICAgIGNoaWxkcmVuOiB0KFwiYnV0dG9ucy5leGl0WmVuTW9kZVwiKVxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgRmluYWxpemVBY3Rpb24gPSBmdW5jdGlvbiAoX3JlZjkpIHtcbiAgbGV0IHtcbiAgICByZW5kZXJBY3Rpb24sXG4gICAgY2xhc3NOYW1lXG4gIH0gPSBfcmVmOTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICBjbGFzc05hbWU6IGBmaW5hbGl6ZS1idXR0b24gJHtjbGFzc05hbWV9YCxcbiAgICBjaGlsZHJlbjogcmVuZGVyQWN0aW9uKFwiZmluYWxpemVcIiwge1xuICAgICAgc2l6ZTogXCJzbWFsbFwiXG4gICAgfSlcbiAgfSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../components/Actions.tsx\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../components/Actions.tsx?");
1931
1931
 
1932
1932
  /***/ }),
1933
1933
 
@@ -2290,7 +2290,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2290
2290
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2291
2291
 
2292
2292
  "use strict";
2293
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"MobileMenu\\\": () => (/* binding */ MobileMenu)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Stack */ \\\"../../components/Stack.tsx\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FixedSideContainer */ \\\"../../components/FixedSideContainer.tsx\\\");\\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Island */ \\\"../../components/Island.tsx\\\");\\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HintViewer */ \\\"../../components/HintViewer.tsx\\\");\\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ \\\"../../scene/index.ts\\\");\\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Actions */ \\\"../../components/Actions.tsx\\\");\\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Section */ \\\"../../components/Section.tsx\\\");\\n/* harmony import */ var _CollabButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./CollabButton */ \\\"../../components/CollabButton.tsx\\\");\\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/scrollbars */ \\\"../../scene/scrollbars.ts\\\");\\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LockButton */ \\\"../../components/LockButton.tsx\\\");\\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./UserList */ \\\"../../components/UserList.tsx\\\");\\n/* harmony import */ var _BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./BackgroundPickerAndDarkModeToggle */ \\\"../../components/BackgroundPickerAndDarkModeToggle.tsx\\\");\\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LibraryButton */ \\\"../../components/LibraryButton.tsx\\\");\\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PenModeButton */ \\\"../../components/PenModeButton.tsx\\\");\\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Stats */ \\\"../../components/Stats.tsx\\\");\\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../actions */ \\\"../../actions/index.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), 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 = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n //zsviczian\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst MobileMenu = function (_ref) {\\r\\n let { appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI, renderCustomStats } = _ref;\\r\\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_17__.useDevice)(); //zsviczian\\r\\n const renderToolbar = function () {\\r\\n return (\\r\\n /*#__PURE__*/\\r\\n //zsviczian (added <> for library docking)\\r\\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_4__.FixedSideContainer, {\\r\\n side: \\\"top\\\",\\r\\n className: \\\"App-top-bar\\\",\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_9__.Section, {\\r\\n heading: \\\"shapes\\\",\\r\\n children: function (heading) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Col, {\\r\\n gap: 4,\\r\\n align: \\\"center\\\",\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Row, {\\r\\n gap: 1,\\r\\n className: \\\"App-toolbar-container\\\",\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_5__.Island, {\\r\\n padding: 1,\\r\\n className: \\\"App-toolbar\\\",\\r\\n children: [heading, /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Row, {\\r\\n gap: 1,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.ShapesSwitcher, {\\r\\n appState: appState,\\r\\n canvas: canvas,\\r\\n activeTool: appState.activeTool,\\r\\n setAppState: setAppState,\\r\\n onImageAction: function (_ref2) {\\r\\n let { pointerType } = _ref2;\\r\\n onImageAction({\\r\\n insertOnCanvasDirectly: pointerType !== \\\"mouse\\\"\\r\\n });\\r\\n }\\r\\n })\\r\\n })]\\r\\n }), renderTopRightUI && renderTopRightUI(true, appState), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_12__.LockButton, {\\r\\n checked: appState.activeTool.locked,\\r\\n onChange: onLockToggle,\\r\\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"toolBar.lock\\\"),\\r\\n isMobile: true\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_15__.LibraryButton, {\\r\\n appState: appState,\\r\\n setAppState: setAppState,\\r\\n isMobile: true\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_16__.PenModeButton, {\\r\\n checked: appState.penMode,\\r\\n onChange: onPenModeToggle,\\r\\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"toolBar.penMode\\\"),\\r\\n isMobile: true,\\r\\n penDetected: appState.penDetected\\r\\n })]\\r\\n }), device.isMobile && libraryMenu //zsviczian\\r\\n ]\\r\\n });\\r\\n }\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_6__.HintViewer, {\\r\\n appState: appState,\\r\\n elements: elements,\\r\\n isMobile: true\\r\\n })]\\r\\n }), !device.isMobile && //zsviczian\\r\\n appState.isLibraryOpen && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"layer-ui__sidebar\\\",\\r\\n children: libraryMenu\\r\\n })]\\r\\n }));\\r\\n };\\r\\n const renderAppToolbar = function () {\\r\\n // Render eraser conditionally in mobile\\r\\n const showEraser = !appState.viewModeEnabled && !appState.editingElement && (0,_scene__WEBPACK_IMPORTED_MODULE_7__.getSelectedElements)(elements, appState).length === 0;\\r\\n if (appState.viewModeEnabled) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"App-toolbar-content\\\",\\r\\n children: actionManager.renderAction(\\\"toggleCanvasMenu\\\")\\r\\n });\\r\\n }\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"App-toolbar-content\\\",\\r\\n children: [actionManager.renderAction(\\\"toggleCanvasMenu\\\"), actionManager.renderAction(\\\"toggleEditMenu\\\"), actionManager.renderAction(\\\"undo\\\"), actionManager.renderAction(\\\"redo\\\"), showEraser && actionManager.renderAction(\\\"eraser\\\"), actionManager.renderAction(appState.multiElement ? \\\"finalize\\\" : \\\"duplicateSelection\\\"), actionManager.renderAction(\\\"deleteSelectedElements\\\")]\\r\\n });\\r\\n };\\r\\n const renderCanvasActions = function () {\\r\\n if (appState.viewModeEnabled) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [renderJSONExportDialog(), renderImageExportDialog()]\\r\\n });\\r\\n }\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [actionManager.renderAction(\\\"clearCanvas\\\"), actionManager.renderAction(\\\"loadScene\\\"), renderJSONExportDialog(), renderImageExportDialog(), onCollabButtonClick && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_CollabButton__WEBPACK_IMPORTED_MODULE_10__[\\\"default\\\"], {\\r\\n isCollaborating: isCollaborating,\\r\\n collaboratorCount: appState.collaborators.size,\\r\\n onClick: onCollabButtonClick\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_14__.BackgroundPickerAndDarkModeToggle, {\\r\\n actionManager: actionManager,\\r\\n appState: appState,\\r\\n setAppState: setAppState,\\r\\n showThemeBtn: showThemeBtn\\r\\n })]\\r\\n });\\r\\n };\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [!appState.viewModeEnabled && renderToolbar(), !appState.openMenu && appState.showStats && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_18__.Stats, {\\r\\n appState: appState,\\r\\n setAppState: setAppState,\\r\\n elements: elements,\\r\\n onClose: function () {\\r\\n actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_19__.actionToggleStats);\\r\\n },\\r\\n renderCustomStats: renderCustomStats\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"App-bottom-bar\\\",\\r\\n style: {\\r\\n marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\\r\\n marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\\r\\n marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2\\r\\n },\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_5__.Island, {\\r\\n padding: 0,\\r\\n children: [appState.openMenu === \\\"canvas\\\" ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_9__.Section, {\\r\\n className: \\\"App-mobile-menu\\\",\\r\\n heading: \\\"canvasActions\\\",\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"panelColumn\\\",\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Col, {\\r\\n gap: 4,\\r\\n children: [renderCanvasActions(), renderCustomFooter === null || renderCustomFooter === void 0 ? void 0 : renderCustomFooter(true, appState), appState.collaborators.size > 0 && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"labels.collaborators\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_13__.UserList, {\\r\\n mobile: true,\\r\\n collaborators: appState.collaborators,\\r\\n actionManager: actionManager\\r\\n })]\\r\\n })]\\r\\n })\\r\\n })\\r\\n }) : appState.openMenu === \\\"shape\\\" && !appState.viewModeEnabled && (0,_element__WEBPACK_IMPORTED_MODULE_3__.showSelectedShapeActions)(appState, elements) ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_9__.Section, {\\r\\n className: \\\"App-mobile-menu\\\",\\r\\n heading: \\\"selectedShapeActions\\\",\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.SelectedShapeActions, {\\r\\n appState: appState,\\r\\n elements: elements,\\r\\n renderAction: actionManager.renderAction\\r\\n })\\r\\n }) : null, /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"footer\\\", {\\r\\n className: \\\"App-toolbar\\\",\\r\\n children: [renderAppToolbar(), appState.scrolledOutside && !appState.openMenu && !appState.isLibraryOpen && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"button\\\", {\\r\\n className: \\\"scroll-back-to-content\\\",\\r\\n onClick: function () {\\r\\n setAppState(_objectSpread({}, (0,_scene__WEBPACK_IMPORTED_MODULE_7__.calculateScrollCenter)(elements, appState, canvas)));\\r\\n },\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"buttons.scrollBackToContent\\\")\\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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QUFRLENBQUMsUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksa0VBQXdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLHdEQUFJLENBQUMsNkNBQU8sRUFBRTs0QkFDM0ksU0FBUyxFQUFFLGlCQUFpQjs0QkFDNUIsT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsUUFBUSxFQUFFLGFBQWEsd0RBQUksQ0FBQywwREFBb0IsRUFBRTtnQ0FDaEQsUUFBUSxFQUFFLFFBQVE7Z0NBQ2xCLFFBQVEsRUFBRSxRQUFRO2dDQUNsQixZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7NkJBQ3pDLENBQUM7eUJBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsYUFBYSx5REFBSyxDQUFDLFFBQVEsRUFBRTs0QkFDdEMsU0FBUyxFQUFFLGFBQWE7NEJBQ3hCLFFBQVEsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLGFBQWEsd0RBQUksQ0FBQyxRQUFRLEVBQUU7b0NBQ3RJLFNBQVMsRUFBRSx3QkFBd0I7b0NBQ25DLE9BQU8sRUFBRTt3Q0FDUCxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSw2REFBcUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FDcEYsQ0FBQztvQ0FDRCxRQUFRLEVBQUUsd0NBQUMsQ0FBQyw2QkFBNkIsQ0FBQztpQ0FDM0MsQ0FBQyxDQUFDO3lCQUNKLENBQUMsQ0FBQztpQkFDSixDQUFDO2FBQ0gsQ0FBQyxDQUFDO0tBQ0osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTW9iaWxlTWVudS50c3g/MTE4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgRml4ZWRTaWRlQ29udGFpbmVyIH0gZnJvbSBcIi4vRml4ZWRTaWRlQ29udGFpbmVyXCI7XG5pbXBvcnQgeyBJc2xhbmQgfSBmcm9tIFwiLi9Jc2xhbmRcIjtcbmltcG9ydCB7IEhpbnRWaWV3ZXIgfSBmcm9tIFwiLi9IaW50Vmlld2VyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVTY3JvbGxDZW50ZXIsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmltcG9ydCB7IFNlbGVjdGVkU2hhcGVBY3Rpb25zLCBTaGFwZXNTd2l0Y2hlciB9IGZyb20gXCIuL0FjdGlvbnNcIjtcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tIFwiLi9TZWN0aW9uXCI7XG5pbXBvcnQgQ29sbGFiQnV0dG9uIGZyb20gXCIuL0NvbGxhYkJ1dHRvblwiO1xuaW1wb3J0IHsgU0NST0xMQkFSX1dJRFRILCBTQ1JPTExCQVJfTUFSR0lOIH0gZnJvbSBcIi4uL3NjZW5lL3Njcm9sbGJhcnNcIjtcbmltcG9ydCB7IExvY2tCdXR0b24gfSBmcm9tIFwiLi9Mb2NrQnV0dG9uXCI7XG5pbXBvcnQgeyBVc2VyTGlzdCB9IGZyb20gXCIuL1VzZXJMaXN0XCI7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kUGlja2VyQW5kRGFya01vZGVUb2dnbGUgfSBmcm9tIFwiLi9CYWNrZ3JvdW5kUGlja2VyQW5kRGFya01vZGVUb2dnbGVcIjtcbmltcG9ydCB7IExpYnJhcnlCdXR0b24gfSBmcm9tIFwiLi9MaWJyYXJ5QnV0dG9uXCI7XG5pbXBvcnQgeyBQZW5Nb2RlQnV0dG9uIH0gZnJvbSBcIi4vUGVuTW9kZUJ1dHRvblwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4vQXBwXCI7IC8venN2aWN6aWFuXG5cbmltcG9ydCB7IFN0YXRzIH0gZnJvbSBcIi4vU3RhdHNcIjtcbmltcG9ydCB7IGFjdGlvblRvZ2dsZVN0YXRzIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBjb25zdCBNb2JpbGVNZW51ID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBhcHBTdGF0ZSxcbiAgICBlbGVtZW50cyxcbiAgICBsaWJyYXJ5TWVudSxcbiAgICBhY3Rpb25NYW5hZ2VyLFxuICAgIHJlbmRlckpTT05FeHBvcnREaWFsb2csXG4gICAgcmVuZGVySW1hZ2VFeHBvcnREaWFsb2csXG4gICAgc2V0QXBwU3RhdGUsXG4gICAgb25Db2xsYWJCdXR0b25DbGljayxcbiAgICBvbkxvY2tUb2dnbGUsXG4gICAgb25QZW5Nb2RlVG9nZ2xlLFxuICAgIGNhbnZhcyxcbiAgICBpc0NvbGxhYm9yYXRpbmcsXG4gICAgcmVuZGVyQ3VzdG9tRm9vdGVyLFxuICAgIHNob3dUaGVtZUJ0bixcbiAgICBvbkltYWdlQWN0aW9uLFxuICAgIHJlbmRlclRvcFJpZ2h0VUksXG4gICAgcmVuZGVyQ3VzdG9tU3RhdHNcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpOyAvL3pzdmljemlhblxuXG4gIGNvbnN0IHJlbmRlclRvb2xiYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgIC8venN2aWN6aWFuIChhZGRlZCA8PiBmb3IgbGlicmFyeSBkb2NraW5nKVxuICAgICAgX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3hzKEZpeGVkU2lkZUNvbnRhaW5lciwge1xuICAgICAgICAgIHNpZGU6IFwidG9wXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIkFwcC10b3AtYmFyXCIsXG4gICAgICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChTZWN0aW9uLCB7XG4gICAgICAgICAgICBoZWFkaW5nOiBcInNoYXBlc1wiLFxuICAgICAgICAgICAgY2hpbGRyZW46IGZ1bmN0aW9uIChoZWFkaW5nKSB7XG4gICAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoU3RhY2suQ29sLCB7XG4gICAgICAgICAgICAgICAgZ2FwOiA0LFxuICAgICAgICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3hzKFN0YWNrLlJvdywge1xuICAgICAgICAgICAgICAgICAgZ2FwOiAxLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkFwcC10b29sYmFyLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeHMoSXNsYW5kLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJBcHAtdG9vbGJhclwiLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW2hlYWRpbmcsIC8qI19fUFVSRV9fKi9fanN4KFN0YWNrLlJvdywge1xuICAgICAgICAgICAgICAgICAgICAgIGdhcDogMSxcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU2hhcGVzU3dpdGNoZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlOiBhcHBTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhczogY2FudmFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVG9vbDogYXBwU3RhdGUuYWN0aXZlVG9vbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlOiBzZXRBcHBTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb246IGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25JbWFnZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogcG9pbnRlclR5cGUgIT09IFwibW91c2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9KV1cbiAgICAgICAgICAgICAgICAgIH0pLCByZW5kZXJUb3BSaWdodFVJICYmIHJlbmRlclRvcFJpZ2h0VUkodHJ1ZSwgYXBwU3RhdGUpLCAvKiNfX1BVUkVfXyovX2pzeChMb2NrQnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGFwcFN0YXRlLmFjdGl2ZVRvb2wubG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25Mb2NrVG9nZ2xlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdChcInRvb2xCYXIubG9ja1wiKSxcbiAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU6IHRydWVcbiAgICAgICAgICAgICAgICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeChMaWJyYXJ5QnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlOiBhcHBTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU6IHNldEFwcFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBpc01vYmlsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSksIC8qI19fUFVSRV9fKi9fanN4KFBlbk1vZGVCdXR0b24sIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYXBwU3RhdGUucGVuTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uUGVuTW9kZVRvZ2dsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHQoXCJ0b29sQmFyLnBlbk1vZGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwZW5EZXRlY3RlZDogYXBwU3RhdGUucGVuRGV0ZWN0ZWRcbiAgICAgICAgICAgICAgICAgIH0pXVxuICAgICAgICAgICAgICAgIH0pLCBkZXZpY2UuaXNNb2JpbGUgJiYgbGlicmFyeU1lbnUgLy96c3ZpY3ppYW5cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeChIaW50Vmlld2VyLCB7XG4gICAgICAgICAgICBhcHBTdGF0ZTogYXBwU3RhdGUsXG4gICAgICAgICAgICBlbGVtZW50czogZWxlbWVudHMsXG4gICAgICAgICAgICBpc01vYmlsZTogdHJ1ZVxuICAgICAgICAgIH0pXVxuICAgICAgICB9KSwgIWRldmljZS5pc01vYmlsZSAmJiAvL3pzdmljemlhblxuICAgICAgICBhcHBTdGF0ZS5pc0xpYnJhcnlPcGVuICYmIC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwibGF5ZXItdWlfX3NpZGViYXJcIixcbiAgICAgICAgICBjaGlsZHJlbjogbGlicmFyeU1lbnVcbiAgICAgICAgfSldXG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyQXBwVG9vbGJhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBSZW5kZXIgZXJhc2VyIGNvbmRpdGlvbmFsbHkgaW4gbW9iaWxlXG4gICAgY29uc3Qgc2hvd0VyYXNlciA9ICFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgIWFwcFN0YXRlLmVkaXRpbmdFbGVtZW50ICYmIGdldFNlbGVjdGVkRWxlbWVudHMoZWxlbWVudHMsIGFwcFN0YXRlKS5sZW5ndGggPT09IDA7XG5cbiAgICBpZiAoYXBwU3RhdGUudmlld01vZGVFbmFibGVkKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiQXBwLXRvb2xiYXItY29udGVudFwiLFxuICAgICAgICBjaGlsZHJlbjogYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJ0b2dnbGVDYW52YXNNZW51XCIpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJBcHAtdG9vbGJhci1jb250ZW50XCIsXG4gICAgICBjaGlsZHJlbjogW2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidG9nZ2xlQ2FudmFzTWVudVwiKSwgYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJ0b2dnbGVFZGl0TWVudVwiKSwgYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJ1bmRvXCIpLCBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInJlZG9cIiksIHNob3dFcmFzZXIgJiYgYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJlcmFzZXJcIiksIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKGFwcFN0YXRlLm11bHRpRWxlbWVudCA/IFwiZmluYWxpemVcIiA6IFwiZHVwbGljYXRlU2VsZWN0aW9uXCIpLCBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImRlbGV0ZVNlbGVjdGVkRWxlbWVudHNcIildXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyQ2FudmFzQWN0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYXBwU3RhdGUudmlld01vZGVFbmFibGVkKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgICBjaGlsZHJlbjogW3JlbmRlckpTT05FeHBvcnREaWFsb2coKSwgcmVuZGVySW1hZ2VFeHBvcnREaWFsb2coKV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogW2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiY2xlYXJDYW52YXNcIiksIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwibG9hZFNjZW5lXCIpLCByZW5kZXJKU09ORXhwb3J0RGlhbG9nKCksIHJlbmRlckltYWdlRXhwb3J0RGlhbG9nKCksIG9uQ29sbGFiQnV0dG9uQ2xpY2sgJiYgLyojX19QVVJFX18qL19qc3goQ29sbGFiQnV0dG9uLCB7XG4gICAgICAgIGlzQ29sbGFib3JhdGluZzogaXNDb2xsYWJvcmF0aW5nLFxuICAgICAgICBjb2xsYWJvcmF0b3JDb3VudDogYXBwU3RhdGUuY29sbGFib3JhdG9ycy5zaXplLFxuICAgICAgICBvbkNsaWNrOiBvbkNvbGxhYkJ1dHRvbkNsaWNrXG4gICAgICB9KSwgLyojX19QVVJFX18qL19qc3goQmFja2dyb3VuZFBpY2tlckFuZERhcmtNb2RlVG9nZ2xlLCB7XG4gICAgICAgIGFjdGlvbk1hbmFnZXI6IGFjdGlvbk1hbmFnZXIsXG4gICAgICAgIGFwcFN0YXRlOiBhcHBTdGF0ZSxcbiAgICAgICAgc2V0QXBwU3RhdGU6IHNldEFwcFN0YXRlLFxuICAgICAgICBzaG93VGhlbWVCdG46IHNob3dUaGVtZUJ0blxuICAgICAgfSldXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgcmVuZGVyVG9vbGJhcigpLCAhYXBwU3RhdGUub3Blbk1lbnUgJiYgYXBwU3RhdGUuc2hvd1N0YXRzICYmIC8qI19fUFVSRV9fKi9fanN4KFN0YXRzLCB7XG4gICAgICBhcHBTdGF0ZTogYXBwU3RhdGUsXG4gICAgICBzZXRBcHBTdGF0ZTogc2V0QXBwU3RhdGUsXG4gICAgICBlbGVtZW50czogZWxlbWVudHMsXG4gICAgICBvbkNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25Ub2dnbGVTdGF0cyk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyQ3VzdG9tU3RhdHM6IHJlbmRlckN1c3RvbVN0YXRzXG4gICAgfSksIC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJBcHAtYm90dG9tLWJhclwiLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBTQ1JPTExCQVJfV0lEVEggKyBTQ1JPTExCQVJfTUFSR0lOICogMixcbiAgICAgICAgbWFyZ2luTGVmdDogU0NST0xMQkFSX1dJRFRIICsgU0NST0xMQkFSX01BUkdJTiAqIDIsXG4gICAgICAgIG1hcmdpblJpZ2h0OiBTQ1JPTExCQVJfV0lEVEggKyBTQ1JPTExCQVJfTUFSR0lOICogMlxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeHMoSXNsYW5kLCB7XG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIGNoaWxkcmVuOiBbYXBwU3RhdGUub3Blbk1lbnUgPT09IFwiY2FudmFzXCIgPyAvKiNfX1BVUkVfXyovX2pzeChTZWN0aW9uLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIkFwcC1tb2JpbGUtbWVudVwiLFxuICAgICAgICAgIGhlYWRpbmc6IFwiY2FudmFzQWN0aW9uc1wiLFxuICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicGFuZWxDb2x1bW5cIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeHMoU3RhY2suQ29sLCB7XG4gICAgICAgICAgICAgIGdhcDogNCxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtyZW5kZXJDYW52YXNBY3Rpb25zKCksIHJlbmRlckN1c3RvbUZvb3Rlcj8uKHRydWUsIGFwcFN0YXRlKSwgYXBwU3RhdGUuY29sbGFib3JhdG9ycy5zaXplID4gMCAmJiAvKiNfX1BVUkVfXyovX2pzeHMoXCJmaWVsZHNldFwiLCB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChcImxlZ2VuZFwiLCB7XG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdChcImxhYmVscy5jb2xsYWJvcmF0b3JzXCIpXG4gICAgICAgICAgICAgICAgfSksIC8qI19fUFVSRV9fKi9fanN4KFVzZXJMaXN0LCB7XG4gICAgICAgICAgICAgICAgICBtb2JpbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb2xsYWJvcmF0b3JzOiBhcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uTWFuYWdlcjogYWN0aW9uTWFuYWdlclxuICAgICAgICAgICAgICAgIH0pXVxuICAgICAgICAgICAgICB9KV1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSkgOiBhcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJzaGFwZVwiICYmICFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zKGFwcFN0YXRlLCBlbGVtZW50cykgPyAvKiNfX1BVUkVfXyovX2pzeChTZWN0aW9uLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIkFwcC1tb2JpbGUtbWVudVwiLFxuICAgICAgICAgIGhlYWRpbmc6IFwic2VsZWN0ZWRTaGFwZUFjdGlvbnNcIixcbiAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU2VsZWN0ZWRTaGFwZUFjdGlvbnMsIHtcbiAgICAgICAgICAgIGFwcFN0YXRlOiBhcHBTdGF0ZSxcbiAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50cyxcbiAgICAgICAgICAgIHJlbmRlckFjdGlvbjogYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb25cbiAgICAgICAgICB9KVxuICAgICAgICB9KSA6IG51bGwsIC8qI19fUFVSRV9fKi9fanN4cyhcImZvb3RlclwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIkFwcC10b29sYmFyXCIsXG4gICAgICAgICAgY2hpbGRyZW46IFtyZW5kZXJBcHBUb29sYmFyKCksIGFwcFN0YXRlLnNjcm9sbGVkT3V0c2lkZSAmJiAhYXBwU3RhdGUub3Blbk1lbnUgJiYgIWFwcFN0YXRlLmlzTGlicmFyeU9wZW4gJiYgLyojX19QVVJFX18qL19qc3goXCJidXR0b25cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcInNjcm9sbC1iYWNrLXRvLWNvbnRlbnRcIixcbiAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoX29iamVjdFNwcmVhZCh7fSwgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyKGVsZW1lbnRzLCBhcHBTdGF0ZSwgY2FudmFzKSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiB0KFwiYnV0dG9ucy5zY3JvbGxCYWNrVG9Db250ZW50XCIpXG4gICAgICAgICAgfSldXG4gICAgICAgIH0pXVxuICAgICAgfSlcbiAgICB9KV1cbiAgfSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../components/MobileMenu.tsx?");
2293
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"MobileMenu\\\": () => (/* binding */ MobileMenu)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Stack */ \\\"../../components/Stack.tsx\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FixedSideContainer */ \\\"../../components/FixedSideContainer.tsx\\\");\\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Island */ \\\"../../components/Island.tsx\\\");\\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HintViewer */ \\\"../../components/HintViewer.tsx\\\");\\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ \\\"../../scene/index.ts\\\");\\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Actions */ \\\"../../components/Actions.tsx\\\");\\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Section */ \\\"../../components/Section.tsx\\\");\\n/* harmony import */ var _CollabButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./CollabButton */ \\\"../../components/CollabButton.tsx\\\");\\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/scrollbars */ \\\"../../scene/scrollbars.ts\\\");\\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LockButton */ \\\"../../components/LockButton.tsx\\\");\\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./UserList */ \\\"../../components/UserList.tsx\\\");\\n/* harmony import */ var _BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./BackgroundPickerAndDarkModeToggle */ \\\"../../components/BackgroundPickerAndDarkModeToggle.tsx\\\");\\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LibraryButton */ \\\"../../components/LibraryButton.tsx\\\");\\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PenModeButton */ \\\"../../components/PenModeButton.tsx\\\");\\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Stats */ \\\"../../components/Stats.tsx\\\");\\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../actions */ \\\"../../actions/index.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), 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 = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n //zsviczian\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst MobileMenu = function (_ref) {\\r\\n let { appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI, renderCustomStats } = _ref;\\r\\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_17__.useDevice)(); //zsviczian\\r\\n const renderToolbar = function () {\\r\\n return (\\r\\n /*#__PURE__*/\\r\\n //zsviczian (added <> for library docking)\\r\\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_4__.FixedSideContainer, {\\r\\n side: \\\"top\\\",\\r\\n className: \\\"App-top-bar\\\",\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_9__.Section, {\\r\\n heading: \\\"shapes\\\",\\r\\n children: function (heading) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Col, {\\r\\n gap: 4,\\r\\n align: \\\"center\\\",\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Row, {\\r\\n gap: 1,\\r\\n className: \\\"App-toolbar-container\\\",\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_5__.Island, {\\r\\n padding: 1,\\r\\n className: \\\"App-toolbar\\\",\\r\\n children: [heading, /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Row, {\\r\\n gap: 1,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.ShapesSwitcher, {\\r\\n appState: appState,\\r\\n canvas: canvas,\\r\\n activeTool: appState.activeTool,\\r\\n setAppState: setAppState,\\r\\n onImageAction: function (_ref2) {\\r\\n let { pointerType } = _ref2;\\r\\n onImageAction({\\r\\n insertOnCanvasDirectly: pointerType !== \\\"mouse\\\"\\r\\n });\\r\\n }\\r\\n })\\r\\n })]\\r\\n }), renderTopRightUI && renderTopRightUI(true, appState), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_12__.LockButton, {\\r\\n checked: appState.activeTool.locked,\\r\\n onChange: onLockToggle,\\r\\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"toolBar.lock\\\"),\\r\\n isMobile: true\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_15__.LibraryButton, {\\r\\n appState: appState,\\r\\n setAppState: setAppState,\\r\\n isMobile: true\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_16__.PenModeButton, {\\r\\n checked: appState.penMode,\\r\\n onChange: onPenModeToggle,\\r\\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"toolBar.penMode\\\"),\\r\\n isMobile: true,\\r\\n penDetected: appState.penDetected\\r\\n })]\\r\\n }), device.isMobile && libraryMenu //zsviczian\\r\\n ]\\r\\n });\\r\\n }\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_6__.HintViewer, {\\r\\n appState: appState,\\r\\n elements: elements,\\r\\n isMobile: true\\r\\n })]\\r\\n }), !device.isMobile && //zsviczian\\r\\n appState.isLibraryOpen && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"layer-ui__sidebar\\\",\\r\\n children: libraryMenu\\r\\n })]\\r\\n }));\\r\\n };\\r\\n const renderAppToolbar = function () {\\r\\n // Render eraser conditionally in mobile\\r\\n const showEraser = !appState.viewModeEnabled && !appState.editingElement && (0,_scene__WEBPACK_IMPORTED_MODULE_7__.getSelectedElements)(elements, appState).length === 0;\\r\\n if (appState.viewModeEnabled) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"App-toolbar-content\\\",\\r\\n children: actionManager.renderAction(\\\"toggleCanvasMenu\\\")\\r\\n });\\r\\n }\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"App-toolbar-content\\\",\\r\\n children: [actionManager.renderAction(\\\"toggleCanvasMenu\\\"), actionManager.renderAction(\\\"toggleEditMenu\\\"), actionManager.renderAction(\\\"undo\\\"), actionManager.renderAction(\\\"redo\\\"), showEraser && actionManager.renderAction(\\\"eraser\\\"), actionManager.renderAction(appState.multiElement ? \\\"finalize\\\" : \\\"duplicateSelection\\\"), actionManager.renderAction(\\\"deleteSelectedElements\\\")]\\r\\n });\\r\\n };\\r\\n const renderCanvasActions = function () {\\r\\n if (appState.viewModeEnabled) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [renderJSONExportDialog(), renderImageExportDialog()]\\r\\n });\\r\\n }\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [actionManager.renderAction(\\\"clearCanvas\\\"), actionManager.renderAction(\\\"loadScene\\\"), renderJSONExportDialog(), renderImageExportDialog(), onCollabButtonClick && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_CollabButton__WEBPACK_IMPORTED_MODULE_10__[\\\"default\\\"], {\\r\\n isCollaborating: isCollaborating,\\r\\n collaboratorCount: appState.collaborators.size,\\r\\n onClick: onCollabButtonClick\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_14__.BackgroundPickerAndDarkModeToggle, {\\r\\n actionManager: actionManager,\\r\\n appState: appState,\\r\\n setAppState: setAppState,\\r\\n showThemeBtn: showThemeBtn\\r\\n })]\\r\\n });\\r\\n };\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.Fragment, {\\r\\n children: [!appState.viewModeEnabled && renderToolbar(), !appState.openMenu && appState.showStats && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_18__.Stats, {\\r\\n appState: appState,\\r\\n setAppState: setAppState,\\r\\n elements: elements,\\r\\n onClose: function () {\\r\\n actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_19__.actionToggleStats);\\r\\n },\\r\\n renderCustomStats: renderCustomStats\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"div\\\", {\\r\\n className: \\\"App-bottom-bar\\\",\\r\\n style: {\\r\\n marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN,\\r\\n //* 2, zsviczian\\r\\n marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\\r\\n marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2\\r\\n },\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_5__.Island, {\\r\\n padding: 0,\\r\\n children: [appState.openMenu === \\\"canvas\\\" ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_9__.Section, {\\r\\n className: \\\"App-mobile-menu\\\",\\r\\n heading: \\\"canvasActions\\\",\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"div\\\", {\\r\\n className: \\\"panelColumn\\\",\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].Col, {\\r\\n gap: 4,\\r\\n children: [renderCanvasActions(), renderCustomFooter === null || renderCustomFooter === void 0 ? void 0 : renderCustomFooter(true, appState), appState.collaborators.size > 0 && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"fieldset\\\", {\\r\\n children: [/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"legend\\\", {\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"labels.collaborators\\\")\\r\\n }), /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_13__.UserList, {\\r\\n mobile: true,\\r\\n collaborators: appState.collaborators,\\r\\n actionManager: actionManager\\r\\n })]\\r\\n })]\\r\\n })\\r\\n })\\r\\n }) : appState.openMenu === \\\"shape\\\" && !appState.viewModeEnabled && (0,_element__WEBPACK_IMPORTED_MODULE_3__.showSelectedShapeActions)(appState, elements) ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_9__.Section, {\\r\\n className: \\\"App-mobile-menu\\\",\\r\\n heading: \\\"selectedShapeActions\\\",\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.SelectedShapeActions, {\\r\\n appState: appState,\\r\\n elements: elements,\\r\\n renderAction: actionManager.renderAction\\r\\n })\\r\\n }) : null, /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsxs)(\\\"footer\\\", {\\r\\n className: \\\"App-toolbar\\\",\\r\\n children: [renderAppToolbar(), appState.scrolledOutside && !appState.openMenu && !appState.isLibraryOpen && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(\\\"button\\\", {\\r\\n className: \\\"scroll-back-to-content\\\",\\r\\n onClick: function () {\\r\\n setAppState(_objectSpread({}, (0,_scene__WEBPACK_IMPORTED_MODULE_7__.calculateScrollCenter)(elements, appState, canvas)));\\r\\n },\\r\\n children: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\\\"buttons.scrollBackToContent\\\")\\r\\n })]\\r\\n })]\\r\\n }), appState.trayModeEnabled ?\\r\\n /*#__PURE__*/\\r\\n //zsviczian display zoom menu in tray mode\\r\\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_5__.Island, {\\r\\n padding: 1,\\r\\n style: {\\r\\n marginLeft: `4px`\\r\\n },\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_20__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.ZoomActions, {\\r\\n renderAction: actionManager.renderAction,\\r\\n zoom: appState.zoom,\\r\\n trayMode: true\\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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QUUsS0FBSzs2QkFDbEI7NEJBQ0QsUUFBUSxFQUFFLGFBQWEsd0RBQUksQ0FBQyxpREFBVyxFQUFFO2dDQUN2QyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7Z0NBQ3hDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtnQ0FDbkIsUUFBUSxFQUFFLElBQUk7NkJBQ2YsQ0FBQzt5QkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNULENBQUMsQ0FBQztLQUNKLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL01vYmlsZU1lbnUudHN4PzExODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgZW51bWVyYWJsZU9ubHkgJiYgKHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KSksIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gbnVsbCAhPSBhcmd1bWVudHNbaV0gPyBhcmd1bWVudHNbaV0gOiB7fTsgaSAlIDIgPyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKSA6IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi9TdGFja1wiO1xuaW1wb3J0IHsgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IEZpeGVkU2lkZUNvbnRhaW5lciB9IGZyb20gXCIuL0ZpeGVkU2lkZUNvbnRhaW5lclwiO1xuaW1wb3J0IHsgSXNsYW5kIH0gZnJvbSBcIi4vSXNsYW5kXCI7XG5pbXBvcnQgeyBIaW50Vmlld2VyIH0gZnJvbSBcIi4vSGludFZpZXdlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL3NjZW5lXCI7XG5pbXBvcnQgeyBTZWxlY3RlZFNoYXBlQWN0aW9ucywgU2hhcGVzU3dpdGNoZXIsIFpvb21BY3Rpb25zIH0gZnJvbSBcIi4vQWN0aW9uc1wiO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gXCIuL1NlY3Rpb25cIjtcbmltcG9ydCBDb2xsYWJCdXR0b24gZnJvbSBcIi4vQ29sbGFiQnV0dG9uXCI7XG5pbXBvcnQgeyBTQ1JPTExCQVJfV0lEVEgsIFNDUk9MTEJBUl9NQVJHSU4gfSBmcm9tIFwiLi4vc2NlbmUvc2Nyb2xsYmFyc1wiO1xuaW1wb3J0IHsgTG9ja0J1dHRvbiB9IGZyb20gXCIuL0xvY2tCdXR0b25cIjtcbmltcG9ydCB7IFVzZXJMaXN0IH0gZnJvbSBcIi4vVXNlckxpc3RcIjtcbmltcG9ydCB7IEJhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZSB9IGZyb20gXCIuL0JhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZVwiO1xuaW1wb3J0IHsgTGlicmFyeUJ1dHRvbiB9IGZyb20gXCIuL0xpYnJhcnlCdXR0b25cIjtcbmltcG9ydCB7IFBlbk1vZGVCdXR0b24gfSBmcm9tIFwiLi9QZW5Nb2RlQnV0dG9uXCI7XG5pbXBvcnQgeyB1c2VEZXZpY2UgfSBmcm9tIFwiLi9BcHBcIjsgLy96c3ZpY3ppYW5cblxuaW1wb3J0IHsgU3RhdHMgfSBmcm9tIFwiLi9TdGF0c1wiO1xuaW1wb3J0IHsgYWN0aW9uVG9nZ2xlU3RhdHMgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IE1vYmlsZU1lbnUgPSBmdW5jdGlvbiAoX3JlZikge1xuICBsZXQge1xuICAgIGFwcFN0YXRlLFxuICAgIGVsZW1lbnRzLFxuICAgIGxpYnJhcnlNZW51LFxuICAgIGFjdGlvbk1hbmFnZXIsXG4gICAgcmVuZGVySlNPTkV4cG9ydERpYWxvZyxcbiAgICByZW5kZXJJbWFnZUV4cG9ydERpYWxvZyxcbiAgICBzZXRBcHBTdGF0ZSxcbiAgICBvbkNvbGxhYkJ1dHRvbkNsaWNrLFxuICAgIG9uTG9ja1RvZ2dsZSxcbiAgICBvblBlbk1vZGVUb2dnbGUsXG4gICAgY2FudmFzLFxuICAgIGlzQ29sbGFib3JhdGluZyxcbiAgICByZW5kZXJDdXN0b21Gb290ZXIsXG4gICAgc2hvd1RoZW1lQnRuLFxuICAgIG9uSW1hZ2VBY3Rpb24sXG4gICAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgICByZW5kZXJDdXN0b21TdGF0c1xuICB9ID0gX3JlZjtcbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7IC8venN2aWN6aWFuXG5cbiAgY29uc3QgcmVuZGVyVG9vbGJhciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgLyojX19QVVJFX18qL1xuICAgICAgLy96c3ZpY3ppYW4gKGFkZGVkIDw+IGZvciBsaWJyYXJ5IGRvY2tpbmcpXG4gICAgICBfanN4cyhfRnJhZ21lbnQsIHtcbiAgICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeHMoRml4ZWRTaWRlQ29udGFpbmVyLCB7XG4gICAgICAgICAgc2lkZTogXCJ0b3BcIixcbiAgICAgICAgICBjbGFzc05hbWU6IFwiQXBwLXRvcC1iYXJcIixcbiAgICAgICAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KFNlY3Rpb24sIHtcbiAgICAgICAgICAgIGhlYWRpbmc6IFwic2hhcGVzXCIsXG4gICAgICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24gKGhlYWRpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhTdGFjay5Db2wsIHtcbiAgICAgICAgICAgICAgICBnYXA6IDQsXG4gICAgICAgICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeHMoU3RhY2suUm93LCB7XG4gICAgICAgICAgICAgICAgICBnYXA6IDEsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiQXBwLXRvb2xiYXItY29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4cyhJc2xhbmQsIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkFwcC10b29sYmFyXCIsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbaGVhZGluZywgLyojX19QVVJFX18qL19qc3goU3RhY2suUm93LCB7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAxLFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChTaGFwZXNTd2l0Y2hlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGU6IGFwcFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzOiBjYW52YXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sOiBhcHBTdGF0ZS5hY3RpdmVUb29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU6IHNldEFwcFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25JbWFnZUFjdGlvbjogZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IF9yZWYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPbkNhbnZhc0RpcmVjdGx5OiBwb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0pXVxuICAgICAgICAgICAgICAgICAgfSksIHJlbmRlclRvcFJpZ2h0VUkgJiYgcmVuZGVyVG9wUmlnaHRVSSh0cnVlLCBhcHBTdGF0ZSksIC8qI19fUFVSRV9fKi9fanN4KExvY2tCdXR0b24sIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYXBwU3RhdGUuYWN0aXZlVG9vbC5sb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkxvY2tUb2dnbGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0KFwidG9vbEJhci5sb2NrXCIpLFxuICAgICAgICAgICAgICAgICAgICBpc01vYmlsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSksIC8qI19fUFVSRV9fKi9fanN4KExpYnJhcnlCdXR0b24sIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGU6IGFwcFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZTogc2V0QXBwU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9KSwgLyojX19QVVJFX18qL19qc3goUGVuTW9kZUJ1dHRvbiwge1xuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiBhcHBTdGF0ZS5wZW5Nb2RlLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25QZW5Nb2RlVG9nZ2xlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdChcInRvb2xCYXIucGVuTW9kZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBlbkRldGVjdGVkOiBhcHBTdGF0ZS5wZW5EZXRlY3RlZFxuICAgICAgICAgICAgICAgICAgfSldXG4gICAgICAgICAgICAgICAgfSksIGRldmljZS5pc01vYmlsZSAmJiBsaWJyYXJ5TWVudSAvL3pzdmljemlhblxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksIC8qI19fUFVSRV9fKi9fanN4KEhpbnRWaWV3ZXIsIHtcbiAgICAgICAgICAgIGFwcFN0YXRlOiBhcHBTdGF0ZSxcbiAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50cyxcbiAgICAgICAgICAgIGlzTW9iaWxlOiB0cnVlXG4gICAgICAgICAgfSldXG4gICAgICAgIH0pLCAhZGV2aWNlLmlzTW9iaWxlICYmIC8venN2aWN6aWFuXG4gICAgICAgIGFwcFN0YXRlLmlzTGlicmFyeU9wZW4gJiYgLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJsYXllci11aV9fc2lkZWJhclwiLFxuICAgICAgICAgIGNoaWxkcmVuOiBsaWJyYXJ5TWVudVxuICAgICAgICB9KV1cbiAgICAgIH0pXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJBcHBUb29sYmFyID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFJlbmRlciBlcmFzZXIgY29uZGl0aW9uYWxseSBpbiBtb2JpbGVcbiAgICBjb25zdCBzaG93RXJhc2VyID0gIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiAhYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQgJiYgZ2V0U2VsZWN0ZWRFbGVtZW50cyhlbGVtZW50cywgYXBwU3RhdGUpLmxlbmd0aCA9PT0gMDtcblxuICAgIGlmIChhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJBcHAtdG9vbGJhci1jb250ZW50XCIsXG4gICAgICAgIGNoaWxkcmVuOiBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInRvZ2dsZUNhbnZhc01lbnVcIilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIkFwcC10b29sYmFyLWNvbnRlbnRcIixcbiAgICAgIGNoaWxkcmVuOiBbYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJ0b2dnbGVDYW52YXNNZW51XCIpLCBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInRvZ2dsZUVkaXRNZW51XCIpLCBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInVuZG9cIiksIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwicmVkb1wiKSwgc2hvd0VyYXNlciAmJiBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImVyYXNlclwiKSwgYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oYXBwU3RhdGUubXVsdGlFbGVtZW50ID8gXCJmaW5hbGl6ZVwiIDogXCJkdXBsaWNhdGVTZWxlY3Rpb25cIiksIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiZGVsZXRlU2VsZWN0ZWRFbGVtZW50c1wiKV1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJDYW52YXNBY3Rpb25zID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbcmVuZGVySlNPTkV4cG9ydERpYWxvZygpLCByZW5kZXJJbWFnZUV4cG9ydERpYWxvZygpXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhfRnJhZ21lbnQsIHtcbiAgICAgIGNoaWxkcmVuOiBbYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJjbGVhckNhbnZhc1wiKSwgYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJsb2FkU2NlbmVcIiksIHJlbmRlckpTT05FeHBvcnREaWFsb2coKSwgcmVuZGVySW1hZ2VFeHBvcnREaWFsb2coKSwgb25Db2xsYWJCdXR0b25DbGljayAmJiAvKiNfX1BVUkVfXyovX2pzeChDb2xsYWJCdXR0b24sIHtcbiAgICAgICAgaXNDb2xsYWJvcmF0aW5nOiBpc0NvbGxhYm9yYXRpbmcsXG4gICAgICAgIGNvbGxhYm9yYXRvckNvdW50OiBhcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemUsXG4gICAgICAgIG9uQ2xpY2s6IG9uQ29sbGFiQnV0dG9uQ2xpY2tcbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeChCYWNrZ3JvdW5kUGlja2VyQW5kRGFya01vZGVUb2dnbGUsIHtcbiAgICAgICAgYWN0aW9uTWFuYWdlcjogYWN0aW9uTWFuYWdlcixcbiAgICAgICAgYXBwU3RhdGU6IGFwcFN0YXRlLFxuICAgICAgICBzZXRBcHBTdGF0ZTogc2V0QXBwU3RhdGUsXG4gICAgICAgIHNob3dUaGVtZUJ0bjogc2hvd1RoZW1lQnRuXG4gICAgICB9KV1cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiByZW5kZXJUb29sYmFyKCksICFhcHBTdGF0ZS5vcGVuTWVudSAmJiBhcHBTdGF0ZS5zaG93U3RhdHMgJiYgLyojX19QVVJFX18qL19qc3goU3RhdHMsIHtcbiAgICAgIGFwcFN0YXRlOiBhcHBTdGF0ZSxcbiAgICAgIHNldEFwcFN0YXRlOiBzZXRBcHBTdGF0ZSxcbiAgICAgIGVsZW1lbnRzOiBlbGVtZW50cyxcbiAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYWN0aW9uTWFuYWdlci5leGVjdXRlQWN0aW9uKGFjdGlvblRvZ2dsZVN0YXRzKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXJDdXN0b21TdGF0czogcmVuZGVyQ3VzdG9tU3RhdHNcbiAgICB9KSwgLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJBcHAtYm90dG9tLWJhclwiLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBTQ1JPTExCQVJfV0lEVEggKyBTQ1JPTExCQVJfTUFSR0lOLFxuICAgICAgICAvLyogMiwgenN2aWN6aWFuXG4gICAgICAgIG1hcmdpbkxlZnQ6IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICBtYXJnaW5SaWdodDogU0NST0xMQkFSX1dJRFRIICsgU0NST0xMQkFSX01BUkdJTiAqIDJcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4cyhJc2xhbmQsIHtcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgY2hpbGRyZW46IFthcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJjYW52YXNcIiA/IC8qI19fUFVSRV9fKi9fanN4KFNlY3Rpb24sIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiQXBwLW1vYmlsZS1tZW51XCIsXG4gICAgICAgICAgaGVhZGluZzogXCJjYW52YXNBY3Rpb25zXCIsXG4gICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJwYW5lbENvbHVtblwiLFxuICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4cyhTdGFjay5Db2wsIHtcbiAgICAgICAgICAgICAgZ2FwOiA0LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW3JlbmRlckNhbnZhc0FjdGlvbnMoKSwgcmVuZGVyQ3VzdG9tRm9vdGVyPy4odHJ1ZSwgYXBwU3RhdGUpLCBhcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemUgPiAwICYmIC8qI19fUFVSRV9fKi9fanN4cyhcImZpZWxkc2V0XCIsIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KFwibGVnZW5kXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB0KFwibGFiZWxzLmNvbGxhYm9yYXRvcnNcIilcbiAgICAgICAgICAgICAgICB9KSwgLyojX19QVVJFX18qL19qc3goVXNlckxpc3QsIHtcbiAgICAgICAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbGxhYm9yYXRvcnM6IGFwcFN0YXRlLmNvbGxhYm9yYXRvcnMsXG4gICAgICAgICAgICAgICAgICBhY3Rpb25NYW5hZ2VyOiBhY3Rpb25NYW5hZ2VyXG4gICAgICAgICAgICAgICAgfSldXG4gICAgICAgICAgICAgIH0pXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9KSA6IGFwcFN0YXRlLm9wZW5NZW51ID09PSBcInNoYXBlXCIgJiYgIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMoYXBwU3RhdGUsIGVsZW1lbnRzKSA/IC8qI19fUFVSRV9fKi9fanN4KFNlY3Rpb24sIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiQXBwLW1vYmlsZS1tZW51XCIsXG4gICAgICAgICAgaGVhZGluZzogXCJzZWxlY3RlZFNoYXBlQWN0aW9uc1wiLFxuICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RlZFNoYXBlQWN0aW9ucywge1xuICAgICAgICAgICAgYXBwU3RhdGU6IGFwcFN0YXRlLFxuICAgICAgICAgICAgZWxlbWVudHM6IGVsZW1lbnRzLFxuICAgICAgICAgICAgcmVuZGVyQWN0aW9uOiBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvblxuICAgICAgICAgIH0pXG4gICAgICAgIH0pIDogbnVsbCwgLyojX19QVVJFX18qL19qc3hzKFwiZm9vdGVyXCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiQXBwLXRvb2xiYXJcIixcbiAgICAgICAgICBjaGlsZHJlbjogW3JlbmRlckFwcFRvb2xiYXIoKSwgYXBwU3RhdGUuc2Nyb2xsZWRPdXRzaWRlICYmICFhcHBTdGF0ZS5vcGVuTWVudSAmJiAhYXBwU3RhdGUuaXNMaWJyYXJ5T3BlbiAmJiAvKiNfX1BVUkVfXyovX2pzeChcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwic2Nyb2xsLWJhY2stdG8tY29udGVudFwiLFxuICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBzZXRBcHBTdGF0ZShfb2JqZWN0U3ByZWFkKHt9LCBjYWxjdWxhdGVTY3JvbGxDZW50ZXIoZWxlbWVudHMsIGFwcFN0YXRlLCBjYW52YXMpKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hpbGRyZW46IHQoXCJidXR0b25zLnNjcm9sbEJhY2tUb0NvbnRlbnRcIilcbiAgICAgICAgICB9KV1cbiAgICAgICAgfSldXG4gICAgICB9KSwgYXBwU3RhdGUudHJheU1vZGVFbmFibGVkID9cbiAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgIC8venN2aWN6aWFuIGRpc3BsYXkgem9vbSBtZW51IGluIHRyYXkgbW9kZVxuICAgICAgX2pzeChJc2xhbmQsIHtcbiAgICAgICAgcGFkZGluZzogMSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBtYXJnaW5MZWZ0OiBgNHB4YFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goWm9vbUFjdGlvbnMsIHtcbiAgICAgICAgICByZW5kZXJBY3Rpb246IGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uLFxuICAgICAgICAgIHpvb206IGFwcFN0YXRlLnpvb20sXG4gICAgICAgICAgdHJheU1vZGU6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0pIDogXCJcIl1cbiAgICB9KV1cbiAgfSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../components/MobileMenu.tsx?");
2294
2294
 
2295
2295
  /***/ }),
2296
2296
 
@@ -2488,7 +2488,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2488
2488
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2489
2489
 
2490
2490
  "use strict";
2491
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"ACTIVE_THRESHOLD\\\": () => (/* binding */ ACTIVE_THRESHOLD),\\n/* harmony export */ \\\"ALLOWED_IMAGE_MIME_TYPES\\\": () => (/* binding */ ALLOWED_IMAGE_MIME_TYPES),\\n/* harmony export */ \\\"APP_NAME\\\": () => (/* binding */ APP_NAME),\\n/* harmony export */ \\\"BOUND_TEXT_PADDING\\\": () => (/* binding */ BOUND_TEXT_PADDING),\\n/* harmony export */ \\\"CANVAS_ONLY_ACTIONS\\\": () => (/* binding */ CANVAS_ONLY_ACTIONS),\\n/* harmony export */ \\\"CLASSES\\\": () => (/* binding */ CLASSES),\\n/* harmony export */ \\\"COOKIES\\\": () => (/* binding */ COOKIES),\\n/* harmony export */ \\\"CURSOR_TYPE\\\": () => (/* binding */ CURSOR_TYPE),\\n/* harmony export */ \\\"DEFAULT_EXPORT_PADDING\\\": () => (/* binding */ DEFAULT_EXPORT_PADDING),\\n/* harmony export */ \\\"DEFAULT_FONT_FAMILY\\\": () => (/* binding */ DEFAULT_FONT_FAMILY),\\n/* harmony export */ \\\"DEFAULT_FONT_SIZE\\\": () => (/* binding */ DEFAULT_FONT_SIZE),\\n/* harmony export */ \\\"DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT\\\": () => (/* binding */ DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT),\\n/* harmony export */ \\\"DEFAULT_TEXT_ALIGN\\\": () => (/* binding */ DEFAULT_TEXT_ALIGN),\\n/* harmony export */ \\\"DEFAULT_UI_OPTIONS\\\": () => (/* binding */ DEFAULT_UI_OPTIONS),\\n/* harmony export */ \\\"DEFAULT_VERSION\\\": () => (/* binding */ DEFAULT_VERSION),\\n/* harmony export */ \\\"DEFAULT_VERTICAL_ALIGN\\\": () => (/* binding */ DEFAULT_VERTICAL_ALIGN),\\n/* harmony export */ \\\"DRAGGING_THRESHOLD\\\": () => (/* binding */ DRAGGING_THRESHOLD),\\n/* harmony export */ \\\"ELEMENT_READY_TO_ERASE_OPACITY\\\": () => (/* binding */ ELEMENT_READY_TO_ERASE_OPACITY),\\n/* harmony export */ \\\"ELEMENT_SHIFT_TRANSLATE_AMOUNT\\\": () => (/* binding */ ELEMENT_SHIFT_TRANSLATE_AMOUNT),\\n/* harmony export */ \\\"ELEMENT_TRANSLATE_AMOUNT\\\": () => (/* binding */ ELEMENT_TRANSLATE_AMOUNT),\\n/* harmony export */ \\\"ENCRYPTION_KEY_BITS\\\": () => (/* binding */ ENCRYPTION_KEY_BITS),\\n/* harmony export */ \\\"ENV\\\": () => (/* binding */ ENV),\\n/* harmony export */ \\\"EVENT\\\": () => (/* binding */ EVENT),\\n/* harmony export */ \\\"EXPORT_DATA_TYPES\\\": () => (/* binding */ EXPORT_DATA_TYPES),\\n/* harmony export */ \\\"EXPORT_SCALES\\\": () => (/* binding */ EXPORT_SCALES),\\n/* harmony export */ \\\"EXPORT_SOURCE\\\": () => (/* binding */ EXPORT_SOURCE),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* binding */ FONT_FAMILY),\\n/* harmony export */ \\\"GRID_SIZE\\\": () => (/* binding */ GRID_SIZE),\\n/* harmony export */ \\\"HYPERLINK_TOOLTIP_DELAY\\\": () => (/* binding */ HYPERLINK_TOOLTIP_DELAY),\\n/* harmony export */ \\\"IDLE_THRESHOLD\\\": () => (/* binding */ IDLE_THRESHOLD),\\n/* harmony export */ \\\"IMAGE_RENDER_TIMEOUT\\\": () => (/* binding */ IMAGE_RENDER_TIMEOUT),\\n/* harmony export */ \\\"LIBRARY_SIDEBAR_WIDTH\\\": () => (/* binding */ LIBRARY_SIDEBAR_WIDTH),\\n/* harmony export */ \\\"LINE_CONFIRM_THRESHOLD\\\": () => (/* binding */ LINE_CONFIRM_THRESHOLD),\\n/* harmony export */ \\\"MAX_ALLOWED_FILE_BYTES\\\": () => (/* binding */ MAX_ALLOWED_FILE_BYTES),\\n/* harmony export */ \\\"MAX_DECIMALS_FOR_SVG_EXPORT\\\": () => (/* binding */ MAX_DECIMALS_FOR_SVG_EXPORT),\\n/* harmony export */ \\\"MIME_TYPES\\\": () => (/* binding */ MIME_TYPES),\\n/* harmony export */ \\\"MODES\\\": () => (/* binding */ MODES),\\n/* harmony export */ \\\"MQ_MAX_HEIGHT_LANDSCAPE\\\": () => (/* binding */ MQ_MAX_HEIGHT_LANDSCAPE),\\n/* harmony export */ \\\"MQ_MAX_WIDTH_LANDSCAPE\\\": () => (/* binding */ MQ_MAX_WIDTH_LANDSCAPE),\\n/* harmony export */ \\\"MQ_MAX_WIDTH_PORTRAIT\\\": () => (/* binding */ MQ_MAX_WIDTH_PORTRAIT),\\n/* harmony export */ \\\"MQ_RIGHT_SIDEBAR_MIN_WIDTH\\\": () => (/* binding */ MQ_RIGHT_SIDEBAR_MIN_WIDTH),\\n/* harmony export */ \\\"MQ_SM_MAX_WIDTH\\\": () => (/* binding */ MQ_SM_MAX_WIDTH),\\n/* harmony export */ \\\"POINTER_BUTTON\\\": () => (/* binding */ POINTER_BUTTON),\\n/* harmony export */ \\\"SCROLL_TIMEOUT\\\": () => (/* binding */ SCROLL_TIMEOUT),\\n/* harmony export */ \\\"SHIFT_LOCKING_ANGLE\\\": () => (/* binding */ SHIFT_LOCKING_ANGLE),\\n/* harmony export */ \\\"SVG_NS\\\": () => (/* binding */ SVG_NS),\\n/* harmony export */ \\\"TAP_TWICE_TIMEOUT\\\": () => (/* binding */ TAP_TWICE_TIMEOUT),\\n/* harmony export */ \\\"TEXT_TO_CENTER_SNAP_THRESHOLD\\\": () => (/* binding */ TEXT_TO_CENTER_SNAP_THRESHOLD),\\n/* harmony export */ \\\"THEME\\\": () => (/* binding */ THEME),\\n/* harmony export */ \\\"THEME_FILTER\\\": () => (/* binding */ THEME_FILTER),\\n/* harmony export */ \\\"TITLE_TIMEOUT\\\": () => (/* binding */ TITLE_TIMEOUT),\\n/* harmony export */ \\\"TOUCH_CTX_MENU_TIMEOUT\\\": () => (/* binding */ TOUCH_CTX_MENU_TIMEOUT),\\n/* harmony export */ \\\"URL_HASH_KEYS\\\": () => (/* binding */ URL_HASH_KEYS),\\n/* harmony export */ \\\"URL_QUERY_KEYS\\\": () => (/* binding */ URL_QUERY_KEYS),\\n/* harmony export */ \\\"VERSIONS\\\": () => (/* binding */ VERSIONS),\\n/* harmony export */ \\\"VERSION_TIMEOUT\\\": () => (/* binding */ VERSION_TIMEOUT),\\n/* harmony export */ \\\"VERTICAL_ALIGN\\\": () => (/* binding */ VERTICAL_ALIGN),\\n/* harmony export */ \\\"WINDOWS_EMOJI_FALLBACK_FONT\\\": () => (/* binding */ WINDOWS_EMOJI_FALLBACK_FONT),\\n/* harmony export */ \\\"ZOOM_STEP\\\": () => (/* binding */ ZOOM_STEP)\\n/* harmony export */ });\\n/* harmony import */ var _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/variables.module.scss */ \\\"../../css/variables.module.scss\\\");\\n/* harmony import */ var _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__);\\n\\r\\nconst APP_NAME = \\\"Excalidraw\\\";\\r\\nconst DRAGGING_THRESHOLD = 10; // px\\r\\nconst LINE_CONFIRM_THRESHOLD = 8; // px\\r\\nconst ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;\\r\\nconst ELEMENT_TRANSLATE_AMOUNT = 1;\\r\\nconst TEXT_TO_CENTER_SNAP_THRESHOLD = 30;\\r\\nconst SHIFT_LOCKING_ANGLE = Math.PI / 12;\\r\\nconst CURSOR_TYPE = {\\r\\n TEXT: \\\"text\\\",\\r\\n CROSSHAIR: \\\"crosshair\\\",\\r\\n GRABBING: \\\"grabbing\\\",\\r\\n GRAB: \\\"grab\\\",\\r\\n POINTER: \\\"pointer\\\",\\r\\n MOVE: \\\"move\\\",\\r\\n AUTO: \\\"\\\"\\r\\n};\\r\\nconst POINTER_BUTTON = {\\r\\n MAIN: 0,\\r\\n WHEEL: 1,\\r\\n SECONDARY: 2,\\r\\n TOUCH: -1\\r\\n};\\r\\nlet EVENT;\\r\\n(function (EVENT) {\\r\\n EVENT[\\\"COPY\\\"] = \\\"copy\\\";\\r\\n EVENT[\\\"PASTE\\\"] = \\\"paste\\\";\\r\\n EVENT[\\\"CUT\\\"] = \\\"cut\\\";\\r\\n EVENT[\\\"KEYDOWN\\\"] = \\\"keydown\\\";\\r\\n EVENT[\\\"KEYUP\\\"] = \\\"keyup\\\";\\r\\n EVENT[\\\"MOUSE_MOVE\\\"] = \\\"mousemove\\\";\\r\\n EVENT[\\\"RESIZE\\\"] = \\\"resize\\\";\\r\\n EVENT[\\\"UNLOAD\\\"] = \\\"unload\\\";\\r\\n EVENT[\\\"FOCUS\\\"] = \\\"focus\\\";\\r\\n EVENT[\\\"BLUR\\\"] = \\\"blur\\\";\\r\\n EVENT[\\\"DRAG_OVER\\\"] = \\\"dragover\\\";\\r\\n EVENT[\\\"DROP\\\"] = \\\"drop\\\";\\r\\n EVENT[\\\"GESTURE_END\\\"] = \\\"gestureend\\\";\\r\\n EVENT[\\\"BEFORE_UNLOAD\\\"] = \\\"beforeunload\\\";\\r\\n EVENT[\\\"GESTURE_START\\\"] = \\\"gesturestart\\\";\\r\\n EVENT[\\\"GESTURE_CHANGE\\\"] = \\\"gesturechange\\\";\\r\\n EVENT[\\\"POINTER_MOVE\\\"] = \\\"pointermove\\\";\\r\\n EVENT[\\\"POINTER_UP\\\"] = \\\"pointerup\\\";\\r\\n EVENT[\\\"STATE_CHANGE\\\"] = \\\"statechange\\\";\\r\\n EVENT[\\\"WHEEL\\\"] = \\\"wheel\\\";\\r\\n EVENT[\\\"TOUCH_START\\\"] = \\\"touchstart\\\";\\r\\n EVENT[\\\"TOUCH_END\\\"] = \\\"touchend\\\";\\r\\n EVENT[\\\"HASHCHANGE\\\"] = \\\"hashchange\\\";\\r\\n EVENT[\\\"VISIBILITY_CHANGE\\\"] = \\\"visibilitychange\\\";\\r\\n EVENT[\\\"SCROLL\\\"] = \\\"scroll\\\";\\r\\n EVENT[\\\"EXCALIDRAW_LINK\\\"] = \\\"excalidraw-link\\\";\\r\\n})(EVENT || (EVENT = {}));\\r\\nconst ENV = {\\r\\n TEST: \\\"test\\\",\\r\\n DEVELOPMENT: \\\"development\\\"\\r\\n};\\r\\nconst CLASSES = {\\r\\n SHAPE_ACTIONS_MENU: \\\"App-menu__left\\\",\\r\\n SHAPE_ACTIONS_MOBILE_MENU: \\\"App-mobile-menu\\\",\\r\\n //zsviczian\\r\\n MOBILE_TOOLBAR: \\\"App-toolbar-content\\\" //zsviczian\\r\\n}; // 1-based in case we ever do `if(element.fontFamily)`\\r\\nconst FONT_FAMILY = {\\r\\n Virgil: 1,\\r\\n Helvetica: 2,\\r\\n Cascadia: 3,\\r\\n LocalFont: 4\\r\\n};\\r\\nconst THEME = {\\r\\n LIGHT: \\\"light\\\",\\r\\n DARK: \\\"dark\\\"\\r\\n};\\r\\nconst WINDOWS_EMOJI_FALLBACK_FONT = \\\"Segoe UI Emoji\\\";\\r\\nconst DEFAULT_FONT_SIZE = 20;\\r\\nconst DEFAULT_FONT_FAMILY = FONT_FAMILY.Virgil;\\r\\nconst DEFAULT_TEXT_ALIGN = \\\"left\\\";\\r\\nconst DEFAULT_VERTICAL_ALIGN = \\\"top\\\";\\r\\nconst DEFAULT_VERSION = \\\"{version}\\\";\\r\\nconst CANVAS_ONLY_ACTIONS = [\\\"selectAll\\\"];\\r\\nconst GRID_SIZE = 20; // TODO make it configurable?\\r\\nconst MIME_TYPES = {\\r\\n excalidraw: \\\"application/vnd.excalidraw+json\\\",\\r\\n excalidrawlib: \\\"application/vnd.excalidrawlib+json\\\",\\r\\n json: \\\"application/json\\\",\\r\\n svg: \\\"image/svg+xml\\\",\\r\\n \\\"excalidraw.svg\\\": \\\"image/svg+xml\\\",\\r\\n png: \\\"image/png\\\",\\r\\n \\\"excalidraw.png\\\": \\\"image/png\\\",\\r\\n jpg: \\\"image/jpeg\\\",\\r\\n gif: \\\"image/gif\\\",\\r\\n binary: \\\"application/octet-stream\\\"\\r\\n};\\r\\nconst EXPORT_DATA_TYPES = {\\r\\n excalidraw: \\\"excalidraw\\\",\\r\\n excalidrawClipboard: \\\"excalidraw/clipboard\\\",\\r\\n excalidrawLibrary: \\\"excalidrawlib\\\"\\r\\n};\\r\\nconst EXPORT_SOURCE = window.EXCALIDRAW_EXPORT_SOURCE || window.location.origin; // time in milliseconds\\r\\nconst IMAGE_RENDER_TIMEOUT = 500;\\r\\nconst TAP_TWICE_TIMEOUT = 300;\\r\\nconst TOUCH_CTX_MENU_TIMEOUT = 500;\\r\\nconst TITLE_TIMEOUT = 10000;\\r\\nconst VERSION_TIMEOUT = 30000;\\r\\nconst SCROLL_TIMEOUT = 100;\\r\\nconst ZOOM_STEP = 0.1;\\r\\nconst HYPERLINK_TOOLTIP_DELAY = 300; // Report a user inactive after IDLE_THRESHOLD milliseconds\\r\\nconst IDLE_THRESHOLD = 60000; // Report a user active each ACTIVE_THRESHOLD milliseconds\\r\\nconst ACTIVE_THRESHOLD = 3000;\\r\\nconst MODES = {\\r\\n VIEW: \\\"viewMode\\\",\\r\\n ZEN: \\\"zenMode\\\",\\r\\n GRID: \\\"gridMode\\\"\\r\\n};\\r\\nconst THEME_FILTER = (_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0___default().themeFilter);\\r\\nconst URL_QUERY_KEYS = {\\r\\n addLibrary: \\\"addLibrary\\\"\\r\\n};\\r\\nconst URL_HASH_KEYS = {\\r\\n addLibrary: \\\"addLibrary\\\"\\r\\n};\\r\\nconst DEFAULT_UI_OPTIONS = {\\r\\n canvasActions: {\\r\\n changeViewBackgroundColor: true,\\r\\n clearCanvas: true,\\r\\n export: {\\r\\n saveFileToDisk: true\\r\\n },\\r\\n loadScene: true,\\r\\n saveToActiveFile: true,\\r\\n theme: true,\\r\\n saveAsImage: true\\r\\n }\\r\\n}; // breakpoints\\r\\n// -----------------------------------------------------------------------------\\r\\n// sm screen\\r\\nconst MQ_SM_MAX_WIDTH = 640; // md screen\\r\\nconst MQ_MAX_WIDTH_PORTRAIT = 730;\\r\\nconst MQ_MAX_WIDTH_LANDSCAPE = 1000;\\r\\nconst MQ_MAX_HEIGHT_LANDSCAPE = 500; // sidebar\\r\\nconst MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229; // -----------------------------------------------------------------------------\\r\\nconst LIBRARY_SIDEBAR_WIDTH = parseInt((_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0___default().rightSidebarWidth));\\r\\nconst MAX_DECIMALS_FOR_SVG_EXPORT = 2;\\r\\nconst EXPORT_SCALES = [1, 2, 3];\\r\\nconst DEFAULT_EXPORT_PADDING = 10; // px\\r\\nconst DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT = 1440;\\r\\nconst ALLOWED_IMAGE_MIME_TYPES = [MIME_TYPES.png, MIME_TYPES.jpg, MIME_TYPES.svg, MIME_TYPES.gif];\\r\\nconst MAX_ALLOWED_FILE_BYTES = 20 * 1024 * 1024; //zsviczian\\r\\nconst SVG_NS = \\\"http://www.w3.org/2000/svg\\\";\\r\\nconst ENCRYPTION_KEY_BITS = 128;\\r\\nconst VERSIONS = {\\r\\n excalidraw: 2,\\r\\n excalidrawLibrary: 2\\r\\n};\\r\\nconst BOUND_TEXT_PADDING = 5;\\r\\nconst VERTICAL_ALIGN = {\\r\\n TOP: \\\"top\\\",\\r\\n MIDDLE: \\\"middle\\\",\\r\\n BOTTOM: \\\"bottom\\\"\\r\\n};\\r\\nconst ELEMENT_READY_TO_ERASE_OPACITY = 20;\\r\\nconst COOKIES = {\\r\\n AUTH_STATE_COOKIE: \\\"excplus-auth\\\"\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29uc3RhbnRzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdUQ7QUFDaEQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBQzlCLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSztBQUVwQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFFdkMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFDekMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLFdBQVcsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTTtJQUNaLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsRUFBRTtDQUNULENBQUM7QUFDSyxNQUFNLGNBQWMsR0FBRztJQUM1QixJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsU0FBUyxFQUFFLENBQUM7SUFDWixLQUFLLEVBQUUsQ0FBQyxDQUFDO0NBQ1YsQ0FBQztBQUNLLElBQUksS0FBSyxDQUFDO0FBRWpCLENBQUMsVUFBVSxLQUFLO0lBQ2QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDckIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxXQUFXLENBQUM7SUFDbEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUMzQixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN2QixLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdkIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUNwQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsY0FBYyxDQUFDO0lBQ3hDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsZUFBZSxDQUFDO0lBQzFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxhQUFhLENBQUM7SUFDdEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNsQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDekIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUNwQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxZQUFZLENBQUM7SUFDbkMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsa0JBQWtCLENBQUM7SUFDaEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUMzQixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVuQixNQUFNLEdBQUcsR0FBRztJQUNqQixJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxhQUFhO0NBQzNCLENBQUM7QUFDSyxNQUFNLE9BQU8sR0FBRztJQUNyQixrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMseUJBQXlCLEVBQUUsaUJBQWlCO0lBQzVDLFdBQVc7SUFDWCxjQUFjLEVBQUUscUJBQXFCLENBQUMsV0FBVztDQUVsRCxDQUFDLENBQUMsc0RBQXNEO0FBRWxELE1BQU0sV0FBVyxHQUFHO0lBQ3pCLE1BQU0sRUFBRSxDQUFDO0lBQ1QsU0FBUyxFQUFFLENBQUM7SUFDWixRQUFRLEVBQUUsQ0FBQztJQUNYLFNBQVMsRUFBRSxDQUFDO0NBQ2IsQ0FBQztBQUNLLE1BQU0sS0FBSyxHQUFHO0lBQ25CLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07Q0FDYixDQUFDO0FBQ0ssTUFBTSwyQkFBMkIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNyRCxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFDbEMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7QUFDckMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDO0FBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7QUFFbkQsTUFBTSxVQUFVLEdBQUc7SUFDeEIsVUFBVSxFQUFFLGlDQUFpQztJQUM3QyxhQUFhLEVBQUUsb0NBQW9DO0lBQ25ELElBQUksRUFBRSxrQkFBa0I7SUFDeEIsR0FBRyxFQUFFLGVBQWU7SUFDcEIsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxHQUFHLEVBQUUsV0FBVztJQUNoQixnQkFBZ0IsRUFBRSxXQUFXO0lBQzdCLEdBQUcsRUFBRSxZQUFZO0lBQ2pCLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLE1BQU0sRUFBRSwwQkFBMEI7Q0FDbkMsQ0FBQztBQUNLLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsbUJBQW1CLEVBQUUsc0JBQXNCO0lBQzNDLGlCQUFpQixFQUFFLGVBQWU7Q0FDbkMsQ0FBQztBQUNLLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLHVCQUF1QjtBQUV4RyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUM5QixNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDNUIsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUMzQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFDdEIsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUMsQ0FBQywyREFBMkQ7QUFFaEcsTUFBTSxjQUFjLEdBQUcsS0FBTSxDQUFDLENBQUMsMERBQTBEO0FBRXpGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSyxDQUFDO0FBQy9CLE1BQU0sS0FBSyxHQUFHO0lBQ25CLElBQUksRUFBRSxVQUFVO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFVBQVU7Q0FDakIsQ0FBQztBQUNLLE1BQU0sWUFBWSxHQUFHLCtFQUF3QixDQUFDO0FBQzlDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLFVBQVUsRUFBRSxZQUFZO0NBQ3pCLENBQUM7QUFDSyxNQUFNLGFBQWEsR0FBRztJQUMzQixVQUFVLEVBQUUsWUFBWTtDQUN6QixDQUFDO0FBQ0ssTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxhQUFhLEVBQUU7UUFDYix5QkFBeUIsRUFBRSxJQUFJO1FBQy9CLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLGNBQWMsRUFBRSxJQUFJO1NBQ3JCO1FBQ0QsU0FBUyxFQUFFLElBQUk7UUFDZixnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLEtBQUssRUFBRSxJQUFJO1FBQ1gsV0FBVyxFQUFFLElBQUk7S0FDbEI7Q0FDRixDQUFDLENBQUMsY0FBYztBQUNqQixnRkFBZ0Y7QUFDaEYsWUFBWTtBQUVMLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFlBQVk7QUFFekMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDbEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDcEMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxVQUFVO0FBRS9DLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLENBQUMsZ0ZBQWdGO0FBRXpILE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDLHFGQUE4QixDQUFDLENBQUM7QUFDdkUsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSztBQUV4QyxNQUFNLGlDQUFpQyxHQUFHLElBQUksQ0FBQztBQUMvQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xHLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxXQUFXO0FBRTVELE1BQU0sTUFBTSxHQUFHLDRCQUE0QixDQUFDO0FBQzVDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sUUFBUSxHQUFHO0lBQ3RCLFVBQVUsRUFBRSxDQUFDO0lBQ2IsaUJBQWlCLEVBQUUsQ0FBQztDQUNyQixDQUFDO0FBQ0ssTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFDN0IsTUFBTSxjQUFjLEdBQUc7SUFDNUIsR0FBRyxFQUFFLEtBQUs7SUFDVixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBQ0ssTUFBTSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDMUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsaUJBQWlCLEVBQUUsY0FBYztDQUNsQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbnN0YW50cy50cz8yMGRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjc3NWYXJpYWJsZXMgZnJvbSBcIi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiO1xuZXhwb3J0IGNvbnN0IEFQUF9OQU1FID0gXCJFeGNhbGlkcmF3XCI7XG5leHBvcnQgY29uc3QgRFJBR0dJTkdfVEhSRVNIT0xEID0gMTA7IC8vIHB4XG5cbmV4cG9ydCBjb25zdCBMSU5FX0NPTkZJUk1fVEhSRVNIT0xEID0gODsgLy8gcHhcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfU0hJRlRfVFJBTlNMQVRFX0FNT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgRUxFTUVOVF9UUkFOU0xBVEVfQU1PVU5UID0gMTtcbmV4cG9ydCBjb25zdCBURVhUX1RPX0NFTlRFUl9TTkFQX1RIUkVTSE9MRCA9IDMwO1xuZXhwb3J0IGNvbnN0IFNISUZUX0xPQ0tJTkdfQU5HTEUgPSBNYXRoLlBJIC8gMTI7XG5leHBvcnQgY29uc3QgQ1VSU09SX1RZUEUgPSB7XG4gIFRFWFQ6IFwidGV4dFwiLFxuICBDUk9TU0hBSVI6IFwiY3Jvc3NoYWlyXCIsXG4gIEdSQUJCSU5HOiBcImdyYWJiaW5nXCIsXG4gIEdSQUI6IFwiZ3JhYlwiLFxuICBQT0lOVEVSOiBcInBvaW50ZXJcIixcbiAgTU9WRTogXCJtb3ZlXCIsXG4gIEFVVE86IFwiXCJcbn07XG5leHBvcnQgY29uc3QgUE9JTlRFUl9CVVRUT04gPSB7XG4gIE1BSU46IDAsXG4gIFdIRUVMOiAxLFxuICBTRUNPTkRBUlk6IDIsXG4gIFRPVUNIOiAtMVxufTtcbmV4cG9ydCBsZXQgRVZFTlQ7XG5cbihmdW5jdGlvbiAoRVZFTlQpIHtcbiAgRVZFTlRbXCJDT1BZXCJdID0gXCJjb3B5XCI7XG4gIEVWRU5UW1wiUEFTVEVcIl0gPSBcInBhc3RlXCI7XG4gIEVWRU5UW1wiQ1VUXCJdID0gXCJjdXRcIjtcbiAgRVZFTlRbXCJLRVlET1dOXCJdID0gXCJrZXlkb3duXCI7XG4gIEVWRU5UW1wiS0VZVVBcIl0gPSBcImtleXVwXCI7XG4gIEVWRU5UW1wiTU9VU0VfTU9WRVwiXSA9IFwibW91c2Vtb3ZlXCI7XG4gIEVWRU5UW1wiUkVTSVpFXCJdID0gXCJyZXNpemVcIjtcbiAgRVZFTlRbXCJVTkxPQURcIl0gPSBcInVubG9hZFwiO1xuICBFVkVOVFtcIkZPQ1VTXCJdID0gXCJmb2N1c1wiO1xuICBFVkVOVFtcIkJMVVJcIl0gPSBcImJsdXJcIjtcbiAgRVZFTlRbXCJEUkFHX09WRVJcIl0gPSBcImRyYWdvdmVyXCI7XG4gIEVWRU5UW1wiRFJPUFwiXSA9IFwiZHJvcFwiO1xuICBFVkVOVFtcIkdFU1RVUkVfRU5EXCJdID0gXCJnZXN0dXJlZW5kXCI7XG4gIEVWRU5UW1wiQkVGT1JFX1VOTE9BRFwiXSA9IFwiYmVmb3JldW5sb2FkXCI7XG4gIEVWRU5UW1wiR0VTVFVSRV9TVEFSVFwiXSA9IFwiZ2VzdHVyZXN0YXJ0XCI7XG4gIEVWRU5UW1wiR0VTVFVSRV9DSEFOR0VcIl0gPSBcImdlc3R1cmVjaGFuZ2VcIjtcbiAgRVZFTlRbXCJQT0lOVEVSX01PVkVcIl0gPSBcInBvaW50ZXJtb3ZlXCI7XG4gIEVWRU5UW1wiUE9JTlRFUl9VUFwiXSA9IFwicG9pbnRlcnVwXCI7XG4gIEVWRU5UW1wiU1RBVEVfQ0hBTkdFXCJdID0gXCJzdGF0ZWNoYW5nZVwiO1xuICBFVkVOVFtcIldIRUVMXCJdID0gXCJ3aGVlbFwiO1xuICBFVkVOVFtcIlRPVUNIX1NUQVJUXCJdID0gXCJ0b3VjaHN0YXJ0XCI7XG4gIEVWRU5UW1wiVE9VQ0hfRU5EXCJdID0gXCJ0b3VjaGVuZFwiO1xuICBFVkVOVFtcIkhBU0hDSEFOR0VcIl0gPSBcImhhc2hjaGFuZ2VcIjtcbiAgRVZFTlRbXCJWSVNJQklMSVRZX0NIQU5HRVwiXSA9IFwidmlzaWJpbGl0eWNoYW5nZVwiO1xuICBFVkVOVFtcIlNDUk9MTFwiXSA9IFwic2Nyb2xsXCI7XG4gIEVWRU5UW1wiRVhDQUxJRFJBV19MSU5LXCJdID0gXCJleGNhbGlkcmF3LWxpbmtcIjtcbn0pKEVWRU5UIHx8IChFVkVOVCA9IHt9KSk7XG5cbmV4cG9ydCBjb25zdCBFTlYgPSB7XG4gIFRFU1Q6IFwidGVzdFwiLFxuICBERVZFTE9QTUVOVDogXCJkZXZlbG9wbWVudFwiXG59O1xuZXhwb3J0IGNvbnN0IENMQVNTRVMgPSB7XG4gIFNIQVBFX0FDVElPTlNfTUVOVTogXCJBcHAtbWVudV9fbGVmdFwiLFxuICBTSEFQRV9BQ1RJT05TX01PQklMRV9NRU5VOiBcIkFwcC1tb2JpbGUtbWVudVwiLFxuICAvL3pzdmljemlhblxuICBNT0JJTEVfVE9PTEJBUjogXCJBcHAtdG9vbGJhci1jb250ZW50XCIgLy96c3ZpY3ppYW5cblxufTsgLy8gMS1iYXNlZCBpbiBjYXNlIHdlIGV2ZXIgZG8gYGlmKGVsZW1lbnQuZm9udEZhbWlseSlgXG5cbmV4cG9ydCBjb25zdCBGT05UX0ZBTUlMWSA9IHtcbiAgVmlyZ2lsOiAxLFxuICBIZWx2ZXRpY2E6IDIsXG4gIENhc2NhZGlhOiAzLFxuICBMb2NhbEZvbnQ6IDRcbn07XG5leHBvcnQgY29uc3QgVEhFTUUgPSB7XG4gIExJR0hUOiBcImxpZ2h0XCIsXG4gIERBUks6IFwiZGFya1wiXG59O1xuZXhwb3J0IGNvbnN0IFdJTkRPV1NfRU1PSklfRkFMTEJBQ0tfRk9OVCA9IFwiU2Vnb2UgVUkgRW1vamlcIjtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfU0laRSA9IDIwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9GQU1JTFkgPSBGT05UX0ZBTUlMWS5WaXJnaWw7XG5leHBvcnQgY29uc3QgREVGQVVMVF9URVhUX0FMSUdOID0gXCJsZWZ0XCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9WRVJUSUNBTF9BTElHTiA9IFwidG9wXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9WRVJTSU9OID0gXCJ7dmVyc2lvbn1cIjtcbmV4cG9ydCBjb25zdCBDQU5WQVNfT05MWV9BQ1RJT05TID0gW1wic2VsZWN0QWxsXCJdO1xuZXhwb3J0IGNvbnN0IEdSSURfU0laRSA9IDIwOyAvLyBUT0RPIG1ha2UgaXQgY29uZmlndXJhYmxlP1xuXG5leHBvcnQgY29uc3QgTUlNRV9UWVBFUyA9IHtcbiAgZXhjYWxpZHJhdzogXCJhcHBsaWNhdGlvbi92bmQuZXhjYWxpZHJhdytqc29uXCIsXG4gIGV4Y2FsaWRyYXdsaWI6IFwiYXBwbGljYXRpb24vdm5kLmV4Y2FsaWRyYXdsaWIranNvblwiLFxuICBqc29uOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgc3ZnOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgXCJleGNhbGlkcmF3LnN2Z1wiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgcG5nOiBcImltYWdlL3BuZ1wiLFxuICBcImV4Y2FsaWRyYXcucG5nXCI6IFwiaW1hZ2UvcG5nXCIsXG4gIGpwZzogXCJpbWFnZS9qcGVnXCIsXG4gIGdpZjogXCJpbWFnZS9naWZcIixcbiAgYmluYXJ5OiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG59O1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEVTID0ge1xuICBleGNhbGlkcmF3OiBcImV4Y2FsaWRyYXdcIixcbiAgZXhjYWxpZHJhd0NsaXBib2FyZDogXCJleGNhbGlkcmF3L2NsaXBib2FyZFwiLFxuICBleGNhbGlkcmF3TGlicmFyeTogXCJleGNhbGlkcmF3bGliXCJcbn07XG5leHBvcnQgY29uc3QgRVhQT1JUX1NPVVJDRSA9IHdpbmRvdy5FWENBTElEUkFXX0VYUE9SVF9TT1VSQ0UgfHwgd2luZG93LmxvY2F0aW9uLm9yaWdpbjsgLy8gdGltZSBpbiBtaWxsaXNlY29uZHNcblxuZXhwb3J0IGNvbnN0IElNQUdFX1JFTkRFUl9USU1FT1VUID0gNTAwO1xuZXhwb3J0IGNvbnN0IFRBUF9UV0lDRV9USU1FT1VUID0gMzAwO1xuZXhwb3J0IGNvbnN0IFRPVUNIX0NUWF9NRU5VX1RJTUVPVVQgPSA1MDA7XG5leHBvcnQgY29uc3QgVElUTEVfVElNRU9VVCA9IDEwMDAwO1xuZXhwb3J0IGNvbnN0IFZFUlNJT05fVElNRU9VVCA9IDMwMDAwO1xuZXhwb3J0IGNvbnN0IFNDUk9MTF9USU1FT1VUID0gMTAwO1xuZXhwb3J0IGNvbnN0IFpPT01fU1RFUCA9IDAuMTtcbmV4cG9ydCBjb25zdCBIWVBFUkxJTktfVE9PTFRJUF9ERUxBWSA9IDMwMDsgLy8gUmVwb3J0IGEgdXNlciBpbmFjdGl2ZSBhZnRlciBJRExFX1RIUkVTSE9MRCBtaWxsaXNlY29uZHNcblxuZXhwb3J0IGNvbnN0IElETEVfVEhSRVNIT0xEID0gNjBfMDAwOyAvLyBSZXBvcnQgYSB1c2VyIGFjdGl2ZSBlYWNoIEFDVElWRV9USFJFU0hPTEQgbWlsbGlzZWNvbmRzXG5cbmV4cG9ydCBjb25zdCBBQ1RJVkVfVEhSRVNIT0xEID0gM18wMDA7XG5leHBvcnQgY29uc3QgTU9ERVMgPSB7XG4gIFZJRVc6IFwidmlld01vZGVcIixcbiAgWkVOOiBcInplbk1vZGVcIixcbiAgR1JJRDogXCJncmlkTW9kZVwiXG59O1xuZXhwb3J0IGNvbnN0IFRIRU1FX0ZJTFRFUiA9IGNzc1ZhcmlhYmxlcy50aGVtZUZpbHRlcjtcbmV4cG9ydCBjb25zdCBVUkxfUVVFUllfS0VZUyA9IHtcbiAgYWRkTGlicmFyeTogXCJhZGRMaWJyYXJ5XCJcbn07XG5leHBvcnQgY29uc3QgVVJMX0hBU0hfS0VZUyA9IHtcbiAgYWRkTGlicmFyeTogXCJhZGRMaWJyYXJ5XCJcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9VSV9PUFRJT05TID0ge1xuICBjYW52YXNBY3Rpb25zOiB7XG4gICAgY2hhbmdlVmlld0JhY2tncm91bmRDb2xvcjogdHJ1ZSxcbiAgICBjbGVhckNhbnZhczogdHJ1ZSxcbiAgICBleHBvcnQ6IHtcbiAgICAgIHNhdmVGaWxlVG9EaXNrOiB0cnVlXG4gICAgfSxcbiAgICBsb2FkU2NlbmU6IHRydWUsXG4gICAgc2F2ZVRvQWN0aXZlRmlsZTogdHJ1ZSxcbiAgICB0aGVtZTogdHJ1ZSxcbiAgICBzYXZlQXNJbWFnZTogdHJ1ZVxuICB9XG59OyAvLyBicmVha3BvaW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHNtIHNjcmVlblxuXG5leHBvcnQgY29uc3QgTVFfU01fTUFYX1dJRFRIID0gNjQwOyAvLyBtZCBzY3JlZW5cblxuZXhwb3J0IGNvbnN0IE1RX01BWF9XSURUSF9QT1JUUkFJVCA9IDczMDtcbmV4cG9ydCBjb25zdCBNUV9NQVhfV0lEVEhfTEFORFNDQVBFID0gMTAwMDtcbmV4cG9ydCBjb25zdCBNUV9NQVhfSEVJR0hUX0xBTkRTQ0FQRSA9IDUwMDsgLy8gc2lkZWJhclxuXG5leHBvcnQgY29uc3QgTVFfUklHSFRfU0lERUJBUl9NSU5fV0lEVEggPSAxMjI5OyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgTElCUkFSWV9TSURFQkFSX1dJRFRIID0gcGFyc2VJbnQoY3NzVmFyaWFibGVzLnJpZ2h0U2lkZWJhcldpZHRoKTtcbmV4cG9ydCBjb25zdCBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQgPSAyO1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9TQ0FMRVMgPSBbMSwgMiwgM107XG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfUEFERElORyA9IDEwOyAvLyBweFxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVhfSU1BR0VfV0lEVEhfT1JfSEVJR0hUID0gMTQ0MDtcbmV4cG9ydCBjb25zdCBBTExPV0VEX0lNQUdFX01JTUVfVFlQRVMgPSBbTUlNRV9UWVBFUy5wbmcsIE1JTUVfVFlQRVMuanBnLCBNSU1FX1RZUEVTLnN2ZywgTUlNRV9UWVBFUy5naWZdO1xuZXhwb3J0IGNvbnN0IE1BWF9BTExPV0VEX0ZJTEVfQllURVMgPSAyMCAqIDEwMjQgKiAxMDI0OyAvL3pzdmljemlhblxuXG5leHBvcnQgY29uc3QgU1ZHX05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuZXhwb3J0IGNvbnN0IEVOQ1JZUFRJT05fS0VZX0JJVFMgPSAxMjg7XG5leHBvcnQgY29uc3QgVkVSU0lPTlMgPSB7XG4gIGV4Y2FsaWRyYXc6IDIsXG4gIGV4Y2FsaWRyYXdMaWJyYXJ5OiAyXG59O1xuZXhwb3J0IGNvbnN0IEJPVU5EX1RFWFRfUEFERElORyA9IDU7XG5leHBvcnQgY29uc3QgVkVSVElDQUxfQUxJR04gPSB7XG4gIFRPUDogXCJ0b3BcIixcbiAgTUlERExFOiBcIm1pZGRsZVwiLFxuICBCT1RUT006IFwiYm90dG9tXCJcbn07XG5leHBvcnQgY29uc3QgRUxFTUVOVF9SRUFEWV9UT19FUkFTRV9PUEFDSVRZID0gMjA7XG5leHBvcnQgY29uc3QgQ09PS0lFUyA9IHtcbiAgQVVUSF9TVEFURV9DT09LSUU6IFwiZXhjcGx1cy1hdXRoXCJcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../constants.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../constants.ts?");
2491
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"ACTIVE_THRESHOLD\\\": () => (/* binding */ ACTIVE_THRESHOLD),\\n/* harmony export */ \\\"ALLOWED_IMAGE_MIME_TYPES\\\": () => (/* binding */ ALLOWED_IMAGE_MIME_TYPES),\\n/* harmony export */ \\\"APP_NAME\\\": () => (/* binding */ APP_NAME),\\n/* harmony export */ \\\"BOUND_TEXT_PADDING\\\": () => (/* binding */ BOUND_TEXT_PADDING),\\n/* harmony export */ \\\"CANVAS_ONLY_ACTIONS\\\": () => (/* binding */ CANVAS_ONLY_ACTIONS),\\n/* harmony export */ \\\"CLASSES\\\": () => (/* binding */ CLASSES),\\n/* harmony export */ \\\"COOKIES\\\": () => (/* binding */ COOKIES),\\n/* harmony export */ \\\"CURSOR_TYPE\\\": () => (/* binding */ CURSOR_TYPE),\\n/* harmony export */ \\\"DEFAULT_EXPORT_PADDING\\\": () => (/* binding */ DEFAULT_EXPORT_PADDING),\\n/* harmony export */ \\\"DEFAULT_FONT_FAMILY\\\": () => (/* binding */ DEFAULT_FONT_FAMILY),\\n/* harmony export */ \\\"DEFAULT_FONT_SIZE\\\": () => (/* binding */ DEFAULT_FONT_SIZE),\\n/* harmony export */ \\\"DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT\\\": () => (/* binding */ DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT),\\n/* harmony export */ \\\"DEFAULT_TEXT_ALIGN\\\": () => (/* binding */ DEFAULT_TEXT_ALIGN),\\n/* harmony export */ \\\"DEFAULT_UI_OPTIONS\\\": () => (/* binding */ DEFAULT_UI_OPTIONS),\\n/* harmony export */ \\\"DEFAULT_VERSION\\\": () => (/* binding */ DEFAULT_VERSION),\\n/* harmony export */ \\\"DEFAULT_VERTICAL_ALIGN\\\": () => (/* binding */ DEFAULT_VERTICAL_ALIGN),\\n/* harmony export */ \\\"DRAGGING_THRESHOLD\\\": () => (/* binding */ DRAGGING_THRESHOLD),\\n/* harmony export */ \\\"ELEMENT_READY_TO_ERASE_OPACITY\\\": () => (/* binding */ ELEMENT_READY_TO_ERASE_OPACITY),\\n/* harmony export */ \\\"ELEMENT_SHIFT_TRANSLATE_AMOUNT\\\": () => (/* binding */ ELEMENT_SHIFT_TRANSLATE_AMOUNT),\\n/* harmony export */ \\\"ELEMENT_TRANSLATE_AMOUNT\\\": () => (/* binding */ ELEMENT_TRANSLATE_AMOUNT),\\n/* harmony export */ \\\"ENCRYPTION_KEY_BITS\\\": () => (/* binding */ ENCRYPTION_KEY_BITS),\\n/* harmony export */ \\\"ENV\\\": () => (/* binding */ ENV),\\n/* harmony export */ \\\"EVENT\\\": () => (/* binding */ EVENT),\\n/* harmony export */ \\\"EXPORT_DATA_TYPES\\\": () => (/* binding */ EXPORT_DATA_TYPES),\\n/* harmony export */ \\\"EXPORT_SCALES\\\": () => (/* binding */ EXPORT_SCALES),\\n/* harmony export */ \\\"EXPORT_SOURCE\\\": () => (/* binding */ EXPORT_SOURCE),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* binding */ FONT_FAMILY),\\n/* harmony export */ \\\"GRID_SIZE\\\": () => (/* binding */ GRID_SIZE),\\n/* harmony export */ \\\"HYPERLINK_TOOLTIP_DELAY\\\": () => (/* binding */ HYPERLINK_TOOLTIP_DELAY),\\n/* harmony export */ \\\"IDLE_THRESHOLD\\\": () => (/* binding */ IDLE_THRESHOLD),\\n/* harmony export */ \\\"IMAGE_RENDER_TIMEOUT\\\": () => (/* binding */ IMAGE_RENDER_TIMEOUT),\\n/* harmony export */ \\\"LIBRARY_SIDEBAR_WIDTH\\\": () => (/* binding */ LIBRARY_SIDEBAR_WIDTH),\\n/* harmony export */ \\\"LINE_CONFIRM_THRESHOLD\\\": () => (/* binding */ LINE_CONFIRM_THRESHOLD),\\n/* harmony export */ \\\"MAX_ALLOWED_FILE_BYTES\\\": () => (/* binding */ MAX_ALLOWED_FILE_BYTES),\\n/* harmony export */ \\\"MAX_DECIMALS_FOR_SVG_EXPORT\\\": () => (/* binding */ MAX_DECIMALS_FOR_SVG_EXPORT),\\n/* harmony export */ \\\"MIME_TYPES\\\": () => (/* binding */ MIME_TYPES),\\n/* harmony export */ \\\"MODES\\\": () => (/* binding */ MODES),\\n/* harmony export */ \\\"MQ_MAX_HEIGHT_LANDSCAPE\\\": () => (/* binding */ MQ_MAX_HEIGHT_LANDSCAPE),\\n/* harmony export */ \\\"MQ_MAX_WIDTH_LANDSCAPE\\\": () => (/* binding */ MQ_MAX_WIDTH_LANDSCAPE),\\n/* harmony export */ \\\"MQ_MAX_WIDTH_PORTRAIT\\\": () => (/* binding */ MQ_MAX_WIDTH_PORTRAIT),\\n/* harmony export */ \\\"MQ_RIGHT_SIDEBAR_MIN_WIDTH\\\": () => (/* binding */ MQ_RIGHT_SIDEBAR_MIN_WIDTH),\\n/* harmony export */ \\\"MQ_SM_MAX_WIDTH\\\": () => (/* binding */ MQ_SM_MAX_WIDTH),\\n/* harmony export */ \\\"POINTER_BUTTON\\\": () => (/* binding */ POINTER_BUTTON),\\n/* harmony export */ \\\"SCROLL_TIMEOUT\\\": () => (/* binding */ SCROLL_TIMEOUT),\\n/* harmony export */ \\\"SHIFT_LOCKING_ANGLE\\\": () => (/* binding */ SHIFT_LOCKING_ANGLE),\\n/* harmony export */ \\\"SVG_NS\\\": () => (/* binding */ SVG_NS),\\n/* harmony export */ \\\"TAP_TWICE_TIMEOUT\\\": () => (/* binding */ TAP_TWICE_TIMEOUT),\\n/* harmony export */ \\\"TEXT_TO_CENTER_SNAP_THRESHOLD\\\": () => (/* binding */ TEXT_TO_CENTER_SNAP_THRESHOLD),\\n/* harmony export */ \\\"THEME\\\": () => (/* binding */ THEME),\\n/* harmony export */ \\\"THEME_FILTER\\\": () => (/* binding */ THEME_FILTER),\\n/* harmony export */ \\\"TITLE_TIMEOUT\\\": () => (/* binding */ TITLE_TIMEOUT),\\n/* harmony export */ \\\"TOUCH_CTX_MENU_TIMEOUT\\\": () => (/* binding */ TOUCH_CTX_MENU_TIMEOUT),\\n/* harmony export */ \\\"URL_HASH_KEYS\\\": () => (/* binding */ URL_HASH_KEYS),\\n/* harmony export */ \\\"URL_QUERY_KEYS\\\": () => (/* binding */ URL_QUERY_KEYS),\\n/* harmony export */ \\\"VERSIONS\\\": () => (/* binding */ VERSIONS),\\n/* harmony export */ \\\"VERSION_TIMEOUT\\\": () => (/* binding */ VERSION_TIMEOUT),\\n/* harmony export */ \\\"VERTICAL_ALIGN\\\": () => (/* binding */ VERTICAL_ALIGN),\\n/* harmony export */ \\\"WINDOWS_EMOJI_FALLBACK_FONT\\\": () => (/* binding */ WINDOWS_EMOJI_FALLBACK_FONT),\\n/* harmony export */ \\\"ZOOM_STEP\\\": () => (/* binding */ ZOOM_STEP)\\n/* harmony export */ });\\n/* harmony import */ var _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/variables.module.scss */ \\\"../../css/variables.module.scss\\\");\\n/* harmony import */ var _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__);\\n\\r\\nconst APP_NAME = \\\"Excalidraw\\\";\\r\\nconst DRAGGING_THRESHOLD = 10; // px\\r\\nconst LINE_CONFIRM_THRESHOLD = 8; // px\\r\\nconst ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;\\r\\nconst ELEMENT_TRANSLATE_AMOUNT = 1;\\r\\nconst TEXT_TO_CENTER_SNAP_THRESHOLD = 30;\\r\\nconst SHIFT_LOCKING_ANGLE = Math.PI / 12;\\r\\nconst CURSOR_TYPE = {\\r\\n TEXT: \\\"text\\\",\\r\\n CROSSHAIR: \\\"crosshair\\\",\\r\\n GRABBING: \\\"grabbing\\\",\\r\\n GRAB: \\\"grab\\\",\\r\\n POINTER: \\\"pointer\\\",\\r\\n MOVE: \\\"move\\\",\\r\\n AUTO: \\\"\\\"\\r\\n};\\r\\nconst POINTER_BUTTON = {\\r\\n MAIN: 0,\\r\\n WHEEL: 1,\\r\\n SECONDARY: 2,\\r\\n TOUCH: -1\\r\\n};\\r\\nlet EVENT;\\r\\n(function (EVENT) {\\r\\n EVENT[\\\"COPY\\\"] = \\\"copy\\\";\\r\\n EVENT[\\\"PASTE\\\"] = \\\"paste\\\";\\r\\n EVENT[\\\"CUT\\\"] = \\\"cut\\\";\\r\\n EVENT[\\\"KEYDOWN\\\"] = \\\"keydown\\\";\\r\\n EVENT[\\\"KEYUP\\\"] = \\\"keyup\\\";\\r\\n EVENT[\\\"MOUSE_MOVE\\\"] = \\\"mousemove\\\";\\r\\n EVENT[\\\"RESIZE\\\"] = \\\"resize\\\";\\r\\n EVENT[\\\"UNLOAD\\\"] = \\\"unload\\\";\\r\\n EVENT[\\\"FOCUS\\\"] = \\\"focus\\\";\\r\\n EVENT[\\\"BLUR\\\"] = \\\"blur\\\";\\r\\n EVENT[\\\"DRAG_OVER\\\"] = \\\"dragover\\\";\\r\\n EVENT[\\\"DROP\\\"] = \\\"drop\\\";\\r\\n EVENT[\\\"GESTURE_END\\\"] = \\\"gestureend\\\";\\r\\n EVENT[\\\"BEFORE_UNLOAD\\\"] = \\\"beforeunload\\\";\\r\\n EVENT[\\\"GESTURE_START\\\"] = \\\"gesturestart\\\";\\r\\n EVENT[\\\"GESTURE_CHANGE\\\"] = \\\"gesturechange\\\";\\r\\n EVENT[\\\"POINTER_MOVE\\\"] = \\\"pointermove\\\";\\r\\n EVENT[\\\"POINTER_UP\\\"] = \\\"pointerup\\\";\\r\\n EVENT[\\\"STATE_CHANGE\\\"] = \\\"statechange\\\";\\r\\n EVENT[\\\"WHEEL\\\"] = \\\"wheel\\\";\\r\\n EVENT[\\\"TOUCH_START\\\"] = \\\"touchstart\\\";\\r\\n EVENT[\\\"TOUCH_END\\\"] = \\\"touchend\\\";\\r\\n EVENT[\\\"HASHCHANGE\\\"] = \\\"hashchange\\\";\\r\\n EVENT[\\\"VISIBILITY_CHANGE\\\"] = \\\"visibilitychange\\\";\\r\\n EVENT[\\\"SCROLL\\\"] = \\\"scroll\\\";\\r\\n EVENT[\\\"EXCALIDRAW_LINK\\\"] = \\\"excalidraw-link\\\";\\r\\n})(EVENT || (EVENT = {}));\\r\\nconst ENV = {\\r\\n TEST: \\\"test\\\",\\r\\n DEVELOPMENT: \\\"development\\\"\\r\\n};\\r\\nconst CLASSES = {\\r\\n SHAPE_ACTIONS_MENU: \\\"App-menu__left\\\",\\r\\n SHAPE_ACTIONS_MOBILE_MENU: \\\"App-mobile-menu\\\",\\r\\n //zsviczian\\r\\n MOBILE_TOOLBAR: \\\"App-toolbar-content\\\" //zsviczian\\r\\n}; // 1-based in case we ever do `if(element.fontFamily)`\\r\\nconst FONT_FAMILY = {\\r\\n Virgil: 1,\\r\\n Helvetica: 2,\\r\\n Cascadia: 3,\\r\\n LocalFont: 4\\r\\n};\\r\\nconst THEME = {\\r\\n LIGHT: \\\"light\\\",\\r\\n DARK: \\\"dark\\\"\\r\\n};\\r\\nconst WINDOWS_EMOJI_FALLBACK_FONT = \\\"Segoe UI Emoji\\\";\\r\\nconst DEFAULT_FONT_SIZE = 20;\\r\\nconst DEFAULT_FONT_FAMILY = FONT_FAMILY.Virgil;\\r\\nconst DEFAULT_TEXT_ALIGN = \\\"left\\\";\\r\\nconst DEFAULT_VERTICAL_ALIGN = \\\"top\\\";\\r\\nconst DEFAULT_VERSION = \\\"{version}\\\";\\r\\nconst CANVAS_ONLY_ACTIONS = [\\\"selectAll\\\"];\\r\\nconst GRID_SIZE = 20; // TODO make it configurable?\\r\\nconst MIME_TYPES = {\\r\\n excalidraw: \\\"application/vnd.excalidraw+json\\\",\\r\\n excalidrawlib: \\\"application/vnd.excalidrawlib+json\\\",\\r\\n json: \\\"application/json\\\",\\r\\n svg: \\\"image/svg+xml\\\",\\r\\n \\\"excalidraw.svg\\\": \\\"image/svg+xml\\\",\\r\\n png: \\\"image/png\\\",\\r\\n \\\"excalidraw.png\\\": \\\"image/png\\\",\\r\\n jpg: \\\"image/jpeg\\\",\\r\\n gif: \\\"image/gif\\\",\\r\\n binary: \\\"application/octet-stream\\\"\\r\\n};\\r\\nconst EXPORT_DATA_TYPES = {\\r\\n excalidraw: \\\"excalidraw\\\",\\r\\n excalidrawClipboard: \\\"excalidraw/clipboard\\\",\\r\\n excalidrawLibrary: \\\"excalidrawlib\\\"\\r\\n};\\r\\nconst EXPORT_SOURCE = window.EXCALIDRAW_EXPORT_SOURCE || window.location.origin; // time in milliseconds\\r\\nconst IMAGE_RENDER_TIMEOUT = 500;\\r\\nconst TAP_TWICE_TIMEOUT = 300;\\r\\nconst TOUCH_CTX_MENU_TIMEOUT = 500;\\r\\nconst TITLE_TIMEOUT = 10000;\\r\\nconst VERSION_TIMEOUT = 30000;\\r\\nconst SCROLL_TIMEOUT = 100;\\r\\nconst ZOOM_STEP = 0.05; //zsviczian\\r\\nconst HYPERLINK_TOOLTIP_DELAY = 300; // Report a user inactive after IDLE_THRESHOLD milliseconds\\r\\nconst IDLE_THRESHOLD = 60000; // Report a user active each ACTIVE_THRESHOLD milliseconds\\r\\nconst ACTIVE_THRESHOLD = 3000;\\r\\nconst MODES = {\\r\\n VIEW: \\\"viewMode\\\",\\r\\n ZEN: \\\"zenMode\\\",\\r\\n GRID: \\\"gridMode\\\"\\r\\n};\\r\\nconst THEME_FILTER = (_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0___default().themeFilter);\\r\\nconst URL_QUERY_KEYS = {\\r\\n addLibrary: \\\"addLibrary\\\"\\r\\n};\\r\\nconst URL_HASH_KEYS = {\\r\\n addLibrary: \\\"addLibrary\\\"\\r\\n};\\r\\nconst DEFAULT_UI_OPTIONS = {\\r\\n canvasActions: {\\r\\n changeViewBackgroundColor: true,\\r\\n clearCanvas: true,\\r\\n export: {\\r\\n saveFileToDisk: true\\r\\n },\\r\\n loadScene: true,\\r\\n saveToActiveFile: true,\\r\\n theme: true,\\r\\n saveAsImage: true\\r\\n }\\r\\n}; // breakpoints\\r\\n// -----------------------------------------------------------------------------\\r\\n// sm screen\\r\\nconst MQ_SM_MAX_WIDTH = 640; // md screen\\r\\nconst MQ_MAX_WIDTH_PORTRAIT = 730;\\r\\nconst MQ_MAX_WIDTH_LANDSCAPE = 1000;\\r\\nconst MQ_MAX_HEIGHT_LANDSCAPE = 500; // sidebar\\r\\nconst MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229; // -----------------------------------------------------------------------------\\r\\nconst LIBRARY_SIDEBAR_WIDTH = parseInt((_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0___default().rightSidebarWidth));\\r\\nconst MAX_DECIMALS_FOR_SVG_EXPORT = 2;\\r\\nconst EXPORT_SCALES = [1, 2, 3];\\r\\nconst DEFAULT_EXPORT_PADDING = 10; // px\\r\\nconst DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT = 1440;\\r\\nconst ALLOWED_IMAGE_MIME_TYPES = [MIME_TYPES.png, MIME_TYPES.jpg, MIME_TYPES.svg, MIME_TYPES.gif];\\r\\nconst MAX_ALLOWED_FILE_BYTES = 20 * 1024 * 1024; //zsviczian\\r\\nconst SVG_NS = \\\"http://www.w3.org/2000/svg\\\";\\r\\nconst ENCRYPTION_KEY_BITS = 128;\\r\\nconst VERSIONS = {\\r\\n excalidraw: 2,\\r\\n excalidrawLibrary: 2\\r\\n};\\r\\nconst BOUND_TEXT_PADDING = 5;\\r\\nconst VERTICAL_ALIGN = {\\r\\n TOP: \\\"top\\\",\\r\\n MIDDLE: \\\"middle\\\",\\r\\n BOTTOM: \\\"bottom\\\"\\r\\n};\\r\\nconst ELEMENT_READY_TO_ERASE_OPACITY = 20;\\r\\nconst COOKIES = {\\r\\n AUTH_STATE_COOKIE: \\\"excplus-auth\\\"\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFFBQVEsR0FBRztJQUN0QixVQUFVLEVBQUUsQ0FBQztJQUNiLGlCQUFpQixFQUFFLENBQUM7Q0FDckIsQ0FBQztBQUNLLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sY0FBYyxHQUFHO0lBQzVCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUNLLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBQzFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLGlCQUFpQixFQUFFLGNBQWM7Q0FDbEMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb25zdGFudHMudHM/MjBkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3NzVmFyaWFibGVzIGZyb20gXCIuL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBBUFBfTkFNRSA9IFwiRXhjYWxpZHJhd1wiO1xuZXhwb3J0IGNvbnN0IERSQUdHSU5HX1RIUkVTSE9MRCA9IDEwOyAvLyBweFxuXG5leHBvcnQgY29uc3QgTElORV9DT05GSVJNX1RIUkVTSE9MRCA9IDg7IC8vIHB4XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1NISUZUX1RSQU5TTEFURV9BTU9VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVFJBTlNMQVRFX0FNT1VOVCA9IDE7XG5leHBvcnQgY29uc3QgVEVYVF9UT19DRU5URVJfU05BUF9USFJFU0hPTEQgPSAzMDtcbmV4cG9ydCBjb25zdCBTSElGVF9MT0NLSU5HX0FOR0xFID0gTWF0aC5QSSAvIDEyO1xuZXhwb3J0IGNvbnN0IENVUlNPUl9UWVBFID0ge1xuICBURVhUOiBcInRleHRcIixcbiAgQ1JPU1NIQUlSOiBcImNyb3NzaGFpclwiLFxuICBHUkFCQklORzogXCJncmFiYmluZ1wiLFxuICBHUkFCOiBcImdyYWJcIixcbiAgUE9JTlRFUjogXCJwb2ludGVyXCIsXG4gIE1PVkU6IFwibW92ZVwiLFxuICBBVVRPOiBcIlwiXG59O1xuZXhwb3J0IGNvbnN0IFBPSU5URVJfQlVUVE9OID0ge1xuICBNQUlOOiAwLFxuICBXSEVFTDogMSxcbiAgU0VDT05EQVJZOiAyLFxuICBUT1VDSDogLTFcbn07XG5leHBvcnQgbGV0IEVWRU5UO1xuXG4oZnVuY3Rpb24gKEVWRU5UKSB7XG4gIEVWRU5UW1wiQ09QWVwiXSA9IFwiY29weVwiO1xuICBFVkVOVFtcIlBBU1RFXCJdID0gXCJwYXN0ZVwiO1xuICBFVkVOVFtcIkNVVFwiXSA9IFwiY3V0XCI7XG4gIEVWRU5UW1wiS0VZRE9XTlwiXSA9IFwia2V5ZG93blwiO1xuICBFVkVOVFtcIktFWVVQXCJdID0gXCJrZXl1cFwiO1xuICBFVkVOVFtcIk1PVVNFX01PVkVcIl0gPSBcIm1vdXNlbW92ZVwiO1xuICBFVkVOVFtcIlJFU0laRVwiXSA9IFwicmVzaXplXCI7XG4gIEVWRU5UW1wiVU5MT0FEXCJdID0gXCJ1bmxvYWRcIjtcbiAgRVZFTlRbXCJGT0NVU1wiXSA9IFwiZm9jdXNcIjtcbiAgRVZFTlRbXCJCTFVSXCJdID0gXCJibHVyXCI7XG4gIEVWRU5UW1wiRFJBR19PVkVSXCJdID0gXCJkcmFnb3ZlclwiO1xuICBFVkVOVFtcIkRST1BcIl0gPSBcImRyb3BcIjtcbiAgRVZFTlRbXCJHRVNUVVJFX0VORFwiXSA9IFwiZ2VzdHVyZWVuZFwiO1xuICBFVkVOVFtcIkJFRk9SRV9VTkxPQURcIl0gPSBcImJlZm9yZXVubG9hZFwiO1xuICBFVkVOVFtcIkdFU1RVUkVfU1RBUlRcIl0gPSBcImdlc3R1cmVzdGFydFwiO1xuICBFVkVOVFtcIkdFU1RVUkVfQ0hBTkdFXCJdID0gXCJnZXN0dXJlY2hhbmdlXCI7XG4gIEVWRU5UW1wiUE9JTlRFUl9NT1ZFXCJdID0gXCJwb2ludGVybW92ZVwiO1xuICBFVkVOVFtcIlBPSU5URVJfVVBcIl0gPSBcInBvaW50ZXJ1cFwiO1xuICBFVkVOVFtcIlNUQVRFX0NIQU5HRVwiXSA9IFwic3RhdGVjaGFuZ2VcIjtcbiAgRVZFTlRbXCJXSEVFTFwiXSA9IFwid2hlZWxcIjtcbiAgRVZFTlRbXCJUT1VDSF9TVEFSVFwiXSA9IFwidG91Y2hzdGFydFwiO1xuICBFVkVOVFtcIlRPVUNIX0VORFwiXSA9IFwidG91Y2hlbmRcIjtcbiAgRVZFTlRbXCJIQVNIQ0hBTkdFXCJdID0gXCJoYXNoY2hhbmdlXCI7XG4gIEVWRU5UW1wiVklTSUJJTElUWV9DSEFOR0VcIl0gPSBcInZpc2liaWxpdHljaGFuZ2VcIjtcbiAgRVZFTlRbXCJTQ1JPTExcIl0gPSBcInNjcm9sbFwiO1xuICBFVkVOVFtcIkVYQ0FMSURSQVdfTElOS1wiXSA9IFwiZXhjYWxpZHJhdy1saW5rXCI7XG59KShFVkVOVCB8fCAoRVZFTlQgPSB7fSkpO1xuXG5leHBvcnQgY29uc3QgRU5WID0ge1xuICBURVNUOiBcInRlc3RcIixcbiAgREVWRUxPUE1FTlQ6IFwiZGV2ZWxvcG1lbnRcIlxufTtcbmV4cG9ydCBjb25zdCBDTEFTU0VTID0ge1xuICBTSEFQRV9BQ1RJT05TX01FTlU6IFwiQXBwLW1lbnVfX2xlZnRcIixcbiAgU0hBUEVfQUNUSU9OU19NT0JJTEVfTUVOVTogXCJBcHAtbW9iaWxlLW1lbnVcIixcbiAgLy96c3ZpY3ppYW5cbiAgTU9CSUxFX1RPT0xCQVI6IFwiQXBwLXRvb2xiYXItY29udGVudFwiIC8venN2aWN6aWFuXG5cbn07IC8vIDEtYmFzZWQgaW4gY2FzZSB3ZSBldmVyIGRvIGBpZihlbGVtZW50LmZvbnRGYW1pbHkpYFxuXG5leHBvcnQgY29uc3QgRk9OVF9GQU1JTFkgPSB7XG4gIFZpcmdpbDogMSxcbiAgSGVsdmV0aWNhOiAyLFxuICBDYXNjYWRpYTogMyxcbiAgTG9jYWxGb250OiA0XG59O1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ge1xuICBMSUdIVDogXCJsaWdodFwiLFxuICBEQVJLOiBcImRhcmtcIlxufTtcbmV4cG9ydCBjb25zdCBXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlQgPSBcIlNlZ29lIFVJIEVtb2ppXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX1NJWkUgPSAyMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfRkFNSUxZID0gRk9OVF9GQU1JTFkuVmlyZ2lsO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEVYVF9BTElHTiA9IFwibGVmdFwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkVSVElDQUxfQUxJR04gPSBcInRvcFwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkVSU0lPTiA9IFwie3ZlcnNpb259XCI7XG5leHBvcnQgY29uc3QgQ0FOVkFTX09OTFlfQUNUSU9OUyA9IFtcInNlbGVjdEFsbFwiXTtcbmV4cG9ydCBjb25zdCBHUklEX1NJWkUgPSAyMDsgLy8gVE9ETyBtYWtlIGl0IGNvbmZpZ3VyYWJsZT9cblxuZXhwb3J0IGNvbnN0IE1JTUVfVFlQRVMgPSB7XG4gIGV4Y2FsaWRyYXc6IFwiYXBwbGljYXRpb24vdm5kLmV4Y2FsaWRyYXcranNvblwiLFxuICBleGNhbGlkcmF3bGliOiBcImFwcGxpY2F0aW9uL3ZuZC5leGNhbGlkcmF3bGliK2pzb25cIixcbiAganNvbjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gIHN2ZzogXCJpbWFnZS9zdmcreG1sXCIsXG4gIFwiZXhjYWxpZHJhdy5zdmdcIjogXCJpbWFnZS9zdmcreG1sXCIsXG4gIHBuZzogXCJpbWFnZS9wbmdcIixcbiAgXCJleGNhbGlkcmF3LnBuZ1wiOiBcImltYWdlL3BuZ1wiLFxuICBqcGc6IFwiaW1hZ2UvanBlZ1wiLFxuICBnaWY6IFwiaW1hZ2UvZ2lmXCIsXG4gIGJpbmFyeTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxufTtcbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFUyA9IHtcbiAgZXhjYWxpZHJhdzogXCJleGNhbGlkcmF3XCIsXG4gIGV4Y2FsaWRyYXdDbGlwYm9hcmQ6IFwiZXhjYWxpZHJhdy9jbGlwYm9hcmRcIixcbiAgZXhjYWxpZHJhd0xpYnJhcnk6IFwiZXhjYWxpZHJhd2xpYlwiXG59O1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9TT1VSQ0UgPSB3aW5kb3cuRVhDQUxJRFJBV19FWFBPUlRfU09VUkNFIHx8IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47IC8vIHRpbWUgaW4gbWlsbGlzZWNvbmRzXG5cbmV4cG9ydCBjb25zdCBJTUFHRV9SRU5ERVJfVElNRU9VVCA9IDUwMDtcbmV4cG9ydCBjb25zdCBUQVBfVFdJQ0VfVElNRU9VVCA9IDMwMDtcbmV4cG9ydCBjb25zdCBUT1VDSF9DVFhfTUVOVV9USU1FT1VUID0gNTAwO1xuZXhwb3J0IGNvbnN0IFRJVExFX1RJTUVPVVQgPSAxMDAwMDtcbmV4cG9ydCBjb25zdCBWRVJTSU9OX1RJTUVPVVQgPSAzMDAwMDtcbmV4cG9ydCBjb25zdCBTQ1JPTExfVElNRU9VVCA9IDEwMDtcbmV4cG9ydCBjb25zdCBaT09NX1NURVAgPSAwLjA1OyAvL3pzdmljemlhblxuXG5leHBvcnQgY29uc3QgSFlQRVJMSU5LX1RPT0xUSVBfREVMQVkgPSAzMDA7IC8vIFJlcG9ydCBhIHVzZXIgaW5hY3RpdmUgYWZ0ZXIgSURMRV9USFJFU0hPTEQgbWlsbGlzZWNvbmRzXG5cbmV4cG9ydCBjb25zdCBJRExFX1RIUkVTSE9MRCA9IDYwXzAwMDsgLy8gUmVwb3J0IGEgdXNlciBhY3RpdmUgZWFjaCBBQ1RJVkVfVEhSRVNIT0xEIG1pbGxpc2Vjb25kc1xuXG5leHBvcnQgY29uc3QgQUNUSVZFX1RIUkVTSE9MRCA9IDNfMDAwO1xuZXhwb3J0IGNvbnN0IE1PREVTID0ge1xuICBWSUVXOiBcInZpZXdNb2RlXCIsXG4gIFpFTjogXCJ6ZW5Nb2RlXCIsXG4gIEdSSUQ6IFwiZ3JpZE1vZGVcIlxufTtcbmV4cG9ydCBjb25zdCBUSEVNRV9GSUxURVIgPSBjc3NWYXJpYWJsZXMudGhlbWVGaWx0ZXI7XG5leHBvcnQgY29uc3QgVVJMX1FVRVJZX0tFWVMgPSB7XG4gIGFkZExpYnJhcnk6IFwiYWRkTGlicmFyeVwiXG59O1xuZXhwb3J0IGNvbnN0IFVSTF9IQVNIX0tFWVMgPSB7XG4gIGFkZExpYnJhcnk6IFwiYWRkTGlicmFyeVwiXG59O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVUlfT1BUSU9OUyA9IHtcbiAgY2FudmFzQWN0aW9uczoge1xuICAgIGNoYW5nZVZpZXdCYWNrZ3JvdW5kQ29sb3I6IHRydWUsXG4gICAgY2xlYXJDYW52YXM6IHRydWUsXG4gICAgZXhwb3J0OiB7XG4gICAgICBzYXZlRmlsZVRvRGlzazogdHJ1ZVxuICAgIH0sXG4gICAgbG9hZFNjZW5lOiB0cnVlLFxuICAgIHNhdmVUb0FjdGl2ZUZpbGU6IHRydWUsXG4gICAgdGhlbWU6IHRydWUsXG4gICAgc2F2ZUFzSW1hZ2U6IHRydWVcbiAgfVxufTsgLy8gYnJlYWtwb2ludHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBzbSBzY3JlZW5cblxuZXhwb3J0IGNvbnN0IE1RX1NNX01BWF9XSURUSCA9IDY0MDsgLy8gbWQgc2NyZWVuXG5cbmV4cG9ydCBjb25zdCBNUV9NQVhfV0lEVEhfUE9SVFJBSVQgPSA3MzA7XG5leHBvcnQgY29uc3QgTVFfTUFYX1dJRFRIX0xBTkRTQ0FQRSA9IDEwMDA7XG5leHBvcnQgY29uc3QgTVFfTUFYX0hFSUdIVF9MQU5EU0NBUEUgPSA1MDA7IC8vIHNpZGViYXJcblxuZXhwb3J0IGNvbnN0IE1RX1JJR0hUX1NJREVCQVJfTUlOX1dJRFRIID0gMTIyOTsgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IExJQlJBUllfU0lERUJBUl9XSURUSCA9IHBhcnNlSW50KGNzc1ZhcmlhYmxlcy5yaWdodFNpZGViYXJXaWR0aCk7XG5leHBvcnQgY29uc3QgTUFYX0RFQ0lNQUxTX0ZPUl9TVkdfRVhQT1JUID0gMjtcbmV4cG9ydCBjb25zdCBFWFBPUlRfU0NBTEVTID0gWzEsIDIsIDNdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1BBRERJTkcgPSAxMDsgLy8gcHhcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFYX0lNQUdFX1dJRFRIX09SX0hFSUdIVCA9IDE0NDA7XG5leHBvcnQgY29uc3QgQUxMT1dFRF9JTUFHRV9NSU1FX1RZUEVTID0gW01JTUVfVFlQRVMucG5nLCBNSU1FX1RZUEVTLmpwZywgTUlNRV9UWVBFUy5zdmcsIE1JTUVfVFlQRVMuZ2lmXTtcbmV4cG9ydCBjb25zdCBNQVhfQUxMT1dFRF9GSUxFX0JZVEVTID0gMjAgKiAxMDI0ICogMTAyNDsgLy96c3ZpY3ppYW5cblxuZXhwb3J0IGNvbnN0IFNWR19OUyA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbmV4cG9ydCBjb25zdCBFTkNSWVBUSU9OX0tFWV9CSVRTID0gMTI4O1xuZXhwb3J0IGNvbnN0IFZFUlNJT05TID0ge1xuICBleGNhbGlkcmF3OiAyLFxuICBleGNhbGlkcmF3TGlicmFyeTogMlxufTtcbmV4cG9ydCBjb25zdCBCT1VORF9URVhUX1BBRERJTkcgPSA1O1xuZXhwb3J0IGNvbnN0IFZFUlRJQ0FMX0FMSUdOID0ge1xuICBUT1A6IFwidG9wXCIsXG4gIE1JRERMRTogXCJtaWRkbGVcIixcbiAgQk9UVE9NOiBcImJvdHRvbVwiXG59O1xuZXhwb3J0IGNvbnN0IEVMRU1FTlRfUkVBRFlfVE9fRVJBU0VfT1BBQ0lUWSA9IDIwO1xuZXhwb3J0IGNvbnN0IENPT0tJRVMgPSB7XG4gIEFVVEhfU1RBVEVfQ09PS0lFOiBcImV4Y3BsdXMtYXV0aFwiXG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../constants.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../constants.ts?");
2492
2492
 
2493
2493
  /***/ }),
2494
2494
 
@@ -2642,7 +2642,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2642
2642
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2643
2643
 
2644
2644
  "use strict";
2645
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"getArrowheadPoints\\\": () => (/* binding */ getArrowheadPoints),\\n/* harmony export */ \\\"getClosestElementBounds\\\": () => (/* binding */ getClosestElementBounds),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* binding */ getCommonBoundingBox),\\n/* harmony export */ \\\"getCommonBounds\\\": () => (/* binding */ getCommonBounds),\\n/* harmony export */ \\\"getCurvePathOps\\\": () => (/* binding */ getCurvePathOps),\\n/* harmony export */ \\\"getDiamondPoints\\\": () => (/* binding */ getDiamondPoints),\\n/* harmony export */ \\\"getElementAbsoluteCoords\\\": () => (/* binding */ getElementAbsoluteCoords),\\n/* harmony export */ \\\"getElementBounds\\\": () => (/* binding */ getElementBounds),\\n/* harmony export */ \\\"getElementPointsCoords\\\": () => (/* binding */ getElementPointsCoords),\\n/* harmony export */ \\\"getResizedElementAbsoluteCoords\\\": () => (/* binding */ getResizedElementAbsoluteCoords),\\n/* harmony export */ \\\"pointRelativeTo\\\": () => (/* binding */ pointRelativeTo)\\n/* harmony export */ });\\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ \\\"../../math.ts\\\");\\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ \\\"../../../node_modules/roughjs/bin/rough.js\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../points */ \\\"../../points.ts\\\");\\n\\r\\n\\r\\n\\r\\n\\r\\n // x and y position of top left corner, x and y position of bottom right corner\\r\\n// If the element is created from right to left, the width is going to be negative\\r\\n// This set of functions retrieves the absolute position of the 4 points.\\r\\nconst getElementAbsoluteCoords = function (element) {\\r\\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\\r\\n return getFreeDrawElementAbsoluteCoords(element);\\r\\n }\\r\\n else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\\r\\n return getLinearElementAbsoluteCoords(element);\\r\\n }\\r\\n return [element.x, element.y, element.x + element.width, element.y + element.height];\\r\\n};\\r\\nconst pointRelativeTo = function (element, absoluteCoords) {\\r\\n return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y];\\r\\n};\\r\\nconst getDiamondPoints = function (element) {\\r\\n // Here we add +1 to avoid these numbers to be 0\\r\\n // otherwise rough.js will throw an error complaining about it\\r\\n const topX = Math.floor(element.width / 2) + 1;\\r\\n const topY = 0;\\r\\n const rightX = element.width;\\r\\n const rightY = Math.floor(element.height / 2) + 1;\\r\\n const bottomX = topX;\\r\\n const bottomY = element.height;\\r\\n const leftX = 0;\\r\\n const leftY = rightY;\\r\\n return [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY];\\r\\n};\\r\\nconst getCurvePathOps = function (shape) {\\r\\n for (const set of shape.sets) {\\r\\n if (set.type === \\\"path\\\") {\\r\\n return set.ops;\\r\\n }\\r\\n }\\r\\n return shape.sets[0].ops;\\r\\n}; // reference: https://eliot-jones.com/2019/12/cubic-bezier-curve-bounding-boxes\\r\\nconst getBezierValueForT = function (t, p0, p1, p2, p3) {\\r\\n const oneMinusT = 1 - t;\\r\\n return Math.pow(oneMinusT, 3) * p0 + 3 * Math.pow(oneMinusT, 2) * t * p1 + 3 * oneMinusT * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\\r\\n};\\r\\nconst solveQuadratic = function (p0, p1, p2, p3) {\\r\\n const i = p1 - p0;\\r\\n const j = p2 - p1;\\r\\n const k = p3 - p2;\\r\\n const a = 3 * i - 6 * j + 3 * k;\\r\\n const b = 6 * j - 6 * i;\\r\\n const c = 3 * i;\\r\\n const sqrtPart = b * b - 4 * a * c;\\r\\n const hasSolution = sqrtPart >= 0;\\r\\n if (!hasSolution) {\\r\\n return false;\\r\\n }\\r\\n const t1 = (-b + Math.sqrt(sqrtPart)) / (2 * a);\\r\\n const t2 = (-b - Math.sqrt(sqrtPart)) / (2 * a);\\r\\n let s1 = null;\\r\\n let s2 = null;\\r\\n if (t1 >= 0 && t1 <= 1) {\\r\\n s1 = getBezierValueForT(t1, p0, p1, p2, p3);\\r\\n }\\r\\n if (t2 >= 0 && t2 <= 1) {\\r\\n s2 = getBezierValueForT(t2, p0, p1, p2, p3);\\r\\n }\\r\\n return [s1, s2];\\r\\n};\\r\\nconst getCubicBezierCurveBound = function (p0, p1, p2, p3) {\\r\\n const solX = solveQuadratic(p0[0], p1[0], p2[0], p3[0]);\\r\\n const solY = solveQuadratic(p0[1], p1[1], p2[1], p3[1]);\\r\\n let minX = Math.min(p0[0], p3[0]);\\r\\n let maxX = Math.max(p0[0], p3[0]);\\r\\n if (solX) {\\r\\n const xs = solX.filter(function (x) {\\r\\n return x !== null;\\r\\n });\\r\\n minX = Math.min(minX, ...xs);\\r\\n maxX = Math.max(maxX, ...xs);\\r\\n }\\r\\n let minY = Math.min(p0[1], p3[1]);\\r\\n let maxY = Math.max(p0[1], p3[1]);\\r\\n if (solY) {\\r\\n const ys = solY.filter(function (y) {\\r\\n return y !== null;\\r\\n });\\r\\n minY = Math.min(minY, ...ys);\\r\\n maxY = Math.max(maxY, ...ys);\\r\\n }\\r\\n return [minX, minY, maxX, maxY];\\r\\n}; // TODO: https://github.com/excalidraw/excalidraw/issues/5617\\r\\nconst getRandomOffset = function () {\\r\\n return Math.random() / 1000000;\\r\\n};\\r\\nconst getMinMaxXYFromCurvePathOps = function (ops, transformXY) {\\r\\n let currentP = [0, 0];\\r\\n const { minX, minY, maxX, maxY } = ops.reduce(function (limits, _ref) {\\r\\n let { op, data } = _ref;\\r\\n // There are only four operation types:\\r\\n // move, bcurveTo, lineTo, and curveTo\\r\\n if (op === \\\"move\\\") {\\r\\n // change starting point\\r\\n currentP = data; // move operation does not draw anything; so, it always\\r\\n // returns false\\r\\n }\\r\\n else if (op === \\\"bcurveTo\\\") {\\r\\n // random offset is needed to fix https://github.com/excalidraw/excalidraw/issues/5585\\r\\n const _p1 = [data[0] + getRandomOffset(), data[1] + getRandomOffset()];\\r\\n const _p2 = [data[2] + getRandomOffset(), data[3] + getRandomOffset()];\\r\\n const _p3 = [data[4] + getRandomOffset(), data[5] + getRandomOffset()];\\r\\n const p1 = transformXY ? transformXY(..._p1) : _p1;\\r\\n const p2 = transformXY ? transformXY(..._p2) : _p2;\\r\\n const p3 = transformXY ? transformXY(..._p3) : _p3;\\r\\n const p0 = transformXY ? transformXY(...currentP) : currentP;\\r\\n currentP = _p3;\\r\\n const [minX, minY, maxX, maxY] = getCubicBezierCurveBound(p0, p1, p2, p3);\\r\\n limits.minX = Math.min(limits.minX, minX);\\r\\n limits.minY = Math.min(limits.minY, minY);\\r\\n limits.maxX = Math.max(limits.maxX, maxX);\\r\\n limits.maxY = Math.max(limits.maxY, maxY);\\r\\n }\\r\\n else if (op === \\\"lineTo\\\") { // TODO: Implement this\\r\\n }\\r\\n else if (op === \\\"qcurveTo\\\") { // TODO: Implement this\\r\\n }\\r\\n return limits;\\r\\n }, {\\r\\n minX: Infinity,\\r\\n minY: Infinity,\\r\\n maxX: -Infinity,\\r\\n maxY: -Infinity\\r\\n });\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getBoundsFromPoints = function (points) {\\r\\n let minX = Infinity;\\r\\n let minY = Infinity;\\r\\n let maxX = -Infinity;\\r\\n let maxY = -Infinity;\\r\\n for (const [x, y] of points) {\\r\\n minX = Math.min(minX, x);\\r\\n minY = Math.min(minY, y);\\r\\n maxX = Math.max(maxX, x);\\r\\n maxY = Math.max(maxY, y);\\r\\n }\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getFreeDrawElementAbsoluteCoords = function (element) {\\r\\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points);\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n};\\r\\nconst getLinearElementAbsoluteCoords = function (element) {\\r\\n let coords;\\r\\n if (element.points.length < 2 || !(0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element)) {\\r\\n // XXX this is just a poor estimate and not very useful\\r\\n const { minX, minY, maxX, maxY } = element.points.reduce(function (limits, _ref2) {\\r\\n let [x, y] = _ref2;\\r\\n limits.minY = Math.min(limits.minY, y);\\r\\n limits.minX = Math.min(limits.minX, x);\\r\\n limits.maxX = Math.max(limits.maxX, x);\\r\\n limits.maxY = Math.max(limits.maxY, y);\\r\\n return limits;\\r\\n }, {\\r\\n minX: Infinity,\\r\\n minY: Infinity,\\r\\n maxX: -Infinity,\\r\\n maxY: -Infinity\\r\\n });\\r\\n coords = [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n }\\r\\n else {\\r\\n const shape = (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element); // first element is always the curve\\r\\n const ops = getCurvePathOps(shape[0]);\\r\\n const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\\r\\n coords = [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n }\\r\\n return coords;\\r\\n};\\r\\nconst getArrowheadPoints = function (element, shape, position, arrowhead) {\\r\\n const ops = getCurvePathOps(shape[0]);\\r\\n if (ops.length < 1) {\\r\\n return null;\\r\\n } // The index of the bCurve operation to examine.\\r\\n const index = position === \\\"start\\\" ? 1 : ops.length - 1;\\r\\n const data = ops[index].data;\\r\\n const p3 = [data[4], data[5]];\\r\\n const p2 = [data[2], data[3]];\\r\\n const p1 = [data[0], data[1]]; // We need to find p0 of the bezier curve.\\r\\n // It is typically the last point of the previous\\r\\n // curve; it can also be the position of moveTo operation.\\r\\n const prevOp = ops[index - 1];\\r\\n let p0 = [0, 0];\\r\\n if (prevOp.op === \\\"move\\\") {\\r\\n p0 = prevOp.data;\\r\\n }\\r\\n else if (prevOp.op === \\\"bcurveTo\\\") {\\r\\n p0 = [prevOp.data[4], prevOp.data[5]];\\r\\n } // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\\r\\n const equation = function (t, idx) {\\r\\n return Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3);\\r\\n }; // Ee know the last point of the arrow (or the first, if start arrowhead).\\r\\n const [x2, y2] = position === \\\"start\\\" ? p0 : p3; // By using cubic bezier equation (B(t)) and the given parameters,\\r\\n // we calculate a point that is closer to the last point.\\r\\n // The value 0.3 is chosen arbitrarily and it works best for all\\r\\n // the tested cases.\\r\\n const [x1, y1] = [equation(0.3, 0), equation(0.3, 1)]; // Find the normalized direction vector based on the\\r\\n // previously calculated points.\\r\\n const distance = Math.hypot(x2 - x1, y2 - y1);\\r\\n const nx = (x2 - x1) / distance;\\r\\n const ny = (y2 - y1) / distance;\\r\\n const size = {\\r\\n arrow: 30,\\r\\n bar: 15,\\r\\n dot: 15,\\r\\n triangle: 15\\r\\n }[arrowhead]; // pixels (will differ for each arrowhead)\\r\\n let length = 0;\\r\\n if (arrowhead === \\\"arrow\\\") {\\r\\n // Length for -> arrows is based on the length of the last section\\r\\n const [cx, cy] = element.points[element.points.length - 1];\\r\\n const [px, py] = element.points.length > 1 ? element.points[element.points.length - 2] : [0, 0];\\r\\n length = Math.hypot(cx - px, cy - py);\\r\\n }\\r\\n else {\\r\\n // Length for other arrowhead types is based on the total length of the line\\r\\n for (let i = 0; i < element.points.length; i++) {\\r\\n const [px, py] = element.points[i - 1] || [0, 0];\\r\\n const [cx, cy] = element.points[i];\\r\\n length += Math.hypot(cx - px, cy - py);\\r\\n }\\r\\n } // Scale down the arrowhead until we hit a certain size so that it doesn't look weird.\\r\\n // This value is selected by minimizing a minimum size with the last segment of the arrowhead\\r\\n const minSize = Math.min(size, length / 2);\\r\\n const xs = x2 - nx * minSize;\\r\\n const ys = y2 - ny * minSize;\\r\\n if (arrowhead === \\\"dot\\\") {\\r\\n const r = Math.hypot(ys - y2, xs - x2) + element.strokeWidth;\\r\\n return [x2, y2, r];\\r\\n }\\r\\n const angle = {\\r\\n arrow: 20,\\r\\n bar: 90,\\r\\n triangle: 25\\r\\n }[arrowhead]; // degrees\\r\\n // Return points\\r\\n const [x3, y3] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, -angle * Math.PI / 180);\\r\\n const [x4, y4] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, angle * Math.PI / 180);\\r\\n return [x2, y2, x3, y3, x4, y4];\\r\\n};\\r\\nconst getLinearElementRotatedBounds = function (element, cx, cy) {\\r\\n if (element.points.length < 2 || !(0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element)) {\\r\\n // XXX this is just a poor estimate and not very useful\\r\\n const { minX, minY, maxX, maxY } = element.points.reduce(function (limits, _ref3) {\\r\\n let [x, y] = _ref3;\\r\\n [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\\r\\n limits.minY = Math.min(limits.minY, y);\\r\\n limits.minX = Math.min(limits.minX, x);\\r\\n limits.maxX = Math.max(limits.maxX, x);\\r\\n limits.maxY = Math.max(limits.maxY, y);\\r\\n return limits;\\r\\n }, {\\r\\n minX: Infinity,\\r\\n minY: Infinity,\\r\\n maxX: -Infinity,\\r\\n maxY: -Infinity\\r\\n });\\r\\n return [minX, minY, maxX, maxY];\\r\\n }\\r\\n const shape = (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element); // first element is always the curve\\r\\n const ops = getCurvePathOps(shape[0]);\\r\\n const transformXY = function (x, y) {\\r\\n return (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\\r\\n };\\r\\n return getMinMaxXYFromCurvePathOps(ops, transformXY);\\r\\n}; // We could cache this stuff\\r\\nconst getElementBounds = function (element) {\\r\\n let bounds;\\r\\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);\\r\\n const cx = (x1 + x2) / 2;\\r\\n const cy = (y1 + y2) / 2;\\r\\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\\r\\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points.map(function (_ref4) {\\r\\n let [x, y] = _ref4;\\r\\n return (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx - element.x, cy - element.y, element.angle);\\r\\n }));\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n }\\r\\n else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\\r\\n bounds = getLinearElementRotatedBounds(element, cx, cy);\\r\\n }\\r\\n else if (element.type === \\\"diamond\\\") {\\r\\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y1, cx, cy, element.angle);\\r\\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y2, cx, cy, element.angle);\\r\\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, cy, cx, cy, element.angle);\\r\\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, cy, cx, cy, element.angle);\\r\\n const minX = Math.min(x11, x12, x22, x21);\\r\\n const minY = Math.min(y11, y12, y22, y21);\\r\\n const maxX = Math.max(x11, x12, x22, x21);\\r\\n const maxY = Math.max(y11, y12, y22, y21);\\r\\n bounds = [minX, minY, maxX, maxY];\\r\\n }\\r\\n else if (element.type === \\\"ellipse\\\") {\\r\\n const w = (x2 - x1) / 2;\\r\\n const h = (y2 - y1) / 2;\\r\\n const cos = Math.cos(element.angle);\\r\\n const sin = Math.sin(element.angle);\\r\\n const ww = Math.hypot(w * cos, h * sin);\\r\\n const hh = Math.hypot(h * cos, w * sin);\\r\\n bounds = [cx - ww, cy - hh, cx + ww, cy + hh];\\r\\n }\\r\\n else {\\r\\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y1, cx, cy, element.angle);\\r\\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y2, cx, cy, element.angle);\\r\\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y2, cx, cy, element.angle);\\r\\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y1, cx, cy, element.angle);\\r\\n const minX = Math.min(x11, x12, x22, x21);\\r\\n const minY = Math.min(y11, y12, y22, y21);\\r\\n const maxX = Math.max(x11, x12, x22, x21);\\r\\n const maxY = Math.max(y11, y12, y22, y21);\\r\\n bounds = [minX, minY, maxX, maxY];\\r\\n }\\r\\n return bounds;\\r\\n};\\r\\nconst getCommonBounds = function (elements) {\\r\\n if (!elements.length) {\\r\\n return [0, 0, 0, 0];\\r\\n }\\r\\n let minX = Infinity;\\r\\n let maxX = -Infinity;\\r\\n let minY = Infinity;\\r\\n let maxY = -Infinity;\\r\\n elements.forEach(function (element) {\\r\\n const [x1, y1, x2, y2] = getElementBounds(element);\\r\\n minX = Math.min(minX, x1);\\r\\n minY = Math.min(minY, y1);\\r\\n maxX = Math.max(maxX, x2);\\r\\n maxY = Math.max(maxY, y2);\\r\\n });\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getResizedElementAbsoluteCoords = function (element, nextWidth, nextHeight, normalizePoints) {\\r\\n if (!((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element))) {\\r\\n return [element.x, element.y, element.x + nextWidth, element.y + nextHeight];\\r\\n }\\r\\n const points = (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(0, nextWidth, (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(1, nextHeight, element.points, normalizePoints), normalizePoints);\\r\\n let bounds;\\r\\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\\r\\n // Free Draw\\r\\n bounds = getBoundsFromPoints(points);\\r\\n }\\r\\n else {\\r\\n // Line\\r\\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].generator();\\r\\n const curve = element.strokeSharpness === \\\"sharp\\\" ? gen.linearPath(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\\r\\n const ops = getCurvePathOps(curve);\\r\\n bounds = getMinMaxXYFromCurvePathOps(ops);\\r\\n }\\r\\n const [minX, minY, maxX, maxY] = bounds;\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n};\\r\\nconst getElementPointsCoords = function (element, points, sharpness) {\\r\\n // This might be computationally heavey\\r\\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].generator();\\r\\n const curve = sharpness === \\\"sharp\\\" ? gen.linearPath(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\\r\\n const ops = getCurvePathOps(curve);\\r\\n const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n};\\r\\nconst getClosestElementBounds = function (elements, from) {\\r\\n if (!elements.length) {\\r\\n return [0, 0, 0, 0];\\r\\n }\\r\\n let minDistance = Infinity;\\r\\n let closestElement = elements[0];\\r\\n elements.forEach(function (element) {\\r\\n const [x1, y1, x2, y2] = getElementBounds(element);\\r\\n const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)((x1 + x2) / 2, (y1 + y2) / 2, from.x, from.y);\\r\\n if (distance < minDistance) {\\r\\n minDistance = distance;\\r\\n closestElement = element;\\r\\n }\\r\\n });\\r\\n return getElementBounds(closestElement);\\r\\n};\\r\\nconst getCommonBoundingBox = function (elements) {\\r\\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\\r\\n return {\\r\\n minX,\\r\\n minY,\\r\\n maxX,\\r\\n maxY,\\r\\n width: maxX - minX,\\r\\n height: maxY - minY,\\r\\n midX: (minX + maxX) / 2,\\r\\n midY: (minY + maxY) / 2\\r\\n };\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxHQUFHLDZDQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLDZDQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLDZDQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ25DO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0ssTUFBTSxlQUFlLEdBQUcsVUFBVSxRQUFRO0lBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNy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Q0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRSxJQUFJLFFBQVEsR0FBRyxXQUFXLEVBQUU7WUFDMUIsV0FBVyxHQUFHLFFBQVEsQ0FBQztZQUN2QixjQUFjLEdBQUcsT0FBTyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUNLLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxRQUFRO0lBQ3BELE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsT0FBTztRQUNMLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7UUFDSixLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDbEIsTUFBTSxFQUFFLElBQUksR0FBRyxJQUFJO1FBQ25CLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0tBQ3hCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZWxlbWVudC9ib3VuZHMudHM/MDBmNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0YW5jZTJkLCByb3RhdGUgfSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHJvdWdoIGZyb20gXCJyb3VnaGpzL2Jpbi9yb3VnaFwiO1xuaW1wb3J0IHsgZ2V0U2hhcGVGb3JFbGVtZW50LCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJFbGVtZW50XCI7XG5pbXBvcnQgeyBpc0ZyZWVEcmF3RWxlbWVudCwgaXNMaW5lYXJFbGVtZW50IH0gZnJvbSBcIi4vdHlwZUNoZWNrc1wiO1xuaW1wb3J0IHsgcmVzY2FsZVBvaW50cyB9IGZyb20gXCIuLi9wb2ludHNcIjsgLy8geCBhbmQgeSBwb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIsIHggYW5kIHkgcG9zaXRpb24gb2YgYm90dG9tIHJpZ2h0IGNvcm5lclxuXG4vLyBJZiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCwgdGhlIHdpZHRoIGlzIGdvaW5nIHRvIGJlIG5lZ2F0aXZlXG4vLyBUaGlzIHNldCBvZiBmdW5jdGlvbnMgcmV0cmlldmVzIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgNCBwb2ludHMuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgaWYgKGlzRnJlZURyYXdFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGdldEZyZWVEcmF3RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICB9IGVsc2UgaWYgKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiBnZXRMaW5lYXJFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gW2VsZW1lbnQueCwgZWxlbWVudC55LCBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoLCBlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodF07XG59O1xuZXhwb3J0IGNvbnN0IHBvaW50UmVsYXRpdmVUbyA9IGZ1bmN0aW9uIChlbGVtZW50LCBhYnNvbHV0ZUNvb3Jkcykge1xuICByZXR1cm4gW2Fic29sdXRlQ29vcmRzWzBdIC0gZWxlbWVudC54LCBhYnNvbHV0ZUNvb3Jkc1sxXSAtIGVsZW1lbnQueV07XG59O1xuZXhwb3J0IGNvbnN0IGdldERpYW1vbmRQb2ludHMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAvLyBIZXJlIHdlIGFkZCArMSB0byBhdm9pZCB0aGVzZSBudW1iZXJzIHRvIGJlIDBcbiAgLy8gb3RoZXJ3aXNlIHJvdWdoLmpzIHdpbGwgdGhyb3cgYW4gZXJyb3IgY29tcGxhaW5pbmcgYWJvdXQgaXRcbiAgY29uc3QgdG9wWCA9IE1hdGguZmxvb3IoZWxlbWVudC53aWR0aCAvIDIpICsgMTtcbiAgY29uc3QgdG9wWSA9IDA7XG4gIGNvbnN0IHJpZ2h0WCA9IGVsZW1lbnQud2lkdGg7XG4gIGNvbnN0IHJpZ2h0WSA9IE1hdGguZmxvb3IoZWxlbWVudC5oZWlnaHQgLyAyKSArIDE7XG4gIGNvbnN0IGJvdHRvbVggPSB0b3BYO1xuICBjb25zdCBib3R0b21ZID0gZWxlbWVudC5oZWlnaHQ7XG4gIGNvbnN0IGxlZnRYID0gMDtcbiAgY29uc3QgbGVmdFkgPSByaWdodFk7XG4gIHJldHVybiBbdG9wWCwgdG9wWSwgcmlnaHRYLCByaWdodFksIGJvdHRvbVgsIGJvdHRvbVksIGxlZnRYLCBsZWZ0WV07XG59O1xuZXhwb3J0IGNvbnN0IGdldEN1cnZlUGF0aE9wcyA9IGZ1bmN0aW9uIChzaGFwZSkge1xuICBmb3IgKGNvbnN0IHNldCBvZiBzaGFwZS5zZXRzKSB7XG4gICAgaWYgKHNldC50eXBlID09PSBcInBhdGhcIikge1xuICAgICAgcmV0dXJuIHNldC5vcHM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNoYXBlLnNldHNbMF0ub3BzO1xufTsgLy8gcmVmZXJlbmNlOiBodHRwczovL2VsaW90LWpvbmVzLmNvbS8yMDE5LzEyL2N1YmljLWJlemllci1jdXJ2ZS1ib3VuZGluZy1ib3hlc1xuXG5jb25zdCBnZXRCZXppZXJWYWx1ZUZvclQgPSBmdW5jdGlvbiAodCwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgY29uc3Qgb25lTWludXNUID0gMSAtIHQ7XG4gIHJldHVybiBNYXRoLnBvdyhvbmVNaW51c1QsIDMpICogcDAgKyAzICogTWF0aC5wb3cob25lTWludXNULCAyKSAqIHQgKiBwMSArIDMgKiBvbmVNaW51c1QgKiBNYXRoLnBvdyh0LCAyKSAqIHAyICsgTWF0aC5wb3codCwgMykgKiBwMztcbn07XG5cbmNvbnN0IHNvbHZlUXVhZHJhdGljID0gZnVuY3Rpb24gKHAwLCBwMSwgcDIsIHAzKSB7XG4gIGNvbnN0IGkgPSBwMSAtIHAwO1xuICBjb25zdCBqID0gcDIgLSBwMTtcbiAgY29uc3QgayA9IHAzIC0gcDI7XG4gIGNvbnN0IGEgPSAzICogaSAtIDYgKiBqICsgMyAqIGs7XG4gIGNvbnN0IGIgPSA2ICogaiAtIDYgKiBpO1xuICBjb25zdCBjID0gMyAqIGk7XG4gIGNvbnN0IHNxcnRQYXJ0ID0gYiAqIGIgLSA0ICogYSAqIGM7XG4gIGNvbnN0IGhhc1NvbHV0aW9uID0gc3FydFBhcnQgPj0gMDtcblxuICBpZiAoIWhhc1NvbHV0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdDEgPSAoLWIgKyBNYXRoLnNxcnQoc3FydFBhcnQpKSAvICgyICogYSk7XG4gIGNvbnN0IHQyID0gKC1iIC0gTWF0aC5zcXJ0KHNxcnRQYXJ0KSkgLyAoMiAqIGEpO1xuICBsZXQgczEgPSBudWxsO1xuICBsZXQgczIgPSBudWxsO1xuXG4gIGlmICh0MSA+PSAwICYmIHQxIDw9IDEpIHtcbiAgICBzMSA9IGdldEJlemllclZhbHVlRm9yVCh0MSwgcDAsIHAxLCBwMiwgcDMpO1xuICB9XG5cbiAgaWYgKHQyID49IDAgJiYgdDIgPD0gMSkge1xuICAgIHMyID0gZ2V0QmV6aWVyVmFsdWVGb3JUKHQyLCBwMCwgcDEsIHAyLCBwMyk7XG4gIH1cblxuICByZXR1cm4gW3MxLCBzMl07XG59O1xuXG5jb25zdCBnZXRDdWJpY0JlemllckN1cnZlQm91bmQgPSBmdW5jdGlvbiAocDAsIHAxLCBwMiwgcDMpIHtcbiAgY29uc3Qgc29sWCA9IHNvbHZlUXVhZHJhdGljKHAwWzBdLCBwMVswXSwgcDJbMF0sIHAzWzBdKTtcbiAgY29uc3Qgc29sWSA9IHNvbHZlUXVhZHJhdGljKHAwWzFdLCBwMVsxXSwgcDJbMV0sIHAzWzFdKTtcbiAgbGV0IG1pblggPSBNYXRoLm1pbihwMFswXSwgcDNbMF0pO1xuICBsZXQgbWF4WCA9IE1hdGgubWF4KHAwWzBdLCBwM1swXSk7XG5cbiAgaWYgKHNvbFgpIHtcbiAgICBjb25zdCB4cyA9IHNvbFguZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4geCAhPT0gbnVsbDtcbiAgICB9KTtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgLi4ueHMpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCAuLi54cyk7XG4gIH1cblxuICBsZXQgbWluWSA9IE1hdGgubWluKHAwWzFdLCBwM1sxXSk7XG4gIGxldCBtYXhZID0gTWF0aC5tYXgocDBbMV0sIHAzWzFdKTtcblxuICBpZiAoc29sWSkge1xuICAgIGNvbnN0IHlzID0gc29sWS5maWx0ZXIoZnVuY3Rpb24gKHkpIHtcbiAgICAgIHJldHVybiB5ICE9PSBudWxsO1xuICAgIH0pO1xuICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCAuLi55cyk7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIC4uLnlzKTtcbiAgfVxuXG4gIHJldHVybiBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG59OyAvLyBUT0RPOiBodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L2lzc3Vlcy81NjE3XG5cblxuY29uc3QgZ2V0UmFuZG9tT2Zmc2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKSAvIDEwMDAwMDA7XG59O1xuXG5jb25zdCBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMgPSBmdW5jdGlvbiAob3BzLCB0cmFuc2Zvcm1YWSkge1xuICBsZXQgY3VycmVudFAgPSBbMCwgMF07XG4gIGNvbnN0IHtcbiAgICBtaW5YLFxuICAgIG1pblksXG4gICAgbWF4WCxcbiAgICBtYXhZXG4gIH0gPSBvcHMucmVkdWNlKGZ1bmN0aW9uIChsaW1pdHMsIF9yZWYpIHtcbiAgICBsZXQge1xuICAgICAgb3AsXG4gICAgICBkYXRhXG4gICAgfSA9IF9yZWY7XG5cbiAgICAvLyBUaGVyZSBhcmUgb25seSBmb3VyIG9wZXJhdGlvbiB0eXBlczpcbiAgICAvLyBtb3ZlLCBiY3VydmVUbywgbGluZVRvLCBhbmQgY3VydmVUb1xuICAgIGlmIChvcCA9PT0gXCJtb3ZlXCIpIHtcbiAgICAgIC8vIGNoYW5nZSBzdGFydGluZyBwb2ludFxuICAgICAgY3VycmVudFAgPSBkYXRhOyAvLyBtb3ZlIG9wZXJhdGlvbiBkb2VzIG5vdCBkcmF3IGFueXRoaW5nOyBzbywgaXQgYWx3YXlzXG4gICAgICAvLyByZXR1cm5zIGZhbHNlXG4gICAgfSBlbHNlIGlmIChvcCA9PT0gXCJiY3VydmVUb1wiKSB7XG4gICAgICAvLyByYW5kb20gb2Zmc2V0IGlzIG5lZWRlZCB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9pc3N1ZXMvNTU4NVxuICAgICAgY29uc3QgX3AxID0gW2RhdGFbMF0gKyBnZXRSYW5kb21PZmZzZXQoKSwgZGF0YVsxXSArIGdldFJhbmRvbU9mZnNldCgpXTtcbiAgICAgIGNvbnN0IF9wMiA9IFtkYXRhWzJdICsgZ2V0UmFuZG9tT2Zmc2V0KCksIGRhdGFbM10gKyBnZXRSYW5kb21PZmZzZXQoKV07XG4gICAgICBjb25zdCBfcDMgPSBbZGF0YVs0XSArIGdldFJhbmRvbU9mZnNldCgpLCBkYXRhWzVdICsgZ2V0UmFuZG9tT2Zmc2V0KCldO1xuICAgICAgY29uc3QgcDEgPSB0cmFuc2Zvcm1YWSA/IHRyYW5zZm9ybVhZKC4uLl9wMSkgOiBfcDE7XG4gICAgICBjb25zdCBwMiA9IHRyYW5zZm9ybVhZID8gdHJhbnNmb3JtWFkoLi4uX3AyKSA6IF9wMjtcbiAgICAgIGNvbnN0IHAzID0gdHJhbnNmb3JtWFkgPyB0cmFuc2Zvcm1YWSguLi5fcDMpIDogX3AzO1xuICAgICAgY29uc3QgcDAgPSB0cmFuc2Zvcm1YWSA/IHRyYW5zZm9ybVhZKC4uLmN1cnJlbnRQKSA6IGN1cnJlbnRQO1xuICAgICAgY3VycmVudFAgPSBfcDM7XG4gICAgICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRDdWJpY0JlemllckN1cnZlQm91bmQocDAsIHAxLCBwMiwgcDMpO1xuICAgICAgbGltaXRzLm1pblggPSBNYXRoLm1pbihsaW1pdHMubWluWCwgbWluWCk7XG4gICAgICBsaW1pdHMubWluWSA9IE1hdGgubWluKGxpbWl0cy5taW5ZLCBtaW5ZKTtcbiAgICAgIGxpbWl0cy5tYXhYID0gTWF0aC5tYXgobGltaXRzLm1heFgsIG1heFgpO1xuICAgICAgbGltaXRzLm1heFkgPSBNYXRoLm1heChsaW1pdHMubWF4WSwgbWF4WSk7XG4gICAgfSBlbHNlIGlmIChvcCA9PT0gXCJsaW5lVG9cIikgey8vIFRPRE86IEltcGxlbWVudCB0aGlzXG4gICAgfSBlbHNlIGlmIChvcCA9PT0gXCJxY3VydmVUb1wiKSB7Ly8gVE9ETzogSW1wbGVtZW50IHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gbGltaXRzO1xuICB9LCB7XG4gICAgbWluWDogSW5maW5pdHksXG4gICAgbWluWTogSW5maW5pdHksXG4gICAgbWF4WDogLUluZmluaXR5LFxuICAgIG1heFk6IC1JbmZpbml0eVxuICB9KTtcbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbn07XG5cbmNvbnN0IGdldEJvdW5kc0Zyb21Qb2ludHMgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gIGxldCBtaW5YID0gSW5maW5pdHk7XG4gIGxldCBtaW5ZID0gSW5maW5pdHk7XG4gIGxldCBtYXhYID0gLUluZmluaXR5O1xuICBsZXQgbWF4WSA9IC1JbmZpbml0eTtcblxuICBmb3IgKGNvbnN0IFt4LCB5XSBvZiBwb2ludHMpIHtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4KTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeSk7XG4gIH1cblxuICByZXR1cm4gW21pblgsIG1pblksIG1heFgsIG1heFldO1xufTtcblxuY29uc3QgZ2V0RnJlZURyYXdFbGVtZW50QWJzb2x1dGVDb29yZHMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRCb3VuZHNGcm9tUG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbn07XG5cbmNvbnN0IGdldExpbmVhckVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGxldCBjb29yZHM7XG5cbiAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA8IDIgfHwgIWdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIFhYWCB0aGlzIGlzIGp1c3QgYSBwb29yIGVzdGltYXRlIGFuZCBub3QgdmVyeSB1c2VmdWxcbiAgICBjb25zdCB7XG4gICAgICBtaW5YLFxuICAgICAgbWluWSxcbiAgICAgIG1heFgsXG4gICAgICBtYXhZXG4gICAgfSA9IGVsZW1lbnQucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAobGltaXRzLCBfcmVmMikge1xuICAgICAgbGV0IFt4LCB5XSA9IF9yZWYyO1xuICAgICAgbGltaXRzLm1pblkgPSBNYXRoLm1pbihsaW1pdHMubWluWSwgeSk7XG4gICAgICBsaW1pdHMubWluWCA9IE1hdGgubWluKGxpbWl0cy5taW5YLCB4KTtcbiAgICAgIGxpbWl0cy5tYXhYID0gTWF0aC5tYXgobGltaXRzLm1heFgsIHgpO1xuICAgICAgbGltaXRzLm1heFkgPSBNYXRoLm1heChsaW1pdHMubWF4WSwgeSk7XG4gICAgICByZXR1cm4gbGltaXRzO1xuICAgIH0sIHtcbiAgICAgIG1pblg6IEluZmluaXR5LFxuICAgICAgbWluWTogSW5maW5pdHksXG4gICAgICBtYXhYOiAtSW5maW5pdHksXG4gICAgICBtYXhZOiAtSW5maW5pdHlcbiAgICB9KTtcbiAgICBjb29yZHMgPSBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCk7IC8vIGZpcnN0IGVsZW1lbnQgaXMgYWx3YXlzIHRoZSBjdXJ2ZVxuXG4gICAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKHNoYXBlWzBdKTtcbiAgICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzKTtcbiAgICBjb29yZHMgPSBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG4gIH1cblxuICByZXR1cm4gY29vcmRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFycm93aGVhZFBvaW50cyA9IGZ1bmN0aW9uIChlbGVtZW50LCBzaGFwZSwgcG9zaXRpb24sIGFycm93aGVhZCkge1xuICBjb25zdCBvcHMgPSBnZXRDdXJ2ZVBhdGhPcHMoc2hhcGVbMF0pO1xuXG4gIGlmIChvcHMubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIFRoZSBpbmRleCBvZiB0aGUgYkN1cnZlIG9wZXJhdGlvbiB0byBleGFtaW5lLlxuXG5cbiAgY29uc3QgaW5kZXggPSBwb3NpdGlvbiA9PT0gXCJzdGFydFwiID8gMSA6IG9wcy5sZW5ndGggLSAxO1xuICBjb25zdCBkYXRhID0gb3BzW2luZGV4XS5kYXRhO1xuICBjb25zdCBwMyA9IFtkYXRhWzRdLCBkYXRhWzVdXTtcbiAgY29uc3QgcDIgPSBbZGF0YVsyXSwgZGF0YVszXV07XG4gIGNvbnN0IHAxID0gW2RhdGFbMF0sIGRhdGFbMV1dOyAvLyBXZSBuZWVkIHRvIGZpbmQgcDAgb2YgdGhlIGJlemllciBjdXJ2ZS5cbiAgLy8gSXQgaXMgdHlwaWNhbGx5IHRoZSBsYXN0IHBvaW50IG9mIHRoZSBwcmV2aW91c1xuICAvLyBjdXJ2ZTsgaXQgY2FuIGFsc28gYmUgdGhlIHBvc2l0aW9uIG9mIG1vdmVUbyBvcGVyYXRpb24uXG5cbiAgY29uc3QgcHJldk9wID0gb3BzW2luZGV4IC0gMV07XG4gIGxldCBwMCA9IFswLCAwXTtcblxuICBpZiAocHJldk9wLm9wID09PSBcIm1vdmVcIikge1xuICAgIHAwID0gcHJldk9wLmRhdGE7XG4gIH0gZWxzZSBpZiAocHJldk9wLm9wID09PSBcImJjdXJ2ZVRvXCIpIHtcbiAgICBwMCA9IFtwcmV2T3AuZGF0YVs0XSwgcHJldk9wLmRhdGFbNV1dO1xuICB9IC8vIEIodCkgPSBwMCAqICgxLXQpXjMgKyAzcDEgKiB0ICogKDEtdCleMiArIDNwMiAqIHReMiAqICgxLXQpICsgcDMgKiB0XjNcblxuXG4gIGNvbnN0IGVxdWF0aW9uID0gZnVuY3Rpb24gKHQsIGlkeCkge1xuICAgIHJldHVybiBNYXRoLnBvdygxIC0gdCwgMykgKiBwM1tpZHhdICsgMyAqIHQgKiBNYXRoLnBvdygxIC0gdCwgMikgKiBwMltpZHhdICsgMyAqIE1hdGgucG93KHQsIDIpICogKDEgLSB0KSAqIHAxW2lkeF0gKyBwMFtpZHhdICogTWF0aC5wb3codCwgMyk7XG4gIH07IC8vIEVlIGtub3cgdGhlIGxhc3QgcG9pbnQgb2YgdGhlIGFycm93IChvciB0aGUgZmlyc3QsIGlmIHN0YXJ0IGFycm93aGVhZCkuXG5cblxuICBjb25zdCBbeDIsIHkyXSA9IHBvc2l0aW9uID09PSBcInN0YXJ0XCIgPyBwMCA6IHAzOyAvLyBCeSB1c2luZyBjdWJpYyBiZXppZXIgZXF1YXRpb24gKEIodCkpIGFuZCB0aGUgZ2l2ZW4gcGFyYW1ldGVycyxcbiAgLy8gd2UgY2FsY3VsYXRlIGEgcG9pbnQgdGhhdCBpcyBjbG9zZXIgdG8gdGhlIGxhc3QgcG9pbnQuXG4gIC8vIFRoZSB2YWx1ZSAwLjMgaXMgY2hvc2VuIGFyYml0cmFyaWx5IGFuZCBpdCB3b3JrcyBiZXN0IGZvciBhbGxcbiAgLy8gdGhlIHRlc3RlZCBjYXNlcy5cblxuICBjb25zdCBbeDEsIHkxXSA9IFtlcXVhdGlvbigwLjMsIDApLCBlcXVhdGlvbigwLjMsIDEpXTsgLy8gRmluZCB0aGUgbm9ybWFsaXplZCBkaXJlY3Rpb24gdmVjdG9yIGJhc2VkIG9uIHRoZVxuICAvLyBwcmV2aW91c2x5IGNhbGN1bGF0ZWQgcG9pbnRzLlxuXG4gIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5oeXBvdCh4MiAtIHgxLCB5MiAtIHkxKTtcbiAgY29uc3QgbnggPSAoeDIgLSB4MSkgLyBkaXN0YW5jZTtcbiAgY29uc3QgbnkgPSAoeTIgLSB5MSkgLyBkaXN0YW5jZTtcbiAgY29uc3Qgc2l6ZSA9IHtcbiAgICBhcnJvdzogMzAsXG4gICAgYmFyOiAxNSxcbiAgICBkb3Q6IDE1LFxuICAgIHRyaWFuZ2xlOiAxNVxuICB9W2Fycm93aGVhZF07IC8vIHBpeGVscyAod2lsbCBkaWZmZXIgZm9yIGVhY2ggYXJyb3doZWFkKVxuXG4gIGxldCBsZW5ndGggPSAwO1xuXG4gIGlmIChhcnJvd2hlYWQgPT09IFwiYXJyb3dcIikge1xuICAgIC8vIExlbmd0aCBmb3IgLT4gYXJyb3dzIGlzIGJhc2VkIG9uIHRoZSBsZW5ndGggb2YgdGhlIGxhc3Qgc2VjdGlvblxuICAgIGNvbnN0IFtjeCwgY3ldID0gZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgW3B4LCBweV0gPSBlbGVtZW50LnBvaW50cy5sZW5ndGggPiAxID8gZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMl0gOiBbMCwgMF07XG4gICAgbGVuZ3RoID0gTWF0aC5oeXBvdChjeCAtIHB4LCBjeSAtIHB5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMZW5ndGggZm9yIG90aGVyIGFycm93aGVhZCB0eXBlcyBpcyBiYXNlZCBvbiB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBsaW5lXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LnBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgW3B4LCBweV0gPSBlbGVtZW50LnBvaW50c1tpIC0gMV0gfHwgWzAsIDBdO1xuICAgICAgY29uc3QgW2N4LCBjeV0gPSBlbGVtZW50LnBvaW50c1tpXTtcbiAgICAgIGxlbmd0aCArPSBNYXRoLmh5cG90KGN4IC0gcHgsIGN5IC0gcHkpO1xuICAgIH1cbiAgfSAvLyBTY2FsZSBkb3duIHRoZSBhcnJvd2hlYWQgdW50aWwgd2UgaGl0IGEgY2VydGFpbiBzaXplIHNvIHRoYXQgaXQgZG9lc24ndCBsb29rIHdlaXJkLlxuICAvLyBUaGlzIHZhbHVlIGlzIHNlbGVjdGVkIGJ5IG1pbmltaXppbmcgYSBtaW5pbXVtIHNpemUgd2l0aCB0aGUgbGFzdCBzZWdtZW50IG9mIHRoZSBhcnJvd2hlYWRcblxuXG4gIGNvbnN0IG1pblNpemUgPSBNYXRoLm1pbihzaXplLCBsZW5ndGggLyAyKTtcbiAgY29uc3QgeHMgPSB4MiAtIG54ICogbWluU2l6ZTtcbiAgY29uc3QgeXMgPSB5MiAtIG55ICogbWluU2l6ZTtcblxuICBpZiAoYXJyb3doZWFkID09PSBcImRvdFwiKSB7XG4gICAgY29uc3QgciA9IE1hdGguaHlwb3QoeXMgLSB5MiwgeHMgLSB4MikgKyBlbGVtZW50LnN0cm9rZVdpZHRoO1xuICAgIHJldHVybiBbeDIsIHkyLCByXTtcbiAgfVxuXG4gIGNvbnN0IGFuZ2xlID0ge1xuICAgIGFycm93OiAyMCxcbiAgICBiYXI6IDkwLFxuICAgIHRyaWFuZ2xlOiAyNVxuICB9W2Fycm93aGVhZF07IC8vIGRlZ3JlZXNcbiAgLy8gUmV0dXJuIHBvaW50c1xuXG4gIGNvbnN0IFt4MywgeTNdID0gcm90YXRlKHhzLCB5cywgeDIsIHkyLCAtYW5nbGUgKiBNYXRoLlBJIC8gMTgwKTtcbiAgY29uc3QgW3g0LCB5NF0gPSByb3RhdGUoeHMsIHlzLCB4MiwgeTIsIGFuZ2xlICogTWF0aC5QSSAvIDE4MCk7XG4gIHJldHVybiBbeDIsIHkyLCB4MywgeTMsIHg0LCB5NF07XG59O1xuXG5jb25zdCBnZXRMaW5lYXJFbGVtZW50Um90YXRlZEJvdW5kcyA9IGZ1bmN0aW9uIChlbGVtZW50LCBjeCwgY3kpIHtcbiAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA8IDIgfHwgIWdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIFhYWCB0aGlzIGlzIGp1c3QgYSBwb29yIGVzdGltYXRlIGFuZCBub3QgdmVyeSB1c2VmdWxcbiAgICBjb25zdCB7XG4gICAgICBtaW5YLFxuICAgICAgbWluWSxcbiAgICAgIG1heFgsXG4gICAgICBtYXhZXG4gICAgfSA9IGVsZW1lbnQucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAobGltaXRzLCBfcmVmMykge1xuICAgICAgbGV0IFt4LCB5XSA9IF9yZWYzO1xuICAgICAgW3gsIHldID0gcm90YXRlKGVsZW1lbnQueCArIHgsIGVsZW1lbnQueSArIHksIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBsaW1pdHMubWluWSA9IE1hdGgubWluKGxpbWl0cy5taW5ZLCB5KTtcbiAgICAgIGxpbWl0cy5taW5YID0gTWF0aC5taW4obGltaXRzLm1pblgsIHgpO1xuICAgICAgbGltaXRzLm1heFggPSBNYXRoLm1heChsaW1pdHMubWF4WCwgeCk7XG4gICAgICBsaW1pdHMubWF4WSA9IE1hdGgubWF4KGxpbWl0cy5tYXhZLCB5KTtcbiAgICAgIHJldHVybiBsaW1pdHM7XG4gICAgfSwge1xuICAgICAgbWluWDogSW5maW5pdHksXG4gICAgICBtaW5ZOiBJbmZpbml0eSxcbiAgICAgIG1heFg6IC1JbmZpbml0eSxcbiAgICAgIG1heFk6IC1JbmZpbml0eVxuICAgIH0pO1xuICAgIHJldHVybiBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG4gIH1cblxuICBjb25zdCBzaGFwZSA9IGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KTsgLy8gZmlyc3QgZWxlbWVudCBpcyBhbHdheXMgdGhlIGN1cnZlXG5cbiAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKHNoYXBlWzBdKTtcblxuICBjb25zdCB0cmFuc2Zvcm1YWSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIHJvdGF0ZShlbGVtZW50LnggKyB4LCBlbGVtZW50LnkgKyB5LCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICB9O1xuXG4gIHJldHVybiBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzLCB0cmFuc2Zvcm1YWSk7XG59OyAvLyBXZSBjb3VsZCBjYWNoZSB0aGlzIHN0dWZmXG5cblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRCb3VuZHMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBsZXQgYm91bmRzO1xuICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICBjb25zdCBjeCA9ICh4MSArIHgyKSAvIDI7XG4gIGNvbnN0IGN5ID0gKHkxICsgeTIpIC8gMjtcblxuICBpZiAoaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRCb3VuZHNGcm9tUG9pbnRzKGVsZW1lbnQucG9pbnRzLm1hcChmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIGxldCBbeCwgeV0gPSBfcmVmNDtcbiAgICAgIHJldHVybiByb3RhdGUoeCwgeSwgY3ggLSBlbGVtZW50LngsIGN5IC0gZWxlbWVudC55LCBlbGVtZW50LmFuZ2xlKTtcbiAgICB9KSk7XG4gICAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbiAgfSBlbHNlIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBib3VuZHMgPSBnZXRMaW5lYXJFbGVtZW50Um90YXRlZEJvdW5kcyhlbGVtZW50LCBjeCwgY3kpO1xuICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJkaWFtb25kXCIpIHtcbiAgICBjb25zdCBbeDExLCB5MTFdID0gcm90YXRlKGN4LCB5MSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBbeDEyLCB5MTJdID0gcm90YXRlKGN4LCB5MiwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBbeDIyLCB5MjJdID0gcm90YXRlKHgxLCBjeSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBbeDIxLCB5MjFdID0gcm90YXRlKHgyLCBjeSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBtaW5YID0gTWF0aC5taW4oeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oeTExLCB5MTIsIHkyMiwgeTIxKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgoeTExLCB5MTIsIHkyMiwgeTIxKTtcbiAgICBib3VuZHMgPSBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG4gIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSBcImVsbGlwc2VcIikge1xuICAgIGNvbnN0IHcgPSAoeDIgLSB4MSkgLyAyO1xuICAgIGNvbnN0IGggPSAoeTIgLSB5MSkgLyAyO1xuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IHd3ID0gTWF0aC5oeXBvdCh3ICogY29zLCBoICogc2luKTtcbiAgICBjb25zdCBoaCA9IE1hdGguaHlwb3QoaCAqIGNvcywgdyAqIHNpbik7XG4gICAgYm91bmRzID0gW2N4IC0gd3csIGN5IC0gaGgsIGN4ICsgd3csIGN5ICsgaGhdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IFt4MTEsIHkxMV0gPSByb3RhdGUoeDEsIHkxLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IFt4MTIsIHkxMl0gPSByb3RhdGUoeDEsIHkyLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IFt4MjIsIHkyMl0gPSByb3RhdGUoeDIsIHkyLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IFt4MjEsIHkyMV0gPSByb3RhdGUoeDIsIHkxLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbih4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbih5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heCh4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heCh5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgIGJvdW5kcyA9IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbiAgfVxuXG4gIHJldHVybiBib3VuZHM7XG59O1xuZXhwb3J0IGNvbnN0IGdldENvbW1vbkJvdW5kcyA9IGZ1bmN0aW9uIChlbGVtZW50cykge1xuICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMF07XG4gIH1cblxuICBsZXQgbWluWCA9IEluZmluaXR5O1xuICBsZXQgbWF4WCA9IC1JbmZpbml0eTtcbiAgbGV0IG1pblkgPSBJbmZpbml0eTtcbiAgbGV0IG1heFkgPSAtSW5maW5pdHk7XG4gIGVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEJvdW5kcyhlbGVtZW50KTtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeDEpO1xuICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCB5MSk7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHgyKTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeTIpO1xuICB9KTtcbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbn07XG5leHBvcnQgY29uc3QgZ2V0UmVzaXplZEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50LCBuZXh0V2lkdGgsIG5leHRIZWlnaHQsIG5vcm1hbGl6ZVBvaW50cykge1xuICBpZiAoIShpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkgfHwgaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpKSB7XG4gICAgcmV0dXJuIFtlbGVtZW50LngsIGVsZW1lbnQueSwgZWxlbWVudC54ICsgbmV4dFdpZHRoLCBlbGVtZW50LnkgKyBuZXh0SGVpZ2h0XTtcbiAgfVxuXG4gIGNvbnN0IHBvaW50cyA9IHJlc2NhbGVQb2ludHMoMCwgbmV4dFdpZHRoLCByZXNjYWxlUG9pbnRzKDEsIG5leHRIZWlnaHQsIGVsZW1lbnQucG9pbnRzLCBub3JtYWxpemVQb2ludHMpLCBub3JtYWxpemVQb2ludHMpO1xuICBsZXQgYm91bmRzO1xuXG4gIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEZyZWUgRHJhd1xuICAgIGJvdW5kcyA9IGdldEJvdW5kc0Zyb21Qb2ludHMocG9pbnRzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMaW5lXG4gICAgY29uc3QgZ2VuID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gICAgY29uc3QgY3VydmUgPSBlbGVtZW50LnN0cm9rZVNoYXJwbmVzcyA9PT0gXCJzaGFycFwiID8gZ2VuLmxpbmVhclBhdGgocG9pbnRzLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSkgOiBnZW4uY3VydmUocG9pbnRzLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSk7XG4gICAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKGN1cnZlKTtcbiAgICBib3VuZHMgPSBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzKTtcbiAgfVxuXG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGJvdW5kcztcbiAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudFBvaW50c0Nvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50LCBwb2ludHMsIHNoYXJwbmVzcykge1xuICAvLyBUaGlzIG1pZ2h0IGJlIGNvbXB1dGF0aW9uYWxseSBoZWF2ZXlcbiAgY29uc3QgZ2VuID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gIGNvbnN0IGN1cnZlID0gc2hhcnBuZXNzID09PSBcInNoYXJwXCIgPyBnZW4ubGluZWFyUGF0aChwb2ludHMsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKSA6IGdlbi5jdXJ2ZShwb2ludHMsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKTtcbiAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKGN1cnZlKTtcbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0TWluTWF4WFlGcm9tQ3VydmVQYXRoT3BzKG9wcyk7XG4gIHJldHVybiBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG59O1xuZXhwb3J0IGNvbnN0IGdldENsb3Nlc3RFbGVtZW50Qm91bmRzID0gZnVuY3Rpb24gKGVsZW1lbnRzLCBmcm9tKSB7XG4gIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbiAgfVxuXG4gIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICBsZXQgY2xvc2VzdEVsZW1lbnQgPSBlbGVtZW50c1swXTtcbiAgZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50Qm91bmRzKGVsZW1lbnQpO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2UyZCgoeDEgKyB4MikgLyAyLCAoeTEgKyB5MikgLyAyLCBmcm9tLngsIGZyb20ueSk7XG5cbiAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIGNsb3Nlc3RFbGVtZW50ID0gZWxlbWVudDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZ2V0RWxlbWVudEJvdW5kcyhjbG9zZXN0RWxlbWVudCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldENvbW1vbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKGVsZW1lbnRzKSB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIHJldHVybiB7XG4gICAgbWluWCxcbiAgICBtaW5ZLFxuICAgIG1heFgsXG4gICAgbWF4WSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICBtaWRYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBtaWRZOiAobWluWSArIG1heFkpIC8gMlxuICB9O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../element/bounds.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../element/bounds.ts?");
2645
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"getArrowheadPoints\\\": () => (/* binding */ getArrowheadPoints),\\n/* harmony export */ \\\"getClosestElementBounds\\\": () => (/* binding */ getClosestElementBounds),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* binding */ getCommonBoundingBox),\\n/* harmony export */ \\\"getCommonBounds\\\": () => (/* binding */ getCommonBounds),\\n/* harmony export */ \\\"getCurvePathOps\\\": () => (/* binding */ getCurvePathOps),\\n/* harmony export */ \\\"getDiamondPoints\\\": () => (/* binding */ getDiamondPoints),\\n/* harmony export */ \\\"getElementAbsoluteCoords\\\": () => (/* binding */ getElementAbsoluteCoords),\\n/* harmony export */ \\\"getElementBounds\\\": () => (/* binding */ getElementBounds),\\n/* harmony export */ \\\"getElementPointsCoords\\\": () => (/* binding */ getElementPointsCoords),\\n/* harmony export */ \\\"getResizedElementAbsoluteCoords\\\": () => (/* binding */ getResizedElementAbsoluteCoords),\\n/* harmony export */ \\\"pointRelativeTo\\\": () => (/* binding */ pointRelativeTo)\\n/* harmony export */ });\\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ \\\"../../math.ts\\\");\\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ \\\"../../../node_modules/roughjs/bin/rough.js\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../points */ \\\"../../points.ts\\\");\\n\\r\\n\\r\\n\\r\\n\\r\\n // x and y position of top left corner, x and y position of bottom right corner\\r\\n// If the element is created from right to left, the width is going to be negative\\r\\n// This set of functions retrieves the absolute position of the 4 points.\\r\\nconst getElementAbsoluteCoords = function (element) {\\r\\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\\r\\n return getFreeDrawElementAbsoluteCoords(element);\\r\\n }\\r\\n else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\\r\\n return getLinearElementAbsoluteCoords(element);\\r\\n }\\r\\n return [element.x, element.y, element.x + element.width, element.y + element.height];\\r\\n};\\r\\nconst pointRelativeTo = function (element, absoluteCoords) {\\r\\n return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y];\\r\\n};\\r\\nconst getDiamondPoints = function (element) {\\r\\n // Here we add +1 to avoid these numbers to be 0\\r\\n // otherwise rough.js will throw an error complaining about it\\r\\n const topX = Math.floor(element.width / 2) + 1;\\r\\n const topY = 0;\\r\\n const rightX = element.width;\\r\\n const rightY = Math.floor(element.height / 2) + 1;\\r\\n const bottomX = topX;\\r\\n const bottomY = element.height;\\r\\n const leftX = 0;\\r\\n const leftY = rightY;\\r\\n return [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY];\\r\\n};\\r\\nconst getCurvePathOps = function (shape) {\\r\\n for (const set of shape.sets) {\\r\\n if (set.type === \\\"path\\\") {\\r\\n return set.ops;\\r\\n }\\r\\n }\\r\\n return shape.sets[0].ops;\\r\\n}; // reference: https://eliot-jones.com/2019/12/cubic-bezier-curve-bounding-boxes\\r\\nconst getBezierValueForT = function (t, p0, p1, p2, p3) {\\r\\n const oneMinusT = 1 - t;\\r\\n return Math.pow(oneMinusT, 3) * p0 + 3 * Math.pow(oneMinusT, 2) * t * p1 + 3 * oneMinusT * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\\r\\n};\\r\\nconst solveQuadratic = function (p0, p1, p2, p3) {\\r\\n const i = p1 - p0;\\r\\n const j = p2 - p1;\\r\\n const k = p3 - p2;\\r\\n const a = 3 * i - 6 * j + 3 * k;\\r\\n const b = 6 * j - 6 * i;\\r\\n const c = 3 * i;\\r\\n const sqrtPart = b * b - 4 * a * c;\\r\\n const hasSolution = sqrtPart >= 0;\\r\\n if (!hasSolution) {\\r\\n return false;\\r\\n }\\r\\n let s1 = null;\\r\\n let s2 = null;\\r\\n let t1 = Infinity;\\r\\n let t2 = Infinity;\\r\\n if (a === 0) {\\r\\n t1 = t2 = -c / b;\\r\\n }\\r\\n else {\\r\\n t1 = (-b + Math.sqrt(sqrtPart)) / (2 * a);\\r\\n t2 = (-b - Math.sqrt(sqrtPart)) / (2 * a);\\r\\n }\\r\\n if (t1 >= 0 && t1 <= 1) {\\r\\n s1 = getBezierValueForT(t1, p0, p1, p2, p3);\\r\\n }\\r\\n if (t2 >= 0 && t2 <= 1) {\\r\\n s2 = getBezierValueForT(t2, p0, p1, p2, p3);\\r\\n }\\r\\n return [s1, s2];\\r\\n};\\r\\nconst getCubicBezierCurveBound = function (p0, p1, p2, p3) {\\r\\n const solX = solveQuadratic(p0[0], p1[0], p2[0], p3[0]);\\r\\n const solY = solveQuadratic(p0[1], p1[1], p2[1], p3[1]);\\r\\n let minX = Math.min(p0[0], p3[0]);\\r\\n let maxX = Math.max(p0[0], p3[0]);\\r\\n if (solX) {\\r\\n const xs = solX.filter(function (x) {\\r\\n return x !== null;\\r\\n });\\r\\n minX = Math.min(minX, ...xs);\\r\\n maxX = Math.max(maxX, ...xs);\\r\\n }\\r\\n let minY = Math.min(p0[1], p3[1]);\\r\\n let maxY = Math.max(p0[1], p3[1]);\\r\\n if (solY) {\\r\\n const ys = solY.filter(function (y) {\\r\\n return y !== null;\\r\\n });\\r\\n minY = Math.min(minY, ...ys);\\r\\n maxY = Math.max(maxY, ...ys);\\r\\n }\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getMinMaxXYFromCurvePathOps = function (ops, transformXY) {\\r\\n let currentP = [0, 0];\\r\\n const { minX, minY, maxX, maxY } = ops.reduce(function (limits, _ref) {\\r\\n let { op, data } = _ref;\\r\\n // There are only four operation types:\\r\\n // move, bcurveTo, lineTo, and curveTo\\r\\n if (op === \\\"move\\\") {\\r\\n // change starting point\\r\\n currentP = data; // move operation does not draw anything; so, it always\\r\\n // returns false\\r\\n }\\r\\n else if (op === \\\"bcurveTo\\\") {\\r\\n const _p1 = [data[0], data[1]];\\r\\n const _p2 = [data[2], data[3]];\\r\\n const _p3 = [data[4], data[5]];\\r\\n const p1 = transformXY ? transformXY(..._p1) : _p1;\\r\\n const p2 = transformXY ? transformXY(..._p2) : _p2;\\r\\n const p3 = transformXY ? transformXY(..._p3) : _p3;\\r\\n const p0 = transformXY ? transformXY(...currentP) : currentP;\\r\\n currentP = _p3;\\r\\n const [minX, minY, maxX, maxY] = getCubicBezierCurveBound(p0, p1, p2, p3);\\r\\n limits.minX = Math.min(limits.minX, minX);\\r\\n limits.minY = Math.min(limits.minY, minY);\\r\\n limits.maxX = Math.max(limits.maxX, maxX);\\r\\n limits.maxY = Math.max(limits.maxY, maxY);\\r\\n }\\r\\n else if (op === \\\"lineTo\\\") { // TODO: Implement this\\r\\n }\\r\\n else if (op === \\\"qcurveTo\\\") { // TODO: Implement this\\r\\n }\\r\\n return limits;\\r\\n }, {\\r\\n minX: Infinity,\\r\\n minY: Infinity,\\r\\n maxX: -Infinity,\\r\\n maxY: -Infinity\\r\\n });\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getBoundsFromPoints = function (points) {\\r\\n let minX = Infinity;\\r\\n let minY = Infinity;\\r\\n let maxX = -Infinity;\\r\\n let maxY = -Infinity;\\r\\n for (const [x, y] of points) {\\r\\n minX = Math.min(minX, x);\\r\\n minY = Math.min(minY, y);\\r\\n maxX = Math.max(maxX, x);\\r\\n maxY = Math.max(maxY, y);\\r\\n }\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getFreeDrawElementAbsoluteCoords = function (element) {\\r\\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points);\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n};\\r\\nconst getLinearElementAbsoluteCoords = function (element) {\\r\\n let coords;\\r\\n if (element.points.length < 2 || !(0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element)) {\\r\\n // XXX this is just a poor estimate and not very useful\\r\\n const { minX, minY, maxX, maxY } = element.points.reduce(function (limits, _ref2) {\\r\\n let [x, y] = _ref2;\\r\\n limits.minY = Math.min(limits.minY, y);\\r\\n limits.minX = Math.min(limits.minX, x);\\r\\n limits.maxX = Math.max(limits.maxX, x);\\r\\n limits.maxY = Math.max(limits.maxY, y);\\r\\n return limits;\\r\\n }, {\\r\\n minX: Infinity,\\r\\n minY: Infinity,\\r\\n maxX: -Infinity,\\r\\n maxY: -Infinity\\r\\n });\\r\\n coords = [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n }\\r\\n else {\\r\\n const shape = (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element); // first element is always the curve\\r\\n const ops = getCurvePathOps(shape[0]);\\r\\n const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\\r\\n coords = [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n }\\r\\n return coords;\\r\\n};\\r\\nconst getArrowheadPoints = function (element, shape, position, arrowhead) {\\r\\n const ops = getCurvePathOps(shape[0]);\\r\\n if (ops.length < 1) {\\r\\n return null;\\r\\n } // The index of the bCurve operation to examine.\\r\\n const index = position === \\\"start\\\" ? 1 : ops.length - 1;\\r\\n const data = ops[index].data;\\r\\n const p3 = [data[4], data[5]];\\r\\n const p2 = [data[2], data[3]];\\r\\n const p1 = [data[0], data[1]]; // We need to find p0 of the bezier curve.\\r\\n // It is typically the last point of the previous\\r\\n // curve; it can also be the position of moveTo operation.\\r\\n const prevOp = ops[index - 1];\\r\\n let p0 = [0, 0];\\r\\n if (prevOp.op === \\\"move\\\") {\\r\\n p0 = prevOp.data;\\r\\n }\\r\\n else if (prevOp.op === \\\"bcurveTo\\\") {\\r\\n p0 = [prevOp.data[4], prevOp.data[5]];\\r\\n } // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\\r\\n const equation = function (t, idx) {\\r\\n return Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3);\\r\\n }; // Ee know the last point of the arrow (or the first, if start arrowhead).\\r\\n const [x2, y2] = position === \\\"start\\\" ? p0 : p3; // By using cubic bezier equation (B(t)) and the given parameters,\\r\\n // we calculate a point that is closer to the last point.\\r\\n // The value 0.3 is chosen arbitrarily and it works best for all\\r\\n // the tested cases.\\r\\n const [x1, y1] = [equation(0.3, 0), equation(0.3, 1)]; // Find the normalized direction vector based on the\\r\\n // previously calculated points.\\r\\n const distance = Math.hypot(x2 - x1, y2 - y1);\\r\\n const nx = (x2 - x1) / distance;\\r\\n const ny = (y2 - y1) / distance;\\r\\n const size = {\\r\\n arrow: 30,\\r\\n bar: 15,\\r\\n dot: 15,\\r\\n triangle: 15\\r\\n }[arrowhead]; // pixels (will differ for each arrowhead)\\r\\n let length = 0;\\r\\n if (arrowhead === \\\"arrow\\\") {\\r\\n // Length for -> arrows is based on the length of the last section\\r\\n const [cx, cy] = element.points[element.points.length - 1];\\r\\n const [px, py] = element.points.length > 1 ? element.points[element.points.length - 2] : [0, 0];\\r\\n length = Math.hypot(cx - px, cy - py);\\r\\n }\\r\\n else {\\r\\n // Length for other arrowhead types is based on the total length of the line\\r\\n for (let i = 0; i < element.points.length; i++) {\\r\\n const [px, py] = element.points[i - 1] || [0, 0];\\r\\n const [cx, cy] = element.points[i];\\r\\n length += Math.hypot(cx - px, cy - py);\\r\\n }\\r\\n } // Scale down the arrowhead until we hit a certain size so that it doesn't look weird.\\r\\n // This value is selected by minimizing a minimum size with the last segment of the arrowhead\\r\\n const minSize = Math.min(size, length / 2);\\r\\n const xs = x2 - nx * minSize;\\r\\n const ys = y2 - ny * minSize;\\r\\n if (arrowhead === \\\"dot\\\") {\\r\\n const r = Math.hypot(ys - y2, xs - x2) + element.strokeWidth;\\r\\n return [x2, y2, r];\\r\\n }\\r\\n const angle = {\\r\\n arrow: 20,\\r\\n bar: 90,\\r\\n triangle: 25\\r\\n }[arrowhead]; // degrees\\r\\n // Return points\\r\\n const [x3, y3] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, -angle * Math.PI / 180);\\r\\n const [x4, y4] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, angle * Math.PI / 180);\\r\\n return [x2, y2, x3, y3, x4, y4];\\r\\n};\\r\\nconst getLinearElementRotatedBounds = function (element, cx, cy) {\\r\\n if (element.points.length < 2 || !(0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element)) {\\r\\n // XXX this is just a poor estimate and not very useful\\r\\n const { minX, minY, maxX, maxY } = element.points.reduce(function (limits, _ref3) {\\r\\n let [x, y] = _ref3;\\r\\n [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\\r\\n limits.minY = Math.min(limits.minY, y);\\r\\n limits.minX = Math.min(limits.minX, x);\\r\\n limits.maxX = Math.max(limits.maxX, x);\\r\\n limits.maxY = Math.max(limits.maxY, y);\\r\\n return limits;\\r\\n }, {\\r\\n minX: Infinity,\\r\\n minY: Infinity,\\r\\n maxX: -Infinity,\\r\\n maxY: -Infinity\\r\\n });\\r\\n return [minX, minY, maxX, maxY];\\r\\n }\\r\\n const shape = (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.getShapeForElement)(element); // first element is always the curve\\r\\n const ops = getCurvePathOps(shape[0]);\\r\\n const transformXY = function (x, y) {\\r\\n return (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\\r\\n };\\r\\n return getMinMaxXYFromCurvePathOps(ops, transformXY);\\r\\n}; // We could cache this stuff\\r\\nconst getElementBounds = function (element) {\\r\\n let bounds;\\r\\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);\\r\\n const cx = (x1 + x2) / 2;\\r\\n const cy = (y1 + y2) / 2;\\r\\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\\r\\n const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points.map(function (_ref4) {\\r\\n let [x, y] = _ref4;\\r\\n return (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx - element.x, cy - element.y, element.angle);\\r\\n }));\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n }\\r\\n else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\\r\\n bounds = getLinearElementRotatedBounds(element, cx, cy);\\r\\n }\\r\\n else if (element.type === \\\"diamond\\\") {\\r\\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y1, cx, cy, element.angle);\\r\\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y2, cx, cy, element.angle);\\r\\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, cy, cx, cy, element.angle);\\r\\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, cy, cx, cy, element.angle);\\r\\n const minX = Math.min(x11, x12, x22, x21);\\r\\n const minY = Math.min(y11, y12, y22, y21);\\r\\n const maxX = Math.max(x11, x12, x22, x21);\\r\\n const maxY = Math.max(y11, y12, y22, y21);\\r\\n bounds = [minX, minY, maxX, maxY];\\r\\n }\\r\\n else if (element.type === \\\"ellipse\\\") {\\r\\n const w = (x2 - x1) / 2;\\r\\n const h = (y2 - y1) / 2;\\r\\n const cos = Math.cos(element.angle);\\r\\n const sin = Math.sin(element.angle);\\r\\n const ww = Math.hypot(w * cos, h * sin);\\r\\n const hh = Math.hypot(h * cos, w * sin);\\r\\n bounds = [cx - ww, cy - hh, cx + ww, cy + hh];\\r\\n }\\r\\n else {\\r\\n const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y1, cx, cy, element.angle);\\r\\n const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y2, cx, cy, element.angle);\\r\\n const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y2, cx, cy, element.angle);\\r\\n const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y1, cx, cy, element.angle);\\r\\n const minX = Math.min(x11, x12, x22, x21);\\r\\n const minY = Math.min(y11, y12, y22, y21);\\r\\n const maxX = Math.max(x11, x12, x22, x21);\\r\\n const maxY = Math.max(y11, y12, y22, y21);\\r\\n bounds = [minX, minY, maxX, maxY];\\r\\n }\\r\\n return bounds;\\r\\n};\\r\\nconst getCommonBounds = function (elements) {\\r\\n if (!elements.length) {\\r\\n return [0, 0, 0, 0];\\r\\n }\\r\\n let minX = Infinity;\\r\\n let maxX = -Infinity;\\r\\n let minY = Infinity;\\r\\n let maxY = -Infinity;\\r\\n elements.forEach(function (element) {\\r\\n const [x1, y1, x2, y2] = getElementBounds(element);\\r\\n minX = Math.min(minX, x1);\\r\\n minY = Math.min(minY, y1);\\r\\n maxX = Math.max(maxX, x2);\\r\\n maxY = Math.max(maxY, y2);\\r\\n });\\r\\n return [minX, minY, maxX, maxY];\\r\\n};\\r\\nconst getResizedElementAbsoluteCoords = function (element, nextWidth, nextHeight, normalizePoints) {\\r\\n if (!((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element))) {\\r\\n return [element.x, element.y, element.x + nextWidth, element.y + nextHeight];\\r\\n }\\r\\n const points = (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(0, nextWidth, (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(1, nextHeight, element.points, normalizePoints), normalizePoints);\\r\\n let bounds;\\r\\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\\r\\n // Free Draw\\r\\n bounds = getBoundsFromPoints(points);\\r\\n }\\r\\n else {\\r\\n // Line\\r\\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].generator();\\r\\n const curve = element.strokeSharpness === \\\"sharp\\\" ? gen.linearPath(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\\r\\n const ops = getCurvePathOps(curve);\\r\\n bounds = getMinMaxXYFromCurvePathOps(ops);\\r\\n }\\r\\n const [minX, minY, maxX, maxY] = bounds;\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n};\\r\\nconst getElementPointsCoords = function (element, points, sharpness) {\\r\\n // This might be computationally heavey\\r\\n const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].generator();\\r\\n const curve = sharpness === \\\"sharp\\\" ? gen.linearPath(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\\r\\n const ops = getCurvePathOps(curve);\\r\\n const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\\r\\n return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\\r\\n};\\r\\nconst getClosestElementBounds = function (elements, from) {\\r\\n if (!elements.length) {\\r\\n return [0, 0, 0, 0];\\r\\n }\\r\\n let minDistance = Infinity;\\r\\n let closestElement = elements[0];\\r\\n elements.forEach(function (element) {\\r\\n const [x1, y1, x2, y2] = getElementBounds(element);\\r\\n const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)((x1 + x2) / 2, (y1 + y2) / 2, from.x, from.y);\\r\\n if (distance < minDistance) {\\r\\n minDistance = distance;\\r\\n closestElement = element;\\r\\n }\\r\\n });\\r\\n return getElementBounds(closestElement);\\r\\n};\\r\\nconst getCommonBoundingBox = function (elements) {\\r\\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\\r\\n return {\\r\\n minX,\\r\\n minY,\\r\\n maxX,\\r\\n maxY,\\r\\n width: maxX - minX,\\r\\n height: maxY - minY,\\r\\n midX: (minX + maxX) / 2,\\r\\n midY: (minY + maxY) / 2\\r\\n };\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFlLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDbkMsTUFBTSxHQUFHLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDekQ7U0FBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsNkNBQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsNkNBQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsNkNBQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsNkNBQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMs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Q0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxRQUFRLEdBQUcsV0FBVyxFQUFFO1lBQzFCLFdBQVcsR0FBRyxRQUFRLENBQUM7WUFDdkIsY0FBYyxHQUFHLE9BQU8sQ0FBQztTQUMxQjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDSyxNQUFNLG9CQUFvQixHQUFHLFVBQVUsUUFBUTtJQUNwRCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osS0FBSyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQ2xCLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUNuQixJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN2QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztLQUN4QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2VsZW1lbnQvYm91bmRzLnRzPzAwZjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UyZCwgcm90YXRlIH0gZnJvbSBcIi4uL21hdGhcIjtcbmltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IGdldFNoYXBlRm9yRWxlbWVudCwgZ2VuZXJhdGVSb3VnaE9wdGlvbnMgfSBmcm9tIFwiLi4vcmVuZGVyZXIvcmVuZGVyRWxlbWVudFwiO1xuaW1wb3J0IHsgaXNGcmVlRHJhd0VsZW1lbnQsIGlzTGluZWFyRWxlbWVudCB9IGZyb20gXCIuL3R5cGVDaGVja3NcIjtcbmltcG9ydCB7IHJlc2NhbGVQb2ludHMgfSBmcm9tIFwiLi4vcG9pbnRzXCI7IC8vIHggYW5kIHkgcG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyLCB4IGFuZCB5IHBvc2l0aW9uIG9mIGJvdHRvbSByaWdodCBjb3JuZXJcblxuLy8gSWYgdGhlIGVsZW1lbnQgaXMgY3JlYXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQsIHRoZSB3aWR0aCBpcyBnb2luZyB0byBiZSBuZWdhdGl2ZVxuLy8gVGhpcyBzZXQgb2YgZnVuY3Rpb25zIHJldHJpZXZlcyB0aGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIDQgcG9pbnRzLlxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiBnZXRGcmVlRHJhd0VsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgfSBlbHNlIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZ2V0TGluZWFyRWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIFtlbGVtZW50LngsIGVsZW1lbnQueSwgZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCwgZWxlbWVudC55ICsgZWxlbWVudC5oZWlnaHRdO1xufTtcbmV4cG9ydCBjb25zdCBwb2ludFJlbGF0aXZlVG8gPSBmdW5jdGlvbiAoZWxlbWVudCwgYWJzb2x1dGVDb29yZHMpIHtcbiAgcmV0dXJuIFthYnNvbHV0ZUNvb3Jkc1swXSAtIGVsZW1lbnQueCwgYWJzb2x1dGVDb29yZHNbMV0gLSBlbGVtZW50LnldO1xufTtcbmV4cG9ydCBjb25zdCBnZXREaWFtb25kUG9pbnRzID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgLy8gSGVyZSB3ZSBhZGQgKzEgdG8gYXZvaWQgdGhlc2UgbnVtYmVycyB0byBiZSAwXG4gIC8vIG90aGVyd2lzZSByb3VnaC5qcyB3aWxsIHRocm93IGFuIGVycm9yIGNvbXBsYWluaW5nIGFib3V0IGl0XG4gIGNvbnN0IHRvcFggPSBNYXRoLmZsb29yKGVsZW1lbnQud2lkdGggLyAyKSArIDE7XG4gIGNvbnN0IHRvcFkgPSAwO1xuICBjb25zdCByaWdodFggPSBlbGVtZW50LndpZHRoO1xuICBjb25zdCByaWdodFkgPSBNYXRoLmZsb29yKGVsZW1lbnQuaGVpZ2h0IC8gMikgKyAxO1xuICBjb25zdCBib3R0b21YID0gdG9wWDtcbiAgY29uc3QgYm90dG9tWSA9IGVsZW1lbnQuaGVpZ2h0O1xuICBjb25zdCBsZWZ0WCA9IDA7XG4gIGNvbnN0IGxlZnRZID0gcmlnaHRZO1xuICByZXR1cm4gW3RvcFgsIHRvcFksIHJpZ2h0WCwgcmlnaHRZLCBib3R0b21YLCBib3R0b21ZLCBsZWZ0WCwgbGVmdFldO1xufTtcbmV4cG9ydCBjb25zdCBnZXRDdXJ2ZVBhdGhPcHMgPSBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgZm9yIChjb25zdCBzZXQgb2Ygc2hhcGUuc2V0cykge1xuICAgIGlmIChzZXQudHlwZSA9PT0gXCJwYXRoXCIpIHtcbiAgICAgIHJldHVybiBzZXQub3BzO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzaGFwZS5zZXRzWzBdLm9wcztcbn07IC8vIHJlZmVyZW5jZTogaHR0cHM6Ly9lbGlvdC1qb25lcy5jb20vMjAxOS8xMi9jdWJpYy1iZXppZXItY3VydmUtYm91bmRpbmctYm94ZXNcblxuY29uc3QgZ2V0QmV6aWVyVmFsdWVGb3JUID0gZnVuY3Rpb24gKHQsIHAwLCBwMSwgcDIsIHAzKSB7XG4gIGNvbnN0IG9uZU1pbnVzVCA9IDEgLSB0O1xuICByZXR1cm4gTWF0aC5wb3cob25lTWludXNULCAzKSAqIHAwICsgMyAqIE1hdGgucG93KG9uZU1pbnVzVCwgMikgKiB0ICogcDEgKyAzICogb25lTWludXNUICogTWF0aC5wb3codCwgMikgKiBwMiArIE1hdGgucG93KHQsIDMpICogcDM7XG59O1xuXG5jb25zdCBzb2x2ZVF1YWRyYXRpYyA9IGZ1bmN0aW9uIChwMCwgcDEsIHAyLCBwMykge1xuICBjb25zdCBpID0gcDEgLSBwMDtcbiAgY29uc3QgaiA9IHAyIC0gcDE7XG4gIGNvbnN0IGsgPSBwMyAtIHAyO1xuICBjb25zdCBhID0gMyAqIGkgLSA2ICogaiArIDMgKiBrO1xuICBjb25zdCBiID0gNiAqIGogLSA2ICogaTtcbiAgY29uc3QgYyA9IDMgKiBpO1xuICBjb25zdCBzcXJ0UGFydCA9IGIgKiBiIC0gNCAqIGEgKiBjO1xuICBjb25zdCBoYXNTb2x1dGlvbiA9IHNxcnRQYXJ0ID49IDA7XG5cbiAgaWYgKCFoYXNTb2x1dGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCBzMSA9IG51bGw7XG4gIGxldCBzMiA9IG51bGw7XG4gIGxldCB0MSA9IEluZmluaXR5O1xuICBsZXQgdDIgPSBJbmZpbml0eTtcblxuICBpZiAoYSA9PT0gMCkge1xuICAgIHQxID0gdDIgPSAtYyAvIGI7XG4gIH0gZWxzZSB7XG4gICAgdDEgPSAoLWIgKyBNYXRoLnNxcnQoc3FydFBhcnQpKSAvICgyICogYSk7XG4gICAgdDIgPSAoLWIgLSBNYXRoLnNxcnQoc3FydFBhcnQpKSAvICgyICogYSk7XG4gIH1cblxuICBpZiAodDEgPj0gMCAmJiB0MSA8PSAxKSB7XG4gICAgczEgPSBnZXRCZXppZXJWYWx1ZUZvclQodDEsIHAwLCBwMSwgcDIsIHAzKTtcbiAgfVxuXG4gIGlmICh0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICBzMiA9IGdldEJlemllclZhbHVlRm9yVCh0MiwgcDAsIHAxLCBwMiwgcDMpO1xuICB9XG5cbiAgcmV0dXJuIFtzMSwgczJdO1xufTtcblxuY29uc3QgZ2V0Q3ViaWNCZXppZXJDdXJ2ZUJvdW5kID0gZnVuY3Rpb24gKHAwLCBwMSwgcDIsIHAzKSB7XG4gIGNvbnN0IHNvbFggPSBzb2x2ZVF1YWRyYXRpYyhwMFswXSwgcDFbMF0sIHAyWzBdLCBwM1swXSk7XG4gIGNvbnN0IHNvbFkgPSBzb2x2ZVF1YWRyYXRpYyhwMFsxXSwgcDFbMV0sIHAyWzFdLCBwM1sxXSk7XG4gIGxldCBtaW5YID0gTWF0aC5taW4ocDBbMF0sIHAzWzBdKTtcbiAgbGV0IG1heFggPSBNYXRoLm1heChwMFswXSwgcDNbMF0pO1xuXG4gIGlmIChzb2xYKSB7XG4gICAgY29uc3QgeHMgPSBzb2xYLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHggIT09IG51bGw7XG4gICAgfSk7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIC4uLnhzKTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgLi4ueHMpO1xuICB9XG5cbiAgbGV0IG1pblkgPSBNYXRoLm1pbihwMFsxXSwgcDNbMV0pO1xuICBsZXQgbWF4WSA9IE1hdGgubWF4KHAwWzFdLCBwM1sxXSk7XG5cbiAgaWYgKHNvbFkpIHtcbiAgICBjb25zdCB5cyA9IHNvbFkuZmlsdGVyKGZ1bmN0aW9uICh5KSB7XG4gICAgICByZXR1cm4geSAhPT0gbnVsbDtcbiAgICB9KTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgLi4ueXMpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCAuLi55cyk7XG4gIH1cblxuICByZXR1cm4gW21pblgsIG1pblksIG1heFgsIG1heFldO1xufTtcblxuY29uc3QgZ2V0TWluTWF4WFlGcm9tQ3VydmVQYXRoT3BzID0gZnVuY3Rpb24gKG9wcywgdHJhbnNmb3JtWFkpIHtcbiAgbGV0IGN1cnJlbnRQID0gWzAsIDBdO1xuICBjb25zdCB7XG4gICAgbWluWCxcbiAgICBtaW5ZLFxuICAgIG1heFgsXG4gICAgbWF4WVxuICB9ID0gb3BzLnJlZHVjZShmdW5jdGlvbiAobGltaXRzLCBfcmVmKSB7XG4gICAgbGV0IHtcbiAgICAgIG9wLFxuICAgICAgZGF0YVxuICAgIH0gPSBfcmVmO1xuXG4gICAgLy8gVGhlcmUgYXJlIG9ubHkgZm91ciBvcGVyYXRpb24gdHlwZXM6XG4gICAgLy8gbW92ZSwgYmN1cnZlVG8sIGxpbmVUbywgYW5kIGN1cnZlVG9cbiAgICBpZiAob3AgPT09IFwibW92ZVwiKSB7XG4gICAgICAvLyBjaGFuZ2Ugc3RhcnRpbmcgcG9pbnRcbiAgICAgIGN1cnJlbnRQID0gZGF0YTsgLy8gbW92ZSBvcGVyYXRpb24gZG9lcyBub3QgZHJhdyBhbnl0aGluZzsgc28sIGl0IGFsd2F5c1xuICAgICAgLy8gcmV0dXJucyBmYWxzZVxuICAgIH0gZWxzZSBpZiAob3AgPT09IFwiYmN1cnZlVG9cIikge1xuICAgICAgY29uc3QgX3AxID0gW2RhdGFbMF0sIGRhdGFbMV1dO1xuICAgICAgY29uc3QgX3AyID0gW2RhdGFbMl0sIGRhdGFbM11dO1xuICAgICAgY29uc3QgX3AzID0gW2RhdGFbNF0sIGRhdGFbNV1dO1xuICAgICAgY29uc3QgcDEgPSB0cmFuc2Zvcm1YWSA/IHRyYW5zZm9ybVhZKC4uLl9wMSkgOiBfcDE7XG4gICAgICBjb25zdCBwMiA9IHRyYW5zZm9ybVhZID8gdHJhbnNmb3JtWFkoLi4uX3AyKSA6IF9wMjtcbiAgICAgIGNvbnN0IHAzID0gdHJhbnNmb3JtWFkgPyB0cmFuc2Zvcm1YWSguLi5fcDMpIDogX3AzO1xuICAgICAgY29uc3QgcDAgPSB0cmFuc2Zvcm1YWSA/IHRyYW5zZm9ybVhZKC4uLmN1cnJlbnRQKSA6IGN1cnJlbnRQO1xuICAgICAgY3VycmVudFAgPSBfcDM7XG4gICAgICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRDdWJpY0JlemllckN1cnZlQm91bmQocDAsIHAxLCBwMiwgcDMpO1xuICAgICAgbGltaXRzLm1pblggPSBNYXRoLm1pbihsaW1pdHMubWluWCwgbWluWCk7XG4gICAgICBsaW1pdHMubWluWSA9IE1hdGgubWluKGxpbWl0cy5taW5ZLCBtaW5ZKTtcbiAgICAgIGxpbWl0cy5tYXhYID0gTWF0aC5tYXgobGltaXRzLm1heFgsIG1heFgpO1xuICAgICAgbGltaXRzLm1heFkgPSBNYXRoLm1heChsaW1pdHMubWF4WSwgbWF4WSk7XG4gICAgfSBlbHNlIGlmIChvcCA9PT0gXCJsaW5lVG9cIikgey8vIFRPRE86IEltcGxlbWVudCB0aGlzXG4gICAgfSBlbHNlIGlmIChvcCA9PT0gXCJxY3VydmVUb1wiKSB7Ly8gVE9ETzogSW1wbGVtZW50IHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gbGltaXRzO1xuICB9LCB7XG4gICAgbWluWDogSW5maW5pdHksXG4gICAgbWluWTogSW5maW5pdHksXG4gICAgbWF4WDogLUluZmluaXR5LFxuICAgIG1heFk6IC1JbmZpbml0eVxuICB9KTtcbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbn07XG5cbmNvbnN0IGdldEJvdW5kc0Zyb21Qb2ludHMgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gIGxldCBtaW5YID0gSW5maW5pdHk7XG4gIGxldCBtaW5ZID0gSW5maW5pdHk7XG4gIGxldCBtYXhYID0gLUluZmluaXR5O1xuICBsZXQgbWF4WSA9IC1JbmZpbml0eTtcblxuICBmb3IgKGNvbnN0IFt4LCB5XSBvZiBwb2ludHMpIHtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4KTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeSk7XG4gIH1cblxuICByZXR1cm4gW21pblgsIG1pblksIG1heFgsIG1heFldO1xufTtcblxuY29uc3QgZ2V0RnJlZURyYXdFbGVtZW50QWJzb2x1dGVDb29yZHMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRCb3VuZHNGcm9tUG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbn07XG5cbmNvbnN0IGdldExpbmVhckVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGxldCBjb29yZHM7XG5cbiAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA8IDIgfHwgIWdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIFhYWCB0aGlzIGlzIGp1c3QgYSBwb29yIGVzdGltYXRlIGFuZCBub3QgdmVyeSB1c2VmdWxcbiAgICBjb25zdCB7XG4gICAgICBtaW5YLFxuICAgICAgbWluWSxcbiAgICAgIG1heFgsXG4gICAgICBtYXhZXG4gICAgfSA9IGVsZW1lbnQucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAobGltaXRzLCBfcmVmMikge1xuICAgICAgbGV0IFt4LCB5XSA9IF9yZWYyO1xuICAgICAgbGltaXRzLm1pblkgPSBNYXRoLm1pbihsaW1pdHMubWluWSwgeSk7XG4gICAgICBsaW1pdHMubWluWCA9IE1hdGgubWluKGxpbWl0cy5taW5YLCB4KTtcbiAgICAgIGxpbWl0cy5tYXhYID0gTWF0aC5tYXgobGltaXRzLm1heFgsIHgpO1xuICAgICAgbGltaXRzLm1heFkgPSBNYXRoLm1heChsaW1pdHMubWF4WSwgeSk7XG4gICAgICByZXR1cm4gbGltaXRzO1xuICAgIH0sIHtcbiAgICAgIG1pblg6IEluZmluaXR5LFxuICAgICAgbWluWTogSW5maW5pdHksXG4gICAgICBtYXhYOiAtSW5maW5pdHksXG4gICAgICBtYXhZOiAtSW5maW5pdHlcbiAgICB9KTtcbiAgICBjb29yZHMgPSBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCk7IC8vIGZpcnN0IGVsZW1lbnQgaXMgYWx3YXlzIHRoZSBjdXJ2ZVxuXG4gICAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKHNoYXBlWzBdKTtcbiAgICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzKTtcbiAgICBjb29yZHMgPSBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG4gIH1cblxuICByZXR1cm4gY29vcmRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFycm93aGVhZFBvaW50cyA9IGZ1bmN0aW9uIChlbGVtZW50LCBzaGFwZSwgcG9zaXRpb24sIGFycm93aGVhZCkge1xuICBjb25zdCBvcHMgPSBnZXRDdXJ2ZVBhdGhPcHMoc2hhcGVbMF0pO1xuXG4gIGlmIChvcHMubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIFRoZSBpbmRleCBvZiB0aGUgYkN1cnZlIG9wZXJhdGlvbiB0byBleGFtaW5lLlxuXG5cbiAgY29uc3QgaW5kZXggPSBwb3NpdGlvbiA9PT0gXCJzdGFydFwiID8gMSA6IG9wcy5sZW5ndGggLSAxO1xuICBjb25zdCBkYXRhID0gb3BzW2luZGV4XS5kYXRhO1xuICBjb25zdCBwMyA9IFtkYXRhWzRdLCBkYXRhWzVdXTtcbiAgY29uc3QgcDIgPSBbZGF0YVsyXSwgZGF0YVszXV07XG4gIGNvbnN0IHAxID0gW2RhdGFbMF0sIGRhdGFbMV1dOyAvLyBXZSBuZWVkIHRvIGZpbmQgcDAgb2YgdGhlIGJlemllciBjdXJ2ZS5cbiAgLy8gSXQgaXMgdHlwaWNhbGx5IHRoZSBsYXN0IHBvaW50IG9mIHRoZSBwcmV2aW91c1xuICAvLyBjdXJ2ZTsgaXQgY2FuIGFsc28gYmUgdGhlIHBvc2l0aW9uIG9mIG1vdmVUbyBvcGVyYXRpb24uXG5cbiAgY29uc3QgcHJldk9wID0gb3BzW2luZGV4IC0gMV07XG4gIGxldCBwMCA9IFswLCAwXTtcblxuICBpZiAocHJldk9wLm9wID09PSBcIm1vdmVcIikge1xuICAgIHAwID0gcHJldk9wLmRhdGE7XG4gIH0gZWxzZSBpZiAocHJldk9wLm9wID09PSBcImJjdXJ2ZVRvXCIpIHtcbiAgICBwMCA9IFtwcmV2T3AuZGF0YVs0XSwgcHJldk9wLmRhdGFbNV1dO1xuICB9IC8vIEIodCkgPSBwMCAqICgxLXQpXjMgKyAzcDEgKiB0ICogKDEtdCleMiArIDNwMiAqIHReMiAqICgxLXQpICsgcDMgKiB0XjNcblxuXG4gIGNvbnN0IGVxdWF0aW9uID0gZnVuY3Rpb24gKHQsIGlkeCkge1xuICAgIHJldHVybiBNYXRoLnBvdygxIC0gdCwgMykgKiBwM1tpZHhdICsgMyAqIHQgKiBNYXRoLnBvdygxIC0gdCwgMikgKiBwMltpZHhdICsgMyAqIE1hdGgucG93KHQsIDIpICogKDEgLSB0KSAqIHAxW2lkeF0gKyBwMFtpZHhdICogTWF0aC5wb3codCwgMyk7XG4gIH07IC8vIEVlIGtub3cgdGhlIGxhc3QgcG9pbnQgb2YgdGhlIGFycm93IChvciB0aGUgZmlyc3QsIGlmIHN0YXJ0IGFycm93aGVhZCkuXG5cblxuICBjb25zdCBbeDIsIHkyXSA9IHBvc2l0aW9uID09PSBcInN0YXJ0XCIgPyBwMCA6IHAzOyAvLyBCeSB1c2luZyBjdWJpYyBiZXppZXIgZXF1YXRpb24gKEIodCkpIGFuZCB0aGUgZ2l2ZW4gcGFyYW1ldGVycyxcbiAgLy8gd2UgY2FsY3VsYXRlIGEgcG9pbnQgdGhhdCBpcyBjbG9zZXIgdG8gdGhlIGxhc3QgcG9pbnQuXG4gIC8vIFRoZSB2YWx1ZSAwLjMgaXMgY2hvc2VuIGFyYml0cmFyaWx5IGFuZCBpdCB3b3JrcyBiZXN0IGZvciBhbGxcbiAgLy8gdGhlIHRlc3RlZCBjYXNlcy5cblxuICBjb25zdCBbeDEsIHkxXSA9IFtlcXVhdGlvbigwLjMsIDApLCBlcXVhdGlvbigwLjMsIDEpXTsgLy8gRmluZCB0aGUgbm9ybWFsaXplZCBkaXJlY3Rpb24gdmVjdG9yIGJhc2VkIG9uIHRoZVxuICAvLyBwcmV2aW91c2x5IGNhbGN1bGF0ZWQgcG9pbnRzLlxuXG4gIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5oeXBvdCh4MiAtIHgxLCB5MiAtIHkxKTtcbiAgY29uc3QgbnggPSAoeDIgLSB4MSkgLyBkaXN0YW5jZTtcbiAgY29uc3QgbnkgPSAoeTIgLSB5MSkgLyBkaXN0YW5jZTtcbiAgY29uc3Qgc2l6ZSA9IHtcbiAgICBhcnJvdzogMzAsXG4gICAgYmFyOiAxNSxcbiAgICBkb3Q6IDE1LFxuICAgIHRyaWFuZ2xlOiAxNVxuICB9W2Fycm93aGVhZF07IC8vIHBpeGVscyAod2lsbCBkaWZmZXIgZm9yIGVhY2ggYXJyb3doZWFkKVxuXG4gIGxldCBsZW5ndGggPSAwO1xuXG4gIGlmIChhcnJvd2hlYWQgPT09IFwiYXJyb3dcIikge1xuICAgIC8vIExlbmd0aCBmb3IgLT4gYXJyb3dzIGlzIGJhc2VkIG9uIHRoZSBsZW5ndGggb2YgdGhlIGxhc3Qgc2VjdGlvblxuICAgIGNvbnN0IFtjeCwgY3ldID0gZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgW3B4LCBweV0gPSBlbGVtZW50LnBvaW50cy5sZW5ndGggPiAxID8gZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMl0gOiBbMCwgMF07XG4gICAgbGVuZ3RoID0gTWF0aC5oeXBvdChjeCAtIHB4LCBjeSAtIHB5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMZW5ndGggZm9yIG90aGVyIGFycm93aGVhZCB0eXBlcyBpcyBiYXNlZCBvbiB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBsaW5lXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LnBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgW3B4LCBweV0gPSBlbGVtZW50LnBvaW50c1tpIC0gMV0gfHwgWzAsIDBdO1xuICAgICAgY29uc3QgW2N4LCBjeV0gPSBlbGVtZW50LnBvaW50c1tpXTtcbiAgICAgIGxlbmd0aCArPSBNYXRoLmh5cG90KGN4IC0gcHgsIGN5IC0gcHkpO1xuICAgIH1cbiAgfSAvLyBTY2FsZSBkb3duIHRoZSBhcnJvd2hlYWQgdW50aWwgd2UgaGl0IGEgY2VydGFpbiBzaXplIHNvIHRoYXQgaXQgZG9lc24ndCBsb29rIHdlaXJkLlxuICAvLyBUaGlzIHZhbHVlIGlzIHNlbGVjdGVkIGJ5IG1pbmltaXppbmcgYSBtaW5pbXVtIHNpemUgd2l0aCB0aGUgbGFzdCBzZWdtZW50IG9mIHRoZSBhcnJvd2hlYWRcblxuXG4gIGNvbnN0IG1pblNpemUgPSBNYXRoLm1pbihzaXplLCBsZW5ndGggLyAyKTtcbiAgY29uc3QgeHMgPSB4MiAtIG54ICogbWluU2l6ZTtcbiAgY29uc3QgeXMgPSB5MiAtIG55ICogbWluU2l6ZTtcblxuICBpZiAoYXJyb3doZWFkID09PSBcImRvdFwiKSB7XG4gICAgY29uc3QgciA9IE1hdGguaHlwb3QoeXMgLSB5MiwgeHMgLSB4MikgKyBlbGVtZW50LnN0cm9rZVdpZHRoO1xuICAgIHJldHVybiBbeDIsIHkyLCByXTtcbiAgfVxuXG4gIGNvbnN0IGFuZ2xlID0ge1xuICAgIGFycm93OiAyMCxcbiAgICBiYXI6IDkwLFxuICAgIHRyaWFuZ2xlOiAyNVxuICB9W2Fycm93aGVhZF07IC8vIGRlZ3JlZXNcbiAgLy8gUmV0dXJuIHBvaW50c1xuXG4gIGNvbnN0IFt4MywgeTNdID0gcm90YXRlKHhzLCB5cywgeDIsIHkyLCAtYW5nbGUgKiBNYXRoLlBJIC8gMTgwKTtcbiAgY29uc3QgW3g0LCB5NF0gPSByb3RhdGUoeHMsIHlzLCB4MiwgeTIsIGFuZ2xlICogTWF0aC5QSSAvIDE4MCk7XG4gIHJldHVybiBbeDIsIHkyLCB4MywgeTMsIHg0LCB5NF07XG59O1xuXG5jb25zdCBnZXRMaW5lYXJFbGVtZW50Um90YXRlZEJvdW5kcyA9IGZ1bmN0aW9uIChlbGVtZW50LCBjeCwgY3kpIHtcbiAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA8IDIgfHwgIWdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIFhYWCB0aGlzIGlzIGp1c3QgYSBwb29yIGVzdGltYXRlIGFuZCBub3QgdmVyeSB1c2VmdWxcbiAgICBjb25zdCB7XG4gICAgICBtaW5YLFxuICAgICAgbWluWSxcbiAgICAgIG1heFgsXG4gICAgICBtYXhZXG4gICAgfSA9IGVsZW1lbnQucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAobGltaXRzLCBfcmVmMykge1xuICAgICAgbGV0IFt4LCB5XSA9IF9yZWYzO1xuICAgICAgW3gsIHldID0gcm90YXRlKGVsZW1lbnQueCArIHgsIGVsZW1lbnQueSArIHksIGN4LCBjeSwgZWxlbWVudC5hbmdsZSk7XG4gICAgICBsaW1pdHMubWluWSA9IE1hdGgubWluKGxpbWl0cy5taW5ZLCB5KTtcbiAgICAgIGxpbWl0cy5taW5YID0gTWF0aC5taW4obGltaXRzLm1pblgsIHgpO1xuICAgICAgbGltaXRzLm1heFggPSBNYXRoLm1heChsaW1pdHMubWF4WCwgeCk7XG4gICAgICBsaW1pdHMubWF4WSA9IE1hdGgubWF4KGxpbWl0cy5tYXhZLCB5KTtcbiAgICAgIHJldHVybiBsaW1pdHM7XG4gICAgfSwge1xuICAgICAgbWluWDogSW5maW5pdHksXG4gICAgICBtaW5ZOiBJbmZpbml0eSxcbiAgICAgIG1heFg6IC1JbmZpbml0eSxcbiAgICAgIG1heFk6IC1JbmZpbml0eVxuICAgIH0pO1xuICAgIHJldHVybiBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG4gIH1cblxuICBjb25zdCBzaGFwZSA9IGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KTsgLy8gZmlyc3QgZWxlbWVudCBpcyBhbHdheXMgdGhlIGN1cnZlXG5cbiAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKHNoYXBlWzBdKTtcblxuICBjb25zdCB0cmFuc2Zvcm1YWSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIHJvdGF0ZShlbGVtZW50LnggKyB4LCBlbGVtZW50LnkgKyB5LCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICB9O1xuXG4gIHJldHVybiBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzLCB0cmFuc2Zvcm1YWSk7XG59OyAvLyBXZSBjb3VsZCBjYWNoZSB0aGlzIHN0dWZmXG5cblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRCb3VuZHMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBsZXQgYm91bmRzO1xuICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICBjb25zdCBjeCA9ICh4MSArIHgyKSAvIDI7XG4gIGNvbnN0IGN5ID0gKHkxICsgeTIpIC8gMjtcblxuICBpZiAoaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRCb3VuZHNGcm9tUG9pbnRzKGVsZW1lbnQucG9pbnRzLm1hcChmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIGxldCBbeCwgeV0gPSBfcmVmNDtcbiAgICAgIHJldHVybiByb3RhdGUoeCwgeSwgY3ggLSBlbGVtZW50LngsIGN5IC0gZWxlbWVudC55LCBlbGVtZW50LmFuZ2xlKTtcbiAgICB9KSk7XG4gICAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbiAgfSBlbHNlIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBib3VuZHMgPSBnZXRMaW5lYXJFbGVtZW50Um90YXRlZEJvdW5kcyhlbGVtZW50LCBjeCwgY3kpO1xuICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJkaWFtb25kXCIpIHtcbiAgICBjb25zdCBbeDExLCB5MTFdID0gcm90YXRlKGN4LCB5MSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBbeDEyLCB5MTJdID0gcm90YXRlKGN4LCB5MiwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBbeDIyLCB5MjJdID0gcm90YXRlKHgxLCBjeSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBbeDIxLCB5MjFdID0gcm90YXRlKHgyLCBjeSwgY3gsIGN5LCBlbGVtZW50LmFuZ2xlKTtcbiAgICBjb25zdCBtaW5YID0gTWF0aC5taW4oeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oeTExLCB5MTIsIHkyMiwgeTIxKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoeDExLCB4MTIsIHgyMiwgeDIxKTtcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgoeTExLCB5MTIsIHkyMiwgeTIxKTtcbiAgICBib3VuZHMgPSBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG4gIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSBcImVsbGlwc2VcIikge1xuICAgIGNvbnN0IHcgPSAoeDIgLSB4MSkgLyAyO1xuICAgIGNvbnN0IGggPSAoeTIgLSB5MSkgLyAyO1xuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IHd3ID0gTWF0aC5oeXBvdCh3ICogY29zLCBoICogc2luKTtcbiAgICBjb25zdCBoaCA9IE1hdGguaHlwb3QoaCAqIGNvcywgdyAqIHNpbik7XG4gICAgYm91bmRzID0gW2N4IC0gd3csIGN5IC0gaGgsIGN4ICsgd3csIGN5ICsgaGhdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IFt4MTEsIHkxMV0gPSByb3RhdGUoeDEsIHkxLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IFt4MTIsIHkxMl0gPSByb3RhdGUoeDEsIHkyLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IFt4MjIsIHkyMl0gPSByb3RhdGUoeDIsIHkyLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IFt4MjEsIHkyMV0gPSByb3RhdGUoeDIsIHkxLCBjeCwgY3ksIGVsZW1lbnQuYW5nbGUpO1xuICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbih4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbih5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heCh4MTEsIHgxMiwgeDIyLCB4MjEpO1xuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heCh5MTEsIHkxMiwgeTIyLCB5MjEpO1xuICAgIGJvdW5kcyA9IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbiAgfVxuXG4gIHJldHVybiBib3VuZHM7XG59O1xuZXhwb3J0IGNvbnN0IGdldENvbW1vbkJvdW5kcyA9IGZ1bmN0aW9uIChlbGVtZW50cykge1xuICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMF07XG4gIH1cblxuICBsZXQgbWluWCA9IEluZmluaXR5O1xuICBsZXQgbWF4WCA9IC1JbmZpbml0eTtcbiAgbGV0IG1pblkgPSBJbmZpbml0eTtcbiAgbGV0IG1heFkgPSAtSW5maW5pdHk7XG4gIGVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEJvdW5kcyhlbGVtZW50KTtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeDEpO1xuICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCB5MSk7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHgyKTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeTIpO1xuICB9KTtcbiAgcmV0dXJuIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbn07XG5leHBvcnQgY29uc3QgZ2V0UmVzaXplZEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50LCBuZXh0V2lkdGgsIG5leHRIZWlnaHQsIG5vcm1hbGl6ZVBvaW50cykge1xuICBpZiAoIShpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkgfHwgaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpKSB7XG4gICAgcmV0dXJuIFtlbGVtZW50LngsIGVsZW1lbnQueSwgZWxlbWVudC54ICsgbmV4dFdpZHRoLCBlbGVtZW50LnkgKyBuZXh0SGVpZ2h0XTtcbiAgfVxuXG4gIGNvbnN0IHBvaW50cyA9IHJlc2NhbGVQb2ludHMoMCwgbmV4dFdpZHRoLCByZXNjYWxlUG9pbnRzKDEsIG5leHRIZWlnaHQsIGVsZW1lbnQucG9pbnRzLCBub3JtYWxpemVQb2ludHMpLCBub3JtYWxpemVQb2ludHMpO1xuICBsZXQgYm91bmRzO1xuXG4gIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEZyZWUgRHJhd1xuICAgIGJvdW5kcyA9IGdldEJvdW5kc0Zyb21Qb2ludHMocG9pbnRzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMaW5lXG4gICAgY29uc3QgZ2VuID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gICAgY29uc3QgY3VydmUgPSBlbGVtZW50LnN0cm9rZVNoYXJwbmVzcyA9PT0gXCJzaGFycFwiID8gZ2VuLmxpbmVhclBhdGgocG9pbnRzLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSkgOiBnZW4uY3VydmUocG9pbnRzLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSk7XG4gICAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKGN1cnZlKTtcbiAgICBib3VuZHMgPSBnZXRNaW5NYXhYWUZyb21DdXJ2ZVBhdGhPcHMob3BzKTtcbiAgfVxuXG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGJvdW5kcztcbiAgcmV0dXJuIFttaW5YICsgZWxlbWVudC54LCBtaW5ZICsgZWxlbWVudC55LCBtYXhYICsgZWxlbWVudC54LCBtYXhZICsgZWxlbWVudC55XTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudFBvaW50c0Nvb3JkcyA9IGZ1bmN0aW9uIChlbGVtZW50LCBwb2ludHMsIHNoYXJwbmVzcykge1xuICAvLyBUaGlzIG1pZ2h0IGJlIGNvbXB1dGF0aW9uYWxseSBoZWF2ZXlcbiAgY29uc3QgZ2VuID0gcm91Z2guZ2VuZXJhdG9yKCk7XG4gIGNvbnN0IGN1cnZlID0gc2hhcnBuZXNzID09PSBcInNoYXJwXCIgPyBnZW4ubGluZWFyUGF0aChwb2ludHMsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKSA6IGdlbi5jdXJ2ZShwb2ludHMsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKTtcbiAgY29uc3Qgb3BzID0gZ2V0Q3VydmVQYXRoT3BzKGN1cnZlKTtcbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0TWluTWF4WFlGcm9tQ3VydmVQYXRoT3BzKG9wcyk7XG4gIHJldHVybiBbbWluWCArIGVsZW1lbnQueCwgbWluWSArIGVsZW1lbnQueSwgbWF4WCArIGVsZW1lbnQueCwgbWF4WSArIGVsZW1lbnQueV07XG59O1xuZXhwb3J0IGNvbnN0IGdldENsb3Nlc3RFbGVtZW50Qm91bmRzID0gZnVuY3Rpb24gKGVsZW1lbnRzLCBmcm9tKSB7XG4gIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbiAgfVxuXG4gIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICBsZXQgY2xvc2VzdEVsZW1lbnQgPSBlbGVtZW50c1swXTtcbiAgZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50Qm91bmRzKGVsZW1lbnQpO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2UyZCgoeDEgKyB4MikgLyAyLCAoeTEgKyB5MikgLyAyLCBmcm9tLngsIGZyb20ueSk7XG5cbiAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIGNsb3Nlc3RFbGVtZW50ID0gZWxlbWVudDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZ2V0RWxlbWVudEJvdW5kcyhjbG9zZXN0RWxlbWVudCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldENvbW1vbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKGVsZW1lbnRzKSB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIHJldHVybiB7XG4gICAgbWluWCxcbiAgICBtaW5ZLFxuICAgIG1heFgsXG4gICAgbWF4WSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICBtaWRYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBtaWRZOiAobWluWSArIG1heFkpIC8gMlxuICB9O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../element/bounds.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../element/bounds.ts?");
2646
2646
 
2647
2647
  /***/ }),
2648
2648
 
@@ -2994,7 +2994,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2994
2994
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2995
2995
 
2996
2996
  "use strict";
2997
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \\\"../../constants.ts\\\");\\n\\r\\nif (\\\"development\\\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\\r\\n /* eslint-disable */\\r\\n /* global __webpack_public_path__:writable */\\r\\n __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\\\"@zsviczian/excalidraw\\\"}@${\\\"0.12.0-obsidian-5\\\"}/dist/`;\\r\\n}\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDO0FBRXRDLElBQUksYUFBb0IsS0FBSyxnREFBUSxFQUFFO0lBQ3JDLG9CQUFvQjtJQUVwQiw2Q0FBNkM7SUFDN0MscUJBQXVCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixJQUFJLHFCQUFxQix1QkFBb0IsSUFBSSxtQkFBdUIsUUFBUSxDQUFDO0NBQ3hJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz8xMTVkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuUEtHX05BTUV9QCR7cHJvY2Vzcy5lbnYuUEtHX1ZFUlNJT059L2Rpc3QvYDtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///./publicPath.js\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/./publicPath.js?");
2997
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \\\"../../constants.ts\\\");\\n\\r\\nif (\\\"development\\\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\\r\\n /* eslint-disable */\\r\\n /* global __webpack_public_path__:writable */\\r\\n __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\\\"@zsviczian/excalidraw\\\"}@${\\\"0.12.0-obsidian-7\\\"}/dist/`;\\r\\n}\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDO0FBRXRDLElBQUksYUFBb0IsS0FBSyxnREFBUSxFQUFFO0lBQ3JDLG9CQUFvQjtJQUVwQiw2Q0FBNkM7SUFDN0MscUJBQXVCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixJQUFJLHFCQUFxQix1QkFBb0IsSUFBSSxtQkFBdUIsUUFBUSxDQUFDO0NBQ3hJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz8xMTVkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuUEtHX05BTUV9QCR7cHJvY2Vzcy5lbnYuUEtHX1ZFUlNJT059L2Rpc3QvYDtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///./publicPath.js\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/./publicPath.js?");
2998
2998
 
2999
2999
  /***/ }),
3000
3000
 
@@ -3104,7 +3104,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
3104
3104
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3105
3105
 
3106
3106
  "use strict";
3107
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"SVG_EXPORT_TAG\\\": () => (/* binding */ SVG_EXPORT_TAG),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"getExportSize\\\": () => (/* binding */ getExportSize)\\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 roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ \\\"../../../node_modules/roughjs/bin/rough.js\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../renderer/renderScene */ \\\"../../renderer/renderScene.ts\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/image */ \\\"../../element/image.ts\\\");\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\\r\\nconst exportToCanvas = /*#__PURE__*/ function () {\\r\\n var _ref = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (elements, appState, files, _ref2) {\\r\\n let { exportBackground, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_EXPORT_PADDING, viewBackgroundColor } = _ref2;\\r\\n let createCanvas = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (width, height) {\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n canvas.width = width * appState.exportScale;\\r\\n canvas.height = height * appState.exportScale;\\r\\n return {\\r\\n canvas,\\r\\n scale: appState.exportScale\\r\\n };\\r\\n };\\r\\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\\r\\n const { canvas, scale = 1 } = createCanvas(width, height);\\r\\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_6__.getDefaultAppState)();\\r\\n const { imageCache } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_8__.updateImageCache)({\\r\\n imageCache: new Map(),\\r\\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_8__.getInitializedImageElements)(elements).map(function (element) {\\r\\n return element.fileId;\\r\\n }),\\r\\n files\\r\\n });\\r\\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_3__.renderScene)({\\r\\n elements,\\r\\n appState,\\r\\n scale,\\r\\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].canvas(canvas),\\r\\n canvas,\\r\\n renderConfig: {\\r\\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\\r\\n scrollX: -minX + exportPadding,\\r\\n scrollY: -minY + exportPadding,\\r\\n zoom: defaultAppState.zoom,\\r\\n remotePointerViewportCoords: {},\\r\\n remoteSelectedElementIds: {},\\r\\n shouldCacheIgnoreZoom: false,\\r\\n remotePointerUsernames: {},\\r\\n remotePointerUserStates: {},\\r\\n theme: appState.exportWithDarkMode ? \\\"dark\\\" : \\\"light\\\",\\r\\n imageCache,\\r\\n renderScrollbars: false,\\r\\n renderSelection: false,\\r\\n renderGrid: false,\\r\\n isExporting: true\\r\\n }\\r\\n });\\r\\n return canvas;\\r\\n });\\r\\n return function exportToCanvas(_x, _x2, _x3, _x4) {\\r\\n return _ref.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* (elements, appState, files) {\\r\\n const { exportPadding = _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, exportScale = 1, exportEmbedScene } = appState;\\r\\n let metadata = \\\"\\\";\\r\\n if (exportEmbedScene) {\\r\\n try {\\r\\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \\\"../../data/image.ts\\\"))).encodeSvgMetadata({\\r\\n text: (0,_data_json__WEBPACK_IMPORTED_MODULE_7__.serializeAsJSON)(elements, appState, files || {}, \\\"local\\\")\\r\\n });\\r\\n }\\r\\n catch (error) {\\r\\n console.error(error);\\r\\n }\\r\\n }\\r\\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding); // initialize SVG root\\r\\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_5__.SVG_NS, \\\"svg\\\");\\r\\n svgRoot.setAttribute(\\\"version\\\", \\\"1.1\\\");\\r\\n svgRoot.setAttribute(\\\"xmlns\\\", _constants__WEBPACK_IMPORTED_MODULE_5__.SVG_NS);\\r\\n svgRoot.setAttribute(\\\"viewBox\\\", `0 0 ${width} ${height}`);\\r\\n svgRoot.setAttribute(\\\"width\\\", `${width * exportScale}`);\\r\\n svgRoot.setAttribute(\\\"height\\\", `${height * exportScale}`);\\r\\n if (appState.exportWithDarkMode) {\\r\\n svgRoot.setAttribute(\\\"filter\\\", _constants__WEBPACK_IMPORTED_MODULE_5__.THEME_FILTER);\\r\\n }\\r\\n let assetPath = \\\"https://excalidraw.com/\\\"; // Asset path needs to be determined only when using package\\r\\n if (true) {\\r\\n assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\\\"@zsviczian/excalidraw\\\"}@${\\\"0.12.0-obsidian-5\\\"}`;\\r\\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\\\"/\\\")) {\\r\\n assetPath = assetPath.replace(\\\"/\\\", `${window.location.origin}/`);\\r\\n }\\r\\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\\r\\n }\\r\\n svgRoot.innerHTML = `\\n ${SVG_EXPORT_TAG}\\n ${metadata}\\n <defs>\\n <style>\\n @font-face {\\n font-family: \\\"Virgil\\\";\\n src: url(\\\"${assetPath}Virgil.woff2\\\");\\n }\\n @font-face {\\n font-family: \\\"Cascadia\\\";\\n src: url(\\\"${assetPath}Cascadia.woff2\\\");\\n }\\n </style>\\n </defs>\\n `; // render background rect\\r\\n if (appState.exportBackground && viewBackgroundColor) {\\r\\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_5__.SVG_NS, \\\"rect\\\");\\r\\n rect.setAttribute(\\\"x\\\", \\\"0\\\");\\r\\n rect.setAttribute(\\\"y\\\", \\\"0\\\");\\r\\n rect.setAttribute(\\\"width\\\", `${width}`);\\r\\n rect.setAttribute(\\\"height\\\", `${height}`);\\r\\n rect.setAttribute(\\\"fill\\\", viewBackgroundColor);\\r\\n svgRoot.appendChild(rect);\\r\\n }\\r\\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].svg(svgRoot);\\r\\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_3__.renderSceneToSvg)(elements, rsvg, svgRoot, files || {}, {\\r\\n offsetX: -minX + exportPadding,\\r\\n offsetY: -minY + exportPadding,\\r\\n exportWithDarkMode: appState.exportWithDarkMode\\r\\n });\\r\\n return svgRoot;\\r\\n });\\r\\n return function exportToSvg(_x5, _x6, _x7) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n}(); // calculate smallest area to fit the contents in\\r\\nconst getCanvasSize = function (elements, exportPadding) {\\r\\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBounds)(elements);\\r\\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.distance)(minX, maxX) + exportPadding * 2;\\r\\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.distance)(minY, maxY) + exportPadding + exportPadding;\\r\\n return [minX, minY, width, height];\\r\\n};\\r\\nconst getExportSize = function (elements, exportPadding, scale) {\\r\\n const [, , width, height] = getCanvasSize(elements, exportPadding).map(function (dimension) {\\r\\n return Math.trunc(dimension * scale);\\r\\n });\\r\\n return [width, height];\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMzRCxNQUFNLEtBQUssR0FBRyxnREFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLGdEQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDcEUsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVLLE1BQU0sYUFBYSxHQUFHLFVBQVUsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLO0lBQ25FLE1BQU0sQ0FBQyxFQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsU0FBUztRQUN2RixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvZXhwb3J0LnRzPzI1MzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IGdldENvbW1vbkJvdW5kcyB9IGZyb20gXCIuLi9lbGVtZW50L2JvdW5kc1wiO1xuaW1wb3J0IHsgcmVuZGVyU2NlbmUsIHJlbmRlclNjZW5lVG9TdmcgfSBmcm9tIFwiLi4vcmVuZGVyZXIvcmVuZGVyU2NlbmVcIjtcbmltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBTVkdfTlMsIFRIRU1FX0ZJTFRFUiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuaW1wb3J0IHsgZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzLCB1cGRhdGVJbWFnZUNhY2hlIH0gZnJvbSBcIi4uL2VsZW1lbnQvaW1hZ2VcIjtcbmV4cG9ydCBjb25zdCBTVkdfRVhQT1JUX1RBRyA9IGA8IS0tIHN2Zy1zb3VyY2U6ZXhjYWxpZHJhdyAtLT5gO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIF9yZWYyKSB7XG4gICAgbGV0IHtcbiAgICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgICB9ID0gX3JlZjI7XG4gICAgbGV0IGNyZWF0ZUNhbnZhcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICBjYW52YXMud2lkdGggPSB3aWR0aCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBzY2FsZTogYXBwU3RhdGUuZXhwb3J0U2NhbGVcbiAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcbiAgICBjb25zdCB7XG4gICAgICBjYW52YXMsXG4gICAgICBzY2FsZSA9IDFcbiAgICB9ID0gY3JlYXRlQ2FudmFzKHdpZHRoLCBoZWlnaHQpO1xuICAgIGNvbnN0IGRlZmF1bHRBcHBTdGF0ZSA9IGdldERlZmF1bHRBcHBTdGF0ZSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGltYWdlQ2FjaGVcbiAgICB9ID0geWllbGQgdXBkYXRlSW1hZ2VDYWNoZSh7XG4gICAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgICBmaWxlSWRzOiBnZXRJbml0aWFsaXplZEltYWdlRWxlbWVudHMoZWxlbWVudHMpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxlSWQ7XG4gICAgICB9KSxcbiAgICAgIGZpbGVzXG4gICAgfSk7XG4gICAgcmVuZGVyU2NlbmUoe1xuICAgICAgZWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZSxcbiAgICAgIHNjYWxlLFxuICAgICAgcmM6IHJvdWdoLmNhbnZhcyhjYW52YXMpLFxuICAgICAgY2FudmFzLFxuICAgICAgcmVuZGVyQ29uZmlnOiB7XG4gICAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICAgICAgc2Nyb2xsWDogLW1pblggKyBleHBvcnRQYWRkaW5nLFxuICAgICAgICBzY3JvbGxZOiAtbWluWSArIGV4cG9ydFBhZGRpbmcsXG4gICAgICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgICAgICByZW1vdGVQb2ludGVyVmlld3BvcnRDb29yZHM6IHt9LFxuICAgICAgICByZW1vdGVTZWxlY3RlZEVsZW1lbnRJZHM6IHt9LFxuICAgICAgICBzaG91bGRDYWNoZUlnbm9yZVpvb206IGZhbHNlLFxuICAgICAgICByZW1vdGVQb2ludGVyVXNlcm5hbWVzOiB7fSxcbiAgICAgICAgcmVtb3RlUG9pbnRlclVzZXJTdGF0ZXM6IHt9LFxuICAgICAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIsXG4gICAgICAgIGltYWdlQ2FjaGUsXG4gICAgICAgIHJlbmRlclNjcm9sbGJhcnM6IGZhbHNlLFxuICAgICAgICByZW5kZXJTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICByZW5kZXJHcmlkOiBmYWxzZSxcbiAgICAgICAgaXNFeHBvcnRpbmc6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2FudmFzO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9DYW52YXMoX3gsIF94MiwgX3gzLCBfeDQpIHtcbiAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChlbGVtZW50cywgYXBwU3RhdGUsIGZpbGVzKSB7XG4gICAgY29uc3Qge1xuICAgICAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gICAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgICAgZXhwb3J0U2NhbGUgPSAxLFxuICAgICAgZXhwb3J0RW1iZWRTY2VuZVxuICAgIH0gPSBhcHBTdGF0ZTtcbiAgICBsZXQgbWV0YWRhdGEgPSBcIlwiO1xuXG4gICAgaWYgKGV4cG9ydEVtYmVkU2NlbmUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1ldGFkYXRhID0geWllbGQgKHlpZWxkIGltcG9ydChcbiAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovXG4gICAgICAgIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIikpLmVuY29kZVN2Z01ldGFkYXRhKHtcbiAgICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpOyAvLyBpbml0aWFsaXplIFNWRyByb290XG5cbiAgICBjb25zdCBzdmdSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJzdmdcIik7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2ZXJzaW9uXCIsIFwiMS4xXCIpO1xuICAgIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgU1ZHX05TKTtcbiAgICBzdmdSb290LnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIiwgYDAgMCAke3dpZHRofSAke2hlaWdodH1gKTtcbiAgICBzdmdSb290LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRoICogZXhwb3J0U2NhbGV9YCk7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0ICogZXhwb3J0U2NhbGV9YCk7XG5cbiAgICBpZiAoYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgICBzdmdSb290LnNldEF0dHJpYnV0ZShcImZpbHRlclwiLCBUSEVNRV9GSUxURVIpO1xuICAgIH1cblxuICAgIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7IC8vIEFzc2V0IHBhdGggbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZCBvbmx5IHdoZW4gdXNpbmcgcGFja2FnZVxuXG4gICAgaWYgKHByb2Nlc3MuZW52LklTX0VYQ0FMSURSQVdfTlBNX1BBQ0tBR0UpIHtcbiAgICAgIGFzc2V0UGF0aCA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuUEtHX05BTUV9QCR7cHJvY2Vzcy5lbnYuUEtHX1ZFUlNJT059YDtcblxuICAgICAgaWYgKGFzc2V0UGF0aD8uc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgYXNzZXRQYXRoID0gYXNzZXRQYXRoLnJlcGxhY2UoXCIvXCIsIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApO1xuICAgICAgfVxuXG4gICAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgICB9XG5cbiAgICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlPlxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIlZpcmdpbFwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofVZpcmdpbC53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJDYXNjYWRpYVwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofUNhc2NhZGlhLndvZmYyXCIpO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvZGVmcz5cbiAgYDsgLy8gcmVuZGVyIGJhY2tncm91bmQgcmVjdFxuXG4gICAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgICAgY29uc3QgcmVjdCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInJlY3RcIik7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcInhcIiwgXCIwXCIpO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGh9YCk7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtoZWlnaHR9YCk7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgICBzdmdSb290LmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH1cblxuICAgIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gICAgcmVuZGVyU2NlbmVUb1N2ZyhlbGVtZW50cywgcnN2Zywgc3ZnUm9vdCwgZmlsZXMgfHwge30sIHtcbiAgICAgIG9mZnNldFg6IC1taW5YICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIG9mZnNldFk6IC1taW5ZICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIGV4cG9ydFdpdGhEYXJrTW9kZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlXG4gICAgfSk7XG4gICAgcmV0dXJuIHN2Z1Jvb3Q7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb1N2ZyhfeDUsIF94NiwgX3g3KSB7XG4gICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7IC8vIGNhbGN1bGF0ZSBzbWFsbGVzdCBhcmVhIHRvIGZpdCB0aGUgY29udGVudHMgaW5cblxuY29uc3QgZ2V0Q2FudmFzU2l6ZSA9IGZ1bmN0aW9uIChlbGVtZW50cywgZXhwb3J0UGFkZGluZykge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRDb21tb25Cb3VuZHMoZWxlbWVudHMpO1xuICBjb25zdCB3aWR0aCA9IGRpc3RhbmNlKG1pblgsIG1heFgpICsgZXhwb3J0UGFkZGluZyAqIDI7XG4gIGNvbnN0IGhlaWdodCA9IGRpc3RhbmNlKG1pblksIG1heFkpICsgZXhwb3J0UGFkZGluZyArIGV4cG9ydFBhZGRpbmc7XG4gIHJldHVybiBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXhwb3J0U2l6ZSA9IGZ1bmN0aW9uIChlbGVtZW50cywgZXhwb3J0UGFkZGluZywgc2NhbGUpIHtcbiAgY29uc3QgWywsIHdpZHRoLCBoZWlnaHRdID0gZ2V0Q2FudmFzU2l6ZShlbGVtZW50cywgZXhwb3J0UGFkZGluZykubWFwKGZ1bmN0aW9uIChkaW1lbnNpb24pIHtcbiAgICByZXR1cm4gTWF0aC50cnVuYyhkaW1lbnNpb24gKiBzY2FsZSk7XG4gIH0pO1xuICByZXR1cm4gW3dpZHRoLCBoZWlnaHRdO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../scene/export.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../scene/export.ts?");
3107
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"SVG_EXPORT_TAG\\\": () => (/* binding */ SVG_EXPORT_TAG),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"getExportSize\\\": () => (/* binding */ getExportSize)\\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 roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ \\\"../../../node_modules/roughjs/bin/rough.js\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../renderer/renderScene */ \\\"../../renderer/renderScene.ts\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/image */ \\\"../../element/image.ts\\\");\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\\r\\nconst exportToCanvas = /*#__PURE__*/ function () {\\r\\n var _ref = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (elements, appState, files, _ref2) {\\r\\n let { exportBackground, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_EXPORT_PADDING, viewBackgroundColor } = _ref2;\\r\\n let createCanvas = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (width, height) {\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n canvas.width = width * appState.exportScale;\\r\\n canvas.height = height * appState.exportScale;\\r\\n return {\\r\\n canvas,\\r\\n scale: appState.exportScale\\r\\n };\\r\\n };\\r\\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\\r\\n const { canvas, scale = 1 } = createCanvas(width, height);\\r\\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_6__.getDefaultAppState)();\\r\\n const { imageCache } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_8__.updateImageCache)({\\r\\n imageCache: new Map(),\\r\\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_8__.getInitializedImageElements)(elements).map(function (element) {\\r\\n return element.fileId;\\r\\n }),\\r\\n files\\r\\n });\\r\\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_3__.renderScene)({\\r\\n elements,\\r\\n appState,\\r\\n scale,\\r\\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].canvas(canvas),\\r\\n canvas,\\r\\n renderConfig: {\\r\\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\\r\\n scrollX: -minX + exportPadding,\\r\\n scrollY: -minY + exportPadding,\\r\\n zoom: defaultAppState.zoom,\\r\\n remotePointerViewportCoords: {},\\r\\n remoteSelectedElementIds: {},\\r\\n shouldCacheIgnoreZoom: false,\\r\\n remotePointerUsernames: {},\\r\\n remotePointerUserStates: {},\\r\\n theme: appState.exportWithDarkMode ? \\\"dark\\\" : \\\"light\\\",\\r\\n imageCache,\\r\\n renderScrollbars: false,\\r\\n renderSelection: false,\\r\\n renderGrid: false,\\r\\n isExporting: true\\r\\n }\\r\\n });\\r\\n return canvas;\\r\\n });\\r\\n return function exportToCanvas(_x, _x2, _x3, _x4) {\\r\\n return _ref.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* (elements, appState, files) {\\r\\n const { exportPadding = _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, exportScale = 1, exportEmbedScene } = appState;\\r\\n let metadata = \\\"\\\";\\r\\n if (exportEmbedScene) {\\r\\n try {\\r\\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \\\"../../data/image.ts\\\"))).encodeSvgMetadata({\\r\\n text: (0,_data_json__WEBPACK_IMPORTED_MODULE_7__.serializeAsJSON)(elements, appState, files || {}, \\\"local\\\")\\r\\n });\\r\\n }\\r\\n catch (error) {\\r\\n console.error(error);\\r\\n }\\r\\n }\\r\\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding); // initialize SVG root\\r\\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_5__.SVG_NS, \\\"svg\\\");\\r\\n svgRoot.setAttribute(\\\"version\\\", \\\"1.1\\\");\\r\\n svgRoot.setAttribute(\\\"xmlns\\\", _constants__WEBPACK_IMPORTED_MODULE_5__.SVG_NS);\\r\\n svgRoot.setAttribute(\\\"viewBox\\\", `0 0 ${width} ${height}`);\\r\\n svgRoot.setAttribute(\\\"width\\\", `${width * exportScale}`);\\r\\n svgRoot.setAttribute(\\\"height\\\", `${height * exportScale}`);\\r\\n if (appState.exportWithDarkMode) {\\r\\n svgRoot.setAttribute(\\\"filter\\\", _constants__WEBPACK_IMPORTED_MODULE_5__.THEME_FILTER);\\r\\n }\\r\\n let assetPath = \\\"https://excalidraw.com/\\\"; // Asset path needs to be determined only when using package\\r\\n if (true) {\\r\\n assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\\\"@zsviczian/excalidraw\\\"}@${\\\"0.12.0-obsidian-7\\\"}`;\\r\\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\\\"/\\\")) {\\r\\n assetPath = assetPath.replace(\\\"/\\\", `${window.location.origin}/`);\\r\\n }\\r\\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\\r\\n }\\r\\n svgRoot.innerHTML = `\\n ${SVG_EXPORT_TAG}\\n ${metadata}\\n <defs>\\n <style>\\n @font-face {\\n font-family: \\\"Virgil\\\";\\n src: url(\\\"${assetPath}Virgil.woff2\\\");\\n }\\n @font-face {\\n font-family: \\\"Cascadia\\\";\\n src: url(\\\"${assetPath}Cascadia.woff2\\\");\\n }\\n </style>\\n </defs>\\n `; // render background rect\\r\\n if (appState.exportBackground && viewBackgroundColor) {\\r\\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_5__.SVG_NS, \\\"rect\\\");\\r\\n rect.setAttribute(\\\"x\\\", \\\"0\\\");\\r\\n rect.setAttribute(\\\"y\\\", \\\"0\\\");\\r\\n rect.setAttribute(\\\"width\\\", `${width}`);\\r\\n rect.setAttribute(\\\"height\\\", `${height}`);\\r\\n rect.setAttribute(\\\"fill\\\", viewBackgroundColor);\\r\\n svgRoot.appendChild(rect);\\r\\n }\\r\\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].svg(svgRoot);\\r\\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_3__.renderSceneToSvg)(elements, rsvg, svgRoot, files || {}, {\\r\\n offsetX: -minX + exportPadding,\\r\\n offsetY: -minY + exportPadding,\\r\\n exportWithDarkMode: appState.exportWithDarkMode\\r\\n });\\r\\n return svgRoot;\\r\\n });\\r\\n return function exportToSvg(_x5, _x6, _x7) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n}(); // calculate smallest area to fit the contents in\\r\\nconst getCanvasSize = function (elements, exportPadding) {\\r\\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBounds)(elements);\\r\\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.distance)(minX, maxX) + exportPadding * 2;\\r\\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.distance)(minY, maxY) + exportPadding + exportPadding;\\r\\n return [minX, minY, width, height];\\r\\n};\\r\\nconst getExportSize = function (elements, exportPadding, scale) {\\r\\n const [, , width, height] = getCanvasSize(elements, exportPadding).map(function (dimension) {\\r\\n return Math.trunc(dimension * scale);\\r\\n });\\r\\n return [width, height];\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMzRCxNQUFNLEtBQUssR0FBRyxnREFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLGdEQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDcEUsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVLLE1BQU0sYUFBYSxHQUFHLFVBQVUsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLO0lBQ25FLE1BQU0sQ0FBQyxFQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsU0FBUztRQUN2RixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvZXhwb3J0LnRzPzI1MzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IGdldENvbW1vbkJvdW5kcyB9IGZyb20gXCIuLi9lbGVtZW50L2JvdW5kc1wiO1xuaW1wb3J0IHsgcmVuZGVyU2NlbmUsIHJlbmRlclNjZW5lVG9TdmcgfSBmcm9tIFwiLi4vcmVuZGVyZXIvcmVuZGVyU2NlbmVcIjtcbmltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBTVkdfTlMsIFRIRU1FX0ZJTFRFUiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuaW1wb3J0IHsgZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzLCB1cGRhdGVJbWFnZUNhY2hlIH0gZnJvbSBcIi4uL2VsZW1lbnQvaW1hZ2VcIjtcbmV4cG9ydCBjb25zdCBTVkdfRVhQT1JUX1RBRyA9IGA8IS0tIHN2Zy1zb3VyY2U6ZXhjYWxpZHJhdyAtLT5gO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIF9yZWYyKSB7XG4gICAgbGV0IHtcbiAgICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgICB9ID0gX3JlZjI7XG4gICAgbGV0IGNyZWF0ZUNhbnZhcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICBjYW52YXMud2lkdGggPSB3aWR0aCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBzY2FsZTogYXBwU3RhdGUuZXhwb3J0U2NhbGVcbiAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcbiAgICBjb25zdCB7XG4gICAgICBjYW52YXMsXG4gICAgICBzY2FsZSA9IDFcbiAgICB9ID0gY3JlYXRlQ2FudmFzKHdpZHRoLCBoZWlnaHQpO1xuICAgIGNvbnN0IGRlZmF1bHRBcHBTdGF0ZSA9IGdldERlZmF1bHRBcHBTdGF0ZSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGltYWdlQ2FjaGVcbiAgICB9ID0geWllbGQgdXBkYXRlSW1hZ2VDYWNoZSh7XG4gICAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgICBmaWxlSWRzOiBnZXRJbml0aWFsaXplZEltYWdlRWxlbWVudHMoZWxlbWVudHMpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxlSWQ7XG4gICAgICB9KSxcbiAgICAgIGZpbGVzXG4gICAgfSk7XG4gICAgcmVuZGVyU2NlbmUoe1xuICAgICAgZWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZSxcbiAgICAgIHNjYWxlLFxuICAgICAgcmM6IHJvdWdoLmNhbnZhcyhjYW52YXMpLFxuICAgICAgY2FudmFzLFxuICAgICAgcmVuZGVyQ29uZmlnOiB7XG4gICAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICAgICAgc2Nyb2xsWDogLW1pblggKyBleHBvcnRQYWRkaW5nLFxuICAgICAgICBzY3JvbGxZOiAtbWluWSArIGV4cG9ydFBhZGRpbmcsXG4gICAgICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgICAgICByZW1vdGVQb2ludGVyVmlld3BvcnRDb29yZHM6IHt9LFxuICAgICAgICByZW1vdGVTZWxlY3RlZEVsZW1lbnRJZHM6IHt9LFxuICAgICAgICBzaG91bGRDYWNoZUlnbm9yZVpvb206IGZhbHNlLFxuICAgICAgICByZW1vdGVQb2ludGVyVXNlcm5hbWVzOiB7fSxcbiAgICAgICAgcmVtb3RlUG9pbnRlclVzZXJTdGF0ZXM6IHt9LFxuICAgICAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIsXG4gICAgICAgIGltYWdlQ2FjaGUsXG4gICAgICAgIHJlbmRlclNjcm9sbGJhcnM6IGZhbHNlLFxuICAgICAgICByZW5kZXJTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICByZW5kZXJHcmlkOiBmYWxzZSxcbiAgICAgICAgaXNFeHBvcnRpbmc6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2FudmFzO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9DYW52YXMoX3gsIF94MiwgX3gzLCBfeDQpIHtcbiAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChlbGVtZW50cywgYXBwU3RhdGUsIGZpbGVzKSB7XG4gICAgY29uc3Qge1xuICAgICAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gICAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgICAgZXhwb3J0U2NhbGUgPSAxLFxuICAgICAgZXhwb3J0RW1iZWRTY2VuZVxuICAgIH0gPSBhcHBTdGF0ZTtcbiAgICBsZXQgbWV0YWRhdGEgPSBcIlwiO1xuXG4gICAgaWYgKGV4cG9ydEVtYmVkU2NlbmUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1ldGFkYXRhID0geWllbGQgKHlpZWxkIGltcG9ydChcbiAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovXG4gICAgICAgIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIikpLmVuY29kZVN2Z01ldGFkYXRhKHtcbiAgICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpOyAvLyBpbml0aWFsaXplIFNWRyByb290XG5cbiAgICBjb25zdCBzdmdSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJzdmdcIik7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2ZXJzaW9uXCIsIFwiMS4xXCIpO1xuICAgIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgU1ZHX05TKTtcbiAgICBzdmdSb290LnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIiwgYDAgMCAke3dpZHRofSAke2hlaWdodH1gKTtcbiAgICBzdmdSb290LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRoICogZXhwb3J0U2NhbGV9YCk7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0ICogZXhwb3J0U2NhbGV9YCk7XG5cbiAgICBpZiAoYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgICBzdmdSb290LnNldEF0dHJpYnV0ZShcImZpbHRlclwiLCBUSEVNRV9GSUxURVIpO1xuICAgIH1cblxuICAgIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7IC8vIEFzc2V0IHBhdGggbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZCBvbmx5IHdoZW4gdXNpbmcgcGFja2FnZVxuXG4gICAgaWYgKHByb2Nlc3MuZW52LklTX0VYQ0FMSURSQVdfTlBNX1BBQ0tBR0UpIHtcbiAgICAgIGFzc2V0UGF0aCA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuUEtHX05BTUV9QCR7cHJvY2Vzcy5lbnYuUEtHX1ZFUlNJT059YDtcblxuICAgICAgaWYgKGFzc2V0UGF0aD8uc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgYXNzZXRQYXRoID0gYXNzZXRQYXRoLnJlcGxhY2UoXCIvXCIsIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApO1xuICAgICAgfVxuXG4gICAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgICB9XG5cbiAgICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlPlxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIlZpcmdpbFwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofVZpcmdpbC53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJDYXNjYWRpYVwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofUNhc2NhZGlhLndvZmYyXCIpO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvZGVmcz5cbiAgYDsgLy8gcmVuZGVyIGJhY2tncm91bmQgcmVjdFxuXG4gICAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgICAgY29uc3QgcmVjdCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInJlY3RcIik7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcInhcIiwgXCIwXCIpO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGh9YCk7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtoZWlnaHR9YCk7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgICBzdmdSb290LmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH1cblxuICAgIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gICAgcmVuZGVyU2NlbmVUb1N2ZyhlbGVtZW50cywgcnN2Zywgc3ZnUm9vdCwgZmlsZXMgfHwge30sIHtcbiAgICAgIG9mZnNldFg6IC1taW5YICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIG9mZnNldFk6IC1taW5ZICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIGV4cG9ydFdpdGhEYXJrTW9kZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlXG4gICAgfSk7XG4gICAgcmV0dXJuIHN2Z1Jvb3Q7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb1N2ZyhfeDUsIF94NiwgX3g3KSB7XG4gICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7IC8vIGNhbGN1bGF0ZSBzbWFsbGVzdCBhcmVhIHRvIGZpdCB0aGUgY29udGVudHMgaW5cblxuY29uc3QgZ2V0Q2FudmFzU2l6ZSA9IGZ1bmN0aW9uIChlbGVtZW50cywgZXhwb3J0UGFkZGluZykge1xuICBjb25zdCBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0gPSBnZXRDb21tb25Cb3VuZHMoZWxlbWVudHMpO1xuICBjb25zdCB3aWR0aCA9IGRpc3RhbmNlKG1pblgsIG1heFgpICsgZXhwb3J0UGFkZGluZyAqIDI7XG4gIGNvbnN0IGhlaWdodCA9IGRpc3RhbmNlKG1pblksIG1heFkpICsgZXhwb3J0UGFkZGluZyArIGV4cG9ydFBhZGRpbmc7XG4gIHJldHVybiBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXhwb3J0U2l6ZSA9IGZ1bmN0aW9uIChlbGVtZW50cywgZXhwb3J0UGFkZGluZywgc2NhbGUpIHtcbiAgY29uc3QgWywsIHdpZHRoLCBoZWlnaHRdID0gZ2V0Q2FudmFzU2l6ZShlbGVtZW50cywgZXhwb3J0UGFkZGluZykubWFwKGZ1bmN0aW9uIChkaW1lbnNpb24pIHtcbiAgICByZXR1cm4gTWF0aC50cnVuYyhkaW1lbnNpb24gKiBzY2FsZSk7XG4gIH0pO1xuICByZXR1cm4gW3dpZHRoLCBoZWlnaHRdO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../scene/export.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../scene/export.ts?");
3108
3108
 
3109
3109
  /***/ }),
3110
3110
 
@@ -3192,7 +3192,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
3192
3192
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3193
3193
 
3194
3194
  "use strict";
3195
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"allowFullScreen\\\": () => (/* binding */ allowFullScreen),\\n/* harmony export */ \\\"arrayToMap\\\": () => (/* binding */ arrayToMap),\\n/* harmony export */ \\\"bytesToHexString\\\": () => (/* binding */ bytesToHexString),\\n/* harmony export */ \\\"capitalizeString\\\": () => (/* binding */ capitalizeString),\\n/* harmony export */ \\\"chunk\\\": () => (/* binding */ chunk),\\n/* harmony export */ \\\"debounce\\\": () => (/* binding */ debounce),\\n/* harmony export */ \\\"distance\\\": () => (/* binding */ distance),\\n/* harmony export */ \\\"exitFullScreen\\\": () => (/* binding */ exitFullScreen),\\n/* harmony export */ \\\"findIndex\\\": () => (/* binding */ findIndex),\\n/* harmony export */ \\\"findLastIndex\\\": () => (/* binding */ findLastIndex),\\n/* harmony export */ \\\"focusNearestParent\\\": () => (/* binding */ focusNearestParent),\\n/* harmony export */ \\\"getDateTime\\\": () => (/* binding */ getDateTime),\\n/* harmony export */ \\\"getFontFamilyString\\\": () => (/* binding */ getFontFamilyString),\\n/* harmony export */ \\\"getFontString\\\": () => (/* binding */ getFontString),\\n/* harmony export */ \\\"getFrame\\\": () => (/* binding */ getFrame),\\n/* harmony export */ \\\"getGlobalCSSVariable\\\": () => (/* binding */ getGlobalCSSVariable),\\n/* harmony export */ \\\"getNearestScrollableContainer\\\": () => (/* binding */ getNearestScrollableContainer),\\n/* harmony export */ \\\"getShortcutKey\\\": () => (/* binding */ getShortcutKey),\\n/* harmony export */ \\\"getUpdatedTimestamp\\\": () => (/* binding */ getUpdatedTimestamp),\\n/* harmony export */ \\\"getVersion\\\": () => (/* binding */ getVersion),\\n/* harmony export */ \\\"isFullScreen\\\": () => (/* binding */ isFullScreen),\\n/* harmony export */ \\\"isInputLike\\\": () => (/* binding */ isInputLike),\\n/* harmony export */ \\\"isPrimitive\\\": () => (/* binding */ isPrimitive),\\n/* harmony export */ \\\"isProdEnv\\\": () => (/* binding */ isProdEnv),\\n/* harmony export */ \\\"isPromiseLike\\\": () => (/* binding */ isPromiseLike),\\n/* harmony export */ \\\"isRTL\\\": () => (/* binding */ isRTL),\\n/* harmony export */ \\\"isTestEnv\\\": () => (/* binding */ isTestEnv),\\n/* harmony export */ \\\"isToolIcon\\\": () => (/* binding */ isToolIcon),\\n/* harmony export */ \\\"isTransparent\\\": () => (/* binding */ isTransparent),\\n/* harmony export */ \\\"isWritableElement\\\": () => (/* binding */ isWritableElement),\\n/* harmony export */ \\\"muteFSAbortError\\\": () => (/* binding */ muteFSAbortError),\\n/* harmony export */ \\\"nFormatter\\\": () => (/* binding */ nFormatter),\\n/* harmony export */ \\\"preventUnload\\\": () => (/* binding */ preventUnload),\\n/* harmony export */ \\\"queryFocusableElements\\\": () => (/* binding */ queryFocusableElements),\\n/* harmony export */ \\\"removeSelection\\\": () => (/* binding */ removeSelection),\\n/* harmony export */ \\\"resetCursor\\\": () => (/* binding */ resetCursor),\\n/* harmony export */ \\\"resolvablePromise\\\": () => (/* binding */ resolvablePromise),\\n/* harmony export */ \\\"sceneCoordsToViewportCoords\\\": () => (/* binding */ sceneCoordsToViewportCoords),\\n/* harmony export */ \\\"selectNode\\\": () => (/* binding */ selectNode),\\n/* harmony export */ \\\"setCursor\\\": () => (/* binding */ setCursor),\\n/* harmony export */ \\\"setCursorForShape\\\": () => (/* binding */ setCursorForShape),\\n/* harmony export */ \\\"setDateTimeForTests\\\": () => (/* binding */ setDateTimeForTests),\\n/* harmony export */ \\\"setEraserCursor\\\": () => (/* binding */ setEraserCursor),\\n/* harmony export */ \\\"supportsEmoji\\\": () => (/* binding */ supportsEmoji),\\n/* harmony export */ \\\"throttleRAF\\\": () => (/* binding */ throttleRAF),\\n/* harmony export */ \\\"tupleToCoors\\\": () => (/* binding */ tupleToCoors),\\n/* harmony export */ \\\"updateActiveTool\\\": () => (/* binding */ updateActiveTool),\\n/* harmony export */ \\\"updateObject\\\": () => (/* binding */ updateObject),\\n/* harmony export */ \\\"viewportCoordsToSceneCoords\\\": () => (/* binding */ viewportCoordsToSceneCoords),\\n/* harmony export */ \\\"withBatchedUpdates\\\": () => (/* binding */ withBatchedUpdates),\\n/* harmony export */ \\\"withBatchedUpdatesThrottled\\\": () => (/* binding */ withBatchedUpdatesThrottled),\\n/* harmony export */ \\\"wrapEvent\\\": () => (/* binding */ wrapEvent)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ \\\"../../../node_modules/open-color/open-color.json\\\");\\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors */ \\\"../../colors.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom */ \\\"react-dom\\\");\\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./keys */ \\\"../../keys.ts\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), 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 = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nlet mockDateTime = null;\\r\\nconst setDateTimeForTests = function (dateTime) {\\r\\n mockDateTime = dateTime;\\r\\n};\\r\\nconst getDateTime = function () {\\r\\n if (mockDateTime) {\\r\\n return mockDateTime;\\r\\n }\\r\\n const date = new Date();\\r\\n const year = date.getFullYear();\\r\\n const month = `${date.getMonth() + 1}`.padStart(2, \\\"0\\\");\\r\\n const day = `${date.getDate()}`.padStart(2, \\\"0\\\");\\r\\n const hr = `${date.getHours()}`.padStart(2, \\\"0\\\");\\r\\n const min = `${date.getMinutes()}`.padStart(2, \\\"0\\\");\\r\\n return `${year}-${month}-${day}-${hr}${min}`;\\r\\n};\\r\\nconst capitalizeString = function (str) {\\r\\n return str.charAt(0).toUpperCase() + str.slice(1);\\r\\n};\\r\\nconst isToolIcon = function (target) {\\r\\n return target instanceof HTMLElement && target.className.includes(\\\"ToolIcon\\\");\\r\\n};\\r\\nconst isInputLike = function (target) {\\r\\n return target instanceof HTMLElement && target.dataset.type === \\\"wysiwyg\\\" || target instanceof HTMLBRElement || // newline in wysiwyg\\r\\n target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement;\\r\\n};\\r\\nconst isWritableElement = function (target) {\\r\\n return target instanceof HTMLElement && target.dataset.type === \\\"wysiwyg\\\" || target instanceof HTMLBRElement || // newline in wysiwyg\\r\\n target instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === \\\"text\\\" || target.type === \\\"number\\\");\\r\\n};\\r\\nconst getFontFamilyString = function (_ref) {\\r\\n let { fontFamily } = _ref;\\r\\n for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY)) {\\r\\n if (id === fontFamily) {\\r\\n return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_3__.WINDOWS_EMOJI_FALLBACK_FONT}`;\\r\\n }\\r\\n }\\r\\n return _constants__WEBPACK_IMPORTED_MODULE_3__.WINDOWS_EMOJI_FALLBACK_FONT;\\r\\n};\\r\\n/** returns fontSize+fontFamily string for assignment to DOM elements */\\r\\nconst getFontString = function (_ref2) {\\r\\n let { fontSize, fontFamily } = _ref2;\\r\\n return `${fontSize}px ${getFontFamilyString({\\r\\n fontFamily\\r\\n })}`;\\r\\n};\\r\\nconst debounce = function (fn, timeout) {\\r\\n let handle = 0;\\r\\n let lastArgs = null;\\r\\n const ret = function () {\\r\\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\\r\\n args[_key] = arguments[_key];\\r\\n }\\r\\n lastArgs = args;\\r\\n clearTimeout(handle);\\r\\n handle = window.setTimeout(function () {\\r\\n lastArgs = null;\\r\\n fn(...args);\\r\\n }, timeout);\\r\\n };\\r\\n ret.flush = function () {\\r\\n clearTimeout(handle);\\r\\n if (lastArgs) {\\r\\n const _lastArgs = lastArgs;\\r\\n lastArgs = null;\\r\\n fn(..._lastArgs);\\r\\n }\\r\\n };\\r\\n ret.cancel = function () {\\r\\n lastArgs = null;\\r\\n clearTimeout(handle);\\r\\n };\\r\\n return ret;\\r\\n}; // throttle callback to execute once per animation frame\\r\\nconst throttleRAF = function (fn, opts) {\\r\\n let timerId = null;\\r\\n let lastArgs = null;\\r\\n let lastArgsTrailing = null;\\r\\n const scheduleFunc = function (args) {\\r\\n timerId = window.requestAnimationFrame(function () {\\r\\n timerId = null;\\r\\n fn(...args);\\r\\n lastArgs = null;\\r\\n if (lastArgsTrailing) {\\r\\n lastArgs = lastArgsTrailing;\\r\\n lastArgsTrailing = null;\\r\\n scheduleFunc(lastArgs);\\r\\n }\\r\\n });\\r\\n };\\r\\n const ret = function () {\\r\\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\\r\\n args[_key2] = arguments[_key2];\\r\\n }\\r\\n if (false) {}\\r\\n lastArgs = args;\\r\\n if (timerId === null) {\\r\\n scheduleFunc(lastArgs);\\r\\n }\\r\\n else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\\r\\n lastArgsTrailing = args;\\r\\n }\\r\\n };\\r\\n ret.flush = function () {\\r\\n if (timerId !== null) {\\r\\n cancelAnimationFrame(timerId);\\r\\n timerId = null;\\r\\n }\\r\\n if (lastArgs) {\\r\\n fn(...(lastArgsTrailing || lastArgs));\\r\\n lastArgs = lastArgsTrailing = null;\\r\\n }\\r\\n };\\r\\n ret.cancel = function () {\\r\\n lastArgs = lastArgsTrailing = null;\\r\\n if (timerId !== null) {\\r\\n cancelAnimationFrame(timerId);\\r\\n timerId = null;\\r\\n }\\r\\n };\\r\\n return ret;\\r\\n}; // https://github.com/lodash/lodash/blob/es/chunk.js\\r\\nconst chunk = function (array, size) {\\r\\n if (!array.length || size < 1) {\\r\\n return [];\\r\\n }\\r\\n let index = 0;\\r\\n let resIndex = 0;\\r\\n const result = Array(Math.ceil(array.length / size));\\r\\n while (index < array.length) {\\r\\n result[resIndex++] = array.slice(index, index += size);\\r\\n }\\r\\n return result;\\r\\n};\\r\\nconst selectNode = function (node) {\\r\\n const selection = window.getSelection();\\r\\n if (selection) {\\r\\n const range = document.createRange();\\r\\n range.selectNodeContents(node);\\r\\n selection.removeAllRanges();\\r\\n selection.addRange(range);\\r\\n }\\r\\n};\\r\\nconst removeSelection = function () {\\r\\n const selection = window.getSelection();\\r\\n if (selection) {\\r\\n selection.removeAllRanges();\\r\\n }\\r\\n};\\r\\nconst distance = function (x, y) {\\r\\n return Math.abs(x - y);\\r\\n};\\r\\nconst updateActiveTool = function (appState, data) {\\r\\n if (data.type === \\\"custom\\\") {\\r\\n return _objectSpread(_objectSpread({}, appState.activeTool), {}, {\\r\\n type: \\\"custom\\\",\\r\\n customType: data.customType\\r\\n });\\r\\n }\\r\\n return _objectSpread(_objectSpread({}, appState.activeTool), {}, {\\r\\n lastActiveToolBeforeEraser: data.lastActiveToolBeforeEraser === undefined ? appState.activeTool.lastActiveToolBeforeEraser : data.lastActiveToolBeforeEraser,\\r\\n type: data.type,\\r\\n customType: null\\r\\n });\\r\\n};\\r\\nconst resetCursor = function (canvas) {\\r\\n if (canvas) {\\r\\n canvas.style.cursor = \\\"\\\";\\r\\n }\\r\\n};\\r\\nconst setCursor = function (canvas, cursor) {\\r\\n if (canvas) {\\r\\n canvas.style.cursor = cursor;\\r\\n }\\r\\n};\\r\\nlet eraserCanvasCache;\\r\\nlet previewDataURL;\\r\\nconst setEraserCursor = function (canvas, theme) {\\r\\n const cursorImageSizePx = 20;\\r\\n const drawCanvas = function () {\\r\\n const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_3__.THEME.DARK;\\r\\n eraserCanvasCache = document.createElement(\\\"canvas\\\");\\r\\n eraserCanvasCache.theme = theme;\\r\\n eraserCanvasCache.height = cursorImageSizePx;\\r\\n eraserCanvasCache.width = cursorImageSizePx;\\r\\n const context = eraserCanvasCache.getContext(\\\"2d\\\");\\r\\n context.lineWidth = 1;\\r\\n context.beginPath();\\r\\n context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\\r\\n context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.black : open_color__WEBPACK_IMPORTED_MODULE_1__.white;\\r\\n context.fill();\\r\\n context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.white : open_color__WEBPACK_IMPORTED_MODULE_1__.black;\\r\\n context.stroke();\\r\\n previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.svg);\\r\\n };\\r\\n if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\\r\\n drawCanvas();\\r\\n }\\r\\n setCursor(canvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\\r\\n};\\r\\nconst setCursorForShape = function (canvas, appState) {\\r\\n if (!canvas) {\\r\\n return;\\r\\n }\\r\\n if (appState.activeTool.type === \\\"selection\\\") {\\r\\n resetCursor(canvas);\\r\\n }\\r\\n else if (appState.activeTool.type === \\\"eraser\\\") {\\r\\n setEraserCursor(canvas, appState.theme); // do nothing if image tool is selected which suggests there's\\r\\n // a image-preview set as the cursor\\r\\n // Ignore custom type as well and let host decide\\r\\n }\\r\\n else if (![\\\"image\\\", \\\"custom\\\"].includes(appState.activeTool.type)) {\\r\\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_3__.CURSOR_TYPE.CROSSHAIR;\\r\\n }\\r\\n};\\r\\nconst isFullScreen = function () {\\r\\n var _a;\\r\\n return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === \\\"HTML\\\";\\r\\n};\\r\\nconst allowFullScreen = function () {\\r\\n return document.documentElement.requestFullscreen();\\r\\n};\\r\\nconst exitFullScreen = function () {\\r\\n return document.exitFullscreen();\\r\\n};\\r\\nconst getShortcutKey = function (shortcut) {\\r\\n shortcut = shortcut.replace(/\\\\bAlt\\\\b/i, \\\"Alt\\\").replace(/\\\\bShift\\\\b/i, \\\"Shift\\\").replace(/\\\\b(Enter|Return)\\\\b/i, \\\"Enter\\\").replace(/\\\\bDel\\\\b/i, \\\"Delete\\\");\\r\\n if (_keys__WEBPACK_IMPORTED_MODULE_5__.isDarwin) {\\r\\n return shortcut.replace(/\\\\bCtrlOrCmd\\\\b/i, \\\"Cmd\\\").replace(/\\\\bAlt\\\\b/i, \\\"Option\\\");\\r\\n }\\r\\n return shortcut.replace(/\\\\bCtrlOrCmd\\\\b/i, \\\"Ctrl\\\");\\r\\n};\\r\\nconst viewportCoordsToSceneCoords = function (_ref3, _ref4) {\\r\\n let { clientX, clientY } = _ref3;\\r\\n let { zoom, offsetLeft, offsetTop, scrollX, scrollY } = _ref4;\\r\\n const invScale = 1 / zoom.value;\\r\\n const x = (clientX - offsetLeft) * invScale - scrollX;\\r\\n const y = (clientY - offsetTop) * invScale - scrollY;\\r\\n return {\\r\\n x,\\r\\n y\\r\\n };\\r\\n};\\r\\nconst sceneCoordsToViewportCoords = function (_ref5, _ref6) {\\r\\n let { sceneX, sceneY } = _ref5;\\r\\n let { zoom, offsetLeft, offsetTop, scrollX, scrollY } = _ref6;\\r\\n const x = (sceneX + scrollX) * zoom.value + offsetLeft;\\r\\n const y = (sceneY + scrollY) * zoom.value + offsetTop;\\r\\n return {\\r\\n x,\\r\\n y\\r\\n };\\r\\n};\\r\\nconst getGlobalCSSVariable = function (name) {\\r\\n return getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\\r\\n};\\r\\nconst RS_LTR_CHARS = \\\"A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02B8\\\\u0300-\\\\u0590\\\\u0800-\\\\u1FFF\\\" + \\\"\\\\u2C00-\\\\uFB1C\\\\uFDFE-\\\\uFE6F\\\\uFEFD-\\\\uFFFF\\\";\\r\\nconst RS_RTL_CHARS = \\\"\\\\u0591-\\\\u07FF\\\\uFB1D-\\\\uFDFD\\\\uFE70-\\\\uFEFC\\\";\\r\\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\\r\\n/**\\r\\n * Checks whether first directional character is RTL. Meaning whether it starts\\r\\n * with RTL characters, or indeterminate (numbers etc.) characters followed by\\r\\n * RTL.\\r\\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\\r\\n */\\r\\nconst isRTL = function (text) {\\r\\n return RE_RTL_CHECK.test(text);\\r\\n};\\r\\nconst tupleToCoors = function (xyTuple) {\\r\\n const [x, y] = xyTuple;\\r\\n return {\\r\\n x,\\r\\n y\\r\\n };\\r\\n};\\r\\n/** use as a rejectionHandler to mute filesystem Abort errors */\\r\\nconst muteFSAbortError = function (error) {\\r\\n if ((error === null || error === void 0 ? void 0 : error.name) === \\\"AbortError\\\") {\\r\\n console.warn(error);\\r\\n return;\\r\\n }\\r\\n throw error;\\r\\n};\\r\\nconst findIndex = function (array, cb) {\\r\\n let fromIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\\r\\n if (fromIndex < 0) {\\r\\n fromIndex = array.length + fromIndex;\\r\\n }\\r\\n fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\\r\\n let index = fromIndex - 1;\\r\\n while (++index < array.length) {\\r\\n if (cb(array[index], index, array)) {\\r\\n return index;\\r\\n }\\r\\n }\\r\\n return -1;\\r\\n};\\r\\nconst findLastIndex = function (array, cb) {\\r\\n let fromIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : array.length - 1;\\r\\n if (fromIndex < 0) {\\r\\n fromIndex = array.length + fromIndex;\\r\\n }\\r\\n fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\\r\\n let index = fromIndex + 1;\\r\\n while (--index > -1) {\\r\\n if (cb(array[index], index, array)) {\\r\\n return index;\\r\\n }\\r\\n }\\r\\n return -1;\\r\\n};\\r\\nconst isTransparent = function (color) {\\r\\n const isRGBTransparent = color.length === 5 && color.substr(4, 1) === \\\"0\\\";\\r\\n const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === \\\"00\\\";\\r\\n return isRGBTransparent || isRRGGBBTransparent || color === _colors__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].elementBackground[0];\\r\\n};\\r\\nconst resolvablePromise = function () {\\r\\n let resolve;\\r\\n let reject;\\r\\n const promise = new Promise(function (_resolve, _reject) {\\r\\n resolve = _resolve;\\r\\n reject = _reject;\\r\\n });\\r\\n promise.resolve = resolve;\\r\\n promise.reject = reject;\\r\\n return promise;\\r\\n};\\r\\n/**\\r\\n * @param func handler taking at most single parameter (event).\\r\\n */\\r\\nconst withBatchedUpdates = function (func) {\\r\\n return function (event) {\\r\\n (0,react_dom__WEBPACK_IMPORTED_MODULE_4__.unstable_batchedUpdates)(func, event);\\r\\n };\\r\\n};\\r\\n/**\\r\\n * barches React state updates and throttles the calls to a single call per\\r\\n * animation frame\\r\\n */\\r\\nconst withBatchedUpdatesThrottled = function (func) {\\r\\n // @ts-ignore\\r\\n return throttleRAF(function (event) {\\r\\n (0,react_dom__WEBPACK_IMPORTED_MODULE_4__.unstable_batchedUpdates)(func, event);\\r\\n });\\r\\n}; //https://stackoverflow.com/a/9462382/8418\\r\\nconst nFormatter = function (num, digits) {\\r\\n const si = [{\\r\\n value: 1,\\r\\n symbol: \\\"b\\\"\\r\\n }, {\\r\\n value: 1e3,\\r\\n symbol: \\\"k\\\"\\r\\n }, {\\r\\n value: 1e6,\\r\\n symbol: \\\"M\\\"\\r\\n }, {\\r\\n value: 1e9,\\r\\n symbol: \\\"G\\\"\\r\\n }];\\r\\n const rx = /\\\\.0+$|(\\\\.[0-9]*[1-9])0+$/;\\r\\n let index;\\r\\n for (index = si.length - 1; index > 0; index--) {\\r\\n if (num >= si[index].value) {\\r\\n break;\\r\\n }\\r\\n }\\r\\n return (num / si[index].value).toFixed(digits).replace(rx, \\\"$1\\\") + si[index].symbol;\\r\\n};\\r\\nconst getVersion = function () {\\r\\n var _a;\\r\\n return ((_a = document.querySelector('meta[name=\\\"version\\\"]')) === null || _a === void 0 ? void 0 : _a.content) || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_VERSION;\\r\\n}; // Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\\r\\nconst supportsEmoji = function () {\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n const ctx = canvas.getContext(\\\"2d\\\");\\r\\n if (!ctx) {\\r\\n return false;\\r\\n }\\r\\n const offset = 12;\\r\\n ctx.fillStyle = \\\"#f00\\\";\\r\\n ctx.textBaseline = \\\"top\\\";\\r\\n ctx.font = \\\"32px Arial\\\"; // Modernizr used 🐨, but it is sort of supported on Windows 7.\\r\\n // Luckily 😀 isn't supported.\\r\\n ctx.fillText(\\\"😀\\\", 0, 0);\\r\\n return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\\r\\n};\\r\\nconst getNearestScrollableContainer = function (element) {\\r\\n let parent = element.parentElement;\\r\\n while (parent) {\\r\\n if (parent === document.body) {\\r\\n return document;\\r\\n }\\r\\n const { overflowY } = window.getComputedStyle(parent);\\r\\n const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\\r\\n if (hasScrollableContent && (overflowY === \\\"auto\\\" || overflowY === \\\"scroll\\\" || overflowY === \\\"overlay\\\")) {\\r\\n return parent;\\r\\n }\\r\\n parent = parent.parentElement;\\r\\n }\\r\\n return document;\\r\\n};\\r\\nconst focusNearestParent = function (element) {\\r\\n let parent = element.parentElement;\\r\\n while (parent) {\\r\\n if (parent.tabIndex > -1) {\\r\\n parent.focus();\\r\\n return;\\r\\n }\\r\\n parent = parent.parentElement;\\r\\n }\\r\\n};\\r\\nconst preventUnload = function (event) {\\r\\n event.preventDefault(); // NOTE: modern browsers no longer allow showing a custom message here\\r\\n event.returnValue = \\\"\\\";\\r\\n};\\r\\nconst bytesToHexString = function (bytes) {\\r\\n return Array.from(bytes).map(function (byte) {\\r\\n return `0${byte.toString(16)}`.slice(-2);\\r\\n }).join(\\\"\\\");\\r\\n};\\r\\nconst getUpdatedTimestamp = function () {\\r\\n return isTestEnv() ? 1 : Date.now();\\r\\n};\\r\\n/**\\r\\n * Transforms array of objects containing `id` attribute,\\r\\n * or array of ids (strings), into a Map, keyd by `id`.\\r\\n */\\r\\nconst arrayToMap = function (items) {\\r\\n return items.reduce(function (acc, element) {\\r\\n acc.set(typeof element === \\\"string\\\" ? element : element.id, element);\\r\\n return acc;\\r\\n }, new Map());\\r\\n};\\r\\nconst isTestEnv = function () {\\r\\n var _a;\\r\\n return typeof process !== \\\"undefined\\\" && ((_a = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-5\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \\\"test\\\";\\r\\n};\\r\\nconst isProdEnv = function () {\\r\\n var _a;\\r\\n return typeof process !== \\\"undefined\\\" && ((_a = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-5\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \\\"production\\\";\\r\\n};\\r\\nconst wrapEvent = function (name, nativeEvent) {\\r\\n return new CustomEvent(name, {\\r\\n detail: {\\r\\n nativeEvent\\r\\n },\\r\\n cancelable: true\\r\\n });\\r\\n};\\r\\nconst updateObject = function (obj, updates) {\\r\\n let didChange = false;\\r\\n for (const key in updates) {\\r\\n const value = updates[key];\\r\\n if (typeof value !== \\\"undefined\\\") {\\r\\n if (obj[key] === value && ( // if object, always update because its attrs could have changed\\r\\n typeof value !== \\\"object\\\" || value === null)) {\\r\\n continue;\\r\\n }\\r\\n didChange = true;\\r\\n }\\r\\n }\\r\\n if (!didChange) {\\r\\n return obj;\\r\\n }\\r\\n return _objectSpread(_objectSpread({}, obj), updates);\\r\\n};\\r\\nconst isPrimitive = function (val) {\\r\\n const type = typeof val;\\r\\n return val == null || type !== \\\"object\\\" && type !== \\\"function\\\";\\r\\n};\\r\\nconst getFrame = function () {\\r\\n try {\\r\\n return window.self === window.top ? \\\"top\\\" : \\\"iframe\\\";\\r\\n }\\r\\n catch (error) {\\r\\n return \\\"iframe\\\";\\r\\n }\\r\\n};\\r\\nconst isPromiseLike = function (value) {\\r\\n return !!value && typeof value === \\\"object\\\" && \\\"then\\\" in value && \\\"catch\\\" in value && \\\"finally\\\" in value;\\r\\n};\\r\\nconst queryFocusableElements = function (container) {\\r\\n const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll(\\\"button, a, input, select, textarea, div[tabindex], label[tabindex]\\\");\\r\\n return focusableElements ? Array.from(focusableElements).filter(function (element) {\\r\\n return element.tabIndex > -1 && !element.disabled;\\r\\n }) : [];\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2pCO0FBQ0gsQ0FBQyxDQUFDO0FBQ0ssTUFBTSxhQUFhLEdBQUcsVUFBVSxLQUFLO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxPQUFPLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUM7QUFDM0csQ0FBQyxDQUFDO0FBQ0ssTUFBTSxzQkFBc0IsR0FBRyxVQUFVLFNBQVM7SUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsZ0JBQWdCLENBQUMsb0VBQW9FLENBQUMsQ0FBQztJQUM1SCxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsT0FBTztRQUMvRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDVixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vdXRpbHMudHM/YjFkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBvYyBmcm9tIFwib3Blbi1jb2xvclwiO1xuaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi9jb2xvcnNcIjtcbmltcG9ydCB7IENVUlNPUl9UWVBFLCBERUZBVUxUX1ZFUlNJT04sIEZPTlRfRkFNSUxZLCBNSU1FX1RZUEVTLCBUSEVNRSwgV0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05UIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IGlzRGFyd2luIH0gZnJvbSBcIi4va2V5c1wiO1xubGV0IG1vY2tEYXRlVGltZSA9IG51bGw7XG5leHBvcnQgY29uc3Qgc2V0RGF0ZVRpbWVGb3JUZXN0cyA9IGZ1bmN0aW9uIChkYXRlVGltZSkge1xuICBtb2NrRGF0ZVRpbWUgPSBkYXRlVGltZTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RGF0ZVRpbWUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChtb2NrRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gbW9ja0RhdGVUaW1lO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoID0gYCR7ZGF0ZS5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgY29uc3QgZGF5ID0gYCR7ZGF0ZS5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCBcIjBcIik7XG4gIGNvbnN0IGhyID0gYCR7ZGF0ZS5nZXRIb3VycygpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICBjb25zdCBtaW4gPSBgJHtkYXRlLmdldE1pbnV0ZXMoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fS0ke2hyfSR7bWlufWA7XG59O1xuZXhwb3J0IGNvbnN0IGNhcGl0YWxpemVTdHJpbmcgPSBmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59O1xuZXhwb3J0IGNvbnN0IGlzVG9vbEljb24gPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKFwiVG9vbEljb25cIik7XG59O1xuZXhwb3J0IGNvbnN0IGlzSW5wdXRMaWtlID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgdGFyZ2V0LmRhdGFzZXQudHlwZSA9PT0gXCJ3eXNpd3lnXCIgfHwgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJSRWxlbWVudCB8fCAvLyBuZXdsaW5lIGluIHd5c2l3eWdcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBpc1dyaXRhYmxlRWxlbWVudCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5kYXRhc2V0LnR5cGUgPT09IFwid3lzaXd5Z1wiIHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxCUkVsZW1lbnQgfHwgLy8gbmV3bGluZSBpbiB3eXNpd3lnXG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgfHwgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiAodGFyZ2V0LnR5cGUgPT09IFwidGV4dFwiIHx8IHRhcmdldC50eXBlID09PSBcIm51bWJlclwiKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Rm9udEZhbWlseVN0cmluZyA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gIGxldCB7XG4gICAgZm9udEZhbWlseVxuICB9ID0gX3JlZjtcblxuICBmb3IgKGNvbnN0IFtmb250RmFtaWx5U3RyaW5nLCBpZF0gb2YgT2JqZWN0LmVudHJpZXMoRk9OVF9GQU1JTFkpKSB7XG4gICAgaWYgKGlkID09PSBmb250RmFtaWx5KSB7XG4gICAgICByZXR1cm4gYCR7Zm9udEZhbWlseVN0cmluZ30sICR7V0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05UfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFdJTkRPV1NfRU1PSklfRkFMTEJBQ0tfRk9OVDtcbn07XG4vKiogcmV0dXJucyBmb250U2l6ZStmb250RmFtaWx5IHN0cmluZyBmb3IgYXNzaWdubWVudCB0byBET00gZWxlbWVudHMgKi9cblxuZXhwb3J0IGNvbnN0IGdldEZvbnRTdHJpbmcgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgbGV0IHtcbiAgICBmb250U2l6ZSxcbiAgICBmb250RmFtaWx5XG4gIH0gPSBfcmVmMjtcbiAgcmV0dXJuIGAke2ZvbnRTaXplfXB4ICR7Z2V0Rm9udEZhbWlseVN0cmluZyh7XG4gICAgZm9udEZhbWlseVxuICB9KX1gO1xufTtcbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IGZ1bmN0aW9uIChmbiwgdGltZW91dCkge1xuICBsZXQgaGFuZGxlID0gMDtcbiAgbGV0IGxhc3RBcmdzID0gbnVsbDtcblxuICBjb25zdCByZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGxhc3RBcmdzID0gYXJncztcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgICBoYW5kbGUgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBsYXN0QXJncyA9IG51bGw7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICB9LCB0aW1lb3V0KTtcbiAgfTtcblxuICByZXQuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG5cbiAgICBpZiAobGFzdEFyZ3MpIHtcbiAgICAgIGNvbnN0IF9sYXN0QXJncyA9IGxhc3RBcmdzO1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgZm4oLi4uX2xhc3RBcmdzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0LmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICBsYXN0QXJncyA9IG51bGw7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gIH07XG5cbiAgcmV0dXJuIHJldDtcbn07IC8vIHRocm90dGxlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgb25jZSBwZXIgYW5pbWF0aW9uIGZyYW1lXG5cbmV4cG9ydCBjb25zdCB0aHJvdHRsZVJBRiA9IGZ1bmN0aW9uIChmbiwgb3B0cykge1xuICBsZXQgdGltZXJJZCA9IG51bGw7XG4gIGxldCBsYXN0QXJncyA9IG51bGw7XG4gIGxldCBsYXN0QXJnc1RyYWlsaW5nID0gbnVsbDtcblxuICBjb25zdCBzY2hlZHVsZUZ1bmMgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIHRpbWVySWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgZm4oLi4uYXJncyk7XG4gICAgICBsYXN0QXJncyA9IG51bGw7XG5cbiAgICAgIGlmIChsYXN0QXJnc1RyYWlsaW5nKSB7XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZztcbiAgICAgICAgbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgICAgIHNjaGVkdWxlRnVuYyhsYXN0QXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmV0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RBcmdzID0gYXJncztcblxuICAgIGlmICh0aW1lcklkID09PSBudWxsKSB7XG4gICAgICBzY2hlZHVsZUZ1bmMobGFzdEFyZ3MpO1xuICAgIH0gZWxzZSBpZiAob3B0cz8udHJhaWxpbmcpIHtcbiAgICAgIGxhc3RBcmdzVHJhaWxpbmcgPSBhcmdzO1xuICAgIH1cbiAgfTtcblxuICByZXQuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGxhc3RBcmdzKSB7XG4gICAgICBmbiguLi4obGFzdEFyZ3NUcmFpbGluZyB8fCBsYXN0QXJncykpO1xuICAgICAgbGFzdEFyZ3MgPSBsYXN0QXJnc1RyYWlsaW5nID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgcmV0LmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICBsYXN0QXJncyA9IGxhc3RBcmdzVHJhaWxpbmcgPSBudWxsO1xuXG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiByZXQ7XG59OyAvLyBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL2VzL2NodW5rLmpzXG5cbmV4cG9ydCBjb25zdCBjaHVuayA9IGZ1bmN0aW9uIChhcnJheSwgc2l6ZSkge1xuICBpZiAoIWFycmF5Lmxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCByZXNJbmRleCA9IDA7XG4gIGNvbnN0IHJlc3VsdCA9IEFycmF5KE1hdGguY2VpbChhcnJheS5sZW5ndGggLyBzaXplKSk7XG5cbiAgd2hpbGUgKGluZGV4IDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgcmVzdWx0W3Jlc0luZGV4KytdID0gYXJyYXkuc2xpY2UoaW5kZXgsIGluZGV4ICs9IHNpemUpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgY29uc3Qgc2VsZWN0Tm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHggLSB5KTtcbn07XG5leHBvcnQgY29uc3QgdXBkYXRlQWN0aXZlVG9vbCA9IGZ1bmN0aW9uIChhcHBTdGF0ZSwgZGF0YSkge1xuICBpZiAoZGF0YS50eXBlID09PSBcImN1c3RvbVwiKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXBwU3RhdGUuYWN0aXZlVG9vbCksIHt9LCB7XG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgY3VzdG9tVHlwZTogZGF0YS5jdXN0b21UeXBlXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBhcHBTdGF0ZS5hY3RpdmVUb29sKSwge30sIHtcbiAgICBsYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlcjogZGF0YS5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciA9PT0gdW5kZWZpbmVkID8gYXBwU3RhdGUuYWN0aXZlVG9vbC5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciA6IGRhdGEubGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXIsXG4gICAgdHlwZTogZGF0YS50eXBlLFxuICAgIGN1c3RvbVR5cGU6IG51bGxcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IHJlc2V0Q3Vyc29yID0gZnVuY3Rpb24gKGNhbnZhcykge1xuICBpZiAoY2FudmFzKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IFwiXCI7XG4gIH1cbn07XG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yID0gZnVuY3Rpb24gKGNhbnZhcywgY3Vyc29yKSB7XG4gIGlmIChjYW52YXMpIHtcbiAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICB9XG59O1xubGV0IGVyYXNlckNhbnZhc0NhY2hlO1xubGV0IHByZXZpZXdEYXRhVVJMO1xuZXhwb3J0IGNvbnN0IHNldEVyYXNlckN1cnNvciA9IGZ1bmN0aW9uIChjYW52YXMsIHRoZW1lKSB7XG4gIGNvbnN0IGN1cnNvckltYWdlU2l6ZVB4ID0gMjA7XG5cbiAgY29uc3QgZHJhd0NhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpc0RhcmtUaGVtZSA9IHRoZW1lID09PSBUSEVNRS5EQVJLO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS50aGVtZSA9IHRoZW1lO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLmhlaWdodCA9IGN1cnNvckltYWdlU2l6ZVB4O1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLndpZHRoID0gY3Vyc29ySW1hZ2VTaXplUHg7XG4gICAgY29uc3QgY29udGV4dCA9IGVyYXNlckNhbnZhc0NhY2hlLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0LmFyYyhlcmFzZXJDYW52YXNDYWNoZS53aWR0aCAvIDIsIGVyYXNlckNhbnZhc0NhY2hlLmhlaWdodCAvIDIsIDUsIDAsIDIgKiBNYXRoLlBJKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGlzRGFya1RoZW1lID8gb2MuYmxhY2sgOiBvYy53aGl0ZTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gaXNEYXJrVGhlbWUgPyBvYy53aGl0ZSA6IG9jLmJsYWNrO1xuICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgcHJldmlld0RhdGFVUkwgPSBlcmFzZXJDYW52YXNDYWNoZS50b0RhdGFVUkwoTUlNRV9UWVBFUy5zdmcpO1xuICB9O1xuXG4gIGlmICghZXJhc2VyQ2FudmFzQ2FjaGUgfHwgZXJhc2VyQ2FudmFzQ2FjaGUudGhlbWUgIT09IHRoZW1lKSB7XG4gICAgZHJhd0NhbnZhcygpO1xuICB9XG5cbiAgc2V0Q3Vyc29yKGNhbnZhcywgYHVybCgke3ByZXZpZXdEYXRhVVJMfSkgJHtjdXJzb3JJbWFnZVNpemVQeCAvIDJ9ICR7Y3Vyc29ySW1hZ2VTaXplUHggLyAyfSwgYXV0b2ApO1xufTtcbmV4cG9ydCBjb25zdCBzZXRDdXJzb3JGb3JTaGFwZSA9IGZ1bmN0aW9uIChjYW52YXMsIGFwcFN0YXRlKSB7XG4gIGlmICghY2FudmFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSA9PT0gXCJzZWxlY3Rpb25cIikge1xuICAgIHJlc2V0Q3Vyc29yKGNhbnZhcyk7XG4gIH0gZWxzZSBpZiAoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlID09PSBcImVyYXNlclwiKSB7XG4gICAgc2V0RXJhc2VyQ3Vyc29yKGNhbnZhcywgYXBwU3RhdGUudGhlbWUpOyAvLyBkbyBub3RoaW5nIGlmIGltYWdlIHRvb2wgaXMgc2VsZWN0ZWQgd2hpY2ggc3VnZ2VzdHMgdGhlcmUnc1xuICAgIC8vIGEgaW1hZ2UtcHJldmlldyBzZXQgYXMgdGhlIGN1cnNvclxuICAgIC8vIElnbm9yZSBjdXN0b20gdHlwZSBhcyB3ZWxsIGFuZCBsZXQgaG9zdCBkZWNpZGVcbiAgfSBlbHNlIGlmICghW1wiaW1hZ2VcIiwgXCJjdXN0b21cIl0uaW5jbHVkZXMoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSkge1xuICAgIGNhbnZhcy5zdHlsZS5jdXJzb3IgPSBDVVJTT1JfVFlQRS5DUk9TU0hBSVI7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgaXNGdWxsU2NyZWVuID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQ/Lm5vZGVOYW1lID09PSBcIkhUTUxcIjtcbn07XG5leHBvcnQgY29uc3QgYWxsb3dGdWxsU2NyZWVuID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XG59O1xuZXhwb3J0IGNvbnN0IGV4aXRGdWxsU2NyZWVuID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0U2hvcnRjdXRLZXkgPSBmdW5jdGlvbiAoc2hvcnRjdXQpIHtcbiAgc2hvcnRjdXQgPSBzaG9ydGN1dC5yZXBsYWNlKC9cXGJBbHRcXGIvaSwgXCJBbHRcIikucmVwbGFjZSgvXFxiU2hpZnRcXGIvaSwgXCJTaGlmdFwiKS5yZXBsYWNlKC9cXGIoRW50ZXJ8UmV0dXJuKVxcYi9pLCBcIkVudGVyXCIpLnJlcGxhY2UoL1xcYkRlbFxcYi9pLCBcIkRlbGV0ZVwiKTtcblxuICBpZiAoaXNEYXJ3aW4pIHtcbiAgICByZXR1cm4gc2hvcnRjdXQucmVwbGFjZSgvXFxiQ3RybE9yQ21kXFxiL2ksIFwiQ21kXCIpLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIk9wdGlvblwiKTtcbiAgfVxuXG4gIHJldHVybiBzaG9ydGN1dC5yZXBsYWNlKC9cXGJDdHJsT3JDbWRcXGIvaSwgXCJDdHJsXCIpO1xufTtcbmV4cG9ydCBjb25zdCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMgPSBmdW5jdGlvbiAoX3JlZjMsIF9yZWY0KSB7XG4gIGxldCB7XG4gICAgY2xpZW50WCxcbiAgICBjbGllbnRZXG4gIH0gPSBfcmVmMztcbiAgbGV0IHtcbiAgICB6b29tLFxuICAgIG9mZnNldExlZnQsXG4gICAgb2Zmc2V0VG9wLFxuICAgIHNjcm9sbFgsXG4gICAgc2Nyb2xsWVxuICB9ID0gX3JlZjQ7XG4gIGNvbnN0IGludlNjYWxlID0gMSAvIHpvb20udmFsdWU7XG4gIGNvbnN0IHggPSAoY2xpZW50WCAtIG9mZnNldExlZnQpICogaW52U2NhbGUgLSBzY3JvbGxYO1xuICBjb25zdCB5ID0gKGNsaWVudFkgLSBvZmZzZXRUb3ApICogaW52U2NhbGUgLSBzY3JvbGxZO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufTtcbmV4cG9ydCBjb25zdCBzY2VuZUNvb3Jkc1RvVmlld3BvcnRDb29yZHMgPSBmdW5jdGlvbiAoX3JlZjUsIF9yZWY2KSB7XG4gIGxldCB7XG4gICAgc2NlbmVYLFxuICAgIHNjZW5lWVxuICB9ID0gX3JlZjU7XG4gIGxldCB7XG4gICAgem9vbSxcbiAgICBvZmZzZXRMZWZ0LFxuICAgIG9mZnNldFRvcCxcbiAgICBzY3JvbGxYLFxuICAgIHNjcm9sbFlcbiAgfSA9IF9yZWY2O1xuICBjb25zdCB4ID0gKHNjZW5lWCArIHNjcm9sbFgpICogem9vbS52YWx1ZSArIG9mZnNldExlZnQ7XG4gIGNvbnN0IHkgPSAoc2NlbmVZICsgc2Nyb2xsWSkgKiB6b29tLnZhbHVlICsgb2Zmc2V0VG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxDU1NWYXJpYWJsZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShgLS0ke25hbWV9YCk7XG59O1xuY29uc3QgUlNfTFRSX0NIQVJTID0gXCJBLVphLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQjhcXHUwMzAwLVxcdTA1OTBcXHUwODAwLVxcdTFGRkZcIiArIFwiXFx1MkMwMC1cXHVGQjFDXFx1RkRGRS1cXHVGRTZGXFx1RkVGRC1cXHVGRkZGXCI7XG5jb25zdCBSU19SVExfQ0hBUlMgPSBcIlxcdTA1OTEtXFx1MDdGRlxcdUZCMUQtXFx1RkRGRFxcdUZFNzAtXFx1RkVGQ1wiO1xuY29uc3QgUkVfUlRMX0NIRUNLID0gbmV3IFJlZ0V4cChgXlteJHtSU19MVFJfQ0hBUlN9XSpbJHtSU19SVExfQ0hBUlN9XWApO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBmaXJzdCBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIgaXMgUlRMLiBNZWFuaW5nIHdoZXRoZXIgaXQgc3RhcnRzXG4gKiAgd2l0aCBSVEwgY2hhcmFjdGVycywgb3IgaW5kZXRlcm1pbmF0ZSAobnVtYmVycyBldGMuKSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5XG4gKiAgUlRMLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNzIyI2Rpc2N1c3Npb25fcjQzNjM0MDE3MVxuICovXG5cbmV4cG9ydCBjb25zdCBpc1JUTCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIHJldHVybiBSRV9SVExfQ0hFQ0sudGVzdCh0ZXh0KTtcbn07XG5leHBvcnQgY29uc3QgdHVwbGVUb0Nvb3JzID0gZnVuY3Rpb24gKHh5VHVwbGUpIHtcbiAgY29uc3QgW3gsIHldID0geHlUdXBsZTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn07XG4vKiogdXNlIGFzIGEgcmVqZWN0aW9uSGFuZGxlciB0byBtdXRlIGZpbGVzeXN0ZW0gQWJvcnQgZXJyb3JzICovXG5cbmV4cG9ydCBjb25zdCBtdXRlRlNBYm9ydEVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gIGlmIChlcnJvcj8ubmFtZSA9PT0gXCJBYm9ydEVycm9yXCIpIHtcbiAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IGVycm9yO1xufTtcbmV4cG9ydCBjb25zdCBmaW5kSW5kZXggPSBmdW5jdGlvbiAoYXJyYXksIGNiKSB7XG4gIGxldCBmcm9tSW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7XG5cbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBhcnJheS5sZW5ndGggKyBmcm9tSW5kZXg7XG4gIH1cblxuICBmcm9tSW5kZXggPSBNYXRoLm1pbihhcnJheS5sZW5ndGgsIE1hdGgubWF4KGZyb21JbmRleCwgMCkpO1xuICBsZXQgaW5kZXggPSBmcm9tSW5kZXggLSAxO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgaWYgKGNiKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn07XG5leHBvcnQgY29uc3QgZmluZExhc3RJbmRleCA9IGZ1bmN0aW9uIChhcnJheSwgY2IpIHtcbiAgbGV0IGZyb21JbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyYXkubGVuZ3RoIC0gMTtcblxuICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgfVxuXG4gIGZyb21JbmRleCA9IE1hdGgubWluKGFycmF5Lmxlbmd0aCAtIDEsIE1hdGgubWF4KGZyb21JbmRleCwgMCkpO1xuICBsZXQgaW5kZXggPSBmcm9tSW5kZXggKyAxO1xuXG4gIHdoaWxlICgtLWluZGV4ID4gLTEpIHtcbiAgICBpZiAoY2IoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcbmV4cG9ydCBjb25zdCBpc1RyYW5zcGFyZW50ID0gZnVuY3Rpb24gKGNvbG9yKSB7XG4gIGNvbnN0IGlzUkdCVHJhbnNwYXJlbnQgPSBjb2xvci5sZW5ndGggPT09IDUgJiYgY29sb3Iuc3Vic3RyKDQsIDEpID09PSBcIjBcIjtcbiAgY29uc3QgaXNSUkdHQkJUcmFuc3BhcmVudCA9IGNvbG9yLmxlbmd0aCA9PT0gOSAmJiBjb2xvci5zdWJzdHIoNywgMikgPT09IFwiMDBcIjtcbiAgcmV0dXJuIGlzUkdCVHJhbnNwYXJlbnQgfHwgaXNSUkdHQkJUcmFuc3BhcmVudCB8fCBjb2xvciA9PT0gY29sb3JzLmVsZW1lbnRCYWNrZ3JvdW5kWzBdO1xufTtcbmV4cG9ydCBjb25zdCByZXNvbHZhYmxlUHJvbWlzZSA9IGZ1bmN0aW9uICgpIHtcbiAgbGV0IHJlc29sdmU7XG4gIGxldCByZWplY3Q7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoX3Jlc29sdmUsIF9yZWplY3QpIHtcbiAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgcmVqZWN0ID0gX3JlamVjdDtcbiAgfSk7XG4gIHByb21pc2UucmVzb2x2ZSA9IHJlc29sdmU7XG4gIHByb21pc2UucmVqZWN0ID0gcmVqZWN0O1xuICByZXR1cm4gcHJvbWlzZTtcbn07XG4vKipcbiAqIEBwYXJhbSBmdW5jIGhhbmRsZXIgdGFraW5nIGF0IG1vc3Qgc2luZ2xlIHBhcmFtZXRlciAoZXZlbnQpLlxuICovXG5cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYywgZXZlbnQpO1xuICB9O1xufTtcbi8qKlxuICogYmFyY2hlcyBSZWFjdCBzdGF0ZSB1cGRhdGVzIGFuZCB0aHJvdHRsZXMgdGhlIGNhbGxzIHRvIGEgc2luZ2xlIGNhbGwgcGVyXG4gKiBhbmltYXRpb24gZnJhbWVcbiAqL1xuXG5leHBvcnQgY29uc3Qgd2l0aEJhdGNoZWRVcGRhdGVzVGhyb3R0bGVkID0gZnVuY3Rpb24gKGZ1bmMpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gdGhyb3R0bGVSQUYoZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYywgZXZlbnQpO1xuICB9KTtcbn07IC8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk0NjIzODIvODQxOFxuXG5leHBvcnQgY29uc3QgbkZvcm1hdHRlciA9IGZ1bmN0aW9uIChudW0sIGRpZ2l0cykge1xuICBjb25zdCBzaSA9IFt7XG4gICAgdmFsdWU6IDEsXG4gICAgc3ltYm9sOiBcImJcIlxuICB9LCB7XG4gICAgdmFsdWU6IDFlMyxcbiAgICBzeW1ib2w6IFwia1wiXG4gIH0sIHtcbiAgICB2YWx1ZTogMWU2LFxuICAgIHN5bWJvbDogXCJNXCJcbiAgfSwge1xuICAgIHZhbHVlOiAxZTksXG4gICAgc3ltYm9sOiBcIkdcIlxuICB9XTtcbiAgY29uc3QgcnggPSAvXFwuMCskfChcXC5bMC05XSpbMS05XSkwKyQvO1xuICBsZXQgaW5kZXg7XG5cbiAgZm9yIChpbmRleCA9IHNpLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGlmIChudW0gPj0gc2lbaW5kZXhdLnZhbHVlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKG51bSAvIHNpW2luZGV4XS52YWx1ZSkudG9GaXhlZChkaWdpdHMpLnJlcGxhY2UocngsIFwiJDFcIikgKyBzaVtpbmRleF0uc3ltYm9sO1xufTtcbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwidmVyc2lvblwiXScpPy5jb250ZW50IHx8IERFRkFVTFRfVkVSU0lPTjtcbn07IC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vTW9kZXJuaXpyL01vZGVybml6ci9ibG9iL21hc3Rlci9mZWF0dXJlLWRldGVjdHMvZW1vamkuanNcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRzRW1vamkgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG5cbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvZmZzZXQgPSAxMjtcbiAgY3R4LmZpbGxTdHlsZSA9IFwiI2YwMFwiO1xuICBjdHgudGV4dEJhc2VsaW5lID0gXCJ0b3BcIjtcbiAgY3R4LmZvbnQgPSBcIjMycHggQXJpYWxcIjsgLy8gTW9kZXJuaXpyIHVzZWQg8J+QqCwgYnV0IGl0IGlzIHNvcnQgb2Ygc3VwcG9ydGVkIG9uIFdpbmRvd3MgNy5cbiAgLy8gTHVja2lseSDwn5iAIGlzbid0IHN1cHBvcnRlZC5cblxuICBjdHguZmlsbFRleHQoXCLwn5iAXCIsIDAsIDApO1xuICByZXR1cm4gY3R4LmdldEltYWdlRGF0YShvZmZzZXQsIG9mZnNldCwgMSwgMSkuZGF0YVswXSAhPT0gMDtcbn07XG5leHBvcnQgY29uc3QgZ2V0TmVhcmVzdFNjcm9sbGFibGVDb250YWluZXIgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAocGFyZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgb3ZlcmZsb3dZXG4gICAgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgY29uc3QgaGFzU2Nyb2xsYWJsZUNvbnRlbnQgPSBwYXJlbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyZW50LmNsaWVudEhlaWdodDtcblxuICAgIGlmIChoYXNTY3JvbGxhYmxlQ29udGVudCAmJiAob3ZlcmZsb3dZID09PSBcImF1dG9cIiB8fCBvdmVyZmxvd1kgPT09IFwic2Nyb2xsXCIgfHwgb3ZlcmZsb3dZID09PSBcIm92ZXJsYXlcIikpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGZvY3VzTmVhcmVzdFBhcmVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGxldCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgd2hpbGUgKHBhcmVudCkge1xuICAgIGlmIChwYXJlbnQudGFiSW5kZXggPiAtMSkge1xuICAgICAgcGFyZW50LmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgcHJldmVudFVubG9hZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBOT1RFOiBtb2Rlcm4gYnJvd3NlcnMgbm8gbG9uZ2VyIGFsbG93IHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBoZXJlXG5cbiAgZXZlbnQucmV0dXJuVmFsdWUgPSBcIlwiO1xufTtcbmV4cG9ydCBjb25zdCBieXRlc1RvSGV4U3RyaW5nID0gZnVuY3Rpb24gKGJ5dGVzKSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGJ5dGVzKS5tYXAoZnVuY3Rpb24gKGJ5dGUpIHtcbiAgICByZXR1cm4gYDAke2J5dGUudG9TdHJpbmcoMTYpfWAuc2xpY2UoLTIpO1xuICB9KS5qb2luKFwiXCIpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVkVGltZXN0YW1wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNUZXN0RW52KCkgPyAxIDogRGF0ZS5ub3coKTtcbn07XG4vKipcbiAqIFRyYW5zZm9ybXMgYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGBpZGAgYXR0cmlidXRlLFxuICogb3IgYXJyYXkgb2YgaWRzIChzdHJpbmdzKSwgaW50byBhIE1hcCwga2V5ZCBieSBgaWRgLlxuICovXG5cbmV4cG9ydCBjb25zdCBhcnJheVRvTWFwID0gZnVuY3Rpb24gKGl0ZW1zKSB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZWxlbWVudCkge1xuICAgIGFjYy5zZXQodHlwZW9mIGVsZW1lbnQgPT09IFwic3RyaW5nXCIgPyBlbGVtZW50IDogZWxlbWVudC5pZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgbmV3IE1hcCgpKTtcbn07XG5leHBvcnQgY29uc3QgaXNUZXN0RW52ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInRlc3RcIjtcbn07XG5leHBvcnQgY29uc3QgaXNQcm9kRW52ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIjtcbn07XG5leHBvcnQgY29uc3Qgd3JhcEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgIGRldGFpbDoge1xuICAgICAgbmF0aXZlRXZlbnRcbiAgICB9LFxuICAgIGNhbmNlbGFibGU6IHRydWVcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU9iamVjdCA9IGZ1bmN0aW9uIChvYmosIHVwZGF0ZXMpIHtcbiAgbGV0IGRpZENoYW5nZSA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHVwZGF0ZXNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChvYmpba2V5XSA9PT0gdmFsdWUgJiYgKCAvLyBpZiBvYmplY3QsIGFsd2F5cyB1cGRhdGUgYmVjYXVzZSBpdHMgYXR0cnMgY291bGQgaGF2ZSBjaGFuZ2VkXG4gICAgICB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBkaWRDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlkQ2hhbmdlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9iaiksIHVwZGF0ZXMpO1xufTtcbmV4cG9ydCBjb25zdCBpc1ByaW1pdGl2ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCB0eXBlICE9PSBcIm9iamVjdFwiICYmIHR5cGUgIT09IFwiZnVuY3Rpb25cIjtcbn07XG5leHBvcnQgY29uc3QgZ2V0RnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHdpbmRvdy5zZWxmID09PSB3aW5kb3cudG9wID8gXCJ0b3BcIiA6IFwiaWZyYW1lXCI7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFwiaWZyYW1lXCI7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgaXNQcm9taXNlTGlrZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgXCJ0aGVuXCIgaW4gdmFsdWUgJiYgXCJjYXRjaFwiIGluIHZhbHVlICYmIFwiZmluYWxseVwiIGluIHZhbHVlO1xufTtcbmV4cG9ydCBjb25zdCBxdWVyeUZvY3VzYWJsZUVsZW1lbnRzID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvckFsbChcImJ1dHRvbiwgYSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGRpdlt0YWJpbmRleF0sIGxhYmVsW3RhYmluZGV4XVwiKTtcbiAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnRzID8gQXJyYXkuZnJvbShmb2N1c2FibGVFbGVtZW50cykuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXggPiAtMSAmJiAhZWxlbWVudC5kaXNhYmxlZDtcbiAgfSkgOiBbXTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../utils.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../utils.ts?");
3195
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"allowFullScreen\\\": () => (/* binding */ allowFullScreen),\\n/* harmony export */ \\\"arrayToMap\\\": () => (/* binding */ arrayToMap),\\n/* harmony export */ \\\"bytesToHexString\\\": () => (/* binding */ bytesToHexString),\\n/* harmony export */ \\\"capitalizeString\\\": () => (/* binding */ capitalizeString),\\n/* harmony export */ \\\"chunk\\\": () => (/* binding */ chunk),\\n/* harmony export */ \\\"debounce\\\": () => (/* binding */ debounce),\\n/* harmony export */ \\\"distance\\\": () => (/* binding */ distance),\\n/* harmony export */ \\\"exitFullScreen\\\": () => (/* binding */ exitFullScreen),\\n/* harmony export */ \\\"findIndex\\\": () => (/* binding */ findIndex),\\n/* harmony export */ \\\"findLastIndex\\\": () => (/* binding */ findLastIndex),\\n/* harmony export */ \\\"focusNearestParent\\\": () => (/* binding */ focusNearestParent),\\n/* harmony export */ \\\"getDateTime\\\": () => (/* binding */ getDateTime),\\n/* harmony export */ \\\"getFontFamilyString\\\": () => (/* binding */ getFontFamilyString),\\n/* harmony export */ \\\"getFontString\\\": () => (/* binding */ getFontString),\\n/* harmony export */ \\\"getFrame\\\": () => (/* binding */ getFrame),\\n/* harmony export */ \\\"getGlobalCSSVariable\\\": () => (/* binding */ getGlobalCSSVariable),\\n/* harmony export */ \\\"getNearestScrollableContainer\\\": () => (/* binding */ getNearestScrollableContainer),\\n/* harmony export */ \\\"getShortcutKey\\\": () => (/* binding */ getShortcutKey),\\n/* harmony export */ \\\"getUpdatedTimestamp\\\": () => (/* binding */ getUpdatedTimestamp),\\n/* harmony export */ \\\"getVersion\\\": () => (/* binding */ getVersion),\\n/* harmony export */ \\\"isFullScreen\\\": () => (/* binding */ isFullScreen),\\n/* harmony export */ \\\"isInputLike\\\": () => (/* binding */ isInputLike),\\n/* harmony export */ \\\"isPrimitive\\\": () => (/* binding */ isPrimitive),\\n/* harmony export */ \\\"isProdEnv\\\": () => (/* binding */ isProdEnv),\\n/* harmony export */ \\\"isPromiseLike\\\": () => (/* binding */ isPromiseLike),\\n/* harmony export */ \\\"isRTL\\\": () => (/* binding */ isRTL),\\n/* harmony export */ \\\"isTestEnv\\\": () => (/* binding */ isTestEnv),\\n/* harmony export */ \\\"isToolIcon\\\": () => (/* binding */ isToolIcon),\\n/* harmony export */ \\\"isTransparent\\\": () => (/* binding */ isTransparent),\\n/* harmony export */ \\\"isWritableElement\\\": () => (/* binding */ isWritableElement),\\n/* harmony export */ \\\"muteFSAbortError\\\": () => (/* binding */ muteFSAbortError),\\n/* harmony export */ \\\"nFormatter\\\": () => (/* binding */ nFormatter),\\n/* harmony export */ \\\"preventUnload\\\": () => (/* binding */ preventUnload),\\n/* harmony export */ \\\"queryFocusableElements\\\": () => (/* binding */ queryFocusableElements),\\n/* harmony export */ \\\"removeSelection\\\": () => (/* binding */ removeSelection),\\n/* harmony export */ \\\"resetCursor\\\": () => (/* binding */ resetCursor),\\n/* harmony export */ \\\"resolvablePromise\\\": () => (/* binding */ resolvablePromise),\\n/* harmony export */ \\\"sceneCoordsToViewportCoords\\\": () => (/* binding */ sceneCoordsToViewportCoords),\\n/* harmony export */ \\\"selectNode\\\": () => (/* binding */ selectNode),\\n/* harmony export */ \\\"setCursor\\\": () => (/* binding */ setCursor),\\n/* harmony export */ \\\"setCursorForShape\\\": () => (/* binding */ setCursorForShape),\\n/* harmony export */ \\\"setDateTimeForTests\\\": () => (/* binding */ setDateTimeForTests),\\n/* harmony export */ \\\"setEraserCursor\\\": () => (/* binding */ setEraserCursor),\\n/* harmony export */ \\\"supportsEmoji\\\": () => (/* binding */ supportsEmoji),\\n/* harmony export */ \\\"throttleRAF\\\": () => (/* binding */ throttleRAF),\\n/* harmony export */ \\\"tupleToCoors\\\": () => (/* binding */ tupleToCoors),\\n/* harmony export */ \\\"updateActiveTool\\\": () => (/* binding */ updateActiveTool),\\n/* harmony export */ \\\"updateObject\\\": () => (/* binding */ updateObject),\\n/* harmony export */ \\\"viewportCoordsToSceneCoords\\\": () => (/* binding */ viewportCoordsToSceneCoords),\\n/* harmony export */ \\\"withBatchedUpdates\\\": () => (/* binding */ withBatchedUpdates),\\n/* harmony export */ \\\"withBatchedUpdatesThrottled\\\": () => (/* binding */ withBatchedUpdatesThrottled),\\n/* harmony export */ \\\"wrapEvent\\\": () => (/* binding */ wrapEvent)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ \\\"../../../node_modules/open-color/open-color.json\\\");\\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors */ \\\"../../colors.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom */ \\\"react-dom\\\");\\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./keys */ \\\"../../keys.ts\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), 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 = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nlet mockDateTime = null;\\r\\nconst setDateTimeForTests = function (dateTime) {\\r\\n mockDateTime = dateTime;\\r\\n};\\r\\nconst getDateTime = function () {\\r\\n if (mockDateTime) {\\r\\n return mockDateTime;\\r\\n }\\r\\n const date = new Date();\\r\\n const year = date.getFullYear();\\r\\n const month = `${date.getMonth() + 1}`.padStart(2, \\\"0\\\");\\r\\n const day = `${date.getDate()}`.padStart(2, \\\"0\\\");\\r\\n const hr = `${date.getHours()}`.padStart(2, \\\"0\\\");\\r\\n const min = `${date.getMinutes()}`.padStart(2, \\\"0\\\");\\r\\n return `${year}-${month}-${day}-${hr}${min}`;\\r\\n};\\r\\nconst capitalizeString = function (str) {\\r\\n return str.charAt(0).toUpperCase() + str.slice(1);\\r\\n};\\r\\nconst isToolIcon = function (target) {\\r\\n return target instanceof HTMLElement && target.className.includes(\\\"ToolIcon\\\");\\r\\n};\\r\\nconst isInputLike = function (target) {\\r\\n return target instanceof HTMLElement && target.dataset.type === \\\"wysiwyg\\\" || target instanceof HTMLBRElement || // newline in wysiwyg\\r\\n target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement;\\r\\n};\\r\\nconst isWritableElement = function (target) {\\r\\n return target instanceof HTMLElement && target.dataset.type === \\\"wysiwyg\\\" || target instanceof HTMLBRElement || // newline in wysiwyg\\r\\n target instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === \\\"text\\\" || target.type === \\\"number\\\");\\r\\n};\\r\\nconst getFontFamilyString = function (_ref) {\\r\\n let { fontFamily } = _ref;\\r\\n for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY)) {\\r\\n if (id === fontFamily) {\\r\\n return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_3__.WINDOWS_EMOJI_FALLBACK_FONT}`;\\r\\n }\\r\\n }\\r\\n return _constants__WEBPACK_IMPORTED_MODULE_3__.WINDOWS_EMOJI_FALLBACK_FONT;\\r\\n};\\r\\n/** returns fontSize+fontFamily string for assignment to DOM elements */\\r\\nconst getFontString = function (_ref2) {\\r\\n let { fontSize, fontFamily } = _ref2;\\r\\n return `${fontSize}px ${getFontFamilyString({\\r\\n fontFamily\\r\\n })}`;\\r\\n};\\r\\nconst debounce = function (fn, timeout) {\\r\\n let handle = 0;\\r\\n let lastArgs = null;\\r\\n const ret = function () {\\r\\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\\r\\n args[_key] = arguments[_key];\\r\\n }\\r\\n lastArgs = args;\\r\\n clearTimeout(handle);\\r\\n handle = window.setTimeout(function () {\\r\\n lastArgs = null;\\r\\n fn(...args);\\r\\n }, timeout);\\r\\n };\\r\\n ret.flush = function () {\\r\\n clearTimeout(handle);\\r\\n if (lastArgs) {\\r\\n const _lastArgs = lastArgs;\\r\\n lastArgs = null;\\r\\n fn(..._lastArgs);\\r\\n }\\r\\n };\\r\\n ret.cancel = function () {\\r\\n lastArgs = null;\\r\\n clearTimeout(handle);\\r\\n };\\r\\n return ret;\\r\\n}; // throttle callback to execute once per animation frame\\r\\nconst throttleRAF = function (fn, opts) {\\r\\n let timerId = null;\\r\\n let lastArgs = null;\\r\\n let lastArgsTrailing = null;\\r\\n const scheduleFunc = function (args) {\\r\\n timerId = window.requestAnimationFrame(function () {\\r\\n timerId = null;\\r\\n fn(...args);\\r\\n lastArgs = null;\\r\\n if (lastArgsTrailing) {\\r\\n lastArgs = lastArgsTrailing;\\r\\n lastArgsTrailing = null;\\r\\n scheduleFunc(lastArgs);\\r\\n }\\r\\n });\\r\\n };\\r\\n const ret = function () {\\r\\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\\r\\n args[_key2] = arguments[_key2];\\r\\n }\\r\\n if (false) {}\\r\\n lastArgs = args;\\r\\n if (timerId === null) {\\r\\n scheduleFunc(lastArgs);\\r\\n }\\r\\n else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\\r\\n lastArgsTrailing = args;\\r\\n }\\r\\n };\\r\\n ret.flush = function () {\\r\\n if (timerId !== null) {\\r\\n cancelAnimationFrame(timerId);\\r\\n timerId = null;\\r\\n }\\r\\n if (lastArgs) {\\r\\n fn(...(lastArgsTrailing || lastArgs));\\r\\n lastArgs = lastArgsTrailing = null;\\r\\n }\\r\\n };\\r\\n ret.cancel = function () {\\r\\n lastArgs = lastArgsTrailing = null;\\r\\n if (timerId !== null) {\\r\\n cancelAnimationFrame(timerId);\\r\\n timerId = null;\\r\\n }\\r\\n };\\r\\n return ret;\\r\\n}; // https://github.com/lodash/lodash/blob/es/chunk.js\\r\\nconst chunk = function (array, size) {\\r\\n if (!array.length || size < 1) {\\r\\n return [];\\r\\n }\\r\\n let index = 0;\\r\\n let resIndex = 0;\\r\\n const result = Array(Math.ceil(array.length / size));\\r\\n while (index < array.length) {\\r\\n result[resIndex++] = array.slice(index, index += size);\\r\\n }\\r\\n return result;\\r\\n};\\r\\nconst selectNode = function (node) {\\r\\n const selection = window.getSelection();\\r\\n if (selection) {\\r\\n const range = document.createRange();\\r\\n range.selectNodeContents(node);\\r\\n selection.removeAllRanges();\\r\\n selection.addRange(range);\\r\\n }\\r\\n};\\r\\nconst removeSelection = function () {\\r\\n const selection = window.getSelection();\\r\\n if (selection) {\\r\\n selection.removeAllRanges();\\r\\n }\\r\\n};\\r\\nconst distance = function (x, y) {\\r\\n return Math.abs(x - y);\\r\\n};\\r\\nconst updateActiveTool = function (appState, data) {\\r\\n if (data.type === \\\"custom\\\") {\\r\\n return _objectSpread(_objectSpread({}, appState.activeTool), {}, {\\r\\n type: \\\"custom\\\",\\r\\n customType: data.customType\\r\\n });\\r\\n }\\r\\n return _objectSpread(_objectSpread({}, appState.activeTool), {}, {\\r\\n lastActiveToolBeforeEraser: data.lastActiveToolBeforeEraser === undefined ? appState.activeTool.lastActiveToolBeforeEraser : data.lastActiveToolBeforeEraser,\\r\\n type: data.type,\\r\\n customType: null\\r\\n });\\r\\n};\\r\\nconst resetCursor = function (canvas) {\\r\\n if (canvas) {\\r\\n canvas.style.cursor = \\\"\\\";\\r\\n }\\r\\n};\\r\\nconst setCursor = function (canvas, cursor) {\\r\\n if (canvas) {\\r\\n canvas.style.cursor = cursor;\\r\\n }\\r\\n};\\r\\nlet eraserCanvasCache;\\r\\nlet previewDataURL;\\r\\nconst setEraserCursor = function (canvas, theme) {\\r\\n const cursorImageSizePx = 20;\\r\\n const drawCanvas = function () {\\r\\n const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_3__.THEME.DARK;\\r\\n eraserCanvasCache = document.createElement(\\\"canvas\\\");\\r\\n eraserCanvasCache.theme = theme;\\r\\n eraserCanvasCache.height = cursorImageSizePx;\\r\\n eraserCanvasCache.width = cursorImageSizePx;\\r\\n const context = eraserCanvasCache.getContext(\\\"2d\\\");\\r\\n context.lineWidth = 1;\\r\\n context.beginPath();\\r\\n context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\\r\\n context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.black : open_color__WEBPACK_IMPORTED_MODULE_1__.white;\\r\\n context.fill();\\r\\n context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.white : open_color__WEBPACK_IMPORTED_MODULE_1__.black;\\r\\n context.stroke();\\r\\n previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.svg);\\r\\n };\\r\\n if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\\r\\n drawCanvas();\\r\\n }\\r\\n setCursor(canvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\\r\\n};\\r\\nconst setCursorForShape = function (canvas, appState) {\\r\\n if (!canvas) {\\r\\n return;\\r\\n }\\r\\n if (appState.activeTool.type === \\\"selection\\\") {\\r\\n resetCursor(canvas);\\r\\n }\\r\\n else if (appState.activeTool.type === \\\"eraser\\\") {\\r\\n setEraserCursor(canvas, appState.theme); // do nothing if image tool is selected which suggests there's\\r\\n // a image-preview set as the cursor\\r\\n // Ignore custom type as well and let host decide\\r\\n }\\r\\n else if (![\\\"image\\\", \\\"custom\\\"].includes(appState.activeTool.type)) {\\r\\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_3__.CURSOR_TYPE.CROSSHAIR;\\r\\n }\\r\\n};\\r\\nconst isFullScreen = function () {\\r\\n var _a;\\r\\n return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === \\\"HTML\\\";\\r\\n};\\r\\nconst allowFullScreen = function () {\\r\\n return document.documentElement.requestFullscreen();\\r\\n};\\r\\nconst exitFullScreen = function () {\\r\\n return document.exitFullscreen();\\r\\n};\\r\\nconst getShortcutKey = function (shortcut) {\\r\\n shortcut = shortcut.replace(/\\\\bAlt\\\\b/i, \\\"Alt\\\").replace(/\\\\bShift\\\\b/i, \\\"Shift\\\").replace(/\\\\b(Enter|Return)\\\\b/i, \\\"Enter\\\").replace(/\\\\bDel\\\\b/i, \\\"Delete\\\");\\r\\n if (_keys__WEBPACK_IMPORTED_MODULE_5__.isDarwin) {\\r\\n return shortcut.replace(/\\\\bCtrlOrCmd\\\\b/i, \\\"Cmd\\\").replace(/\\\\bAlt\\\\b/i, \\\"Option\\\");\\r\\n }\\r\\n return shortcut.replace(/\\\\bCtrlOrCmd\\\\b/i, \\\"Ctrl\\\");\\r\\n};\\r\\nconst viewportCoordsToSceneCoords = function (_ref3, _ref4) {\\r\\n let { clientX, clientY } = _ref3;\\r\\n let { zoom, offsetLeft, offsetTop, scrollX, scrollY } = _ref4;\\r\\n const invScale = 1 / zoom.value;\\r\\n const x = (clientX - offsetLeft) * invScale - scrollX;\\r\\n const y = (clientY - offsetTop) * invScale - scrollY;\\r\\n return {\\r\\n x,\\r\\n y\\r\\n };\\r\\n};\\r\\nconst sceneCoordsToViewportCoords = function (_ref5, _ref6) {\\r\\n let { sceneX, sceneY } = _ref5;\\r\\n let { zoom, offsetLeft, offsetTop, scrollX, scrollY } = _ref6;\\r\\n const x = (sceneX + scrollX) * zoom.value + offsetLeft;\\r\\n const y = (sceneY + scrollY) * zoom.value + offsetTop;\\r\\n return {\\r\\n x,\\r\\n y\\r\\n };\\r\\n};\\r\\nconst getGlobalCSSVariable = function (name) {\\r\\n return getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\\r\\n};\\r\\nconst RS_LTR_CHARS = \\\"A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02B8\\\\u0300-\\\\u0590\\\\u0800-\\\\u1FFF\\\" + \\\"\\\\u2C00-\\\\uFB1C\\\\uFDFE-\\\\uFE6F\\\\uFEFD-\\\\uFFFF\\\";\\r\\nconst RS_RTL_CHARS = \\\"\\\\u0591-\\\\u07FF\\\\uFB1D-\\\\uFDFD\\\\uFE70-\\\\uFEFC\\\";\\r\\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\\r\\n/**\\r\\n * Checks whether first directional character is RTL. Meaning whether it starts\\r\\n * with RTL characters, or indeterminate (numbers etc.) characters followed by\\r\\n * RTL.\\r\\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\\r\\n */\\r\\nconst isRTL = function (text) {\\r\\n return RE_RTL_CHECK.test(text);\\r\\n};\\r\\nconst tupleToCoors = function (xyTuple) {\\r\\n const [x, y] = xyTuple;\\r\\n return {\\r\\n x,\\r\\n y\\r\\n };\\r\\n};\\r\\n/** use as a rejectionHandler to mute filesystem Abort errors */\\r\\nconst muteFSAbortError = function (error) {\\r\\n if ((error === null || error === void 0 ? void 0 : error.name) === \\\"AbortError\\\") {\\r\\n console.warn(error);\\r\\n return;\\r\\n }\\r\\n throw error;\\r\\n};\\r\\nconst findIndex = function (array, cb) {\\r\\n let fromIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\\r\\n if (fromIndex < 0) {\\r\\n fromIndex = array.length + fromIndex;\\r\\n }\\r\\n fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\\r\\n let index = fromIndex - 1;\\r\\n while (++index < array.length) {\\r\\n if (cb(array[index], index, array)) {\\r\\n return index;\\r\\n }\\r\\n }\\r\\n return -1;\\r\\n};\\r\\nconst findLastIndex = function (array, cb) {\\r\\n let fromIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : array.length - 1;\\r\\n if (fromIndex < 0) {\\r\\n fromIndex = array.length + fromIndex;\\r\\n }\\r\\n fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\\r\\n let index = fromIndex + 1;\\r\\n while (--index > -1) {\\r\\n if (cb(array[index], index, array)) {\\r\\n return index;\\r\\n }\\r\\n }\\r\\n return -1;\\r\\n};\\r\\nconst isTransparent = function (color) {\\r\\n const isRGBTransparent = color.length === 5 && color.substr(4, 1) === \\\"0\\\";\\r\\n const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === \\\"00\\\";\\r\\n return isRGBTransparent || isRRGGBBTransparent || color === _colors__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].elementBackground[0];\\r\\n};\\r\\nconst resolvablePromise = function () {\\r\\n let resolve;\\r\\n let reject;\\r\\n const promise = new Promise(function (_resolve, _reject) {\\r\\n resolve = _resolve;\\r\\n reject = _reject;\\r\\n });\\r\\n promise.resolve = resolve;\\r\\n promise.reject = reject;\\r\\n return promise;\\r\\n};\\r\\n/**\\r\\n * @param func handler taking at most single parameter (event).\\r\\n */\\r\\nconst withBatchedUpdates = function (func) {\\r\\n return function (event) {\\r\\n (0,react_dom__WEBPACK_IMPORTED_MODULE_4__.unstable_batchedUpdates)(func, event);\\r\\n };\\r\\n};\\r\\n/**\\r\\n * barches React state updates and throttles the calls to a single call per\\r\\n * animation frame\\r\\n */\\r\\nconst withBatchedUpdatesThrottled = function (func) {\\r\\n // @ts-ignore\\r\\n return throttleRAF(function (event) {\\r\\n (0,react_dom__WEBPACK_IMPORTED_MODULE_4__.unstable_batchedUpdates)(func, event);\\r\\n });\\r\\n}; //https://stackoverflow.com/a/9462382/8418\\r\\nconst nFormatter = function (num, digits) {\\r\\n const si = [{\\r\\n value: 1,\\r\\n symbol: \\\"b\\\"\\r\\n }, {\\r\\n value: 1e3,\\r\\n symbol: \\\"k\\\"\\r\\n }, {\\r\\n value: 1e6,\\r\\n symbol: \\\"M\\\"\\r\\n }, {\\r\\n value: 1e9,\\r\\n symbol: \\\"G\\\"\\r\\n }];\\r\\n const rx = /\\\\.0+$|(\\\\.[0-9]*[1-9])0+$/;\\r\\n let index;\\r\\n for (index = si.length - 1; index > 0; index--) {\\r\\n if (num >= si[index].value) {\\r\\n break;\\r\\n }\\r\\n }\\r\\n return (num / si[index].value).toFixed(digits).replace(rx, \\\"$1\\\") + si[index].symbol;\\r\\n};\\r\\nconst getVersion = function () {\\r\\n var _a;\\r\\n return ((_a = document.querySelector('meta[name=\\\"version\\\"]')) === null || _a === void 0 ? void 0 : _a.content) || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_VERSION;\\r\\n}; // Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\\r\\nconst supportsEmoji = function () {\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n const ctx = canvas.getContext(\\\"2d\\\");\\r\\n if (!ctx) {\\r\\n return false;\\r\\n }\\r\\n const offset = 12;\\r\\n ctx.fillStyle = \\\"#f00\\\";\\r\\n ctx.textBaseline = \\\"top\\\";\\r\\n ctx.font = \\\"32px Arial\\\"; // Modernizr used 🐨, but it is sort of supported on Windows 7.\\r\\n // Luckily 😀 isn't supported.\\r\\n ctx.fillText(\\\"😀\\\", 0, 0);\\r\\n return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\\r\\n};\\r\\nconst getNearestScrollableContainer = function (element) {\\r\\n let parent = element.parentElement;\\r\\n while (parent) {\\r\\n if (parent === document.body) {\\r\\n return document;\\r\\n }\\r\\n const { overflowY } = window.getComputedStyle(parent);\\r\\n const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\\r\\n if (hasScrollableContent && (overflowY === \\\"auto\\\" || overflowY === \\\"scroll\\\" || overflowY === \\\"overlay\\\")) {\\r\\n return parent;\\r\\n }\\r\\n parent = parent.parentElement;\\r\\n }\\r\\n return document;\\r\\n};\\r\\nconst focusNearestParent = function (element) {\\r\\n let parent = element.parentElement;\\r\\n while (parent) {\\r\\n if (parent.tabIndex > -1) {\\r\\n parent.focus();\\r\\n return;\\r\\n }\\r\\n parent = parent.parentElement;\\r\\n }\\r\\n};\\r\\nconst preventUnload = function (event) {\\r\\n event.preventDefault(); // NOTE: modern browsers no longer allow showing a custom message here\\r\\n event.returnValue = \\\"\\\";\\r\\n};\\r\\nconst bytesToHexString = function (bytes) {\\r\\n return Array.from(bytes).map(function (byte) {\\r\\n return `0${byte.toString(16)}`.slice(-2);\\r\\n }).join(\\\"\\\");\\r\\n};\\r\\nconst getUpdatedTimestamp = function () {\\r\\n return isTestEnv() ? 1 : Date.now();\\r\\n};\\r\\n/**\\r\\n * Transforms array of objects containing `id` attribute,\\r\\n * or array of ids (strings), into a Map, keyd by `id`.\\r\\n */\\r\\nconst arrayToMap = function (items) {\\r\\n return items.reduce(function (acc, element) {\\r\\n acc.set(typeof element === \\\"string\\\" ? element : element.id, element);\\r\\n return acc;\\r\\n }, new Map());\\r\\n};\\r\\nconst isTestEnv = function () {\\r\\n var _a;\\r\\n return typeof process !== \\\"undefined\\\" && ((_a = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-7\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \\\"test\\\";\\r\\n};\\r\\nconst isProdEnv = function () {\\r\\n var _a;\\r\\n return typeof process !== \\\"undefined\\\" && ((_a = ({\\\"REACT_APP_BACKEND_V2_GET_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/\\\",\\\"REACT_APP_BACKEND_V2_POST_URL\\\":\\\"https://json-dev.excalidraw.com/api/v2/post/\\\",\\\"REACT_APP_LIBRARY_URL\\\":\\\"https://libraries.excalidraw.com\\\",\\\"REACT_APP_LIBRARY_BACKEND\\\":\\\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\\\",\\\"REACT_APP_WS_SERVER_URL\\\":\\\"http://localhost:3002\\\",\\\"REACT_APP_PORTAL_URL\\\":\\\"\\\",\\\"REACT_APP_FIREBASE_CONFIG\\\":\\\"{\\\\\\\"apiKey\\\\\\\":\\\\\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\\\\\",\\\\\\\"authDomain\\\\\\\":\\\\\\\"excalidraw-oss-dev.firebaseapp.com\\\\\\\",\\\\\\\"projectId\\\\\\\":\\\\\\\"excalidraw-oss-dev\\\\\\\",\\\\\\\"storageBucket\\\\\\\":\\\\\\\"excalidraw-oss-dev.appspot.com\\\\\\\",\\\\\\\"messagingSenderId\\\\\\\":\\\\\\\"664559512677\\\\\\\",\\\\\\\"appId\\\\\\\":\\\\\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\\\\\"}\\\",\\\"REACT_APP_DEV_ENABLE_SW\\\":\\\"\\\",\\\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\\\":\\\"\\\",\\\"PKG_NAME\\\":\\\"@zsviczian/excalidraw\\\",\\\"PKG_VERSION\\\":\\\"0.12.0-obsidian-7\\\",\\\"IS_EXCALIDRAW_NPM_PACKAGE\\\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \\\"production\\\";\\r\\n};\\r\\nconst wrapEvent = function (name, nativeEvent) {\\r\\n return new CustomEvent(name, {\\r\\n detail: {\\r\\n nativeEvent\\r\\n },\\r\\n cancelable: true\\r\\n });\\r\\n};\\r\\nconst updateObject = function (obj, updates) {\\r\\n let didChange = false;\\r\\n for (const key in updates) {\\r\\n const value = updates[key];\\r\\n if (typeof value !== \\\"undefined\\\") {\\r\\n if (obj[key] === value && ( // if object, always update because its attrs could have changed\\r\\n typeof value !== \\\"object\\\" || value === null)) {\\r\\n continue;\\r\\n }\\r\\n didChange = true;\\r\\n }\\r\\n }\\r\\n if (!didChange) {\\r\\n return obj;\\r\\n }\\r\\n return _objectSpread(_objectSpread({}, obj), updates);\\r\\n};\\r\\nconst isPrimitive = function (val) {\\r\\n const type = typeof val;\\r\\n return val == null || type !== \\\"object\\\" && type !== \\\"function\\\";\\r\\n};\\r\\nconst getFrame = function () {\\r\\n try {\\r\\n return window.self === window.top ? \\\"top\\\" : \\\"iframe\\\";\\r\\n }\\r\\n catch (error) {\\r\\n return \\\"iframe\\\";\\r\\n }\\r\\n};\\r\\nconst isPromiseLike = function (value) {\\r\\n return !!value && typeof value === \\\"object\\\" && \\\"then\\\" in value && \\\"catch\\\" in value && \\\"finally\\\" in value;\\r\\n};\\r\\nconst queryFocusableElements = function (container) {\\r\\n const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll(\\\"button, a, input, select, textarea, div[tabindex], label[tabindex]\\\");\\r\\n return focusableElements ? Array.from(focusableElements).filter(function (element) {\\r\\n return element.tabIndex > -1 && !element.disabled;\\r\\n }) : [];\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2pCO0FBQ0gsQ0FBQyxDQUFDO0FBQ0ssTUFBTSxhQUFhLEdBQUcsVUFBVSxLQUFLO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxPQUFPLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUM7QUFDM0csQ0FBQyxDQUFDO0FBQ0ssTUFBTSxzQkFBc0IsR0FBRyxVQUFVLFNBQVM7SUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsZ0JBQWdCLENBQUMsb0VBQW9FLENBQUMsQ0FBQztJQUM1SCxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsT0FBTztRQUMvRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDVixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vdXRpbHMudHM/YjFkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBvYyBmcm9tIFwib3Blbi1jb2xvclwiO1xuaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi9jb2xvcnNcIjtcbmltcG9ydCB7IENVUlNPUl9UWVBFLCBERUZBVUxUX1ZFUlNJT04sIEZPTlRfRkFNSUxZLCBNSU1FX1RZUEVTLCBUSEVNRSwgV0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05UIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IGlzRGFyd2luIH0gZnJvbSBcIi4va2V5c1wiO1xubGV0IG1vY2tEYXRlVGltZSA9IG51bGw7XG5leHBvcnQgY29uc3Qgc2V0RGF0ZVRpbWVGb3JUZXN0cyA9IGZ1bmN0aW9uIChkYXRlVGltZSkge1xuICBtb2NrRGF0ZVRpbWUgPSBkYXRlVGltZTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RGF0ZVRpbWUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChtb2NrRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gbW9ja0RhdGVUaW1lO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoID0gYCR7ZGF0ZS5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgY29uc3QgZGF5ID0gYCR7ZGF0ZS5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCBcIjBcIik7XG4gIGNvbnN0IGhyID0gYCR7ZGF0ZS5nZXRIb3VycygpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICBjb25zdCBtaW4gPSBgJHtkYXRlLmdldE1pbnV0ZXMoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fS0ke2hyfSR7bWlufWA7XG59O1xuZXhwb3J0IGNvbnN0IGNhcGl0YWxpemVTdHJpbmcgPSBmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59O1xuZXhwb3J0IGNvbnN0IGlzVG9vbEljb24gPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKFwiVG9vbEljb25cIik7XG59O1xuZXhwb3J0IGNvbnN0IGlzSW5wdXRMaWtlID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgdGFyZ2V0LmRhdGFzZXQudHlwZSA9PT0gXCJ3eXNpd3lnXCIgfHwgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJSRWxlbWVudCB8fCAvLyBuZXdsaW5lIGluIHd5c2l3eWdcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBpc1dyaXRhYmxlRWxlbWVudCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5kYXRhc2V0LnR5cGUgPT09IFwid3lzaXd5Z1wiIHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxCUkVsZW1lbnQgfHwgLy8gbmV3bGluZSBpbiB3eXNpd3lnXG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgfHwgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiAodGFyZ2V0LnR5cGUgPT09IFwidGV4dFwiIHx8IHRhcmdldC50eXBlID09PSBcIm51bWJlclwiKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Rm9udEZhbWlseVN0cmluZyA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gIGxldCB7XG4gICAgZm9udEZhbWlseVxuICB9ID0gX3JlZjtcblxuICBmb3IgKGNvbnN0IFtmb250RmFtaWx5U3RyaW5nLCBpZF0gb2YgT2JqZWN0LmVudHJpZXMoRk9OVF9GQU1JTFkpKSB7XG4gICAgaWYgKGlkID09PSBmb250RmFtaWx5KSB7XG4gICAgICByZXR1cm4gYCR7Zm9udEZhbWlseVN0cmluZ30sICR7V0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05UfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFdJTkRPV1NfRU1PSklfRkFMTEJBQ0tfRk9OVDtcbn07XG4vKiogcmV0dXJucyBmb250U2l6ZStmb250RmFtaWx5IHN0cmluZyBmb3IgYXNzaWdubWVudCB0byBET00gZWxlbWVudHMgKi9cblxuZXhwb3J0IGNvbnN0IGdldEZvbnRTdHJpbmcgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgbGV0IHtcbiAgICBmb250U2l6ZSxcbiAgICBmb250RmFtaWx5XG4gIH0gPSBfcmVmMjtcbiAgcmV0dXJuIGAke2ZvbnRTaXplfXB4ICR7Z2V0Rm9udEZhbWlseVN0cmluZyh7XG4gICAgZm9udEZhbWlseVxuICB9KX1gO1xufTtcbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IGZ1bmN0aW9uIChmbiwgdGltZW91dCkge1xuICBsZXQgaGFuZGxlID0gMDtcbiAgbGV0IGxhc3RBcmdzID0gbnVsbDtcblxuICBjb25zdCByZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGxhc3RBcmdzID0gYXJncztcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgICBoYW5kbGUgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBsYXN0QXJncyA9IG51bGw7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICB9LCB0aW1lb3V0KTtcbiAgfTtcblxuICByZXQuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG5cbiAgICBpZiAobGFzdEFyZ3MpIHtcbiAgICAgIGNvbnN0IF9sYXN0QXJncyA9IGxhc3RBcmdzO1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgZm4oLi4uX2xhc3RBcmdzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0LmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICBsYXN0QXJncyA9IG51bGw7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gIH07XG5cbiAgcmV0dXJuIHJldDtcbn07IC8vIHRocm90dGxlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgb25jZSBwZXIgYW5pbWF0aW9uIGZyYW1lXG5cbmV4cG9ydCBjb25zdCB0aHJvdHRsZVJBRiA9IGZ1bmN0aW9uIChmbiwgb3B0cykge1xuICBsZXQgdGltZXJJZCA9IG51bGw7XG4gIGxldCBsYXN0QXJncyA9IG51bGw7XG4gIGxldCBsYXN0QXJnc1RyYWlsaW5nID0gbnVsbDtcblxuICBjb25zdCBzY2hlZHVsZUZ1bmMgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIHRpbWVySWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgZm4oLi4uYXJncyk7XG4gICAgICBsYXN0QXJncyA9IG51bGw7XG5cbiAgICAgIGlmIChsYXN0QXJnc1RyYWlsaW5nKSB7XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZztcbiAgICAgICAgbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgICAgIHNjaGVkdWxlRnVuYyhsYXN0QXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmV0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RBcmdzID0gYXJncztcblxuICAgIGlmICh0aW1lcklkID09PSBudWxsKSB7XG4gICAgICBzY2hlZHVsZUZ1bmMobGFzdEFyZ3MpO1xuICAgIH0gZWxzZSBpZiAob3B0cz8udHJhaWxpbmcpIHtcbiAgICAgIGxhc3RBcmdzVHJhaWxpbmcgPSBhcmdzO1xuICAgIH1cbiAgfTtcblxuICByZXQuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGxhc3RBcmdzKSB7XG4gICAgICBmbiguLi4obGFzdEFyZ3NUcmFpbGluZyB8fCBsYXN0QXJncykpO1xuICAgICAgbGFzdEFyZ3MgPSBsYXN0QXJnc1RyYWlsaW5nID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgcmV0LmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICBsYXN0QXJncyA9IGxhc3RBcmdzVHJhaWxpbmcgPSBudWxsO1xuXG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiByZXQ7XG59OyAvLyBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL2VzL2NodW5rLmpzXG5cbmV4cG9ydCBjb25zdCBjaHVuayA9IGZ1bmN0aW9uIChhcnJheSwgc2l6ZSkge1xuICBpZiAoIWFycmF5Lmxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCByZXNJbmRleCA9IDA7XG4gIGNvbnN0IHJlc3VsdCA9IEFycmF5KE1hdGguY2VpbChhcnJheS5sZW5ndGggLyBzaXplKSk7XG5cbiAgd2hpbGUgKGluZGV4IDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgcmVzdWx0W3Jlc0luZGV4KytdID0gYXJyYXkuc2xpY2UoaW5kZXgsIGluZGV4ICs9IHNpemUpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgY29uc3Qgc2VsZWN0Tm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHggLSB5KTtcbn07XG5leHBvcnQgY29uc3QgdXBkYXRlQWN0aXZlVG9vbCA9IGZ1bmN0aW9uIChhcHBTdGF0ZSwgZGF0YSkge1xuICBpZiAoZGF0YS50eXBlID09PSBcImN1c3RvbVwiKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXBwU3RhdGUuYWN0aXZlVG9vbCksIHt9LCB7XG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgY3VzdG9tVHlwZTogZGF0YS5jdXN0b21UeXBlXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBhcHBTdGF0ZS5hY3RpdmVUb29sKSwge30sIHtcbiAgICBsYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlcjogZGF0YS5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciA9PT0gdW5kZWZpbmVkID8gYXBwU3RhdGUuYWN0aXZlVG9vbC5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciA6IGRhdGEubGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXIsXG4gICAgdHlwZTogZGF0YS50eXBlLFxuICAgIGN1c3RvbVR5cGU6IG51bGxcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IHJlc2V0Q3Vyc29yID0gZnVuY3Rpb24gKGNhbnZhcykge1xuICBpZiAoY2FudmFzKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IFwiXCI7XG4gIH1cbn07XG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yID0gZnVuY3Rpb24gKGNhbnZhcywgY3Vyc29yKSB7XG4gIGlmIChjYW52YXMpIHtcbiAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICB9XG59O1xubGV0IGVyYXNlckNhbnZhc0NhY2hlO1xubGV0IHByZXZpZXdEYXRhVVJMO1xuZXhwb3J0IGNvbnN0IHNldEVyYXNlckN1cnNvciA9IGZ1bmN0aW9uIChjYW52YXMsIHRoZW1lKSB7XG4gIGNvbnN0IGN1cnNvckltYWdlU2l6ZVB4ID0gMjA7XG5cbiAgY29uc3QgZHJhd0NhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpc0RhcmtUaGVtZSA9IHRoZW1lID09PSBUSEVNRS5EQVJLO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS50aGVtZSA9IHRoZW1lO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLmhlaWdodCA9IGN1cnNvckltYWdlU2l6ZVB4O1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLndpZHRoID0gY3Vyc29ySW1hZ2VTaXplUHg7XG4gICAgY29uc3QgY29udGV4dCA9IGVyYXNlckNhbnZhc0NhY2hlLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0LmFyYyhlcmFzZXJDYW52YXNDYWNoZS53aWR0aCAvIDIsIGVyYXNlckNhbnZhc0NhY2hlLmhlaWdodCAvIDIsIDUsIDAsIDIgKiBNYXRoLlBJKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGlzRGFya1RoZW1lID8gb2MuYmxhY2sgOiBvYy53aGl0ZTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gaXNEYXJrVGhlbWUgPyBvYy53aGl0ZSA6IG9jLmJsYWNrO1xuICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgcHJldmlld0RhdGFVUkwgPSBlcmFzZXJDYW52YXNDYWNoZS50b0RhdGFVUkwoTUlNRV9UWVBFUy5zdmcpO1xuICB9O1xuXG4gIGlmICghZXJhc2VyQ2FudmFzQ2FjaGUgfHwgZXJhc2VyQ2FudmFzQ2FjaGUudGhlbWUgIT09IHRoZW1lKSB7XG4gICAgZHJhd0NhbnZhcygpO1xuICB9XG5cbiAgc2V0Q3Vyc29yKGNhbnZhcywgYHVybCgke3ByZXZpZXdEYXRhVVJMfSkgJHtjdXJzb3JJbWFnZVNpemVQeCAvIDJ9ICR7Y3Vyc29ySW1hZ2VTaXplUHggLyAyfSwgYXV0b2ApO1xufTtcbmV4cG9ydCBjb25zdCBzZXRDdXJzb3JGb3JTaGFwZSA9IGZ1bmN0aW9uIChjYW52YXMsIGFwcFN0YXRlKSB7XG4gIGlmICghY2FudmFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSA9PT0gXCJzZWxlY3Rpb25cIikge1xuICAgIHJlc2V0Q3Vyc29yKGNhbnZhcyk7XG4gIH0gZWxzZSBpZiAoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlID09PSBcImVyYXNlclwiKSB7XG4gICAgc2V0RXJhc2VyQ3Vyc29yKGNhbnZhcywgYXBwU3RhdGUudGhlbWUpOyAvLyBkbyBub3RoaW5nIGlmIGltYWdlIHRvb2wgaXMgc2VsZWN0ZWQgd2hpY2ggc3VnZ2VzdHMgdGhlcmUnc1xuICAgIC8vIGEgaW1hZ2UtcHJldmlldyBzZXQgYXMgdGhlIGN1cnNvclxuICAgIC8vIElnbm9yZSBjdXN0b20gdHlwZSBhcyB3ZWxsIGFuZCBsZXQgaG9zdCBkZWNpZGVcbiAgfSBlbHNlIGlmICghW1wiaW1hZ2VcIiwgXCJjdXN0b21cIl0uaW5jbHVkZXMoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlKSkge1xuICAgIGNhbnZhcy5zdHlsZS5jdXJzb3IgPSBDVVJTT1JfVFlQRS5DUk9TU0hBSVI7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgaXNGdWxsU2NyZWVuID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQ/Lm5vZGVOYW1lID09PSBcIkhUTUxcIjtcbn07XG5leHBvcnQgY29uc3QgYWxsb3dGdWxsU2NyZWVuID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XG59O1xuZXhwb3J0IGNvbnN0IGV4aXRGdWxsU2NyZWVuID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0U2hvcnRjdXRLZXkgPSBmdW5jdGlvbiAoc2hvcnRjdXQpIHtcbiAgc2hvcnRjdXQgPSBzaG9ydGN1dC5yZXBsYWNlKC9cXGJBbHRcXGIvaSwgXCJBbHRcIikucmVwbGFjZSgvXFxiU2hpZnRcXGIvaSwgXCJTaGlmdFwiKS5yZXBsYWNlKC9cXGIoRW50ZXJ8UmV0dXJuKVxcYi9pLCBcIkVudGVyXCIpLnJlcGxhY2UoL1xcYkRlbFxcYi9pLCBcIkRlbGV0ZVwiKTtcblxuICBpZiAoaXNEYXJ3aW4pIHtcbiAgICByZXR1cm4gc2hvcnRjdXQucmVwbGFjZSgvXFxiQ3RybE9yQ21kXFxiL2ksIFwiQ21kXCIpLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIk9wdGlvblwiKTtcbiAgfVxuXG4gIHJldHVybiBzaG9ydGN1dC5yZXBsYWNlKC9cXGJDdHJsT3JDbWRcXGIvaSwgXCJDdHJsXCIpO1xufTtcbmV4cG9ydCBjb25zdCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMgPSBmdW5jdGlvbiAoX3JlZjMsIF9yZWY0KSB7XG4gIGxldCB7XG4gICAgY2xpZW50WCxcbiAgICBjbGllbnRZXG4gIH0gPSBfcmVmMztcbiAgbGV0IHtcbiAgICB6b29tLFxuICAgIG9mZnNldExlZnQsXG4gICAgb2Zmc2V0VG9wLFxuICAgIHNjcm9sbFgsXG4gICAgc2Nyb2xsWVxuICB9ID0gX3JlZjQ7XG4gIGNvbnN0IGludlNjYWxlID0gMSAvIHpvb20udmFsdWU7XG4gIGNvbnN0IHggPSAoY2xpZW50WCAtIG9mZnNldExlZnQpICogaW52U2NhbGUgLSBzY3JvbGxYO1xuICBjb25zdCB5ID0gKGNsaWVudFkgLSBvZmZzZXRUb3ApICogaW52U2NhbGUgLSBzY3JvbGxZO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufTtcbmV4cG9ydCBjb25zdCBzY2VuZUNvb3Jkc1RvVmlld3BvcnRDb29yZHMgPSBmdW5jdGlvbiAoX3JlZjUsIF9yZWY2KSB7XG4gIGxldCB7XG4gICAgc2NlbmVYLFxuICAgIHNjZW5lWVxuICB9ID0gX3JlZjU7XG4gIGxldCB7XG4gICAgem9vbSxcbiAgICBvZmZzZXRMZWZ0LFxuICAgIG9mZnNldFRvcCxcbiAgICBzY3JvbGxYLFxuICAgIHNjcm9sbFlcbiAgfSA9IF9yZWY2O1xuICBjb25zdCB4ID0gKHNjZW5lWCArIHNjcm9sbFgpICogem9vbS52YWx1ZSArIG9mZnNldExlZnQ7XG4gIGNvbnN0IHkgPSAoc2NlbmVZICsgc2Nyb2xsWSkgKiB6b29tLnZhbHVlICsgb2Zmc2V0VG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxDU1NWYXJpYWJsZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShgLS0ke25hbWV9YCk7XG59O1xuY29uc3QgUlNfTFRSX0NIQVJTID0gXCJBLVphLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQjhcXHUwMzAwLVxcdTA1OTBcXHUwODAwLVxcdTFGRkZcIiArIFwiXFx1MkMwMC1cXHVGQjFDXFx1RkRGRS1cXHVGRTZGXFx1RkVGRC1cXHVGRkZGXCI7XG5jb25zdCBSU19SVExfQ0hBUlMgPSBcIlxcdTA1OTEtXFx1MDdGRlxcdUZCMUQtXFx1RkRGRFxcdUZFNzAtXFx1RkVGQ1wiO1xuY29uc3QgUkVfUlRMX0NIRUNLID0gbmV3IFJlZ0V4cChgXlteJHtSU19MVFJfQ0hBUlN9XSpbJHtSU19SVExfQ0hBUlN9XWApO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBmaXJzdCBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIgaXMgUlRMLiBNZWFuaW5nIHdoZXRoZXIgaXQgc3RhcnRzXG4gKiAgd2l0aCBSVEwgY2hhcmFjdGVycywgb3IgaW5kZXRlcm1pbmF0ZSAobnVtYmVycyBldGMuKSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5XG4gKiAgUlRMLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNzIyI2Rpc2N1c3Npb25fcjQzNjM0MDE3MVxuICovXG5cbmV4cG9ydCBjb25zdCBpc1JUTCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIHJldHVybiBSRV9SVExfQ0hFQ0sudGVzdCh0ZXh0KTtcbn07XG5leHBvcnQgY29uc3QgdHVwbGVUb0Nvb3JzID0gZnVuY3Rpb24gKHh5VHVwbGUpIHtcbiAgY29uc3QgW3gsIHldID0geHlUdXBsZTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn07XG4vKiogdXNlIGFzIGEgcmVqZWN0aW9uSGFuZGxlciB0byBtdXRlIGZpbGVzeXN0ZW0gQWJvcnQgZXJyb3JzICovXG5cbmV4cG9ydCBjb25zdCBtdXRlRlNBYm9ydEVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gIGlmIChlcnJvcj8ubmFtZSA9PT0gXCJBYm9ydEVycm9yXCIpIHtcbiAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IGVycm9yO1xufTtcbmV4cG9ydCBjb25zdCBmaW5kSW5kZXggPSBmdW5jdGlvbiAoYXJyYXksIGNiKSB7XG4gIGxldCBmcm9tSW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7XG5cbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBhcnJheS5sZW5ndGggKyBmcm9tSW5kZXg7XG4gIH1cblxuICBmcm9tSW5kZXggPSBNYXRoLm1pbihhcnJheS5sZW5ndGgsIE1hdGgubWF4KGZyb21JbmRleCwgMCkpO1xuICBsZXQgaW5kZXggPSBmcm9tSW5kZXggLSAxO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgaWYgKGNiKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn07XG5leHBvcnQgY29uc3QgZmluZExhc3RJbmRleCA9IGZ1bmN0aW9uIChhcnJheSwgY2IpIHtcbiAgbGV0IGZyb21JbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyYXkubGVuZ3RoIC0gMTtcblxuICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgfVxuXG4gIGZyb21JbmRleCA9IE1hdGgubWluKGFycmF5Lmxlbmd0aCAtIDEsIE1hdGgubWF4KGZyb21JbmRleCwgMCkpO1xuICBsZXQgaW5kZXggPSBmcm9tSW5kZXggKyAxO1xuXG4gIHdoaWxlICgtLWluZGV4ID4gLTEpIHtcbiAgICBpZiAoY2IoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcbmV4cG9ydCBjb25zdCBpc1RyYW5zcGFyZW50ID0gZnVuY3Rpb24gKGNvbG9yKSB7XG4gIGNvbnN0IGlzUkdCVHJhbnNwYXJlbnQgPSBjb2xvci5sZW5ndGggPT09IDUgJiYgY29sb3Iuc3Vic3RyKDQsIDEpID09PSBcIjBcIjtcbiAgY29uc3QgaXNSUkdHQkJUcmFuc3BhcmVudCA9IGNvbG9yLmxlbmd0aCA9PT0gOSAmJiBjb2xvci5zdWJzdHIoNywgMikgPT09IFwiMDBcIjtcbiAgcmV0dXJuIGlzUkdCVHJhbnNwYXJlbnQgfHwgaXNSUkdHQkJUcmFuc3BhcmVudCB8fCBjb2xvciA9PT0gY29sb3JzLmVsZW1lbnRCYWNrZ3JvdW5kWzBdO1xufTtcbmV4cG9ydCBjb25zdCByZXNvbHZhYmxlUHJvbWlzZSA9IGZ1bmN0aW9uICgpIHtcbiAgbGV0IHJlc29sdmU7XG4gIGxldCByZWplY3Q7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoX3Jlc29sdmUsIF9yZWplY3QpIHtcbiAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgcmVqZWN0ID0gX3JlamVjdDtcbiAgfSk7XG4gIHByb21pc2UucmVzb2x2ZSA9IHJlc29sdmU7XG4gIHByb21pc2UucmVqZWN0ID0gcmVqZWN0O1xuICByZXR1cm4gcHJvbWlzZTtcbn07XG4vKipcbiAqIEBwYXJhbSBmdW5jIGhhbmRsZXIgdGFraW5nIGF0IG1vc3Qgc2luZ2xlIHBhcmFtZXRlciAoZXZlbnQpLlxuICovXG5cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYywgZXZlbnQpO1xuICB9O1xufTtcbi8qKlxuICogYmFyY2hlcyBSZWFjdCBzdGF0ZSB1cGRhdGVzIGFuZCB0aHJvdHRsZXMgdGhlIGNhbGxzIHRvIGEgc2luZ2xlIGNhbGwgcGVyXG4gKiBhbmltYXRpb24gZnJhbWVcbiAqL1xuXG5leHBvcnQgY29uc3Qgd2l0aEJhdGNoZWRVcGRhdGVzVGhyb3R0bGVkID0gZnVuY3Rpb24gKGZ1bmMpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gdGhyb3R0bGVSQUYoZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYywgZXZlbnQpO1xuICB9KTtcbn07IC8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk0NjIzODIvODQxOFxuXG5leHBvcnQgY29uc3QgbkZvcm1hdHRlciA9IGZ1bmN0aW9uIChudW0sIGRpZ2l0cykge1xuICBjb25zdCBzaSA9IFt7XG4gICAgdmFsdWU6IDEsXG4gICAgc3ltYm9sOiBcImJcIlxuICB9LCB7XG4gICAgdmFsdWU6IDFlMyxcbiAgICBzeW1ib2w6IFwia1wiXG4gIH0sIHtcbiAgICB2YWx1ZTogMWU2LFxuICAgIHN5bWJvbDogXCJNXCJcbiAgfSwge1xuICAgIHZhbHVlOiAxZTksXG4gICAgc3ltYm9sOiBcIkdcIlxuICB9XTtcbiAgY29uc3QgcnggPSAvXFwuMCskfChcXC5bMC05XSpbMS05XSkwKyQvO1xuICBsZXQgaW5kZXg7XG5cbiAgZm9yIChpbmRleCA9IHNpLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGlmIChudW0gPj0gc2lbaW5kZXhdLnZhbHVlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKG51bSAvIHNpW2luZGV4XS52YWx1ZSkudG9GaXhlZChkaWdpdHMpLnJlcGxhY2UocngsIFwiJDFcIikgKyBzaVtpbmRleF0uc3ltYm9sO1xufTtcbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwidmVyc2lvblwiXScpPy5jb250ZW50IHx8IERFRkFVTFRfVkVSU0lPTjtcbn07IC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vTW9kZXJuaXpyL01vZGVybml6ci9ibG9iL21hc3Rlci9mZWF0dXJlLWRldGVjdHMvZW1vamkuanNcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRzRW1vamkgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG5cbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvZmZzZXQgPSAxMjtcbiAgY3R4LmZpbGxTdHlsZSA9IFwiI2YwMFwiO1xuICBjdHgudGV4dEJhc2VsaW5lID0gXCJ0b3BcIjtcbiAgY3R4LmZvbnQgPSBcIjMycHggQXJpYWxcIjsgLy8gTW9kZXJuaXpyIHVzZWQg8J+QqCwgYnV0IGl0IGlzIHNvcnQgb2Ygc3VwcG9ydGVkIG9uIFdpbmRvd3MgNy5cbiAgLy8gTHVja2lseSDwn5iAIGlzbid0IHN1cHBvcnRlZC5cblxuICBjdHguZmlsbFRleHQoXCLwn5iAXCIsIDAsIDApO1xuICByZXR1cm4gY3R4LmdldEltYWdlRGF0YShvZmZzZXQsIG9mZnNldCwgMSwgMSkuZGF0YVswXSAhPT0gMDtcbn07XG5leHBvcnQgY29uc3QgZ2V0TmVhcmVzdFNjcm9sbGFibGVDb250YWluZXIgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAocGFyZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgb3ZlcmZsb3dZXG4gICAgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgY29uc3QgaGFzU2Nyb2xsYWJsZUNvbnRlbnQgPSBwYXJlbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyZW50LmNsaWVudEhlaWdodDtcblxuICAgIGlmIChoYXNTY3JvbGxhYmxlQ29udGVudCAmJiAob3ZlcmZsb3dZID09PSBcImF1dG9cIiB8fCBvdmVyZmxvd1kgPT09IFwic2Nyb2xsXCIgfHwgb3ZlcmZsb3dZID09PSBcIm92ZXJsYXlcIikpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGZvY3VzTmVhcmVzdFBhcmVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGxldCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgd2hpbGUgKHBhcmVudCkge1xuICAgIGlmIChwYXJlbnQudGFiSW5kZXggPiAtMSkge1xuICAgICAgcGFyZW50LmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgcHJldmVudFVubG9hZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBOT1RFOiBtb2Rlcm4gYnJvd3NlcnMgbm8gbG9uZ2VyIGFsbG93IHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBoZXJlXG5cbiAgZXZlbnQucmV0dXJuVmFsdWUgPSBcIlwiO1xufTtcbmV4cG9ydCBjb25zdCBieXRlc1RvSGV4U3RyaW5nID0gZnVuY3Rpb24gKGJ5dGVzKSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGJ5dGVzKS5tYXAoZnVuY3Rpb24gKGJ5dGUpIHtcbiAgICByZXR1cm4gYDAke2J5dGUudG9TdHJpbmcoMTYpfWAuc2xpY2UoLTIpO1xuICB9KS5qb2luKFwiXCIpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVkVGltZXN0YW1wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNUZXN0RW52KCkgPyAxIDogRGF0ZS5ub3coKTtcbn07XG4vKipcbiAqIFRyYW5zZm9ybXMgYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGBpZGAgYXR0cmlidXRlLFxuICogb3IgYXJyYXkgb2YgaWRzIChzdHJpbmdzKSwgaW50byBhIE1hcCwga2V5ZCBieSBgaWRgLlxuICovXG5cbmV4cG9ydCBjb25zdCBhcnJheVRvTWFwID0gZnVuY3Rpb24gKGl0ZW1zKSB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZWxlbWVudCkge1xuICAgIGFjYy5zZXQodHlwZW9mIGVsZW1lbnQgPT09IFwic3RyaW5nXCIgPyBlbGVtZW50IDogZWxlbWVudC5pZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgbmV3IE1hcCgpKTtcbn07XG5leHBvcnQgY29uc3QgaXNUZXN0RW52ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInRlc3RcIjtcbn07XG5leHBvcnQgY29uc3QgaXNQcm9kRW52ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIjtcbn07XG5leHBvcnQgY29uc3Qgd3JhcEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgIGRldGFpbDoge1xuICAgICAgbmF0aXZlRXZlbnRcbiAgICB9LFxuICAgIGNhbmNlbGFibGU6IHRydWVcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU9iamVjdCA9IGZ1bmN0aW9uIChvYmosIHVwZGF0ZXMpIHtcbiAgbGV0IGRpZENoYW5nZSA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHVwZGF0ZXNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChvYmpba2V5XSA9PT0gdmFsdWUgJiYgKCAvLyBpZiBvYmplY3QsIGFsd2F5cyB1cGRhdGUgYmVjYXVzZSBpdHMgYXR0cnMgY291bGQgaGF2ZSBjaGFuZ2VkXG4gICAgICB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBkaWRDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlkQ2hhbmdlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9iaiksIHVwZGF0ZXMpO1xufTtcbmV4cG9ydCBjb25zdCBpc1ByaW1pdGl2ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCB0eXBlICE9PSBcIm9iamVjdFwiICYmIHR5cGUgIT09IFwiZnVuY3Rpb25cIjtcbn07XG5leHBvcnQgY29uc3QgZ2V0RnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHdpbmRvdy5zZWxmID09PSB3aW5kb3cudG9wID8gXCJ0b3BcIiA6IFwiaWZyYW1lXCI7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFwiaWZyYW1lXCI7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgaXNQcm9taXNlTGlrZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgXCJ0aGVuXCIgaW4gdmFsdWUgJiYgXCJjYXRjaFwiIGluIHZhbHVlICYmIFwiZmluYWxseVwiIGluIHZhbHVlO1xufTtcbmV4cG9ydCBjb25zdCBxdWVyeUZvY3VzYWJsZUVsZW1lbnRzID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvckFsbChcImJ1dHRvbiwgYSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGRpdlt0YWJpbmRleF0sIGxhYmVsW3RhYmluZGV4XVwiKTtcbiAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnRzID8gQXJyYXkuZnJvbShmb2N1c2FibGVFbGVtZW50cykuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXggPiAtMSAmJiAhZWxlbWVudC5kaXNhYmxlZDtcbiAgfSkgOiBbXTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../utils.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../utils.ts?");
3196
3196
 
3197
3197
  /***/ }),
3198
3198