@hmcts/media-viewer 4.1.5 → 4.1.6-angular-20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE +9 -0
- package/assets/sass/settings.scss +0 -4
- package/fesm2022/hmcts-media-viewer.mjs +303 -286
- package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
- package/index.d.ts +2304 -4
- package/index.d.ts.map +1 -0
- package/package.json +10 -12
- package/LICENSE +0 -0
- package/esm2022/hmcts-media-viewer.mjs +0 -5
- package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -122
- package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -120
- package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +0 -101
- package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
- package/esm2022/lib/annotations/annotation-set/annotation-set.model.mjs +0 -2
- package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
- package/esm2022/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -2
- package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
- package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -2
- package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -119
- package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
- package/esm2022/lib/annotations/annotations.module.mjs +0 -162
- package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +0 -178
- package/esm2022/lib/annotations/comment-set/comment/comment.model.mjs +0 -2
- package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
- package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
- package/esm2022/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +0 -31
- package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +0 -62
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -72
- package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +0 -55
- package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +0 -123
- package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
- package/esm2022/lib/annotations/models/api-persisted.model.mjs +0 -2
- package/esm2022/lib/annotations/models/event-select.model.mjs +0 -2
- package/esm2022/lib/annotations/models/tags.model.mjs +0 -2
- package/esm2022/lib/annotations/models/user.model.mjs +0 -2
- package/esm2022/lib/annotations/pipes/date/date.pipe.mjs +0 -26
- package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
- package/esm2022/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +0 -16
- package/esm2022/lib/annotations/services/annotation-api/annotation-api.service.mjs +0 -58
- package/esm2022/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +0 -45
- package/esm2022/lib/annotations/services/tags/tags.services.mjs +0 -41
- package/esm2022/lib/annotations/tags/tags.component.mjs +0 -53
- package/esm2022/lib/bookmark/components/bookmark-icons.component.mjs +0 -25
- package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +0 -22
- package/esm2022/lib/icp/icp-follower.service.mjs +0 -65
- package/esm2022/lib/icp/icp-presenter.service.mjs +0 -56
- package/esm2022/lib/icp/icp-session-api.service.mjs +0 -28
- package/esm2022/lib/icp/icp-update.service.mjs +0 -66
- package/esm2022/lib/icp/icp.events.mjs +0 -15
- package/esm2022/lib/icp/icp.interfaces.mjs +0 -2
- package/esm2022/lib/icp/icp.service.mjs +0 -98
- package/esm2022/lib/icp/participants-list/participants-list.component.mjs +0 -32
- package/esm2022/lib/icp/socket.service.mjs +0 -119
- package/esm2022/lib/media-viewer.component.mjs +0 -247
- package/esm2022/lib/media-viewer.module.mjs +0 -139
- package/esm2022/lib/print.service.mjs +0 -32
- package/esm2022/lib/redaction/components/redaction.component.mjs +0 -91
- package/esm2022/lib/redaction/services/redaction-api.service.mjs +0 -50
- package/esm2022/lib/redaction/services/redaction.model.mjs +0 -2
- package/esm2022/lib/shared/gov-uk-date/gov-uk-date.component.mjs +0 -28
- package/esm2022/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +0 -34
- package/esm2022/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +0 -63
- package/esm2022/lib/shared/gov-uk-label/gov-uk-label.component.mjs +0 -44
- package/esm2022/lib/shared/shared.module.mjs +0 -53
- package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +0 -29
- package/esm2022/lib/shared/util/services/number.helper.service.mjs +0 -23
- package/esm2022/lib/store/actions/annotation.actions.mjs +0 -119
- package/esm2022/lib/store/actions/bookmark.actions.mjs +0 -112
- package/esm2022/lib/store/actions/document.actions.mjs +0 -91
- package/esm2022/lib/store/actions/icp.actions.mjs +0 -56
- package/esm2022/lib/store/actions/redaction.actions.mjs +0 -132
- package/esm2022/lib/store/actions/tag.actions.mjs +0 -21
- package/esm2022/lib/store/bookmarks-store-utils.mjs +0 -49
- package/esm2022/lib/store/effects/annotation.effects.mjs +0 -51
- package/esm2022/lib/store/effects/bookmarks.effects.mjs +0 -44
- package/esm2022/lib/store/effects/document.effects.mjs +0 -44
- package/esm2022/lib/store/effects/icp.effects.mjs +0 -26
- package/esm2022/lib/store/effects/index.mjs +0 -7
- package/esm2022/lib/store/effects/redaction.effects.mjs +0 -67
- package/esm2022/lib/store/models/bookmarks.interface.mjs +0 -2
- package/esm2022/lib/store/models/filters.interface.mjs +0 -2
- package/esm2022/lib/store/reducers/annotations.reducer.mjs +0 -208
- package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +0 -125
- package/esm2022/lib/store/reducers/document.reducer.mjs +0 -158
- package/esm2022/lib/store/reducers/icp.reducer.mjs +0 -56
- package/esm2022/lib/store/reducers/redaction.reducer.mjs +0 -116
- package/esm2022/lib/store/reducers/reducers.mjs +0 -23
- package/esm2022/lib/store/reducers/tags.reducer.mjs +0 -93
- package/esm2022/lib/store/selectors/annotation.selectors.mjs +0 -81
- package/esm2022/lib/store/selectors/bookmark.selectors.mjs +0 -37
- package/esm2022/lib/store/selectors/document.selectors.mjs +0 -13
- package/esm2022/lib/store/selectors/icp.selectors.mjs +0 -13
- package/esm2022/lib/store/selectors/redaction.selectors.mjs +0 -26
- package/esm2022/lib/store/selectors/tag.selectors.mjs +0 -15
- package/esm2022/lib/store/store-utils.mjs +0 -131
- package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
- package/esm2022/lib/toolbar/icp-event.service.mjs +0 -44
- package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +0 -43
- package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -206
- package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -237
- package/esm2022/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -2
- package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
- package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
- package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
- package/esm2022/lib/toolbar/toolbar-event.service.mjs +0 -178
- package/esm2022/lib/toolbar/toolbar.module.mjs +0 -72
- package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
- package/esm2022/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +0 -22
- package/esm2022/lib/viewers/grab-n-drag.directive.mjs +0 -57
- package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
- package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
- package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -266
- package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +0 -40
- package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -242
- package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -379
- package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -2
- package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
- package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -2
- package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +0 -99
- package/esm2022/lib/viewers/rotation-persist/rotation-api.service.mjs +0 -27
- package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
- package/esm2022/lib/viewers/rotation-persist/rotation.model.mjs +0 -2
- package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
- package/esm2022/lib/viewers/viewer-event.service.mjs +0 -34
- package/esm2022/lib/viewers/viewer-exception.model.mjs +0 -13
- package/esm2022/lib/viewers/viewer-util.service.mjs +0 -20
- package/esm2022/public_api.mjs +0 -33
- package/hmcts-media-viewer.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +0 -48
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +0 -32
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +0 -18
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-set.component.d.ts +0 -27
- package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-set.model.d.ts +0 -7
- package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +0 -34
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +0 -16
- package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +0 -41
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +0 -9
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +0 -1
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +0 -37
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +0 -1
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +0 -37
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +0 -1
- package/lib/annotations/annotations.module.d.ts +0 -36
- package/lib/annotations/annotations.module.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/comment.component.d.ts +0 -69
- package/lib/annotations/comment-set/comment/comment.component.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/comment.model.d.ts +0 -13
- package/lib/annotations/comment-set/comment/comment.model.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/comment.service.d.ts +0 -22
- package/lib/annotations/comment-set/comment/comment.service.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +0 -14
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +0 -12
- package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +0 -28
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +0 -26
- package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +0 -21
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +0 -36
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-render.service.d.ts +0 -15
- package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set.component.d.ts +0 -56
- package/lib/annotations/comment-set/comment-set.component.d.ts.map +0 -1
- package/lib/annotations/comments-summary/comments-summary.component.d.ts +0 -42
- package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +0 -1
- package/lib/annotations/models/api-persisted.model.d.ts +0 -11
- package/lib/annotations/models/api-persisted.model.d.ts.map +0 -1
- package/lib/annotations/models/event-select.model.d.ts +0 -6
- package/lib/annotations/models/event-select.model.d.ts.map +0 -1
- package/lib/annotations/models/tags.model.d.ts +0 -7
- package/lib/annotations/models/tags.model.d.ts.map +0 -1
- package/lib/annotations/models/user.model.d.ts +0 -6
- package/lib/annotations/models/user.model.d.ts.map +0 -1
- package/lib/annotations/pipes/date/date.pipe.d.ts +0 -16
- package/lib/annotations/pipes/date/date.pipe.d.ts.map +0 -1
- package/lib/annotations/pipes/filter/filter.pipe.d.ts +0 -8
- package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +0 -1
- package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +0 -8
- package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +0 -1
- package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +0 -28
- package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +0 -1
- package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +0 -21
- package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +0 -1
- package/lib/annotations/services/tags/tags.services.d.ts +0 -18
- package/lib/annotations/services/tags/tags.services.d.ts.map +0 -1
- package/lib/annotations/tags/tags.component.d.ts +0 -28
- package/lib/annotations/tags/tags.component.d.ts.map +0 -1
- package/lib/bookmark/components/bookmark-icons.component.d.ts +0 -19
- package/lib/bookmark/components/bookmark-icons.component.d.ts.map +0 -1
- package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +0 -11
- package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +0 -1
- package/lib/icp/icp-follower.service.d.ts +0 -26
- package/lib/icp/icp-follower.service.d.ts.map +0 -1
- package/lib/icp/icp-presenter.service.d.ts +0 -25
- package/lib/icp/icp-presenter.service.d.ts.map +0 -1
- package/lib/icp/icp-session-api.service.d.ts +0 -15
- package/lib/icp/icp-session-api.service.d.ts.map +0 -1
- package/lib/icp/icp-update.service.d.ts +0 -21
- package/lib/icp/icp-update.service.d.ts.map +0 -1
- package/lib/icp/icp.events.d.ts +0 -14
- package/lib/icp/icp.events.d.ts.map +0 -1
- package/lib/icp/icp.interfaces.d.ts +0 -23
- package/lib/icp/icp.interfaces.d.ts.map +0 -1
- package/lib/icp/icp.service.d.ts +0 -40
- package/lib/icp/icp.service.d.ts.map +0 -1
- package/lib/icp/participants-list/participants-list.component.d.ts +0 -23
- package/lib/icp/participants-list/participants-list.component.d.ts.map +0 -1
- package/lib/icp/socket.service.d.ts +0 -28
- package/lib/icp/socket.service.d.ts.map +0 -1
- package/lib/media-viewer.component.d.ts +0 -72
- package/lib/media-viewer.component.d.ts.map +0 -1
- package/lib/media-viewer.module.d.ts +0 -36
- package/lib/media-viewer.module.d.ts.map +0 -1
- package/lib/print.service.d.ts +0 -8
- package/lib/print.service.d.ts.map +0 -1
- package/lib/redaction/components/redaction.component.d.ts +0 -42
- package/lib/redaction/components/redaction.component.d.ts.map +0 -1
- package/lib/redaction/services/redaction-api.service.d.ts +0 -20
- package/lib/redaction/services/redaction-api.service.d.ts.map +0 -1
- package/lib/redaction/services/redaction.model.d.ts +0 -11
- package/lib/redaction/services/redaction.model.d.ts.map +0 -1
- package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +0 -15
- package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +0 -1
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +0 -11
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +0 -1
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +0 -16
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +0 -1
- package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +0 -14
- package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +0 -1
- package/lib/shared/shared.module.d.ts +0 -14
- package/lib/shared/shared.module.d.ts.map +0 -1
- package/lib/shared/util/helpers/html-templates.helper.d.ts +0 -9
- package/lib/shared/util/helpers/html-templates.helper.d.ts.map +0 -1
- package/lib/shared/util/services/number.helper.service.d.ts +0 -11
- package/lib/shared/util/services/number.helper.service.d.ts.map +0 -1
- package/lib/store/actions/annotation.actions.d.ts +0 -126
- package/lib/store/actions/annotation.actions.d.ts.map +0 -1
- package/lib/store/actions/bookmark.actions.d.ts +0 -117
- package/lib/store/actions/bookmark.actions.d.ts.map +0 -1
- package/lib/store/actions/document.actions.d.ts +0 -90
- package/lib/store/actions/document.actions.d.ts.map +0 -1
- package/lib/store/actions/icp.actions.d.ts +0 -75
- package/lib/store/actions/icp.actions.d.ts.map +0 -1
- package/lib/store/actions/redaction.actions.d.ts +0 -127
- package/lib/store/actions/redaction.actions.d.ts.map +0 -1
- package/lib/store/actions/tag.actions.d.ts +0 -30
- package/lib/store/actions/tag.actions.d.ts.map +0 -1
- package/lib/store/bookmarks-store-utils.d.ts +0 -9
- package/lib/store/bookmarks-store-utils.d.ts.map +0 -1
- package/lib/store/effects/annotation.effects.d.ts +0 -16
- package/lib/store/effects/annotation.effects.d.ts.map +0 -1
- package/lib/store/effects/bookmarks.effects.d.ts +0 -21
- package/lib/store/effects/bookmarks.effects.d.ts.map +0 -1
- package/lib/store/effects/document.effects.d.ts +0 -17
- package/lib/store/effects/document.effects.d.ts.map +0 -1
- package/lib/store/effects/icp.effects.d.ts +0 -16
- package/lib/store/effects/icp.effects.d.ts.map +0 -1
- package/lib/store/effects/index.d.ts +0 -2
- package/lib/store/effects/index.d.ts.map +0 -1
- package/lib/store/effects/redaction.effects.d.ts +0 -20
- package/lib/store/effects/redaction.effects.d.ts.map +0 -1
- package/lib/store/models/bookmarks.interface.d.ts +0 -31
- package/lib/store/models/bookmarks.interface.d.ts.map +0 -1
- package/lib/store/models/filters.interface.d.ts +0 -8
- package/lib/store/models/filters.interface.d.ts.map +0 -1
- package/lib/store/reducers/annotations.reducer.d.ts +0 -48
- package/lib/store/reducers/annotations.reducer.d.ts.map +0 -1
- package/lib/store/reducers/bookmarks.reducer.d.ts +0 -27
- package/lib/store/reducers/bookmarks.reducer.d.ts.map +0 -1
- package/lib/store/reducers/document.reducer.d.ts +0 -52
- package/lib/store/reducers/document.reducer.d.ts.map +0 -1
- package/lib/store/reducers/icp.reducer.d.ts +0 -9
- package/lib/store/reducers/icp.reducer.d.ts.map +0 -1
- package/lib/store/reducers/redaction.reducer.d.ts +0 -32
- package/lib/store/reducers/redaction.reducer.d.ts.map +0 -1
- package/lib/store/reducers/reducers.d.ts +0 -24
- package/lib/store/reducers/reducers.d.ts.map +0 -1
- package/lib/store/reducers/tags.reducer.d.ts +0 -32
- package/lib/store/reducers/tags.reducer.d.ts.map +0 -1
- package/lib/store/selectors/annotation.selectors.d.ts +0 -136
- package/lib/store/selectors/annotation.selectors.d.ts.map +0 -1
- package/lib/store/selectors/bookmark.selectors.d.ts +0 -38
- package/lib/store/selectors/bookmark.selectors.d.ts.map +0 -1
- package/lib/store/selectors/document.selectors.d.ts +0 -23
- package/lib/store/selectors/document.selectors.d.ts.map +0 -1
- package/lib/store/selectors/icp.selectors.d.ts +0 -10
- package/lib/store/selectors/icp.selectors.d.ts.map +0 -1
- package/lib/store/selectors/redaction.selectors.d.ts +0 -35
- package/lib/store/selectors/redaction.selectors.d.ts.map +0 -1
- package/lib/store/selectors/tag.selectors.d.ts +0 -28
- package/lib/store/selectors/tag.selectors.d.ts.map +0 -1
- package/lib/store/store-utils.d.ts +0 -25
- package/lib/store/store-utils.d.ts.map +0 -1
- package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts +0 -20
- package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts.map +0 -1
- package/lib/toolbar/icp-event.service.d.ts +0 -21
- package/lib/toolbar/icp-event.service.d.ts.map +0 -1
- package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +0 -24
- package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +0 -1
- package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +0 -69
- package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +0 -1
- package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +0 -60
- package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +0 -1
- package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts +0 -12
- package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts.map +0 -1
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +0 -30
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +0 -1
- package/lib/toolbar/search-bar/search-bar.component.d.ts +0 -34
- package/lib/toolbar/search-bar/search-bar.component.d.ts.map +0 -1
- package/lib/toolbar/toolbar-button-visibility.service.d.ts +0 -67
- package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +0 -1
- package/lib/toolbar/toolbar-event.service.d.ts +0 -96
- package/lib/toolbar/toolbar-event.service.d.ts.map +0 -1
- package/lib/toolbar/toolbar.module.d.ts +0 -19
- package/lib/toolbar/toolbar.module.d.ts.map +0 -1
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +0 -31
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +0 -1
- package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +0 -12
- package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +0 -1
- package/lib/viewers/grab-n-drag.directive.d.ts +0 -19
- package/lib/viewers/grab-n-drag.directive.d.ts.map +0 -1
- package/lib/viewers/image-viewer/image-viewer.component.d.ts +0 -57
- package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +0 -1
- package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +0 -25
- package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +0 -69
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +0 -17
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +0 -82
- package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +0 -82
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +0 -22
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +0 -20
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +0 -14
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +0 -42
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +0 -1
- package/lib/viewers/rotation-persist/rotation-api.service.d.ts +0 -14
- package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +0 -1
- package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +0 -27
- package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +0 -1
- package/lib/viewers/rotation-persist/rotation.model.d.ts +0 -5
- package/lib/viewers/rotation-persist/rotation.model.d.ts.map +0 -1
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +0 -23
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +0 -1
- package/lib/viewers/viewer-event.service.d.ts +0 -23
- package/lib/viewers/viewer-event.service.d.ts.map +0 -1
- package/lib/viewers/viewer-exception.model.d.ts +0 -15
- package/lib/viewers/viewer-exception.model.d.ts.map +0 -1
- package/lib/viewers/viewer-util.service.d.ts +0 -10
- package/lib/viewers/viewer-util.service.d.ts.map +0 -1
- package/public_api.d.ts +0 -30
- package/public_api.d.ts.map +0 -1
|
@@ -1,379 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { select } from '@ngrx/store';
|
|
3
|
-
import { CreateBookmark, DeleteBookmark, MoveBookmark, UpdateBookmark, UpdateBookmarkScrollTop } from '../../../../store/actions/bookmark.actions';
|
|
4
|
-
import * as bookmarksSelectors from '../../../../store/selectors/bookmark.selectors';
|
|
5
|
-
import * as fromDocument from '../../../../store/selectors/document.selectors';
|
|
6
|
-
import { getBookmarkChildren } from '../../../../store/bookmarks-store-utils';
|
|
7
|
-
import { take } from 'rxjs/operators';
|
|
8
|
-
import { v4 as uuid } from 'uuid';
|
|
9
|
-
import { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';
|
|
10
|
-
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@ngrx/store";
|
|
13
|
-
import * as i2 from "@angular/common";
|
|
14
|
-
import * as i3 from "@angular/cdk/tree";
|
|
15
|
-
import * as i4 from "@angular/cdk/drag-drop";
|
|
16
|
-
export class BookmarksComponent {
|
|
17
|
-
set bookmarkNodes(value) {
|
|
18
|
-
this.rebuildTreeForData(value);
|
|
19
|
-
if (this._bookmarkNodes && this.sortMode !== this.customSort) {
|
|
20
|
-
this.sortBookmarks();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
;
|
|
24
|
-
get bookmarkNodes() {
|
|
25
|
-
return this._bookmarkNodes;
|
|
26
|
-
}
|
|
27
|
-
;
|
|
28
|
-
constructor(store) {
|
|
29
|
-
this.store = store;
|
|
30
|
-
this.goToDestination = new EventEmitter();
|
|
31
|
-
this.treeHasChanged = new EventEmitter();
|
|
32
|
-
this._bookmarkNodes = [];
|
|
33
|
-
// expansion model tracks expansion state
|
|
34
|
-
this.expansionModel = new SelectionModel(true);
|
|
35
|
-
this.isDraggingOn = false;
|
|
36
|
-
this.isUserdragging = false;
|
|
37
|
-
this.expandDelay = 1000;
|
|
38
|
-
this.pageLookup = {};
|
|
39
|
-
this.BOOKMARK_CHAR_LIMIT = 30;
|
|
40
|
-
this.dragNodeExpandOverWaitTimeMs = 300;
|
|
41
|
-
this.options = {
|
|
42
|
-
allowDrag: true,
|
|
43
|
-
allowDrop: true
|
|
44
|
-
};
|
|
45
|
-
this._customSort = 'CUSTOM';
|
|
46
|
-
this._positionSort = 'POSITION';
|
|
47
|
-
this.hasChild = (_, node) => {
|
|
48
|
-
return node.children && node.children.length > 0;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
ngOnInit() {
|
|
52
|
-
this.sortMode = this.customSort;
|
|
53
|
-
this.$subscription = this.store.pipe(select(bookmarksSelectors.getEditableBookmark))
|
|
54
|
-
.subscribe(editableId => this.editableBookmark = editableId);
|
|
55
|
-
this.$subscription.add(this.store.select(fromDocument.getPages)
|
|
56
|
-
.subscribe(pages => {
|
|
57
|
-
Object.keys(pages).map(key => {
|
|
58
|
-
this.pageLookup[key] = pages[key];
|
|
59
|
-
});
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
ngOnChanges(changes) {
|
|
63
|
-
if (changes?.bookmarkNodes) {
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
this.store.dispatch(new UpdateBookmarkScrollTop(this.parentScrollTop));
|
|
66
|
-
}, 200);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
ngOnDestroy() {
|
|
70
|
-
this.$subscription.unsubscribe();
|
|
71
|
-
}
|
|
72
|
-
editBookmark(id) {
|
|
73
|
-
this.editableBookmark = id;
|
|
74
|
-
}
|
|
75
|
-
onAddBookmarkClick() {
|
|
76
|
-
this.store.pipe(select(bookmarksSelectors.getBookmarkInfo), take(1))
|
|
77
|
-
.subscribe((bookmarkInfo) => {
|
|
78
|
-
this.store.dispatch(new CreateBookmark({
|
|
79
|
-
...bookmarkInfo, name: '', id: uuid()
|
|
80
|
-
}));
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
deleteBookmark2(node) {
|
|
84
|
-
this.customSortBookmarks();
|
|
85
|
-
let next;
|
|
86
|
-
const changedData = JSON.parse(JSON.stringify(this.bookmarkNodes));
|
|
87
|
-
const siblings = this.findNodeSiblings(changedData, node.id);
|
|
88
|
-
if (siblings && siblings.length > node.index + 1) {
|
|
89
|
-
next = siblings[node.index + 1];
|
|
90
|
-
next.previous = node.previous;
|
|
91
|
-
}
|
|
92
|
-
const toDelete = [node.id, ...getBookmarkChildren(node.children)];
|
|
93
|
-
this.store.dispatch(new DeleteBookmark({
|
|
94
|
-
deleted: toDelete, updated: next
|
|
95
|
-
}));
|
|
96
|
-
}
|
|
97
|
-
updateBookmark(bookmark, name) {
|
|
98
|
-
const editedBookmark = {
|
|
99
|
-
...bookmark,
|
|
100
|
-
name
|
|
101
|
-
};
|
|
102
|
-
if (name) {
|
|
103
|
-
this.store.dispatch(new UpdateBookmark(editedBookmark));
|
|
104
|
-
this.editableBookmark = undefined;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
goToBookmark(bookmark) {
|
|
108
|
-
const thisPage = this.pageLookup[bookmark.pageNumber + 1];
|
|
109
|
-
const defaultHeight = thisPage.styles.height;
|
|
110
|
-
const defaultScaleY = this.scaledY(bookmark.yCoordinate, defaultHeight, thisPage);
|
|
111
|
-
let top = 0, left = 0;
|
|
112
|
-
switch (this.rotate) {
|
|
113
|
-
case 90:
|
|
114
|
-
left = -defaultScaleY;
|
|
115
|
-
break;
|
|
116
|
-
case 180:
|
|
117
|
-
top = this.scaledY(bookmark.yCoordinate, (defaultHeight - (24 * this.zoom)), thisPage);
|
|
118
|
-
break;
|
|
119
|
-
case 270:
|
|
120
|
-
left = defaultScaleY;
|
|
121
|
-
break;
|
|
122
|
-
default:
|
|
123
|
-
top = defaultScaleY;
|
|
124
|
-
}
|
|
125
|
-
this.goToDestination.emit([
|
|
126
|
-
bookmark.pageNumber,
|
|
127
|
-
{ 'name': 'XYZ' },
|
|
128
|
-
left,
|
|
129
|
-
top
|
|
130
|
-
]);
|
|
131
|
-
}
|
|
132
|
-
get customSort() {
|
|
133
|
-
return this._customSort;
|
|
134
|
-
}
|
|
135
|
-
get positionSort() {
|
|
136
|
-
return this._positionSort;
|
|
137
|
-
}
|
|
138
|
-
sort(mode) {
|
|
139
|
-
this.sortMode = mode;
|
|
140
|
-
this.sortBookmarks();
|
|
141
|
-
}
|
|
142
|
-
sortBookmarks() {
|
|
143
|
-
switch (this.sortMode) {
|
|
144
|
-
case this.customSort: {
|
|
145
|
-
this.customSortBookmarks();
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
case this.positionSort: {
|
|
149
|
-
this.positionSortBookmarks();
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
default: {
|
|
153
|
-
this.customSortBookmarks();
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
positionSortBookmarks() {
|
|
159
|
-
this.bookmarkNodes.sort((a, b) => a.pageNumber === b.pageNumber ? a.yCoordinate - b.yCoordinate : a.pageNumber - b.pageNumber);
|
|
160
|
-
this.isDraggingOn = false;
|
|
161
|
-
this.rebuildTreeForData(this.bookmarkNodes);
|
|
162
|
-
}
|
|
163
|
-
customSortBookmarks() {
|
|
164
|
-
if (this.bookmarkNodes.length > 1) {
|
|
165
|
-
this.bookmarkNodes.sort((a, b) => a.index - b.index);
|
|
166
|
-
}
|
|
167
|
-
this.isDraggingOn = true;
|
|
168
|
-
this.rebuildTreeForData(this.bookmarkNodes);
|
|
169
|
-
}
|
|
170
|
-
scaledY(yCoordinate, height, page) {
|
|
171
|
-
const viewportScale = page.viewportScale / this.zoom;
|
|
172
|
-
return ((height / this.zoom) - yCoordinate) / viewportScale;
|
|
173
|
-
}
|
|
174
|
-
getNode(bookmarks, parentId) {
|
|
175
|
-
if (typeof bookmarks !== 'undefined') {
|
|
176
|
-
for (let i = 0; i < bookmarks.length; i++) {
|
|
177
|
-
if (bookmarks[i].id === parentId) {
|
|
178
|
-
return [bookmarks[i]];
|
|
179
|
-
}
|
|
180
|
-
const a = this.getNode(bookmarks[i].children, parentId);
|
|
181
|
-
if (a !== null) {
|
|
182
|
-
return a;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return null;
|
|
187
|
-
}
|
|
188
|
-
drop(event) {
|
|
189
|
-
if (!event.isPointerOverContainer || (event.previousIndex === event.currentIndex))
|
|
190
|
-
return;
|
|
191
|
-
const hasMovedUpTheTree = event.previousIndex > event.currentIndex;
|
|
192
|
-
const bookmarkNodesString = JSON.stringify(this._bookmarkNodes);
|
|
193
|
-
const changedData = JSON.parse(bookmarkNodesString);
|
|
194
|
-
const visibleNodes = this.visibleNodes(this._bookmarkNodes);
|
|
195
|
-
const toNode = visibleNodes[event.currentIndex];
|
|
196
|
-
const toNodeSiblings = this.findNodeSiblings(changedData, toNode.id);
|
|
197
|
-
const toNodeParent = toNodeSiblings[0].parent;
|
|
198
|
-
const toIndex = toNodeSiblings.findIndex(s => s.id === toNode.id);
|
|
199
|
-
const fromNode = event.item.data;
|
|
200
|
-
const fromNodeSiblings = this.findNodeSiblings(changedData, fromNode.id);
|
|
201
|
-
const fromIndex = fromNodeSiblings.findIndex(n => n.id === fromNode.id);
|
|
202
|
-
if (this.isToNodeChildOfFromNode(fromNode?.children, toNode))
|
|
203
|
-
return;
|
|
204
|
-
if (this.dragNodeInsertToParent) {
|
|
205
|
-
const indexOfParent = toNodeSiblings.findIndex(element => element.id === toNode.id);
|
|
206
|
-
const parentNode = toNodeSiblings[indexOfParent];
|
|
207
|
-
const firstChild = parentNode?.children && parentNode?.children.length > 0 ? parentNode.children[0] : null;
|
|
208
|
-
let movedBookmarksWithParent = [{ ...fromNode, parent: parentNode.id, previous: null }];
|
|
209
|
-
if (firstChild) {
|
|
210
|
-
movedBookmarksWithParent = [...movedBookmarksWithParent, { ...firstChild, previous: fromNode.id }];
|
|
211
|
-
}
|
|
212
|
-
let fromNodeSibling = this.getSiblingFromAllSibliings(fromNodeSiblings, fromIndex + 1);
|
|
213
|
-
const nextFromindexforParent = fromIndex + 1;
|
|
214
|
-
fromNodeSibling = fromNodeSibling && fromNodeSibling.id === fromNode.previous ? this.getSiblingFromAllSibliings(fromNodeSiblings, nextFromindexforParent + 1) : fromNodeSibling;
|
|
215
|
-
if (fromNodeSibling && fromNodeSibling.id !== parentNode.id) {
|
|
216
|
-
movedBookmarksWithParent = [...movedBookmarksWithParent, { ...fromNodeSibling, previous: fromNode.previous }];
|
|
217
|
-
}
|
|
218
|
-
let previousSiblingForParentIndex = toIndex - 1;
|
|
219
|
-
let parentNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, previousSiblingForParentIndex);
|
|
220
|
-
if (parentNodeSibling && parentNodeSibling.id == fromNode.id) {
|
|
221
|
-
previousSiblingForParentIndex = previousSiblingForParentIndex - 1;
|
|
222
|
-
if (previousSiblingForParentIndex >= 0) {
|
|
223
|
-
parentNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, previousSiblingForParentIndex);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
parentNodeSibling = null;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
movedBookmarksWithParent = [...movedBookmarksWithParent, { ...parentNode, previous: parentNodeSibling?.id }];
|
|
230
|
-
const hasParentDups = movedBookmarksWithParent.map(x => x.id).some(function (value, index, array) {
|
|
231
|
-
return array.indexOf(value) !== array.lastIndexOf(value); // comparing first and last indexes of the same value
|
|
232
|
-
});
|
|
233
|
-
if (hasParentDups || movedBookmarksWithParent && movedBookmarksWithParent.length <= 1)
|
|
234
|
-
return;
|
|
235
|
-
this.store.dispatch(new MoveBookmark(movedBookmarksWithParent));
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
if (!toNodeSiblings)
|
|
239
|
-
return;
|
|
240
|
-
const fromNodePrevious = hasMovedUpTheTree ? toNode.previous : toNode.id;
|
|
241
|
-
let movedBookmarks = [{
|
|
242
|
-
...fromNode,
|
|
243
|
-
previous: toNode.index > 0 ? fromNodePrevious : undefined,
|
|
244
|
-
parent: toNodeParent
|
|
245
|
-
}];
|
|
246
|
-
let fromNodeSibling = this.getSiblingFromAllSibliings(fromNodeSiblings, fromIndex + 1);
|
|
247
|
-
const nextFromindex = fromIndex + 1;
|
|
248
|
-
fromNodeSibling = fromNodeSibling && fromNodeSibling.id === fromNode.previous ? this.getSiblingFromAllSibliings(fromNodeSiblings, nextFromindex + 1) : fromNodeSibling;
|
|
249
|
-
if (fromNodeSibling) {
|
|
250
|
-
movedBookmarks = [...movedBookmarks, { ...fromNodeSibling, previous: fromNode.previous }];
|
|
251
|
-
}
|
|
252
|
-
let toNodeSiblingIndex = hasMovedUpTheTree ? toIndex : toIndex + 1;
|
|
253
|
-
let toNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, toNodeSiblingIndex);
|
|
254
|
-
if (toNodeSibling) {
|
|
255
|
-
movedBookmarks = [...movedBookmarks, { ...toNodeSibling, previous: fromNode.id }];
|
|
256
|
-
}
|
|
257
|
-
const hasDups = movedBookmarks.map(x => x.id).some(function (value, index, array) {
|
|
258
|
-
return array.indexOf(value) !== array.lastIndexOf(value); // comparing first and last indexes of the same value
|
|
259
|
-
});
|
|
260
|
-
if (hasDups || movedBookmarks && movedBookmarks.length <= 1)
|
|
261
|
-
return;
|
|
262
|
-
this.store.dispatch(new MoveBookmark(movedBookmarks));
|
|
263
|
-
}
|
|
264
|
-
getSiblingFromAllSibliings(sibling, index) {
|
|
265
|
-
return sibling.length > index ? sibling[index] : undefined;
|
|
266
|
-
}
|
|
267
|
-
dragStart() {
|
|
268
|
-
this.dragNodeInsertToParent = false;
|
|
269
|
-
this.hoveredNode = null;
|
|
270
|
-
this.isUserdragging = true;
|
|
271
|
-
}
|
|
272
|
-
dragEnd() {
|
|
273
|
-
this.isUserdragging = false;
|
|
274
|
-
if (this.hoverHtmlElement?.style) {
|
|
275
|
-
this.hoverHtmlElement.style.borderRight = '';
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
dragHover(event, node) {
|
|
279
|
-
if (this.isUserdragging) {
|
|
280
|
-
const newEvent = event;
|
|
281
|
-
const percentageX = newEvent.offsetX / newEvent.target.clientWidth;
|
|
282
|
-
if (percentageX > .55) {
|
|
283
|
-
this.hoveredNode = node;
|
|
284
|
-
if (this.hoverHtmlElement?.style) {
|
|
285
|
-
this.hoverHtmlElement.style.borderRight = '';
|
|
286
|
-
}
|
|
287
|
-
this.hoverHtmlElement = event.currentTarget;
|
|
288
|
-
this.hoverHtmlElement.style.borderRight = '5px solid #007bff';
|
|
289
|
-
this.dragNodeInsertToParent = true;
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
this.hoveredNode = null;
|
|
293
|
-
if (this.hoverHtmlElement?.style) {
|
|
294
|
-
this.hoverHtmlElement.style.borderRight = '';
|
|
295
|
-
}
|
|
296
|
-
this.dragNodeInsertToParent = false;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
dragHoverEnd(event, node) {
|
|
301
|
-
if (this.isUserdragging) {
|
|
302
|
-
if (!node || this.hoveredNode?.id !== node.id) {
|
|
303
|
-
this.dragNodeInsertToParent = false;
|
|
304
|
-
if (this.hoverHtmlElement?.style) {
|
|
305
|
-
this.hoverHtmlElement.style.borderRight = '';
|
|
306
|
-
}
|
|
307
|
-
this.hoveredNode = null;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
onNodeExpand(node) {
|
|
312
|
-
const isExpanded = this.treeControl.isExpanded(node);
|
|
313
|
-
return isExpanded ? "toggle-children-wrapper-expanded" : "toggle-children-wrapper-collapsed";
|
|
314
|
-
}
|
|
315
|
-
visibleNodes(bookmarks) {
|
|
316
|
-
const result = [];
|
|
317
|
-
function addExpandedChildren(node, expanded) {
|
|
318
|
-
result.push(node);
|
|
319
|
-
if (expanded.some(bookmark => bookmark && bookmark.id === node.id) && node.children) {
|
|
320
|
-
node.children.map((child) => addExpandedChildren(child, expanded));
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
bookmarks.forEach((node) => {
|
|
324
|
-
addExpandedChildren(node, this.treeControl.expansionModel.selected);
|
|
325
|
-
});
|
|
326
|
-
return result;
|
|
327
|
-
}
|
|
328
|
-
findNodeSiblings(arr, id) {
|
|
329
|
-
let result, subResult;
|
|
330
|
-
arr.forEach((item, i) => {
|
|
331
|
-
if (item.id === id) {
|
|
332
|
-
result = arr;
|
|
333
|
-
}
|
|
334
|
-
else if (item?.children) {
|
|
335
|
-
subResult = this.findNodeSiblings(item.children, id);
|
|
336
|
-
if (subResult)
|
|
337
|
-
result = subResult;
|
|
338
|
-
}
|
|
339
|
-
});
|
|
340
|
-
return result;
|
|
341
|
-
}
|
|
342
|
-
rebuildTreeForData(data) {
|
|
343
|
-
this._bookmarkNodes = data ?? [];
|
|
344
|
-
this.datasource = new ArrayDataSource(this._bookmarkNodes);
|
|
345
|
-
this.treeControl = new NestedTreeControl(node => node.children);
|
|
346
|
-
this.treeControl.dataNodes = this._bookmarkNodes;
|
|
347
|
-
this.expansionModel.selected.forEach((bookmark) => {
|
|
348
|
-
const node = this.treeControl.dataNodes.find((n) => n.id === bookmark.id);
|
|
349
|
-
this.treeControl.expand(node);
|
|
350
|
-
});
|
|
351
|
-
this.treeHasChanged.emit(true);
|
|
352
|
-
}
|
|
353
|
-
isToNodeChildOfFromNode(fromNodeChildren, toNode) {
|
|
354
|
-
if (!fromNodeChildren) {
|
|
355
|
-
return false;
|
|
356
|
-
}
|
|
357
|
-
const result = this.getNode(fromNodeChildren, toNode.id);
|
|
358
|
-
return result ? true : false;
|
|
359
|
-
}
|
|
360
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookmarksComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
361
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookmarksComponent, selector: "mv-bookmarks", inputs: { bookmarkNodes: "bookmarkNodes", zoom: "zoom", rotate: "rotate", parentScrollTop: "parentScrollTop" }, outputs: { goToDestination: "goToDestination", treeHasChanged: "treeHasChanged" }, usesOnChanges: true, ngImport: i0, template: "<a *ngIf=\"bookmarkNodes?.length === 0\" class=\"highlightedOutlineItem\"\n >No bookmarks created yet</a\n>\n<cdk-tree\n cdkDropList\n [cdkDropListDisabled]=\"!isDraggingOn\"\n class=\"bookmarks-tree\"\n *ngIf=\"datasource\"\n [dataSource]=\"datasource\"\n [treeControl]=\"treeControl\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <!-- This is the tree node template for leaf nodes -->\n <cdk-nested-tree-node class=\"node-wrapper\" *cdkTreeNodeDef=\"let node\">\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark\">\n <div\n class=\"node-content-wrapper nested-tree-node nest-tree-node-padding\"\n cdkDrag\n cdkDragBoundary=\".bookmarks-tree\"\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n class=\"node-wrapper\"\n *cdkTreeNodeDef=\"let node; when: hasChild\"\n >\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark2\">\n <div\n class=\"node-content-wrapper nested-tree-node\"\n cdkDrag\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <span\n cdkTreeNodeToggle\n class=\"toggle-children-wrapper\"\n [ngClass]=\"onNodeExpand(node)\"\n ><span class=\"toggle-children\"></span\n ></span>\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark2>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n <div class=\"nested-tree-node-children\" *ngIf=\"treeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n</cdk-tree>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkNestedTreeNode, selector: "cdk-nested-tree-node", exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i3.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i3.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i3.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i3.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }] }); }
|
|
362
|
-
}
|
|
363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookmarksComponent, decorators: [{
|
|
364
|
-
type: Component,
|
|
365
|
-
args: [{ selector: 'mv-bookmarks', template: "<a *ngIf=\"bookmarkNodes?.length === 0\" class=\"highlightedOutlineItem\"\n >No bookmarks created yet</a\n>\n<cdk-tree\n cdkDropList\n [cdkDropListDisabled]=\"!isDraggingOn\"\n class=\"bookmarks-tree\"\n *ngIf=\"datasource\"\n [dataSource]=\"datasource\"\n [treeControl]=\"treeControl\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <!-- This is the tree node template for leaf nodes -->\n <cdk-nested-tree-node class=\"node-wrapper\" *cdkTreeNodeDef=\"let node\">\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark\">\n <div\n class=\"node-content-wrapper nested-tree-node nest-tree-node-padding\"\n cdkDrag\n cdkDragBoundary=\".bookmarks-tree\"\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n class=\"node-wrapper\"\n *cdkTreeNodeDef=\"let node; when: hasChild\"\n >\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark2\">\n <div\n class=\"node-content-wrapper nested-tree-node\"\n cdkDrag\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <span\n cdkTreeNodeToggle\n class=\"toggle-children-wrapper\"\n [ngClass]=\"onNodeExpand(node)\"\n ><span class=\"toggle-children\"></span\n ></span>\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark2>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n <div class=\"nested-tree-node-children\" *ngIf=\"treeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n</cdk-tree>\n" }]
|
|
366
|
-
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { bookmarkNodes: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], zoom: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], rotate: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], parentScrollTop: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], goToDestination: [{
|
|
375
|
-
type: Output
|
|
376
|
-
}], treeHasChanged: [{
|
|
377
|
-
type: Output
|
|
378
|
-
}] } });
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9ib29rbWFya3MvYm9va21hcmtzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9ib29rbWFya3MvYm9va21hcmtzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuSixPQUFPLEtBQUssa0JBQWtCLE1BQU0sZ0RBQWdELENBQUM7QUFHckYsT0FBTyxLQUFLLFlBQVksTUFBTSxnREFBZ0QsQ0FBQztBQUUvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7OztBQVF2RSxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLElBQ0ksYUFBYSxDQUFDLEtBQWlC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a0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGNBQWM7MEVBT3BCLGFBQWE7c0JBRGhCLEtBQUs7Z0JBWUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2ttYXJrIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi9zdG9yZS9tb2RlbHMvYm9va21hcmtzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcmVhdGVCb29rbWFyaywgRGVsZXRlQm9va21hcmssIE1vdmVCb29rbWFyaywgVXBkYXRlQm9va21hcmssIFVwZGF0ZUJvb2ttYXJrU2Nyb2xsVG9wIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUvYWN0aW9ucy9ib29rbWFyay5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGJvb2ttYXJrc1NlbGVjdG9ycyBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZS9zZWxlY3RvcnMvYm9va21hcmsuc2VsZWN0b3JzJztcbmltcG9ydCB7IEFubm90YXRpb25TZXRTdGF0ZSB9IGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2Fubm90YXRpb25zLnJlZHVjZXInO1xuaW1wb3J0IHsgRG9jdW1lbnRQYWdlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2RvY3VtZW50LnJlZHVjZXInO1xuaW1wb3J0ICogYXMgZnJvbURvY3VtZW50IGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9kb2N1bWVudC5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbUJvb2ttYXJrcyBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9ib29rbWFya3MucmVkdWNlcic7XG5pbXBvcnQgeyBnZXRCb29rbWFya0NoaWxkcmVuIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUvYm9va21hcmtzLXN0b3JlLXV0aWxzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBBcnJheURhdGFTb3VyY2UsIFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCwgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1ib29rbWFya3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va21hcmtzLmNvbXBvbmVudC5odG1sJ1xufSlcblxuZXhwb3J0IGNsYXNzIEJvb2ttYXJrc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpXG4gIHNldCBib29rbWFya05vZGVzKHZhbHVlOiBCb29rbWFya1tdKSB7XG4gICAgdGhpcy5yZWJ1aWxkVHJlZUZvckRhdGEodmFsdWUpO1xuICAgIGlmICh0aGlzLl9ib29rbWFya05vZGVzICYmIHRoaXMuc29ydE1vZGUgIT09IHRoaXMuY3VzdG9tU29ydCkge1xuICAgICAgdGhpcy5zb3J0Qm9va21hcmtzKCk7XG4gICAgfVxuICB9O1xuXG4gIGdldCBib29rbWFya05vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9ib29rbWFya05vZGVzO1xuICB9O1xuXG4gIEBJbnB1dCgpIHpvb206IG51bWJlcjtcbiAgQElucHV0KCkgcm90YXRlOiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhcmVudFNjcm9sbFRvcDogbnVtYmVyO1xuICBAT3V0cHV0KCkgZ29Ub0Rlc3RpbmF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIHRyZWVIYXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG5cbiAgcHJpdmF0ZSBfYm9va21hcmtOb2RlczogQm9va21hcmtbXSA9IFtdO1xuICBkYXRhc291cmNlOiBBcnJheURhdGFTb3VyY2U8Qm9va21hcms+O1xuICB0cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPEJvb2ttYXJrPjtcbiAgaG92ZXJlZE5vZGU6IEJvb2ttYXJrO1xuICBob3Zlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgLy8gZXhwYW5zaW9uIG1vZGVsIHRyYWNrcyBleHBhbnNpb24gc3RhdGVcbiAgZXhwYW5zaW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWw8Qm9va21hcms+KHRydWUpO1xuICBpc0RyYWdnaW5nT24gPSBmYWxzZTtcbiAgaXNVc2VyZHJhZ2dpbmcgPSBmYWxzZTtcbiAgZXhwYW5kVGltZW91dDogYW55O1xuICBleHBhbmREZWxheSA9IDEwMDA7XG4gIGRyYWdOb2RlSW5zZXJ0VG9QYXJlbnQ6IGJvb2xlYW47XG5cbiAgcGFnZUxvb2t1cDogeyBbcGFnZUlkOiBudW1iZXJdOiBEb2N1bWVudFBhZ2VzIH0gPSB7fTtcbiAgZWRpdGFibGVCb29rbWFyazogc3RyaW5nO1xuICBCT09LTUFSS19DSEFSX0xJTUlUID0gMzA7XG5cbiAgZHJhZ05vZGU6IGFueTtcbiAgZHJhZ05vZGVFeHBhbmRPdmVyV2FpdFRpbWVNcyA9IDMwMDtcbiAgZHJhZ05vZGVFeHBhbmRPdmVyTm9kZTogYW55O1xuICBkcmFnTm9kZUV4cGFuZE92ZXJUaW1lOiBudW1iZXI7XG4gIGRyYWdOb2RlRXhwYW5kT3ZlckFyZWE6IG51bWJlcjtcblxuXG4gIG9wdGlvbnMgPSB7XG4gICAgYWxsb3dEcmFnOiB0cnVlLFxuICAgIGFsbG93RHJvcDogdHJ1ZVxuICB9O1xuXG4gICRzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHNvcnRNb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tU29ydCA9ICdDVVNUT00nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wb3NpdGlvblNvcnQgPSAnUE9TSVRJT04nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21Cb29rbWFya3MuQm9va21hcmtzU3RhdGUgfCBBbm5vdGF0aW9uU2V0U3RhdGU+KSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRNb2RlID0gdGhpcy5jdXN0b21Tb3J0O1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbiA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoYm9va21hcmtzU2VsZWN0b3JzLmdldEVkaXRhYmxlQm9va21hcmspKVxuICAgICAgLnN1YnNjcmliZShlZGl0YWJsZUlkID0+IHRoaXMuZWRpdGFibGVCb29rbWFyayA9IGVkaXRhYmxlSWQpO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbi5hZGQodGhpcy5zdG9yZS5zZWxlY3QoZnJvbURvY3VtZW50LmdldFBhZ2VzKVxuICAgICAgLnN1YnNjcmliZShwYWdlcyA9PiB7XG5cbiAgICAgICAgT2JqZWN0LmtleXMocGFnZXMpLm1hcChrZXkgPT4ge1xuICAgICAgICAgIHRoaXMucGFnZUxvb2t1cFtrZXldID0gcGFnZXNba2V5XTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcz8uYm9va21hcmtOb2Rlcykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUJvb2ttYXJrU2Nyb2xsVG9wKHRoaXMucGFyZW50U2Nyb2xsVG9wKSk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZWRpdEJvb2ttYXJrKGlkKSB7XG4gICAgdGhpcy5lZGl0YWJsZUJvb2ttYXJrID0gaWQ7XG4gIH1cblxuICBvbkFkZEJvb2ttYXJrQ2xpY2soKSB7XG4gICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChib29rbWFya3NTZWxlY3RvcnMuZ2V0Qm9va21hcmtJbmZvKSwgdGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGJvb2ttYXJrSW5mbykgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDcmVhdGVCb29rbWFyayh7XG4gICAgICAgICAgLi4uYm9va21hcmtJbmZvLCBuYW1lOiAnJywgaWQ6IHV1aWQoKVxuICAgICAgICB9IGFzIGFueSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBkZWxldGVCb29rbWFyazIobm9kZTogQm9va21hcmspIHtcbiAgICB0aGlzLmN1c3RvbVNvcnRCb29rbWFya3MoKTtcbiAgICBsZXQgbmV4dDogQm9va21hcms7XG5cbiAgICBjb25zdCBjaGFuZ2VkRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rbWFya05vZGVzKSk7XG4gICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLmZpbmROb2RlU2libGluZ3MoY2hhbmdlZERhdGEsIG5vZGUuaWQpO1xuICAgIGlmIChzaWJsaW5ncyAmJiBzaWJsaW5ncy5sZW5ndGggPiBub2RlLmluZGV4ICsgMSkge1xuICAgICAgbmV4dCA9IHNpYmxpbmdzW25vZGUuaW5kZXggKyAxXTtcbiAgICAgIG5leHQucHJldmlvdXMgPSBub2RlLnByZXZpb3VzO1xuICAgIH1cbiAgICBjb25zdCB0b0RlbGV0ZSA9IFtub2RlLmlkLCAuLi5nZXRCb29rbWFya0NoaWxkcmVuKG5vZGUuY2hpbGRyZW4pXTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBEZWxldGVCb29rbWFyayh7XG4gICAgICBkZWxldGVkOiB0b0RlbGV0ZSwgdXBkYXRlZDogbmV4dFxuICAgIH0pKTtcbiAgfVxuXG4gIHVwZGF0ZUJvb2ttYXJrKGJvb2ttYXJrOiBCb29rbWFyaywgbmFtZSkge1xuICAgIGNvbnN0IGVkaXRlZEJvb2ttYXJrID0ge1xuICAgICAgLi4uYm9va21hcmssXG4gICAgICBuYW1lXG4gICAgfTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlQm9va21hcmsoZWRpdGVkQm9va21hcmspKTtcbiAgICAgIHRoaXMuZWRpdGFibGVCb29rbWFyayA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBnb1RvQm9va21hcmsoYm9va21hcms6IEJvb2ttYXJrKSB7XG4gICAgY29uc3QgdGhpc1BhZ2UgPSB0aGlzLnBhZ2VMb29rdXBbYm9va21hcmsucGFnZU51bWJlciArIDFdO1xuICAgIGNvbnN0IGRlZmF1bHRIZWlnaHQgPSB0aGlzUGFnZS5zdHlsZXMuaGVpZ2h0O1xuICAgIGNvbnN0IGRlZmF1bHRTY2FsZVkgPSB0aGlzLnNjYWxlZFkoYm9va21hcmsueUNvb3JkaW5hdGUsIGRlZmF1bHRIZWlnaHQsIHRoaXNQYWdlKTtcblxuICAgIGxldCB0b3AgPSAwLCBsZWZ0ID0gMDtcbiAgICBzd2l0Y2ggKHRoaXMucm90YXRlKSB7XG4gICAgICBjYXNlIDkwOlxuICAgICAgICBsZWZ0ID0gLSBkZWZhdWx0U2NhbGVZO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTgwOlxuICAgICAgICB0b3AgPSB0aGlzLnNjYWxlZFkoYm9va21hcmsueUNvb3JkaW5hdGUsIChkZWZhdWx0SGVpZ2h0IC0gKDI0ICogdGhpcy56b29tKSksIHRoaXNQYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI3MDpcbiAgICAgICAgbGVmdCA9IGRlZmF1bHRTY2FsZVk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdG9wID0gZGVmYXVsdFNjYWxlWTtcbiAgICB9XG5cbiAgICB0aGlzLmdvVG9EZXN0aW5hdGlvbi5lbWl0KFtcbiAgICAgIGJvb2ttYXJrLnBhZ2VOdW1iZXIsXG4gICAgICB7ICduYW1lJzogJ1hZWicgfSxcbiAgICAgIGxlZnQsXG4gICAgICB0b3BcbiAgICBdKTtcbiAgfVxuXG4gIGdldCBjdXN0b21Tb3J0KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21Tb3J0O1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uU29ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25Tb3J0O1xuICB9XG5cbiAgc29ydChtb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNvcnRNb2RlID0gbW9kZTtcbiAgICB0aGlzLnNvcnRCb29rbWFya3MoKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydEJvb2ttYXJrcygpIHtcbiAgICBzd2l0Y2ggKHRoaXMuc29ydE1vZGUpIHtcbiAgICAgIGNhc2UgdGhpcy5jdXN0b21Tb3J0OiB7XG4gICAgICAgIHRoaXMuY3VzdG9tU29ydEJvb2ttYXJrcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgdGhpcy5wb3NpdGlvblNvcnQ6IHtcbiAgICAgICAgdGhpcy5wb3NpdGlvblNvcnRCb29rbWFya3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMuY3VzdG9tU29ydEJvb2ttYXJrcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uU29ydEJvb2ttYXJrcygpIHtcbiAgICB0aGlzLmJvb2ttYXJrTm9kZXMuc29ydCgoYSwgYikgPT4gYS5wYWdlTnVtYmVyID09PSBiLnBhZ2VOdW1iZXIgPyBhLnlDb29yZGluYXRlIC0gYi55Q29vcmRpbmF0ZSA6IGEucGFnZU51bWJlciAtIGIucGFnZU51bWJlcik7XG4gICAgdGhpcy5pc0RyYWdnaW5nT24gPSBmYWxzZTtcbiAgICB0aGlzLnJlYnVpbGRUcmVlRm9yRGF0YSh0aGlzLmJvb2ttYXJrTm9kZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21Tb3J0Qm9va21hcmtzKCkge1xuICAgIGlmICh0aGlzLmJvb2ttYXJrTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5ib29rbWFya05vZGVzLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICB9XG4gICAgdGhpcy5pc0RyYWdnaW5nT24gPSB0cnVlO1xuICAgIHRoaXMucmVidWlsZFRyZWVGb3JEYXRhKHRoaXMuYm9va21hcmtOb2Rlcyk7XG4gIH1cblxuICBwcml2YXRlIHNjYWxlZFkoeUNvb3JkaW5hdGU6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHBhZ2U6IERvY3VtZW50UGFnZXMpOiBudW1iZXIge1xuICAgIGNvbnN0IHZpZXdwb3J0U2NhbGUgPSBwYWdlLnZpZXdwb3J0U2NhbGUgLyB0aGlzLnpvb207XG4gICAgcmV0dXJuICgoaGVpZ2h0IC8gdGhpcy56b29tKSAtIHlDb29yZGluYXRlKSAvIHZpZXdwb3J0U2NhbGU7XG4gIH1cblxuICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEJvb2ttYXJrKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0Tm9kZShib29rbWFya3MsIHBhcmVudElkKSB7XG4gICAgaWYgKHR5cGVvZiBib29rbWFya3MgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvb2ttYXJrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYm9va21hcmtzW2ldLmlkID09PSBwYXJlbnRJZCkge1xuICAgICAgICAgIHJldHVybiBbYm9va21hcmtzW2ldXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhID0gdGhpcy5nZXROb2RlKGJvb2ttYXJrc1tpXS5jaGlsZHJlbiwgcGFyZW50SWQpO1xuICAgICAgICBpZiAoYSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8Qm9va21hcms+KSB7XG5cbiAgICBpZiAoIWV2ZW50LmlzUG9pbnRlck92ZXJDb250YWluZXIgfHwgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkpIHJldHVybjtcblxuICAgIGNvbnN0IGhhc01vdmVkVXBUaGVUcmVlID0gZXZlbnQucHJldmlvdXNJbmRleCA+IGV2ZW50LmN1cnJlbnRJbmRleDtcbiAgICBjb25zdCBib29rbWFya05vZGVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fYm9va21hcmtOb2Rlcyk7XG4gICAgY29uc3QgY2hhbmdlZERhdGEgPSBKU09OLnBhcnNlKGJvb2ttYXJrTm9kZXNTdHJpbmcpO1xuICAgIGNvbnN0IHZpc2libGVOb2RlcyA9IHRoaXMudmlzaWJsZU5vZGVzKHRoaXMuX2Jvb2ttYXJrTm9kZXMpO1xuICAgIGNvbnN0IHRvTm9kZSA9IHZpc2libGVOb2Rlc1tldmVudC5jdXJyZW50SW5kZXhdIGFzIEJvb2ttYXJrO1xuICAgIGNvbnN0IHRvTm9kZVNpYmxpbmdzID0gdGhpcy5maW5kTm9kZVNpYmxpbmdzKGNoYW5nZWREYXRhLCB0b05vZGUuaWQpO1xuXG4gICAgY29uc3QgdG9Ob2RlUGFyZW50ID0gdG9Ob2RlU2libGluZ3NbMF0ucGFyZW50O1xuICAgIGNvbnN0IHRvSW5kZXggPSB0b05vZGVTaWJsaW5ncy5maW5kSW5kZXgocyA9PiBzLmlkID09PSB0b05vZGUuaWQpO1xuXG4gICAgY29uc3QgZnJvbU5vZGUgPSBldmVudC5pdGVtLmRhdGEgYXMgQm9va21hcms7XG4gICAgY29uc3QgZnJvbU5vZGVTaWJsaW5ncyA9IHRoaXMuZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgZnJvbU5vZGUuaWQpO1xuICAgIGNvbnN0IGZyb21JbmRleCA9IGZyb21Ob2RlU2libGluZ3MuZmluZEluZGV4KG4gPT4gbi5pZCA9PT0gZnJvbU5vZGUuaWQpO1xuXG4gICAgaWYgKHRoaXMuaXNUb05vZGVDaGlsZE9mRnJvbU5vZGUoZnJvbU5vZGU/LmNoaWxkcmVuLCB0b05vZGUpKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5kcmFnTm9kZUluc2VydFRvUGFyZW50KSB7XG5cbiAgICAgIGNvbnN0IGluZGV4T2ZQYXJlbnQgPSB0b05vZGVTaWJsaW5ncy5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LmlkID09PSB0b05vZGUuaWQpO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRvTm9kZVNpYmxpbmdzW2luZGV4T2ZQYXJlbnRdO1xuICAgICAgY29uc3QgZmlyc3RDaGlsZCA9IHBhcmVudE5vZGU/LmNoaWxkcmVuICYmIHBhcmVudE5vZGU/LmNoaWxkcmVuLmxlbmd0aCA+IDAgPyBwYXJlbnROb2RlLmNoaWxkcmVuWzBdIDogbnVsbDtcbiAgICAgIGxldCBtb3ZlZEJvb2ttYXJrc1dpdGhQYXJlbnQgPSBbeyAuLi5mcm9tTm9kZSwgcGFyZW50OiBwYXJlbnROb2RlLmlkLCBwcmV2aW91czogbnVsbCB9XTtcblxuICAgICAgaWYgKGZpcnN0Q2hpbGQpIHtcbiAgICAgICAgbW92ZWRCb29rbWFya3NXaXRoUGFyZW50ID0gWy4uLm1vdmVkQm9va21hcmtzV2l0aFBhcmVudCwgeyAuLi5maXJzdENoaWxkLCBwcmV2aW91czogZnJvbU5vZGUuaWQgfV07XG4gICAgICB9XG5cbiAgICAgIGxldCBmcm9tTm9kZVNpYmxpbmcgPSB0aGlzLmdldFNpYmxpbmdGcm9tQWxsU2libGlpbmdzKGZyb21Ob2RlU2libGluZ3MsIGZyb21JbmRleCArIDEpO1xuICAgICAgY29uc3QgbmV4dEZyb21pbmRleGZvclBhcmVudCA9IGZyb21JbmRleCArIDE7XG4gICAgICBmcm9tTm9kZVNpYmxpbmcgPSBmcm9tTm9kZVNpYmxpbmcgJiYgZnJvbU5vZGVTaWJsaW5nLmlkID09PSBmcm9tTm9kZS5wcmV2aW91cyA/IHRoaXMuZ2V0U2libGluZ0Zyb21BbGxTaWJsaWluZ3MoZnJvbU5vZGVTaWJsaW5ncywgbmV4dEZyb21pbmRleGZvclBhcmVudCArIDEpIDogZnJvbU5vZGVTaWJsaW5nO1xuXG4gICAgICBpZiAoZnJvbU5vZGVTaWJsaW5nICYmIGZyb21Ob2RlU2libGluZy5pZCAhPT0gcGFyZW50Tm9kZS5pZCkge1xuICAgICAgICBtb3ZlZEJvb2ttYXJrc1dpdGhQYXJlbnQgPSBbLi4ubW92ZWRCb29rbWFya3NXaXRoUGFyZW50LCB7IC4uLmZyb21Ob2RlU2libGluZywgcHJldmlvdXM6IGZyb21Ob2RlLnByZXZpb3VzIH1dO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJldmlvdXNTaWJsaW5nRm9yUGFyZW50SW5kZXggPSB0b0luZGV4IC0gMTtcbiAgICAgIGxldCBwYXJlbnROb2RlU2libGluZyA9IHRoaXMuZ2V0U2libGluZ0Zyb21BbGxTaWJsaWluZ3ModG9Ob2RlU2libGluZ3MsIHByZXZpb3VzU2libGluZ0ZvclBhcmVudEluZGV4KTtcblxuICAgICAgaWYgKHBhcmVudE5vZGVTaWJsaW5nICYmIHBhcmVudE5vZGVTaWJsaW5nLmlkID09IGZyb21Ob2RlLmlkKSB7XG4gICAgICAgIHByZXZpb3VzU2libGluZ0ZvclBhcmVudEluZGV4ID0gcHJldmlvdXNTaWJsaW5nRm9yUGFyZW50SW5kZXggLSAxO1xuICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nRm9yUGFyZW50SW5kZXggPj0gMCkge1xuICAgICAgICAgIHBhcmVudE5vZGVTaWJsaW5nID0gdGhpcy5nZXRTaWJsaW5nRnJvbUFsbFNpYmxpaW5ncyh0b05vZGVTaWJsaW5ncywgcHJldmlvdXNTaWJsaW5nRm9yUGFyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHBhcmVudE5vZGVTaWJsaW5nID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtb3ZlZEJvb2ttYXJrc1dpdGhQYXJlbnQgPSBbLi4ubW92ZWRCb29rbWFya3NXaXRoUGFyZW50LCB7IC4uLnBhcmVudE5vZGUsIHByZXZpb3VzOiBwYXJlbnROb2RlU2libGluZz8uaWQgfV07XG5cbiAgICAgIGNvbnN0IGhhc1BhcmVudER1cHMgPSAobW92ZWRCb29rbWFya3NXaXRoUGFyZW50IGFzIEJvb2ttYXJrW10pLm1hcCh4ID0+IHguaWQpLnNvbWUoZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgYXJyYXkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLnNvbWUgd2lsbCBicmVhayBhcyBzb29uIGFzIGR1cGxpY2F0ZSBmb3VuZCAobm8gbmVlZCB0byBpdHRlcmF0ZSBvdmVyIGFsbCBhcnJheSlcbiAgICAgICAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpICE9PSBhcnJheS5sYXN0SW5kZXhPZih2YWx1ZSk7ICAgLy8gY29tcGFyaW5nIGZpcnN0IGFuZCBsYXN0IGluZGV4ZXMgb2YgdGhlIHNhbWUgdmFsdWVcbiAgICAgIH0pXG4gICAgICBpZiAoaGFzUGFyZW50RHVwcyB8fCBtb3ZlZEJvb2ttYXJrc1dpdGhQYXJlbnQgJiYgbW92ZWRCb29rbWFya3NXaXRoUGFyZW50Lmxlbmd0aCA8PSAxKSByZXR1cm47XG5cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE1vdmVCb29rbWFyayhtb3ZlZEJvb2ttYXJrc1dpdGhQYXJlbnQpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRvTm9kZVNpYmxpbmdzKSByZXR1cm47XG5cbiAgICBjb25zdCBmcm9tTm9kZVByZXZpb3VzID0gaGFzTW92ZWRVcFRoZVRyZWUgPyB0b05vZGUucHJldmlvdXMgOiB0b05vZGUuaWQ7XG4gICAgbGV0IG1vdmVkQm9va21hcmtzID0gW3tcbiAgICAgIC4uLmZyb21Ob2RlLFxuICAgICAgcHJldmlvdXM6IHRvTm9kZS5pbmRleCA+IDAgPyBmcm9tTm9kZVByZXZpb3VzIDogdW5kZWZpbmVkLFxuICAgICAgcGFyZW50OiB0b05vZGVQYXJlbnRcbiAgICB9XTtcblxuICAgIGxldCBmcm9tTm9kZVNpYmxpbmcgPSB0aGlzLmdldFNpYmxpbmdGcm9tQWxsU2libGlpbmdzKGZyb21Ob2RlU2libGluZ3MsIGZyb21JbmRleCArIDEpO1xuICAgIGNvbnN0IG5leHRGcm9taW5kZXggPSBmcm9tSW5kZXggKyAxO1xuICAgIGZyb21Ob2RlU2libGluZyA9IGZyb21Ob2RlU2libGluZyAmJiBmcm9tTm9kZVNpYmxpbmcuaWQgPT09IGZyb21Ob2RlLnByZXZpb3VzID8gdGhpcy5nZXRTaWJsaW5nRnJvbUFsbFNpYmxpaW5ncyhmcm9tTm9kZVNpYmxpbmdzLCBuZXh0RnJvbWluZGV4ICsgMSkgOiBmcm9tTm9kZVNpYmxpbmc7XG5cbiAgICBpZiAoZnJvbU5vZGVTaWJsaW5nKSB7XG4gICAgICBtb3ZlZEJvb2ttYXJrcyA9IFsuLi5tb3ZlZEJvb2ttYXJrcywgeyAuLi5mcm9tTm9kZVNpYmxpbmcsIHByZXZpb3VzOiBmcm9tTm9kZS5wcmV2aW91cyB9XTtcbiAgICB9XG5cblxuICAgIGxldCB0b05vZGVTaWJsaW5nSW5kZXggPSBoYXNNb3ZlZFVwVGhlVHJlZSA/IHRvSW5kZXggOiB0b0luZGV4ICsgMTtcbiAgICBsZXQgdG9Ob2RlU2libGluZyA9IHRoaXMuZ2V0U2libGluZ0Zyb21BbGxTaWJsaWluZ3ModG9Ob2RlU2libGluZ3MsIHRvTm9kZVNpYmxpbmdJbmRleCk7XG5cbiAgICBpZiAodG9Ob2RlU2libGluZykge1xuICAgICAgbW92ZWRCb29rbWFya3MgPSBbLi4ubW92ZWRCb29rbWFya3MsIHsgLi4udG9Ob2RlU2libGluZywgcHJldmlvdXM6IGZyb21Ob2RlLmlkIH1dO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0R1cHMgPSAobW92ZWRCb29rbWFya3MgYXMgQm9va21hcmtbXSkubWFwKHggPT4geC5pZCkuc29tZShmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBhcnJheSkge1xuICAgICAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpICE9PSBhcnJheS5sYXN0SW5kZXhPZih2YWx1ZSk7ICAgLy8gY29tcGFyaW5nIGZpcnN0IGFuZCBsYXN0IGluZGV4ZXMgb2YgdGhlIHNhbWUgdmFsdWVcbiAgICB9KVxuICAgIGlmIChoYXNEdXBzIHx8IG1vdmVkQm9va21hcmtzICYmIG1vdmVkQm9va21hcmtzLmxlbmd0aCA8PSAxKSByZXR1cm47XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBNb3ZlQm9va21hcmsobW92ZWRCb29rbWFya3MpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2libGluZ0Zyb21BbGxTaWJsaWluZ3Moc2libGluZzogQm9va21hcmtbXSwgaW5kZXgpIHtcbiAgICByZXR1cm4gc2libGluZy5sZW5ndGggPiBpbmRleCA/IHNpYmxpbmdbaW5kZXhdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZHJhZ1N0YXJ0KCkge1xuICAgIHRoaXMuZHJhZ05vZGVJbnNlcnRUb1BhcmVudCA9IGZhbHNlO1xuICAgIHRoaXMuaG92ZXJlZE5vZGUgPSBudWxsO1xuICAgIHRoaXMuaXNVc2VyZHJhZ2dpbmcgPSB0cnVlO1xuICB9XG5cbiAgZHJhZ0VuZCgpIHtcbiAgICB0aGlzLmlzVXNlcmRyYWdnaW5nID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaG92ZXJIdG1sRWxlbWVudD8uc3R5bGUpIHtcbiAgICAgIHRoaXMuaG92ZXJIdG1sRWxlbWVudC5zdHlsZS5ib3JkZXJSaWdodCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdIb3ZlcihldmVudDogYW55LCBub2RlOiBCb29rbWFyaykge1xuICAgIGlmICh0aGlzLmlzVXNlcmRyYWdnaW5nKSB7XG4gICAgICBjb25zdCBuZXdFdmVudDogYW55ID0gZXZlbnQ7XG4gICAgICBjb25zdCBwZXJjZW50YWdlWCA9IG5ld0V2ZW50Lm9mZnNldFggLyBuZXdFdmVudC50YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICBpZiAocGVyY2VudGFnZVggPiAuNTUpIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkTm9kZSA9IG5vZGU7XG4gICAgICAgIGlmICh0aGlzLmhvdmVySHRtbEVsZW1lbnQ/LnN0eWxlKSB7XG4gICAgICAgICAgdGhpcy5ob3Zlckh0bWxFbGVtZW50LnN0eWxlLmJvcmRlclJpZ2h0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob3Zlckh0bWxFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgdGhpcy5ob3Zlckh0bWxFbGVtZW50LnN0eWxlLmJvcmRlclJpZ2h0ID0gJzVweCBzb2xpZCAjMDA3YmZmJztcbiAgICAgICAgdGhpcy5kcmFnTm9kZUluc2VydFRvUGFyZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaG92ZXJlZE5vZGUgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5ob3Zlckh0bWxFbGVtZW50Py5zdHlsZSkge1xuICAgICAgICAgIHRoaXMuaG92ZXJIdG1sRWxlbWVudC5zdHlsZS5ib3JkZXJSaWdodCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJhZ05vZGVJbnNlcnRUb1BhcmVudCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRyYWdIb3ZlckVuZChldmVudDogYW55LCBub2RlOiBCb29rbWFyaykge1xuICAgIGlmICh0aGlzLmlzVXNlcmRyYWdnaW5nKSB7XG4gICAgICBpZiAoIW5vZGUgfHwgdGhpcy5ob3ZlcmVkTm9kZT8uaWQgIT09IG5vZGUuaWQpIHtcbiAgICAgICAgdGhpcy5kcmFnTm9kZUluc2VydFRvUGFyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmhvdmVySHRtbEVsZW1lbnQ/LnN0eWxlKSB7XG4gICAgICAgICAgdGhpcy5ob3Zlckh0bWxFbGVtZW50LnN0eWxlLmJvcmRlclJpZ2h0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob3ZlcmVkTm9kZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Ob2RlRXhwYW5kKG5vZGU6IEJvb2ttYXJrKSB7XG4gICAgY29uc3QgaXNFeHBhbmRlZCA9IHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKTtcbiAgICByZXR1cm4gaXNFeHBhbmRlZCA/IFwidG9nZ2xlLWNoaWxkcmVuLXdyYXBwZXItZXhwYW5kZWRcIiA6IFwidG9nZ2xlLWNoaWxkcmVuLXdyYXBwZXItY29sbGFwc2VkXCI7XG4gIH1cblxuICB2aXNpYmxlTm9kZXMoYm9va21hcmtzOiBCb29rbWFya1tdKTogQm9va21hcmtbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICBmdW5jdGlvbiBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGU6IEJvb2ttYXJrLCBleHBhbmRlZDogQm9va21hcmtbXSkge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICBpZiAoZXhwYW5kZWQuc29tZShib29rbWFyayA9PiBib29rbWFyayAmJiBib29rbWFyay5pZCA9PT0gbm9kZS5pZCkgJiYgbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBub2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGFkZEV4cGFuZGVkQ2hpbGRyZW4oY2hpbGQsIGV4cGFuZGVkKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGJvb2ttYXJrcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGUsIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5zaW9uTW9kZWwuc2VsZWN0ZWQpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaW5kTm9kZVNpYmxpbmdzKGFycjogQXJyYXk8YW55PiwgaWQ6IHN0cmluZyk6IEFycmF5PGFueT4ge1xuICAgIGxldCByZXN1bHQsIHN1YlJlc3VsdDtcbiAgICBhcnIuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaWQgPT09IGlkKSB7XG4gICAgICAgIHJlc3VsdCA9IGFycjtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY2hpbGRyZW4pIHtcbiAgICAgICAgc3ViUmVzdWx0ID0gdGhpcy5maW5kTm9kZVNpYmxpbmdzKGl0ZW0uY2hpbGRyZW4sIGlkKTtcbiAgICAgICAgaWYgKHN1YlJlc3VsdCkgcmVzdWx0ID0gc3ViUmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWJ1aWxkVHJlZUZvckRhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy5fYm9va21hcmtOb2RlcyA9IGRhdGEgPz8gW107XG4gICAgdGhpcy5kYXRhc291cmNlID0gbmV3IEFycmF5RGF0YVNvdXJjZSh0aGlzLl9ib29rbWFya05vZGVzKTtcbiAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IE5lc3RlZFRyZWVDb250cm9sPEJvb2ttYXJrPihub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xuICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzID0gdGhpcy5fYm9va21hcmtOb2RlcztcbiAgICB0aGlzLmV4cGFuc2lvbk1vZGVsLnNlbGVjdGVkLmZvckVhY2goKGJvb2ttYXJrKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobikgPT4gbi5pZCA9PT0gYm9va21hcmsuaWQpO1xuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XG4gICAgfSk7XG4gICAgdGhpcy50cmVlSGFzQ2hhbmdlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgaXNUb05vZGVDaGlsZE9mRnJvbU5vZGUoZnJvbU5vZGVDaGlsZHJlbjogQm9va21hcmtbXSwgdG9Ob2RlOiBCb29rbWFyaykge1xuXG4gICAgaWYgKCFmcm9tTm9kZUNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXROb2RlKGZyb21Ob2RlQ2hpbGRyZW4sIHRvTm9kZS5pZCk7XG4gICAgcmV0dXJuIHJlc3VsdCA/IHRydWUgOiBmYWxzZTtcbiAgfVxufVxuIiwiPGEgKm5nSWY9XCJib29rbWFya05vZGVzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImhpZ2hsaWdodGVkT3V0bGluZUl0ZW1cIlxuICA+Tm8gYm9va21hcmtzIGNyZWF0ZWQgeWV0PC9hXG4+XG48Y2RrLXRyZWVcbiAgY2RrRHJvcExpc3RcbiAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzRHJhZ2dpbmdPblwiXG4gIGNsYXNzPVwiYm9va21hcmtzLXRyZWVcIlxuICAqbmdJZj1cImRhdGFzb3VyY2VcIlxuICBbZGF0YVNvdXJjZV09XCJkYXRhc291cmNlXCJcbiAgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuPlxuICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgbGVhZiBub2RlcyAtLT5cbiAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlIGNsYXNzPVwibm9kZS13cmFwcGVyXCIgKmNka1RyZWVOb2RlRGVmPVwibGV0IG5vZGVcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibm9kZS5pZCAhPT0gZWRpdGFibGVCb29rbWFyazsgZWxzZSBpbnB1dEJvb2ttYXJrXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibm9kZS1jb250ZW50LXdyYXBwZXIgbmVzdGVkLXRyZWUtbm9kZSBuZXN0LXRyZWUtbm9kZS1wYWRkaW5nXCJcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBjZGtEcmFnQm91bmRhcnk9XCIuYm9va21hcmtzLXRyZWVcIlxuICAgICAgICBbY2RrRHJhZ0RhdGFdPVwibm9kZVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cImRyYWdIb3ZlcigkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiZHJhZ0hvdmVyRW5kKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiZHJhZ1N0YXJ0KClcIlxuICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cImRyYWdFbmQoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdXRsaW5lSXRlbVwiPlxuICAgICAgICAgIDxhIChjbGljayk9XCJnb1RvQm9va21hcmsobm9kZSlcIj5cbiAgICAgICAgICAgIHt7IG5vZGUubmFtZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJvb2ttYXJrX19yZW5hbWVcIlxuICAgICAgICAgIChjbGljayk9XCJlZGl0Qm9va21hcmsobm9kZS5pZClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJvb2ttYXJrX19kZWxldGVcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVCb29rbWFyazIobm9kZSlcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5vZGUtZHJvcC1zbG90XCI+PC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjaW5wdXRCb29rbWFyaz5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjYm9va21hcmtOYW1lXG4gICAgICAgIGNsYXNzPVwiYm9va21hcmtfX2lucHV0XCJcbiAgICAgICAgW3ZhbHVlXT1cIm5vZGUubmFtZVwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiQk9PS01BUktfQ0hBUl9MSU1JVFwiXG4gICAgICAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJvb2ttYXJrX19zYXZlXCJcbiAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUJvb2ttYXJrKG5vZGUsIGJvb2ttYXJrTmFtZS52YWx1ZSlcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBleHBhbmRhYmxlIG5vZGVzIC0tPlxuICA8Y2RrLW5lc3RlZC10cmVlLW5vZGVcbiAgICBjbGFzcz1cIm5vZGUtd3JhcHBlclwiXG4gICAgKmNka1RyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCJcbiAgPlxuICAgIDxkaXYgKm5nSWY9XCJub2RlLmlkICE9PSBlZGl0YWJsZUJvb2ttYXJrOyBlbHNlIGlucHV0Qm9va21hcmsyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibm9kZS1jb250ZW50LXdyYXBwZXIgbmVzdGVkLXRyZWUtbm9kZVwiXG4gICAgICAgIGNka0RyYWdcbiAgICAgICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJkcmFnSG92ZXIoJGV2ZW50LCBub2RlKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImRyYWdIb3ZlckVuZCgkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cImRyYWdTdGFydCgpXCJcbiAgICAgICAgKGNka0RyYWdSZWxlYXNlZCk9XCJkcmFnRW5kKClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3V0bGluZUl0ZW1cIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2RrVHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWNoaWxkcmVuLXdyYXBwZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwib25Ob2RlRXhwYW5kKG5vZGUpXCJcbiAgICAgICAgICAgID48c3BhbiBjbGFzcz1cInRvZ2dsZS1jaGlsZHJlblwiPjwvc3BhblxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPGEgKGNsaWNrKT1cImdvVG9Cb29rbWFyayhub2RlKVwiPlxuICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm9va21hcmtfX3JlbmFtZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImVkaXRCb29rbWFyayhub2RlLmlkKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYm9va21hcmtfX2RlbGV0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUJvb2ttYXJrMihub2RlKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kZS1kcm9wLXNsb3RcIj48L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNpbnB1dEJvb2ttYXJrMj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjYm9va21hcmtOYW1lXG4gICAgICAgIGNsYXNzPVwiYm9va21hcmtfX2lucHV0XCJcbiAgICAgICAgW3ZhbHVlXT1cIm5vZGUubmFtZVwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiQk9PS01BUktfQ0hBUl9MSU1JVFwiXG4gICAgICAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJvb2ttYXJrX19zYXZlXCJcbiAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUJvb2ttYXJrKG5vZGUsIGJvb2ttYXJrTmFtZS52YWx1ZSlcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm5lc3RlZC10cmVlLW5vZGUtY2hpbGRyZW5cIiAqbmdJZj1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgY2RrVHJlZU5vZGVPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG48L2Nkay10cmVlPlxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvc2lkZS1iYXIvYm9va21hcmtzL2Jvb2ttYXJrcy5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJvb2ttYXJrIHtcbiAgaWQ6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhZ2VOdW1iZXI6IG51bWJlcjtcbiAgeENvb3JkaW5hdGU6IG51bWJlcjtcbiAgeUNvb3JkaW5hdGU6IG51bWJlcjtcbiAgY2hpbGRyZW46IGFueVtdO1xuICBwcmV2aW91czogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2ttYXJrc1BlclBhZ2Uge1xuICBib29rbWFyazogeyBbaWQ6IHN0cmluZ106IEJvb2ttYXJrIH07XG4gIHN0eWxlczogeyBsZWZ0OiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB3aWR0aDogbnVtYmVyIH07XG59XG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
export class OutlineItemComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.navigationEvent = new EventEmitter();
|
|
7
|
-
}
|
|
8
|
-
ngOnInit() {
|
|
9
|
-
this.showOutlineItems = true;
|
|
10
|
-
}
|
|
11
|
-
goToDestination(destination) {
|
|
12
|
-
if (destination) {
|
|
13
|
-
this.navigationEvent.emit(destination);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
toggleOutline() {
|
|
17
|
-
this.showOutlineItems = !this.showOutlineItems;
|
|
18
|
-
}
|
|
19
|
-
isViewedItem(current, next) {
|
|
20
|
-
if (current.pageNumber === this.currentPageNumber) {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
return next === undefined ? current.pageNumber <= this.currentPageNumber && this.endPage > this.currentPageNumber :
|
|
24
|
-
current.pageNumber <= this.currentPageNumber && (next.pageNumber > this.currentPageNumber);
|
|
25
|
-
}
|
|
26
|
-
findEndPage(next) {
|
|
27
|
-
return next === undefined ? this.endPage : next.pageNumber;
|
|
28
|
-
}
|
|
29
|
-
showHighlightOutlineCss() {
|
|
30
|
-
return this.isCurrentSection ? 'highlightedOutlineItem' : 'outlineItem';
|
|
31
|
-
}
|
|
32
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OutlineItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OutlineItemComponent, selector: "mv-outline-item", inputs: { outline: "outline", currentPageNumber: "currentPageNumber", isCurrentSection: "isCurrentSection", endPage: "endPage" }, outputs: { navigationEvent: "navigationEvent" }, ngImport: i0, template: "<div class=\"outlineItem\">\n <div *ngIf=\"outline.items.length > 0\"\n [ngClass]=\"{ 'outlineItemToggler': true, 'outlineItemsHidden': !showOutlineItems }\"\n (click)=\"toggleOutline()\"\n (keyup.enter)=\"toggleOutline()\" tabindex=\"0\"></div>\n <a (click)=\"goToDestination(outline?.dest)\"\n (keyup.enter)=\"goToDestination(outline?.dest)\"\n [style.font-weight]=\"outline.bold ? 'bold' : ''\"\n [style.font-style]=\"outline.italic ? 'italic' : ''\"\n [ngClass]=\"showHighlightOutlineCss()\"\n tabindex=\"0\">\n <div style=\"text-align:left;\" [ngClass]=\"showHighlightOutlineCss()\">\n {{ outline.title }}\n <span style=\"float:right;\">\n {{ outline.pageNumber }}\n </span>\n </div>\n </a>\n \n <div *ngIf=\"outline.items.length > 0\" class=\"outlineItems\">\n <div *ngFor=\"let outlineItem of outline.items; index as i\">\n <mv-outline-item\n [outline]=\"outlineItem\" \n [currentPageNumber]= \"currentPageNumber\" \n [isCurrentSection]= \"isViewedItem(outlineItem, outline.items[i+1])\"\n [endPage]=\"findEndPage(outline.items[i+1])\"\n (navigationEvent)=\"goToDestination($event)\">\n </mv-outline-item>\n </div>\n </div>\n</div>\n\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OutlineItemComponent, selector: "mv-outline-item", inputs: ["outline", "currentPageNumber", "isCurrentSection", "endPage"], outputs: ["navigationEvent"] }] }); }
|
|
34
|
-
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OutlineItemComponent, decorators: [{
|
|
36
|
-
type: Component,
|
|
37
|
-
args: [{ selector: 'mv-outline-item', template: "<div class=\"outlineItem\">\n <div *ngIf=\"outline.items.length > 0\"\n [ngClass]=\"{ 'outlineItemToggler': true, 'outlineItemsHidden': !showOutlineItems }\"\n (click)=\"toggleOutline()\"\n (keyup.enter)=\"toggleOutline()\" tabindex=\"0\"></div>\n <a (click)=\"goToDestination(outline?.dest)\"\n (keyup.enter)=\"goToDestination(outline?.dest)\"\n [style.font-weight]=\"outline.bold ? 'bold' : ''\"\n [style.font-style]=\"outline.italic ? 'italic' : ''\"\n [ngClass]=\"showHighlightOutlineCss()\"\n tabindex=\"0\">\n <div style=\"text-align:left;\" [ngClass]=\"showHighlightOutlineCss()\">\n {{ outline.title }}\n <span style=\"float:right;\">\n {{ outline.pageNumber }}\n </span>\n </div>\n </a>\n \n <div *ngIf=\"outline.items.length > 0\" class=\"outlineItems\">\n <div *ngFor=\"let outlineItem of outline.items; index as i\">\n <mv-outline-item\n [outline]=\"outlineItem\" \n [currentPageNumber]= \"currentPageNumber\" \n [isCurrentSection]= \"isViewedItem(outlineItem, outline.items[i+1])\"\n [endPage]=\"findEndPage(outline.items[i+1])\"\n (navigationEvent)=\"goToDestination($event)\">\n </mv-outline-item>\n </div>\n </div>\n</div>\n\n" }]
|
|
38
|
-
}], propDecorators: { outline: [{
|
|
39
|
-
type: Input
|
|
40
|
-
}], currentPageNumber: [{
|
|
41
|
-
type: Input
|
|
42
|
-
}], isCurrentSection: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], endPage: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], navigationEvent: [{
|
|
47
|
-
type: Output
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9vdXRsaW5lLWl0ZW0vb3V0bGluZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9vdXRsaW5lLWl0ZW0vb3V0bGluZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8vRSxNQUFNLE9BQU8sb0JBQW9CO0lBSmpDO1FBVVksb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBaUNoRDtJQTdCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQWdCO1FBQzlCLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZ0IsRUFBRSxJQUFhO1FBQzFDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakgsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBYTtRQUN2QixPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDN0QsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUMxRSxDQUFDO2tJQXRDVSxvQkFBb0I7c0hBQXBCLG9CQUFvQiwwT0NQakMsbXZDQWdDQSwyV0R6QmEsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdXRsaW5lIH0gZnJvbSAnLi9vdXRsaW5lLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtb3V0bGluZS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL291dGxpbmUtaXRlbS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgT3V0bGluZUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG91dGxpbmU6IE91dGxpbmU7XG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XG4gIEBJbnB1dCgpIGlzQ3VycmVudFNlY3Rpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVuZFBhZ2U6IG51bWJlcjtcbiAgQE91dHB1dCgpIG5hdmlnYXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzaG93T3V0bGluZUl0ZW1zOiBib29sZWFuO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2hvd091dGxpbmVJdGVtcyA9IHRydWU7XG4gIH1cblxuICBnb1RvRGVzdGluYXRpb24oZGVzdGluYXRpb246IGFueSkge1xuICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uRXZlbnQuZW1pdChkZXN0aW5hdGlvbik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlT3V0bGluZSgpIHtcbiAgICB0aGlzLnNob3dPdXRsaW5lSXRlbXMgPSAhdGhpcy5zaG93T3V0bGluZUl0ZW1zO1xuICB9XG5cbiAgaXNWaWV3ZWRJdGVtKGN1cnJlbnQ6IE91dGxpbmUsIG5leHQ6IE91dGxpbmUpOiBib29sZWFuIHtcbiAgICBpZiAoY3VycmVudC5wYWdlTnVtYmVyID09PSB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQgPT09IHVuZGVmaW5lZCA/IGN1cnJlbnQucGFnZU51bWJlciA8PSB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyICYmIHRoaXMuZW5kUGFnZSA+IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgOlxuICAgICAgY3VycmVudC5wYWdlTnVtYmVyIDw9IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgJiYgKG5leHQucGFnZU51bWJlciA+IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIpO1xuICB9XG5cbiAgZmluZEVuZFBhZ2UobmV4dDogT3V0bGluZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5leHQgPT09IHVuZGVmaW5lZCA/IHRoaXMuZW5kUGFnZSA6IG5leHQucGFnZU51bWJlcjtcbiAgfVxuXG4gIHNob3dIaWdobGlnaHRPdXRsaW5lQ3NzKCkge1xuICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFNlY3Rpb24gPyAnaGlnaGxpZ2h0ZWRPdXRsaW5lSXRlbScgOiAnb3V0bGluZUl0ZW0nO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib3V0bGluZUl0ZW1cIj5cbiAgPGRpdiAqbmdJZj1cIm91dGxpbmUuaXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgW25nQ2xhc3NdPVwieyAnb3V0bGluZUl0ZW1Ub2dnbGVyJzogdHJ1ZSwgJ291dGxpbmVJdGVtc0hpZGRlbic6ICFzaG93T3V0bGluZUl0ZW1zIH1cIlxuICAgICAgIChjbGljayk9XCJ0b2dnbGVPdXRsaW5lKClcIlxuICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVPdXRsaW5lKClcIiB0YWJpbmRleD1cIjBcIj48L2Rpdj5cbiAgPGEgKGNsaWNrKT1cImdvVG9EZXN0aW5hdGlvbihvdXRsaW5lPy5kZXN0KVwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJnb1RvRGVzdGluYXRpb24ob3V0bGluZT8uZGVzdClcIlxuICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwib3V0bGluZS5ib2xkID8gJ2JvbGQnIDogJydcIlxuICAgICBbc3R5bGUuZm9udC1zdHlsZV09XCJvdXRsaW5lLml0YWxpYyA/ICdpdGFsaWMnIDogJydcIlxuICAgICBbbmdDbGFzc109XCJzaG93SGlnaGxpZ2h0T3V0bGluZUNzcygpXCJcbiAgICAgdGFiaW5kZXg9XCIwXCI+XG4gICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246bGVmdDtcIiBbbmdDbGFzc109XCJzaG93SGlnaGxpZ2h0T3V0bGluZUNzcygpXCI+XG4gICAgICB7eyBvdXRsaW5lLnRpdGxlIH19XG4gICAgICA8c3BhbiBzdHlsZT1cImZsb2F0OnJpZ2h0O1wiPlxuICAgICAgICB7eyBvdXRsaW5lLnBhZ2VOdW1iZXIgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9hPlxuICBcbiAgPGRpdiAqbmdJZj1cIm91dGxpbmUuaXRlbXMubGVuZ3RoID4gMFwiIGNsYXNzPVwib3V0bGluZUl0ZW1zXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgb3V0bGluZUl0ZW0gb2Ygb3V0bGluZS5pdGVtczsgaW5kZXggYXMgaVwiPlxuICAgICAgPG12LW91dGxpbmUtaXRlbVxuICAgICAgICBbb3V0bGluZV09XCJvdXRsaW5lSXRlbVwiIFxuICAgICAgICBbY3VycmVudFBhZ2VOdW1iZXJdPSBcImN1cnJlbnRQYWdlTnVtYmVyXCIgXG4gICAgICAgIFtpc0N1cnJlbnRTZWN0aW9uXT0gXCJpc1ZpZXdlZEl0ZW0ob3V0bGluZUl0ZW0sIG91dGxpbmUuaXRlbXNbaSsxXSlcIlxuICAgICAgICBbZW5kUGFnZV09XCJmaW5kRW5kUGFnZShvdXRsaW5lLml0ZW1zW2krMV0pXCJcbiAgICAgICAgKG5hdmlnYXRpb25FdmVudCk9XCJnb1RvRGVzdGluYXRpb24oJGV2ZW50KVwiPlxuICAgICAgPC9tdi1vdXRsaW5lLWl0ZW0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9vdXRsaW5lLWl0ZW0vb3V0bGluZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBPdXRsaW5lIHtcbiAgYm9sZDogYm9vbGVhbjtcbiAgY29sb3I6IFVpbnQ4Q2xhbXBlZEFycmF5O1xuICBjb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBkZXN0OiBzdHJpbmcgfCBBcnJheTxhbnk+IHwgbnVsbDtcbiAgaXRhbGljOiBib29sZWFuO1xuICBpdGVtczogT3V0bGluZVtdO1xuICBuZXdXaW5kb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHBhZ2VOdW1iZXI/OiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHVuc2FmZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB1cmw6IHN0cmluZyB8IG51bGw7XG59XG4iXX0=
|