@hmcts/media-viewer 4.1.9-cme-776-angular-20 → 4.1.9-exui-1580

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.
Files changed (376) hide show
  1. package/assets/all.scss +1 -0
  2. package/assets/sass/pdf-viewer.scss +79 -1
  3. package/assets/sass/tooltip.scss +50 -0
  4. package/esm2022/hmcts-media-viewer.mjs +5 -0
  5. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +122 -0
  6. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +179 -0
  7. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +101 -0
  8. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/keyboard-text-highlight.directive.mjs +354 -0
  9. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
  10. package/esm2022/lib/annotations/annotation-set/annotation-set.model.mjs +2 -0
  11. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
  12. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +2 -0
  13. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
  14. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +2 -0
  15. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +145 -0
  16. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +99 -0
  17. package/esm2022/lib/annotations/annotations.module.mjs +162 -0
  18. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +178 -0
  19. package/esm2022/lib/annotations/comment-set/comment/comment.model.mjs +2 -0
  20. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
  21. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
  22. package/esm2022/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +31 -0
  23. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
  24. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +62 -0
  25. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
  26. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +72 -0
  27. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +55 -0
  28. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +123 -0
  29. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
  30. package/esm2022/lib/annotations/models/api-persisted.model.mjs +2 -0
  31. package/esm2022/lib/annotations/models/event-select.model.mjs +2 -0
  32. package/esm2022/lib/annotations/models/tags.model.mjs +2 -0
  33. package/esm2022/lib/annotations/models/user.model.mjs +2 -0
  34. package/esm2022/lib/annotations/pipes/date/date.pipe.mjs +26 -0
  35. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
  36. package/esm2022/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +16 -0
  37. package/esm2022/lib/annotations/services/annotation-api/annotation-api.service.mjs +58 -0
  38. package/esm2022/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +45 -0
  39. package/esm2022/lib/annotations/services/tags/tags.services.mjs +41 -0
  40. package/esm2022/lib/annotations/tags/tags.component.mjs +53 -0
  41. package/esm2022/lib/bookmark/components/bookmark-icons.component.mjs +25 -0
  42. package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +22 -0
  43. package/esm2022/lib/icp/icp-follower.service.mjs +65 -0
  44. package/esm2022/lib/icp/icp-presenter.service.mjs +56 -0
  45. package/esm2022/lib/icp/icp-session-api.service.mjs +28 -0
  46. package/esm2022/lib/icp/icp-update.service.mjs +73 -0
  47. package/esm2022/lib/icp/icp.events.mjs +15 -0
  48. package/esm2022/lib/icp/icp.interfaces.mjs +2 -0
  49. package/esm2022/lib/icp/icp.service.mjs +98 -0
  50. package/esm2022/lib/icp/participants-list/participants-list.component.mjs +32 -0
  51. package/esm2022/lib/icp/socket.service.mjs +128 -0
  52. package/esm2022/lib/media-viewer.component.mjs +247 -0
  53. package/esm2022/lib/media-viewer.module.mjs +142 -0
  54. package/esm2022/lib/print.service.mjs +32 -0
  55. package/esm2022/lib/redaction/components/redaction.component.mjs +91 -0
  56. package/esm2022/lib/redaction/services/redaction-api.service.mjs +50 -0
  57. package/esm2022/lib/redaction/services/redaction.model.mjs +2 -0
  58. package/esm2022/lib/shared/directives/tooltip-dismiss.directive.mjs +36 -0
  59. package/esm2022/lib/shared/gov-uk-date/gov-uk-date.component.mjs +28 -0
  60. package/esm2022/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +34 -0
  61. package/esm2022/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +63 -0
  62. package/esm2022/lib/shared/gov-uk-label/gov-uk-label.component.mjs +44 -0
  63. package/esm2022/lib/shared/shared.module.mjs +53 -0
  64. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +29 -0
  65. package/esm2022/lib/shared/util/services/number.helper.service.mjs +23 -0
  66. package/esm2022/lib/store/actions/annotation.actions.mjs +119 -0
  67. package/esm2022/lib/store/actions/bookmark.actions.mjs +112 -0
  68. package/esm2022/lib/store/actions/document.actions.mjs +91 -0
  69. package/esm2022/lib/store/actions/icp.actions.mjs +56 -0
  70. package/esm2022/lib/store/actions/redaction.actions.mjs +132 -0
  71. package/esm2022/lib/store/actions/tag.actions.mjs +21 -0
  72. package/esm2022/lib/store/bookmarks-store-utils.mjs +49 -0
  73. package/esm2022/lib/store/effects/annotation.effects.mjs +51 -0
  74. package/esm2022/lib/store/effects/bookmarks.effects.mjs +44 -0
  75. package/esm2022/lib/store/effects/document.effects.mjs +44 -0
  76. package/esm2022/lib/store/effects/icp.effects.mjs +26 -0
  77. package/esm2022/lib/store/effects/index.mjs +7 -0
  78. package/esm2022/lib/store/effects/redaction.effects.mjs +67 -0
  79. package/esm2022/lib/store/models/bookmarks.interface.mjs +2 -0
  80. package/esm2022/lib/store/models/filters.interface.mjs +2 -0
  81. package/esm2022/lib/store/reducers/annotations.reducer.mjs +208 -0
  82. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +125 -0
  83. package/esm2022/lib/store/reducers/document.reducer.mjs +158 -0
  84. package/esm2022/lib/store/reducers/icp.reducer.mjs +56 -0
  85. package/esm2022/lib/store/reducers/redaction.reducer.mjs +116 -0
  86. package/esm2022/lib/store/reducers/reducers.mjs +23 -0
  87. package/esm2022/lib/store/reducers/tags.reducer.mjs +93 -0
  88. package/esm2022/lib/store/selectors/annotation.selectors.mjs +81 -0
  89. package/esm2022/lib/store/selectors/bookmark.selectors.mjs +37 -0
  90. package/esm2022/lib/store/selectors/document.selectors.mjs +13 -0
  91. package/esm2022/lib/store/selectors/icp.selectors.mjs +13 -0
  92. package/esm2022/lib/store/selectors/redaction.selectors.mjs +26 -0
  93. package/esm2022/lib/store/selectors/tag.selectors.mjs +15 -0
  94. package/esm2022/lib/store/store-utils.mjs +131 -0
  95. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +46 -0
  96. package/esm2022/lib/toolbar/icp-event.service.mjs +44 -0
  97. package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +43 -0
  98. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +207 -0
  99. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +237 -0
  100. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +2 -0
  101. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +69 -0
  102. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
  103. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
  104. package/esm2022/lib/toolbar/toolbar-event.service.mjs +178 -0
  105. package/esm2022/lib/toolbar/toolbar.module.mjs +75 -0
  106. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
  107. package/esm2022/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +22 -0
  108. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +57 -0
  109. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
  110. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
  111. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +266 -0
  112. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +40 -0
  113. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +280 -0
  114. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +379 -0
  115. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +2 -0
  116. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
  117. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +2 -0
  118. package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +99 -0
  119. package/esm2022/lib/viewers/rotation-persist/rotation-api.service.mjs +27 -0
  120. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
  121. package/esm2022/lib/viewers/rotation-persist/rotation.model.mjs +2 -0
  122. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
  123. package/esm2022/lib/viewers/viewer-event.service.mjs +34 -0
  124. package/esm2022/lib/viewers/viewer-exception.model.mjs +13 -0
  125. package/esm2022/lib/viewers/viewer-util.service.mjs +20 -0
  126. package/esm2022/public_api.mjs +33 -0
  127. package/fesm2022/hmcts-media-viewer.mjs +1525 -1014
  128. package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
  129. package/hmcts-media-viewer.d.ts.map +1 -0
  130. package/index.d.ts +4 -2305
  131. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +48 -0
  132. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +1 -0
  133. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +36 -0
  134. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +1 -0
  135. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +18 -0
  136. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +1 -0
  137. package/lib/annotations/annotation-set/annotation-create/highlight-create/keyboard-text-highlight.directive.d.ts +63 -0
  138. package/lib/annotations/annotation-set/annotation-create/highlight-create/keyboard-text-highlight.directive.d.ts.map +1 -0
  139. package/lib/annotations/annotation-set/annotation-set.component.d.ts +27 -0
  140. package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +1 -0
  141. package/lib/annotations/annotation-set/annotation-set.model.d.ts +7 -0
  142. package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +1 -0
  143. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +34 -0
  144. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +1 -0
  145. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +16 -0
  146. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +1 -0
  147. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +41 -0
  148. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +1 -0
  149. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +9 -0
  150. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +1 -0
  151. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +41 -0
  152. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +1 -0
  153. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +40 -0
  154. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +1 -0
  155. package/lib/annotations/annotations.module.d.ts +36 -0
  156. package/lib/annotations/annotations.module.d.ts.map +1 -0
  157. package/lib/annotations/comment-set/comment/comment.component.d.ts +69 -0
  158. package/lib/annotations/comment-set/comment/comment.component.d.ts.map +1 -0
  159. package/lib/annotations/comment-set/comment/comment.model.d.ts +13 -0
  160. package/lib/annotations/comment-set/comment/comment.model.d.ts.map +1 -0
  161. package/lib/annotations/comment-set/comment/comment.service.d.ts +22 -0
  162. package/lib/annotations/comment-set/comment/comment.service.d.ts.map +1 -0
  163. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +14 -0
  164. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +1 -0
  165. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +12 -0
  166. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +1 -0
  167. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +28 -0
  168. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +1 -0
  169. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +26 -0
  170. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +1 -0
  171. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +21 -0
  172. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +1 -0
  173. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +36 -0
  174. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +1 -0
  175. package/lib/annotations/comment-set/comment-set-render.service.d.ts +15 -0
  176. package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +1 -0
  177. package/lib/annotations/comment-set/comment-set.component.d.ts +56 -0
  178. package/lib/annotations/comment-set/comment-set.component.d.ts.map +1 -0
  179. package/lib/annotations/comments-summary/comments-summary.component.d.ts +42 -0
  180. package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +1 -0
  181. package/lib/annotations/models/api-persisted.model.d.ts +11 -0
  182. package/lib/annotations/models/api-persisted.model.d.ts.map +1 -0
  183. package/lib/annotations/models/event-select.model.d.ts +6 -0
  184. package/lib/annotations/models/event-select.model.d.ts.map +1 -0
  185. package/lib/annotations/models/tags.model.d.ts +7 -0
  186. package/lib/annotations/models/tags.model.d.ts.map +1 -0
  187. package/lib/annotations/models/user.model.d.ts +6 -0
  188. package/lib/annotations/models/user.model.d.ts.map +1 -0
  189. package/lib/annotations/pipes/date/date.pipe.d.ts +16 -0
  190. package/lib/annotations/pipes/date/date.pipe.d.ts.map +1 -0
  191. package/lib/annotations/pipes/filter/filter.pipe.d.ts +8 -0
  192. package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +1 -0
  193. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +8 -0
  194. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +1 -0
  195. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +28 -0
  196. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +1 -0
  197. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +21 -0
  198. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +1 -0
  199. package/lib/annotations/services/tags/tags.services.d.ts +18 -0
  200. package/lib/annotations/services/tags/tags.services.d.ts.map +1 -0
  201. package/lib/annotations/tags/tags.component.d.ts +28 -0
  202. package/lib/annotations/tags/tags.component.d.ts.map +1 -0
  203. package/lib/bookmark/components/bookmark-icons.component.d.ts +19 -0
  204. package/lib/bookmark/components/bookmark-icons.component.d.ts.map +1 -0
  205. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +11 -0
  206. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +1 -0
  207. package/lib/icp/icp-follower.service.d.ts +26 -0
  208. package/lib/icp/icp-follower.service.d.ts.map +1 -0
  209. package/lib/icp/icp-presenter.service.d.ts +25 -0
  210. package/lib/icp/icp-presenter.service.d.ts.map +1 -0
  211. package/lib/icp/icp-session-api.service.d.ts +15 -0
  212. package/lib/icp/icp-session-api.service.d.ts.map +1 -0
  213. package/lib/icp/icp-update.service.d.ts +22 -0
  214. package/lib/icp/icp-update.service.d.ts.map +1 -0
  215. package/lib/icp/icp.events.d.ts +14 -0
  216. package/lib/icp/icp.events.d.ts.map +1 -0
  217. package/lib/icp/icp.interfaces.d.ts +23 -0
  218. package/lib/icp/icp.interfaces.d.ts.map +1 -0
  219. package/lib/icp/icp.service.d.ts +40 -0
  220. package/lib/icp/icp.service.d.ts.map +1 -0
  221. package/lib/icp/participants-list/participants-list.component.d.ts +23 -0
  222. package/lib/icp/participants-list/participants-list.component.d.ts.map +1 -0
  223. package/lib/icp/socket.service.d.ts +29 -0
  224. package/lib/icp/socket.service.d.ts.map +1 -0
  225. package/lib/media-viewer.component.d.ts +72 -0
  226. package/lib/media-viewer.component.d.ts.map +1 -0
  227. package/lib/media-viewer.module.d.ts +37 -0
  228. package/lib/media-viewer.module.d.ts.map +1 -0
  229. package/lib/print.service.d.ts +8 -0
  230. package/lib/print.service.d.ts.map +1 -0
  231. package/lib/redaction/components/redaction.component.d.ts +42 -0
  232. package/lib/redaction/components/redaction.component.d.ts.map +1 -0
  233. package/lib/redaction/services/redaction-api.service.d.ts +20 -0
  234. package/lib/redaction/services/redaction-api.service.d.ts.map +1 -0
  235. package/lib/redaction/services/redaction.model.d.ts +11 -0
  236. package/lib/redaction/services/redaction.model.d.ts.map +1 -0
  237. package/lib/shared/directives/tooltip-dismiss.directive.d.ts +11 -0
  238. package/lib/shared/directives/tooltip-dismiss.directive.d.ts.map +1 -0
  239. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +15 -0
  240. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +1 -0
  241. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +11 -0
  242. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +1 -0
  243. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +16 -0
  244. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +1 -0
  245. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +14 -0
  246. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +1 -0
  247. package/lib/shared/shared.module.d.ts +14 -0
  248. package/lib/shared/shared.module.d.ts.map +1 -0
  249. package/lib/shared/util/helpers/html-templates.helper.d.ts +9 -0
  250. package/lib/shared/util/helpers/html-templates.helper.d.ts.map +1 -0
  251. package/lib/shared/util/services/number.helper.service.d.ts +11 -0
  252. package/lib/shared/util/services/number.helper.service.d.ts.map +1 -0
  253. package/lib/store/actions/annotation.actions.d.ts +126 -0
  254. package/lib/store/actions/annotation.actions.d.ts.map +1 -0
  255. package/lib/store/actions/bookmark.actions.d.ts +117 -0
  256. package/lib/store/actions/bookmark.actions.d.ts.map +1 -0
  257. package/lib/store/actions/document.actions.d.ts +90 -0
  258. package/lib/store/actions/document.actions.d.ts.map +1 -0
  259. package/lib/store/actions/icp.actions.d.ts +75 -0
  260. package/lib/store/actions/icp.actions.d.ts.map +1 -0
  261. package/lib/store/actions/redaction.actions.d.ts +127 -0
  262. package/lib/store/actions/redaction.actions.d.ts.map +1 -0
  263. package/lib/store/actions/tag.actions.d.ts +30 -0
  264. package/lib/store/actions/tag.actions.d.ts.map +1 -0
  265. package/lib/store/bookmarks-store-utils.d.ts +9 -0
  266. package/lib/store/bookmarks-store-utils.d.ts.map +1 -0
  267. package/lib/store/effects/annotation.effects.d.ts +16 -0
  268. package/lib/store/effects/annotation.effects.d.ts.map +1 -0
  269. package/lib/store/effects/bookmarks.effects.d.ts +21 -0
  270. package/lib/store/effects/bookmarks.effects.d.ts.map +1 -0
  271. package/lib/store/effects/document.effects.d.ts +17 -0
  272. package/lib/store/effects/document.effects.d.ts.map +1 -0
  273. package/lib/store/effects/icp.effects.d.ts +16 -0
  274. package/lib/store/effects/icp.effects.d.ts.map +1 -0
  275. package/lib/store/effects/index.d.ts +2 -0
  276. package/lib/store/effects/index.d.ts.map +1 -0
  277. package/lib/store/effects/redaction.effects.d.ts +20 -0
  278. package/lib/store/effects/redaction.effects.d.ts.map +1 -0
  279. package/lib/store/models/bookmarks.interface.d.ts +31 -0
  280. package/lib/store/models/bookmarks.interface.d.ts.map +1 -0
  281. package/lib/store/models/filters.interface.d.ts +8 -0
  282. package/lib/store/models/filters.interface.d.ts.map +1 -0
  283. package/lib/store/reducers/annotations.reducer.d.ts +48 -0
  284. package/lib/store/reducers/annotations.reducer.d.ts.map +1 -0
  285. package/lib/store/reducers/bookmarks.reducer.d.ts +27 -0
  286. package/lib/store/reducers/bookmarks.reducer.d.ts.map +1 -0
  287. package/lib/store/reducers/document.reducer.d.ts +52 -0
  288. package/lib/store/reducers/document.reducer.d.ts.map +1 -0
  289. package/lib/store/reducers/icp.reducer.d.ts +9 -0
  290. package/lib/store/reducers/icp.reducer.d.ts.map +1 -0
  291. package/lib/store/reducers/redaction.reducer.d.ts +32 -0
  292. package/lib/store/reducers/redaction.reducer.d.ts.map +1 -0
  293. package/lib/store/reducers/reducers.d.ts +24 -0
  294. package/lib/store/reducers/reducers.d.ts.map +1 -0
  295. package/lib/store/reducers/tags.reducer.d.ts +32 -0
  296. package/lib/store/reducers/tags.reducer.d.ts.map +1 -0
  297. package/lib/store/selectors/annotation.selectors.d.ts +136 -0
  298. package/lib/store/selectors/annotation.selectors.d.ts.map +1 -0
  299. package/lib/store/selectors/bookmark.selectors.d.ts +38 -0
  300. package/lib/store/selectors/bookmark.selectors.d.ts.map +1 -0
  301. package/lib/store/selectors/document.selectors.d.ts +23 -0
  302. package/lib/store/selectors/document.selectors.d.ts.map +1 -0
  303. package/lib/store/selectors/icp.selectors.d.ts +10 -0
  304. package/lib/store/selectors/icp.selectors.d.ts.map +1 -0
  305. package/lib/store/selectors/redaction.selectors.d.ts +35 -0
  306. package/lib/store/selectors/redaction.selectors.d.ts.map +1 -0
  307. package/lib/store/selectors/tag.selectors.d.ts +28 -0
  308. package/lib/store/selectors/tag.selectors.d.ts.map +1 -0
  309. package/lib/store/store-utils.d.ts +25 -0
  310. package/lib/store/store-utils.d.ts.map +1 -0
  311. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts +20 -0
  312. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts.map +1 -0
  313. package/lib/toolbar/icp-event.service.d.ts +21 -0
  314. package/lib/toolbar/icp-event.service.d.ts.map +1 -0
  315. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +24 -0
  316. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +1 -0
  317. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +69 -0
  318. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +1 -0
  319. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +60 -0
  320. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +1 -0
  321. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts +12 -0
  322. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts.map +1 -0
  323. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +30 -0
  324. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +1 -0
  325. package/lib/toolbar/search-bar/search-bar.component.d.ts +34 -0
  326. package/lib/toolbar/search-bar/search-bar.component.d.ts.map +1 -0
  327. package/lib/toolbar/toolbar-button-visibility.service.d.ts +67 -0
  328. package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +1 -0
  329. package/lib/toolbar/toolbar-event.service.d.ts +96 -0
  330. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -0
  331. package/lib/toolbar/toolbar.module.d.ts +20 -0
  332. package/lib/toolbar/toolbar.module.d.ts.map +1 -0
  333. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +31 -0
  334. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +1 -0
  335. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +12 -0
  336. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +1 -0
  337. package/lib/viewers/grab-n-drag.directive.d.ts +19 -0
  338. package/lib/viewers/grab-n-drag.directive.d.ts.map +1 -0
  339. package/lib/viewers/image-viewer/image-viewer.component.d.ts +57 -0
  340. package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +1 -0
  341. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +25 -0
  342. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +1 -0
  343. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +69 -0
  344. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -0
  345. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +17 -0
  346. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +1 -0
  347. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +102 -0
  348. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +1 -0
  349. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +82 -0
  350. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +1 -0
  351. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +22 -0
  352. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +1 -0
  353. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +20 -0
  354. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +1 -0
  355. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +14 -0
  356. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +1 -0
  357. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +42 -0
  358. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +1 -0
  359. package/lib/viewers/rotation-persist/rotation-api.service.d.ts +14 -0
  360. package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +1 -0
  361. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +27 -0
  362. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +1 -0
  363. package/lib/viewers/rotation-persist/rotation.model.d.ts +5 -0
  364. package/lib/viewers/rotation-persist/rotation.model.d.ts.map +1 -0
  365. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +23 -0
  366. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +1 -0
  367. package/lib/viewers/viewer-event.service.d.ts +23 -0
  368. package/lib/viewers/viewer-event.service.d.ts.map +1 -0
  369. package/lib/viewers/viewer-exception.model.d.ts +15 -0
  370. package/lib/viewers/viewer-exception.model.d.ts.map +1 -0
  371. package/lib/viewers/viewer-util.service.d.ts +10 -0
  372. package/lib/viewers/viewer-util.service.d.ts.map +1 -0
  373. package/package.json +12 -10
  374. package/public_api.d.ts +30 -0
  375. package/public_api.d.ts.map +1 -0
  376. package/index.d.ts.map +0 -1
@@ -0,0 +1,40 @@
1
+ import 'pdfjs-dist/build/pdf.mjs';
2
+ import * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer.mjs';
3
+ import { Injectable } from '@angular/core';
4
+ import { PdfJsWrapper } from './pdf-js-wrapper';
5
+ import { Subject } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../toolbar/toolbar-event.service";
8
+ export class PdfJsWrapperFactory {
9
+ constructor(toolbarEvents) {
10
+ this.toolbarEvents = toolbarEvents;
11
+ this.linkService = new pdfjsViewer.PDFLinkService();
12
+ this.eventBus = new pdfjsViewer.EventBus();
13
+ }
14
+ create(container) {
15
+ const pdfFindController = new pdfjsViewer.PDFFindController({
16
+ linkService: this.linkService,
17
+ eventBus: this.eventBus
18
+ });
19
+ const pdfViewer = new pdfjsViewer.PDFViewer({
20
+ container: container.nativeElement,
21
+ linkService: this.linkService,
22
+ findController: pdfFindController,
23
+ eventBus: this.eventBus,
24
+ imageResourcesPath: '/assets/images/',
25
+ });
26
+ this.linkService.setViewer(pdfViewer);
27
+ this.pdfJsWrapper = new PdfJsWrapper(pdfViewer, new pdfjsViewer.DownloadManager(), this.toolbarEvents, new Subject(), new Subject(), new Subject(), new Subject(), new Subject(), new Subject(), new Subject());
28
+ return this.pdfJsWrapper;
29
+ }
30
+ pdfWrapper() {
31
+ return this.pdfJsWrapper;
32
+ }
33
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfJsWrapperFactory, deps: [{ token: i1.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfJsWrapperFactory, providedIn: 'root' }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfJsWrapperFactory, decorators: [{
37
+ type: Injectable,
38
+ args: [{ providedIn: 'root' }]
39
+ }], ctorParameters: () => [{ type: i1.ToolbarEventService }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWpzLXdyYXBwZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvcGRmLWpzL3BkZi1qcy13cmFwcGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxLQUFLLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBbUMsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTS9CLE1BQU0sT0FBTyxtQkFBbUI7SUFNOUIsWUFBNkIsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQzdELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQXFCO1FBQ2pDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUM7WUFDMUQsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDMUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixjQUFjLEVBQUUsaUJBQWlCO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixrQkFBa0IsRUFBRSxpQkFBaUI7U0FDdEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FDbEMsU0FBUyxFQUNULElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUNqQyxJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLE9BQU8sRUFBVSxFQUNyQixJQUFJLE9BQU8sRUFBd0IsRUFDbkMsSUFBSSxPQUFPLEVBQU8sRUFDbEIsSUFBSSxPQUFPLEVBQWEsRUFDeEIsSUFBSSxPQUFPLEVBQUUsRUFDYixJQUFJLE9BQU8sRUFBZSxFQUMxQixJQUFJLE9BQU8sRUFBNkIsQ0FDekMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO2tJQTdDVSxtQkFBbUI7c0lBQW5CLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdwZGZqcy1kaXN0L2J1aWxkL3BkZi5tanMnO1xuaW1wb3J0ICogYXMgcGRmanNWaWV3ZXIgZnJvbSAncGRmanMtZGlzdC93ZWIvcGRmX3ZpZXdlci5tanMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRMb2FkUHJvZ3Jlc3MsIFBhZ2VFdmVudCwgUGRmSnNXcmFwcGVyIH0gZnJvbSAnLi9wZGYtanMtd3JhcHBlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3V0bGluZSB9IGZyb20gJy4uL3NpZGUtYmFyL291dGxpbmUtaXRlbS9vdXRsaW5lLm1vZGVsJztcbmltcG9ydCB7IFBkZlBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvZG9jdW1lbnQucmVkdWNlcic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGRmSnNXcmFwcGVyRmFjdG9yeSB7XG5cbiAgcHJpdmF0ZSBsaW5rU2VydmljZTogcGRmanNWaWV3ZXIuUERGTGlua1NlcnZpY2U7XG4gIHByaXZhdGUgZXZlbnRCdXM6IHBkZmpzVmlld2VyLkV2ZW50QnVzO1xuICBwcml2YXRlIHBkZkpzV3JhcHBlcjogUGRmSnNXcmFwcGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSkge1xuICAgIHRoaXMubGlua1NlcnZpY2UgPSBuZXcgcGRmanNWaWV3ZXIuUERGTGlua1NlcnZpY2UoKTtcbiAgICB0aGlzLmV2ZW50QnVzID0gbmV3IHBkZmpzVmlld2VyLkV2ZW50QnVzKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlKGNvbnRhaW5lcjogRWxlbWVudFJlZik6IFBkZkpzV3JhcHBlciB7XG4gICAgY29uc3QgcGRmRmluZENvbnRyb2xsZXIgPSBuZXcgcGRmanNWaWV3ZXIuUERGRmluZENvbnRyb2xsZXIoe1xuICAgICAgbGlua1NlcnZpY2U6IHRoaXMubGlua1NlcnZpY2UsXG4gICAgICBldmVudEJ1czogdGhpcy5ldmVudEJ1c1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGRmVmlld2VyID0gbmV3IHBkZmpzVmlld2VyLlBERlZpZXdlcih7XG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgbGlua1NlcnZpY2U6IHRoaXMubGlua1NlcnZpY2UsXG4gICAgICBmaW5kQ29udHJvbGxlcjogcGRmRmluZENvbnRyb2xsZXIsXG4gICAgICBldmVudEJ1czogdGhpcy5ldmVudEJ1cyxcbiAgICAgIGltYWdlUmVzb3VyY2VzUGF0aDogJy9hc3NldHMvaW1hZ2VzLycsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxpbmtTZXJ2aWNlLnNldFZpZXdlcihwZGZWaWV3ZXIpO1xuXG4gICAgdGhpcy5wZGZKc1dyYXBwZXIgPSBuZXcgUGRmSnNXcmFwcGVyKFxuICAgICAgcGRmVmlld2VyLFxuICAgICAgbmV3IHBkZmpzVmlld2VyLkRvd25sb2FkTWFuYWdlcigpLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLFxuICAgICAgbmV3IFN1YmplY3Q8c3RyaW5nPigpLFxuICAgICAgbmV3IFN1YmplY3Q8RG9jdW1lbnRMb2FkUHJvZ3Jlc3M+KCksXG4gICAgICBuZXcgU3ViamVjdDxhbnk+KCksXG4gICAgICBuZXcgU3ViamVjdDxPdXRsaW5lW10+KCksXG4gICAgICBuZXcgU3ViamVjdCgpLFxuICAgICAgbmV3IFN1YmplY3Q8UGFnZUV2ZW50W10+KCksXG4gICAgICBuZXcgU3ViamVjdDx7IGxvY2F0aW9uOiBQZGZQb3NpdGlvbiB9PigpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnBkZkpzV3JhcHBlcjtcbiAgfVxuXG4gIHBkZldyYXBwZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGRmSnNXcmFwcGVyO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,280 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { asyncScheduler } from 'rxjs';
3
+ import { filter, tap, throttleTime } from 'rxjs/operators';
4
+ import { select } from '@ngrx/store';
5
+ import { ResponseType, ViewerException } from '../viewer-exception.model';
6
+ import * as fromDocumentActions from '../../store/actions/document.actions';
7
+ import { PdfPositionUpdate } from '../../store/actions/document.actions';
8
+ import * as fromTagActions from '../../store/actions/tag.actions';
9
+ import { SetCaseId } from '../../store/actions/icp.actions';
10
+ import * as fromDocumentsSelector from '../../store/selectors/document.selectors';
11
+ import { HighlightCreateDirective } from '../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@ngrx/store";
14
+ import * as i2 from "./pdf-js/pdf-js-wrapper.provider";
15
+ import * as i3 from "../../print.service";
16
+ import * as i4 from "../../toolbar/toolbar-event.service";
17
+ import * as i5 from "../viewer-event.service";
18
+ import * as i6 from "../../icp/icp.service";
19
+ import * as i7 from "../../toolbar/toolbar-button-visibility.service";
20
+ import * as i8 from "../../toolbar/icp-event.service";
21
+ import * as i9 from "@angular/common";
22
+ import * as i10 from "../../toolbar/redaction-search-bar/redaction-search-bar.component";
23
+ import * as i11 from "../../annotations/comment-set/comment-set.component";
24
+ import * as i12 from "../../annotations/comment-set/comment-set-header/comment-set-header.component";
25
+ import * as i13 from "../../annotations/annotation-set/metadata-layer/metadata-layer.component";
26
+ import * as i14 from "./side-bar/side-bar.component";
27
+ import * as i15 from "../grab-n-drag.directive";
28
+ import * as i16 from "../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive";
29
+ import * as i17 from "../../annotations/annotation-set/annotation-create/highlight-create/keyboard-text-highlight.directive";
30
+ import * as i18 from "../../redaction/components/redaction.component";
31
+ import * as i19 from "../../bookmark/components/bookmark-icons.component";
32
+ import * as i20 from "../../icp/participants-list/participants-list.component";
33
+ import * as i21 from "rpx-xui-translation";
34
+ export class PdfViewerComponent {
35
+ constructor(store, icpStore, pdfJsWrapperFactory, printService, toolbarEvents, viewerEvents, icpService, toolbarButtons, icpEventService) {
36
+ this.store = store;
37
+ this.icpStore = icpStore;
38
+ this.pdfJsWrapperFactory = pdfJsWrapperFactory;
39
+ this.printService = printService;
40
+ this.toolbarEvents = toolbarEvents;
41
+ this.viewerEvents = viewerEvents;
42
+ this.icpService = icpService;
43
+ this.toolbarButtons = toolbarButtons;
44
+ this.icpEventService = icpEventService;
45
+ this.mediaLoadStatus = new EventEmitter();
46
+ this.pdfViewerException = new EventEmitter();
47
+ this.documentTitle = new EventEmitter();
48
+ this.pageHeights = [];
49
+ this.rotation = 0;
50
+ this.zoom = 1;
51
+ this.loadingDocument = false;
52
+ this.hasDifferentPageSize = false;
53
+ this.enableGrabNDrag = false;
54
+ this.showSelectionStartCursor = false;
55
+ this.showSelectionEndCursor = false;
56
+ this.highlightMode = toolbarEvents.highlightModeSubject.pipe(tap(() => {
57
+ this.store.dispatch(new fromTagActions.ClearFilterTags());
58
+ }));
59
+ this.drawMode = toolbarEvents.drawModeSubject;
60
+ }
61
+ async ngAfterContentInit() {
62
+ this.pdfWrapper.documentLoadProgress.subscribe(v => this.onDocumentLoadProgress(v));
63
+ this.pdfWrapper.documentLoaded.subscribe(() => this.onDocumentLoaded());
64
+ this.pdfWrapper.documentLoadFailed.subscribe((error) => this.onDocumentLoadFailed(error));
65
+ this.pdfWrapper.outlineLoaded.subscribe(outline => this.documentOutline = outline);
66
+ this.pdfWrapper.pageRendered.subscribe((event) => this.updatePages(event));
67
+ this.$subscription = this.toolbarEvents.printSubject
68
+ .subscribe(() => this.printService.printDocumentNatively(this.url));
69
+ this.$subscription.add(this.toolbarEvents.downloadSubject.subscribe(() => this.pdfWrapper.downloadFile(this.downloadUrl || this.url, this.downloadFileName)));
70
+ this.$subscription.add(this.toolbarEvents.rotateSubject.subscribe(rotate => this.rotateDocument(rotate)));
71
+ this.$subscription.add(this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)));
72
+ this.$subscription.add(this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)));
73
+ this.$subscription.add(this.toolbarEvents.searchSubject.subscribe(search => this.pdfWrapper.search(search)));
74
+ this.$subscription.add(this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.pdfWrapper.setPageNumber(pageNumber)));
75
+ this.$subscription.add(this.toolbarEvents.changePageByDeltaSubject.subscribe(pageNumber => this.pdfWrapper.changePageNumber(pageNumber)));
76
+ this.$subscription.add(this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag));
77
+ this.$subscription.add(this.toolbarEvents.commentsPanelVisible.subscribe(toggle => {
78
+ this.showCommentsPanel = toggle;
79
+ }));
80
+ this.$subscription.add(this.viewerEvents.navigationEvent.subscribe(dest => this.goToDestination(dest)));
81
+ this.$subscription.add(this.viewerEvents.navigationEventICP.subscribe(destination => this.goToDestinationICP(destination)));
82
+ this.$subscription.add(this.icpEventService.participantsListVisible.subscribe(toggle => this.showIcpParticipantsList = toggle));
83
+ this.$subscription.add(this.pdfWrapper.positionUpdated.asObservable()
84
+ .pipe(throttleTime(500, asyncScheduler, { leading: true, trailing: true }))
85
+ .subscribe(event => this.store.dispatch(new PdfPositionUpdate(event.location))));
86
+ }
87
+ async ngOnChanges(changes) {
88
+ if (!this.pdfWrapper) {
89
+ this.pdfWrapper = this.pdfJsWrapperFactory.create(this.viewerContainer);
90
+ }
91
+ if (changes.url && this.pdfWrapper) {
92
+ await this.loadDocument();
93
+ if (this.enableRedactions) {
94
+ this.toolbarEvents.redactionMode.pipe(filter(value => !!value))
95
+ .subscribe(() => this.resetRotation());
96
+ }
97
+ }
98
+ if (changes.caseId) {
99
+ this.icpStore.dispatch(new SetCaseId(this.caseId));
100
+ }
101
+ }
102
+ resetRotation() {
103
+ if (this.hasDifferentPageSize) {
104
+ this.pdfWrapper.resetRotation(0);
105
+ this.rotation = 0;
106
+ }
107
+ }
108
+ ngOnDestroy() {
109
+ this.$subscription.unsubscribe();
110
+ }
111
+ async loadDocument() {
112
+ this.initDocumentProgress();
113
+ await this.pdfWrapper.loadDocument(this.url);
114
+ this.documentTitle.emit(this.pdfWrapper.getCurrentPDFTitle());
115
+ this.setPageHeights();
116
+ this.$subscription.add(this.store.pipe(select(fromDocumentsSelector.getPageDifference))
117
+ .subscribe(hasDifferentPageSie => this.hasDifferentPageSize = hasDifferentPageSie));
118
+ }
119
+ onDocumentLoadProgress(progress) {
120
+ if (progress.total) {
121
+ this.loadingDocumentProgress = Math.min(100, Math.ceil(progress.loaded / progress.total * 100));
122
+ }
123
+ }
124
+ onDocumentLoaded() {
125
+ this.loadingDocument = false;
126
+ this.mediaLoadStatus.emit(ResponseType.SUCCESS);
127
+ }
128
+ onDocumentLoadFailed(error) {
129
+ this.loadingDocument = false;
130
+ this.viewerException = new ViewerException(error.name, { message: error.message });
131
+ this.errorMessage = `Could not load the document "${this.url}"`;
132
+ this.mediaLoadStatus.emit(ResponseType.FAILURE);
133
+ this.pdfViewerException.emit(this.viewerException);
134
+ }
135
+ updatePages(event) {
136
+ if (this.enableAnnotations) {
137
+ this.store.dispatch(new fromDocumentActions.AddPages(event));
138
+ }
139
+ }
140
+ set searchBarHidden(hidden) {
141
+ if (this.pdfWrapper && hidden) {
142
+ this.pdfWrapper.clearSearch();
143
+ }
144
+ }
145
+ toggleCommentsSummary() {
146
+ this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());
147
+ }
148
+ rotateDocument(rotation) {
149
+ const pageNumber = this.pdfWrapper.getPageNumber();
150
+ this.pdfWrapper.rotate(rotation);
151
+ this.pdfWrapper.setPageNumber(pageNumber);
152
+ this.rotation = (this.rotation + rotation) % 360;
153
+ this.setPageHeights();
154
+ }
155
+ initDocumentProgress() {
156
+ this.loadingDocument = true;
157
+ this.loadingDocumentProgress = null;
158
+ this.errorMessage = null;
159
+ }
160
+ setZoom(zoomFactor) {
161
+ if (!isNaN(zoomFactor)) {
162
+ this.pdfWrapper.setZoom(zoomFactor);
163
+ this.zoom = this.calculateZoomValue(zoomFactor);
164
+ this.setPageHeights();
165
+ }
166
+ }
167
+ stepZoom(zoomFactor) {
168
+ if (!isNaN(zoomFactor)) {
169
+ this.pdfWrapper.stepZoom(zoomFactor);
170
+ this.zoom = this.calculateZoomValue(this.zoom, zoomFactor);
171
+ this.setPageHeights();
172
+ }
173
+ }
174
+ setPageHeights() {
175
+ this.pageHeights = [];
176
+ const pdfViewerChildren = this.pdfViewer.nativeElement.children;
177
+ for (let i = 0; i < pdfViewerChildren.length; i++) {
178
+ this.pageHeights.push(pdfViewerChildren[i].clientHeight);
179
+ }
180
+ }
181
+ calculateZoomValue(zoomValue, increment = 0) {
182
+ const newZoomValue = zoomValue + increment;
183
+ if (newZoomValue > 5) {
184
+ return 5;
185
+ }
186
+ if (newZoomValue < 0.1) {
187
+ return 0.1;
188
+ }
189
+ return +newZoomValue.toFixed(2);
190
+ }
191
+ goToDestination(destination) {
192
+ const currentRotation = this.rotation;
193
+ this.rotateDocument(360 - this.rotation);
194
+ this.pdfWrapper.navigateTo(destination);
195
+ setTimeout(() => {
196
+ this.rotateDocument(currentRotation);
197
+ }, 10);
198
+ }
199
+ goToDestinationICP(destination) {
200
+ this.pdfWrapper.nativeNavigate(destination);
201
+ }
202
+ getCurrentPageNumber() {
203
+ return this.pdfWrapper.getPageNumber();
204
+ }
205
+ onKeyboardTextSelectionConfirmed() {
206
+ if (this.highlightCreateDirective) {
207
+ this.highlightCreateDirective.onKeyboardSelectionConfirmed();
208
+ }
209
+ }
210
+ onKeyboardTextSelectionCancelled() {
211
+ const selection = window.getSelection();
212
+ if (selection) {
213
+ selection.removeAllRanges();
214
+ }
215
+ }
216
+ onSelectionStartCursorChanged(position) {
217
+ if (position.visible) {
218
+ this.selectionStartCursorX = position.x;
219
+ this.selectionStartCursorY = position.y;
220
+ this.showSelectionStartCursor = true;
221
+ }
222
+ else {
223
+ this.showSelectionStartCursor = false;
224
+ }
225
+ }
226
+ onSelectionEndCursorChanged(position) {
227
+ if (position.visible) {
228
+ this.selectionEndCursorX = position.x;
229
+ this.selectionEndCursorY = position.y;
230
+ this.showSelectionEndCursor = true;
231
+ }
232
+ else {
233
+ this.showSelectionEndCursor = false;
234
+ }
235
+ }
236
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1.Store }, { token: i1.Store }, { token: i2.PdfJsWrapperFactory }, { token: i3.PrintService }, { token: i4.ToolbarEventService }, { token: i5.ViewerEventService }, { token: i6.IcpService }, { token: i7.ToolbarButtonVisibilityService }, { token: i8.IcpEventService }], target: i0.ɵɵFactoryTarget.Component }); }
237
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PdfViewerComponent, selector: "mv-pdf-viewer", inputs: { downloadUrl: "downloadUrl", url: "url", downloadFileName: "downloadFileName", enableAnnotations: "enableAnnotations", enableRedactions: "enableRedactions", enableICP: "enableICP", annotationSet: "annotationSet", enableRedactSearch: "enableRedactSearch", height: "height", caseId: "caseId", searchBarHidden: "searchBarHidden" }, outputs: { mediaLoadStatus: "mediaLoadStatus", pdfViewerException: "pdfViewerException", documentTitle: "documentTitle" }, viewQueries: [{ propertyName: "viewerContainer", first: true, predicate: ["viewerContainer"], descendants: true, static: true }, { propertyName: "pdfViewer", first: true, predicate: ["pdfViewer"], descendants: true }, { propertyName: "highlightCreateDirective", first: true, predicate: HighlightCreateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mv-side-bar\n *ngIf=\"toolbarEvents.sidebarOpen\"\n id=\"sidebarContainer\"\n [url]=\"url\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [outline]=\"documentOutline\"\n [annotationsEnabled]=\"enableAnnotations\"\n [currentPageNumber]=\"getCurrentPageNumber()\"\n>\n</mv-side-bar>\n<mv-comment-set-header\n *ngIf=\"enableAnnotations\"\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<mv-participants-list></mv-participants-list>\n<div\n class=\"pdfContainer\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ pdfContainer: true, hidden: errorMessage }\"\n>\n <mv-redaction-search-bar></mv-redaction-search-bar>\n <div\n #viewerContainer\n mvGrabNDrag\n [dragX]=\"viewerContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n id=\"viewerContainer\"\n class=\"viewer-container\"\n [class.annotations]=\"enableAnnotations\"\n [class.show-comments-panel]=\"\n (showCommentsPanel || showIcpParticipantsList) &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [class.grabNDrag]=\"enableGrabNDrag\"\n >\n <div\n #pdfViewer\n class=\"pdfViewer\"\n mvCreateTextHighlight\n mvKeyboardTextHighlight\n [enabled]=\"highlightMode | async\"\n [tabindex]=\"(highlightMode | async) ? 0 : -1\"\n (selectionConfirmed)=\"onKeyboardTextSelectionConfirmed()\"\n (selectionCancelled)=\"onKeyboardTextSelectionCancelled()\"\n (cursorPositionChanged)=\"onSelectionStartCursorChanged($event)\"\n (selectionCursorPositionChanged)=\"onSelectionEndCursorChanged($event)\"\n [ngClass]=\"{\n hidden: false,\n highlightMode: highlightMode | async,\n drawMode: drawMode | async\n }\"\n ></div>\n <div *ngIf=\"showSelectionStartCursor\"\n class=\"selection-start-cursor\"\n [style.position]=\"'fixed'\"\n [style.top]=\"selectionStartCursorY + 'px'\"\n [style.left]=\"selectionStartCursorX + 'px'\">\n </div>\n <div *ngIf=\"showSelectionEndCursor\"\n class=\"selection-end-cursor\"\n [style.position]=\"'fixed'\"\n [style.top]=\"selectionEndCursorY + 'px'\"\n [style.left]=\"selectionEndCursorX + 'px'\">\n </div>\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n <mv-bookmark-icons [zoom]=\"zoom\" [rotate]=\"rotation\"> </mv-bookmark-icons>\n </ng-template>\n </div>\n <mv-comment-set\n [contentScrollTop]=\"viewerContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"pdfViewer.offsetHeight\"\n [pageHeights]=\"pageHeights\"\n >\n </mv-comment-set>\n <div class=\"loadingMessage\" *ngIf=\"loadingDocument\">\n <h3 class=\"govuk-heading-m\">\n {{ \"Loading...\" | rpxTranslate}}{{\n loadingDocumentProgress ? loadingDocumentProgress + \"%\" : \"\"\n }}\n </h3>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i10.RedactionSearchBarComponent, selector: "mv-redaction-search-bar" }, { kind: "component", type: i11.CommentSetComponent, selector: "mv-comment-set", inputs: ["annotationSet", "zoom", "rotate", "height", "pageHeights", "contentScrollTop"] }, { kind: "component", type: i12.CommentSetHeaderComponent, selector: "mv-comment-set-header", inputs: ["showCommentSummary", "isHidden"], outputs: ["showCommentSummaryDialog"] }, { kind: "component", type: i13.MetadataLayerComponent, selector: "mv-metadata-layer", inputs: ["zoom", "rotate"] }, { kind: "component", type: i14.SideBarComponent, selector: "mv-side-bar", inputs: ["annotationsEnabled", "outline", "url", "zoom", "rotate", "currentPageNumber"] }, { kind: "directive", type: i15.GrabNDragDirective, selector: "[mvGrabNDrag]", inputs: ["dragEnabled", "dragX"] }, { kind: "directive", type: i16.HighlightCreateDirective, selector: "[mvCreateTextHighlight]" }, { kind: "directive", type: i17.KeyboardTextHighlightDirective, selector: "[mvKeyboardTextHighlight]", inputs: ["enabled", "incrementSmall", "incrementMedium", "incrementLarge"], outputs: ["selectionStarted", "selectionUpdated", "selectionConfirmed", "selectionCancelled", "cursorPositionChanged", "selectionCursorPositionChanged"] }, { kind: "component", type: i18.RedactionComponent, selector: "mv-redactions", inputs: ["zoom", "rotate"] }, { kind: "component", type: i19.BookmarkIconsComponent, selector: "mv-bookmark-icons", inputs: ["zoom", "rotate"] }, { kind: "component", type: i20.ParticipantsListComponent, selector: "mv-participants-list" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i21.RpxTranslatePipe, name: "rpxTranslate" }], encapsulation: i0.ViewEncapsulation.None }); }
238
+ }
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfViewerComponent, decorators: [{
240
+ type: Component,
241
+ args: [{ selector: 'mv-pdf-viewer', encapsulation: ViewEncapsulation.None, template: "<mv-side-bar\n *ngIf=\"toolbarEvents.sidebarOpen\"\n id=\"sidebarContainer\"\n [url]=\"url\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [outline]=\"documentOutline\"\n [annotationsEnabled]=\"enableAnnotations\"\n [currentPageNumber]=\"getCurrentPageNumber()\"\n>\n</mv-side-bar>\n<mv-comment-set-header\n *ngIf=\"enableAnnotations\"\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<mv-participants-list></mv-participants-list>\n<div\n class=\"pdfContainer\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ pdfContainer: true, hidden: errorMessage }\"\n>\n <mv-redaction-search-bar></mv-redaction-search-bar>\n <div\n #viewerContainer\n mvGrabNDrag\n [dragX]=\"viewerContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n id=\"viewerContainer\"\n class=\"viewer-container\"\n [class.annotations]=\"enableAnnotations\"\n [class.show-comments-panel]=\"\n (showCommentsPanel || showIcpParticipantsList) &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [class.grabNDrag]=\"enableGrabNDrag\"\n >\n <div\n #pdfViewer\n class=\"pdfViewer\"\n mvCreateTextHighlight\n mvKeyboardTextHighlight\n [enabled]=\"highlightMode | async\"\n [tabindex]=\"(highlightMode | async) ? 0 : -1\"\n (selectionConfirmed)=\"onKeyboardTextSelectionConfirmed()\"\n (selectionCancelled)=\"onKeyboardTextSelectionCancelled()\"\n (cursorPositionChanged)=\"onSelectionStartCursorChanged($event)\"\n (selectionCursorPositionChanged)=\"onSelectionEndCursorChanged($event)\"\n [ngClass]=\"{\n hidden: false,\n highlightMode: highlightMode | async,\n drawMode: drawMode | async\n }\"\n ></div>\n <div *ngIf=\"showSelectionStartCursor\"\n class=\"selection-start-cursor\"\n [style.position]=\"'fixed'\"\n [style.top]=\"selectionStartCursorY + 'px'\"\n [style.left]=\"selectionStartCursorX + 'px'\">\n </div>\n <div *ngIf=\"showSelectionEndCursor\"\n class=\"selection-end-cursor\"\n [style.position]=\"'fixed'\"\n [style.top]=\"selectionEndCursorY + 'px'\"\n [style.left]=\"selectionEndCursorX + 'px'\">\n </div>\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n <mv-bookmark-icons [zoom]=\"zoom\" [rotate]=\"rotation\"> </mv-bookmark-icons>\n </ng-template>\n </div>\n <mv-comment-set\n [contentScrollTop]=\"viewerContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"pdfViewer.offsetHeight\"\n [pageHeights]=\"pageHeights\"\n >\n </mv-comment-set>\n <div class=\"loadingMessage\" *ngIf=\"loadingDocument\">\n <h3 class=\"govuk-heading-m\">\n {{ \"Loading...\" | rpxTranslate}}{{\n loadingDocumentProgress ? loadingDocumentProgress + \"%\" : \"\"\n }}\n </h3>\n </div>\n</div>\n" }]
242
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i1.Store }, { type: i2.PdfJsWrapperFactory }, { type: i3.PrintService }, { type: i4.ToolbarEventService }, { type: i5.ViewerEventService }, { type: i6.IcpService }, { type: i7.ToolbarButtonVisibilityService }, { type: i8.IcpEventService }], propDecorators: { mediaLoadStatus: [{
243
+ type: Output
244
+ }], pdfViewerException: [{
245
+ type: Output
246
+ }], documentTitle: [{
247
+ type: Output
248
+ }], downloadUrl: [{
249
+ type: Input
250
+ }], url: [{
251
+ type: Input
252
+ }], downloadFileName: [{
253
+ type: Input
254
+ }], enableAnnotations: [{
255
+ type: Input
256
+ }], enableRedactions: [{
257
+ type: Input
258
+ }], enableICP: [{
259
+ type: Input
260
+ }], annotationSet: [{
261
+ type: Input
262
+ }], enableRedactSearch: [{
263
+ type: Input
264
+ }], height: [{
265
+ type: Input
266
+ }], caseId: [{
267
+ type: Input
268
+ }], viewerContainer: [{
269
+ type: ViewChild,
270
+ args: ['viewerContainer', { static: true }]
271
+ }], pdfViewer: [{
272
+ type: ViewChild,
273
+ args: ['pdfViewer', { static: false }]
274
+ }], highlightCreateDirective: [{
275
+ type: ViewChild,
276
+ args: [HighlightCreateDirective, { static: false }]
277
+ }], searchBarHidden: [{
278
+ type: Input
279
+ }] } });
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBNkMsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFnQixNQUFNLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFPNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUsxRSxPQUFPLEtBQUssbUJBQW1CLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxLQUFLLGNBQWMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxLQUFLLHFCQUFxQixNQUFNLDBDQUEwQyxDQUFDO0FBS2xGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdHQUFnRyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU8xSSxNQUFNLE9BQU8sa0JBQWtCO0lBbUQ3QixZQUNVLEtBQTBDLEVBQzFDLFFB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QUFuQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBVzBDLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDZSx3QkFBd0I7c0JBQS9FLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXNJbEQsZUFBZTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRhcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgRG9jdW1lbnRMb2FkUHJvZ3Jlc3MsIFBhZ2VFdmVudCwgUGRmSnNXcmFwcGVyIH0gZnJvbSAnLi9wZGYtanMvcGRmLWpzLXdyYXBwZXInO1xuaW1wb3J0IHsgUGRmSnNXcmFwcGVyRmFjdG9yeSB9IGZyb20gJy4vcGRmLWpzL3BkZi1qcy13cmFwcGVyLnByb3ZpZGVyJztcbmltcG9ydCB7IEFubm90YXRpb25TZXQgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXNldC5tb2RlbCc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJpbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZVR5cGUsIFZpZXdlckV4Y2VwdGlvbiB9IGZyb20gJy4uL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9vbGJhci90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWVudFNldENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQtc2V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPdXRsaW5lIH0gZnJvbSAnLi9zaWRlLWJhci9vdXRsaW5lLWl0ZW0vb3V0bGluZS5tb2RlbCc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbURvY3VtZW50QWN0aW9ucyBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgUGRmUG9zaXRpb25VcGRhdGUgfSBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgZnJvbVRhZ0FjdGlvbnMgZnJvbSAnLi4vLi4vc3RvcmUvYWN0aW9ucy90YWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBTZXRDYXNlSWQgfSBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2ljcC5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudHNTZWxlY3RvciBmcm9tICcuLi8uLi9zdG9yZS9zZWxlY3RvcnMvZG9jdW1lbnQuc2VsZWN0b3JzJztcbmltcG9ydCB7IEljcFN0YXRlIH0gZnJvbSAnLi4vLi4vaWNwL2ljcC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZpZXdlckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3ZpZXdlci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9pY3AvaWNwLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNwRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9vbGJhci9pY3AtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBIaWdobGlnaHRDcmVhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLWNyZWF0ZS9oaWdobGlnaHQtY3JlYXRlL2hpZ2hsaWdodC1jcmVhdGUuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtcGRmLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQZGZWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgQE91dHB1dCgpIG1lZGlhTG9hZFN0YXR1cyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VUeXBlPigpO1xuICBAT3V0cHV0KCkgcGRmVmlld2VyRXhjZXB0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxWaWV3ZXJFeGNlcHRpb24+KCk7XG4gIEBPdXRwdXQoKSBkb2N1bWVudFRpdGxlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KCkgZG93bmxvYWRVcmw6IHN0cmluZztcbiAgQElucHV0KCkgdXJsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvd25sb2FkRmlsZU5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKSBlbmFibGVBbm5vdGF0aW9uczogYm9vbGVhbjtcbiAgQElucHV0KCkgZW5hYmxlUmVkYWN0aW9uczogYm9vbGVhbjtcbiAgQElucHV0KCkgZW5hYmxlSUNQOiBib29sZWFuO1xuICBASW5wdXQoKSBhbm5vdGF0aW9uU2V0OiBBbm5vdGF0aW9uU2V0IHwgbnVsbDtcbiAgQElucHV0KCkgZW5hYmxlUmVkYWN0U2VhcmNoOiBBbm5vdGF0aW9uU2V0IHwgbnVsbDtcblxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZztcbiAgcGFnZUhlaWdodHMgPSBbXTtcbiAgcm90YXRpb24gPSAwO1xuICB6b29tID0gMTtcblxuICBASW5wdXQoKSBjYXNlSWQ6IHN0cmluZztcblxuICBoaWdobGlnaHRNb2RlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBkcmF3TW9kZTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGRvY3VtZW50T3V0bGluZTogT3V0bGluZVtdO1xuICBsb2FkaW5nRG9jdW1lbnQgPSBmYWxzZTtcbiAgbG9hZGluZ0RvY3VtZW50UHJvZ3Jlc3M6IG51bWJlcjtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIGhhc0RpZmZlcmVudFBhZ2VTaXplID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgndmlld2VyQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgdmlld2VyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncGRmVmlld2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBkZlZpZXdlcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSGlnaGxpZ2h0Q3JlYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgaGlnaGxpZ2h0Q3JlYXRlRGlyZWN0aXZlOiBIaWdobGlnaHRDcmVhdGVEaXJlY3RpdmU7XG5cbiAgcHJpdmF0ZSBwZGZXcmFwcGVyOiBQZGZKc1dyYXBwZXI7XG4gIHByaXZhdGUgJHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHZpZXdlckV4Y2VwdGlvbjogVmlld2VyRXhjZXB0aW9uO1xuICBzaG93Q29tbWVudHNQYW5lbDogYm9vbGVhbjtcbiAgc2hvd0ljcFBhcnRpY2lwYW50c0xpc3Q6IGJvb2xlYW47XG4gIGVuYWJsZUdyYWJORHJhZyA9IGZhbHNlO1xuXG4gIHNob3dTZWxlY3Rpb25TdGFydEN1cnNvciA9IGZhbHNlO1xuICBzZWxlY3Rpb25TdGFydEN1cnNvclg6IG51bWJlcjtcbiAgc2VsZWN0aW9uU3RhcnRDdXJzb3JZOiBudW1iZXI7XG5cbiAgc2hvd1NlbGVjdGlvbkVuZEN1cnNvciA9IGZhbHNlO1xuICBzZWxlY3Rpb25FbmRDdXJzb3JYOiBudW1iZXI7XG4gIHNlbGVjdGlvbkVuZEN1cnNvclk6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPixcbiAgICBwcml2YXRlIGljcFN0b3JlOiBTdG9yZTxJY3BTdGF0ZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZGZKc1dyYXBwZXJGYWN0b3J5OiBQZGZKc1dyYXBwZXJGYWN0b3J5LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbnRTZXJ2aWNlOiBQcmludFNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3ZXJFdmVudHM6IFZpZXdlckV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGljcFNlcnZpY2U6IEljcFNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJCdXR0b25zOiBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY3BFdmVudFNlcnZpY2U6IEljcEV2ZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLmhpZ2hsaWdodE1vZGUgPSB0b29sYmFyRXZlbnRzLmhpZ2hsaWdodE1vZGVTdWJqZWN0LnBpcGUodGFwKCgpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21UYWdBY3Rpb25zLkNsZWFyRmlsdGVyVGFncygpKTtcbiAgICB9KSk7XG4gICAgdGhpcy5kcmF3TW9kZSA9IHRvb2xiYXJFdmVudHMuZHJhd01vZGVTdWJqZWN0O1xuICB9XG5cbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucGRmV3JhcHBlci5kb2N1bWVudExvYWRQcm9ncmVzcy5zdWJzY3JpYmUodiA9PiB0aGlzLm9uRG9jdW1lbnRMb2FkUHJvZ3Jlc3ModikpO1xuICAgIHRoaXMucGRmV3JhcHBlci5kb2N1bWVudExvYWRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkRvY3VtZW50TG9hZGVkKCkpO1xuICAgIHRoaXMucGRmV3JhcHBlci5kb2N1bWVudExvYWRGYWlsZWQuc3Vic2NyaWJlKChlcnJvcikgPT4gdGhpcy5vbkRvY3VtZW50TG9hZEZhaWxlZChlcnJvcikpO1xuICAgIHRoaXMucGRmV3JhcHBlci5vdXRsaW5lTG9hZGVkLnN1YnNjcmliZShvdXRsaW5lID0+IHRoaXMuZG9jdW1lbnRPdXRsaW5lID0gb3V0bGluZSk7XG4gICAgdGhpcy5wZGZXcmFwcGVyLnBhZ2VSZW5kZXJlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLnVwZGF0ZVBhZ2VzKGV2ZW50KSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9uID0gdGhpcy50b29sYmFyRXZlbnRzLnByaW50U3ViamVjdFxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnByaW50U2VydmljZS5wcmludERvY3VtZW50TmF0aXZlbHkodGhpcy51cmwpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5kb3dubG9hZFN1YmplY3Quc3Vic2NyaWJlKCgpID0+XG4gICAgICB0aGlzLnBkZldyYXBwZXIuZG93bmxvYWRGaWxlKHRoaXMuZG93bmxvYWRVcmwgfHwgdGhpcy51cmwsIHRoaXMuZG93bmxvYWRGaWxlTmFtZSlcbiAgICApKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5yb3RhdGVTdWJqZWN0LnN1YnNjcmliZShyb3RhdGUgPT4gdGhpcy5yb3RhdGVEb2N1bWVudChyb3RhdGUpKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMuem9vbVN1YmplY3Quc3Vic2NyaWJlKHpvb20gPT4gdGhpcy5zZXRab29tKHpvb20pKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMuc3RlcFpvb21TdWJqZWN0LnN1YnNjcmliZSh6b29tID0+IHRoaXMuc3RlcFpvb20oem9vbSkpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hTdWJqZWN0LnN1YnNjcmliZShzZWFyY2ggPT4gdGhpcy5wZGZXcmFwcGVyLnNlYXJjaChzZWFyY2gpKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZXRDdXJyZW50UGFnZVN1YmplY3Quc3Vic2NyaWJlKHBhZ2VOdW1iZXIgPT4gdGhpcy5wZGZXcmFwcGVyLnNldFBhZ2VOdW1iZXIocGFnZU51bWJlcikpXG4gICAgKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLmNoYW5nZVBhZ2VCeURlbHRhU3ViamVjdC5zdWJzY3JpYmUocGFnZU51bWJlciA9PiB0aGlzLnBkZldyYXBwZXIuY2hhbmdlUGFnZU51bWJlcihwYWdlTnVtYmVyKSlcbiAgICApO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbi5hZGQodGhpcy50b29sYmFyRXZlbnRzLmdyYWJORHJhZy5zdWJzY3JpYmUoZ3JhYk5EcmFnID0+IHRoaXMuZW5hYmxlR3JhYk5EcmFnID0gZ3JhYk5EcmFnKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMuY29tbWVudHNQYW5lbFZpc2libGUuc3Vic2NyaWJlKHRvZ2dsZSA9PiB7XG4gICAgICB0aGlzLnNob3dDb21tZW50c1BhbmVsID0gdG9nZ2xlO1xuICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMudmlld2VyRXZlbnRzLm5hdmlnYXRpb25FdmVudC5zdWJzY3JpYmUoZGVzdCA9PiB0aGlzLmdvVG9EZXN0aW5hdGlvbihkZXN0KSkpO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbi5hZGQodGhpcy52aWV3ZXJFdmVudHMubmF2aWdhdGlvbkV2ZW50SUNQLnN1YnNjcmliZShkZXN0aW5hdGlvbiA9PiB0aGlzLmdvVG9EZXN0aW5hdGlvbklDUChkZXN0aW5hdGlvbikpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5pY3BFdmVudFNlcnZpY2UucGFydGljaXBhbnRzTGlzdFZpc2libGUuc3Vic2NyaWJlKHRvZ2dsZSA9PiB0aGlzLnNob3dJY3BQYXJ0aWNpcGFudHNMaXN0ID0gdG9nZ2xlKVxuICAgICk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnBkZldyYXBwZXIucG9zaXRpb25VcGRhdGVkLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZSh0aHJvdHRsZVRpbWUoNTAwLCBhc3luY1NjaGVkdWxlciwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUGRmUG9zaXRpb25VcGRhdGUoZXZlbnQubG9jYXRpb24pKSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICghdGhpcy5wZGZXcmFwcGVyKSB7XG4gICAgICB0aGlzLnBkZldyYXBwZXIgPSB0aGlzLnBkZkpzV3JhcHBlckZhY3RvcnkuY3JlYXRlKHRoaXMudmlld2VyQ29udGFpbmVyKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMudXJsICYmIHRoaXMucGRmV3JhcHBlcikge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRG9jdW1lbnQoKTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZVJlZGFjdGlvbnMpIHtcbiAgICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnJlZGFjdGlvbk1vZGUucGlwZShmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc2V0Um90YXRpb24oKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmNhc2VJZCkge1xuICAgICAgdGhpcy5pY3BTdG9yZS5kaXNwYXRjaChuZXcgU2V0Q2FzZUlkKHRoaXMuY2FzZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRSb3RhdGlvbigpIHtcbiAgICBpZiAodGhpcy5oYXNEaWZmZXJlbnRQYWdlU2l6ZSkge1xuICAgICAgdGhpcy5wZGZXcmFwcGVyLnJlc2V0Um90YXRpb24oMCk7XG4gICAgICB0aGlzLnJvdGF0aW9uID0gMDtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERvY3VtZW50KCkge1xuICAgIHRoaXMuaW5pdERvY3VtZW50UHJvZ3Jlc3MoKTtcbiAgICBhd2FpdCB0aGlzLnBkZldyYXBwZXIubG9hZERvY3VtZW50KHRoaXMudXJsKTtcbiAgICB0aGlzLmRvY3VtZW50VGl0bGUuZW1pdCh0aGlzLnBkZldyYXBwZXIuZ2V0Q3VycmVudFBERlRpdGxlKCkpO1xuICAgIHRoaXMuc2V0UGFnZUhlaWdodHMoKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbURvY3VtZW50c1NlbGVjdG9yLmdldFBhZ2VEaWZmZXJlbmNlKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzRGlmZmVyZW50UGFnZVNpZSA9PiB0aGlzLmhhc0RpZmZlcmVudFBhZ2VTaXplID0gaGFzRGlmZmVyZW50UGFnZVNpZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkRvY3VtZW50TG9hZFByb2dyZXNzKHByb2dyZXNzOiBEb2N1bWVudExvYWRQcm9ncmVzcykge1xuICAgIGlmIChwcm9ncmVzcy50b3RhbCkge1xuICAgICAgdGhpcy5sb2FkaW5nRG9jdW1lbnRQcm9ncmVzcyA9IE1hdGgubWluKDEwMCwgTWF0aC5jZWlsKHByb2dyZXNzLmxvYWRlZCAvIHByb2dyZXNzLnRvdGFsICogMTAwKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkRvY3VtZW50TG9hZGVkKCkge1xuICAgIHRoaXMubG9hZGluZ0RvY3VtZW50ID0gZmFsc2U7XG4gICAgdGhpcy5tZWRpYUxvYWRTdGF0dXMuZW1pdChSZXNwb25zZVR5cGUuU1VDQ0VTUyk7XG4gIH1cblxuICBwcml2YXRlIG9uRG9jdW1lbnRMb2FkRmFpbGVkKGVycm9yOiBFcnJvcikge1xuICAgIHRoaXMubG9hZGluZ0RvY3VtZW50ID0gZmFsc2U7XG4gICAgdGhpcy52aWV3ZXJFeGNlcHRpb24gPSBuZXcgVmlld2VyRXhjZXB0aW9uKGVycm9yLm5hbWUsIHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGBDb3VsZCBub3QgbG9hZCB0aGUgZG9jdW1lbnQgXCIke3RoaXMudXJsfVwiYDtcblxuICAgIHRoaXMubWVkaWFMb2FkU3RhdHVzLmVtaXQoUmVzcG9uc2VUeXBlLkZBSUxVUkUpO1xuICAgIHRoaXMucGRmVmlld2VyRXhjZXB0aW9uLmVtaXQodGhpcy52aWV3ZXJFeGNlcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQYWdlcyhldmVudDogUGFnZUV2ZW50W10pIHtcbiAgICBpZiAodGhpcy5lbmFibGVBbm5vdGF0aW9ucykge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbURvY3VtZW50QWN0aW9ucy5BZGRQYWdlcyhldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWFyY2hCYXJIaWRkZW4oaGlkZGVuOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMucGRmV3JhcHBlciAmJiBoaWRkZW4pIHtcbiAgICAgIHRoaXMucGRmV3JhcHBlci5jbGVhclNlYXJjaCgpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUNvbW1lbnRzU3VtbWFyeSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlQ29tbWVudHNTdW1tYXJ5KCF0aGlzLnRvb2xiYXJFdmVudHMuc2hvd0NvbW1lbnRTdW1tYXJ5LmdldFZhbHVlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByb3RhdGVEb2N1bWVudChyb3RhdGlvbjogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZU51bWJlciA9IHRoaXMucGRmV3JhcHBlci5nZXRQYWdlTnVtYmVyKCk7XG4gICAgdGhpcy5wZGZXcmFwcGVyLnJvdGF0ZShyb3RhdGlvbik7XG4gICAgdGhpcy5wZGZXcmFwcGVyLnNldFBhZ2VOdW1iZXIocGFnZU51bWJlcik7XG4gICAgdGhpcy5yb3RhdGlvbiA9ICh0aGlzLnJvdGF0aW9uICsgcm90YXRpb24pICUgMzYwO1xuICAgIHRoaXMuc2V0UGFnZUhlaWdodHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdERvY3VtZW50UHJvZ3Jlc3MoKSB7XG4gICAgdGhpcy5sb2FkaW5nRG9jdW1lbnQgPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ0RvY3VtZW50UHJvZ3Jlc3MgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Wm9vbSh6b29tRmFjdG9yOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHpvb21GYWN0b3IpKSB7XG4gICAgICB0aGlzLnBkZldyYXBwZXIuc2V0Wm9vbSh6b29tRmFjdG9yKTtcbiAgICAgIHRoaXMuem9vbSA9IHRoaXMuY2FsY3VsYXRlWm9vbVZhbHVlKHpvb21GYWN0b3IpO1xuICAgICAgdGhpcy5zZXRQYWdlSGVpZ2h0cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RlcFpvb20oem9vbUZhY3RvcjogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih6b29tRmFjdG9yKSkge1xuICAgICAgdGhpcy5wZGZXcmFwcGVyLnN0ZXBab29tKHpvb21GYWN0b3IpO1xuICAgICAgdGhpcy56b29tID0gdGhpcy5jYWxjdWxhdGVab29tVmFsdWUodGhpcy56b29tLCB6b29tRmFjdG9yKTtcbiAgICAgIHRoaXMuc2V0UGFnZUhlaWdodHMoKTtcbiAgICB9XG4gIH1cblxuICBzZXRQYWdlSGVpZ2h0cygpIHtcbiAgICB0aGlzLnBhZ2VIZWlnaHRzID0gW107XG4gICAgY29uc3QgcGRmVmlld2VyQ2hpbGRyZW4gPSB0aGlzLnBkZlZpZXdlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGRmVmlld2VyQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMucGFnZUhlaWdodHMucHVzaChwZGZWaWV3ZXJDaGlsZHJlbltpXS5jbGllbnRIZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZVpvb21WYWx1ZSh6b29tVmFsdWUsIGluY3JlbWVudCA9IDApIHtcbiAgICBjb25zdCBuZXdab29tVmFsdWUgPSB6b29tVmFsdWUgKyBpbmNyZW1lbnQ7XG4gICAgaWYgKG5ld1pvb21WYWx1ZSA+IDUpIHtcbiAgICAgIHJldHVybiA1O1xuICAgIH1cbiAgICBpZiAobmV3Wm9vbVZhbHVlIDwgMC4xKSB7XG4gICAgICByZXR1cm4gMC4xO1xuICAgIH1cbiAgICByZXR1cm4gK25ld1pvb21WYWx1ZS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnb1RvRGVzdGluYXRpb24oZGVzdGluYXRpb246IGFueVtdKSB7XG4gICAgY29uc3QgY3VycmVudFJvdGF0aW9uID0gdGhpcy5yb3RhdGlvbjtcbiAgICB0aGlzLnJvdGF0ZURvY3VtZW50KDM2MCAtIHRoaXMucm90YXRpb24pO1xuICAgIHRoaXMucGRmV3JhcHBlci5uYXZpZ2F0ZVRvKGRlc3RpbmF0aW9uKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucm90YXRlRG9jdW1lbnQoY3VycmVudFJvdGF0aW9uKTtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBwcml2YXRlIGdvVG9EZXN0aW5hdGlvbklDUChkZXN0aW5hdGlvbjogYW55W10pIHtcbiAgICB0aGlzLnBkZldyYXBwZXIubmF0aXZlTmF2aWdhdGUoZGVzdGluYXRpb24pO1xuICB9XG5cbiAgZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wZGZXcmFwcGVyLmdldFBhZ2VOdW1iZXIoKTtcbiAgfVxuXG4gIG9uS2V5Ym9hcmRUZXh0U2VsZWN0aW9uQ29uZmlybWVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodENyZWF0ZURpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5oaWdobGlnaHRDcmVhdGVEaXJlY3RpdmUub25LZXlib2FyZFNlbGVjdGlvbkNvbmZpcm1lZCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5Ym9hcmRUZXh0U2VsZWN0aW9uQ2FuY2VsbGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25TdGFydEN1cnNvckNoYW5nZWQocG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIsIHZpc2libGU6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgIGlmIChwb3NpdGlvbi52aXNpYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0Q3Vyc29yWCA9IHBvc2l0aW9uLng7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0Q3Vyc29yWSA9IHBvc2l0aW9uLnk7XG4gICAgICB0aGlzLnNob3dTZWxlY3Rpb25TdGFydEN1cnNvciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd1NlbGVjdGlvblN0YXJ0Q3Vyc29yID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25FbmRDdXJzb3JDaGFuZ2VkKHBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyLCB2aXNpYmxlOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBpZiAocG9zaXRpb24udmlzaWJsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmRDdXJzb3JYID0gcG9zaXRpb24ueDtcbiAgICAgIHRoaXMuc2VsZWN0aW9uRW5kQ3Vyc29yWSA9IHBvc2l0aW9uLnk7XG4gICAgICB0aGlzLnNob3dTZWxlY3Rpb25FbmRDdXJzb3IgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dTZWxlY3Rpb25FbmRDdXJzb3IgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxtdi1zaWRlLWJhclxuICAqbmdJZj1cInRvb2xiYXJFdmVudHMuc2lkZWJhck9wZW5cIlxuICBpZD1cInNpZGViYXJDb250YWluZXJcIlxuICBbdXJsXT1cInVybFwiXG4gIFt6b29tXT1cInpvb21cIlxuICBbcm90YXRlXT1cInJvdGF0aW9uXCJcbiAgW291dGxpbmVdPVwiZG9jdW1lbnRPdXRsaW5lXCJcbiAgW2Fubm90YXRpb25zRW5hYmxlZF09XCJlbmFibGVBbm5vdGF0aW9uc1wiXG4gIFtjdXJyZW50UGFnZU51bWJlcl09XCJnZXRDdXJyZW50UGFnZU51bWJlcigpXCJcbj5cbjwvbXYtc2lkZS1iYXI+XG48bXYtY29tbWVudC1zZXQtaGVhZGVyXG4gICpuZ0lmPVwiZW5hYmxlQW5ub3RhdGlvbnNcIlxuICBbbmdDbGFzc109XCJ7ICdzaG93LWNvbW1lbnRzLXBhbmVsJzogc2hvd0NvbW1lbnRzUGFuZWwgfVwiXG4gIFtpc0hpZGRlbl09XCIhc2hvd0NvbW1lbnRzUGFuZWxcIlxuICBbc2hvd0NvbW1lbnRTdW1tYXJ5XT1cInRvb2xiYXJCdXR0b25zLnNob3dDb21tZW50U3VtbWFyeVwiXG4gIChzaG93Q29tbWVudFN1bW1hcnlEaWFsb2cpPVwidG9nZ2xlQ29tbWVudHNTdW1tYXJ5KClcIlxuPlxuPC9tdi1jb21tZW50LXNldC1oZWFkZXI+XG48bXYtcGFydGljaXBhbnRzLWxpc3Q+PC9tdi1wYXJ0aWNpcGFudHMtbGlzdD5cbjxkaXZcbiAgY2xhc3M9XCJwZGZDb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0IH1cIlxuICBbbmdDbGFzc109XCJ7IHBkZkNvbnRhaW5lcjogdHJ1ZSwgaGlkZGVuOiBlcnJvck1lc3NhZ2UgfVwiXG4+XG4gIDxtdi1yZWRhY3Rpb24tc2VhcmNoLWJhcj48L212LXJlZGFjdGlvbi1zZWFyY2gtYmFyPlxuICA8ZGl2XG4gICAgI3ZpZXdlckNvbnRhaW5lclxuICAgIG12R3JhYk5EcmFnXG4gICAgW2RyYWdYXT1cInZpZXdlckNvbnRhaW5lclwiXG4gICAgW2RyYWdFbmFibGVkXT1cImVuYWJsZUdyYWJORHJhZ1wiXG4gICAgaWQ9XCJ2aWV3ZXJDb250YWluZXJcIlxuICAgIGNsYXNzPVwidmlld2VyLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLmFubm90YXRpb25zXT1cImVuYWJsZUFubm90YXRpb25zXCJcbiAgICBbY2xhc3Muc2hvdy1jb21tZW50cy1wYW5lbF09XCJcbiAgICAgIChzaG93Q29tbWVudHNQYW5lbCB8fCBzaG93SWNwUGFydGljaXBhbnRzTGlzdCkgJiZcbiAgICAgICh0b29sYmFyRXZlbnRzLnJlZGFjdGlvbk1vZGUgfCBhc3luYykgIT09IHRydWVcbiAgICBcIlxuICAgIFtjbGFzcy5ncmFiTkRyYWddPVwiZW5hYmxlR3JhYk5EcmFnXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICNwZGZWaWV3ZXJcbiAgICAgIGNsYXNzPVwicGRmVmlld2VyXCJcbiAgICAgIG12Q3JlYXRlVGV4dEhpZ2hsaWdodFxuICAgICAgbXZLZXlib2FyZFRleHRIaWdobGlnaHRcbiAgICAgIFtlbmFibGVkXT1cImhpZ2hsaWdodE1vZGUgfCBhc3luY1wiXG4gICAgICBbdGFiaW5kZXhdPVwiKGhpZ2hsaWdodE1vZGUgfCBhc3luYykgPyAwIDogLTFcIlxuICAgICAgKHNlbGVjdGlvbkNvbmZpcm1lZCk9XCJvbktleWJvYXJkVGV4dFNlbGVjdGlvbkNvbmZpcm1lZCgpXCJcbiAgICAgIChzZWxlY3Rpb25DYW5jZWxsZWQpPVwib25LZXlib2FyZFRleHRTZWxlY3Rpb25DYW5jZWxsZWQoKVwiXG4gICAgICAoY3Vyc29yUG9zaXRpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uU3RhcnRDdXJzb3JDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKHNlbGVjdGlvbkN1cnNvclBvc2l0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkVuZEN1cnNvckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGhpZ2hsaWdodE1vZGU6IGhpZ2hsaWdodE1vZGUgfCBhc3luYyxcbiAgICAgICAgZHJhd01vZGU6IGRyYXdNb2RlIHwgYXN5bmNcbiAgICAgIH1cIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1NlbGVjdGlvblN0YXJ0Q3Vyc29yXCJcbiAgICAgIGNsYXNzPVwic2VsZWN0aW9uLXN0YXJ0LWN1cnNvclwiXG4gICAgICBbc3R5bGUucG9zaXRpb25dPVwiJ2ZpeGVkJ1wiXG4gICAgICBbc3R5bGUudG9wXT1cInNlbGVjdGlvblN0YXJ0Q3Vyc29yWSArICdweCdcIlxuICAgICAgW3N0eWxlLmxlZnRdPVwic2VsZWN0aW9uU3RhcnRDdXJzb3JYICsgJ3B4J1wiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzaG93U2VsZWN0aW9uRW5kQ3Vyc29yXCJcbiAgICAgIGNsYXNzPVwic2VsZWN0aW9uLWVuZC1jdXJzb3JcIlxuICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cIidmaXhlZCdcIlxuICAgICAgW3N0eWxlLnRvcF09XCJzZWxlY3Rpb25FbmRDdXJzb3JZICsgJ3B4J1wiXG4gICAgICBbc3R5bGUubGVmdF09XCJzZWxlY3Rpb25FbmRDdXJzb3JYICsgJ3B4J1wiPlxuICAgIDwvZGl2PlxuICAgIDxtdi1yZWRhY3Rpb25zXG4gICAgICAqbmdJZj1cInRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZSB8IGFzeW5jOyBlbHNlIGFubm90YXRpb25UZW1wbGF0ZVwiXG4gICAgICBbem9vbV09XCJ6b29tXCJcbiAgICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgID48L212LXJlZGFjdGlvbnM+XG4gICAgPG5nLXRlbXBsYXRlICNhbm5vdGF0aW9uVGVtcGxhdGU+XG4gICAgICA8bXYtbWV0YWRhdGEtbGF5ZXJcbiAgICAgICAgKm5nSWY9XCJlbmFibGVBbm5vdGF0aW9ucyAmJiBhbm5vdGF0aW9uU2V0XCJcbiAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgICAgPlxuICAgICAgPC9tdi1tZXRhZGF0YS1sYXllcj5cbiAgICAgIDxtdi1ib29rbWFyay1pY29ucyBbem9vbV09XCJ6b29tXCIgW3JvdGF0ZV09XCJyb3RhdGlvblwiPiA8L212LWJvb2ttYXJrLWljb25zPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8bXYtY29tbWVudC1zZXRcbiAgICBbY29udGVudFNjcm9sbFRvcF09XCJ2aWV3ZXJDb250YWluZXIuc2Nyb2xsVG9wXCJcbiAgICAqbmdJZj1cIlxuICAgICAgZW5hYmxlQW5ub3RhdGlvbnMgJiZcbiAgICAgIGFubm90YXRpb25TZXQgJiZcbiAgICAgICh0b29sYmFyRXZlbnRzLnJlZGFjdGlvbk1vZGUgfCBhc3luYykgIT09IHRydWVcbiAgICBcIlxuICAgIFthbm5vdGF0aW9uU2V0XT1cImFubm90YXRpb25TZXRcIlxuICAgIFt6b29tXT1cInpvb21cIlxuICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgIFtoZWlnaHRdPVwicGRmVmlld2VyLm9mZnNldEhlaWdodFwiXG4gICAgW3BhZ2VIZWlnaHRzXT1cInBhZ2VIZWlnaHRzXCJcbiAgPlxuICA8L212LWNvbW1lbnQtc2V0PlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZ01lc3NhZ2VcIiAqbmdJZj1cImxvYWRpbmdEb2N1bWVudFwiPlxuICAgIDxoMyBjbGFzcz1cImdvdnVrLWhlYWRpbmctbVwiPlxuICAgICAge3sgXCJMb2FkaW5nLi4uXCIgfCBycHhUcmFuc2xhdGV9fXt7XG4gICAgICAgIGxvYWRpbmdEb2N1bWVudFByb2dyZXNzID8gbG9hZGluZ0RvY3VtZW50UHJvZ3Jlc3MgKyBcIiVcIiA6IFwiXCJcbiAgICAgIH19XG4gICAgPC9oMz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==