@talrace/ngx-noder 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/talrace-ngx-noder.mjs +181 -181
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +1 -1
- package/lib/editor/components/external-element/external.component.d.ts +1 -1
- package/lib/editor/components/shared/abstract/base.component.d.ts +1 -1
- package/lib/editor/components/shared/abstract/destroy.component.d.ts +1 -1
- package/package.json +1 -3
- package/src/lib/apart-components/add-link-dialog/_add-link-dialog.theme.scss +3 -6
- package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +4 -7
- package/src/lib/apart-components/confirm-dialog/_theme.scss +6 -9
- package/src/lib/apart-components/editor-title/_editor-title.theme.scss +6 -9
- package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +9 -12
- package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +5 -8
- package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +1 -3
- package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +1 -3
- package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +2 -5
- package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +3 -6
- package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +3 -6
- package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +15 -18
- package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +2 -4
- package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +5 -8
- package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +6 -9
- package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +3 -6
- package/src/lib/apart-components/insert-table/_insert-table.theme.scss +6 -9
- package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +12 -15
- package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +22 -25
- package/src/lib/editor/components/_editor.theme.scss +25 -28
- package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +0 -73
- package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +0 -7
- package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +0 -49
- package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +0 -34
- package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +0 -75
- package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +0 -95
- package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +0 -24
- package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +0 -117
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +0 -37
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +0 -49
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +0 -90
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +0 -81
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +0 -28
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +0 -53
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +0 -18
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +0 -27
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +0 -71
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +0 -107
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +0 -25
- package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +0 -65
- package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +0 -86
- package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +0 -90
- package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +0 -122
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +0 -8
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.mjs +0 -1148
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +0 -157
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +0 -8
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +0 -11
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-template-type.enum.mjs +0 -16
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +0 -6
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +0 -34
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +0 -26
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +0 -60
- package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +0 -48
- package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +0 -54
- package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +0 -86
- package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +0 -134
- package/esm2022/lib/editor/components/edges/edge-element.model.mjs +0 -38
- package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +0 -6
- package/esm2022/lib/editor/components/edges/edge.component.mjs +0 -141
- package/esm2022/lib/editor/components/edges/edges.mjs +0 -120
- package/esm2022/lib/editor/components/edges/page-type.enum.mjs +0 -7
- package/esm2022/lib/editor/components/editor.component.mjs +0 -112
- package/esm2022/lib/editor/components/external-element/external-element.service.mjs +0 -6
- package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +0 -4
- package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +0 -2
- package/esm2022/lib/editor/components/external-element/external.component.mjs +0 -41
- package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +0 -9
- package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +0 -11
- package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +0 -15
- package/esm2022/lib/editor/components/image/components/image.component.mjs +0 -88
- package/esm2022/lib/editor/components/image/image-api.service.mjs +0 -36
- package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +0 -46
- package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +0 -2
- package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +0 -19
- package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +0 -12
- package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +0 -106
- package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +0 -2
- package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +0 -52
- package/esm2022/lib/editor/components/image/size.mjs +0 -2
- package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +0 -60
- package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +0 -18
- package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +0 -43
- package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +0 -2
- package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +0 -3
- package/esm2022/lib/editor/components/shared/custom-content.mjs +0 -2
- package/esm2022/lib/editor/components/shared/services/component.service.mjs +0 -52
- package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +0 -123
- package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +0 -55
- package/esm2022/lib/editor/components/tab/tab.component.mjs +0 -44
- package/esm2022/lib/editor/components/tab/tab.helper.mjs +0 -6
- package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +0 -118
- package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +0 -99
- package/esm2022/lib/editor/components/table/components/table.component.mjs +0 -412
- package/esm2022/lib/editor/components/table/enums/hrule.enum.mjs +0 -7
- package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +0 -8
- package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +0 -6
- package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +0 -17
- package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +0 -9
- package/esm2022/lib/editor/components/table/models/row-data.model.mjs +0 -8
- package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +0 -7
- package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +0 -84
- package/esm2022/lib/editor/components/table/selection/table-selection.mjs +0 -383
- package/esm2022/lib/editor/content/constants/display-values.const.mjs +0 -8
- package/esm2022/lib/editor/content/constants/document-info.const.mjs +0 -13
- package/esm2022/lib/editor/content/constants/editor.const.mjs +0 -70
- package/esm2022/lib/editor/content/contents.interface.mjs +0 -2
- package/esm2022/lib/editor/content/display-data/display-data.mjs +0 -839
- package/esm2022/lib/editor/content/display-data/display-token.model.mjs +0 -12
- package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +0 -10
- package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +0 -11
- package/esm2022/lib/editor/content/display-data/indent.model.mjs +0 -9
- package/esm2022/lib/editor/content/display-data/line-info.model.mjs +0 -9
- package/esm2022/lib/editor/content/display-data/lines.mjs +0 -96
- package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +0 -8
- package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +0 -2
- package/esm2022/lib/editor/content/display-data/paragraph.mjs +0 -56
- package/esm2022/lib/editor/content/display-data/text-line-info.mjs +0 -35
- package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +0 -2
- package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +0 -78
- package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +0 -62
- package/esm2022/lib/editor/content/helpers/format.helper.mjs +0 -23
- package/esm2022/lib/editor/content/helpers/indexed-element.helper.mjs +0 -6
- package/esm2022/lib/editor/content/helpers/link.helper.mjs +0 -42
- package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +0 -9
- package/esm2022/lib/editor/content/margin.model.mjs +0 -16
- package/esm2022/lib/editor/content/page-vertical-data.model.mjs +0 -9
- package/esm2022/lib/editor/content/vertical-alignment.enum.mjs +0 -11
- package/esm2022/lib/editor/core/event-emitting.mjs +0 -56
- package/esm2022/lib/editor/display/cell.interface.mjs +0 -2
- package/esm2022/lib/editor/display/event.helper.mjs +0 -18
- package/esm2022/lib/editor/display/layers/cursor.layer.mjs +0 -102
- package/esm2022/lib/editor/display/layers/layer.config.mjs +0 -2
- package/esm2022/lib/editor/display/layers/pages.layer.mjs +0 -109
- package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +0 -7
- package/esm2022/lib/editor/display/layers/print.text.layer.mjs +0 -7
- package/esm2022/lib/editor/display/layers/selection.layer.mjs +0 -119
- package/esm2022/lib/editor/display/layers/text.layer.mjs +0 -226
- package/esm2022/lib/editor/display/print/print.helper.mjs +0 -40
- package/esm2022/lib/editor/display/print/print.renderer.mjs +0 -67
- package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +0 -7
- package/esm2022/lib/editor/display/render-changes.interface.mjs +0 -2
- package/esm2022/lib/editor/display/render-changes.model.mjs +0 -25
- package/esm2022/lib/editor/display/renderer.mjs +0 -204
- package/esm2022/lib/editor/display/rendering.helper.mjs +0 -185
- package/esm2022/lib/editor/display/renderloop.mjs +0 -26
- package/esm2022/lib/editor/display/virtual.renderer.mjs +0 -284
- package/esm2022/lib/editor/display/visible-range.interface.mjs +0 -2
- package/esm2022/lib/editor/editor.module.mjs +0 -91
- package/esm2022/lib/editor/execution/distance.model.mjs +0 -10
- package/esm2022/lib/editor/execution/edit.session.mjs +0 -602
- package/esm2022/lib/editor/execution/editor.mjs +0 -1368
- package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +0 -42
- package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +0 -73
- package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +0 -12
- package/esm2022/lib/editor/execution/helpers/page.helper.mjs +0 -12
- package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +0 -41
- package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +0 -177
- package/esm2022/lib/editor/execution/regulator.service.mjs +0 -212
- package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +0 -18
- package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +0 -14
- package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +0 -8
- package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +0 -3
- package/esm2022/lib/editor/execution/targeting/session.model.mjs +0 -10
- package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +0 -2
- package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +0 -2
- package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +0 -88
- package/esm2022/lib/editor/gadgets/history/operation-history.mjs +0 -208
- package/esm2022/lib/editor/gadgets/history/operation.type.mjs +0 -2
- package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +0 -7
- package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +0 -9
- package/esm2022/lib/editor/gadgets/numbering/numbering-marker-type.enum.mjs +0 -12
- package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +0 -13
- package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +0 -149
- package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +0 -7
- package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +0 -18
- package/esm2022/lib/editor/gadgets/scrollbar.mjs +0 -86
- package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +0 -2
- package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +0 -2
- package/esm2022/lib/editor/gadgets/search/search.mjs +0 -231
- package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +0 -5
- package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +0 -20
- package/esm2022/lib/editor/interaction/base.handler.mjs +0 -19
- package/esm2022/lib/editor/interaction/document.handler.mjs +0 -27
- package/esm2022/lib/editor/interaction/editor.service.mjs +0 -386
- package/esm2022/lib/editor/interaction/input.handler.mjs +0 -152
- package/esm2022/lib/editor/interaction/mode.enum.mjs +0 -7
- package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +0 -7
- package/esm2022/lib/editor/interaction/mouse.handler.mjs +0 -50
- package/esm2022/lib/editor/interaction/text-input.mjs +0 -53
- package/esm2022/lib/editor/operations/commands.service.mjs +0 -20
- package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +0 -32
- package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +0 -7
- package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +0 -9
- package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +0 -15
- package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +0 -85
- package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +0 -19
- package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
- package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +0 -136
- package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
- package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +0 -114
- package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +0 -16
- package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +0 -374
- package/esm2022/lib/editor/operations/operations-helper.helper.mjs +0 -438
- package/esm2022/lib/editor/operations/save-commands.helper.mjs +0 -128
- package/esm2022/lib/editor/operations/target-operations.helper.mjs +0 -23
- package/esm2022/lib/editor/positioning/alignments.const.mjs +0 -8
- package/esm2022/lib/editor/positioning/content.helper.mjs +0 -45
- package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +0 -13
- package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +0 -2
- package/esm2022/lib/editor/positioning/insert-index.interface.mjs +0 -2
- package/esm2022/lib/editor/positioning/line-width.helper.mjs +0 -13
- package/esm2022/lib/editor/positioning/position.helper.mjs +0 -210
- package/esm2022/lib/editor/positioning/range.mjs +0 -94
- package/esm2022/lib/editor/positioning/selection.mjs +0 -351
- package/esm2022/lib/editor/revision.helper.mjs +0 -94
- package/esm2022/lib/models/generated/add-numbering.model.mjs +0 -8
- package/esm2022/lib/models/generated/apply-element-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/apply-image-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/apply-paragraph-style.model.mjs +0 -12
- package/esm2022/lib/models/generated/apply-text-style.model.mjs +0 -12
- package/esm2022/lib/models/generated/borders-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/break.model.mjs +0 -8
- package/esm2022/lib/models/generated/cell.model.mjs +0 -12
- package/esm2022/lib/models/generated/column-section.model.mjs +0 -8
- package/esm2022/lib/models/generated/column.model.mjs +0 -8
- package/esm2022/lib/models/generated/command.model.mjs +0 -120
- package/esm2022/lib/models/generated/delete.model.mjs +0 -8
- package/esm2022/lib/models/generated/document-name.model.mjs +0 -8
- package/esm2022/lib/models/generated/document.model.mjs +0 -8
- package/esm2022/lib/models/generated/docx.model.mjs +0 -12
- package/esm2022/lib/models/generated/edge-target.model.mjs +0 -8
- package/esm2022/lib/models/generated/edge.model.mjs +0 -8
- package/esm2022/lib/models/generated/element.model.mjs +0 -8
- package/esm2022/lib/models/generated/file-source.model.mjs +0 -8
- package/esm2022/lib/models/generated/format.model.mjs +0 -12
- package/esm2022/lib/models/generated/heading.model.mjs +0 -16
- package/esm2022/lib/models/generated/image-data.model.mjs +0 -8
- package/esm2022/lib/models/generated/image.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-break.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-element.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-image.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-link.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-paragraph.model.mjs +0 -20
- package/esm2022/lib/models/generated/insert-styled-text.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-tab.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-table-columns.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-table-rows.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-table.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-text.model.mjs +0 -8
- package/esm2022/lib/models/generated/last-document-revision.model.mjs +0 -12
- package/esm2022/lib/models/generated/link-data.model.mjs +0 -8
- package/esm2022/lib/models/generated/link.model.mjs +0 -8
- package/esm2022/lib/models/generated/margins.model.mjs +0 -8
- package/esm2022/lib/models/generated/numbering-level.model.mjs +0 -12
- package/esm2022/lib/models/generated/numbering.model.mjs +0 -8
- package/esm2022/lib/models/generated/operation.model.mjs +0 -12
- package/esm2022/lib/models/generated/page-numbers.model.mjs +0 -8
- package/esm2022/lib/models/generated/paragraph-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/paragraph.model.mjs +0 -12
- package/esm2022/lib/models/generated/remove-numberings.model.mjs +0 -8
- package/esm2022/lib/models/generated/remove-table-columns.model.mjs +0 -8
- package/esm2022/lib/models/generated/remove-table-rows.model.mjs +0 -8
- package/esm2022/lib/models/generated/replace-by-text.model.mjs +0 -8
- package/esm2022/lib/models/generated/replace.model.mjs +0 -44
- package/esm2022/lib/models/generated/resize-table-columns.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore-numberings.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore-paragraph-styles.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore-table.model.mjs +0 -12
- package/esm2022/lib/models/generated/restore-text-styles.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore.model.mjs +0 -8
- package/esm2022/lib/models/generated/revision.model.mjs +0 -12
- package/esm2022/lib/models/generated/row.model.mjs +0 -8
- package/esm2022/lib/models/generated/tab.model.mjs +0 -8
- package/esm2022/lib/models/generated/table-cell.model.mjs +0 -8
- package/esm2022/lib/models/generated/table.model.mjs +0 -12
- package/esm2022/lib/models/generated/target.model.mjs +0 -16
- package/esm2022/lib/models/generated/text-style.model.mjs +0 -8
- package/esm2022/lib/translate/noder-translate.loader.mjs +0 -22
- package/esm2022/public-api.mjs +0 -54
- package/esm2022/talrace-ngx-noder.mjs +0 -5
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
import { fromEvent, throttleTime } from 'rxjs';
|
|
2
|
-
import { MouseButton } from '../../../interaction/mouse-button.enum';
|
|
3
|
-
import { SelectionRangeModel } from '../models/selection-range.model';
|
|
4
|
-
import { TableOverlayMenuComponent } from '../overlay-menu/overlay-menu.component';
|
|
5
|
-
export class TableSelection {
|
|
6
|
-
constructor(editorService, overlayService, regulatorService, rowMatrix, table, tableEl, session) {
|
|
7
|
-
this.editorService = editorService;
|
|
8
|
-
this.overlayService = overlayService;
|
|
9
|
-
this.regulatorService = regulatorService;
|
|
10
|
-
this.rowMatrix = rowMatrix;
|
|
11
|
-
this.table = table;
|
|
12
|
-
this.tableEl = tableEl;
|
|
13
|
-
this.session = session;
|
|
14
|
-
this.editorTagName = 'APP-NOD-EDITOR';
|
|
15
|
-
this.tableTagName = 'APP-NOD-TABLE';
|
|
16
|
-
this.cellTagName = 'TD';
|
|
17
|
-
this.draggableCellContent = ['APP-NOD-RESIZER'];
|
|
18
|
-
this.addTableContextMenuSubscriptions();
|
|
19
|
-
this.addTableMouseDownSubscriptions();
|
|
20
|
-
}
|
|
21
|
-
destroy() {
|
|
22
|
-
if (this.tableContextMenu$?.unsubscribe) {
|
|
23
|
-
this.tableContextMenu$.unsubscribe();
|
|
24
|
-
}
|
|
25
|
-
if (this.tableMouseDown$?.unsubscribe) {
|
|
26
|
-
this.tableMouseDown$.unsubscribe();
|
|
27
|
-
}
|
|
28
|
-
this.removeMouseSubscriptions();
|
|
29
|
-
}
|
|
30
|
-
addTableContextMenuSubscriptions() {
|
|
31
|
-
this.tableContextMenu$ = fromEvent(this.tableEl, 'contextmenu').subscribe((event) => {
|
|
32
|
-
if (this.session.isEdgeOrWithinEdge() && !this.regulatorService.mainSession.session.customComponents.edges.isEdit) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
event.preventDefault();
|
|
36
|
-
if (this.editorService.isViewOnly) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const selectionRange = this.getSelectionRangeForMenuOverlay(event.target);
|
|
40
|
-
if (!selectionRange) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const targets = this.getTargetsForMenuOverlay(selectionRange);
|
|
44
|
-
const canRemoveRows = selectionRange.rowIndexes.endIndex - selectionRange.rowIndexes.startIndex + 1 < this.rowMatrix.length;
|
|
45
|
-
const canRemoveColumns = selectionRange.cellIndexes.endIndex - selectionRange.cellIndexes.startIndex + 1 < this.rowMatrix[0].cells.length;
|
|
46
|
-
const data = {
|
|
47
|
-
selectionRange,
|
|
48
|
-
targets,
|
|
49
|
-
canRemoveRows,
|
|
50
|
-
canRemoveColumns,
|
|
51
|
-
tableInsertIndex: this.table.insertIndex,
|
|
52
|
-
sessionId: this.session.sessionId
|
|
53
|
-
};
|
|
54
|
-
this.overlayService.open(TableOverlayMenuComponent, data, event.x, event.y);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
addTableMouseDownSubscriptions() {
|
|
58
|
-
this.tableMouseDown$ = fromEvent(this.tableEl, 'mousedown').subscribe((event) => {
|
|
59
|
-
if (this.session.isEdgeOrWithinEdge() && !this.regulatorService.mainSession.session.customComponents.edges.isEdit) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (event.ctrlKey ||
|
|
63
|
-
event.button === MouseButton.Right ||
|
|
64
|
-
!this.canStartSelection(event.target)) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
this.overlayService.close();
|
|
68
|
-
this.removeMouseSubscriptions();
|
|
69
|
-
this.clearSelectionInAllCells();
|
|
70
|
-
this.addDocumentMouseMovementSubscriptions();
|
|
71
|
-
const cell = this.getCellIndexes(event.target);
|
|
72
|
-
this.originSelectedCell = { ...cell, isFocused: true };
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
addDocumentMouseMovementSubscriptions() {
|
|
76
|
-
this.documentMouseMove$ = fromEvent(document, 'mousemove')
|
|
77
|
-
.pipe(throttleTime(100))
|
|
78
|
-
.subscribe((event) => {
|
|
79
|
-
this.processMouseMove(event);
|
|
80
|
-
});
|
|
81
|
-
this.documentMouseUp$ = fromEvent(document, 'mouseup').subscribe(() => {
|
|
82
|
-
this.removeMouseSubscriptions();
|
|
83
|
-
this.addDocumentMouseDownSubscriptions();
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
addDocumentMouseDownSubscriptions() {
|
|
87
|
-
this.documentMouseDown$ = fromEvent(document, 'mousedown').subscribe((event) => {
|
|
88
|
-
if (!this.isOnEditorClick(event.target) || this.isOnTableClick(event.target)) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
this.overlayService.close();
|
|
92
|
-
this.clearSelectionInAllCells();
|
|
93
|
-
this.originSelectedCell = null;
|
|
94
|
-
this.removeMouseSubscriptions();
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
removeMouseSubscriptions() {
|
|
98
|
-
if (this.documentMouseMove$?.unsubscribe) {
|
|
99
|
-
this.documentMouseMove$.unsubscribe();
|
|
100
|
-
}
|
|
101
|
-
if (this.documentMouseUp$?.unsubscribe) {
|
|
102
|
-
this.documentMouseUp$.unsubscribe();
|
|
103
|
-
}
|
|
104
|
-
if (this.documentMouseDown$?.unsubscribe) {
|
|
105
|
-
this.documentMouseDown$.unsubscribe();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
processMouseMove(event) {
|
|
109
|
-
if (this.originSelectedCell?.isFocused && !this.isOriginCell(event)) {
|
|
110
|
-
this.rowMatrix[this.originSelectedCell.rowIndex].cells[this.originSelectedCell.cellIndex].disableEditorSelection();
|
|
111
|
-
this.editorService.endMousePress();
|
|
112
|
-
this.originSelectedCell.isFocused = false;
|
|
113
|
-
}
|
|
114
|
-
if (!this.originSelectedCell?.isFocused) {
|
|
115
|
-
this.selectAllCellsInBetween(event);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
selectAllCellsInBetween(event) {
|
|
119
|
-
if (!this.originSelectedCell) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
const selectedCell = this.getCellIndexes(event.target) || this.getCellIndexesOutsideTable(event);
|
|
123
|
-
if (!selectedCell) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
this.clearSelectionInAllCells();
|
|
127
|
-
const rowIndexes = this.getStartAndEndIndexes(this.originSelectedCell.rowIndex, selectedCell.rowIndex);
|
|
128
|
-
const cellIndexes = this.getStartAndEndIndexes(this.originSelectedCell.cellIndex, selectedCell.cellIndex);
|
|
129
|
-
const cells = [];
|
|
130
|
-
let currentRowIndex = rowIndexes.startIndex;
|
|
131
|
-
while (currentRowIndex <= rowIndexes.endIndex) {
|
|
132
|
-
let currentCellIndex = cellIndexes.startIndex;
|
|
133
|
-
while (currentCellIndex <= cellIndexes.endIndex) {
|
|
134
|
-
cells.push(this.rowMatrix[currentRowIndex].cells[currentCellIndex]);
|
|
135
|
-
currentCellIndex++;
|
|
136
|
-
}
|
|
137
|
-
currentRowIndex++;
|
|
138
|
-
}
|
|
139
|
-
const uniqCells = new Set(cells);
|
|
140
|
-
uniqCells.forEach(cell => cell.highlightCell());
|
|
141
|
-
this.selectionRange = new SelectionRangeModel(rowIndexes, cellIndexes);
|
|
142
|
-
}
|
|
143
|
-
getCellIndexes(element) {
|
|
144
|
-
let currentElement = element;
|
|
145
|
-
let selectedCell = null;
|
|
146
|
-
while (!selectedCell && currentElement) {
|
|
147
|
-
if (currentElement.tagName === this.cellTagName) {
|
|
148
|
-
selectedCell = this.getSelectedCell(currentElement);
|
|
149
|
-
}
|
|
150
|
-
currentElement = currentElement.parentElement;
|
|
151
|
-
}
|
|
152
|
-
return selectedCell;
|
|
153
|
-
}
|
|
154
|
-
getSelectedCell(el) {
|
|
155
|
-
let selectedCell = null;
|
|
156
|
-
this.rowMatrix.some((row, rowIndex) => {
|
|
157
|
-
const cellIndex = row.cells.findIndex(x => x.cell === el);
|
|
158
|
-
if (cellIndex > -1) {
|
|
159
|
-
selectedCell = { rowIndex, cellIndex };
|
|
160
|
-
return true;
|
|
161
|
-
}
|
|
162
|
-
return false;
|
|
163
|
-
});
|
|
164
|
-
return selectedCell;
|
|
165
|
-
}
|
|
166
|
-
getCellIndexesOutsideTable(event) {
|
|
167
|
-
let selectedCell = null;
|
|
168
|
-
const tableReact = this.tableEl.getBoundingClientRect();
|
|
169
|
-
if (event.clientY <= tableReact.top || event.clientY >= tableReact.bottom) {
|
|
170
|
-
this.addSelectionInAllCells();
|
|
171
|
-
}
|
|
172
|
-
else if (event.clientX <= tableReact.left) {
|
|
173
|
-
selectedCell = this.getCellIndexesOutsideTableLeft(event);
|
|
174
|
-
}
|
|
175
|
-
else if (event.clientX >= tableReact.right) {
|
|
176
|
-
selectedCell = this.getCellIndexesOutsideTableRights(event);
|
|
177
|
-
}
|
|
178
|
-
return selectedCell;
|
|
179
|
-
}
|
|
180
|
-
getCellIndexesOutsideTableLeft(event) {
|
|
181
|
-
const rowIndex = this.getNearestRowIndex(event);
|
|
182
|
-
return { rowIndex, cellIndex: 0 };
|
|
183
|
-
}
|
|
184
|
-
getCellIndexesOutsideTableRights(event) {
|
|
185
|
-
const rowIndex = this.getNearestRowIndex(event);
|
|
186
|
-
return {
|
|
187
|
-
rowIndex,
|
|
188
|
-
cellIndex: this.rowMatrix[rowIndex].cells.length - 1
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
getNearestRowIndex(event) {
|
|
192
|
-
const rows = this.tableEl.rows;
|
|
193
|
-
const maxRowIndex = rows.length - 1;
|
|
194
|
-
let rowIndex = -1;
|
|
195
|
-
do {
|
|
196
|
-
rowIndex++;
|
|
197
|
-
const rowReact = rows[rowIndex].getBoundingClientRect();
|
|
198
|
-
if (event.clientY >= rowReact.top && event.clientY <= rowReact.bottom) {
|
|
199
|
-
break;
|
|
200
|
-
}
|
|
201
|
-
} while (rowIndex < maxRowIndex);
|
|
202
|
-
return rowIndex;
|
|
203
|
-
}
|
|
204
|
-
addSelectionInAllCells() {
|
|
205
|
-
this.rowMatrix.forEach(row => {
|
|
206
|
-
row.cells.forEach(cell => {
|
|
207
|
-
cell.highlightCell();
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
const rowIndexes = {
|
|
211
|
-
startIndex: 0,
|
|
212
|
-
endIndex: this.rowMatrix.length - 1
|
|
213
|
-
};
|
|
214
|
-
const cellIndexes = {
|
|
215
|
-
startIndex: 0,
|
|
216
|
-
endIndex: Math.max(...this.rowMatrix.map(x => x.cells.length))
|
|
217
|
-
};
|
|
218
|
-
this.selectionRange = new SelectionRangeModel(rowIndexes, cellIndexes);
|
|
219
|
-
}
|
|
220
|
-
clearSelection() {
|
|
221
|
-
if (!this.selectionRange) {
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
this.clearSelectionInAllCells();
|
|
225
|
-
}
|
|
226
|
-
clearSelectionInAllCells() {
|
|
227
|
-
this.rowMatrix.forEach(row => {
|
|
228
|
-
row.cells.forEach(cell => {
|
|
229
|
-
cell.removeHighlightCell();
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
this.selectionRange = null;
|
|
233
|
-
}
|
|
234
|
-
getStartAndEndIndexes(originIndex, currentIndex) {
|
|
235
|
-
const indexes = [originIndex, currentIndex];
|
|
236
|
-
indexes.sort((a, b) => a - b);
|
|
237
|
-
return { startIndex: indexes[0], endIndex: indexes[1] };
|
|
238
|
-
}
|
|
239
|
-
isOriginCell(event) {
|
|
240
|
-
const selectedCell = this.getCellIndexes(event.target);
|
|
241
|
-
if (!selectedCell || !this.originSelectedCell) {
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
return this.originSelectedCell.rowIndex === selectedCell.rowIndex && this.originSelectedCell.cellIndex === selectedCell.cellIndex;
|
|
245
|
-
}
|
|
246
|
-
isOnEditorClick(element) {
|
|
247
|
-
let currentElement = element;
|
|
248
|
-
let isOnEditorClick = false;
|
|
249
|
-
while (!isOnEditorClick && currentElement) {
|
|
250
|
-
isOnEditorClick = currentElement.tagName === this.editorTagName;
|
|
251
|
-
currentElement = currentElement.parentElement;
|
|
252
|
-
}
|
|
253
|
-
return isOnEditorClick;
|
|
254
|
-
}
|
|
255
|
-
isOnTableClick(element) {
|
|
256
|
-
let currentElement = element;
|
|
257
|
-
let isOnTableClick = false;
|
|
258
|
-
while (!isOnTableClick && currentElement) {
|
|
259
|
-
isOnTableClick = currentElement === this.tableEl;
|
|
260
|
-
currentElement = currentElement.parentElement;
|
|
261
|
-
}
|
|
262
|
-
return isOnTableClick;
|
|
263
|
-
}
|
|
264
|
-
canStartSelection(element) {
|
|
265
|
-
let currentElement = element;
|
|
266
|
-
let canStartSelection = false;
|
|
267
|
-
while (!canStartSelection && currentElement) {
|
|
268
|
-
if (this.draggableCellContent.includes(currentElement.tagName)) {
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
if (currentElement.tagName === this.tableTagName) {
|
|
272
|
-
canStartSelection = this.session.sessionId === +currentElement.getAttribute('data-session-id');
|
|
273
|
-
break;
|
|
274
|
-
}
|
|
275
|
-
currentElement = currentElement.parentElement;
|
|
276
|
-
}
|
|
277
|
-
return canStartSelection;
|
|
278
|
-
}
|
|
279
|
-
getSelectionRangeForMenuOverlay(element) {
|
|
280
|
-
const selectedCell = this.getCellIndexes(element);
|
|
281
|
-
if (!selectedCell) {
|
|
282
|
-
return null;
|
|
283
|
-
}
|
|
284
|
-
const isCellInSelection = this.selectionRange &&
|
|
285
|
-
this.selectionRange.rowIndexes.startIndex <= selectedCell.rowIndex &&
|
|
286
|
-
this.selectionRange.rowIndexes.endIndex >= selectedCell.rowIndex &&
|
|
287
|
-
this.selectionRange.cellIndexes.startIndex <= selectedCell.cellIndex &&
|
|
288
|
-
this.selectionRange.cellIndexes.endIndex >= selectedCell.cellIndex;
|
|
289
|
-
if (!isCellInSelection && this.selectionRange) {
|
|
290
|
-
this.clearSelectionInAllCells();
|
|
291
|
-
}
|
|
292
|
-
if (isCellInSelection) {
|
|
293
|
-
return this.selectionRange;
|
|
294
|
-
}
|
|
295
|
-
let rowEndIndex = selectedCell.rowIndex;
|
|
296
|
-
let columnEndIndex = selectedCell.cellIndex;
|
|
297
|
-
while (this.rowMatrix[rowEndIndex].cells[selectedCell.cellIndex].cell ===
|
|
298
|
-
this.rowMatrix[rowEndIndex + 1]?.cells[selectedCell.cellIndex].cell) {
|
|
299
|
-
rowEndIndex++;
|
|
300
|
-
}
|
|
301
|
-
while (this.rowMatrix[rowEndIndex].cells[columnEndIndex].cell === this.rowMatrix[rowEndIndex].cells[columnEndIndex + 1]?.cell) {
|
|
302
|
-
columnEndIndex++;
|
|
303
|
-
}
|
|
304
|
-
return new SelectionRangeModel({ startIndex: selectedCell.rowIndex, endIndex: rowEndIndex }, { startIndex: selectedCell.cellIndex, endIndex: columnEndIndex });
|
|
305
|
-
}
|
|
306
|
-
getTargetsForMenuOverlay(selectionRange) {
|
|
307
|
-
return new SelectionRangeModel({
|
|
308
|
-
startIndex: this.getTargetRowStartIndex(selectionRange.rowIndexes.startIndex),
|
|
309
|
-
endIndex: this.getTargetRowEndIndex(selectionRange.rowIndexes.endIndex)
|
|
310
|
-
}, {
|
|
311
|
-
startIndex: this.getTargetColumnStartIndex(selectionRange.rowIndexes.startIndex, selectionRange.rowIndexes.endIndex, selectionRange.cellIndexes.startIndex),
|
|
312
|
-
endIndex: this.getTargetColumnEndIndex(selectionRange.rowIndexes.startIndex, selectionRange.rowIndexes.endIndex, selectionRange.cellIndexes.endIndex)
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
getTargetRowStartIndex(startIndex) {
|
|
316
|
-
const mergedRowCells = this.rowMatrix[startIndex].cells.filter(x => x.cell.rowSpan > 1 && x.componentRef.instance.cell.verticalMerge);
|
|
317
|
-
if (!mergedRowCells.length) {
|
|
318
|
-
return startIndex;
|
|
319
|
-
}
|
|
320
|
-
const uniqCells = new Set(mergedRowCells);
|
|
321
|
-
let index = startIndex;
|
|
322
|
-
do {
|
|
323
|
-
const cells = this.rowMatrix[index].cells;
|
|
324
|
-
if (!cells.some(cell => uniqCells.has(cell))) {
|
|
325
|
-
index++;
|
|
326
|
-
break;
|
|
327
|
-
}
|
|
328
|
-
index--;
|
|
329
|
-
} while (index >= 0);
|
|
330
|
-
return index;
|
|
331
|
-
}
|
|
332
|
-
getTargetRowEndIndex(endIndex) {
|
|
333
|
-
const mergedRowCells = this.rowMatrix[endIndex].cells.filter(x => x.cell.rowSpan > 1 && x.componentRef.instance.cell.verticalMerge);
|
|
334
|
-
if (!mergedRowCells.length) {
|
|
335
|
-
return endIndex + 1;
|
|
336
|
-
}
|
|
337
|
-
const uniqCells = new Set(mergedRowCells);
|
|
338
|
-
let index = endIndex;
|
|
339
|
-
do {
|
|
340
|
-
const cells = this.rowMatrix[index]?.cells;
|
|
341
|
-
if (!cells?.some(cell => uniqCells.has(cell))) {
|
|
342
|
-
break;
|
|
343
|
-
}
|
|
344
|
-
index++;
|
|
345
|
-
} while (index <= this.rowMatrix.length);
|
|
346
|
-
return index;
|
|
347
|
-
}
|
|
348
|
-
getTargetColumnStartIndex(rowStartIndex, rowEndIndex, cellStartIndex) {
|
|
349
|
-
let index = cellStartIndex;
|
|
350
|
-
for (let i = rowStartIndex; i <= rowEndIndex; i++) {
|
|
351
|
-
if (this.rowMatrix[i].cells[cellStartIndex].cell.colSpan > 1) {
|
|
352
|
-
let cellIndex = cellStartIndex;
|
|
353
|
-
do {
|
|
354
|
-
if (!this.rowMatrix[i].cells[cellIndex] || this.rowMatrix[i].cells[cellIndex].cell.colSpan === 1) {
|
|
355
|
-
break;
|
|
356
|
-
}
|
|
357
|
-
const newIndex = cellIndex;
|
|
358
|
-
index = index < newIndex ? index : newIndex;
|
|
359
|
-
cellIndex--;
|
|
360
|
-
} while (cellIndex >= 0);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
return index;
|
|
364
|
-
}
|
|
365
|
-
getTargetColumnEndIndex(rowStartIndex, rowEndIndex, cellEndIndex) {
|
|
366
|
-
let index = cellEndIndex + 1;
|
|
367
|
-
for (let i = rowEndIndex; i >= rowStartIndex; i--) {
|
|
368
|
-
if (this.rowMatrix[i].cells[cellEndIndex].cell.colSpan > 1) {
|
|
369
|
-
let cellIndex = cellEndIndex;
|
|
370
|
-
do {
|
|
371
|
-
if (!this.rowMatrix[i].cells[cellIndex] || this.rowMatrix[i].cells[cellIndex].cell.colSpan === 1) {
|
|
372
|
-
break;
|
|
373
|
-
}
|
|
374
|
-
const newIndex = cellIndex + 1;
|
|
375
|
-
index = index > newIndex ? index : newIndex;
|
|
376
|
-
cellIndex++;
|
|
377
|
-
} while (cellIndex <= this.rowMatrix[i].cells.length);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
return index;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbXBvbmVudHMvdGFibGUvc2VsZWN0aW9uL3RhYmxlLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRW5GLE1BQU0sT0FBTyxjQUFjO0lBdUJ2QixZQUNZLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxTQUF5QixFQUN6QixLQUFpQixFQUNqQixPQUF5QixFQUN6QixPQUFvQjtRQU5wQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFmdkIsa0JBQWEsR0FBRyxnQkFBZ0IsQ0FBQztRQUVqQyxpQkFBWSxHQUFHLGVBQWUsQ0FBQztRQUUvQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQix5QkFBb0IsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFXaEQsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU87UUFD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LEVBQUUsWUFBb0I7UUFDcEYsSUFBSSxLQUFLLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7Z0JBQ3hELElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQztnQkFFN0IsR0FBRztvQkFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7d0JBQzlGLE1BQU07cUJBQ1Q7b0JBRUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFDL0IsS0FBSyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUM1QyxTQUFTLEVBQUUsQ0FBQztpQkFDZixRQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7YUFDekQ7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ2VsbERhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9jZWxsLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBNb3VzZUJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL21vdXNlLWJ1dHRvbi5lbnVtJztcbmltcG9ydCB7IE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL292ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBSZWd1bGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL3JlZ3VsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFJvd0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9yb3ctZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25SYW5nZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdGlvbi1yYW5nZS5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU92ZXJsYXlNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vb3ZlcmxheS1tZW51L292ZXJsYXktbWVudS5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3Rpb24ge1xuICAgIG9yaWdpblNlbGVjdGVkQ2VsbDogeyByb3dJbmRleDogbnVtYmVyOyBjZWxsSW5kZXg6IG51bWJlcjsgaXNGb2N1c2VkOiBib29sZWFuIH07XG5cbiAgICB0YWJsZUNvbnRleHRNZW51JDogU3Vic2NyaXB0aW9uO1xuXG4gICAgdGFibGVNb3VzZURvd24kOiBTdWJzY3JpcHRpb247XG5cbiAgICBkb2N1bWVudE1vdXNlRG93biQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIGRvY3VtZW50TW91c2VNb3ZlJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgZG9jdW1lbnRNb3VzZVVwJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgc2VsZWN0aW9uUmFuZ2U6IFNlbGVjdGlvblJhbmdlTW9kZWwgfCBudWxsO1xuXG4gICAgcmVhZG9ubHkgZWRpdG9yVGFnTmFtZSA9ICdBUFAtTk9ELUVESVRPUic7XG5cbiAgICByZWFkb25seSB0YWJsZVRhZ05hbWUgPSAnQVBQLU5PRC1UQUJMRSc7XG5cbiAgICByZWFkb25seSBjZWxsVGFnTmFtZSA9ICdURCc7XG5cbiAgICByZWFkb25seSBkcmFnZ2FibGVDZWxsQ29udGVudCA9IFsnQVBQLU5PRC1SRVNJWkVSJ107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvd01hdHJpeDogUm93RGF0YU1vZGVsW10sXG4gICAgICAgIHByaXZhdGUgdGFibGU6IFRhYmxlTW9kZWwsXG4gICAgICAgIHByaXZhdGUgdGFibGVFbDogSFRNTFRhYmxlRWxlbWVudCxcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uOiBFZGl0U2Vzc2lvblxuICAgICkge1xuICAgICAgICB0aGlzLmFkZFRhYmxlQ29udGV4dE1lbnVTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIHRoaXMuYWRkVGFibGVNb3VzZURvd25TdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb250ZXh0TWVudSQ/LnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlQ29udGV4dE1lbnUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWJsZU1vdXNlRG93biQ/LnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlTW91c2VEb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW1vdmVNb3VzZVN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBhZGRUYWJsZUNvbnRleHRNZW51U3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUNvbnRleHRNZW51JCA9IGZyb21FdmVudCh0aGlzLnRhYmxlRWwsICdjb250ZXh0bWVudScpLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbi5pc0VkZ2VPcldpdGhpbkVkZ2UoKSAmJiAhdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLm1haW5TZXNzaW9uLnNlc3Npb24uY3VzdG9tQ29tcG9uZW50cy5lZGdlcy5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25SYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2VGb3JNZW51T3ZlcmxheShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMuZ2V0VGFyZ2V0c0Zvck1lbnVPdmVybGF5KHNlbGVjdGlvblJhbmdlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhblJlbW92ZVJvd3MgPSBzZWxlY3Rpb25SYW5nZS5yb3dJbmRleGVzLmVuZEluZGV4IC0gc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5zdGFydEluZGV4ICsgMSA8IHRoaXMucm93TWF0cml4Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IGNhblJlbW92ZUNvbHVtbnMgPVxuICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLmNlbGxJbmRleGVzLmVuZEluZGV4IC0gc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuc3RhcnRJbmRleCArIDEgPCB0aGlzLnJvd01hdHJpeFswXS5jZWxscy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLFxuICAgICAgICAgICAgICAgIHRhcmdldHMsXG4gICAgICAgICAgICAgICAgY2FuUmVtb3ZlUm93cyxcbiAgICAgICAgICAgICAgICBjYW5SZW1vdmVDb2x1bW5zLFxuICAgICAgICAgICAgICAgIHRhYmxlSW5zZXJ0SW5kZXg6IHRoaXMudGFibGUuaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5vcGVuKFRhYmxlT3ZlcmxheU1lbnVDb21wb25lbnQsIGRhdGEsIGV2ZW50LngsIGV2ZW50LnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRUYWJsZU1vdXNlRG93blN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVNb3VzZURvd24kID0gZnJvbUV2ZW50KHRoaXMudGFibGVFbCwgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlc3Npb24uaXNFZGdlT3JXaXRoaW5FZGdlKCkgJiYgIXRoaXMucmVndWxhdG9yU2VydmljZS5tYWluU2Vzc2lvbi5zZXNzaW9uLmN1c3RvbUNvbXBvbmVudHMuZWRnZXMuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAoZXZlbnQuYnV0dG9uIGFzIE1vdXNlQnV0dG9uKSA9PT0gTW91c2VCdXR0b24uUmlnaHQgfHxcbiAgICAgICAgICAgICAgICAhdGhpcy5jYW5TdGFydFNlbGVjdGlvbihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTW91c2VTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uSW5BbGxDZWxscygpO1xuICAgICAgICAgICAgdGhpcy5hZGREb2N1bWVudE1vdXNlTW92ZW1lbnRTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRDZWxsSW5kZXhlcyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwgPSB7IC4uLmNlbGwsIGlzRm9jdXNlZDogdHJ1ZSB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGREb2N1bWVudE1vdXNlTW92ZW1lbnRTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMTAwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTW91c2VNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVNb3VzZVN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuYWRkRG9jdW1lbnRNb3VzZURvd25TdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZERvY3VtZW50TW91c2VEb3duU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlRG93biQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPbkVkaXRvckNsaWNrKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgfHwgdGhpcy5pc09uVGFibGVDbGljayhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uSW5BbGxDZWxscygpO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVNb3VzZVN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTW91c2VTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudE1vdXNlTW92ZSQ/LnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRNb3VzZVVwJD8udW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRNb3VzZURvd24kPy51bnN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlRG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luU2VsZWN0ZWRDZWxsPy5pc0ZvY3VzZWQgJiYgIXRoaXMuaXNPcmlnaW5DZWxsKGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwucm93SW5kZXhdLmNlbGxzW3RoaXMub3JpZ2luU2VsZWN0ZWRDZWxsLmNlbGxJbmRleF0uZGlzYWJsZUVkaXRvclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmVuZE1vdXNlUHJlc3MoKTtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luU2VsZWN0ZWRDZWxsLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9yaWdpblNlbGVjdGVkQ2VsbD8uaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENlbGxzSW5CZXR3ZWVuKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEFsbENlbGxzSW5CZXR3ZWVuKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSB8fCB0aGlzLmdldENlbGxJbmRleGVzT3V0c2lkZVRhYmxlKGV2ZW50KTtcblxuICAgICAgICBpZiAoIXNlbGVjdGVkQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbkluQWxsQ2VsbHMoKTtcblxuICAgICAgICBjb25zdCByb3dJbmRleGVzID0gdGhpcy5nZXRTdGFydEFuZEVuZEluZGV4ZXModGhpcy5vcmlnaW5TZWxlY3RlZENlbGwucm93SW5kZXgsIHNlbGVjdGVkQ2VsbC5yb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IGNlbGxJbmRleGVzID0gdGhpcy5nZXRTdGFydEFuZEVuZEluZGV4ZXModGhpcy5vcmlnaW5TZWxlY3RlZENlbGwuY2VsbEluZGV4LCBzZWxlY3RlZENlbGwuY2VsbEluZGV4KTtcbiAgICAgICAgY29uc3QgY2VsbHM6IENlbGxEYXRhTW9kZWxbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudFJvd0luZGV4ID0gcm93SW5kZXhlcy5zdGFydEluZGV4O1xuXG4gICAgICAgIHdoaWxlIChjdXJyZW50Um93SW5kZXggPD0gcm93SW5kZXhlcy5lbmRJbmRleCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDZWxsSW5kZXggPSBjZWxsSW5kZXhlcy5zdGFydEluZGV4O1xuXG4gICAgICAgICAgICB3aGlsZSAoY3VycmVudENlbGxJbmRleCA8PSBjZWxsSW5kZXhlcy5lbmRJbmRleCkge1xuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2godGhpcy5yb3dNYXRyaXhbY3VycmVudFJvd0luZGV4XS5jZWxsc1tjdXJyZW50Q2VsbEluZGV4XSk7XG4gICAgICAgICAgICAgICAgY3VycmVudENlbGxJbmRleCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50Um93SW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuaXFDZWxscyA9IG5ldyBTZXQoY2VsbHMpO1xuICAgICAgICB1bmlxQ2VsbHMuZm9yRWFjaChjZWxsID0+IGNlbGwuaGlnaGxpZ2h0Q2VsbCgpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IG5ldyBTZWxlY3Rpb25SYW5nZU1vZGVsKHJvd0luZGV4ZXMsIGNlbGxJbmRleGVzKTtcbiAgICB9XG5cbiAgICBnZXRDZWxsSW5kZXhlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHsgcm93SW5kZXg6IG51bWJlcjsgY2VsbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBsZXQgc2VsZWN0ZWRDZWxsOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgICAgICB3aGlsZSAoIXNlbGVjdGVkQ2VsbCAmJiBjdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUgPT09IHRoaXMuY2VsbFRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENlbGwgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbChjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZENlbGw7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRDZWxsKGVsOiBIVE1MRWxlbWVudCk6IHsgcm93SW5kZXg6IG51bWJlcjsgY2VsbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xuICAgICAgICBsZXQgc2VsZWN0ZWRDZWxsOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgICAgICB0aGlzLnJvd01hdHJpeC5zb21lKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxsSW5kZXggPSByb3cuY2VsbHMuZmluZEluZGV4KHggPT4geC5jZWxsID09PSBlbCk7XG5cbiAgICAgICAgICAgIGlmIChjZWxsSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2VsbCA9IHsgcm93SW5kZXgsIGNlbGxJbmRleCB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZENlbGw7XG4gICAgfVxuXG4gICAgZ2V0Q2VsbEluZGV4ZXNPdXRzaWRlVGFibGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ2VsbDogeyByb3dJbmRleDogbnVtYmVyOyBjZWxsSW5kZXg6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHRhYmxlUmVhY3QgPSB0aGlzLnRhYmxlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmNsaWVudFkgPD0gdGFibGVSZWFjdC50b3AgfHwgZXZlbnQuY2xpZW50WSA+PSB0YWJsZVJlYWN0LmJvdHRvbSkge1xuICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3Rpb25JbkFsbENlbGxzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpZW50WCA8PSB0YWJsZVJlYWN0LmxlZnQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXNPdXRzaWRlVGFibGVMZWZ0KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYID49IHRhYmxlUmVhY3QucmlnaHQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXNPdXRzaWRlVGFibGVSaWdodHMoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2VsbDtcbiAgICB9XG5cbiAgICBnZXRDZWxsSW5kZXhlc091dHNpZGVUYWJsZUxlZnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0ge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ2V0TmVhcmVzdFJvd0luZGV4KGV2ZW50KTtcbiAgICAgICAgcmV0dXJuIHsgcm93SW5kZXgsIGNlbGxJbmRleDogMCB9O1xuICAgIH1cblxuICAgIGdldENlbGxJbmRleGVzT3V0c2lkZVRhYmxlUmlnaHRzKGV2ZW50OiBNb3VzZUV2ZW50KTogeyByb3dJbmRleDogbnVtYmVyOyBjZWxsSW5kZXg6IG51bWJlciB9IHtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmdldE5lYXJlc3RSb3dJbmRleChldmVudCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgY2VsbEluZGV4OiB0aGlzLnJvd01hdHJpeFtyb3dJbmRleF0uY2VsbHMubGVuZ3RoIC0gMVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldE5lYXJlc3RSb3dJbmRleChldmVudDogTW91c2VFdmVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLnRhYmxlRWwucm93cztcbiAgICAgICAgY29uc3QgbWF4Um93SW5kZXggPSByb3dzLmxlbmd0aCAtIDE7XG4gICAgICAgIGxldCByb3dJbmRleCA9IC0xO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHJvd0luZGV4Kys7XG4gICAgICAgICAgICBjb25zdCByb3dSZWFjdCA9IHJvd3Nbcm93SW5kZXhdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuY2xpZW50WSA+PSByb3dSZWFjdC50b3AgJiYgZXZlbnQuY2xpZW50WSA8PSByb3dSZWFjdC5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAocm93SW5kZXggPCBtYXhSb3dJbmRleCk7XG5cbiAgICAgICAgcmV0dXJuIHJvd0luZGV4O1xuICAgIH1cblxuICAgIGFkZFNlbGVjdGlvbkluQWxsQ2VsbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm93TWF0cml4LmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIHJvdy5jZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgICAgICAgIGNlbGwuaGlnaGxpZ2h0Q2VsbCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByb3dJbmRleGVzID0ge1xuICAgICAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgIGVuZEluZGV4OiB0aGlzLnJvd01hdHJpeC5sZW5ndGggLSAxXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNlbGxJbmRleGVzID0ge1xuICAgICAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgIGVuZEluZGV4OiBNYXRoLm1heCguLi50aGlzLnJvd01hdHJpeC5tYXAoeCA9PiB4LmNlbGxzLmxlbmd0aCkpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2UgPSBuZXcgU2VsZWN0aW9uUmFuZ2VNb2RlbChyb3dJbmRleGVzLCBjZWxsSW5kZXhlcyk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25JbkFsbENlbGxzKCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb25JbkFsbENlbGxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd01hdHJpeC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICByb3cuY2VsbHMuZm9yRWFjaChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICBjZWxsLnJlbW92ZUhpZ2hsaWdodENlbGwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0U3RhcnRBbmRFbmRJbmRleGVzKG9yaWdpbkluZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKTogeyBzdGFydEluZGV4OiBudW1iZXI7IGVuZEluZGV4OiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IGluZGV4ZXMgPSBbb3JpZ2luSW5kZXgsIGN1cnJlbnRJbmRleF07XG4gICAgICAgIGluZGV4ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgICAgIHJldHVybiB7IHN0YXJ0SW5kZXg6IGluZGV4ZXNbMF0sIGVuZEluZGV4OiBpbmRleGVzWzFdIH07XG4gICAgfVxuXG4gICAgaXNPcmlnaW5DZWxsKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBpZiAoIXNlbGVjdGVkQ2VsbCB8fCAhdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9yaWdpblNlbGVjdGVkQ2VsbC5yb3dJbmRleCA9PT0gc2VsZWN0ZWRDZWxsLnJvd0luZGV4ICYmIHRoaXMub3JpZ2luU2VsZWN0ZWRDZWxsLmNlbGxJbmRleCA9PT0gc2VsZWN0ZWRDZWxsLmNlbGxJbmRleDtcbiAgICB9XG5cbiAgICBpc09uRWRpdG9yQ2xpY2soZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgbGV0IGlzT25FZGl0b3JDbGljayA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghaXNPbkVkaXRvckNsaWNrICYmIGN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpc09uRWRpdG9yQ2xpY2sgPSBjdXJyZW50RWxlbWVudC50YWdOYW1lID09PSB0aGlzLmVkaXRvclRhZ05hbWU7XG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNPbkVkaXRvckNsaWNrO1xuICAgIH1cblxuICAgIGlzT25UYWJsZUNsaWNrKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIGxldCBpc09uVGFibGVDbGljayA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghaXNPblRhYmxlQ2xpY2sgJiYgY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlzT25UYWJsZUNsaWNrID0gY3VycmVudEVsZW1lbnQgPT09IHRoaXMudGFibGVFbDtcbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc09uVGFibGVDbGljaztcbiAgICB9XG5cbiAgICBjYW5TdGFydFNlbGVjdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBsZXQgY2FuU3RhcnRTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWNhblN0YXJ0U2VsZWN0aW9uICYmIGN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2FibGVDZWxsQ29udGVudC5pbmNsdWRlcyhjdXJyZW50RWxlbWVudC50YWdOYW1lKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZSA9PT0gdGhpcy50YWJsZVRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBjYW5TdGFydFNlbGVjdGlvbiA9IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQgPT09ICtjdXJyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2Vzc2lvbi1pZCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FuU3RhcnRTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0aW9uUmFuZ2VGb3JNZW51T3ZlcmxheShlbGVtZW50OiBIVE1MRWxlbWVudCk6IFNlbGVjdGlvblJhbmdlTW9kZWwge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGwgPSB0aGlzLmdldENlbGxJbmRleGVzKGVsZW1lbnQpO1xuICAgICAgICBpZiAoIXNlbGVjdGVkQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0NlbGxJblNlbGVjdGlvbiA9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblJhbmdlICYmXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblJhbmdlLnJvd0luZGV4ZXMuc3RhcnRJbmRleCA8PSBzZWxlY3RlZENlbGwucm93SW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5lbmRJbmRleCA+PSBzZWxlY3RlZENlbGwucm93SW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuc3RhcnRJbmRleCA8PSBzZWxlY3RlZENlbGwuY2VsbEluZGV4ICYmXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblJhbmdlLmNlbGxJbmRleGVzLmVuZEluZGV4ID49IHNlbGVjdGVkQ2VsbC5jZWxsSW5kZXg7XG5cbiAgICAgICAgaWYgKCFpc0NlbGxJblNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvblJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uSW5BbGxDZWxscygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQ2VsbEluU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25SYW5nZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByb3dFbmRJbmRleCA9IHNlbGVjdGVkQ2VsbC5yb3dJbmRleDtcbiAgICAgICAgbGV0IGNvbHVtbkVuZEluZGV4ID0gc2VsZWN0ZWRDZWxsLmNlbGxJbmRleDtcblxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtyb3dFbmRJbmRleF0uY2VsbHNbc2VsZWN0ZWRDZWxsLmNlbGxJbmRleF0uY2VsbCA9PT1cbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4W3Jvd0VuZEluZGV4ICsgMV0/LmNlbGxzW3NlbGVjdGVkQ2VsbC5jZWxsSW5kZXhdLmNlbGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByb3dFbmRJbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHRoaXMucm93TWF0cml4W3Jvd0VuZEluZGV4XS5jZWxsc1tjb2x1bW5FbmRJbmRleF0uY2VsbCA9PT0gdGhpcy5yb3dNYXRyaXhbcm93RW5kSW5kZXhdLmNlbGxzW2NvbHVtbkVuZEluZGV4ICsgMV0/LmNlbGwpIHtcbiAgICAgICAgICAgIGNvbHVtbkVuZEluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFNlbGVjdGlvblJhbmdlTW9kZWwoXG4gICAgICAgICAgICB7IHN0YXJ0SW5kZXg6IHNlbGVjdGVkQ2VsbC5yb3dJbmRleCwgZW5kSW5kZXg6IHJvd0VuZEluZGV4IH0sXG4gICAgICAgICAgICB7IHN0YXJ0SW5kZXg6IHNlbGVjdGVkQ2VsbC5jZWxsSW5kZXgsIGVuZEluZGV4OiBjb2x1bW5FbmRJbmRleCB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0c0Zvck1lbnVPdmVybGF5KHNlbGVjdGlvblJhbmdlOiBTZWxlY3Rpb25SYW5nZU1vZGVsKTogU2VsZWN0aW9uUmFuZ2VNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgU2VsZWN0aW9uUmFuZ2VNb2RlbChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4OiB0aGlzLmdldFRhcmdldFJvd1N0YXJ0SW5kZXgoc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5zdGFydEluZGV4KSxcbiAgICAgICAgICAgICAgICBlbmRJbmRleDogdGhpcy5nZXRUYXJnZXRSb3dFbmRJbmRleChzZWxlY3Rpb25SYW5nZS5yb3dJbmRleGVzLmVuZEluZGV4KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4OiB0aGlzLmdldFRhcmdldENvbHVtblN0YXJ0SW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLnJvd0luZGV4ZXMuc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5lbmRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuc3RhcnRJbmRleFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZW5kSW5kZXg6IHRoaXMuZ2V0VGFyZ2V0Q29sdW1uRW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLnJvd0luZGV4ZXMuc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5lbmRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuZW5kSW5kZXhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0Um93U3RhcnRJbmRleChzdGFydEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtZXJnZWRSb3dDZWxscyA9IHRoaXMucm93TWF0cml4W3N0YXJ0SW5kZXhdLmNlbGxzLmZpbHRlcihcbiAgICAgICAgICAgIHggPT4geC5jZWxsLnJvd1NwYW4gPiAxICYmIHguY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWVyZ2VkUm93Q2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhcnRJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuaXFDZWxscyA9IG5ldyBTZXQobWVyZ2VkUm93Q2VsbHMpO1xuICAgICAgICBsZXQgaW5kZXggPSBzdGFydEluZGV4O1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5yb3dNYXRyaXhbaW5kZXhdLmNlbGxzO1xuXG4gICAgICAgICAgICBpZiAoIWNlbGxzLnNvbWUoY2VsbCA9PiB1bmlxQ2VsbHMuaGFzKGNlbGwpKSkge1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gd2hpbGUgKGluZGV4ID49IDApO1xuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRSb3dFbmRJbmRleChlbmRJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkUm93Q2VsbHMgPSB0aGlzLnJvd01hdHJpeFtlbmRJbmRleF0uY2VsbHMuZmlsdGVyKHggPT4geC5jZWxsLnJvd1NwYW4gPiAxICYmIHguY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZSk7XG5cbiAgICAgICAgaWYgKCFtZXJnZWRSb3dDZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmRJbmRleCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1bmlxQ2VsbHMgPSBuZXcgU2V0KG1lcmdlZFJvd0NlbGxzKTtcbiAgICAgICAgbGV0IGluZGV4ID0gZW5kSW5kZXg7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnJvd01hdHJpeFtpbmRleF0/LmNlbGxzO1xuXG4gICAgICAgICAgICBpZiAoIWNlbGxzPy5zb21lKGNlbGwgPT4gdW5pcUNlbGxzLmhhcyhjZWxsKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSB3aGlsZSAoaW5kZXggPD0gdGhpcy5yb3dNYXRyaXgubGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0Q29sdW1uU3RhcnRJbmRleChyb3dTdGFydEluZGV4OiBudW1iZXIsIHJvd0VuZEluZGV4OiBudW1iZXIsIGNlbGxTdGFydEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXggPSBjZWxsU3RhcnRJbmRleDtcblxuICAgICAgICBmb3IgKGxldCBpID0gcm93U3RhcnRJbmRleDsgaSA8PSByb3dFbmRJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbY2VsbFN0YXJ0SW5kZXhdLmNlbGwuY29sU3BhbiA+IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gY2VsbFN0YXJ0SW5kZXg7XG5cbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbY2VsbEluZGV4XSB8fCB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tjZWxsSW5kZXhdLmNlbGwuY29sU3BhbiA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IGNlbGxJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbmRleCA8IG5ld0luZGV4ID8gaW5kZXggOiBuZXdJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgY2VsbEluZGV4LS07XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoY2VsbEluZGV4ID49IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldFRhcmdldENvbHVtbkVuZEluZGV4KHJvd1N0YXJ0SW5kZXg6IG51bWJlciwgcm93RW5kSW5kZXg6IG51bWJlciwgY2VsbEVuZEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXggPSBjZWxsRW5kSW5kZXggKyAxO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSByb3dFbmRJbmRleDsgaSA+PSByb3dTdGFydEluZGV4OyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tjZWxsRW5kSW5kZXhdLmNlbGwuY29sU3BhbiA+IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gY2VsbEVuZEluZGV4O1xuXG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucm93TWF0cml4W2ldLmNlbGxzW2NlbGxJbmRleF0gfHwgdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbY2VsbEluZGV4XS5jZWxsLmNvbFNwYW4gPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjZWxsSW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4ID4gbmV3SW5kZXggPyBpbmRleCA6IG5ld0luZGV4O1xuICAgICAgICAgICAgICAgICAgICBjZWxsSW5kZXgrKztcbiAgICAgICAgICAgICAgICB9IHdoaWxlIChjZWxsSW5kZXggPD0gdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export const DisplayValue = {
|
|
2
|
-
char: 1,
|
|
3
|
-
customContent: 3,
|
|
4
|
-
punctuation: 9,
|
|
5
|
-
space: 10,
|
|
6
|
-
emptyLine: 13
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS12YWx1ZXMuY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvY29udGVudC9jb25zdGFudHMvZGlzcGxheS12YWx1ZXMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQ3hCLElBQUksRUFBRSxDQUFDO0lBQ1AsYUFBYSxFQUFFLENBQUM7SUFDaEIsV0FBVyxFQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsRUFBRTtJQUNULFNBQVMsRUFBRSxFQUFFO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRGlzcGxheVZhbHVlID0ge1xuICAgIGNoYXI6IDEsXG4gICAgY3VzdG9tQ29udGVudDogMyxcbiAgICBwdW5jdHVhdGlvbjogOSxcbiAgICBzcGFjZTogMTAsXG4gICAgZW1wdHlMaW5lOiAxM1xufTtcbiJdfQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export const DocumentInfo = {
|
|
2
|
-
width: 794,
|
|
3
|
-
widthInInches: 8.267,
|
|
4
|
-
height: 1123,
|
|
5
|
-
pagesSpace: 8,
|
|
6
|
-
paddingTop: 96,
|
|
7
|
-
paddingRight: 48,
|
|
8
|
-
paddingBottom: 96,
|
|
9
|
-
paddingLeft: 48,
|
|
10
|
-
paddingHeader: 48,
|
|
11
|
-
paddingFooter: 48
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtaW5mby5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb250ZW50L2NvbnN0YW50cy9kb2N1bWVudC1pbmZvLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixLQUFLLEVBQUUsR0FBRztJQUNWLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLE1BQU0sRUFBRSxJQUFJO0lBQ1osVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsRUFBRTtJQUNkLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsYUFBYSxFQUFFLEVBQUU7SUFDakIsYUFBYSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBEb2N1bWVudEluZm8gPSB7XG4gICAgd2lkdGg6IDc5NCxcbiAgICB3aWR0aEluSW5jaGVzOiA4LjI2NyxcbiAgICBoZWlnaHQ6IDExMjMsXG4gICAgcGFnZXNTcGFjZTogOCxcbiAgICBwYWRkaW5nVG9wOiA5NixcbiAgICBwYWRkaW5nUmlnaHQ6IDQ4LFxuICAgIHBhZGRpbmdCb3R0b206IDk2LFxuICAgIHBhZGRpbmdMZWZ0OiA0OCxcbiAgICBwYWRkaW5nSGVhZGVyOiA0OCxcbiAgICBwYWRkaW5nRm9vdGVyOiA0OFxufTtcbiJdfQ==
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Alignment } from '../../positioning/alignments.const';
|
|
2
|
-
import { HeadingModel } from '../../../models/generated/heading.model';
|
|
3
|
-
import { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';
|
|
4
|
-
import { TextStyleModel } from '../../../models/generated/text-style.model';
|
|
5
|
-
import { VerticalAlignment } from '../vertical-alignment.enum';
|
|
6
|
-
export const DEFAULT_TOOLBAR_STYLES = () => ({
|
|
7
|
-
fontFamily: DEFAULT_FONT_FAMILY,
|
|
8
|
-
fontSize: DEFAULT_FONT_SIZE,
|
|
9
|
-
fontColor: DEFAULT_FONT_COLOR,
|
|
10
|
-
alignment: Alignment.left,
|
|
11
|
-
backgroundColor: DEFAULT_BACKGROUND_COLOR,
|
|
12
|
-
highlightColor: DEFAULT_BACKGROUND_COLOR
|
|
13
|
-
});
|
|
14
|
-
export const DEFAULT_BACKGROUND_COLOR = 'transparent';
|
|
15
|
-
export const DEFAULT_FONT_FAMILY = 'Roboto';
|
|
16
|
-
export const DEFAULT_FONT_SIZE = 14;
|
|
17
|
-
export const DEFAULT_FONT_COLOR = '#000';
|
|
18
|
-
export const HYPERLINK_FONT_COLOR = '#0000EE';
|
|
19
|
-
export const DEFAULT_HEADING_STYLE_ID = 'Default';
|
|
20
|
-
export const HYPERLINK_HEADING_STYLE_ID = 'Hyperlink';
|
|
21
|
-
export const DEFAULT_TEXT_STYLE = new TextStyleModel({
|
|
22
|
-
highlightColor: DEFAULT_BACKGROUND_COLOR,
|
|
23
|
-
bold: false,
|
|
24
|
-
fontColor: DEFAULT_FONT_COLOR,
|
|
25
|
-
fontFamily: DEFAULT_FONT_FAMILY,
|
|
26
|
-
fontSize: DEFAULT_FONT_SIZE,
|
|
27
|
-
headingStyleId: DEFAULT_HEADING_STYLE_ID,
|
|
28
|
-
isSmallCaps: false,
|
|
29
|
-
italic: false,
|
|
30
|
-
strikethrough: false,
|
|
31
|
-
underline: false,
|
|
32
|
-
verticalAlignment: VerticalAlignment.None
|
|
33
|
-
});
|
|
34
|
-
export const DEFAULT_PARAGRAPH_STYLE = new ParagraphStyleModel({
|
|
35
|
-
alignment: Alignment.left,
|
|
36
|
-
backgroundColor: DEFAULT_BACKGROUND_COLOR,
|
|
37
|
-
headingStyleId: DEFAULT_HEADING_STYLE_ID,
|
|
38
|
-
indentFirstLine: 0,
|
|
39
|
-
indentHanging: 0,
|
|
40
|
-
indentLeft: 0,
|
|
41
|
-
indentRight: 0,
|
|
42
|
-
lineSpacing: 1,
|
|
43
|
-
spaceAfter: 0,
|
|
44
|
-
spaceBefore: 0,
|
|
45
|
-
numberingId: null,
|
|
46
|
-
numberingLevel: null,
|
|
47
|
-
contextualSpacing: false,
|
|
48
|
-
beforeAutospacing: false,
|
|
49
|
-
afterAutospacing: false
|
|
50
|
-
});
|
|
51
|
-
export const DEFAULT_HEADINGS = [
|
|
52
|
-
new HeadingModel({
|
|
53
|
-
basedOn: null,
|
|
54
|
-
name: DEFAULT_HEADING_STYLE_ID,
|
|
55
|
-
paragraphStyle: DEFAULT_PARAGRAPH_STYLE,
|
|
56
|
-
styleId: DEFAULT_HEADING_STYLE_ID,
|
|
57
|
-
textStyle: DEFAULT_TEXT_STYLE
|
|
58
|
-
}),
|
|
59
|
-
new HeadingModel({
|
|
60
|
-
basedOn: DEFAULT_HEADING_STYLE_ID,
|
|
61
|
-
name: 'Default Paragraph Font',
|
|
62
|
-
paragraphStyle: DEFAULT_PARAGRAPH_STYLE,
|
|
63
|
-
styleId: 'DefaultParagraphFont',
|
|
64
|
-
textStyle: DEFAULT_TEXT_STYLE
|
|
65
|
-
})
|
|
66
|
-
];
|
|
67
|
-
export const NEW_LINE_MARKUP = '\n';
|
|
68
|
-
export const DEFAULT_TAB_WIDTH = 48;
|
|
69
|
-
export const DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER = 0.4;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUUsQ0FDdkMsQ0FBQztJQUNHLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixTQUFTLEVBQUUsa0JBQWtCO0lBQzdCLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUN6QixlQUFlLEVBQUUsd0JBQXdCO0lBQ3pDLGNBQWMsRUFBRSx3QkFBd0I7Q0FDeEIsQ0FBQSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLGFBQWEsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUM7QUFDNUMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsU0FBUyxDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFdBQVcsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBQztJQUNqRCxjQUFjLEVBQUUsd0JBQXdCO0lBQ3hDLElBQUksRUFBRSxLQUFLO0lBQ1gsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsY0FBYyxFQUFFLHdCQUF3QjtJQUN4QyxXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztJQUNiLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLElBQUk7Q0FDNUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztJQUMzRCxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDekIsZUFBZSxFQUFFLHdCQUF3QjtJQUN6QyxjQUFjLEVBQUUsd0JBQXdCO0lBQ3hDLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLFVBQVUsRUFBRSxDQUFDO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxXQUFXLEVBQUUsQ0FBQztJQUNkLFVBQVUsRUFBRSxDQUFDO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxXQUFXLEVBQUUsSUFBSTtJQUNqQixjQUFjLEVBQUUsSUFBSTtJQUNwQixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsZ0JBQWdCLEVBQUUsS0FBSztDQUMxQixDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixJQUFJLFlBQVksQ0FBQztRQUNiLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixjQUFjLEVBQUUsdUJBQXVCO1FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsU0FBUyxFQUFFLGtCQUFrQjtLQUNoQyxDQUFDO0lBQ0YsSUFBSSxZQUFZLENBQUM7UUFDYixPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsY0FBYyxFQUFFLHVCQUF1QjtRQUN2QyxPQUFPLEVBQUUsc0JBQXNCO1FBQy9CLFNBQVMsRUFBRSxrQkFBa0I7S0FDaEMsQ0FBQztDQUNMLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi9wb3NpdGlvbmluZy9hbGlnbm1lbnRzLmNvbnN0JztcbmltcG9ydCB7IEhlYWRpbmdNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaGVhZGluZy5tb2RlbCc7XG5pbXBvcnQgeyBJVG9vbGJhclN0eWxlcyB9IGZyb20gJy4uL2Rpc3BsYXktZGF0YS90b29sYmFyLXN0eWxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFZlcnRpY2FsQWxpZ25tZW50IH0gZnJvbSAnLi4vdmVydGljYWwtYWxpZ25tZW50LmVudW0nO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MQkFSX1NUWUxFUyA9ICgpID0+XG4gICAgKHtcbiAgICAgICAgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWSxcbiAgICAgICAgZm9udFNpemU6IERFRkFVTFRfRk9OVF9TSVpFLFxuICAgICAgICBmb250Q29sb3I6IERFRkFVTFRfRk9OVF9DT0xPUixcbiAgICAgICAgYWxpZ25tZW50OiBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IsXG4gICAgICAgIGhpZ2hsaWdodENvbG9yOiBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1JcbiAgICB9IGFzIElUb29sYmFyU3R5bGVzKTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IgPSAndHJhbnNwYXJlbnQnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9GQU1JTFkgPSAnUm9ib3RvJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfU0laRSA9IDE0O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9DT0xPUiA9ICcjMDAwJztcbmV4cG9ydCBjb25zdCBIWVBFUkxJTktfRk9OVF9DT0xPUiA9ICcjMDAwMEVFJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQURJTkdfU1RZTEVfSUQgPSAnRGVmYXVsdCc7XG5leHBvcnQgY29uc3QgSFlQRVJMSU5LX0hFQURJTkdfU1RZTEVfSUQgPSAnSHlwZXJsaW5rJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RFWFRfU1RZTEUgPSBuZXcgVGV4dFN0eWxlTW9kZWwoe1xuICAgIGhpZ2hsaWdodENvbG9yOiBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgZm9udENvbG9yOiBERUZBVUxUX0ZPTlRfQ09MT1IsXG4gICAgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWSxcbiAgICBmb250U2l6ZTogREVGQVVMVF9GT05UX1NJWkUsXG4gICAgaGVhZGluZ1N0eWxlSWQ6IERFRkFVTFRfSEVBRElOR19TVFlMRV9JRCxcbiAgICBpc1NtYWxsQ2FwczogZmFsc2UsXG4gICAgaXRhbGljOiBmYWxzZSxcbiAgICBzdHJpa2V0aHJvdWdoOiBmYWxzZSxcbiAgICB1bmRlcmxpbmU6IGZhbHNlLFxuICAgIHZlcnRpY2FsQWxpZ25tZW50OiBWZXJ0aWNhbEFsaWdubWVudC5Ob25lXG59KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRSA9IG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHtcbiAgICBhbGlnbm1lbnQ6IEFsaWdubWVudC5sZWZ0LFxuICAgIGJhY2tncm91bmRDb2xvcjogREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SLFxuICAgIGhlYWRpbmdTdHlsZUlkOiBERUZBVUxUX0hFQURJTkdfU1RZTEVfSUQsXG4gICAgaW5kZW50Rmlyc3RMaW5lOiAwLFxuICAgIGluZGVudEhhbmdpbmc6IDAsXG4gICAgaW5kZW50TGVmdDogMCxcbiAgICBpbmRlbnRSaWdodDogMCxcbiAgICBsaW5lU3BhY2luZzogMSxcbiAgICBzcGFjZUFmdGVyOiAwLFxuICAgIHNwYWNlQmVmb3JlOiAwLFxuICAgIG51bWJlcmluZ0lkOiBudWxsLFxuICAgIG51bWJlcmluZ0xldmVsOiBudWxsLFxuICAgIGNvbnRleHR1YWxTcGFjaW5nOiBmYWxzZSxcbiAgICBiZWZvcmVBdXRvc3BhY2luZzogZmFsc2UsXG4gICAgYWZ0ZXJBdXRvc3BhY2luZzogZmFsc2Vcbn0pO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSEVBRElOR1MgPSBbXG4gICAgbmV3IEhlYWRpbmdNb2RlbCh7XG4gICAgICAgIGJhc2VkT246IG51bGwsXG4gICAgICAgIG5hbWU6IERFRkFVTFRfSEVBRElOR19TVFlMRV9JRCxcbiAgICAgICAgcGFyYWdyYXBoU3R5bGU6IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLFxuICAgICAgICBzdHlsZUlkOiBERUZBVUxUX0hFQURJTkdfU1RZTEVfSUQsXG4gICAgICAgIHRleHRTdHlsZTogREVGQVVMVF9URVhUX1NUWUxFXG4gICAgfSksXG4gICAgbmV3IEhlYWRpbmdNb2RlbCh7XG4gICAgICAgIGJhc2VkT246IERFRkFVTFRfSEVBRElOR19TVFlMRV9JRCxcbiAgICAgICAgbmFtZTogJ0RlZmF1bHQgUGFyYWdyYXBoIEZvbnQnLFxuICAgICAgICBwYXJhZ3JhcGhTdHlsZTogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUsXG4gICAgICAgIHN0eWxlSWQ6ICdEZWZhdWx0UGFyYWdyYXBoRm9udCcsXG4gICAgICAgIHRleHRTdHlsZTogREVGQVVMVF9URVhUX1NUWUxFXG4gICAgfSlcbl07XG5leHBvcnQgY29uc3QgTkVXX0xJTkVfTUFSS1VQID0gJ1xcbic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9UQUJfV0lEVEggPSA0ODtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VER0VfTUFYX0hFSUdIVF9NVUxUSVBMSUVSID0gMC40O1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbnRlbnQvY29udGVudHMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9icmVhay5tb2RlbCc7XG5pbXBvcnQgeyBDb2x1bW5TZWN0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NvbHVtbi1zZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IEltYWdlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2ltYWdlLm1vZGVsJztcbmltcG9ydCB7IExpbmtNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbGluay5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhYk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWIubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRzSW50ZXJmYWNlIHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgY29udGVudExlbmd0aDogbnVtYmVyO1xuICAgIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW107XG4gICAgZm9ybWF0czogRm9ybWF0TW9kZWxbXTtcbiAgICBpbWFnZXM6IEltYWdlTW9kZWxbXTtcbiAgICBsaW5rczogTGlua01vZGVsW107XG4gICAgdGFibGVzOiBUYWJsZU1vZGVsW107XG4gICAgZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdO1xuICAgIGJyZWFrczogQnJlYWtNb2RlbFtdO1xuICAgIGNvbHVtblNlY3Rpb25zOiBDb2x1bW5TZWN0aW9uTW9kZWxbXTtcbiAgICB0YWJzOiBUYWJNb2RlbFtdO1xufVxuIl19
|