@bizdoc/core 3.0.6 → 3.2.1
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/assets/system/Workday.svg +37 -37
- package/assets/themes/brown.min.css +1 -1
- package/assets/themes/dark.min.css +1 -1
- package/assets/themes/deep-purple-light-blue.min.css +1 -1
- package/assets/themes/deep-purple-teal.min.css +1 -1
- package/assets/themes/default.min.css +25 -15
- package/assets/themes/green.min.css +1 -1
- package/assets/themes/indigo-amber.min.css +1 -1
- package/assets/themes/indigo.min.css +1 -1
- package/esm2022/bizdoc-core.mjs +1 -1
- package/esm2022/lib/admin/admin-dismiss.service.mjs +4 -4
- package/esm2022/lib/admin/admin-menu.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +10 -10
- package/esm2022/lib/admin/architecture/declarations.mjs +3 -2
- package/esm2022/lib/admin/architecture/designer-element.component.mjs +25 -22
- package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/designer.base.mjs +11 -14
- package/esm2022/lib/admin/architecture/designer.component.mjs +9 -8
- package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -5
- package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/control.component.mjs +4 -7
- package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/cube.component.mjs +14 -15
- package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +6 -8
- package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/folder.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +9 -11
- package/esm2022/lib/admin/architecture/elements/form.component.mjs +13 -14
- package/esm2022/lib/admin/architecture/elements/guide.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/job.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/node.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/policy.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/report.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/role.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/rule.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/source.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -5
- package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/type.component.mjs +7 -8
- package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/utility.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/view.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/widget.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/icon-picker.component.mjs +12 -7
- package/esm2022/lib/admin/core/ace.input.mjs +14 -13
- package/esm2022/lib/admin/core/color-picker.input.mjs +5 -5
- package/esm2022/lib/admin/core/localized-string.component.mjs +8 -7
- package/esm2022/lib/admin/core/search.input.mjs +5 -5
- package/esm2022/lib/admin/diff/configuration-diff.component.mjs +8 -7
- package/esm2022/lib/admin/document-trace/document-trace.component.mjs +19 -13
- package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +5 -5
- package/esm2022/lib/admin/document-trace/timeline.mjs +1 -1
- package/esm2022/lib/admin/document-trace/trace-element.component.mjs +6 -6
- package/esm2022/lib/admin/form/designer/box-designer.component.mjs +6 -6
- package/esm2022/lib/admin/form/designer/declarations.mjs +1 -1
- package/esm2022/lib/admin/form/designer/design-control.component.mjs +4 -4
- package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/section.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/settings.component.mjs +4 -4
- package/esm2022/lib/admin/form/form.resolve.service.mjs +4 -4
- package/esm2022/lib/admin/form/workflow/node-ref.mjs +1 -1
- package/esm2022/lib/admin/form/workflow/node.component.mjs +35 -35
- package/esm2022/lib/admin/form/workflow/role-node.component.mjs +5 -5
- package/esm2022/lib/admin/form/workflow/workflow.component.mjs +10 -12
- package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +9 -9
- package/esm2022/lib/admin/patterns/patterns.component.mjs +5 -5
- package/esm2022/lib/admin/permissions/permissions.component.mjs +5 -5
- package/esm2022/lib/admin/positions/positions-popup.component.mjs +8 -7
- package/esm2022/lib/admin/positions/positions.component.mjs +9 -9
- package/esm2022/lib/admin/profiler/outofoffice.component.mjs +6 -6
- package/esm2022/lib/admin/profiler/profiler.component.mjs +7 -7
- package/esm2022/lib/admin/system.service.mjs +15 -11
- package/esm2022/lib/admin/utility-ref.mjs +7 -5
- package/esm2022/lib/admin/utility-wrapper.component.mjs +4 -4
- package/esm2022/lib/admin/utility.pane.component.mjs +4 -4
- package/esm2022/lib/app.component.mjs +7 -7
- package/esm2022/lib/bizdoc.module.mjs +5 -5
- package/esm2022/lib/browse/browse-items.component.mjs +34 -33
- package/esm2022/lib/browse/browse.mobile.component.mjs +11 -8
- package/esm2022/lib/browse/browse.pane.component.mjs +9 -9
- package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +12 -12
- package/esm2022/lib/browse/filter/filter.component.mjs +27 -39
- package/esm2022/lib/browse/folders-menu.component.mjs +5 -5
- package/esm2022/lib/chat/chat-info.mjs +9 -8
- package/esm2022/lib/chat/chat.mobile.component.mjs +5 -5
- package/esm2022/lib/chat/chat.service.mjs +6 -6
- package/esm2022/lib/chat/contacts.component.mjs +10 -9
- package/esm2022/lib/chat/contacts.pane.component.mjs +4 -4
- package/esm2022/lib/chat/conversation.component.mjs +8 -8
- package/esm2022/lib/chat/conversation.pane.component.mjs +4 -4
- package/esm2022/lib/compose/action/action-picker.component.mjs +7 -10
- package/esm2022/lib/compose/action/action-ref.mjs +1 -1
- package/esm2022/lib/compose/action/action.base.mjs +1 -1
- package/esm2022/lib/compose/action/action.dialog.mjs +5 -5
- package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +7 -7
- package/esm2022/lib/compose/action/assign-action.component.mjs +5 -5
- package/esm2022/lib/compose/action/moveto-action.component.mjs +6 -6
- package/esm2022/lib/compose/action/return-action.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/attachments.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/progress-button.directive.mjs +4 -4
- package/esm2022/lib/compose/box/box.component.mjs +5 -5
- package/esm2022/lib/compose/box/control.component.mjs +4 -4
- package/esm2022/lib/compose/box/row.component.mjs +4 -4
- package/esm2022/lib/compose/can-deactivate-changes.service.mjs +4 -4
- package/esm2022/lib/compose/comments/comment.component.mjs +18 -15
- package/esm2022/lib/compose/comments/comments.component.mjs +7 -7
- package/esm2022/lib/compose/comments/comments.pane.component.mjs +5 -5
- package/esm2022/lib/compose/comments/edit-comment.component.mjs +4 -4
- package/esm2022/lib/compose/comments/edits.component.mjs +5 -5
- package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +6 -6
- package/esm2022/lib/compose/comments/votes.component.mjs +5 -5
- package/esm2022/lib/compose/compose-resolve.service.mjs +4 -4
- package/esm2022/lib/compose/compose.mobile.component.mjs +8 -8
- package/esm2022/lib/compose/compose.pane.component.mjs +11 -11
- package/esm2022/lib/compose/copy/copy.dialog.mjs +5 -5
- package/esm2022/lib/compose/dismiss.service.mjs +4 -4
- package/esm2022/lib/compose/document-resolve.service.mjs +7 -7
- package/esm2022/lib/compose/document-resolver.service.mjs +4 -4
- package/esm2022/lib/compose/document.component.mjs +4 -4
- package/esm2022/lib/compose/document.mobile.component.mjs +4 -4
- package/esm2022/lib/compose/document.pane.component.mjs +4 -4
- package/esm2022/lib/compose/events/events.component.mjs +5 -5
- package/esm2022/lib/compose/form-ref.mjs +1 -1
- package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +5 -5
- package/esm2022/lib/compose/form.component.mjs +59 -23
- package/esm2022/lib/compose/new-menu.component.mjs +8 -7
- package/esm2022/lib/compose/overlay.component.exp.mjs +4 -4
- package/esm2022/lib/compose/privilage.directive.mjs +7 -7
- package/esm2022/lib/compose/recipient-resolver.service.mjs +4 -4
- package/esm2022/lib/compose/state.component.mjs +4 -4
- package/esm2022/lib/compose/tag/tags.component.mjs +5 -5
- package/esm2022/lib/compose/trace/flow.component.mjs +16 -17
- package/esm2022/lib/compose/trace/people.component.mjs +14 -9
- package/esm2022/lib/compose/trace/trace.base.mjs +6 -7
- package/esm2022/lib/compose/trace/trace.component.mjs +5 -5
- package/esm2022/lib/compose/trace/trace.pane.component.mjs +4 -4
- package/esm2022/lib/compose/version-compare/version-compare.component.mjs +5 -4
- package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +14 -14
- package/esm2022/lib/compose/version-compare/version.pane.component.mjs +5 -5
- package/esm2022/lib/core/account.service.mjs +4 -4
- package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +4 -4
- package/esm2022/lib/core/animations.mjs +1 -1
- package/esm2022/lib/core/authentication.mjs +1 -1
- package/esm2022/lib/core/avatar/avatar.component.mjs +52 -43
- package/esm2022/lib/core/base.mjs +1 -1
- package/esm2022/lib/core/checkbox.mjs +19 -19
- package/esm2022/lib/core/colors.mjs +1 -1
- package/esm2022/lib/core/component-factory-resolver.mjs +5 -5
- package/esm2022/lib/core/configuration.mjs +1 -1
- package/esm2022/lib/core/datasource.service.mjs +4 -4
- package/esm2022/lib/core/decorators.mjs +1 -1
- package/esm2022/lib/core/document-factory.service.mjs +4 -11
- package/esm2022/lib/core/fields/address.designer.mjs +4 -4
- package/esm2022/lib/core/fields/address.field.mjs +31 -31
- package/esm2022/lib/core/fields/autocomplete.field.mjs +65 -65
- package/esm2022/lib/core/fields/axes-picker.designer.mjs +25 -25
- package/esm2022/lib/core/fields/axes-picker.field.mjs +5 -5
- package/esm2022/lib/core/fields/checkbox.designer.mjs +4 -4
- package/esm2022/lib/core/fields/checkbox.field.mjs +5 -5
- package/esm2022/lib/core/fields/checklist.designer.mjs +59 -59
- package/esm2022/lib/core/fields/checklist.field.mjs +5 -5
- package/esm2022/lib/core/fields/date-range.designer.mjs +4 -4
- package/esm2022/lib/core/fields/date-range.field.mjs +5 -5
- package/esm2022/lib/core/fields/date.designer.mjs +4 -4
- package/esm2022/lib/core/fields/date.field.mjs +5 -5
- package/esm2022/lib/core/fields/expression.field.mjs +30 -30
- package/esm2022/lib/core/fields/file.designer.mjs +4 -4
- package/esm2022/lib/core/fields/file.field.mjs +5 -5
- package/esm2022/lib/core/fields/html.designer.mjs +4 -4
- package/esm2022/lib/core/fields/html.field.mjs +5 -5
- package/esm2022/lib/core/fields/input.designer.mjs +4 -4
- package/esm2022/lib/core/fields/input.field.mjs +5 -5
- package/esm2022/lib/core/fields/localized-string.field.mjs +7 -7
- package/esm2022/lib/core/fields/numeric.designer.mjs +4 -4
- package/esm2022/lib/core/fields/numeric.field.mjs +5 -5
- package/esm2022/lib/core/fields/options.base.mjs +8 -8
- package/esm2022/lib/core/fields/options.component.mjs +5 -5
- package/esm2022/lib/core/fields/radio-button.designer.mjs +5 -5
- package/esm2022/lib/core/fields/radio-button.field.mjs +5 -5
- package/esm2022/lib/core/fields/select.designer.mjs +63 -63
- package/esm2022/lib/core/fields/select.field.mjs +5 -5
- package/esm2022/lib/core/fields/signature.designer.mjs +4 -4
- package/esm2022/lib/core/fields/signature.field.mjs +5 -5
- package/esm2022/lib/core/fields/switch.field.mjs +5 -5
- package/esm2022/lib/core/fields/tags.designer.mjs +4 -4
- package/esm2022/lib/core/fields/tags.field.mjs +5 -5
- package/esm2022/lib/core/fields/textarea.designer.mjs +4 -4
- package/esm2022/lib/core/fields/textarea.field.mjs +5 -5
- package/esm2022/lib/core/fields/time.designer.mjs +4 -4
- package/esm2022/lib/core/fields/time.field.mjs +5 -5
- package/esm2022/lib/core/fields/timespan.field.mjs +30 -30
- package/esm2022/lib/core/fields/yesno.designer.mjs +23 -23
- package/esm2022/lib/core/fields/yesno.field.mjs +5 -5
- package/esm2022/lib/core/firebase.service.mjs +1 -1
- package/esm2022/lib/core/functions.mjs +4 -1
- package/esm2022/lib/core/guide/guide.component.mjs +5 -5
- package/esm2022/lib/core/guide/guide.service.mjs +11 -7
- package/esm2022/lib/core/guide/help-tip.component.mjs +22 -22
- package/esm2022/lib/core/http.interceptor.mjs +6 -6
- package/esm2022/lib/core/hub.service.mjs +4 -4
- package/esm2022/lib/core/identity/identity.component.mjs +5 -5
- package/esm2022/lib/core/info/attachment-info.service.mjs +4 -4
- package/esm2022/lib/core/info/document-info.service.mjs +4 -4
- package/esm2022/lib/core/info/location-info.component.mjs +4 -4
- package/esm2022/lib/core/info/map-info.mjs +4 -4
- package/esm2022/lib/core/inputs/address.input.mjs +21 -21
- package/esm2022/lib/core/inputs/auto-complete.input.mjs +38 -37
- package/esm2022/lib/core/inputs/combination-picker-body.mjs +10 -12
- package/esm2022/lib/core/inputs/combination-picker.mjs +4 -5
- package/esm2022/lib/core/inputs/combination-pool.mjs +7 -6
- package/esm2022/lib/core/inputs/file.input.mjs +30 -24
- package/esm2022/lib/core/inputs/select.input.mjs +37 -37
- package/esm2022/lib/core/inputs/signature.input.mjs +4 -4
- package/esm2022/lib/core/inputs/time-picker.mjs +8 -8
- package/esm2022/lib/core/inputs/timespan.input.mjs +7 -7
- package/esm2022/lib/core/layout.component.mjs +11 -5
- package/esm2022/lib/core/lottie-animation.exp.mjs +49 -0
- package/esm2022/lib/core/mailbox.service.mjs +20 -14
- package/esm2022/lib/core/models.mjs +2 -1
- package/esm2022/lib/core/none.component.mjs +15 -15
- package/esm2022/lib/core/pipes/action.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/calendar.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/date-format.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/daterange.pipe.mjs +7 -7
- package/esm2022/lib/core/pipes/difference.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/duration-format.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/duration.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/filter.pipe.mjs +25 -0
- package/esm2022/lib/core/pipes/form.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/join.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/localized-string.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/role.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/sort.pipe.mjs +8 -30
- package/esm2022/lib/core/pipes/state.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/time-ago.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/to-now.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/translate.pipe.mjs +10 -10
- package/esm2022/lib/core/pipes/type-value.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/user-name.pipe.mjs +4 -4
- package/esm2022/lib/core/popup/popup-ref.mjs +1 -1
- package/esm2022/lib/core/popup/popup.component.mjs +4 -4
- package/esm2022/lib/core/popup/popup.service.mjs +7 -5
- package/esm2022/lib/core/popup/tooltip.directive.mjs +10 -11
- package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +4 -4
- package/esm2022/lib/core/prompt/mask/mask.component.mjs +4 -4
- package/esm2022/lib/core/prompt.service.mjs +6 -6
- package/esm2022/lib/core/router.mjs +9 -9
- package/esm2022/lib/core/save-changes.dialog.mjs +4 -4
- package/esm2022/lib/core/session.service.mjs +18 -9
- package/esm2022/lib/core/slots/pane-ref.mjs +2 -2
- package/esm2022/lib/core/slots/router.directive.mjs +4 -4
- package/esm2022/lib/core/slots/router.service.mjs +6 -5
- package/esm2022/lib/core/slots/slots.component.mjs +26 -23
- package/esm2022/lib/core/sticky-toolbar.exp.mjs +9 -6
- package/esm2022/lib/core/tagging/documents.component.mjs +5 -5
- package/esm2022/lib/core/tagging/edit-input.component.mjs +17 -14
- package/esm2022/lib/core/tagging/emoji.component.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging-item.directive.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging.component-base.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging.directive.mjs +5 -5
- package/esm2022/lib/core/tagging/tagging.pipe.mjs +4 -4
- package/esm2022/lib/core/tagging/users.component.mjs +5 -5
- package/esm2022/lib/core/translate.service.mjs +5 -4
- package/esm2022/lib/core/translations.mjs +8 -6
- package/esm2022/lib/core/virtual-tabs.component.exp.mjs +7 -7
- package/esm2022/lib/core/window-title.service.mjs +14 -6
- package/esm2022/lib/cube/accum/accum.component.mjs +4 -4
- package/esm2022/lib/cube/chart/chart.component.mjs +8 -7
- package/esm2022/lib/cube/cube-info.service.mjs +13 -10
- package/esm2022/lib/cube/cube-menu.component.mjs +5 -5
- package/esm2022/lib/cube/cube-view.component.mjs +5 -5
- package/esm2022/lib/cube/cube.service.mjs +21 -19
- package/esm2022/lib/cube/declarations.mjs +1 -1
- package/esm2022/lib/cube/explore/document-item.component.mjs +4 -4
- package/esm2022/lib/cube/explore/explore-item.component.mjs +4 -4
- package/esm2022/lib/cube/explore/explore-items.component.mjs +8 -8
- package/esm2022/lib/cube/explore/explore.pane.component.mjs +5 -5
- package/esm2022/lib/cube/explore/item-resolver.service.mjs +7 -7
- package/esm2022/lib/cube/explore/item.pane.component.mjs +5 -5
- package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +5 -5
- package/esm2022/lib/cube/filter/filter.component.mjs +14 -13
- package/esm2022/lib/cube/grid/grid.component.mjs +9 -8
- package/esm2022/lib/cube/matrix/matrix.base.mjs +20 -18
- package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +6 -6
- package/esm2022/lib/cube/matrix/popup.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/table.component.mjs +10 -9
- package/esm2022/lib/cube/parallel/item.mjs +1 -2
- package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
- package/esm2022/lib/cube/pivot/pivot.component.mjs +16 -7
- package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +6 -6
- package/esm2022/lib/cube/spreadsheet/spreadsheet.container.exp.mjs +4 -4
- package/esm2022/lib/cube/sum/sum.component.mjs +20 -19
- package/esm2022/lib/cube/view-base.mjs +5 -5
- package/esm2022/lib/cube/view.mobile.component.mjs +6 -6
- package/esm2022/lib/cube/view.pane.component.mjs +5 -5
- package/esm2022/lib/dashboard/actions/actions.widget.mjs +7 -6
- package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +4 -8
- package/esm2022/lib/dashboard/cube/compare.widget.mjs +5 -7
- package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +8 -6
- package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
- package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +5 -4
- package/esm2022/lib/dashboard/cube/document-state.widget.mjs +6 -5
- package/esm2022/lib/dashboard/cube/documents.widget.mjs +4 -4
- package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +4 -4
- package/esm2022/lib/dashboard/dashboard.component.mjs +5 -5
- package/esm2022/lib/dashboard/dashboard.pane.component.mjs +4 -4
- package/esm2022/lib/dashboard/recents/recents.widget.mjs +13 -16
- package/esm2022/lib/dashboard/score/activity.widget.mjs +7 -6
- package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +12 -5
- package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +9 -8
- package/esm2022/lib/dashboard/score/pending-results.widget.mjs +5 -5
- package/esm2022/lib/dashboard/score/personal-score.widget.mjs +19 -18
- package/esm2022/lib/dashboard/widget-item.component.mjs +4 -4
- package/esm2022/lib/dashboard/widget-ref.mjs +1 -1
- package/esm2022/lib/designer.module.mjs +5 -5
- package/esm2022/lib/desktop.module.mjs +8 -12
- package/esm2022/lib/home/about/about.dialog.mjs +6 -6
- package/esm2022/lib/home/home-base.component.mjs +18 -10
- package/esm2022/lib/home/home.desktop.component.mjs +12 -22
- package/esm2022/lib/home/home.mobile.component.mjs +29 -32
- package/esm2022/lib/home/notifications/notifications.component.mjs +22 -24
- package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +10 -10
- package/esm2022/lib/home/sign/sign.component.mjs +17 -21
- package/esm2022/lib/impersonate/impersonate.component.mjs +36 -34
- package/esm2022/lib/mobile.module.mjs +8 -11
- package/esm2022/lib/modules/chart.module.mjs +13 -11
- package/esm2022/lib/modules/circular-gauge.module.mjs +9 -7
- package/esm2022/lib/modules/date.adapter.mjs +1 -1
- package/esm2022/lib/modules/datepicker.intl.mjs +4 -4
- package/esm2022/lib/modules/dayjs.module.mjs +5 -5
- package/esm2022/lib/modules/diagram.module.mjs +9 -7
- package/esm2022/lib/modules/gantt.module.mjs +11 -9
- package/esm2022/lib/modules/grid.module.mjs +9 -7
- package/esm2022/lib/modules/linear-gauge.module.mjs +5 -5
- package/esm2022/lib/modules/material.module.mjs +5 -5
- package/esm2022/lib/modules/paginator.intl.mjs +4 -4
- package/esm2022/lib/modules/pivot.module.mjs +9 -7
- package/esm2022/lib/modules/schedule.module.mjs +9 -7
- package/esm2022/lib/modules/spreadsheet.module.mjs +5 -5
- package/esm2022/lib/modules/stepper.intl.mjs +4 -4
- package/esm2022/lib/modules/texteditor.module.mjs +7 -6
- package/esm2022/lib/notifications/filter.component.mjs +4 -4
- package/esm2022/lib/notifications/notifications-table.component.mjs +7 -8
- package/esm2022/lib/notifications/notifications.component-base.mjs +1 -1
- package/esm2022/lib/notifications/notifications.mobile.component.mjs +4 -4
- package/esm2022/lib/notifications/notifications.pane.component.mjs +4 -4
- package/esm2022/lib/notifications/notifications.service.mjs +13 -6
- package/esm2022/lib/notifications/types/commented.notification.mjs +17 -17
- package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/escalated.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/invite.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/liked.notification.mjs +17 -17
- package/esm2022/lib/notifications/types/long-running-task.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/notification-base.mjs +4 -4
- package/esm2022/lib/notifications/types/nudge.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/state-changed.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/tagged.notification.mjs +7 -7
- package/esm2022/lib/notifications/types/text.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +4 -4
- package/esm2022/lib/options/options.component.mjs +91 -49
- package/esm2022/lib/options/options.desktop.component.mjs +26 -0
- package/esm2022/lib/options/options.mobile.component.mjs +23 -0
- package/esm2022/lib/reports/arguments-component.mjs +4 -4
- package/esm2022/lib/reports/cube/documents.component.mjs +4 -4
- package/esm2022/lib/reports/cube/grid-documents.component.mjs +4 -4
- package/esm2022/lib/reports/cube/performance-hilo.component.mjs +5 -5
- package/esm2022/lib/reports/cube/performance-wind.component.mjs +4 -4
- package/esm2022/lib/reports/cube/table-documents.component.mjs +7 -6
- package/esm2022/lib/reports/cube/usage-args.component.mjs +6 -5
- package/esm2022/lib/reports/cube/usage-base.mjs +8 -8
- package/esm2022/lib/reports/cube/usage-chart.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage-pivot.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage.component.mjs +4 -4
- package/esm2022/lib/reports/report-ref.mjs +1 -1
- package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
- package/esm2022/lib/reports/report.mobile.component.mjs +5 -5
- package/esm2022/lib/reports/report.pane.component.mjs +5 -5
- package/esm2022/lib/reports/reports-menu.component.mjs +5 -5
- package/esm2022/lib/reports/substitution/substitution.component.mjs +5 -5
- package/esm2022/lib/reports/table/table-view.component.mjs +5 -5
- package/esm2022/lib/reports/tasks/tasks.component.mjs +4 -4
- package/esm2022/lib/routes.desktop.mjs +24 -5
- package/esm2022/lib/routes.mobile.mjs +12 -2
- package/esm2022/lib/scheduler/schedule.component.mjs +5 -5
- package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +4 -4
- package/esm2022/lib/scheduler/scheduler.pane.component.mjs +4 -4
- package/esm2022/lib/search/cube.component.mjs +8 -9
- package/esm2022/lib/search/declarations.mjs +1 -1
- package/esm2022/lib/search/document.component.mjs +4 -4
- package/esm2022/lib/search/guide.component.mjs +4 -4
- package/esm2022/lib/search/path.component.mjs +15 -15
- package/esm2022/lib/search/search.service.mjs +5 -5
- package/esm2022/lib/shared.module.mjs +17 -17
- package/esm2022/lib/system.module.mjs +5 -5
- package/esm2022/lib/views/cube/chart.component.mjs +5 -5
- package/esm2022/lib/views/cube/cube-base.mjs +4 -4
- package/esm2022/lib/views/cube/explore.component.mjs +6 -6
- package/esm2022/lib/views/cube/matrix.component.mjs +7 -7
- package/esm2022/lib/views/cube/parallel.component.mjs +5 -5
- package/esm2022/lib/views/cube/pivot.component.mjs +5 -5
- package/esm2022/lib/views/cube/sum.component.mjs +5 -5
- package/esm2022/lib/views/cube/view.component.mjs +7 -7
- package/esm2022/lib/views/document-view-ref.mjs +1 -1
- package/esm2022/lib/views/timeline/timeline.component.mjs +7 -8
- package/esm2022/lib/views/view-item.component.mjs +4 -4
- package/esm2022/lib/views/views.component.mjs +5 -5
- package/esm2022/lib/views/views.mobile.component.mjs +6 -6
- package/esm2022/lib/views/views.pane.component.mjs +8 -8
- package/esm2022/public-api.mjs +4 -3
- package/fesm2022/bizdoc-core.mjs +3819 -3701
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/lib/admin/architecture/cube-axes-filter.component.d.ts +4 -1
- package/lib/admin/architecture/declarations.d.ts +14 -9
- package/lib/admin/architecture/designer-element.component.d.ts +1 -0
- package/lib/admin/architecture/designer-privileges.component.d.ts +4 -2
- package/lib/admin/architecture/designer.base.d.ts +1 -4
- package/lib/admin/architecture/designer.component.d.ts +3 -3
- package/lib/admin/architecture/elements/action.component.d.ts +13 -13
- package/lib/admin/architecture/elements/analysis-view.component.d.ts +8 -8
- package/lib/admin/architecture/elements/analysis-widget.component.d.ts +7 -7
- package/lib/admin/architecture/elements/anomaly-rule.component.d.ts +3 -3
- package/lib/admin/architecture/elements/attribute.component.d.ts +1 -1
- package/lib/admin/architecture/elements/box-form.component.d.ts +5 -5
- package/lib/admin/architecture/elements/configuration-datasource.component.d.ts +1 -1
- package/lib/admin/architecture/elements/control.component.d.ts +1 -2
- package/lib/admin/architecture/elements/cube-index-utility.component.d.ts +3 -4
- package/lib/admin/architecture/elements/cube-view.component.d.ts +4 -4
- package/lib/admin/architecture/elements/cube.component.d.ts +9 -10
- package/lib/admin/architecture/elements/document-state-widget.component.d.ts +3 -6
- package/lib/admin/architecture/elements/documents-report.component.d.ts +4 -5
- package/lib/admin/architecture/elements/documents-widget.component.d.ts +5 -5
- package/lib/admin/architecture/elements/explore-view.component.d.ts +4 -4
- package/lib/admin/architecture/elements/folder.component.d.ts +2 -2
- package/lib/admin/architecture/elements/form-invite.dialog.d.ts +7 -7
- package/lib/admin/architecture/elements/form.component.d.ts +10 -9
- package/lib/admin/architecture/elements/guide.component.d.ts +1 -1
- package/lib/admin/architecture/elements/matrix-view.component.d.ts +16 -16
- package/lib/admin/architecture/elements/parallel-view.component.d.ts +9 -10
- package/lib/admin/architecture/elements/performance-report.component.d.ts +2 -3
- package/lib/admin/architecture/elements/performance-widget.component.d.ts +4 -5
- package/lib/admin/architecture/elements/pivot-view.component.d.ts +9 -10
- package/lib/admin/architecture/elements/report.component.d.ts +1 -1
- package/lib/admin/architecture/elements/return-to-role-action.component.d.ts +1 -1
- package/lib/admin/architecture/elements/role.component.d.ts +4 -4
- package/lib/admin/architecture/elements/source.component.d.ts +2 -3
- package/lib/admin/architecture/elements/state.component.d.ts +4 -4
- package/lib/admin/architecture/elements/sum-view.component.d.ts +7 -8
- package/lib/admin/architecture/elements/tasks-report.component.d.ts +4 -4
- package/lib/admin/architecture/elements/type.component.d.ts +8 -4
- package/lib/admin/architecture/elements/usage-report.component.d.ts +7 -7
- package/lib/admin/architecture/elements/widget.component.d.ts +1 -1
- package/lib/admin/architecture/icon-picker.component.d.ts +5 -3
- package/lib/admin/core/ace.input.d.ts +2 -5
- package/lib/admin/core/localized-string.component.d.ts +3 -2
- package/lib/admin/document-trace/document-trace.component.d.ts +6 -5
- package/lib/admin/document-trace/reassign.dialog.d.ts +2 -2
- package/lib/admin/document-trace/timeline.d.ts +2 -2
- package/lib/admin/form/designer/box-designer.component.d.ts +11 -11
- package/lib/admin/form/designer/section.component.d.ts +5 -5
- package/lib/admin/form/workflow/node-ref.d.ts +1 -1
- package/lib/admin/form/workflow/node.component.d.ts +3 -2
- package/lib/admin/form/workflow/role-node.component.d.ts +11 -11
- package/lib/admin/form/workflow/workflow.component.d.ts +5 -4
- package/lib/admin/indices/manage-cube-index.component.d.ts +3 -3
- package/lib/admin/patterns/patterns.component.d.ts +2 -2
- package/lib/admin/positions/positions-popup.component.d.ts +1 -1
- package/lib/admin/positions/positions.component.d.ts +6 -6
- package/lib/admin/profiler/outofoffice.component.d.ts +15 -15
- package/lib/admin/profiler/profiler.component.d.ts +3 -3
- package/lib/admin/system.service.d.ts +11 -12
- package/lib/admin/utility-ref.d.ts +2 -2
- package/lib/browse/browse-items.component.d.ts +6 -7
- package/lib/browse/browse.mobile.component.d.ts +2 -2
- package/lib/browse/browse.pane.component.d.ts +2 -2
- package/lib/browse/filter/filter.component.d.ts +10 -11
- package/lib/chat/chat-info.d.ts +1 -1
- package/lib/chat/chat.service.d.ts +1 -1
- package/lib/chat/conversation.component.d.ts +2 -2
- package/lib/compose/action/action.base.d.ts +2 -1
- package/lib/compose/action/assign-action.component.d.ts +5 -5
- package/lib/compose/action/moveto-action.component.d.ts +3 -3
- package/lib/compose/action/return-action.component.d.ts +4 -4
- package/lib/compose/box/box.component.d.ts +1 -1
- package/lib/compose/comments/comments.component.d.ts +4 -4
- package/lib/compose/compose.mobile.component.d.ts +5 -5
- package/lib/compose/compose.pane.component.d.ts +3 -3
- package/lib/compose/copy/copy.dialog.d.ts +1 -1
- package/lib/compose/form-ref.d.ts +5 -5
- package/lib/compose/form.component.d.ts +36 -2
- package/lib/compose/new-menu.component.d.ts +2 -1
- package/lib/compose/privilage.directive.d.ts +1 -1
- package/lib/compose/tag/tags.component.d.ts +1 -1
- package/lib/compose/trace/flow.component.d.ts +1 -0
- package/lib/compose/trace/people.component.d.ts +5 -2
- package/lib/compose/trace/trace.base.d.ts +1 -1
- package/lib/compose/version-compare/version-compare.directive.d.ts +1 -1
- package/lib/core/account.service.d.ts +1 -1
- package/lib/core/authentication.d.ts +1 -1
- package/lib/core/avatar/avatar.component.d.ts +14 -11
- package/lib/core/base.d.ts +9 -9
- package/lib/core/datasource.service.d.ts +1 -1
- package/lib/core/document-factory.service.d.ts +0 -1
- package/lib/core/fields/address.designer.d.ts +3 -3
- package/lib/core/fields/address.field.d.ts +1 -1
- package/lib/core/fields/autocomplete.field.d.ts +5 -5
- package/lib/core/fields/axes-picker.designer.d.ts +3 -3
- package/lib/core/fields/axes-picker.field.d.ts +1 -1
- package/lib/core/fields/checkbox.designer.d.ts +2 -2
- package/lib/core/fields/checkbox.field.d.ts +1 -1
- package/lib/core/fields/checklist.designer.d.ts +4 -4
- package/lib/core/fields/checklist.field.d.ts +1 -2
- package/lib/core/fields/date-range.designer.d.ts +6 -6
- package/lib/core/fields/date-range.field.d.ts +2 -2
- package/lib/core/fields/date.designer.d.ts +5 -5
- package/lib/core/fields/file.designer.d.ts +3 -3
- package/lib/core/fields/html.designer.d.ts +4 -4
- package/lib/core/fields/input.designer.d.ts +8 -9
- package/lib/core/fields/numeric.designer.d.ts +7 -7
- package/lib/core/fields/options.base.d.ts +1 -1
- package/lib/core/fields/radio-button.designer.d.ts +3 -3
- package/lib/core/fields/radio-button.field.d.ts +2 -3
- package/lib/core/fields/select.designer.d.ts +5 -5
- package/lib/core/fields/select.field.d.ts +1 -2
- package/lib/core/fields/signature.designer.d.ts +2 -2
- package/lib/core/fields/switch.field.d.ts +1 -1
- package/lib/core/fields/textarea.designer.d.ts +6 -6
- package/lib/core/fields/time.designer.d.ts +5 -5
- package/lib/core/fields/yesno.designer.d.ts +3 -3
- package/lib/core/fields/yesno.field.d.ts +1 -1
- package/lib/core/firebase.service.d.ts +1 -1
- package/lib/core/functions.d.ts +7 -4
- package/lib/core/guide/help-tip.component.d.ts +1 -1
- package/lib/core/http.interceptor.d.ts +1 -1
- package/lib/core/hub.service.d.ts +2 -2
- package/lib/core/inputs/address.input.d.ts +5 -4
- package/lib/core/inputs/auto-complete.input.d.ts +4 -4
- package/lib/core/inputs/combination-picker-body.d.ts +2 -2
- package/lib/core/inputs/file.input.d.ts +4 -4
- package/lib/core/inputs/time-picker.d.ts +2 -2
- package/lib/core/inputs/timespan.input.d.ts +7 -7
- package/lib/core/{lottie-animation.d.ts → lottie-animation.exp.d.ts} +0 -1
- package/lib/core/mailbox.service.d.ts +2 -3
- package/lib/core/models.d.ts +6 -5
- package/lib/core/pipes/filter.pipe.d.ts +7 -0
- package/lib/core/pipes/localized-string.pipe.d.ts +1 -1
- package/lib/core/pipes/sort.pipe.d.ts +1 -6
- package/lib/core/pipes/time-ago.pipe.d.ts +1 -1
- package/lib/core/pipes/user-name.pipe.d.ts +1 -1
- package/lib/core/popup/popup-ref.d.ts +4 -4
- package/lib/core/popup/tooltip.directive.d.ts +2 -3
- package/lib/core/router.d.ts +3 -3
- package/lib/core/session.service.d.ts +10 -7
- package/lib/core/slots/pane-ref.d.ts +18 -18
- package/lib/core/slots/router.directive.d.ts +2 -2
- package/lib/core/slots/router.service.d.ts +3 -3
- package/lib/core/slots/slots.component.d.ts +3 -3
- package/lib/core/sticky-toolbar.exp.d.ts +1 -0
- package/lib/core/tagging/edit-input.component.d.ts +5 -5
- package/lib/core/tagging/emoji.component.d.ts +1 -1
- package/lib/core/tagging/tagging.component-base.d.ts +1 -1
- package/lib/core/tagging/tagging.directive.d.ts +1 -1
- package/lib/core/tagging/tagging.pipe.d.ts +1 -1
- package/lib/core/translate.service.d.ts +2 -2
- package/lib/core/translations.d.ts +2 -1049
- package/lib/core/virtual-tabs.component.exp.d.ts +2 -2
- package/lib/core/window-title.service.d.ts +2 -1
- package/lib/cube/accum/accum.component.d.ts +1 -1
- package/lib/cube/chart/chart.component.d.ts +5 -5
- package/lib/cube/cube-info.service.d.ts +1 -1
- package/lib/cube/cube.service.d.ts +2 -2
- package/lib/cube/declarations.d.ts +3 -3
- package/lib/cube/explore/explore-items.component.d.ts +2 -2
- package/lib/cube/filter/filter.component.d.ts +1 -1
- package/lib/cube/grid/grid.component.d.ts +4 -4
- package/lib/cube/matrix/matrix.base.d.ts +9 -8
- package/lib/cube/matrix/matrix.pane.component.d.ts +2 -1
- package/lib/cube/matrix/table.component.d.ts +3 -3
- package/lib/cube/pivot/pivot.component.d.ts +6 -7
- package/lib/cube/spreadsheet/spreadsheet.component.d.ts +3 -3
- package/lib/cube/sum/sum.component.d.ts +5 -5
- package/lib/cube/view-base.d.ts +3 -2
- package/lib/cube/view.mobile.component.d.ts +1 -1
- package/lib/dashboard/cube/accum-cube.widget.d.ts +0 -1
- package/lib/dashboard/cube/cube-analysis.base.d.ts +9 -6
- package/lib/dashboard/cube/filter/filter.component.d.ts +3 -2
- package/lib/dashboard/recents/recents.widget.d.ts +5 -6
- package/lib/dashboard/score/activity.widget.d.ts +1 -0
- package/lib/dashboard/score/peers-performance.widget.d.ts +1 -0
- package/lib/dashboard/score/personal-score.widget.d.ts +2 -4
- package/lib/desktop.module.d.ts +5 -6
- package/lib/home/about/about.dialog.d.ts +2 -2
- package/lib/home/home-base.component.d.ts +2 -0
- package/lib/home/home.desktop.component.d.ts +6 -9
- package/lib/home/home.mobile.component.d.ts +4 -6
- package/lib/home/notifications/notifications.component.d.ts +3 -5
- package/lib/home/outofoffice/outofoffice.component.d.ts +3 -3
- package/lib/home/sign/sign.component.d.ts +4 -2
- package/lib/impersonate/impersonate.component.d.ts +11 -12
- package/lib/mobile.module.d.ts +3 -3
- package/lib/modules/chart.module.d.ts +1 -0
- package/lib/modules/circular-gauge.module.d.ts +1 -0
- package/lib/modules/diagram.module.d.ts +1 -0
- package/lib/modules/gantt.module.d.ts +1 -0
- package/lib/modules/grid.module.d.ts +1 -0
- package/lib/modules/pivot.module.d.ts +1 -0
- package/lib/modules/schedule.module.d.ts +1 -0
- package/lib/notifications/filter.component.d.ts +2 -2
- package/lib/options/options.component.d.ts +54 -31
- package/lib/options/options.desktop.component.d.ts +10 -0
- package/lib/options/options.mobile.component.d.ts +9 -0
- package/lib/reports/arguments-component.d.ts +2 -2
- package/lib/reports/cube/performance-hilo.component.d.ts +1 -1
- package/lib/reports/cube/performance-wind.component.d.ts +2 -2
- package/lib/reports/cube/usage-args.component.d.ts +3 -1
- package/lib/reports/cube/usage-base.d.ts +9 -7
- package/lib/reports/cube/usage-pivot.component.d.ts +1 -1
- package/lib/reports/report.mobile.component.d.ts +3 -1
- package/lib/search/cube.component.d.ts +1 -1
- package/lib/search/declarations.d.ts +2 -2
- package/lib/shared.module.d.ts +154 -153
- package/lib/views/cube/chart.component.d.ts +2 -2
- package/lib/views/cube/cube-base.d.ts +6 -6
- package/lib/views/cube/sum.component.d.ts +2 -2
- package/lib/views/timeline/timeline.component.d.ts +3 -2
- package/lib/views/views.component.d.ts +1 -1
- package/package.json +7 -7
- package/public-api.d.ts +3 -2
- package/assets/themes/readme.md +0 -0
- package/esm2022/lib/core/lottie-animation.mjs +0 -48
- package/esm2022/lib/home/options/options.component.mjs +0 -97
- package/esm2022/lib/options/options.service.mjs +0 -42
- package/lib/home/options/options.component.d.ts +0 -45
- package/lib/options/options.service.d.ts +0 -14
@@ -67,13 +67,15 @@ class InfoTool extends ToolBase {
|
|
67
67
|
this.tap = tap;
|
68
68
|
}
|
69
69
|
}
|
70
|
+
/** */
|
70
71
|
let DocumentTraceComponent = class DocumentTraceComponent {
|
71
72
|
getTool(action) {
|
72
73
|
let tool;
|
73
74
|
if (action === 'info') {
|
74
75
|
tool = new InfoTool(this.diagram, this._tap);
|
76
|
+
return tool;
|
75
77
|
}
|
76
|
-
return
|
78
|
+
return null;
|
77
79
|
}
|
78
80
|
/** workflow ctor */
|
79
81
|
constructor(_utilityRef, _service, _session, _pane, _router, _sb, _translate, _popup, _guide, _cd, _fb) {
|
@@ -90,7 +92,10 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
90
92
|
this._fb = _fb;
|
91
93
|
this.theme = this._session.theme.dark ? 'Material3Dark' : 'Material3';
|
92
94
|
this.accent = this._session.getAccent();
|
93
|
-
this.form = this._fb.group({
|
95
|
+
this.form = this._fb.group({
|
96
|
+
search: undefined,
|
97
|
+
formId: undefined
|
98
|
+
});
|
94
99
|
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
|
95
100
|
DiagramConstraints.LineRouting |
|
96
101
|
DiagramConstraints.Pan |
|
@@ -139,7 +144,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
139
144
|
this._destroy = new Subject();
|
140
145
|
this._dateschange = new Subject();
|
141
146
|
this.nodeDefaults = (node) => {
|
142
|
-
const { indicator
|
147
|
+
const { indicator } = node.addInfo || {};
|
143
148
|
if (indicator) {
|
144
149
|
node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
|
145
150
|
node.style.strokeWidth = 0,
|
@@ -154,7 +159,6 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
154
159
|
return node;
|
155
160
|
};
|
156
161
|
this.connDefaults = (connector) => {
|
157
|
-
const { virtual } = connector.addInfo || {};
|
158
162
|
connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
|
159
163
|
this._decorateConnector(connector);
|
160
164
|
};
|
@@ -269,7 +273,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
269
273
|
_timeline() {
|
270
274
|
const items = [], submissions = [];
|
271
275
|
let minDate, maxDate, estimate;
|
272
|
-
this.model.log
|
276
|
+
for (let l of this.model.log) {
|
273
277
|
const { time, userId } = l;
|
274
278
|
switch (l.type) {
|
275
279
|
case 'Submit':
|
@@ -285,7 +289,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
285
289
|
maxDate = time;
|
286
290
|
if (l.estimate)
|
287
291
|
estimate = true;
|
288
|
-
}
|
292
|
+
}
|
289
293
|
this.timeline = {
|
290
294
|
items, minDate, maxDate,
|
291
295
|
submissions, estimate
|
@@ -443,7 +447,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
443
447
|
this._router.collapse();
|
444
448
|
}
|
445
449
|
else
|
446
|
-
this.node =
|
450
|
+
this.node = undefined;
|
447
451
|
}
|
448
452
|
highlightTime(time) {
|
449
453
|
this.timeline.date = time;
|
@@ -456,7 +460,9 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
456
460
|
for (let i = 0; i < this.diagram.connectors.length; i++)
|
457
461
|
this._decorateConnector(this.diagram.connectors[i]);
|
458
462
|
}
|
459
|
-
const ids = this.timeline.log.
|
463
|
+
const ids = this.timeline.log.
|
464
|
+
filter(l => l.nodeId && l.time === time).
|
465
|
+
map(l => l.nodeId).
|
460
466
|
filter((v, i, a) => a.indexOf(v) === i);
|
461
467
|
this._highlight(ids);
|
462
468
|
this.diagram.dataBind();
|
@@ -495,17 +501,17 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
495
501
|
this._destroy.next();
|
496
502
|
this._destroy.complete();
|
497
503
|
}
|
498
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
499
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" } }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator, descendants: true }], ngImport: i0, template: "@switch (mode) {\n<!-- diagram -->\n @case ('diagram') {\n<div class=\"column flex\">\n <mat-toolbar>\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\n |\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\n </mat-toolbar>\n <div class=\"row flex\">\n <!-- timeline -->\n @if (timeline?.items.length > 1) {\n <div class=\"timeline\" data-help=\"timeline\">\n @for (date of timeline.items; track date; let last = $last) {\n <div class=\"item\"\n [class.active]=\"date.time === timeline.date\"\n (click)=\"highlightTime(date.time)\" matRipple>\n <div class=\"title\">\n @if (!last || !timeline.estimate) {\n @if (date.userId) {\n <span class=\"who\">\n {{date.userId | userName | async }}\n </span>\n }\n <br />\n <span class=\"time\">\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\n </span>\n } @else {\n {{'Estimate' | translate}}\n }\n </div>\n <div class=\"indicator-container\">\n <div class=\"indicator\"></div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"flex\" #diagram dir=\"ltr\">\n </div>\n </div>\n</div>\n }\n<!-- browse -->\n @default {\n<div class=\"flex column fill\">\n <mat-toolbar class=\"row\">\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\n </mat-toolbar>\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n <!-- table -->\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\n <!-- Number column -->\n <ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n </ng-container>\n <!-- Subject column -->\n <ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n </ng-container>\n <!-- StateId column -->\n <ng-container matColumnDef=\"stateId\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n </ng-container>\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\n (click)=\"open(item)\">\n </mat-row>\n </mat-table>\n <!-- range -->\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\n groupBy=\"Years\" intervalType='Months'\n (changed)='rangeChanged($event)'>\n <e-rangenavigator-series-collection>\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\n </e-rangenavigator-series>\n </e-rangenavigator-series-collection>\n </ejs-rangenavigator>\n</div>\n }\n}\n<!-- args -->\n<ng-template #args>\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\n </mat-form-field>\n </form>\n</ng-template>\n<ng-template #estimate>\n {{'Estimate' | translate}}\n</ng-template>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i10.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i11.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPlacement", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i11.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i11.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i17.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i18.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i20.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i21.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i23.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i24.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i26.UserNamePipe, name: "userName" }, { kind: "pipe", type: i27.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] }); }
|
504
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: i1.SystemService }, { token: i2.SessionService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.PromptService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.GuideService }, { token: i0.ChangeDetectorRef }, { token: i9.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
505
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" } }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator, descendants: true }], ngImport: i0, template: "@switch (mode) {\r\n<!-- diagram -->\r\n @case ('diagram') {\r\n<div class=\"column flex\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row flex\">\r\n <!-- timeline -->\r\n @if (timeline?.items.length > 1) {\r\n <div class=\"timeline\" data-help=\"timeline\">\r\n @for (date of timeline.items; track date; let last = $last) {\r\n <div class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n @if (!last || !timeline.estimate) {\r\n @if (date.userId) {\r\n <span class=\"who\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n }\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n } @else {\r\n {{'Estimate' | translate}}\r\n }\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n</div>\r\n }\r\n<!-- browse -->\r\n @default {\r\n<div class=\"flex column fill\">\r\n <mat-toolbar class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Months'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n</div>\r\n }\r\n}\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i10.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i11.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPlacement", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i11.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i11.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i17.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i18.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i20.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i21.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i23.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i24.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i26.UserNamePipe, name: "userName" }, { kind: "pipe", type: i27.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] }); }
|
500
506
|
};
|
501
507
|
DocumentTraceComponent = __decorate([
|
502
508
|
BizDoc({ selector: 'bizdoc-trace-utility' })
|
503
509
|
/** workflow component*/
|
504
510
|
], DocumentTraceComponent);
|
505
511
|
export { DocumentTraceComponent };
|
506
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
512
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DocumentTraceComponent, decorators: [{
|
507
513
|
type: Component,
|
508
|
-
args: [{ animations: [trigger('element', EnterExitRight)], template: "@switch (mode) {\n<!-- diagram -->\n @case ('diagram') {\n<div class=\"column flex\">\n <mat-toolbar>\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\n |\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\n </mat-toolbar>\n <div class=\"row flex\">\n <!-- timeline -->\n @if (timeline?.items.length > 1) {\n <div class=\"timeline\" data-help=\"timeline\">\n @for (date of timeline.items; track date; let last = $last) {\n <div class=\"item\"\n [class.active]=\"date.time === timeline.date\"\n (click)=\"highlightTime(date.time)\" matRipple>\n <div class=\"title\">\n @if (!last || !timeline.estimate) {\n @if (date.userId) {\n <span class=\"who\">\n {{date.userId | userName | async }}\n </span>\n }\n <br />\n <span class=\"time\">\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\n </span>\n } @else {\n {{'Estimate' | translate}}\n }\n </div>\n <div class=\"indicator-container\">\n <div class=\"indicator\"></div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"flex\" #diagram dir=\"ltr\">\n </div>\n </div>\n</div>\n }\n<!-- browse -->\n @default {\n<div class=\"flex column fill\">\n <mat-toolbar class=\"row\">\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\n </mat-toolbar>\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n <!-- table -->\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\n <!-- Number column -->\n <ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n </ng-container>\n <!-- Subject column -->\n <ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n </ng-container>\n <!-- StateId column -->\n <ng-container matColumnDef=\"stateId\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n </ng-container>\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\n (click)=\"open(item)\">\n </mat-row>\n </mat-table>\n <!-- range -->\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\n groupBy=\"Years\" intervalType='Months'\n (changed)='rangeChanged($event)'>\n <e-rangenavigator-series-collection>\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\n </e-rangenavigator-series>\n </e-rangenavigator-series-collection>\n </ejs-rangenavigator>\n</div>\n }\n}\n<!-- args -->\n<ng-template #args>\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\n </mat-form-field>\n </form>\n</ng-template>\n<ng-template #estimate>\n {{'Estimate' | translate}}\n</ng-template>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"] }]
|
514
|
+
args: [{ animations: [trigger('element', EnterExitRight)], template: "@switch (mode) {\r\n<!-- diagram -->\r\n @case ('diagram') {\r\n<div class=\"column flex\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row flex\">\r\n <!-- timeline -->\r\n @if (timeline?.items.length > 1) {\r\n <div class=\"timeline\" data-help=\"timeline\">\r\n @for (date of timeline.items; track date; let last = $last) {\r\n <div class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n @if (!last || !timeline.estimate) {\r\n @if (date.userId) {\r\n <span class=\"who\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n }\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n } @else {\r\n {{'Estimate' | translate}}\r\n }\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n</div>\r\n }\r\n<!-- browse -->\r\n @default {\r\n<div class=\"flex column fill\">\r\n <mat-toolbar class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Months'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n</div>\r\n }\r\n}\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"] }]
|
509
515
|
}], ctorParameters: () => [{ type: i28.UtilityRef, decorators: [{
|
510
516
|
type: Inject,
|
511
517
|
args: [UtilityRef]
|
@@ -528,4 +534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
528
534
|
type: HostListener,
|
529
535
|
args: ['window:keydown.f1', ['$event']]
|
530
536
|
}] } });
|
531
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0IsZUFBZSxFQUFzQyxtQkFBbUIsRUFDNUcsUUFBUSxFQUFFLE9BQU8sRUFBZ0UsWUFBWSxFQUFhLG9CQUFvQixFQUF5QyxxQkFBcUIsRUFDN0wsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxN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QUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBM2NVLHNCQUFzQixrQkE0RXZCLFVBQVU7a0dBNUVULHNCQUFzQixrYUFtRXRCLE9BQU8saUZBQ1AsY0FBYyxnREN2STNCLGluSkEyR0Esa3JNRDVDYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7O0FBSXJDLHNCQUFzQjtJQUZsQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM3Qyx3QkFBd0I7R0FDWCxzQkFBc0IsQ0E0Y2xDOzsyRkE1Y1ksc0JBQXNCO2tCQVBsQyxTQUFTO2lDQUdJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7MEJBZ0Y3QyxNQUFNOzJCQUFDLFVBQVU7c1RBM0VFLGNBQWM7c0JBQW5DLFNBQVM7dUJBQUMsU0FBUztnQkErREQsVUFBVTtzQkFBNUIsU0FBUzt1QkFBQyxNQUFNO2dCQUNJLFdBQVc7c0JBQS9CLFNBQVM7dUJBQUMsUUFBUTtnQkFFQyxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1MsY0FBYztzQkFBeEMsU0FBUzt1QkFBQyxjQUFjO2dCQWlFekIsS0FBSztzQkFESixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE9uSW5pdCwgT25EZXN0cm95LCBJbmplY3QsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHtcclxuICBEaWFncmFtQ29uc3RyYWludHMsIFBvaW50UG9ydE1vZGVsLCBOb2RlQ29uc3RyYWludHMsIFNjcm9sbFNldHRpbmdzTW9kZWwsIFNlbGVjdG9yTW9kZWwsIFNlbGVjdG9yQ29uc3RyYWludHMsXHJcbiAgVG9vbEJhc2UsIERpYWdyYW0sIE1vdXNlRXZlbnRBcmdzLCBDb25uZWN0b3JNb2RlbCwgTm9kZU1vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgRGlhZ3JhbVRvb2xzLCBUZXh0TW9kZWwsIENvbm5lY3RvckNvbnN0cmFpbnRzLCBJU2VsZWN0aW9uQ2hhbmdlRXZlbnRBcmdzLCBMYXllck1vZGVsLCBDb25uZWN0aW9uUG9pbnRPcmlnaW4sIExheW91dE1vZGVsXHJcbn0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgSUNoYW5nZWRFdmVudEFyZ3MsIFJhbmdlTmF2aWdhdG9yIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEd1aWRlU3RlcCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSAnLi4vdXRpbGl0eS1yZWYnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEluZm8sIFN5c3RlbVNlcnZpY2UsIFJhbmdlSW5mbyB9IGZyb20gJy4uL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlkZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2d1aWRlL2d1aWRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0b3JEYXRhLCBEaWFncmFtSW5mbywgTW92ZU1vZGVsLCBOb2RlRGF0YSwgVGltZWxpbmUgfSBmcm9tICcuL3RpbWVsaW5lJztcclxuaW1wb3J0IHsgRW50ZXJFeGl0UmlnaHQgfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnREYXRhLCBUcmFjZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL3RyYWNlLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcblxyXG5jb25zdCBXQVJOTklOR19QQVRIID0gJ00gMTMuNzYzNzM1LDEuODQzMzczNSBIIDYuMzAzNzM0OSBsIC01LjI3LDUuMjcgdiA3LjQ1OTk5OTUgbCA1LjI3LDUuMjcgaCA3LjQ2MDAwMDEgbCA1LjI3LC01LjI3IFYgNy4xMTMzNzM1IFogbSAtMy43MywxNC4yOTk5OTk1IGMgLTAuNzIwMDAwMSwwIC0xLjMwMDAwMDEsLTAuNTggLTEuMzAwMDAwMSwtMS4zIDAsLTAuNzIgMC41OCwtMS4zIDEuMzAwMDAwMSwtMS4zIDAuNzIsMCAxLjMsMC41OCAxLjMsMS4zIDAsMC43MiAtMC41OCwxLjMgLTEuMywxLjMgeiBtIDEsLTQuMyBIIDkuMDMzNzM0OSBWIDUuODQzMzczNSBoIDIuMDAwMDAwMSB6JyxcclxuICBKVU1QX1BBVEggPSAnTSA2LDE4IDE0LjUsMTIgNiw2IFogTSAxNiw2IHYgMTIgaCAyIFYgNiBaJztcclxuXHJcbmZ1bmN0aW9uIGdldFBvcnRzKCk6IFBvaW50UG9ydE1vZGVsW10ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7IGlkOiAncG9ydDEnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLCB5OiAwLjUgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQyJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAxIH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0MycsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDEsIHk6IDAuNSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDQnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDAgfSB9XHJcbiAgXTtcclxufVxyXG5cclxuY2xhc3MgSW5mb1Rvb2wgZXh0ZW5kcyBUb29sQmFzZSB7XHJcbiAgcHVibGljIG92ZXJyaWRlIG1vdXNlRG93bihhcmdzOiBNb3VzZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdO1xyXG4gICAgICBzdXBlci5tb3VzZURvd24oYXJncylcclxuICAgICAgdGhpcy50YXAubmV4dChub2RlKTtcclxuICAgICAgdGhpcy5pbkFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFncmFtOiBEaWFncmFtLCBwdWJsaWMgdGFwOiBTdWJqZWN0PE5vZGVNb2RlbD4pIHtcclxuICAgIHN1cGVyKGRpYWdyYW0uY29tbWFuZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoTW9kZWwge1xyXG4gIHNlYXJjaD86IHN0cmluZywgZm9ybUlkPzogc3RyaW5nXHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdlbGVtZW50JywgRW50ZXJFeGl0UmlnaHQpXVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdHJhY2UtdXRpbGl0eScgfSlcclxuLyoqIHdvcmtmbG93IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudFRyYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWdyYW0nKSBkaWFncmFtRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgdGhlbWUgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWwzRGFyaycgOiAnTWF0ZXJpYWwzJztcclxuICBhY2NlbnQgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwPFNlYXJjaE1vZGVsPih7IHNlYXJjaDogbnVsbCwgZm9ybUlkOiBudWxsIH0pO1xyXG4gIG1vZGVsOiBEaWFncmFtSW5mbztcclxuICB0aW1lbGluZTogVGltZWxpbmU7XHJcbiAgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPSBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8IERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuWm9vbTtcclxuICBkaWFncmFtVG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlNpbmdsZVNlbGVjdDtcclxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgZW5hYmxlUm91dGluZzogdHJ1ZSxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnQ2VudGVyJyxcclxuICAgIGNvbm5lY3Rpb25EaXJlY3Rpb246ICdPcmllbnRhdGlvbicsXHJcbiAgICBvcmllbnRhdGlvbjogJ1RvcFRvQm90dG9tJ1xyXG4gIH0gYXMgTGF5b3V0TW9kZWw7XHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzOiBTbmFwU2V0dGluZ3NNb2RlbCA9IHtcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzOiBTY3JvbGxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoODAwKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wcmltZXJ5Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldFByaW1lcnkoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtczogU2VsZWN0b3JNb2RlbCA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTZWxlY3RvckNvbnN0cmFpbnRzLlVzZXJIYW5kbGUsXHJcbiAgICB1c2VySGFuZGxlczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2luZm8nLFxyXG4gICAgICAgIHBhdGhEYXRhOiAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBzaWRlOiAnUmlnaHQnLFxyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnQm90dG9tJyxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgcGF0aENvbG9yOiB0aGlzLl9wcmltZXJ5Q29sb3IsXHJcbiAgICAgICAgc2l6ZTogNDAsXHJcbiAgICAgICAgbWFyZ2luOiB7IHRvcDogMCwgYm90dG9tOiAwLCBsZWZ0OiAwLCByaWdodDogMCB9XHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9O1xyXG4gIHB1YmxpYyBnZXRDdXN0b21Ub29sOiBGdW5jdGlvbiA9IHRoaXMuZ2V0VG9vbC5iaW5kKHRoaXMpO1xyXG4gIG5vZGU6IE5vZGVNb2RlbDtcclxuICBwcml2YXRlIF9zdGFydDogRGF0ZTtcclxuICBwcml2YXRlIF9lbmQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfaW5mb1JlZjogUGFuZVJlZjxUcmFjZUVsZW1lbnRDb21wb25lbnQ+O1xyXG4gIHB1YmxpYyBnZXRUb29sKGFjdGlvbjogc3RyaW5nKTogVG9vbEJhc2Uge1xyXG4gICAgbGV0IHRvb2w6IFRvb2xCYXNlO1xyXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2luZm8nKSB7XHJcbiAgICAgIHRvb2wgPSBuZXcgSW5mb1Rvb2wodGhpcy5kaWFncmFtLCB0aGlzLl90YXApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvb2w7XHJcbiAgfVxyXG4gIG1vZGU6ICdkaWFncmFtJyB8ICdicm93c2UnIHwgbnVsbCA9ICdicm93c2UnO1xyXG4gIHJhbmdlOiAoRGF0ZSB8IG51bWJlcilbXTtcclxuICByYW5nZURhdGE6IFJhbmdlSW5mb1tdO1xyXG4gIGxvYWRpbmc6IFByb2dyZXNzQmFyTW9kZSA9ICdxdWVyeSc7XHJcbiAgQFZpZXdDaGlsZCgnYXJncycpIGZpbHRlckFyZ3M6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoSW5wdXQ6IE1hdElucHV0O1xyXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxEb2N1bWVudEluZm8+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKFJhbmdlTmF2aWdhdG9yKSByYW5nZU5hdmlnYXRvcjogUmFuZ2VOYXZpZ2F0b3I7XHJcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyA9IFsnbnVtYmVyJywgJ3N1YmplY3QnLCAnc3RhdGVJZCddO1xyXG4gIHByaXZhdGUgX2hpZ2hMaWdodGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhcCA9IG5ldyBTdWJqZWN0PE5vZGVNb2RlbD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlc2NoYW5nZSA9IG5ldyBTdWJqZWN0PHsgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSB9PigpO1xyXG4gIC8qKiB3b3JrZmxvdyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFV0aWxpdHlSZWYpXHJcbiAgICBwcml2YXRlIF91dGlsaXR5UmVmOiBVdGlsaXR5UmVmPERpYWdyYW1JbmZvLCBNb3ZlTW9kZWwsIERpYWdyYW1JbmZvLCBudW1iZXI+LFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxEb2N1bWVudFRyYWNlQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsM0RhcmsnIDogJ01hdGVyaWFsMyc7XHJcbiAgICAgIHRoaXMuYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgLy90aGlzLnJhbmdlTmF2aWdhdG9yLnJlZnJlc2goKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VydmljZS5yYW5nZSgpLnN1YnNjcmliZShyID0+IHRoaXMucmFuZ2VEYXRhID0gcik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fc3RhcnQgPSByLnN0YXJ0LCB0aGlzLl9lbmQgPSByLmVuZDtcclxuICAgICAgdGhpcy5fbGlzdCgpO1xyXG4gICAgfSk7XHJcbiAgICAvL2xldCByID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYWNlLXJhbmdlJyk7XHJcblxyXG4gICAgdGhpcy5yYW5nZSA9IFtub3cuYWRkKC0yLCAndycpLnRvRGF0ZSgpLFxyXG4gICAgbm93LnRvRGF0ZSgpXTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgyMDApKS5cclxuICAgICAgc3Vic2NyaWJlKHRoaXMuX2xpc3QuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlKCkuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCB7IGRvY3VtZW50SWQgfSA9IHA7XHJcbiAgICAgIGRvY3VtZW50SWQgJiYgdGhpcy5fb3BlbigoZG9jdW1lbnRJZCBhcyBzdHJpbmcpLmRlY29kZUlkKCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLnJlc2l6ZWQoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMuZGlhZ3JhbT8ucmVmcmVzaCgpXHJcbiAgICApO1xyXG4gIH1cclxuICBvcGVuRmlsdGVyKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4odGhpcy5maWx0ZXJBcmdzLCBldnQudGFyZ2V0IGFzIEhUTUxCdXR0b25FbGVtZW50KS5vcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmZpbmRBbGwoeyAuLi50aGlzLmZvcm0udmFsdWUsIHN0YXJ0OiB0aGlzLl9zdGFydCwgZW5kOiB0aGlzLl9lbmQgfSkuc3Vic2NyaWJlKGwgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJhbmdlQ2hhbmdlZChhcmdzOiBJQ2hhbmdlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgLy9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJhY2UtcmFuZ2UnLCBhcmdzLik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5uZXh0KGFyZ3MgYXMgYW55KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy50aW1lbGluZSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lbGluZS5pdGVtcy5sZW5ndGggPiAxKVxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXRpbWVsaW5lXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVRpbWVsaW5lSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnZ1tpZF49c3RhcnRdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZUVsZW1lbnRIZWxwJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnVHJhY2VTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAndHJhY2UnLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGJyb3dzZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMubW9kZSA9ICdicm93c2UnO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnYnVmZmVyJztcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IGU7XHJcbiAgICAgICAgdGhpcy5fdGltZWxpbmUoKTtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnZGlhZ3JhbSc7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cyxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgIHRvb2w6IHRoaXMuZGlhZ3JhbVRvb2wsXHJcbiAgICAgICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLFxyXG4gICAgICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgICAgICBub2RlczogZS5kaWFncmFtLm5vZGVzLFxyXG4gICAgICAgICAgY29ubmVjdG9yczogZS5kaWFncmFtLmNvbm5lY3RvcnMsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2U6IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9LCB0aGlzLmRpYWdyYW1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuX3ZlcnNpb24oKTtcclxuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG5cclxuICAgICAgfSwgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAobm9kZTogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIGNvbnN0IHsgaW5kaWNhdG9yLCB2aXJ0dWFsIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZVdpZHRoID0gMCxcclxuICAgICAgICBub2RlLndpZHRoID0gbm9kZS5oZWlnaHQgPSAxNTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuaWQgIT09ICd2ZXJzaW9uJykge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkluQ29ubmVjdCB8IE5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0IHxcclxuICAgICAgICBOb2RlQ29uc3RyYWludHMuUG9pbnRlckV2ZW50cyB8IE5vZGVDb25zdHJhaW50cy5TZWxlY3Q7XHJcbiAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShub2RlKTtcclxuICAgICAgbm9kZS5wb3J0cyA9IGdldFBvcnRzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyA9IChjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSA9PiB7XHJcbiAgICBjb25zdCB7IHZpcnR1YWwgfSA9IGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckRhdGEgfHwge307XHJcbiAgICBjb25uZWN0b3IuY29uc3RyYWludHMgPSBDb25uZWN0b3JDb25zdHJhaW50cy5SZWFkT25seSAmIH5Db25uZWN0b3JDb25zdHJhaW50cy5TZWxlY3Q7XHJcblxyXG4gICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yKTtcclxuICB9XHJcbiAgb3BlbihpdGVtOiBEb2N1bWVudEluZm8pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogeyBkb2N1bWVudElkOiBpdGVtLmlkLmVuY29kZUlkKCkgfSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RpbWVsaW5lKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSBbXSwgc3VibWlzc2lvbnM6IERhdGVbXSA9IFtdO1xyXG4gICAgbGV0IG1pbkRhdGU6IERhdGUsIG1heERhdGU6IERhdGUsIGVzdGltYXRlOiBib29sZWFuO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgY29uc3QgeyB0aW1lLCB1c2VySWQgfSA9IGw7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3VibWl0JzpcclxuICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2godGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaXRlbXMuZmluZCh0ID0+IHQudGltZSA9PT0gdGltZSkpXHJcbiAgICAgICAgaXRlbXMucHVzaCh7IHRpbWUsIHVzZXJJZCB9KTtcclxuICAgICAgaWYgKCFtaW5EYXRlIHx8IGRheWpzKHRpbWUpLmlzQmVmb3JlKG1pbkRhdGUpKSBtaW5EYXRlID0gdGltZTtcclxuICAgICAgaWYgKCFtYXhEYXRlIHx8IGRheWpzKHRpbWUpLmlzQWZ0ZXIobWF4RGF0ZSkpIG1heERhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAobC5lc3RpbWF0ZSkgZXN0aW1hdGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRpbWVsaW5lID0ge1xyXG4gICAgICBpdGVtcywgbWluRGF0ZSwgbWF4RGF0ZSxcclxuICAgICAgc3VibWlzc2lvbnMsIGVzdGltYXRlXHJcbiAgICB9IGFzIGFueTtcclxuICAgIHRoaXMuX3Njb3BlKHN1Ym1pc3Npb25zW3N1Ym1pc3Npb25zLmxlbmd0aCAtIDFdKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9zY29wZShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLnJldmVyc2UoKS5cclxuICAgICAgZmluZChzID0+IHMgPD0gZGF0ZSksXHJcbiAgICAgIG5leHREYXRlID0gdGhpcy50aW1lbGluZS5zdWJtaXNzaW9ucy5maW5kKHMgPT4gcyA+IGRhdGUpLFxyXG4gICAgICBlbmREYXRlID0gbmV4dERhdGUgPyBuZXcgRGF0ZShuZXcgRGF0ZShuZXh0RGF0ZSkudmFsdWVPZigpIC0gMSkudG9KU09OKCkgYXMgYW55IDogdGhpcy50aW1lbGluZS5tYXhEYXRlO1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnRpbWVsaW5lLCB7XHJcbiAgICAgIHN0YXJ0RGF0ZSxcclxuICAgICAgZW5kRGF0ZSxcclxuICAgICAgcmVjaXBpZW50czogdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIucmVjZWl2ZWQgPj0gc3RhcnREYXRlICYmIHIucmVjZWl2ZWQgPD0gZW5kRGF0ZSksXHJcbiAgICAgIGxvZzogdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID49IHN0YXJ0RGF0ZSAmJiBsLnRpbWUgPD0gZW5kRGF0ZSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbmRpY2F0b3JzKCkge1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXTtcclxuICAgIHRoaXMubW9kZWwubG9nLmZvckVhY2gobCA9PiB7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTm9kZSc6XHJcbiAgICAgICAgICBpZiAobC5lcnJvcilcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdCb3R0b21DZW50ZXInXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbC5ub2RlSWRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTm9kZUp1bXAnOlxyXG4gICAgICAgICAgLy9pbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgLy8gIHNoYXBlOiB7XHJcbiAgICAgICAgICAvLyAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAvLyAgICBkYXRhOiBKVU1QX1BBVEgsXHJcbiAgICAgICAgICAvLyAgICBhbGlnbjogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgc3R5bGU6IHtcclxuICAgICAgICAgIC8vICAgIGZpbGw6ICdibGFjaydcclxuICAgICAgICAgIC8vICB9LFxyXG4gICAgICAgICAgLy8gIGFkZEluZm86IHtcclxuICAgICAgICAgIC8vICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgIC8vICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgLy8gIH1cclxuICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoJ2luZGljYXRvcnMnKTtcclxuICAgIGluZGljYXRvcnMuZm9yRWFjaChpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKGkuYWRkSW5mbyBhcyBOb2RlRGF0YSkucGFyZW50SWQpO1xyXG4gICAgICBpLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCArIHBhcmVudC53aWR0aCAvIDIgLSAxNSxcclxuICAgICAgICBpLm9mZnNldFkgPSBwYXJlbnQub2Zmc2V0WSArIHBhcmVudC5oZWlnaHQgLyAyIC0gMTU7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQoaSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7IGlkOiAnaW5kaWNhdG9ycycgfSwgaW5kaWNhdG9ycyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlY29yYXRlTm9kZShub2RlOiBOb2RlTW9kZWwpIHtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gdGhpcy50aW1lbGluZS5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9IHJlY2lwaWVudHMuZmluZChyID0+IHIucGVuZGluZyAmJiAhci5lc3RpbWF0ZSkgPyB0aGlzLl9hY2NlbnRDb2xvciA6ICd3aGl0ZSc7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9ICd3aGl0ZScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VDb2xvciA9ICdkYXJrZ3JheScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnNiAyJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy50aW1lbGluZS5sb2cuZmlsdGVyKGwgPT4gbC5zb3VyY2VJZCA9PT0gY29ubmVjdG9yLnNvdXJjZUlEICYmIGwudGFyZ2V0SWQgPT0gY29ubmVjdG9yLnRhcmdldElEKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID1cclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9IGxvZy5maW5kKGwgPT4gbC5lc3RpbWF0ZSkgPyAnMyAyJyA6ICcnO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gJzYgMic7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZlcnNpb24oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoXHJcbiAgICAgICd2ZXJzaW9uJyk7XHJcbiAgICBjb25zdCB2ZXJzaW9uID0ge1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBzaGFwZToge1xyXG4gICAgICAgIHR5cGU6ICdUZXh0JyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEaWFncmFtVmVyc2lvbicsIHRoaXMubW9kZWwuZGlhZ3JhbS52ZXJzaW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBvZmZzZXRZOiA1LFxyXG4gICAgICBvZmZzZXRYOiA1LFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGZvbnRTaXplOiA1MCxcclxuICAgICAgICBvcGFjaXR5OiAuMVxyXG4gICAgICB9LFxyXG4gICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLlJlYWRPbmx5XHJcbiAgICB9IGFzIFRleHRNb2RlbDtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIG9iamVjdHM6IFtcclxuICAgICAgICB2ZXJzaW9uXVxyXG4gICAgfSBhcyBMYXllck1vZGVsKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGQodmVyc2lvbik7XHJcbiAgfVxyXG4gIHNlbGVjdGlvbkNoYW5nZShldnQ6IElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MpIHtcclxuICAgIGlmIChldnQuc3RhdGUgIT09ICdDaGFuZ2VkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5fdW5oaWdobGlnaHQoKTtcclxuICAgIGlmIChldnQubmV3VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gZXZ0Lm5ld1ZhbHVlWzBdIGFzIE5vZGVNb2RlbDtcclxuXHJcbiAgICAgIGNvbnN0IHsgaW5kaWNhdG9yLCBwYXJlbnRJZCB9ID0gbm9kZS5hZGRJbmZvIGFzIE5vZGVEYXRhIHx8IHt9O1xyXG5cclxuICAgICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdChwYXJlbnRJZCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLnNlbGVjdChbbm9kZV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9ICgobm9kZSBhcyBhbnkpLmluRWRnZXMpLmNvbmNhdCgobm9kZSBhcyBhbnkpLm91dEVkZ2VzKTtcclxuICAgICAgICBpZHMucHVzaChub2RlLmlkKTtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHQoaWRzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICBpZiAodGhpcy5faW5mb1JlZikgdGhpcy5faW5mb1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShUcmFjZUVsZW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgIHRpbWVsaW5lOiB0aGlzLnRpbWVsaW5lLFxyXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcclxuICAgICAgICAgICAgdXRpbGl0eVJlZjogdGhpcy5fdXRpbGl0eVJlZixcclxuICAgICAgICAgIH0gYXMgRWxlbWVudERhdGEsXHJcbiAgICAgICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuVGFiXHJcbiAgICAgICAgfSkudGhlbigoZTogUGFuZVJlZikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faW5mb1JlZiA9IGU7XHJcbiAgICAgICAgICBlLmFuaW1hdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgdGhpcy5fcm91dGVyLmNvbGxhcHNlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubm9kZSA9IG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyBoaWdobGlnaHRUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZWxpbmUuZGF0ZSA9IHRpbWU7XHJcbiAgICB0aGlzLmRpYWdyYW0uY2xlYXJTZWxlY3Rpb24oKTtcclxuICAgIHRoaXMuX3VuaGlnaGxpZ2h0KCk7XHJcbiAgICBpZiAodGltZSA8IHRoaXMudGltZWxpbmUuc3RhcnREYXRlIHx8IHRpbWUgPiB0aGlzLnRpbWVsaW5lLmVuZERhdGUpIHtcclxuICAgICAgdGhpcy5fc2NvcGUodGltZSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaWFncmFtLm5vZGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZSh0aGlzLmRpYWdyYW0ubm9kZXNbaV0pO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCAmJiBsLnRpbWUgPT09IHRpbWUpLm1hcChsID0+IGwubm9kZUlkKS5cclxuICAgICAgZmlsdGVyKCh2LCBpLCBhKSA9PiBhLmluZGV4T2YodikgPT09IGkpO1xyXG5cclxuICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG5cclxuICBwYW4oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgfCBEaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICB9XHJcbiAgY3Vyc29yKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzICYgfkRpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5TaW5nbGVTZWxlY3Q7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodChpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KGlkc1tpXSkgYXMgYW55O1xyXG4gICAgICBpZiAob2JqLnNvdXJjZUlEKVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgICBvYmoudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICAgIG9iai50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5oaWdobGlnaHQoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSB0aGlzLl9oaWdoTGlnaHRlZElkcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KHRoaXMuX2hpZ2hMaWdodGVkSWRzW2ldKSBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmouc291cmNlSUQpXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3Iob2JqKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShvYmopO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBbXTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiQHN3aXRjaCAobW9kZSkge1xuPCEtLSBkaWFncmFtIC0tPlxuICBAY2FzZSAoJ2RpYWdyYW0nKSB7XG48ZGl2IGNsYXNzPVwiY29sdW1uIGZsZXhcIj5cbiAgPG1hdC10b29sYmFyPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJicm93c2UoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidCYWNrJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgICB8XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInBhbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1BhbicgfCB0cmFuc2xhdGVcIj48c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1wYW5cIj48L3NwYW4+PC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImN1cnNvcigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0N1cnNvcicgfCB0cmFuc2xhdGVcIj48c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1jdXJzb3JcIj48L3NwYW4+PC9idXR0b24+XG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJndWlkZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPmhlbHBfb3V0bGluZTwvbWF0LWljb24+PC9idXR0b24+XG4gIDwvbWF0LXRvb2xiYXI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgZmxleFwiPlxuICAgIDwhLS0gdGltZWxpbmUgLS0+XG4gICAgQGlmICh0aW1lbGluZT8uaXRlbXMubGVuZ3RoID4gMSkge1xuICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZVwiIGRhdGEtaGVscD1cInRpbWVsaW5lXCI+XG4gICAgICBAZm9yIChkYXRlIG9mIHRpbWVsaW5lLml0ZW1zOyB0cmFjayBkYXRlOyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF0ZS50aW1lID09PSB0aW1lbGluZS5kYXRlXCJcbiAgICAgICAgICAgKGNsaWNrKT1cImhpZ2hsaWdodFRpbWUoZGF0ZS50aW1lKVwiIG1hdFJpcHBsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgQGlmICghbGFzdCB8fCAhdGltZWxpbmUuZXN0aW1hdGUpIHtcbiAgICAgICAgICBAaWYgKGRhdGUudXNlcklkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aG9cIj5cbiAgICAgICAgICAgIHt7ZGF0ZS51c2VySWQgfCB1c2VyTmFtZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj5cbiAgICAgICAgICAgIHt7ZGF0ZS50aW1lIHwgYW1EYXRlRm9ybWF0OiAnTU1NIERvIEg6bW0nIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7J0VzdGltYXRlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvci1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCIgI2RpYWdyYW0gZGlyPVwibHRyXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4gIH1cbjwhLS0gYnJvd3NlIC0tPlxuICBAZGVmYXVsdCB7XG48ZGl2IGNsYXNzPVwiZmxleCBjb2x1bW4gZmlsbFwiPlxuICA8bWF0LXRvb2xiYXIgY2xhc3M9XCJyb3dcIj5cbiAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5GaWx0ZXIoJGV2ZW50KVwiIFtiaXpkb2NUb29sdGlwXT1cIidGaWx0ZXInfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XG4gIDwvbWF0LXRvb2xiYXI+XG4gIDxtYXQtcHJvZ3Jlc3MtYmFyIFttb2RlXT1cImxvYWRpbmdcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8IS0tIHRhYmxlIC0tPlxuICA8bWF0LXRhYmxlIGNsYXNzPVwiZmxleFwiIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxuICAgIDwhLS0gTnVtYmVyIGNvbHVtbiAtLT5cbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm51bWJlclwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snTnVtYmVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLm51bWJlcn19IDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBTdWJqZWN0IGNvbHVtbiAtLT5cbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YmplY3RcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPiB7e2l0ZW0uc3ViamVjdH19IDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0YXRlSWRcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPVwic3RhdGVJZFwiPnt7J1N0YXR1cycgfCB0cmFuc2xhdGUgfX08L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxuICAgICAgICA8Yml6ZG9jLXN0YXR1cyBbc3RhdGVJZF09XCJpdGVtLnN0YXRlSWRcIj48L2JpemRvYy1zdGF0dXM+XG4gICAgICA8L21hdC1jZWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGl0ZW07IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxuICAgIDwvbWF0LXJvdz5cbiAgPC9tYXQtdGFibGU+XG4gIDwhLS0gcmFuZ2UgLS0+XG4gIDxlanMtcmFuZ2VuYXZpZ2F0b3IgdmFsdWVUeXBlPSdEYXRlVGltZScgW3ZhbHVlXT1yYW5nZSBsYWJlbEZvcm1hdD0nTU1NJyBiYWNrZ3JvdW5kPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aGVtZV09XCJ0aGVtZVwiIGxhYmVsSW50ZXJzZWN0QWN0aW9uPSdIaWRlJyBlbmFibGVHcm91cGluZz1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J01vbnRocydcbiAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZCk9J3JhbmdlQ2hhbmdlZCgkZXZlbnQpJz5cbiAgICA8ZS1yYW5nZW5hdmlnYXRvci1zZXJpZXMtY29sbGVjdGlvbj5cbiAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcyBbZGF0YVNvdXJjZV09J3JhbmdlRGF0YScgW2ZpbGxdPVwiYWNjZW50XCIgdHlwZT0nQXJlYScgeE5hbWU9J2RhdGUnIHlOYW1lPSdjb3VudCcgd2lkdGg9Mj5cbiAgICAgIDwvZS1yYW5nZW5hdmlnYXRvci1zZXJpZXM+XG4gICAgPC9lLXJhbmdlbmF2aWdhdG9yLXNlcmllcy1jb2xsZWN0aW9uPlxuICA8L2Vqcy1yYW5nZW5hdmlnYXRvcj5cbjwvZGl2PlxuICB9XG59XG48IS0tIGFyZ3MgLS0+XG48bmctdGVtcGxhdGUgI2FyZ3M+XG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uIGdhcFwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInNlYXJjaFwiICNzZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgW3BsYWNlaG9sZGVyXT1cIidOdW1iZXInfHRyYW5zbGF0ZVwiIC8+XG4gICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPGJpemRvYy1zZWxlY3QgdHlwZT1cImZvcm1zXCIgW3BsYWNlaG9sZGVyXT1cIidGb3JtJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtSWRcIj48L2JpemRvYy1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZXN0aW1hdGU+XG4gIHt7J0VzdGltYXRlJyB8IHRyYW5zbGF0ZX19XG48L25nLXRlbXBsYXRlPlxuIl19
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQ0wsa0JBQWtCLEVBQWtCLGVBQWUsRUFBc0MsbUJBQW1CLEVBQzVHLFFBQVEsRUFBRSxPQUFPLEVBQWdFLFlBQVksRUFBYSxvQkFBb0IsRUFBeUMscUJBQXFCLEVBQzdMLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFB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LFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXJkVSxzQkFBc0Isa0JBZ0Z2QixVQUFVO2tHQWhGVCxzQkFBc0Isa2FBdUV0QixPQUFPLGlGQUNQLGNBQWMsZ0RDNUkzQix1MEpBMkdBLGtyTUQzQ2MsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDOztBQUlyQyxzQkFBc0I7SUFGbEMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0Msd0JBQXdCO0dBQ1gsc0JBQXNCLENBc2RsQzs7MkZBdGRZLHNCQUFzQjtrQkFQbEMsU0FBUztpQ0FHSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7OzBCQW9GN0MsTUFBTTsyQkFBQyxVQUFVO3NUQS9FRSxjQUFjO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBbUVELFVBQVU7c0JBQTVCLFNBQVM7dUJBQUMsTUFBTTtnQkFDSSxXQUFXO3NCQUEvQixTQUFTO3VCQUFDLFFBQVE7Z0JBRUMsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLGNBQWM7c0JBQXhDLFNBQVM7dUJBQUMsY0FBYztnQkFpRXpCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUNvbnN0cmFpbnRzLCBQb2ludFBvcnRNb2RlbCwgTm9kZUNvbnN0cmFpbnRzLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTZWxlY3Rvck1vZGVsLCBTZWxlY3RvckNvbnN0cmFpbnRzLFxyXG4gIFRvb2xCYXNlLCBEaWFncmFtLCBNb3VzZUV2ZW50QXJncywgQ29ubmVjdG9yTW9kZWwsIE5vZGVNb2RlbCwgU25hcFNldHRpbmdzTW9kZWwsIERpYWdyYW1Ub29scywgVGV4dE1vZGVsLCBDb25uZWN0b3JDb25zdHJhaW50cywgSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncywgTGF5ZXJNb2RlbCwgQ29ubmVjdGlvblBvaW50T3JpZ2luLCBMYXlvdXRNb2RlbFxyXG59IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1kaWFncmFtcyc7XHJcbmltcG9ydCB7IElDaGFuZ2VkRXZlbnRBcmdzLCBSYW5nZU5hdmlnYXRvciB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1jaGFydHMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBnZXRXYXJuIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBHdWlkZVN0ZXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gJy4uL3V0aWxpdHktcmVmJztcclxuaW1wb3J0IHsgRG9jdW1lbnRJbmZvLCBTeXN0ZW1TZXJ2aWNlLCBSYW5nZUluZm8gfSBmcm9tICcuLi9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ndWlkZS9ndWlkZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhZ3JhbUluZm8sIE1vdmVNb2RlbCwgTm9kZURhdGEsIFRpbWVsaW5lIH0gZnJvbSAnLi90aW1lbGluZSc7XHJcbmltcG9ydCB7IEVudGVyRXhpdFJpZ2h0IH0gZnJvbSAnLi4vLi4vY29yZS9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi8uLi9jb3JlL3BvcHVwL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50RGF0YSwgVHJhY2VFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi90cmFjZS1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5cclxuY29uc3QgV0FSTk5JTkdfUEFUSCA9ICdNIDEzLjc2MzczNSwxLjg0MzM3MzUgSCA2LjMwMzczNDkgbCAtNS4yNyw1LjI3IHYgNy40NTk5OTk1IGwgNS4yNyw1LjI3IGggNy40NjAwMDAxIGwgNS4yNywtNS4yNyBWIDcuMTEzMzczNSBaIG0gLTMuNzMsMTQuMjk5OTk5NSBjIC0wLjcyMDAwMDEsMCAtMS4zMDAwMDAxLC0wLjU4IC0xLjMwMDAwMDEsLTEuMyAwLC0wLjcyIDAuNTgsLTEuMyAxLjMwMDAwMDEsLTEuMyAwLjcyLDAgMS4zLDAuNTggMS4zLDEuMyAwLDAuNzIgLTAuNTgsMS4zIC0xLjMsMS4zIHogbSAxLC00LjMgSCA5LjAzMzczNDkgViA1Ljg0MzM3MzUgaCAyLjAwMDAwMDEgeicsXHJcbiAgSlVNUF9QQVRIID0gJ00gNiwxOCAxNC41LDEyIDYsNiBaIE0gMTYsNiB2IDEyIGggMiBWIDYgWic7XHJcblxyXG5mdW5jdGlvbiBnZXRQb3J0cygpOiBQb2ludFBvcnRNb2RlbFtdIHtcclxuICByZXR1cm4gW1xyXG4gICAgeyBpZDogJ3BvcnQxJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMCwgeTogMC41IH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0MicsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDMnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAxLCB5OiAwLjUgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQ0Jywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAwIH0gfVxyXG4gIF07XHJcbn1cclxuXHJcbmNsYXNzIEluZm9Ub29sIGV4dGVuZHMgVG9vbEJhc2Uge1xyXG4gIHB1YmxpYyBvdmVycmlkZSBtb3VzZURvd24oYXJnczogTW91c2VFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2RlcyEubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMhWzBdO1xyXG4gICAgICBzdXBlci5tb3VzZURvd24oYXJncylcclxuICAgICAgdGhpcy50YXAubmV4dChub2RlKTtcclxuICAgICAgdGhpcy5pbkFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFncmFtOiBEaWFncmFtLCBwdWJsaWMgdGFwOiBTdWJqZWN0PE5vZGVNb2RlbD4pIHtcclxuICAgIHN1cGVyKGRpYWdyYW0uY29tbWFuZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoTW9kZWwge1xyXG4gIHNlYXJjaD86IHN0cmluZywgZm9ybUlkPzogc3RyaW5nXHJcbn1cclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbdHJpZ2dlcignZWxlbWVudCcsIEVudGVyRXhpdFJpZ2h0KV1cclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXRyYWNlLXV0aWxpdHknIH0pXHJcbi8qKiB3b3JrZmxvdyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRUcmFjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtJykgZGlhZ3JhbUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHRoZW1lID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsM0RhcmsnIDogJ01hdGVyaWFsMyc7XHJcbiAgYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cDxTZWFyY2hNb2RlbD4oe1xyXG4gICAgc2VhcmNoOiB1bmRlZmluZWQsXHJcbiAgICBmb3JtSWQ6IHVuZGVmaW5lZFxyXG4gIH0pO1xyXG4gIG1vZGVsOiBEaWFncmFtSW5mbztcclxuICB0aW1lbGluZTogVGltZWxpbmU7XHJcbiAgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPSBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8IERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuWm9vbTtcclxuICBkaWFncmFtVG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlNpbmdsZVNlbGVjdDtcclxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgZW5hYmxlUm91dGluZzogdHJ1ZSxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnQ2VudGVyJyxcclxuICAgIGNvbm5lY3Rpb25EaXJlY3Rpb246ICdPcmllbnRhdGlvbicsXHJcbiAgICBvcmllbnRhdGlvbjogJ1RvcFRvQm90dG9tJ1xyXG4gIH0gYXMgTGF5b3V0TW9kZWw7XHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzOiBTbmFwU2V0dGluZ3NNb2RlbCA9IHtcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzOiBTY3JvbGxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoODAwKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wcmltZXJ5Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldFByaW1lcnkoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtczogU2VsZWN0b3JNb2RlbCA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTZWxlY3RvckNvbnN0cmFpbnRzLlVzZXJIYW5kbGUsXHJcbiAgICB1c2VySGFuZGxlczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2luZm8nLFxyXG4gICAgICAgIHBhdGhEYXRhOiAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBzaWRlOiAnUmlnaHQnLFxyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnQm90dG9tJyxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgcGF0aENvbG9yOiB0aGlzLl9wcmltZXJ5Q29sb3IsXHJcbiAgICAgICAgc2l6ZTogNDAsXHJcbiAgICAgICAgbWFyZ2luOiB7IHRvcDogMCwgYm90dG9tOiAwLCBsZWZ0OiAwLCByaWdodDogMCB9XHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9O1xyXG4gIHB1YmxpYyBnZXRDdXN0b21Ub29sOiBGdW5jdGlvbiA9IHRoaXMuZ2V0VG9vbC5iaW5kKHRoaXMpO1xyXG4gIG5vZGU/OiBOb2RlTW9kZWw7XHJcbiAgcHJpdmF0ZSBfc3RhcnQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfZW5kOiBEYXRlO1xyXG4gIHByaXZhdGUgX2luZm9SZWY6IFBhbmVSZWY8VHJhY2VFbGVtZW50Q29tcG9uZW50PjtcclxuICBwdWJsaWMgZ2V0VG9vbChhY3Rpb246IHN0cmluZyk6IFRvb2xCYXNlIHwgbnVsbHtcclxuICAgIGxldCB0b29sOiBUb29sQmFzZTtcclxuICAgIGlmIChhY3Rpb24gPT09ICdpbmZvJykge1xyXG4gICAgICB0b29sID0gbmV3IEluZm9Ub29sKHRoaXMuZGlhZ3JhbSwgdGhpcy5fdGFwKTtcclxuICAgICAgcmV0dXJuIHRvb2w7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgbW9kZTogJ2RpYWdyYW0nIHwgJ2Jyb3dzZScgfCBudWxsID0gJ2Jyb3dzZSc7XHJcbiAgcmFuZ2U6IChEYXRlIHwgbnVtYmVyKVtdO1xyXG4gIHJhbmdlRGF0YTogUmFuZ2VJbmZvW107XHJcbiAgbG9hZGluZzogUHJvZ3Jlc3NCYXJNb2RlIHwgbnVsbCA9ICdxdWVyeSc7XHJcbiAgQFZpZXdDaGlsZCgnYXJncycpIGZpbHRlckFyZ3M6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoSW5wdXQ6IE1hdElucHV0O1xyXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxEb2N1bWVudEluZm8+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKFJhbmdlTmF2aWdhdG9yKSByYW5nZU5hdmlnYXRvcjogUmFuZ2VOYXZpZ2F0b3I7XHJcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyA9IFsnbnVtYmVyJywgJ3N1YmplY3QnLCAnc3RhdGVJZCddO1xyXG4gIHByaXZhdGUgX2hpZ2hMaWdodGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhcCA9IG5ldyBTdWJqZWN0PE5vZGVNb2RlbD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlc2NoYW5nZSA9IG5ldyBTdWJqZWN0PHsgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSB9PigpO1xyXG4gIC8qKiB3b3JrZmxvdyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFV0aWxpdHlSZWYpXHJcbiAgICBwcml2YXRlIF91dGlsaXR5UmVmOiBVdGlsaXR5UmVmPERpYWdyYW1JbmZvLCBNb3ZlTW9kZWwsIERpYWdyYW1JbmZvLCBudW1iZXI+LFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxEb2N1bWVudFRyYWNlQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsM0RhcmsnIDogJ01hdGVyaWFsMyc7XHJcbiAgICAgIHRoaXMuYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgLy90aGlzLnJhbmdlTmF2aWdhdG9yLnJlZnJlc2goKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VydmljZS5yYW5nZSgpLnN1YnNjcmliZShyID0+IHRoaXMucmFuZ2VEYXRhID0gcik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fc3RhcnQgPSByLnN0YXJ0LCB0aGlzLl9lbmQgPSByLmVuZDtcclxuICAgICAgdGhpcy5fbGlzdCgpO1xyXG4gICAgfSk7XHJcbiAgICAvL2xldCByID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYWNlLXJhbmdlJyk7XHJcblxyXG4gICAgdGhpcy5yYW5nZSA9IFtub3cuYWRkKC0yLCAndycpLnRvRGF0ZSgpLFxyXG4gICAgbm93LnRvRGF0ZSgpXTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgyMDApKS5cclxuICAgICAgc3Vic2NyaWJlKHRoaXMuX2xpc3QuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlKCkuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCB7IGRvY3VtZW50SWQgfSA9IHA7XHJcbiAgICAgIGRvY3VtZW50SWQgJiYgdGhpcy5fb3BlbigoZG9jdW1lbnRJZCBhcyBzdHJpbmcpLmRlY29kZUlkKCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLnJlc2l6ZWQoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMuZGlhZ3JhbT8ucmVmcmVzaCgpXHJcbiAgICApO1xyXG4gIH1cclxuICBvcGVuRmlsdGVyKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4odGhpcy5maWx0ZXJBcmdzLCBldnQudGFyZ2V0IGFzIEhUTUxCdXR0b25FbGVtZW50KS5vcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmZpbmRBbGwoeyAuLi50aGlzLmZvcm0udmFsdWUsIHN0YXJ0OiB0aGlzLl9zdGFydCwgZW5kOiB0aGlzLl9lbmQgfSkuc3Vic2NyaWJlKGwgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJhbmdlQ2hhbmdlZChhcmdzOiBJQ2hhbmdlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgLy9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJhY2UtcmFuZ2UnLCBhcmdzLik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5uZXh0KGFyZ3MgYXMgYW55KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy50aW1lbGluZSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lbGluZS5pdGVtcy5sZW5ndGggPiAxKVxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXRpbWVsaW5lXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVRpbWVsaW5lSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnZ1tpZF49c3RhcnRdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZUVsZW1lbnRIZWxwJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnVHJhY2VTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAndHJhY2UnLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGJyb3dzZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMubW9kZSA9ICdicm93c2UnO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnYnVmZmVyJztcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IGU7XHJcbiAgICAgICAgdGhpcy5fdGltZWxpbmUoKTtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnZGlhZ3JhbSc7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cyxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgIHRvb2w6IHRoaXMuZGlhZ3JhbVRvb2wsXHJcbiAgICAgICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLFxyXG4gICAgICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgICAgICBub2RlczogZS5kaWFncmFtLm5vZGVzLFxyXG4gICAgICAgICAgY29ubmVjdG9yczogZS5kaWFncmFtLmNvbm5lY3RvcnMsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2U6IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9LCB0aGlzLmRpYWdyYW1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuX3ZlcnNpb24oKTtcclxuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG5cclxuICAgICAgfSwgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAobm9kZTogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIGNvbnN0IHsgaW5kaWNhdG9yIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICBub2RlLnN0eWxlIS5zdHJva2VXaWR0aCA9IDAsXHJcbiAgICAgICAgbm9kZS53aWR0aCA9IG5vZGUuaGVpZ2h0ID0gMTU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLmlkICE9PSAndmVyc2lvbicpIHtcclxuICAgICAgbm9kZS5jb25zdHJhaW50cyA9IE5vZGVDb25zdHJhaW50cy5JbkNvbm5lY3QgfCBOb2RlQ29uc3RyYWludHMuT3V0Q29ubmVjdCB8XHJcbiAgICAgICAgTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuU2VsZWN0O1xyXG4gICAgICB0aGlzLl9kZWNvcmF0ZU5vZGUobm9kZSk7XHJcbiAgICAgIG5vZGUucG9ydHMgPSBnZXRQb3J0cygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMgPSAoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkgPT4ge1xyXG4gICAgY29ubmVjdG9yLmNvbnN0cmFpbnRzID0gQ29ubmVjdG9yQ29uc3RyYWludHMuUmVhZE9ubHkgJiB+Q29ubmVjdG9yQ29uc3RyYWludHMuU2VsZWN0O1xyXG5cclxuICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKGNvbm5lY3Rvcik7XHJcbiAgfVxyXG4gIG9wZW4oaXRlbTogRG9jdW1lbnRJbmZvKSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHsgcXVlcnlQYXJhbXM6IHsgZG9jdW1lbnRJZDogaXRlbS5pZC5lbmNvZGVJZCgpIH0gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90aW1lbGluZSgpIHtcclxuICAgIGNvbnN0IGl0ZW1zIDp7XHJcbiAgICAgIHRpbWU/OiBEYXRlO1xyXG4gICAgdXNlcklkID86IHN0cmluZztcclxuICAgIHN0YXRlID86IHN0cmluZztcclxuICB9IFtdID0gW10sIHN1Ym1pc3Npb25zOiBEYXRlW10gPSBbXTtcclxuICAgIGxldCBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkLCBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkLCBlc3RpbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAgIGZvcihsZXQgbCBvZiBcclxuICAgICAgdGhpcy5tb2RlbC5sb2cpIHtcclxuICAgICAgY29uc3QgeyB0aW1lLCB1c2VySWQgfSA9IGw7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3VibWl0JzpcclxuICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2godGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaXRlbXMuZmluZCh0ID0+IHQudGltZSA9PT0gdGltZSkpXHJcbiAgICAgICAgaXRlbXMucHVzaCh7IHRpbWUsIHVzZXJJZCB9KTtcclxuICAgICAgaWYgKCFtaW5EYXRlIHx8IGRheWpzKHRpbWUpLmlzQmVmb3JlKG1pbkRhdGUpKSBtaW5EYXRlID0gdGltZTtcclxuICAgICAgaWYgKCFtYXhEYXRlIHx8IGRheWpzKHRpbWUpLmlzQWZ0ZXIobWF4RGF0ZSkpIG1heERhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAobC5lc3RpbWF0ZSkgZXN0aW1hdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy50aW1lbGluZSA9IHtcclxuICAgICAgaXRlbXMsIG1pbkRhdGUsIG1heERhdGUsXHJcbiAgICAgIHN1Ym1pc3Npb25zLCBlc3RpbWF0ZVxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICB0aGlzLl9zY29wZShzdWJtaXNzaW9uc1tzdWJtaXNzaW9ucy5sZW5ndGggLSAxXSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkYXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2NvcGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy50aW1lbGluZS5zdWJtaXNzaW9ucy5yZXZlcnNlKCkuXHJcbiAgICAgIGZpbmQocyA9PiBzIDw9IGRhdGUpISxcclxuICAgICAgbmV4dERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLmZpbmQocyA9PiBzID4gZGF0ZSksXHJcbiAgICAgIGVuZERhdGUgPSBuZXh0RGF0ZSA/IG5ldyBEYXRlKG5ldyBEYXRlKG5leHREYXRlKS52YWx1ZU9mKCkgLSAxKS50b0pTT04oKSBhcyBhbnkgOiB0aGlzLnRpbWVsaW5lLm1heERhdGU7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMudGltZWxpbmUsIHtcclxuICAgICAgc3RhcnREYXRlLFxyXG4gICAgICBlbmREYXRlLFxyXG4gICAgICByZWNpcGllbnRzOiB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5yZWNlaXZlZCA+PSBzdGFydERhdGUgJiYgci5yZWNlaXZlZCA8PSBlbmREYXRlKSxcclxuICAgICAgbG9nOiB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLnRpbWUgPj0gc3RhcnREYXRlICYmIGwudGltZSA8PSBlbmREYXRlKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljYXRvcnMoKSB7XHJcbiAgICBjb25zdCBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdOb2RlJzpcclxuICAgICAgICAgIGlmIChsLmVycm9yKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBXQVJOTklOR19QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246ICdYTWluWU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGwuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0JvdHRvbUNlbnRlcidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdOb2RlSnVtcCc6XHJcbiAgICAgICAgICAvL2luZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAvLyAgc2hhcGU6IHtcclxuICAgICAgICAgIC8vICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgIC8vICAgIGRhdGE6IEpVTVBfUEFUSCxcclxuICAgICAgICAgIC8vICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAvLyAgfSxcclxuICAgICAgICAgIC8vICBzdHlsZToge1xyXG4gICAgICAgICAgLy8gICAgZmlsbDogJ2JsYWNrJ1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgLy8gICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgLy8gICAgcGFyZW50SWQ6IGwubm9kZUlkXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5yZW1vdmVMYXllcignaW5kaWNhdG9ycycpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdCgoaS5hZGRJbmZvIGFzIE5vZGVEYXRhKS5wYXJlbnRJZCEpO1xyXG4gICAgICBpLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCEgKyBwYXJlbnQud2lkdGghIC8gMiAtIDE1LFxyXG4gICAgICAgIGkub2Zmc2V0WSA9IHBhcmVudC5vZmZzZXRZISArIHBhcmVudC5oZWlnaHQhIC8gMiAtIDE1O1xyXG4gICAgICB0aGlzLmRpYWdyYW0uYWRkKGkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkTGF5ZXIoeyBpZDogJ2luZGljYXRvcnMnIH0sIGluZGljYXRvcnMpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kZWNvcmF0ZU5vZGUobm9kZTogTm9kZU1vZGVsKSB7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCk7XHJcblxyXG4gICAgaWYgKGxvZy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMudGltZWxpbmUucmVjaXBpZW50cy5maWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCk7XHJcblxyXG4gICAgICBub2RlLnN0eWxlIS5zdHJva2VDb2xvciA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBub2RlLnN0eWxlIS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUhLmZpbGwgPSByZWNpcGllbnRzLmZpbmQociA9PiByLnBlbmRpbmcgJiYgIXIuZXN0aW1hdGUpID8gdGhpcy5fYWNjZW50Q29sb3IgOiAnd2hpdGUnO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBub2RlLnN0eWxlIS5maWxsID0gJ3doaXRlJyxcclxuICAgICAgICBub2RlLnN0eWxlIS5zdHJva2VDb2xvciA9ICdkYXJrZ3JheScsXHJcbiAgICAgICAgbm9kZS5zdHlsZSEuc3Ryb2tlRGFzaEFycmF5ID0gJzYgMic7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlY29yYXRlQ29ubmVjdG9yKGNvbm5lY3RvcjogQ29ubmVjdG9yTW9kZWwpIHtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihsID0+IGwuc291cmNlSWQgPT09IGNvbm5lY3Rvci5zb3VyY2VJRCAmJiBsLnRhcmdldElkID09IGNvbm5lY3Rvci50YXJnZXRJRCk7XHJcblxyXG4gICAgaWYgKGxvZy5sZW5ndGgpIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5maWxsID1cclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlIS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgY29ubmVjdG9yLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5maWxsID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBjb25uZWN0b3Iuc3R5bGUhLnN0cm9rZURhc2hBcnJheSA9ICc2IDInO1xyXG4gIH1cclxuICBwcml2YXRlIF92ZXJzaW9uKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLnJlbW92ZUxheWVyKFxyXG4gICAgICAndmVyc2lvbicpO1xyXG4gICAgY29uc3QgdmVyc2lvbiA9IHtcclxuICAgICAgaWQ6ICd2ZXJzaW9uJyxcclxuICAgICAgc2hhcGU6IHtcclxuICAgICAgICB0eXBlOiAnVGV4dCcsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnRGlhZ3JhbVZlcnNpb24nLCB0aGlzLm1vZGVsLmRpYWdyYW0udmVyc2lvbilcclxuICAgICAgfSxcclxuICAgICAgb2Zmc2V0WTogNSxcclxuICAgICAgb2Zmc2V0WDogNSxcclxuICAgICAgc3R5bGU6IHtcclxuICAgICAgICBmb250U2l6ZTogNTAsXHJcbiAgICAgICAgb3BhY2l0eTogLjFcclxuICAgICAgfSxcclxuICAgICAgY29uc3RyYWludHM6IE5vZGVDb25zdHJhaW50cy5SZWFkT25seVxyXG4gICAgfSBhcyBUZXh0TW9kZWw7XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkTGF5ZXIoe1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBvYmplY3RzOiBbXHJcbiAgICAgICAgdmVyc2lvbl1cclxuICAgIH0gYXMgTGF5ZXJNb2RlbCk7XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkKHZlcnNpb24pO1xyXG4gIH1cclxuICBzZWxlY3Rpb25DaGFuZ2UoZXZ0OiBJU2VsZWN0aW9uQ2hhbmdlRXZlbnRBcmdzKSB7XHJcbiAgICBpZiAoZXZ0LnN0YXRlICE9PSAnQ2hhbmdlZCcpIHJldHVybjtcclxuICAgIHRoaXMuX3VuaGlnaGxpZ2h0KCk7XHJcbiAgICBpZiAoZXZ0Lm5ld1ZhbHVlLmxlbmd0aCkge1xyXG4gICAgICBsZXQgbm9kZSA9IGV2dC5uZXdWYWx1ZVswXSBhcyBOb2RlTW9kZWw7XHJcblxyXG4gICAgICBjb25zdCB7IGluZGljYXRvciwgcGFyZW50SWQgfSA9IG5vZGUuYWRkSW5mbyBhcyBOb2RlRGF0YSB8fCB7fTtcclxuXHJcbiAgICAgIGlmIChpbmRpY2F0b3IpIHtcclxuICAgICAgICBub2RlID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QocGFyZW50SWQhKTtcclxuICAgICAgICB0aGlzLmRpYWdyYW0uc2VsZWN0KFtub2RlXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gKChub2RlIGFzIGFueSkuaW5FZGdlcykuY29uY2F0KChub2RlIGFzIGFueSkub3V0RWRnZXMpO1xyXG4gICAgICAgIGlkcy5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmZvUmVmKSB0aGlzLl9pbmZvUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFRyYWNlRWxlbWVudENvbXBvbmVudCwge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgdGltZWxpbmU6IHRoaXMudGltZWxpbmUsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgICAgICB1dGlsaXR5UmVmOiB0aGlzLl91dGlsaXR5UmVmLFxyXG4gICAgICAgICAgfSBhcyBFbGVtZW50RGF0YSxcclxuICAgICAgICAgIHBvbGljeTogT3BlblBvbGljeS5UYWJcclxuICAgICAgICB9KS50aGVuKChlOiBQYW5lUmVmKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9pbmZvUmVmID0gZTtcclxuICAgICAgICAgIGUuYW5pbWF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5ub2RlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBwdWJsaWMgaGlnaGxpZ2h0VGltZSh0aW1lOiBEYXRlKSB7XHJcbiAgICB0aGlzLnRpbWVsaW5lLmRhdGUgPSB0aW1lO1xyXG4gICAgdGhpcy5kaWFncmFtLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICB0aGlzLl91bmhpZ2hsaWdodCgpO1xyXG4gICAgaWYgKHRpbWUgPCB0aGlzLnRpbWVsaW5lLnN0YXJ0RGF0ZSB8fCB0aW1lID4gdGhpcy50aW1lbGluZS5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuX3Njb3BlKHRpbWUpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlhZ3JhbS5ub2Rlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZU5vZGUodGhpcy5kaWFncmFtLm5vZGVzW2ldKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRpYWdyYW0uY29ubmVjdG9ycy5sZW5ndGg7IGkrKylcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZUNvbm5lY3Rvcih0aGlzLmRpYWdyYW0uY29ubmVjdG9yc1tpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaWRzID0gdGhpcy50aW1lbGluZS5sb2cuXHJcbiAgICAgIGZpbHRlcihsID0+IGwubm9kZUlkICYmIGwudGltZSA9PT0gdGltZSkuXHJcbiAgICAgIG1hcChsID0+IGwubm9kZUlkISkuXHJcbiAgICAgIGZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKTtcclxuXHJcbiAgICB0aGlzLl9oaWdobGlnaHQoaWRzKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuXHJcbiAgcGFuKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzIHwgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbjtcclxuICAgIHRoaXMuZGlhZ3JhbS50b29sID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgfVxyXG4gIGN1cnNvcigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyA9IHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyAmIH5EaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuU2luZ2xlU2VsZWN0O1xyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHQoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5kaWFncmFtLmdldE9iamVjdChpZHNbaV0pIGFzIGFueTtcclxuICAgICAgaWYgKG9iai5zb3VyY2VJRClcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgICAgb2JqLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgICBvYmoudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSB0aGlzLl9wcmltZXJ5Q29sb3I7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9wcmltZXJ5Q29sb3I7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdoTGlnaHRlZElkcyA9IGlkcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuaGlnaGxpZ2h0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gdGhpcy5faGlnaExpZ2h0ZWRJZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5kaWFncmFtLmdldE9iamVjdCh0aGlzLl9oaWdoTGlnaHRlZElkc1tpXSkgYXMgYW55O1xyXG4gICAgICBpZiAob2JqLnNvdXJjZUlEKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKG9iaik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZU5vZGUob2JqKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gW107XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIkBzd2l0Y2ggKG1vZGUpIHtcclxuPCEtLSBkaWFncmFtIC0tPlxyXG4gIEBjYXNlICgnZGlhZ3JhbScpIHtcclxuPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4XCI+XHJcbiAgPG1hdC10b29sYmFyPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJyb3dzZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JhY2snIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmFycm93X2JhY2s8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgfFxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInBhbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1BhbicgfCB0cmFuc2xhdGVcIj48c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1wYW5cIj48L3NwYW4+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJndWlkZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPmhlbHBfb3V0bGluZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9tYXQtdG9vbGJhcj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGZsZXhcIj5cclxuICAgIDwhLS0gdGltZWxpbmUgLS0+XHJcbiAgICBAaWYgKHRpbWVsaW5lPy5pdGVtcy5sZW5ndGggPiAxKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIiBkYXRhLWhlbHA9XCJ0aW1lbGluZVwiPlxyXG4gICAgICBAZm9yIChkYXRlIG9mIHRpbWVsaW5lLml0ZW1zOyB0cmFjayBkYXRlOyBsZXQgbGFzdCA9ICRsYXN0KSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCJcclxuICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGUudGltZSA9PT0gdGltZWxpbmUuZGF0ZVwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cImhpZ2hsaWdodFRpbWUoZGF0ZS50aW1lKVwiIG1hdFJpcHBsZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgIEBpZiAoIWxhc3QgfHwgIXRpbWVsaW5lLmVzdGltYXRlKSB7XHJcbiAgICAgICAgICBAaWYgKGRhdGUudXNlcklkKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIndob1wiPlxyXG4gICAgICAgICAgICB7e2RhdGUudXNlcklkIHwgdXNlck5hbWUgfCBhc3luYyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj5cclxuICAgICAgICAgICAge3tkYXRlLnRpbWUgfCBhbURhdGVGb3JtYXQ6ICdNTU0gRG8gSDptbScgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAge3snRXN0aW1hdGUnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICNkaWFncmFtIGRpcj1cImx0clwiPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4gIH1cclxuPCEtLSBicm93c2UgLS0+XHJcbiAgQGRlZmF1bHQge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBjb2x1bW4gZmlsbFwiPlxyXG4gIDxtYXQtdG9vbGJhciBjbGFzcz1cInJvd1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5GaWx0ZXIoJGV2ZW50KVwiIFtiaXpkb2NUb29sdGlwXT1cIidGaWx0ZXInfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9tYXQtdG9vbGJhcj5cclxuICA8bWF0LXByb2dyZXNzLWJhciBbbW9kZV09XCJsb2FkaW5nXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICA8IS0tIHRhYmxlIC0tPlxyXG4gIDxtYXQtdGFibGUgY2xhc3M9XCJmbGV4XCIgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQ+XHJcbiAgICA8IS0tIE51bWJlciBjb2x1bW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm51bWJlclwiPlxyXG4gICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj57eydOdW1iZXInIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5udW1iZXJ9fSA8L21hdC1jZWxsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIFN1YmplY3QgY29sdW1uIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdWJqZWN0XCI+XHJcbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5zdWJqZWN0fX0gPC9tYXQtY2VsbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RhdGVJZFwiPlxyXG4gICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj1cInN0YXRlSWRcIj57eydTdGF0dXMnIHwgdHJhbnNsYXRlIH19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICAgIDxiaXpkb2Mtc3RhdHVzIFtzdGF0ZUlkXT1cIml0ZW0uc3RhdGVJZFwiPjwvYml6ZG9jLXN0YXR1cz5cclxuICAgICAgPC9tYXQtY2VsbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L21hdC1oZWFkZXItcm93PlxyXG4gICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxyXG4gICAgPC9tYXQtcm93PlxyXG4gIDwvbWF0LXRhYmxlPlxyXG4gIDwhLS0gcmFuZ2UgLS0+XHJcbiAgPGVqcy1yYW5nZW5hdmlnYXRvciB2YWx1ZVR5cGU9J0RhdGVUaW1lJyBbdmFsdWVdPXJhbmdlIGxhYmVsRm9ybWF0PSdNTU0nIGJhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGhlbWVdPVwidGhlbWVcIiBsYWJlbEludGVyc2VjdEFjdGlvbj0nSGlkZScgZW5hYmxlR3JvdXBpbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J01vbnRocydcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT0ncmFuZ2VDaGFuZ2VkKCRldmVudCknPlxyXG4gICAgPGUtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcyBbZGF0YVNvdXJjZV09J3JhbmdlRGF0YScgW2ZpbGxdPVwiYWNjZW50XCIgdHlwZT0nQXJlYScgeE5hbWU9J2RhdGUnIHlOYW1lPSdjb3VudCcgd2lkdGg9Mj5cclxuICAgICAgPC9lLXJhbmdlbmF2aWdhdG9yLXNlcmllcz5cclxuICAgIDwvZS1yYW5nZW5hdmlnYXRvci1zZXJpZXMtY29sbGVjdGlvbj5cclxuICA8L2Vqcy1yYW5nZW5hdmlnYXRvcj5cclxuPC9kaXY+XHJcbiAgfVxyXG59XHJcbjwhLS0gYXJncyAtLT5cclxuPG5nLXRlbXBsYXRlICNhcmdzPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uIGdhcFwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJzZWFyY2hcIiAjc2VhcmNoIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIGRhdGEtaGVscD1cInNlYXJjaFwiIFtwbGFjZWhvbGRlcl09XCInTnVtYmVyJ3x0cmFuc2xhdGVcIiAvPlxyXG4gICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgPGJpemRvYy1zZWxlY3QgdHlwZT1cImZvcm1zXCIgW3BsYWNlaG9sZGVyXT1cIidGb3JtJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtSWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlc3RpbWF0ZT5cclxuICB7eydFc3RpbWF0ZScgfCB0cmFuc2xhdGV9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
@@ -26,14 +26,14 @@ export class ReassignDialog {
|
|
26
26
|
this.users$ = account.findAll('').
|
27
27
|
pipe(map(r => r.filter(u => this._data.exclude.indexOf(u.id) < 0)));
|
28
28
|
}
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component }); }
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n @for (u of users$ | async; track u) {\r\n <mat-option [value]=\"u.id\">{{u.name}}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls.note.value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] }); }
|
31
31
|
}
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignDialog, decorators: [{
|
33
33
|
type: Component,
|
34
|
-
args: [{ template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\n<mat-dialog-content>\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\n <mat-form-field>\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\n @for (u of users$ | async; track u) {\n <mat-option [value]=\"u.id\">{{u.name}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <!--<mat-form-field>\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\n <mat-option>{{'None'| translate}}</mat-option>\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\n </mat-select>\n </mat-form-field>-->\n <mat-form-field>\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\n <mat-hint align=\"end\">{{form.controls.note.value?.length || 0}} / {{200}}</mat-hint>\n </mat-form-field>\n</form>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\n</mat-dialog-actions>\n" }]
|
34
|
+
args: [{ template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n @for (u of users$ | async; track u) {\r\n <mat-option [value]=\"u.id\">{{u.name}}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls.note.value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
|
35
35
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
36
36
|
type: Inject,
|
37
37
|
args: [MAT_DIALOG_DATA]
|
38
38
|
}] }, { type: i1.SessionService }, { type: i2.AccountService }] });
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc3NpZ24uZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL3JlYXNzaWduLmRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9yZWFzc2lnbi5kaWFsb2cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUtyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUE2QyxLQUFtQixFQUFFLE9BQXVCLEVBQUUsT0FBdUI7UUFBckUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQU52RCxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLENBQUM7U0FDM0MsQ0FBQyxDQUFDO1FBSUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs4R0FYVSxjQUFjLGtCQU9MLGVBQWU7a0dBUHhCLGNBQWMsb0RDWjNCLCt5Q0EwQkE7OzJGRGRhLGNBQWM7a0JBSDFCLFNBQVM7OzswQkFVSyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBSb2xlLCBVc2VySW5mbyB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVhc3NpZ24uZGlhbG9nLmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWFzc2lnbkRpYWxvZyB7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdXNlcklkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIG5vdGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHJvbGVzOiBSb2xlW107XHJcbiAgcmVhZG9ubHkgdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBSZWFzc2lnbkRhdGEsIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlLCBhY2NvdW50OiBBY2NvdW50U2VydmljZSkge1xyXG4gICAgdGhpcy5yb2xlcyA9IHNlc3Npb24ucHJvZmlsZS5yb2xlcztcclxuICAgIHRoaXMudXNlcnMkID0gYWNjb3VudC5maW5kQWxsKCcnKS5cclxuICAgICAgcGlwZShtYXAociA9PiByLmZpbHRlcih1ID0+IHRoaXMuX2RhdGEuZXhjbHVkZS5pbmRleE9mKHUuaWQpIDwgMCkpKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSZWFzc2lnbkRhdGEge1xyXG4gIGV4Y2x1ZGU6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlYXNzaWduTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIC8vICByb2xlPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbn1cclxuIiwiPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3snUmVhc3NpZ24nIHwgdHJhbnNsYXRlIH19PC9oMj5cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvbHVtblwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cInt7J1dobycgfCB0cmFuc2xhdGV9fVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJJZFwiIHJlcXVpcmVkPlxyXG4gICAgICAgIEBmb3IgKHUgb2YgdXNlcnMkIHwgYXN5bmM7IHRyYWNrIHUpIHtcclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ1LmlkXCI+e3t1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eydSb2xlJyB8IHRyYW5zbGF0ZX19XCIgZm9ybUNvbnRyb2xOYW1lPVwicm9sZVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbj57eydOb25lJ3wgdHJhbnNsYXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIHJvbGVzXCIgW3ZhbHVlXT1cInIubmFtZVwiPnt7ci50aXRsZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+LS0+XHJcbiAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPHRleHRhcmVhIG1hdElucHV0IGNka1RleHRhcmVhQXV0b3NpemUgZm9ybUNvbnRyb2xOYW1lPVwibm90ZVwiIHBsYWNlaG9sZGVyPVwie3snTm90ZSd8IHRyYW5zbGF0ZX19XCIgbWF4bGVuZ3RoPVwiMjAwXCI+PC90ZXh0YXJlYT5cclxuICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPnt7Zm9ybS5jb250cm9scy5ub3RlLnZhbHVlPy5sZW5ndGggfHwgMH19IC8ge3syMDB9fTwvbWF0LWhpbnQ+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9mb3JtPlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZm9ybS52YWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+e3snQ2FuY2VsJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYWRtaW4vZG9jdW1lbnQtdHJhY2UvdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnQsIExvZywgUmVjaXBpZW50LCBXb3JrZmxvdyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW92ZU1vZGVsIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFncmFtSW5mbyB7XHJcbiAgZGlhZ3JhbTogV29ya2Zsb3c7XHJcbiAgZG9jdW1lbnRJZDogbnVtYmVyO1xyXG4gIGxvZzogTG9nW107XHJcbiAgZm9ybTogc3RyaW5nO1xyXG4gIG1vZGVsOiBhbnk7XHJcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRbXTtcclxuICByZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb2RlRGF0YSB7XHJcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbjtcclxuICB2aXJ0dWFsPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0b3JEYXRhIHtcclxuICB2aXJ0dWFsPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaW1lbGluZSB7XHJcbiAgICBkYXRlOiBEYXRlO1xyXG4gICAgc3VibWlzc2lvbnM6IERhdGVbXTtcclxuICAgIG1pbkRhdGU6IERhdGU7XHJcbiAgICBtYXhEYXRlOiBEYXRlO1xyXG4gICAgaXRlbXM6IHtcclxuICAgICAgICB0aW1lPzogRGF0ZTtcclxuICAgICAgICB1c2VySWQ/OiBzdHJpbmc7XHJcbiAgICAgICAgc3RhdGU/OiBzdHJpbmc7XHJcbiAgICB9W107XHJcbiAgICBlc3RpbWF0ZTogYm9vbGVhbjtcclxuICAgIHN0YXJ0RGF0ZTogRGF0ZTtcclxuICAgIGVuZERhdGU6IERhdGU7XHJcbiAgICByZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcclxuICAgIGxvZzogTG9nW107XHJcbn1cclxuIl19
|