@hmcts/media-viewer 4.1.10 → 4.2.0

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 (370) hide show
  1. package/fesm2022/hmcts-media-viewer.mjs +297 -285
  2. package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
  3. package/index.d.ts +2316 -4
  4. package/index.d.ts.map +1 -0
  5. package/package.json +10 -12
  6. package/esm2022/hmcts-media-viewer.mjs +0 -5
  7. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -122
  8. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -120
  9. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +0 -101
  10. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
  11. package/esm2022/lib/annotations/annotation-set/annotation-set.model.mjs +0 -2
  12. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
  13. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -2
  14. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
  15. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -2
  16. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -119
  17. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
  18. package/esm2022/lib/annotations/annotations.module.mjs +0 -162
  19. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +0 -178
  20. package/esm2022/lib/annotations/comment-set/comment/comment.model.mjs +0 -2
  21. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
  22. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
  23. package/esm2022/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +0 -31
  24. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
  25. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +0 -62
  26. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
  27. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -72
  28. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +0 -55
  29. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +0 -123
  30. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
  31. package/esm2022/lib/annotations/models/api-persisted.model.mjs +0 -2
  32. package/esm2022/lib/annotations/models/event-select.model.mjs +0 -2
  33. package/esm2022/lib/annotations/models/tags.model.mjs +0 -2
  34. package/esm2022/lib/annotations/models/user.model.mjs +0 -2
  35. package/esm2022/lib/annotations/pipes/date/date.pipe.mjs +0 -26
  36. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
  37. package/esm2022/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +0 -16
  38. package/esm2022/lib/annotations/services/annotation-api/annotation-api.service.mjs +0 -58
  39. package/esm2022/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +0 -45
  40. package/esm2022/lib/annotations/services/tags/tags.services.mjs +0 -41
  41. package/esm2022/lib/annotations/tags/tags.component.mjs +0 -53
  42. package/esm2022/lib/bookmark/components/bookmark-icons.component.mjs +0 -25
  43. package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +0 -30
  44. package/esm2022/lib/icp/icp-follower.service.mjs +0 -65
  45. package/esm2022/lib/icp/icp-presenter.service.mjs +0 -56
  46. package/esm2022/lib/icp/icp-session-api.service.mjs +0 -28
  47. package/esm2022/lib/icp/icp-update.service.mjs +0 -73
  48. package/esm2022/lib/icp/icp.events.mjs +0 -15
  49. package/esm2022/lib/icp/icp.interfaces.mjs +0 -2
  50. package/esm2022/lib/icp/icp.service.mjs +0 -98
  51. package/esm2022/lib/icp/participants-list/participants-list.component.mjs +0 -32
  52. package/esm2022/lib/icp/socket.service.mjs +0 -128
  53. package/esm2022/lib/media-viewer.component.mjs +0 -247
  54. package/esm2022/lib/media-viewer.module.mjs +0 -139
  55. package/esm2022/lib/print.service.mjs +0 -32
  56. package/esm2022/lib/redaction/components/redaction.component.mjs +0 -91
  57. package/esm2022/lib/redaction/services/redaction-api.service.mjs +0 -50
  58. package/esm2022/lib/redaction/services/redaction.model.mjs +0 -2
  59. package/esm2022/lib/shared/directives/tooltip-dismiss.directive.mjs +0 -36
  60. package/esm2022/lib/shared/gov-uk-date/gov-uk-date.component.mjs +0 -28
  61. package/esm2022/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +0 -34
  62. package/esm2022/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +0 -63
  63. package/esm2022/lib/shared/gov-uk-label/gov-uk-label.component.mjs +0 -44
  64. package/esm2022/lib/shared/shared.module.mjs +0 -53
  65. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +0 -29
  66. package/esm2022/lib/shared/util/services/number.helper.service.mjs +0 -23
  67. package/esm2022/lib/store/actions/annotation.actions.mjs +0 -119
  68. package/esm2022/lib/store/actions/bookmark.actions.mjs +0 -112
  69. package/esm2022/lib/store/actions/document.actions.mjs +0 -91
  70. package/esm2022/lib/store/actions/icp.actions.mjs +0 -56
  71. package/esm2022/lib/store/actions/redaction.actions.mjs +0 -132
  72. package/esm2022/lib/store/actions/tag.actions.mjs +0 -21
  73. package/esm2022/lib/store/bookmarks-store-utils.mjs +0 -49
  74. package/esm2022/lib/store/effects/annotation.effects.mjs +0 -51
  75. package/esm2022/lib/store/effects/bookmarks.effects.mjs +0 -44
  76. package/esm2022/lib/store/effects/document.effects.mjs +0 -44
  77. package/esm2022/lib/store/effects/icp.effects.mjs +0 -26
  78. package/esm2022/lib/store/effects/index.mjs +0 -7
  79. package/esm2022/lib/store/effects/redaction.effects.mjs +0 -67
  80. package/esm2022/lib/store/models/bookmarks.interface.mjs +0 -2
  81. package/esm2022/lib/store/models/filters.interface.mjs +0 -2
  82. package/esm2022/lib/store/reducers/annotations.reducer.mjs +0 -208
  83. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +0 -125
  84. package/esm2022/lib/store/reducers/document.reducer.mjs +0 -158
  85. package/esm2022/lib/store/reducers/icp.reducer.mjs +0 -56
  86. package/esm2022/lib/store/reducers/redaction.reducer.mjs +0 -116
  87. package/esm2022/lib/store/reducers/reducers.mjs +0 -23
  88. package/esm2022/lib/store/reducers/tags.reducer.mjs +0 -93
  89. package/esm2022/lib/store/selectors/annotation.selectors.mjs +0 -81
  90. package/esm2022/lib/store/selectors/bookmark.selectors.mjs +0 -37
  91. package/esm2022/lib/store/selectors/document.selectors.mjs +0 -13
  92. package/esm2022/lib/store/selectors/icp.selectors.mjs +0 -13
  93. package/esm2022/lib/store/selectors/redaction.selectors.mjs +0 -26
  94. package/esm2022/lib/store/selectors/tag.selectors.mjs +0 -15
  95. package/esm2022/lib/store/store-utils.mjs +0 -131
  96. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -46
  97. package/esm2022/lib/toolbar/icp-event.service.mjs +0 -44
  98. package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +0 -43
  99. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -207
  100. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -237
  101. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -2
  102. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -69
  103. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
  104. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
  105. package/esm2022/lib/toolbar/toolbar-event.service.mjs +0 -178
  106. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -75
  107. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
  108. package/esm2022/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +0 -22
  109. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +0 -57
  110. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
  111. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
  112. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -266
  113. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +0 -40
  114. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -242
  115. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -379
  116. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -2
  117. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
  118. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -2
  119. package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +0 -99
  120. package/esm2022/lib/viewers/rotation-persist/rotation-api.service.mjs +0 -27
  121. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
  122. package/esm2022/lib/viewers/rotation-persist/rotation.model.mjs +0 -2
  123. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
  124. package/esm2022/lib/viewers/viewer-event.service.mjs +0 -34
  125. package/esm2022/lib/viewers/viewer-exception.model.mjs +0 -13
  126. package/esm2022/lib/viewers/viewer-util.service.mjs +0 -20
  127. package/esm2022/public_api.mjs +0 -33
  128. package/hmcts-media-viewer.d.ts.map +0 -1
  129. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +0 -48
  130. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +0 -1
  131. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +0 -32
  132. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +0 -1
  133. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +0 -18
  134. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +0 -1
  135. package/lib/annotations/annotation-set/annotation-set.component.d.ts +0 -27
  136. package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +0 -1
  137. package/lib/annotations/annotation-set/annotation-set.model.d.ts +0 -7
  138. package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +0 -1
  139. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +0 -34
  140. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +0 -1
  141. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +0 -16
  142. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +0 -1
  143. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +0 -41
  144. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +0 -1
  145. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +0 -9
  146. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +0 -1
  147. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +0 -37
  148. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +0 -1
  149. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +0 -37
  150. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +0 -1
  151. package/lib/annotations/annotations.module.d.ts +0 -36
  152. package/lib/annotations/annotations.module.d.ts.map +0 -1
  153. package/lib/annotations/comment-set/comment/comment.component.d.ts +0 -69
  154. package/lib/annotations/comment-set/comment/comment.component.d.ts.map +0 -1
  155. package/lib/annotations/comment-set/comment/comment.model.d.ts +0 -13
  156. package/lib/annotations/comment-set/comment/comment.model.d.ts.map +0 -1
  157. package/lib/annotations/comment-set/comment/comment.service.d.ts +0 -22
  158. package/lib/annotations/comment-set/comment/comment.service.d.ts.map +0 -1
  159. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +0 -14
  160. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +0 -1
  161. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +0 -12
  162. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +0 -1
  163. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +0 -28
  164. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +0 -1
  165. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +0 -26
  166. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +0 -1
  167. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +0 -21
  168. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +0 -1
  169. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +0 -36
  170. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +0 -1
  171. package/lib/annotations/comment-set/comment-set-render.service.d.ts +0 -15
  172. package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +0 -1
  173. package/lib/annotations/comment-set/comment-set.component.d.ts +0 -56
  174. package/lib/annotations/comment-set/comment-set.component.d.ts.map +0 -1
  175. package/lib/annotations/comments-summary/comments-summary.component.d.ts +0 -42
  176. package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +0 -1
  177. package/lib/annotations/models/api-persisted.model.d.ts +0 -11
  178. package/lib/annotations/models/api-persisted.model.d.ts.map +0 -1
  179. package/lib/annotations/models/event-select.model.d.ts +0 -6
  180. package/lib/annotations/models/event-select.model.d.ts.map +0 -1
  181. package/lib/annotations/models/tags.model.d.ts +0 -7
  182. package/lib/annotations/models/tags.model.d.ts.map +0 -1
  183. package/lib/annotations/models/user.model.d.ts +0 -6
  184. package/lib/annotations/models/user.model.d.ts.map +0 -1
  185. package/lib/annotations/pipes/date/date.pipe.d.ts +0 -16
  186. package/lib/annotations/pipes/date/date.pipe.d.ts.map +0 -1
  187. package/lib/annotations/pipes/filter/filter.pipe.d.ts +0 -8
  188. package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +0 -1
  189. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +0 -8
  190. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +0 -1
  191. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +0 -28
  192. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +0 -1
  193. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +0 -21
  194. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +0 -1
  195. package/lib/annotations/services/tags/tags.services.d.ts +0 -18
  196. package/lib/annotations/services/tags/tags.services.d.ts.map +0 -1
  197. package/lib/annotations/tags/tags.component.d.ts +0 -28
  198. package/lib/annotations/tags/tags.component.d.ts.map +0 -1
  199. package/lib/bookmark/components/bookmark-icons.component.d.ts +0 -19
  200. package/lib/bookmark/components/bookmark-icons.component.d.ts.map +0 -1
  201. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +0 -14
  202. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +0 -1
  203. package/lib/icp/icp-follower.service.d.ts +0 -26
  204. package/lib/icp/icp-follower.service.d.ts.map +0 -1
  205. package/lib/icp/icp-presenter.service.d.ts +0 -25
  206. package/lib/icp/icp-presenter.service.d.ts.map +0 -1
  207. package/lib/icp/icp-session-api.service.d.ts +0 -15
  208. package/lib/icp/icp-session-api.service.d.ts.map +0 -1
  209. package/lib/icp/icp-update.service.d.ts +0 -22
  210. package/lib/icp/icp-update.service.d.ts.map +0 -1
  211. package/lib/icp/icp.events.d.ts +0 -14
  212. package/lib/icp/icp.events.d.ts.map +0 -1
  213. package/lib/icp/icp.interfaces.d.ts +0 -23
  214. package/lib/icp/icp.interfaces.d.ts.map +0 -1
  215. package/lib/icp/icp.service.d.ts +0 -40
  216. package/lib/icp/icp.service.d.ts.map +0 -1
  217. package/lib/icp/participants-list/participants-list.component.d.ts +0 -23
  218. package/lib/icp/participants-list/participants-list.component.d.ts.map +0 -1
  219. package/lib/icp/socket.service.d.ts +0 -29
  220. package/lib/icp/socket.service.d.ts.map +0 -1
  221. package/lib/media-viewer.component.d.ts +0 -72
  222. package/lib/media-viewer.component.d.ts.map +0 -1
  223. package/lib/media-viewer.module.d.ts +0 -36
  224. package/lib/media-viewer.module.d.ts.map +0 -1
  225. package/lib/print.service.d.ts +0 -8
  226. package/lib/print.service.d.ts.map +0 -1
  227. package/lib/redaction/components/redaction.component.d.ts +0 -42
  228. package/lib/redaction/components/redaction.component.d.ts.map +0 -1
  229. package/lib/redaction/services/redaction-api.service.d.ts +0 -20
  230. package/lib/redaction/services/redaction-api.service.d.ts.map +0 -1
  231. package/lib/redaction/services/redaction.model.d.ts +0 -11
  232. package/lib/redaction/services/redaction.model.d.ts.map +0 -1
  233. package/lib/shared/directives/tooltip-dismiss.directive.d.ts +0 -11
  234. package/lib/shared/directives/tooltip-dismiss.directive.d.ts.map +0 -1
  235. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +0 -15
  236. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +0 -1
  237. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +0 -11
  238. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +0 -1
  239. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +0 -16
  240. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +0 -1
  241. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +0 -14
  242. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +0 -1
  243. package/lib/shared/shared.module.d.ts +0 -14
  244. package/lib/shared/shared.module.d.ts.map +0 -1
  245. package/lib/shared/util/helpers/html-templates.helper.d.ts +0 -9
  246. package/lib/shared/util/helpers/html-templates.helper.d.ts.map +0 -1
  247. package/lib/shared/util/services/number.helper.service.d.ts +0 -11
  248. package/lib/shared/util/services/number.helper.service.d.ts.map +0 -1
  249. package/lib/store/actions/annotation.actions.d.ts +0 -126
  250. package/lib/store/actions/annotation.actions.d.ts.map +0 -1
  251. package/lib/store/actions/bookmark.actions.d.ts +0 -117
  252. package/lib/store/actions/bookmark.actions.d.ts.map +0 -1
  253. package/lib/store/actions/document.actions.d.ts +0 -90
  254. package/lib/store/actions/document.actions.d.ts.map +0 -1
  255. package/lib/store/actions/icp.actions.d.ts +0 -75
  256. package/lib/store/actions/icp.actions.d.ts.map +0 -1
  257. package/lib/store/actions/redaction.actions.d.ts +0 -127
  258. package/lib/store/actions/redaction.actions.d.ts.map +0 -1
  259. package/lib/store/actions/tag.actions.d.ts +0 -30
  260. package/lib/store/actions/tag.actions.d.ts.map +0 -1
  261. package/lib/store/bookmarks-store-utils.d.ts +0 -9
  262. package/lib/store/bookmarks-store-utils.d.ts.map +0 -1
  263. package/lib/store/effects/annotation.effects.d.ts +0 -16
  264. package/lib/store/effects/annotation.effects.d.ts.map +0 -1
  265. package/lib/store/effects/bookmarks.effects.d.ts +0 -21
  266. package/lib/store/effects/bookmarks.effects.d.ts.map +0 -1
  267. package/lib/store/effects/document.effects.d.ts +0 -17
  268. package/lib/store/effects/document.effects.d.ts.map +0 -1
  269. package/lib/store/effects/icp.effects.d.ts +0 -16
  270. package/lib/store/effects/icp.effects.d.ts.map +0 -1
  271. package/lib/store/effects/index.d.ts +0 -2
  272. package/lib/store/effects/index.d.ts.map +0 -1
  273. package/lib/store/effects/redaction.effects.d.ts +0 -20
  274. package/lib/store/effects/redaction.effects.d.ts.map +0 -1
  275. package/lib/store/models/bookmarks.interface.d.ts +0 -31
  276. package/lib/store/models/bookmarks.interface.d.ts.map +0 -1
  277. package/lib/store/models/filters.interface.d.ts +0 -8
  278. package/lib/store/models/filters.interface.d.ts.map +0 -1
  279. package/lib/store/reducers/annotations.reducer.d.ts +0 -48
  280. package/lib/store/reducers/annotations.reducer.d.ts.map +0 -1
  281. package/lib/store/reducers/bookmarks.reducer.d.ts +0 -27
  282. package/lib/store/reducers/bookmarks.reducer.d.ts.map +0 -1
  283. package/lib/store/reducers/document.reducer.d.ts +0 -52
  284. package/lib/store/reducers/document.reducer.d.ts.map +0 -1
  285. package/lib/store/reducers/icp.reducer.d.ts +0 -9
  286. package/lib/store/reducers/icp.reducer.d.ts.map +0 -1
  287. package/lib/store/reducers/redaction.reducer.d.ts +0 -32
  288. package/lib/store/reducers/redaction.reducer.d.ts.map +0 -1
  289. package/lib/store/reducers/reducers.d.ts +0 -24
  290. package/lib/store/reducers/reducers.d.ts.map +0 -1
  291. package/lib/store/reducers/tags.reducer.d.ts +0 -32
  292. package/lib/store/reducers/tags.reducer.d.ts.map +0 -1
  293. package/lib/store/selectors/annotation.selectors.d.ts +0 -136
  294. package/lib/store/selectors/annotation.selectors.d.ts.map +0 -1
  295. package/lib/store/selectors/bookmark.selectors.d.ts +0 -38
  296. package/lib/store/selectors/bookmark.selectors.d.ts.map +0 -1
  297. package/lib/store/selectors/document.selectors.d.ts +0 -23
  298. package/lib/store/selectors/document.selectors.d.ts.map +0 -1
  299. package/lib/store/selectors/icp.selectors.d.ts +0 -10
  300. package/lib/store/selectors/icp.selectors.d.ts.map +0 -1
  301. package/lib/store/selectors/redaction.selectors.d.ts +0 -35
  302. package/lib/store/selectors/redaction.selectors.d.ts.map +0 -1
  303. package/lib/store/selectors/tag.selectors.d.ts +0 -28
  304. package/lib/store/selectors/tag.selectors.d.ts.map +0 -1
  305. package/lib/store/store-utils.d.ts +0 -25
  306. package/lib/store/store-utils.d.ts.map +0 -1
  307. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts +0 -20
  308. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts.map +0 -1
  309. package/lib/toolbar/icp-event.service.d.ts +0 -21
  310. package/lib/toolbar/icp-event.service.d.ts.map +0 -1
  311. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +0 -24
  312. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +0 -1
  313. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +0 -69
  314. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +0 -1
  315. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +0 -60
  316. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +0 -1
  317. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts +0 -12
  318. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts.map +0 -1
  319. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +0 -30
  320. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +0 -1
  321. package/lib/toolbar/search-bar/search-bar.component.d.ts +0 -34
  322. package/lib/toolbar/search-bar/search-bar.component.d.ts.map +0 -1
  323. package/lib/toolbar/toolbar-button-visibility.service.d.ts +0 -67
  324. package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +0 -1
  325. package/lib/toolbar/toolbar-event.service.d.ts +0 -96
  326. package/lib/toolbar/toolbar-event.service.d.ts.map +0 -1
  327. package/lib/toolbar/toolbar.module.d.ts +0 -20
  328. package/lib/toolbar/toolbar.module.d.ts.map +0 -1
  329. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +0 -31
  330. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +0 -1
  331. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +0 -12
  332. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +0 -1
  333. package/lib/viewers/grab-n-drag.directive.d.ts +0 -19
  334. package/lib/viewers/grab-n-drag.directive.d.ts.map +0 -1
  335. package/lib/viewers/image-viewer/image-viewer.component.d.ts +0 -57
  336. package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +0 -1
  337. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +0 -25
  338. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +0 -1
  339. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +0 -69
  340. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +0 -1
  341. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +0 -17
  342. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +0 -1
  343. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +0 -82
  344. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +0 -1
  345. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +0 -82
  346. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +0 -1
  347. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +0 -22
  348. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +0 -1
  349. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +0 -20
  350. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +0 -1
  351. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +0 -14
  352. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +0 -1
  353. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +0 -42
  354. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +0 -1
  355. package/lib/viewers/rotation-persist/rotation-api.service.d.ts +0 -14
  356. package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +0 -1
  357. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +0 -27
  358. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +0 -1
  359. package/lib/viewers/rotation-persist/rotation.model.d.ts +0 -5
  360. package/lib/viewers/rotation-persist/rotation.model.d.ts.map +0 -1
  361. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +0 -23
  362. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +0 -1
  363. package/lib/viewers/viewer-event.service.d.ts +0 -23
  364. package/lib/viewers/viewer-event.service.d.ts.map +0 -1
  365. package/lib/viewers/viewer-exception.model.d.ts +0 -15
  366. package/lib/viewers/viewer-exception.model.d.ts.map +0 -1
  367. package/lib/viewers/viewer-util.service.d.ts +0 -10
  368. package/lib/viewers/viewer-util.service.d.ts.map +0 -1
  369. package/public_api.d.ts +0 -30
  370. package/public_api.d.ts.map +0 -1
@@ -1,166 +0,0 @@
1
- import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
- import { ResponseType, ViewerException } from '../viewer-exception.model';
3
- import * as fromDocument from '../../store/actions/document.actions';
4
- import * as fromAnnotationActions from '../../store/actions/annotation.actions';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@ngrx/store";
7
- import * as i2 from "../../print.service";
8
- import * as i3 from "../viewer-util.service";
9
- import * as i4 from "../../toolbar/toolbar-event.service";
10
- import * as i5 from "../../toolbar/toolbar-button-visibility.service";
11
- import * as i6 from "../viewer-event.service";
12
- import * as i7 from "@angular/common";
13
- import * as i8 from "../../annotations/comment-set/comment-set.component";
14
- import * as i9 from "../../annotations/comment-set/comment-set-header/comment-set-header.component";
15
- import * as i10 from "../../annotations/annotation-set/metadata-layer/metadata-layer.component";
16
- import * as i11 from "../grab-n-drag.directive";
17
- import * as i12 from "../../redaction/components/redaction.component";
18
- export class ImageViewerComponent {
19
- constructor(store, printService, viewerUtilService, toolbarEvents, toolbarButtons, viewerEvents) {
20
- this.store = store;
21
- this.printService = printService;
22
- this.viewerUtilService = viewerUtilService;
23
- this.toolbarEvents = toolbarEvents;
24
- this.toolbarButtons = toolbarButtons;
25
- this.viewerEvents = viewerEvents;
26
- this.mediaLoadStatus = new EventEmitter();
27
- this.imageViewerException = new EventEmitter();
28
- this.rotation = 0;
29
- this.zoom = 1;
30
- this.subscriptions = [];
31
- this.enableGrabNDrag = false;
32
- }
33
- ngOnInit() {
34
- this.subscriptions.push(this.toolbarEvents.rotateSubject.subscribe(rotation => this.rotateImage(rotation)), this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)), this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)), this.toolbarEvents.printSubject.subscribe(() => this.printService.printDocumentNatively(this.url)), this.toolbarEvents.downloadSubject.subscribe(() => this.download()), this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag), this.toolbarEvents.commentsPanelVisible.subscribe(toggle => this.showCommentsPanel = toggle));
35
- }
36
- onImageViewerClick(event) {
37
- const classNme = event.target.className;
38
- if (classNme.startsWith('pageContainer')) {
39
- this.store.dispatch(new fromAnnotationActions.SelectedAnnotation({
40
- annotationId: '',
41
- selected: false,
42
- editable: false,
43
- }));
44
- this.viewerEvents.clearCtxToolbar();
45
- }
46
- }
47
- ngOnDestroy() {
48
- this.subscriptions.filter(subscription => !subscription.closed)
49
- .forEach(subscription => subscription.unsubscribe());
50
- if (this.response) {
51
- this.response.unsubscribe();
52
- }
53
- }
54
- ngOnChanges(changes) {
55
- if (changes.url) {
56
- this.errorMessage = null;
57
- this.toolbarEvents.reset();
58
- }
59
- }
60
- rotateImage(rotation) {
61
- this.rotation = (this.rotation + rotation) % 360;
62
- this.initAnnoPage(this.img.nativeElement);
63
- }
64
- async setZoom(zoomFactor) {
65
- if (!isNaN(zoomFactor)) {
66
- await this.setZoomValue(this.calculateZoomValue(zoomFactor));
67
- this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;
68
- this.initAnnoPage(this.img.nativeElement);
69
- }
70
- }
71
- async stepZoom(zoomFactor) {
72
- if (!isNaN(zoomFactor)) {
73
- await this.setZoomValue(this.calculateZoomValue(this.zoom, zoomFactor));
74
- this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;
75
- this.initAnnoPage(this.img.nativeElement);
76
- }
77
- }
78
- download() {
79
- const a = document.createElement('a');
80
- document.body.appendChild(a);
81
- a.setAttribute('style', 'display: none');
82
- a.href = this.url;
83
- a.download = this.downloadFileName;
84
- a.click();
85
- a.remove();
86
- }
87
- // the returned promise is a work-around
88
- setZoomValue(zoomValue) {
89
- return new Promise((resolve) => {
90
- this.zoom = zoomValue;
91
- this.toolbarEvents.zoomValueSubject.next(zoomValue);
92
- resolve(true);
93
- });
94
- }
95
- calculateZoomValue(zoomValue, increment = 0) {
96
- const newZoomValue = zoomValue + increment;
97
- if (newZoomValue > 5) {
98
- return 5;
99
- }
100
- if (newZoomValue < 0.1) {
101
- return 0.1;
102
- }
103
- return +newZoomValue.toFixed(2);
104
- }
105
- onLoadError(url) {
106
- this.response = this.viewerUtilService.validateFile(url)
107
- .subscribe(next => next, error => {
108
- this.viewerException = new ViewerException(error.name, { httpResponseCode: error.status, message: error.message });
109
- });
110
- this.errorMessage = `Could not load the image "${this.url}"`;
111
- this.mediaLoadStatus.emit(ResponseType.FAILURE);
112
- this.imageViewerException.emit(this.viewerException);
113
- }
114
- onLoad(img) {
115
- this.mediaLoadStatus.emit(ResponseType.SUCCESS);
116
- this.initAnnoPage(img);
117
- }
118
- initAnnoPage(img) {
119
- this.imageHeight = this.rotation % 180 !== 0 ? img.offsetWidth : img.offsetHeight;
120
- this.imageWidth = this.rotation % 180 !== 0 ? img.offsetHeight : img.offsetWidth;
121
- this.imageLeft = this.rotation % 180 !== 0 ? img.offsetTop : img.offsetLeft;
122
- this.imageTop = this.rotation % 180 !== 0 ? img.offsetLeft : img.offsetTop;
123
- const payload = [{
124
- div: {
125
- scrollHeight: this.imageHeight,
126
- scrollWidth: this.imageWidth,
127
- offsetLeft: this.imageLeft,
128
- },
129
- pageNumber: 1,
130
- scale: this.zoom,
131
- rotation: this.rotation,
132
- id: 1
133
- }];
134
- this.store.dispatch(new fromDocument.AddPages(payload));
135
- }
136
- toggleCommentsSummary() {
137
- this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());
138
- }
139
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageViewerComponent, deps: [{ token: i1.Store }, { token: i2.PrintService }, { token: i3.ViewerUtilService }, { token: i4.ToolbarEventService }, { token: i5.ToolbarButtonVisibilityService }, { token: i6.ViewerEventService }], target: i0.ɵɵFactoryTarget.Component }); }
140
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageViewerComponent, selector: "mv-image-viewer", inputs: { url: "url", downloadFileName: "downloadFileName", enableAnnotations: "enableAnnotations", annotationSet: "annotationSet", height: "height" }, outputs: { mediaLoadStatus: "mediaLoadStatus", imageViewerException: "imageViewerException" }, host: { listeners: { "mousedown": "onImageViewerClick($event)" } }, viewQueries: [{ propertyName: "img", first: true, predicate: ["img"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mv-comment-set-header\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<div\n id=\"viewer-wrapper\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ grabNDrag: enableGrabNDrag }\"\n *ngIf=\"url && !errorMessage\"\n>\n <div\n #imageContainer\n id=\"image-container\"\n mvGrabNDrag\n [dragX]=\"imageContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n (scroll)=\"($event)\"\n [ngClass]=\"{\n 'image-container': true,\n annotations: enableAnnotations,\n 'show-comments-panel': showCommentsPanel\n }\"\n >\n <img\n #img\n alt=\"\"\n [src]=\"url\"\n [ngClass]=\"'rot' + rotation\"\n (error)=\"onLoadError(url)\"\n (load)=\"onLoad(img)\"\n />\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 </ng-template>\n </div>\n\n <mv-comment-set\n [contentScrollTop]=\"imageContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"imageHeight\"\n >\n </mv-comment-set>\n</div>\n", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.CommentSetComponent, selector: "mv-comment-set", inputs: ["annotationSet", "zoom", "rotate", "height", "pageHeights", "contentScrollTop"] }, { kind: "component", type: i9.CommentSetHeaderComponent, selector: "mv-comment-set-header", inputs: ["showCommentSummary", "isHidden"], outputs: ["showCommentSummaryDialog"] }, { kind: "component", type: i10.MetadataLayerComponent, selector: "mv-metadata-layer", inputs: ["zoom", "rotate"] }, { kind: "directive", type: i11.GrabNDragDirective, selector: "[mvGrabNDrag]", inputs: ["dragEnabled", "dragX"] }, { kind: "component", type: i12.RedactionComponent, selector: "mv-redactions", inputs: ["zoom", "rotate"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageViewerComponent, decorators: [{
143
- type: Component,
144
- args: [{ selector: 'mv-image-viewer', template: "<mv-comment-set-header\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<div\n id=\"viewer-wrapper\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ grabNDrag: enableGrabNDrag }\"\n *ngIf=\"url && !errorMessage\"\n>\n <div\n #imageContainer\n id=\"image-container\"\n mvGrabNDrag\n [dragX]=\"imageContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n (scroll)=\"($event)\"\n [ngClass]=\"{\n 'image-container': true,\n annotations: enableAnnotations,\n 'show-comments-panel': showCommentsPanel\n }\"\n >\n <img\n #img\n alt=\"\"\n [src]=\"url\"\n [ngClass]=\"'rot' + rotation\"\n (error)=\"onLoadError(url)\"\n (load)=\"onLoad(img)\"\n />\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 </ng-template>\n </div>\n\n <mv-comment-set\n [contentScrollTop]=\"imageContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"imageHeight\"\n >\n </mv-comment-set>\n</div>\n" }]
145
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.PrintService }, { type: i3.ViewerUtilService }, { type: i4.ToolbarEventService }, { type: i5.ToolbarButtonVisibilityService }, { type: i6.ViewerEventService }], propDecorators: { url: [{
146
- type: Input
147
- }], downloadFileName: [{
148
- type: Input
149
- }], enableAnnotations: [{
150
- type: Input
151
- }], annotationSet: [{
152
- type: Input
153
- }], height: [{
154
- type: Input
155
- }], mediaLoadStatus: [{
156
- type: Output
157
- }], imageViewerException: [{
158
- type: Output
159
- }], img: [{
160
- type: ViewChild,
161
- args: ['img', { static: false }]
162
- }], onImageViewerClick: [{
163
- type: HostListener,
164
- args: ['mousedown', ['$event']]
165
- }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvaW1hZ2Utdmlld2VyL2ltYWdlLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL2ltYWdlLXZpZXdlci9pbWFnZS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLMUUsT0FBTyxLQUFLLFlBQVksTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEtBQUsscUJBQXFCLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBT2hGLE1BQU0sT0FBTyxvQkFBb0I7SUE4Qi9CLFlBQ1UsS0FBMEMsRUFDakMsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3JDLGFBQWtDLEVBQ2xDLGNBQThDLEVBQ3RELFlBQWdDO1FBTGhDLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUN0RCxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUExQmhDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDbkQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFLckUsYUFBUSxHQUFHLENBQUMs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QztnQkFDcEIsR0FBRyxFQUFFO29CQUNILFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztvQkFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUM1QixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzNCO2dCQUNELFVBQVUsRUFBRSxDQUFDO2dCQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixFQUFFLEVBQUUsQ0FBQzthQUNOLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO2tJQXpLVSxvQkFBb0I7c0hBQXBCLG9CQUFvQixtZUM5QmpDLHlwREErREE7OzRGRGpDYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0UsaUJBQWlCO3FQQUtsQixHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFJNEIsR0FBRztzQkFBckMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQXFDakMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4uLy4uL3ByaW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ub3RhdGlvblNldCB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZVR5cGUsIFZpZXdlckV4Y2VwdGlvbiB9IGZyb20gJy4uL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVmlld2VyVXRpbFNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXItdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudCBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgZnJvbUFubm90YXRpb25BY3Rpb25zIGZyb20gJy4uLy4uL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcbmltcG9ydCB7IFZpZXdlckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3ZpZXdlci1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtaW1hZ2Utdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLXZpZXdlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSB1cmw6IHN0cmluZztcbiAgQElucHV0KCkgZG93bmxvYWRGaWxlTmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGVuYWJsZUFubm90YXRpb25zOiBib29sZWFuO1xuICBASW5wdXQoKSBhbm5vdGF0aW9uU2V0OiBBbm5vdGF0aW9uU2V0IHwgbnVsbDtcblxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZztcblxuICBAT3V0cHV0KCkgbWVkaWFMb2FkU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNwb25zZVR5cGU+KCk7XG4gIEBPdXRwdXQoKSBpbWFnZVZpZXdlckV4Y2VwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld2VyRXhjZXB0aW9uPigpO1xuXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2ltZycsIHtzdGF0aWM6IGZhbHNlfSkgaW1nOiBFbGVtZW50UmVmO1xuICByb3RhdGlvbiA9IDA7XG4gIHpvb20gPSAxO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSB2aWV3ZXJFeGNlcHRpb246IFZpZXdlckV4Y2VwdGlvbjtcbiAgcHJpdmF0ZSByZXNwb25zZTogU3Vic2NyaXB0aW9uO1xuXG4gIHNob3dDb21tZW50c1BhbmVsOiBib29sZWFuO1xuICBlbmFibGVHcmFiTkRyYWcgPSBmYWxzZTtcbiAgaW1hZ2VIZWlnaHQ6IG51bWJlcjtcbiAgaW1hZ2VXaWR0aDogbnVtYmVyO1xuICBpbWFnZUxlZnQ6IG51bWJlcjtcbiAgaW1hZ2VUb3A6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld2VyVXRpbFNlcnZpY2U6IFZpZXdlclV0aWxTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyRXZlbnRzOiBWaWV3ZXJFdmVudFNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yb3RhdGVTdWJqZWN0LnN1YnNjcmliZShyb3RhdGlvbiA9PiB0aGlzLnJvdGF0ZUltYWdlKHJvdGF0aW9uKSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuem9vbVN1YmplY3Quc3Vic2NyaWJlKHpvb20gPT4gdGhpcy5zZXRab29tKHpvb20pKSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zdGVwWm9vbVN1YmplY3Quc3Vic2NyaWJlKHpvb20gPT4gdGhpcy5zdGVwWm9vbSh6b29tKSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucHJpbnRTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB0aGlzLnByaW50U2VydmljZS5wcmludERvY3VtZW50TmF0aXZlbHkodGhpcy51cmwpKSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5kb3dubG9hZFN1YmplY3Quc3Vic2NyaWJlKCgpID0+IHRoaXMuZG93bmxvYWQoKSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuZ3JhYk5EcmFnLnN1YnNjcmliZShncmFiTkRyYWcgPT4gdGhpcy5lbmFibGVHcmFiTkRyYWcgPSBncmFiTkRyYWcpLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLmNvbW1lbnRzUGFuZWxWaXNpYmxlLnN1YnNjcmliZSh0b2dnbGUgPT4gdGhpcy5zaG93Q29tbWVudHNQYW5lbCA9IHRvZ2dsZSlcbiAgICApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25JbWFnZVZpZXdlckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY2xhc3NObWUgPSAoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsYXNzTmFtZTtcbiAgICBpZiAoY2xhc3NObWUuc3RhcnRzV2l0aCgncGFnZUNvbnRhaW5lcicpKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBuZXcgZnJvbUFubm90YXRpb25BY3Rpb25zLlNlbGVjdGVkQW5ub3RhdGlvbih7XG4gICAgICAgICAgYW5ub3RhdGlvbklkOiAnJyxcbiAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMudmlld2VyRXZlbnRzLmNsZWFyQ3R4VG9vbGJhcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5maWx0ZXIoc3Vic2NyaXB0aW9uID0+ICFzdWJzY3JpcHRpb24uY2xvc2VkKVxuICAgICAgLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICBpZiAodGhpcy5yZXNwb25zZSkge1xuICAgICAgdGhpcy5yZXNwb25zZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy51cmwpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm90YXRlSW1hZ2Uocm90YXRpb246IG51bWJlcikge1xuICAgIHRoaXMucm90YXRpb24gPSAodGhpcy5yb3RhdGlvbiArIHJvdGF0aW9uKSAlIDM2MDtcbiAgICB0aGlzLmluaXRBbm5vUGFnZSh0aGlzLmltZy5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Wm9vbSh6b29tRmFjdG9yOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHpvb21GYWN0b3IpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldFpvb21WYWx1ZSh0aGlzLmNhbGN1bGF0ZVpvb21WYWx1ZSh6b29tRmFjdG9yKSk7XG4gICAgICB0aGlzLmltZy5uYXRpdmVFbGVtZW50LndpZHRoID0gdGhpcy5pbWcubmF0aXZlRWxlbWVudC5uYXR1cmFsV2lkdGggKiB0aGlzLnpvb207XG4gICAgICB0aGlzLmluaXRBbm5vUGFnZSh0aGlzLmltZy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN0ZXBab29tKHpvb21GYWN0b3I6IG51bWJlcikge1xuICAgIGlmICghaXNOYU4oem9vbUZhY3RvcikpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Wm9vbVZhbHVlKHRoaXMuY2FsY3VsYXRlWm9vbVZhbHVlKHRoaXMuem9vbSwgem9vbUZhY3RvcikpO1xuICAgICAgdGhpcy5pbWcubmF0aXZlRWxlbWVudC53aWR0aCA9IHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQubmF0dXJhbFdpZHRoICogdGhpcy56b29tO1xuICAgICAgdGhpcy5pbml0QW5ub1BhZ2UodGhpcy5pbWcubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZCgpIHtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICBhLmhyZWYgPSB0aGlzLnVybDtcbiAgICBhLmRvd25sb2FkID0gdGhpcy5kb3dubG9hZEZpbGVOYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xuICB9XG5cbiAgLy8gdGhlIHJldHVybmVkIHByb21pc2UgaXMgYSB3b3JrLWFyb3VuZFxuICBzZXRab29tVmFsdWUoem9vbVZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLnpvb20gPSB6b29tVmFsdWU7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuem9vbVZhbHVlU3ViamVjdC5uZXh0KHpvb21WYWx1ZSk7XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgY2FsY3VsYXRlWm9vbVZhbHVlKHpvb21WYWx1ZSwgaW5jcmVtZW50ID0gMCkge1xuICAgIGNvbnN0IG5ld1pvb21WYWx1ZSA9IHpvb21WYWx1ZSArIGluY3JlbWVudDtcbiAgICBpZiAobmV3Wm9vbVZhbHVlID4gNSkgeyByZXR1cm4gNTsgfVxuICAgIGlmIChuZXdab29tVmFsdWUgPCAwLjEpIHsgcmV0dXJuIDAuMTsgfVxuICAgIHJldHVybiArbmV3Wm9vbVZhbHVlLnRvRml4ZWQoMik7XG4gIH1cblxuICBvbkxvYWRFcnJvcih1cmwpIHtcbiAgICB0aGlzLnJlc3BvbnNlID0gdGhpcy52aWV3ZXJVdGlsU2VydmljZS52YWxpZGF0ZUZpbGUodXJsKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgbmV4dCA9PiBuZXh0LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy52aWV3ZXJFeGNlcHRpb24gPSBuZXcgVmlld2VyRXhjZXB0aW9uKGVycm9yLm5hbWUsXG4gICAgICAgICAgICB7IGh0dHBSZXNwb25zZUNvZGU6IGVycm9yLnN0YXR1cywgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGBDb3VsZCBub3QgbG9hZCB0aGUgaW1hZ2UgXCIke3RoaXMudXJsfVwiYDtcbiAgICB0aGlzLm1lZGlhTG9hZFN0YXR1cy5lbWl0KFJlc3BvbnNlVHlwZS5GQUlMVVJFKTtcbiAgICB0aGlzLmltYWdlVmlld2VyRXhjZXB0aW9uLmVtaXQodGhpcy52aWV3ZXJFeGNlcHRpb24pO1xuICB9XG5cbiAgb25Mb2FkKGltZzogYW55KSB7XG4gICAgdGhpcy5tZWRpYUxvYWRTdGF0dXMuZW1pdChSZXNwb25zZVR5cGUuU1VDQ0VTUyk7XG4gICAgdGhpcy5pbml0QW5ub1BhZ2UoaW1nKTtcbiAgfVxuXG4gIGluaXRBbm5vUGFnZShpbWc6IGFueSkge1xuICAgIHRoaXMuaW1hZ2VIZWlnaHQgPSB0aGlzLnJvdGF0aW9uICUgMTgwICE9PSAwID8gaW1nLm9mZnNldFdpZHRoIDogaW1nLm9mZnNldEhlaWdodDtcbiAgICB0aGlzLmltYWdlV2lkdGggPSB0aGlzLnJvdGF0aW9uICUgMTgwICE9PSAwID8gaW1nLm9mZnNldEhlaWdodCA6IGltZy5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLmltYWdlTGVmdCA9IHRoaXMucm90YXRpb24gJSAxODAgIT09IDAgPyBpbWcub2Zmc2V0VG9wIDogaW1nLm9mZnNldExlZnQ7XG4gICAgdGhpcy5pbWFnZVRvcCA9IHRoaXMucm90YXRpb24gJSAxODAgIT09IDAgPyBpbWcub2Zmc2V0TGVmdCA6IGltZy5vZmZzZXRUb3A7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0gW3tcbiAgICAgIGRpdjoge1xuICAgICAgICBzY3JvbGxIZWlnaHQ6IHRoaXMuaW1hZ2VIZWlnaHQsXG4gICAgICAgIHNjcm9sbFdpZHRoOiB0aGlzLmltYWdlV2lkdGgsXG4gICAgICAgIG9mZnNldExlZnQ6IHRoaXMuaW1hZ2VMZWZ0LFxuICAgICAgfSxcbiAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICBzY2FsZTogdGhpcy56b29tLFxuICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb24sXG4gICAgICBpZDogMVxuICAgIH1dO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbURvY3VtZW50LkFkZFBhZ2VzKHBheWxvYWQpKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbW1lbnRzU3VtbWFyeSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlQ29tbWVudHNTdW1tYXJ5KCF0aGlzLnRvb2xiYXJFdmVudHMuc2hvd0NvbW1lbnRTdW1tYXJ5LmdldFZhbHVlKCkpO1xuICB9XG59XG4iLCI8bXYtY29tbWVudC1zZXQtaGVhZGVyXG4gIFtuZ0NsYXNzXT1cInsgJ3Nob3ctY29tbWVudHMtcGFuZWwnOiBzaG93Q29tbWVudHNQYW5lbCB9XCJcbiAgW2lzSGlkZGVuXT1cIiFzaG93Q29tbWVudHNQYW5lbFwiXG4gIFtzaG93Q29tbWVudFN1bW1hcnldPVwidG9vbGJhckJ1dHRvbnMuc2hvd0NvbW1lbnRTdW1tYXJ5XCJcbiAgKHNob3dDb21tZW50U3VtbWFyeURpYWxvZyk9XCJ0b2dnbGVDb21tZW50c1N1bW1hcnkoKVwiXG4+XG48L212LWNvbW1lbnQtc2V0LWhlYWRlcj5cbjxkaXZcbiAgaWQ9XCJ2aWV3ZXItd3JhcHBlclwiXG4gIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgfVwiXG4gIFtuZ0NsYXNzXT1cInsgZ3JhYk5EcmFnOiBlbmFibGVHcmFiTkRyYWcgfVwiXG4gICpuZ0lmPVwidXJsICYmICFlcnJvck1lc3NhZ2VcIlxuPlxuICA8ZGl2XG4gICAgI2ltYWdlQ29udGFpbmVyXG4gICAgaWQ9XCJpbWFnZS1jb250YWluZXJcIlxuICAgIG12R3JhYk5EcmFnXG4gICAgW2RyYWdYXT1cImltYWdlQ29udGFpbmVyXCJcbiAgICBbZHJhZ0VuYWJsZWRdPVwiZW5hYmxlR3JhYk5EcmFnXCJcbiAgICAoc2Nyb2xsKT1cIigkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnaW1hZ2UtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAgIGFubm90YXRpb25zOiBlbmFibGVBbm5vdGF0aW9ucyxcbiAgICAgICdzaG93LWNvbW1lbnRzLXBhbmVsJzogc2hvd0NvbW1lbnRzUGFuZWxcbiAgICB9XCJcbiAgPlxuICAgIDxpbWdcbiAgICAgICNpbWdcbiAgICAgIGFsdD1cIlwiXG4gICAgICBbc3JjXT1cInVybFwiXG4gICAgICBbbmdDbGFzc109XCIncm90JyArIHJvdGF0aW9uXCJcbiAgICAgIChlcnJvcik9XCJvbkxvYWRFcnJvcih1cmwpXCJcbiAgICAgIChsb2FkKT1cIm9uTG9hZChpbWcpXCJcbiAgICAvPlxuICAgIDxtdi1yZWRhY3Rpb25zXG4gICAgICAqbmdJZj1cInRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZSB8IGFzeW5jOyBlbHNlIGFubm90YXRpb25UZW1wbGF0ZVwiXG4gICAgICBbem9vbV09XCJ6b29tXCJcbiAgICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgID48L212LXJlZGFjdGlvbnM+XG4gICAgPG5nLXRlbXBsYXRlICNhbm5vdGF0aW9uVGVtcGxhdGU+XG4gICAgICA8bXYtbWV0YWRhdGEtbGF5ZXJcbiAgICAgICAgKm5nSWY9XCJlbmFibGVBbm5vdGF0aW9ucyAmJiBhbm5vdGF0aW9uU2V0XCJcbiAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgICAgPlxuICAgICAgPC9tdi1tZXRhZGF0YS1sYXllcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8bXYtY29tbWVudC1zZXRcbiAgICBbY29udGVudFNjcm9sbFRvcF09XCJpbWFnZUNvbnRhaW5lci5zY3JvbGxUb3BcIlxuICAgICpuZ0lmPVwiXG4gICAgICBlbmFibGVBbm5vdGF0aW9ucyAmJlxuICAgICAgYW5ub3RhdGlvblNldCAmJlxuICAgICAgKHRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZSB8IGFzeW5jKSAhPT0gdHJ1ZVxuICAgIFwiXG4gICAgW2Fubm90YXRpb25TZXRdPVwiYW5ub3RhdGlvblNldFwiXG4gICAgW3pvb21dPVwiem9vbVwiXG4gICAgW3JvdGF0ZV09XCJyb3RhdGlvblwiXG4gICAgW2hlaWdodF09XCJpbWFnZUhlaWdodFwiXG4gID5cbiAgPC9tdi1jb21tZW50LXNldD5cbjwvZGl2PlxuIl19
@@ -1,59 +0,0 @@
1
- import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
2
- import { ResponseType } from '../viewer-exception.model';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../toolbar/toolbar-event.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "rpx-xui-translation";
7
- export class MultimediaPlayerComponent {
8
- constructor(toolbarEvents) {
9
- this.toolbarEvents = toolbarEvents;
10
- this.loadStatus = new EventEmitter();
11
- this.playbackMsg = 'loading';
12
- }
13
- ngOnInit() {
14
- this.subscription = this.toolbarEvents.downloadSubject
15
- .subscribe(() => this.downloadLink.nativeElement.click());
16
- this.loadStatus.emit(ResponseType.SUCCESS);
17
- }
18
- ngOnChanges(changes) {
19
- if (changes.url) {
20
- this.reloadVideo();
21
- }
22
- }
23
- ngOnDestroy() {
24
- this.subscription.unsubscribe();
25
- }
26
- reloadVideo() {
27
- if (this.videoPlayer) {
28
- this.playbackMsg = 'loading';
29
- this.videoPlayer.nativeElement.load();
30
- }
31
- }
32
- onSuccess() {
33
- this.playbackMsg = 'success';
34
- }
35
- onError() {
36
- this.playbackMsg = 'error';
37
- }
38
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultimediaPlayerComponent, deps: [{ token: i1.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
39
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultimediaPlayerComponent, selector: "mv-multimedia-player", inputs: { url: "url", downloadFileName: "downloadFileName", multimediaOn: "multimediaOn" }, outputs: { loadStatus: "loadStatus" }, viewQueries: [{ propertyName: "downloadLink", first: true, predicate: ["downloadLink"], descendants: true }, { propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"multimediaOn && playbackMsg === 'loading'\">{{\n \"Loading multimedia content ...\" | rpxTranslate\n }}</span>\n <span *ngIf=\"!multimediaOn\"\n >{{ \"Multimedia playback is not enabled, \" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'success'\"\n >{{ \"Use the player to play to the file or\" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'error'\"\n >{{ \"Mime type not supported.\" | rpxTranslate }}\n </span>\n <a\n *ngIf=\"!multimediaOn || playbackMsg !== 'loading'\"\n #downloadLink\n [href]=\"url\"\n [download]=\"downloadFileName\"\n >{{ \"Click here to download\" | rpxTranslate }}</a\n >\n </p>\n <video\n #videoPlayer\n *ngIf=\"multimediaOn\"\n width=\"100%\"\n height=\"100%\"\n preload=\"auto\"\n (canplay)=\"onSuccess()\"\n controls\n >\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/mp4\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/mp4; codecs='avc1, av01, hvc1, hev1, mp4v, mp4a.40.2, opus'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/ogg\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/ogg; codecs='theora, vp8, vp9, flac, opus, vorbis'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/webm\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/webm; codecs='vp8, vp9, vorbis, opus'\"\n />\n </video>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.RpxTranslatePipe, name: "rpxTranslate" }] }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultimediaPlayerComponent, decorators: [{
42
- type: Component,
43
- args: [{ selector: 'mv-multimedia-player', template: "<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"multimediaOn && playbackMsg === 'loading'\">{{\n \"Loading multimedia content ...\" | rpxTranslate\n }}</span>\n <span *ngIf=\"!multimediaOn\"\n >{{ \"Multimedia playback is not enabled, \" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'success'\"\n >{{ \"Use the player to play to the file or\" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'error'\"\n >{{ \"Mime type not supported.\" | rpxTranslate }}\n </span>\n <a\n *ngIf=\"!multimediaOn || playbackMsg !== 'loading'\"\n #downloadLink\n [href]=\"url\"\n [download]=\"downloadFileName\"\n >{{ \"Click here to download\" | rpxTranslate }}</a\n >\n </p>\n <video\n #videoPlayer\n *ngIf=\"multimediaOn\"\n width=\"100%\"\n height=\"100%\"\n preload=\"auto\"\n (canplay)=\"onSuccess()\"\n controls\n >\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/mp4\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/mp4; codecs='avc1, av01, hvc1, hev1, mp4v, mp4a.40.2, opus'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/ogg\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/ogg; codecs='theora, vp8, vp9, flac, opus, vorbis'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/webm\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/webm; codecs='vp8, vp9, vorbis, opus'\"\n />\n </video>\n </div>\n</div>\n" }]
44
- }], ctorParameters: () => [{ type: i1.ToolbarEventService }], propDecorators: { url: [{
45
- type: Input
46
- }], downloadFileName: [{
47
- type: Input
48
- }], multimediaOn: [{
49
- type: Input
50
- }], loadStatus: [{
51
- type: Output
52
- }], downloadLink: [{
53
- type: ViewChild,
54
- args: ['downloadLink', { static: false }]
55
- }], videoPlayer: [{
56
- type: ViewChild,
57
- args: ['videoPlayer', { static: false }]
58
- }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGltZWRpYS1wbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdmlld2Vycy9tdWx0aW1lZGlhLXBsYXllci9tdWx0aW1lZGlhLXBsYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL211bHRpbWVkaWEtcGxheWVyL211bHRpbWVkaWEtcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUdiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNekQsTUFBTSxPQUFPLHlCQUF5QjtJQWVwQyxZQUNrQixhQUFrQztRQUFsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFWMUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBS3hELGdCQUFXLEdBQUcsU0FBUyxDQUFDO0lBTXJCLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWU7YUFDbkQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7a0lBaERVLHlCQUF5QjtzSEFBekIseUJBQXlCLCtaQ3BCdEMsd3dEQXFEQTs7NEZEakNhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxzQkFBc0I7d0ZBS3ZCLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVxQyxZQUFZO3NCQUF2RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ0MsV0FBVztzQkFBckQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZSB9IGZyb20gJy4uL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1tdWx0aW1lZGlhLXBsYXllcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aW1lZGlhLXBsYXllci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGltZWRpYVBsYXllckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBASW5wdXQoKSBkb3dubG9hZEZpbGVOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG11bHRpbWVkaWFPbjogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgbG9hZFN0YXR1cyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VUeXBlPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Rvd25sb2FkTGluaycsIHtzdGF0aWM6IGZhbHNlfSkgZG93bmxvYWRMaW5rOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd2aWRlb1BsYXllcicsIHtzdGF0aWM6IGZhbHNlfSkgdmlkZW9QbGF5ZXI6IEVsZW1lbnRSZWY7XG5cbiAgcGxheWJhY2tNc2cgPSAnbG9hZGluZyc7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudG9vbGJhckV2ZW50cy5kb3dubG9hZFN1YmplY3RcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kb3dubG9hZExpbmsubmF0aXZlRWxlbWVudC5jbGljaygpKTtcbiAgICB0aGlzLmxvYWRTdGF0dXMuZW1pdChSZXNwb25zZVR5cGUuU1VDQ0VTUyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnVybCkge1xuICAgICAgdGhpcy5yZWxvYWRWaWRlbygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWxvYWRWaWRlbygpIHtcbiAgICBpZiAodGhpcy52aWRlb1BsYXllcikge1xuICAgICAgdGhpcy5wbGF5YmFja01zZyA9ICdsb2FkaW5nJztcbiAgICAgIHRoaXMudmlkZW9QbGF5ZXIubmF0aXZlRWxlbWVudC5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgb25TdWNjZXNzKCkge1xuICAgIHRoaXMucGxheWJhY2tNc2cgPSAnc3VjY2Vzcyc7XG4gIH1cblxuICBvbkVycm9yKCkge1xuICAgIHRoaXMucGxheWJhY2tNc2cgPSAnZXJyb3InO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ub3RpZmljYXRpb24tYmFubmVyX19jb250ZW50XCI+XG4gICAgPHA+XG4gICAgICA8c3BhbiAqbmdJZj1cIm11bHRpbWVkaWFPbiAmJiBwbGF5YmFja01zZyA9PT0gJ2xvYWRpbmcnXCI+e3tcbiAgICAgICAgXCJMb2FkaW5nIG11bHRpbWVkaWEgY29udGVudCAuLi5cIiB8IHJweFRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aW1lZGlhT25cIlxuICAgICAgICA+e3sgXCJNdWx0aW1lZGlhIHBsYXliYWNrIGlzIG5vdCBlbmFibGVkLCBcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aW1lZGlhT24gJiYgcGxheWJhY2tNc2cgPT09ICdzdWNjZXNzJ1wiXG4gICAgICAgID57eyBcIlVzZSB0aGUgcGxheWVyIHRvIHBsYXkgdG8gdGhlIGZpbGUgb3JcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aW1lZGlhT24gJiYgcGxheWJhY2tNc2cgPT09ICdlcnJvcidcIlxuICAgICAgICA+e3sgXCJNaW1lIHR5cGUgbm90IHN1cHBvcnRlZC5cIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCIhbXVsdGltZWRpYU9uIHx8IHBsYXliYWNrTXNnICE9PSAnbG9hZGluZydcIlxuICAgICAgICAjZG93bmxvYWRMaW5rXG4gICAgICAgIFtocmVmXT1cInVybFwiXG4gICAgICAgIFtkb3dubG9hZF09XCJkb3dubG9hZEZpbGVOYW1lXCJcbiAgICAgICAgPnt7IFwiQ2xpY2sgaGVyZSB0byBkb3dubG9hZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9hXG4gICAgICA+XG4gICAgPC9wPlxuICAgIDx2aWRlb1xuICAgICAgI3ZpZGVvUGxheWVyXG4gICAgICAqbmdJZj1cIm11bHRpbWVkaWFPblwiXG4gICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICBwcmVsb2FkPVwiYXV0b1wiXG4gICAgICAoY2FucGxheSk9XCJvblN1Y2Nlc3MoKVwiXG4gICAgICBjb250cm9sc1xuICAgID5cbiAgICAgIDxzb3VyY2UgKGVycm9yKT1cIm9uRXJyb3IoKVwiIFtzcmNdPVwidXJsXCIgdHlwZT1cInZpZGVvL21wNFwiIC8+XG4gICAgICA8c291cmNlXG4gICAgICAgIChlcnJvcik9XCJvbkVycm9yKClcIlxuICAgICAgICBbc3JjXT1cInVybFwiXG4gICAgICAgIHR5cGU9XCJ2aWRlby9tcDQ7IGNvZGVjcz0nYXZjMSwgYXYwMSwgaHZjMSwgaGV2MSwgbXA0diwgbXA0YS40MC4yLCBvcHVzJ1wiXG4gICAgICAvPlxuICAgICAgPHNvdXJjZSAoZXJyb3IpPVwib25FcnJvcigpXCIgW3NyY109XCJ1cmxcIiB0eXBlPVwidmlkZW8vb2dnXCIgLz5cbiAgICAgIDxzb3VyY2VcbiAgICAgICAgKGVycm9yKT1cIm9uRXJyb3IoKVwiXG4gICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgdHlwZT1cInZpZGVvL29nZzsgY29kZWNzPSd0aGVvcmEsIHZwOCwgdnA5LCBmbGFjLCBvcHVzLCB2b3JiaXMnXCJcbiAgICAgIC8+XG4gICAgICA8c291cmNlIChlcnJvcik9XCJvbkVycm9yKClcIiBbc3JjXT1cInVybFwiIHR5cGU9XCJ2aWRlby93ZWJtXCIgLz5cbiAgICAgIDxzb3VyY2VcbiAgICAgICAgKGVycm9yKT1cIm9uRXJyb3IoKVwiXG4gICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgdHlwZT1cInZpZGVvL3dlYm07IGNvZGVjcz0ndnA4LCB2cDksIHZvcmJpcywgb3B1cydcIlxuICAgICAgLz5cbiAgICA8L3ZpZGVvPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,266 +0,0 @@
1
- import * as pdfjs from 'pdfjs-dist';
2
- import { PDFLinkService } from 'pdfjs-dist/web/pdf_viewer.mjs';
3
- import 'pdfjs-dist/build/pdf.worker';
4
- import 'pdfjs-dist/build/pdf.mjs';
5
- pdfjs.GlobalWorkerOptions.workerSrc = '/assets/build/pdf.worker.min.js';
6
- /**
7
- * Values of the state field returned by the find events
8
- */
9
- var FindState;
10
- (function (FindState) {
11
- FindState[FindState["FOUND"] = 0] = "FOUND";
12
- FindState[FindState["NOT_FOUND"] = 1] = "NOT_FOUND";
13
- FindState[FindState["WRAPPED"] = 2] = "WRAPPED";
14
- FindState[FindState["PENDING"] = 3] = "PENDING";
15
- })(FindState || (FindState = {}));
16
- export class PdfJsWrapper {
17
- constructor(pdfViewer, downloadManager, toolbarEvents, documentLoadInit, documentLoadProgress, documentLoaded, outlineLoaded, documentLoadFailed, pageRendered, positionUpdated) {
18
- this.pdfViewer = pdfViewer;
19
- this.downloadManager = downloadManager;
20
- this.toolbarEvents = toolbarEvents;
21
- this.documentLoadInit = documentLoadInit;
22
- this.documentLoadProgress = documentLoadProgress;
23
- this.documentLoaded = documentLoaded;
24
- this.outlineLoaded = outlineLoaded;
25
- this.documentLoadFailed = documentLoadFailed;
26
- this.pageRendered = pageRendered;
27
- this.positionUpdated = positionUpdated;
28
- this.pdfViewer.eventBus.on('updateviewarea', e => positionUpdated.next(e));
29
- this.pdfViewer.eventBus.on('pagechanging', e => this.toolbarEvents.setCurrentPageInputValueSubject.next(e.pageNumber));
30
- this.pdfViewer.eventBus.on('pagechanging', e => this.drawMissingPages(e));
31
- this.pdfViewer.eventBus.on('pagesinit', () => this.pdfViewer.currentScaleValue = '1');
32
- this.pdfViewer.eventBus.on('pagerendered', e => { }); // not used left for future convenience
33
- this.pdfViewer.eventBus.on('pagesloaded', (e) => this.emitDocumentInfo(e));
34
- this.pdfViewer.eventBus.on('scalechanging', (e) => this.emitDocumentInfo(e));
35
- this.pdfViewer.eventBus.on('rotationchanging', (e) => this.emitDocumentInfo(e));
36
- this.pdfViewer.eventBus.on('updatefindcontrolstate', event => {
37
- this.sendSearchDetails(event);
38
- });
39
- this.pdfViewer.eventBus.on('updatefindmatchescount', event => {
40
- const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious };
41
- this.toolbarEvents.searchResultsCountSubject.next(result);
42
- });
43
- this.zoomValue = 1;
44
- this.redactionPages = [];
45
- // Subscribe to redactionMode changes and run a function when it changes
46
- this.toolbarEvents.redactionMode.subscribe((redactionModeValue) => {
47
- this.onRedactionModeChanged(redactionModeValue);
48
- });
49
- }
50
- sendSearchDetails(event) {
51
- if (event.state !== FindState.PENDING) {
52
- const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious };
53
- this.toolbarEvents.searchResultsCountSubject.next(result);
54
- if (event?.source?.selected?.pageIdx !== -1 && event.matchesCount.total > 0) {
55
- this.toolbarEvents.redactionSerachSubject.next({
56
- page: event?.source?.selected?.pageIdx,
57
- matchedIndex: event?.source?.selected?.matchIdx,
58
- matchesCount: event.matchesCount.total
59
- });
60
- }
61
- }
62
- }
63
- // in the event a user fast scrolls or navigates to a specific page,
64
- // we need to render the missing pages so redaction box is in right place
65
- drawMissingPages(e) {
66
- const redactionMode = this.toolbarEvents.redactionMode.getValue();
67
- const { pageNumber, previous: previousPageNumber } = e;
68
- if (!previousPageNumber || pageNumber < previousPageNumber || Math.abs(pageNumber - previousPageNumber) <= 1) {
69
- return;
70
- }
71
- const start = previousPageNumber + 1;
72
- const end = pageNumber;
73
- // if the redaction mode is on render the pages now
74
- if (redactionMode) {
75
- for (let i = start; i < end; i++) {
76
- const page = this.pdfViewer._pages[i - 1];
77
- if (page && !page.renderingState) {
78
- page.draw();
79
- }
80
- }
81
- }
82
- else {
83
- // keep track of pages as if a user skips to a page we need to render all the missing pages
84
- console.log('Adding redaction pages to queue:', start, end);
85
- this.redactionPages.push({ start, end });
86
- }
87
- }
88
- onRedactionModeChanged(redactionMode) {
89
- if (redactionMode && this.redactionPages.length) {
90
- this.redactionPages.forEach(({ start, end }) => {
91
- console.log('Drawing redaction pages from queue:', start, end);
92
- for (let i = start; i < end; i++) {
93
- const page = this.pdfViewer._pages[i - 1];
94
- if (page && !page.renderingState) {
95
- page.draw();
96
- }
97
- }
98
- });
99
- this.redactionPages = [];
100
- }
101
- }
102
- emitDocumentInfo(e) {
103
- const allPages = [...this.pdfViewer._pages].map(page => {
104
- return {
105
- div: page.div,
106
- scale: page.scale,
107
- rotation: page.rotation,
108
- id: page.id,
109
- viewportScale: page.viewport.scale
110
- };
111
- });
112
- this.pageRendered.next(allPages);
113
- }
114
- async loadDocument(documentUrl) {
115
- const loadingTask = this.createLoadingTask(documentUrl);
116
- loadingTask.onProgress = ({ loaded, total }) => {
117
- this.documentLoadProgress.next({ loaded, total });
118
- };
119
- this.documentLoadInit.next(documentUrl);
120
- try {
121
- const pdfDocument = await loadingTask.promise;
122
- this.documentLoaded.next(pdfDocument);
123
- this.toolbarEvents.pageCountSubject.next(pdfDocument.numPages);
124
- this.pdfViewer.setDocument(pdfDocument);
125
- if (this.pdfViewer.linkService instanceof PDFLinkService) {
126
- const linkservice = this.pdfViewer.linkService;
127
- linkservice.setDocument(pdfDocument, null);
128
- }
129
- const outlineNode = await pdfDocument.getOutline();
130
- const outline = outlineNode ? outlineNode.map(x => {
131
- return {
132
- bold: x.bold,
133
- color: x.color,
134
- count: x.count,
135
- dest: x.dest,
136
- italic: x.italic,
137
- items: x.items,
138
- newWindow: x.newWindow,
139
- title: x.title,
140
- unsafeUrl: x.unsafeUrl,
141
- url: x.url
142
- };
143
- }) : null;
144
- if (outline) {
145
- await this.setOutlinePageNumbers(pdfDocument, outline);
146
- }
147
- this.documentOutline = outline;
148
- this.outlineLoaded.next(this.documentOutline);
149
- const pdfMetaData = await pdfDocument.getMetadata();
150
- this.setCurrentPDFTitle(pdfMetaData.info?.Title);
151
- }
152
- catch (e) {
153
- this.documentLoadFailed.next(e);
154
- }
155
- }
156
- createLoadingTask(documentUrl) {
157
- return pdfjs.getDocument({
158
- url: documentUrl,
159
- cMapUrl: 'assets/minified/cmaps',
160
- cMapPacked: true,
161
- withCredentials: true,
162
- isEvalSupported: false
163
- });
164
- }
165
- async setOutlinePageNumbers(pdfDocument, outlineArray) {
166
- outlineArray.forEach(async (outline) => {
167
- await this.setNestedOutlinePageNumbers(pdfDocument, outline);
168
- });
169
- }
170
- async setNestedOutlinePageNumbers(pdfDocument, outline) {
171
- outline.pageNumber = await this.getOutlinePageNumber(pdfDocument, outline);
172
- outline.items.forEach(async (outlineItem) => {
173
- outlineItem.pageNumber = await this.getOutlinePageNumber(pdfDocument, outlineItem);
174
- this.setNestedOutlinePageNumbers(pdfDocument, outlineItem);
175
- });
176
- }
177
- async getOutlinePageNumber(pdfDocument, outline) {
178
- const dest = outline.dest;
179
- const pageIndex = await pdfDocument.getPageIndex(dest[0]);
180
- return Number(pageIndex) + 1;
181
- }
182
- downloadFile(url, filename) {
183
- this.downloadManager.download(null, url, filename);
184
- }
185
- setPageNumber(pageNumber) {
186
- this.pdfViewer.currentPageNumber = pageNumber;
187
- }
188
- getPageNumber() {
189
- return this.pdfViewer.currentPageNumber;
190
- }
191
- changePageNumber(numPages) {
192
- this.pdfViewer.currentPageNumber += numPages;
193
- }
194
- search(operation) {
195
- const command = operation.reset ? '' : 'again';
196
- const data = {
197
- source: this.pdfViewer,
198
- type: command,
199
- query: operation.searchTerm,
200
- phraseSearch: true,
201
- caseSensitive: operation.matchCase,
202
- entireWord: operation.wholeWord,
203
- highlightAll: operation.highlightAll,
204
- findPrevious: operation.previous,
205
- };
206
- this.pdfViewer.eventBus.dispatch('find', data);
207
- }
208
- clearSearch() {
209
- this.pdfViewer.eventBus.dispatch('findbarclose', {});
210
- }
211
- navigateTo(destination) {
212
- if (destination instanceof Object) {
213
- if (!destination[1].name.includes('XYZ')) {
214
- destination[1] = { name: 'XYZ' };
215
- destination[2] = destination[2] || null;
216
- destination[3] = destination[3] || null;
217
- }
218
- destination[4] = this.zoomValue;
219
- }
220
- this.nativeNavigate(destination);
221
- }
222
- nativeNavigate(destination) {
223
- this.pdfViewer.linkService.goToDestination(destination);
224
- }
225
- setZoom(zoomValue) {
226
- this.pdfViewer.currentScaleValue = this.getZoomValue(zoomValue).toString();
227
- this.zoomValue = +this.pdfViewer.currentScaleValue;
228
- this.toolbarEvents.zoomValueSubject.next(this.zoomValue);
229
- }
230
- stepZoom(zoomValue) {
231
- this.pdfViewer.currentScaleValue = this.getZoomValue((+this.pdfViewer.currentScaleValue) + zoomValue).toString();
232
- this.zoomValue = +this.pdfViewer.currentScaleValue;
233
- this.toolbarEvents.zoomValueSubject.next(this.zoomValue);
234
- }
235
- getZoomValue(zoomValue) {
236
- if (isNaN(zoomValue)) {
237
- return this.zoomValue;
238
- }
239
- if (zoomValue > 5) {
240
- return 5;
241
- }
242
- if (zoomValue < 0.1) {
243
- return 0.1;
244
- }
245
- return +zoomValue.toFixed(2);
246
- }
247
- rotate(rotation) {
248
- return this.pdfViewer.pagesRotation = (this.pdfViewer.pagesRotation + rotation) % 360;
249
- }
250
- resetRotation(rotation) {
251
- return this.pdfViewer.pagesRotation = rotation;
252
- }
253
- getNormalisedPagesRotation() {
254
- return this.pdfViewer.pagesRotation;
255
- }
256
- getCurrentPDFZoomValue() {
257
- return +this.pdfViewer.currentScaleValue;
258
- }
259
- setCurrentPDFTitle(title) {
260
- this.documentTitle = title;
261
- }
262
- getCurrentPDFTitle() {
263
- return this.documentTitle;
264
- }
265
- }
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWpzLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvcGRmLWpzL3BkZi1qcy13cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBbUIsY0FBYyxFQUFhLE1BQU0sK0JBQStCLENBQUM7QUFDM0YsT0FBTyw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLDBCQUEwQixDQUFDO0FBS2xDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsaUNBQWlDLENBQUM7QUFFeEU7O0dBRUc7QUFDSCxJQUFLLFNBS0o7QUFMRCxXQUFLLFNBQVM7SUFDWiwyQ0FBUyxDQUFBO0lBQ1QsbURBQWEsQ0FBQTtJQUNiLCtDQUFXLENBQUE7SUFDWCwrQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2I7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQU92QixZQUNtQixTQUFvQixFQUNwQixlQUFnQyxFQUNoQyxhQUFrQyxFQUNuQyxnQkFBaUMsRUFDakMsb0JBQW1ELEVBQ25ELGNBQTRCLEVBQzVCLGFBQWlDLEVBQ2pDLGtCQUFrQyxFQUNsQyxZQUFrQyxFQUNsQyxlQUFtRDtRQVRsRCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQStCO1FBQ25ELG1CQUFjLEdBQWQsY0FBYyxDQUFjO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQUNqQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWdCO1FBQ2xDLGlCQUFZLEdB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Q0FBQztJQUN4RixDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWdCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO0lBQ2pELENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQzNDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE91dGxpbmUgfSBmcm9tICcuLy4uL3NpZGUtYmFyL291dGxpbmUtaXRlbS9vdXRsaW5lLm1vZGVsJztcbmltcG9ydCB7IFJlZGFjdGlvblNlYXJjaCB9IGZyb20gJy4vLi4vLi4vLi4vdG9vbGJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLm1vZGVsJztcbmltcG9ydCAqIGFzIHBkZmpzIGZyb20gJ3BkZmpzLWRpc3QnO1xuaW1wb3J0IHsgRG93bmxvYWRNYW5hZ2VyLCBQREZMaW5rU2VydmljZSwgUERGVmlld2VyIH0gZnJvbSAncGRmanMtZGlzdC93ZWIvcGRmX3ZpZXdlci5tanMnO1xuaW1wb3J0ICdwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXInO1xuaW1wb3J0ICdwZGZqcy1kaXN0L2J1aWxkL3BkZi5tanMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VhcmNoT3BlcmF0aW9uLCBTZWFyY2hSZXN1bHRzQ291bnQsIFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBQZGZQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2RvY3VtZW50LnJlZHVjZXInO1xuXG5wZGZqcy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyA9ICcvYXNzZXRzL2J1aWxkL3BkZi53b3JrZXIubWluLmpzJztcblxuLyoqXG4gKiBWYWx1ZXMgb2YgdGhlIHN0YXRlIGZpZWxkIHJldHVybmVkIGJ5IHRoZSBmaW5kIGV2ZW50c1xuICovXG5lbnVtIEZpbmRTdGF0ZSB7XG4gIEZPVU5EID0gMCxcbiAgTk9UX0ZPVU5EID0gMSxcbiAgV1JBUFBFRCA9IDIsXG4gIFBFTkRJTkcgPSAzLFxufVxuXG5leHBvcnQgY2xhc3MgUGRmSnNXcmFwcGVyIHtcblxuICBwcml2YXRlIHpvb21WYWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIGRvY3VtZW50VGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBkb2N1bWVudE91dGxpbmU6IE91dGxpbmVbXTtcbiAgcHVibGljIHJlZGFjdGlvblBhZ2VzOiB7IHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyIH1bXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBkZlZpZXdlcjogUERGVmlld2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG93bmxvYWRNYW5hZ2VyOiBEb3dubG9hZE1hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudExvYWRJbml0OiBTdWJqZWN0PHN0cmluZz4sXG4gICAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50TG9hZFByb2dyZXNzOiBTdWJqZWN0PERvY3VtZW50TG9hZFByb2dyZXNzPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRMb2FkZWQ6IFN1YmplY3Q8YW55PixcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3V0bGluZUxvYWRlZDogU3ViamVjdDxPdXRsaW5lW10+LFxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudExvYWRGYWlsZWQ6IFN1YmplY3Q8RXJyb3I+LFxuICAgIHB1YmxpYyByZWFkb25seSBwYWdlUmVuZGVyZWQ6IFN1YmplY3Q8UGFnZUV2ZW50W10+LFxuICAgIHB1YmxpYyByZWFkb25seSBwb3NpdGlvblVwZGF0ZWQ6IFN1YmplY3Q8eyBsb2NhdGlvbjogUGRmUG9zaXRpb24gfT5cbiAgKSB7XG4gICAgdGhpcy5wZGZWaWV3ZXIuZXZlbnRCdXMub24oJ3VwZGF0ZXZpZXdhcmVhJywgZSA9PiBwb3NpdGlvblVwZGF0ZWQubmV4dChlKSk7XG4gICAgdGhpcy5wZGZWaWV3ZXIuZXZlbnRCdXMub24oJ3BhZ2VjaGFuZ2luZycsIGUgPT4gdGhpcy50b29sYmFyRXZlbnRzLnNldEN1cnJlbnRQYWdlSW5wdXRWYWx1ZVN1YmplY3QubmV4dChlLnBhZ2VOdW1iZXIpKTtcbiAgICB0aGlzLnBkZlZpZXdlci5ldmVudEJ1cy5vbigncGFnZWNoYW5naW5nJywgZSA9PiB0aGlzLmRyYXdNaXNzaW5nUGFnZXMoZSkpO1xuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCdwYWdlc2luaXQnLCAoKSA9PiB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZSA9ICcxJyk7XG5cbiAgICB0aGlzLnBkZlZpZXdlci5ldmVudEJ1cy5vbigncGFnZXJlbmRlcmVkJywgZSA9PiB7IH0pOyAvLyBub3QgdXNlZCBsZWZ0IGZvciBmdXR1cmUgY29udmVuaWVuY2VcbiAgICB0aGlzLnBkZlZpZXdlci5ldmVudEJ1cy5vbigncGFnZXNsb2FkZWQnLCAoZSkgPT4gdGhpcy5lbWl0RG9jdW1lbnRJbmZvKGUpKTtcbiAgICB0aGlzLnBkZlZpZXdlci5ldmVudEJ1cy5vbignc2NhbGVjaGFuZ2luZycsIChlKSA9PiB0aGlzLmVtaXREb2N1bWVudEluZm8oZSkpO1xuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCdyb3RhdGlvbmNoYW5naW5nJywgKGUpID0+IHRoaXMuZW1pdERvY3VtZW50SW5mbyhlKSk7XG5cbiAgICB0aGlzLnBkZlZpZXdlci5ldmVudEJ1cy5vbigndXBkYXRlZmluZGNvbnRyb2xzdGF0ZScsIGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuc2VuZFNlYXJjaERldGFpbHMoZXZlbnQpO1xuICAgIH0pO1xuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCd1cGRhdGVmaW5kbWF0Y2hlc2NvdW50JywgZXZlbnQgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0geyAuLi5ldmVudC5tYXRjaGVzQ291bnQsIGlzUHJldmlvdXM6IGV2ZW50Py5zb3VyY2U/LnN0YXRlPy5maW5kUHJldmlvdXMgfSBhcyBTZWFyY2hSZXN1bHRzQ291bnRcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hSZXN1bHRzQ291bnRTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICB9KTtcbiAgICB0aGlzLnpvb21WYWx1ZSA9IDE7XG4gICAgdGhpcy5yZWRhY3Rpb25QYWdlcyA9IFtdXG4gICAgLy8gU3Vic2NyaWJlIHRvIHJlZGFjdGlvbk1vZGUgY2hhbmdlcyBhbmQgcnVuIGEgZnVuY3Rpb24gd2hlbiBpdCBjaGFuZ2VzXG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnJlZGFjdGlvbk1vZGUuc3Vic2NyaWJlKChyZWRhY3Rpb25Nb2RlVmFsdWUpID0+IHtcbiAgICAgIHRoaXMub25SZWRhY3Rpb25Nb2RlQ2hhbmdlZChyZWRhY3Rpb25Nb2RlVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VuZFNlYXJjaERldGFpbHMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC5zdGF0ZSAhPT0gRmluZFN0YXRlLlBFTkRJTkcpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgLi4uZXZlbnQubWF0Y2hlc0NvdW50LCBpc1ByZXZpb3VzOiBldmVudD8uc291cmNlPy5zdGF0ZT8uZmluZFByZXZpb3VzIH0gYXMgU2VhcmNoUmVzdWx0c0NvdW50XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICBpZiAoZXZlbnQ/LnNvdXJjZT8uc2VsZWN0ZWQ/LnBhZ2VJZHggIT09IC0xICYmIGV2ZW50Lm1hdGNoZXNDb3VudC50b3RhbCA+IDApIHtcbiAgICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnJlZGFjdGlvblNlcmFjaFN1YmplY3QubmV4dCh7XG4gICAgICAgICAgcGFnZTogZXZlbnQ/LnNvdXJjZT8uc2VsZWN0ZWQ/LnBhZ2VJZHgsXG4gICAgICAgICAgbWF0Y2hlZEluZGV4OiBldmVudD8uc291cmNlPy5zZWxlY3RlZD8ubWF0Y2hJZHgsXG4gICAgICAgICAgbWF0Y2hlc0NvdW50OiBldmVudC5tYXRjaGVzQ291bnQudG90YWxcbiAgICAgICAgfSBhcyBSZWRhY3Rpb25TZWFyY2hcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpbiB0aGUgZXZlbnQgYSB1c2VyIGZhc3Qgc2Nyb2xscyBvciBuYXZpZ2F0ZXMgdG8gYSBzcGVjaWZpYyBwYWdlLCBcbiAgLy8gd2UgbmVlZCB0byByZW5kZXIgdGhlIG1pc3NpbmcgcGFnZXMgc28gcmVkYWN0aW9uIGJveCBpcyBpbiByaWdodCBwbGFjZVxuICBkcmF3TWlzc2luZ1BhZ2VzKGUpIHtcbiAgICBjb25zdCByZWRhY3Rpb25Nb2RlID0gdGhpcy50b29sYmFyRXZlbnRzLnJlZGFjdGlvbk1vZGUuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCB7IHBhZ2VOdW1iZXIsIHByZXZpb3VzOiBwcmV2aW91c1BhZ2VOdW1iZXIgfSA9IGU7XG4gICAgaWYgKCFwcmV2aW91c1BhZ2VOdW1iZXIgfHwgcGFnZU51bWJlciA8IHByZXZpb3VzUGFnZU51bWJlciB8fCBNYXRoLmFicyhwYWdlTnVtYmVyIC0gcHJldmlvdXNQYWdlTnVtYmVyKSA8PSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gcHJldmlvdXNQYWdlTnVtYmVyICsgMTtcbiAgICBjb25zdCBlbmQgPSBwYWdlTnVtYmVyO1xuICAgIC8vIGlmIHRoZSByZWRhY3Rpb24gbW9kZSBpcyBvbiByZW5kZXIgdGhlIHBhZ2VzIG5vd1xuICAgIGlmIChyZWRhY3Rpb25Nb2RlKSB7XG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5wZGZWaWV3ZXIuX3BhZ2VzW2kgLSAxXTtcbiAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UucmVuZGVyaW5nU3RhdGUpIHtcbiAgICAgICAgICBwYWdlLmRyYXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBrZWVwIHRyYWNrIG9mIHBhZ2VzIGFzIGlmIGEgdXNlciBza2lwcyB0byBhIHBhZ2Ugd2UgbmVlZCB0byByZW5kZXIgYWxsIHRoZSBtaXNzaW5nIHBhZ2VzXG4gICAgICBjb25zb2xlLmxvZygnQWRkaW5nIHJlZGFjdGlvbiBwYWdlcyB0byBxdWV1ZTonLCBzdGFydCwgZW5kKTtcbiAgICAgIHRoaXMucmVkYWN0aW9uUGFnZXMucHVzaCh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uUmVkYWN0aW9uTW9kZUNoYW5nZWQocmVkYWN0aW9uTW9kZTogYm9vbGVhbikge1xuICAgIGlmIChyZWRhY3Rpb25Nb2RlICYmIHRoaXMucmVkYWN0aW9uUGFnZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlZGFjdGlvblBhZ2VzLmZvckVhY2goKHsgc3RhcnQsIGVuZCB9KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEcmF3aW5nIHJlZGFjdGlvbiBwYWdlcyBmcm9tIHF1ZXVlOicsIHN0YXJ0LCBlbmQpO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnBkZlZpZXdlci5fcGFnZXNbaSAtIDFdO1xuICAgICAgICAgIGlmIChwYWdlICYmICFwYWdlLnJlbmRlcmluZ1N0YXRlKSB7XG4gICAgICAgICAgICBwYWdlLmRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZWRhY3Rpb25QYWdlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdERvY3VtZW50SW5mbyhlKSB7XG4gICAgY29uc3QgYWxsUGFnZXM6IFBhZ2VFdmVudFtdID0gWy4uLnRoaXMucGRmVmlld2VyLl9wYWdlc10ubWFwKHBhZ2UgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBwYWdlLmRpdixcbiAgICAgICAgc2NhbGU6IHBhZ2Uuc2NhbGUsXG4gICAgICAgIHJvdGF0aW9uOiBwYWdlLnJvdGF0aW9uLFxuICAgICAgICBpZDogcGFnZS5pZCxcbiAgICAgICAgdmlld3BvcnRTY2FsZTogcGFnZS52aWV3cG9ydC5zY2FsZVxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLnBhZ2VSZW5kZXJlZC5uZXh0KGFsbFBhZ2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRG9jdW1lbnQoZG9jdW1lbnRVcmw6IHN0cmluZykge1xuICAgIGNvbnN0IGxvYWRpbmdUYXNrID0gdGhpcy5jcmVhdGVMb2FkaW5nVGFzayhkb2N1bWVudFVybCk7XG5cbiAgICBsb2FkaW5nVGFzay5vblByb2dyZXNzID0gKHsgbG9hZGVkLCB0b3RhbCB9KSA9PiB7XG4gICAgICB0aGlzLmRvY3VtZW50TG9hZFByb2dyZXNzLm5leHQoeyBsb2FkZWQsIHRvdGFsIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLmRvY3VtZW50TG9hZEluaXQubmV4dChkb2N1bWVudFVybCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGRmRG9jdW1lbnQgPSBhd2FpdCBsb2FkaW5nVGFzay5wcm9taXNlO1xuICAgICAgdGhpcy5kb2N1bWVudExvYWRlZC5uZXh0KHBkZkRvY3VtZW50KTtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5wYWdlQ291bnRTdWJqZWN0Lm5leHQocGRmRG9jdW1lbnQubnVtUGFnZXMpO1xuXG4gICAgICB0aGlzLnBkZlZpZXdlci5zZXREb2N1bWVudChwZGZEb2N1bWVudCk7XG4gICAgICBpZiAodGhpcy5wZGZWaWV3ZXIubGlua1NlcnZpY2UgaW5zdGFuY2VvZiBQREZMaW5rU2VydmljZSkge1xuICAgICAgICBjb25zdCBsaW5rc2VydmljZTogUERGTGlua1NlcnZpY2UgPSB0aGlzLnBkZlZpZXdlci5saW5rU2VydmljZTtcbiAgICAgICAgbGlua3NlcnZpY2Uuc2V0RG9jdW1lbnQocGRmRG9jdW1lbnQsIG51bGwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdXRsaW5lTm9kZSA9IGF3YWl0IHBkZkRvY3VtZW50LmdldE91dGxpbmUoKTtcbiAgICAgIGNvbnN0IG91dGxpbmUgPSBvdXRsaW5lTm9kZSA/IG91dGxpbmVOb2RlLm1hcCh4ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBib2xkOiB4LmJvbGQsXG4gICAgICAgICAgY29sb3I6IHguY29sb3IsXG4gICAgICAgICAgY291bnQ6IHguY291bnQsXG4gICAgICAgICAgZGVzdDogeC5kZXN0LFxuICAgICAgICAgIGl0YWxpYzogeC5pdGFsaWMsXG4gICAgICAgICAgaXRlbXM6IHguaXRlbXMsXG4gICAgICAgICAgbmV3V2luZG93OiB4Lm5ld1dpbmRvdyxcbiAgICAgICAgICB0aXRsZTogeC50aXRsZSxcbiAgICAgICAgICB1bnNhZmVVcmw6IHgudW5zYWZlVXJsLFxuICAgICAgICAgIHVybDogeC51cmxcbiAgICAgICAgfSBhcyBPdXRsaW5lXG4gICAgICB9KSA6IG51bGw7XG5cblxuXG4gICAgICBpZiAob3V0bGluZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnNldE91dGxpbmVQYWdlTnVtYmVycyhwZGZEb2N1bWVudCwgb3V0bGluZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZG9jdW1lbnRPdXRsaW5lID0gb3V0bGluZTtcbiAgICAgIHRoaXMub3V0bGluZUxvYWRlZC5uZXh0KHRoaXMuZG9jdW1lbnRPdXRsaW5lKTtcbiAgICAgIGNvbnN0IHBkZk1ldGFEYXRhID0gYXdhaXQgcGRmRG9jdW1lbnQuZ2V0TWV0YWRhdGEoKTtcbiAgICAgIHRoaXMuc2V0Q3VycmVudFBERlRpdGxlKChwZGZNZXRhRGF0YS5pbmZvIGFzIGFueSk/LlRpdGxlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmRvY3VtZW50TG9hZEZhaWxlZC5uZXh0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTG9hZGluZ1Rhc2soZG9jdW1lbnRVcmw6IHN0cmluZykge1xuICAgIHJldHVybiBwZGZqcy5nZXREb2N1bWVudCh7XG4gICAgICB1cmw6IGRvY3VtZW50VXJsLFxuICAgICAgY01hcFVybDogJ2Fzc2V0cy9taW5pZmllZC9jbWFwcycsXG4gICAgICBjTWFwUGFja2VkOiB0cnVlLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgaXNFdmFsU3VwcG9ydGVkOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRPdXRsaW5lUGFnZU51bWJlcnMocGRmRG9jdW1lbnQsIG91dGxpbmVBcnJheTogT3V0bGluZVtdKSB7XG4gICAgb3V0bGluZUFycmF5LmZvckVhY2goYXN5bmMgKG91dGxpbmU6IE91dGxpbmUpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0TmVzdGVkT3V0bGluZVBhZ2VOdW1iZXJzKHBkZkRvY3VtZW50LCBvdXRsaW5lKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0TmVzdGVkT3V0bGluZVBhZ2VOdW1iZXJzKHBkZkRvY3VtZW50LCBvdXRsaW5lOiBPdXRsaW5lKSB7XG4gICAgb3V0bGluZS5wYWdlTnVtYmVyID0gYXdhaXQgdGhpcy5nZXRPdXRsaW5lUGFnZU51bWJlcihwZGZEb2N1bWVudCwgb3V0bGluZSk7XG4gICAgb3V0bGluZS5pdGVtcy5mb3JFYWNoKGFzeW5jIChvdXRsaW5lSXRlbTogT3V0bGluZSkgPT4ge1xuICAgICAgb3V0bGluZUl0ZW0ucGFnZU51bWJlciA9IGF3YWl0IHRoaXMuZ2V0T3V0bGluZVBhZ2VOdW1iZXIocGRmRG9jdW1lbnQsIG91dGxpbmVJdGVtKTtcbiAgICAgIHRoaXMuc2V0TmVzdGVkT3V0bGluZVBhZ2VOdW1iZXJzKHBkZkRvY3VtZW50LCBvdXRsaW5lSXRlbSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE91dGxpbmVQYWdlTnVtYmVyKHBkZkRvY3VtZW50LCBvdXRsaW5lOiBPdXRsaW5lKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBkZXN0ID0gb3V0bGluZS5kZXN0O1xuICAgIGNvbnN0IHBhZ2VJbmRleCA9IGF3YWl0IHBkZkRvY3VtZW50LmdldFBhZ2VJbmRleChkZXN0WzBdKTtcbiAgICByZXR1cm4gTnVtYmVyKHBhZ2VJbmRleCkgKyAxO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkRmlsZSh1cmw6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRNYW5hZ2VyLmRvd25sb2FkKG51bGwsIHVybCwgZmlsZW5hbWUpO1xuICB9XG5cbiAgcHVibGljIHNldFBhZ2VOdW1iZXIocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyO1xuICB9XG4gIHB1YmxpYyBnZXRQYWdlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGRmVmlld2VyLmN1cnJlbnRQYWdlTnVtYmVyO1xuICB9XG4gIHB1YmxpYyBjaGFuZ2VQYWdlTnVtYmVyKG51bVBhZ2VzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBkZlZpZXdlci5jdXJyZW50UGFnZU51bWJlciArPSBudW1QYWdlcztcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2gob3BlcmF0aW9uOiBTZWFyY2hPcGVyYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjb21tYW5kID0gb3BlcmF0aW9uLnJlc2V0ID8gJycgOiAnYWdhaW4nO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBzb3VyY2U6IHRoaXMucGRmVmlld2VyLFxuICAgICAgdHlwZTogY29tbWFuZCxcbiAgICAgIHF1ZXJ5OiBvcGVyYXRpb24uc2VhcmNoVGVybSxcbiAgICAgIHBocmFzZVNlYXJjaDogdHJ1ZSxcbiAgICAgIGNhc2VTZW5zaXRpdmU6IG9wZXJhdGlvbi5tYXRjaENhc2UsXG4gICAgICBlbnRpcmVXb3JkOiBvcGVyYXRpb24ud2hvbGVXb3JkLFxuICAgICAgaGlnaGxpZ2h0QWxsOiBvcGVyYXRpb24uaGlnaGxpZ2h0QWxsLFxuICAgICAgZmluZFByZXZpb3VzOiBvcGVyYXRpb24ucHJldmlvdXMsXG4gICAgfTtcblxuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLmRpc3BhdGNoKCdmaW5kJywgZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5wZGZWaWV3ZXIuZXZlbnRCdXMuZGlzcGF0Y2goJ2ZpbmRiYXJjbG9zZScsIHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvKGRlc3RpbmF0aW9uOiBzdHJpbmcgfCBhbnlbXSkge1xuICAgIGlmIChkZXN0aW5hdGlvbiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgaWYgKCFkZXN0aW5hdGlvblsxXS5uYW1lLmluY2x1ZGVzKCdYWVonKSkge1xuICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHsgbmFtZTogJ1hZWicgfTtcbiAgICAgICAgZGVzdGluYXRpb25bMl0gPSBkZXN0aW5hdGlvblsyXSB8fCBudWxsO1xuICAgICAgICBkZXN0aW5hdGlvblszXSA9IGRlc3RpbmF0aW9uWzNdIHx8IG51bGw7XG4gICAgICB9XG4gICAgICBkZXN0aW5hdGlvbls0XSA9IHRoaXMuem9vbVZhbHVlO1xuICAgIH1cbiAgICB0aGlzLm5hdGl2ZU5hdmlnYXRlKGRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXRpdmVOYXZpZ2F0ZShkZXN0aW5hdGlvbjogc3RyaW5nIHwgYW55W10pIHtcbiAgICB0aGlzLnBkZlZpZXdlci5saW5rU2VydmljZS5nb1RvRGVzdGluYXRpb24oZGVzdGluYXRpb24pO1xuICB9XG5cbiAgcHVibGljIHNldFpvb20oem9vbVZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZSA9IHRoaXMuZ2V0Wm9vbVZhbHVlKHpvb21WYWx1ZSkudG9TdHJpbmcoKTtcbiAgICB0aGlzLnpvb21WYWx1ZSA9ICt0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZTtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuem9vbVZhbHVlU3ViamVjdC5uZXh0KHRoaXMuem9vbVZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGVwWm9vbSh6b29tVmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlID0gdGhpcy5nZXRab29tVmFsdWUoKCt0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZSkgKyB6b29tVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgdGhpcy56b29tVmFsdWUgPSArdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWU7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnpvb21WYWx1ZVN1YmplY3QubmV4dCh0aGlzLnpvb21WYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFpvb21WYWx1ZSh6b29tVmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGlzTmFOKHpvb21WYWx1ZSkpIHsgcmV0dXJuIHRoaXMuem9vbVZhbHVlOyB9XG4gICAgaWYgKHpvb21WYWx1ZSA+IDUpIHsgcmV0dXJuIDU7IH1cbiAgICBpZiAoem9vbVZhbHVlIDwgMC4xKSB7IHJldHVybiAwLjE7IH1cblxuICAgIHJldHVybiArem9vbVZhbHVlLnRvRml4ZWQoMik7XG4gIH1cblxuICBwdWJsaWMgcm90YXRlKHJvdGF0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBkZlZpZXdlci5wYWdlc1JvdGF0aW9uID0gKHRoaXMucGRmVmlld2VyLnBhZ2VzUm90YXRpb24gKyByb3RhdGlvbikgJSAzNjA7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRSb3RhdGlvbihyb3RhdGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wZGZWaWV3ZXIucGFnZXNSb3RhdGlvbiA9IHJvdGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldE5vcm1hbGlzZWRQYWdlc1JvdGF0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGRmVmlld2VyLnBhZ2VzUm90YXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudFBERlpvb21WYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiArdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VycmVudFBERlRpdGxlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRvY3VtZW50VGl0bGUgPSB0aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50UERGVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudFRpdGxlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRMb2FkUHJvZ3Jlc3Mge1xuICBsb2FkZWQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlRXZlbnQge1xuICBkaXY6IG9iamVjdDtcbiAgc2NhbGU6IG51bWJlcjtcbiAgcm90YXRpb246IG51bWJlcjtcbiAgaWQ6IHN0cmluZztcbiAgdmlld3BvcnRTY2FsZTogbnVtYmVyO1xufVxuIl19