@alfresco/aca-content 5.1.1 → 5.2.0-11950694546

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 (408) hide show
  1. package/assets/app.extensions.json +9 -0
  2. package/assets/i18n/ar.json +600 -599
  3. package/assets/i18n/cs.json +600 -599
  4. package/assets/i18n/da.json +600 -599
  5. package/assets/i18n/de.json +600 -599
  6. package/assets/i18n/en.json +40 -1
  7. package/assets/i18n/es.json +600 -599
  8. package/assets/i18n/fi.json +600 -599
  9. package/assets/i18n/fr.json +600 -599
  10. package/assets/i18n/it.json +600 -599
  11. package/assets/i18n/ja.json +600 -599
  12. package/assets/i18n/nb.json +600 -599
  13. package/assets/i18n/nl.json +600 -599
  14. package/assets/i18n/pl.json +600 -599
  15. package/assets/i18n/pt-BR.json +600 -599
  16. package/assets/i18n/ru.json +600 -599
  17. package/assets/i18n/sv.json +600 -599
  18. package/assets/i18n/zh-CN.json +600 -599
  19. package/esm2022/about/about.component.mjs +70 -0
  20. package/esm2022/about/aca-about.module.mjs +47 -0
  21. package/esm2022/folder-rules/folder-rules.module.mjs +116 -0
  22. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +276 -0
  23. package/esm2022/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +117 -0
  24. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +356 -0
  25. package/esm2022/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +171 -0
  26. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +233 -0
  27. package/esm2022/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +80 -0
  28. package/esm2022/folder-rules/rule-details/options/rule-options.ui-component.mjs +129 -0
  29. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +188 -0
  30. package/esm2022/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +87 -0
  31. package/esm2022/folder-rules/rule-details/validators/rule-actions.validator.mjs +36 -0
  32. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +164 -0
  33. package/esm2022/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +80 -0
  34. package/esm2022/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +59 -0
  35. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +122 -0
  36. package/esm2022/folder-rules/services/actions.service.mjs +117 -0
  37. package/esm2022/folder-rules/services/folder-rule-sets.service.mjs +230 -0
  38. package/esm2022/folder-rules/services/folder-rules.service.mjs +195 -0
  39. package/esm2022/lib/aca-content.module.mjs +303 -0
  40. package/esm2022/lib/aca-content.routes.mjs +369 -0
  41. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +79 -0
  42. package/{esm2020 → esm2022}/lib/components/common/language-picker/language-picker.component.mjs +9 -8
  43. package/esm2022/lib/components/common/location-link/location-link.component.mjs +182 -0
  44. package/{esm2020 → esm2022}/lib/components/common/logout/logout.component.mjs +8 -6
  45. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +76 -0
  46. package/esm2022/lib/components/common/user-info/user-info.component.mjs +46 -0
  47. package/esm2022/lib/components/context-menu/base-context-menu.directive.mjs +77 -0
  48. package/esm2022/lib/components/context-menu/context-menu-item.component.mjs +65 -0
  49. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +57 -0
  50. package/esm2022/lib/components/context-menu/context-menu-overlay.mjs +33 -0
  51. package/esm2022/lib/components/context-menu/context-menu.component.mjs +84 -0
  52. package/esm2022/lib/components/context-menu/context-menu.service.mjs +127 -0
  53. package/esm2022/lib/components/context-menu/custom-context-menu-actions.token.mjs +26 -0
  54. package/esm2022/lib/components/context-menu/custom-context-menu.component.mjs +79 -0
  55. package/esm2022/lib/components/details/details.component.mjs +155 -0
  56. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +70 -0
  57. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +102 -0
  58. package/esm2022/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +52 -0
  59. package/esm2022/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +77 -0
  60. package/esm2022/lib/components/favorite-libraries/favorite-libraries.component.mjs +126 -0
  61. package/esm2022/lib/components/favorites/favorites.component.mjs +105 -0
  62. package/esm2022/lib/components/files/files.component.mjs +337 -0
  63. package/esm2022/lib/components/home/home.component.mjs +46 -0
  64. package/esm2022/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +62 -0
  65. package/esm2022/lib/components/info-drawer/info.drawer.module.mjs +74 -0
  66. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +210 -0
  67. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +47 -0
  68. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +141 -0
  69. package/esm2022/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +107 -0
  70. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +132 -0
  71. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +176 -0
  72. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +77 -0
  73. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +207 -0
  74. package/esm2022/lib/components/libraries/libraries.component.mjs +81 -0
  75. package/esm2022/lib/components/recent-files/recent-files.component.mjs +80 -0
  76. package/esm2022/lib/components/search/search-action-menu/search-action-menu.component.mjs +66 -0
  77. package/esm2022/lib/components/search/search-input/search-input.component.mjs +294 -0
  78. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +88 -0
  79. package/esm2022/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +93 -0
  80. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +155 -0
  81. package/esm2022/lib/components/search/search-navigation.service.mjs +62 -0
  82. package/esm2022/lib/components/search/search-results/search-results.component.mjs +278 -0
  83. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +145 -0
  84. package/esm2022/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.mjs +82 -0
  85. package/esm2022/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.mjs +116 -0
  86. package/esm2022/lib/components/search/search-save/dialog/save-search-dialog.component.mjs +125 -0
  87. package/esm2022/lib/components/search/search-save/dialog/saved-search-form.interface.mjs +25 -0
  88. package/esm2022/lib/components/search/search-save/dialog/unique-search-name-validator.mjs +45 -0
  89. package/esm2022/lib/components/search/search-save/directive/save-search.directive.mjs +64 -0
  90. package/esm2022/lib/components/search/search-save/list/saved-searches-list-ui.service.mjs +51 -0
  91. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.mjs +44 -0
  92. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.mjs +50 -0
  93. package/esm2022/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.mjs +153 -0
  94. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +89 -0
  95. package/esm2022/lib/components/shared-files/shared-files.component.mjs +85 -0
  96. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +86 -0
  97. package/esm2022/lib/components/sidenav/components/button-menu.component.mjs +66 -0
  98. package/esm2022/lib/components/sidenav/components/expand-menu.component.mjs +73 -0
  99. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +60 -0
  100. package/esm2022/lib/components/sidenav/directives/action.directive.mjs +86 -0
  101. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +100 -0
  102. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +103 -0
  103. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +99 -0
  104. package/esm2022/lib/components/sidenav/sidenav.component.mjs +97 -0
  105. package/esm2022/lib/components/sidenav/user-menu/user-menu.component.mjs +57 -0
  106. package/esm2022/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +143 -0
  107. package/esm2022/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +91 -0
  108. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +108 -0
  109. package/esm2022/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +77 -0
  110. package/esm2022/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +7 -6
  112. package/esm2022/lib/components/toolbar/view-node/view-node.component.mjs +128 -0
  113. package/esm2022/lib/components/trashcan/trashcan.component.mjs +66 -0
  114. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +50 -0
  115. package/esm2022/lib/components/view-profile/view-profile.component.mjs +195 -0
  116. package/esm2022/lib/dialogs/node-template/create-from-template.dialog.mjs +127 -0
  117. package/esm2022/lib/directives/document-list.directive.mjs +203 -0
  118. package/esm2022/lib/extensions/core.extensions.module.mjs +56 -0
  119. package/esm2022/lib/services/content-management.service.mjs +892 -0
  120. package/esm2022/lib/services/content-url.service.mjs +74 -0
  121. package/esm2022/lib/services/modal-ai.service.mjs +65 -0
  122. package/esm2022/lib/services/node-actions.service.mjs +609 -0
  123. package/esm2022/lib/services/node-template.service.mjs +145 -0
  124. package/esm2022/lib/services/search-ai-navigation.service.mjs +63 -0
  125. package/esm2022/lib/store/app-store.module.mjs +101 -0
  126. package/esm2022/lib/store/effects/app.effects.mjs +46 -0
  127. package/esm2022/lib/store/effects/contextmenu.effects.mjs +65 -0
  128. package/esm2022/lib/store/effects/download.effects.mjs +153 -0
  129. package/esm2022/lib/store/effects/favorite.effects.mjs +72 -0
  130. package/esm2022/lib/store/effects/library.effects.mjs +108 -0
  131. package/esm2022/lib/store/effects/node.effects.mjs +318 -0
  132. package/esm2022/lib/store/effects/search-ai.effects.mjs +54 -0
  133. package/esm2022/lib/store/effects/search.effects.mjs +52 -0
  134. package/esm2022/lib/store/effects/template.effects.mjs +116 -0
  135. package/esm2022/lib/store/effects/upload.effects.mjs +166 -0
  136. package/esm2022/lib/store/effects/viewer.effects.mjs +169 -0
  137. package/esm2022/lib/utils/aca-search-utils.mjs +129 -0
  138. package/esm2022/ms-office/actions/aos.actions.mjs +32 -0
  139. package/esm2022/ms-office/aos-extension.module.mjs +53 -0
  140. package/esm2022/ms-office/aos-extension.service.mjs +136 -0
  141. package/esm2022/ms-office/effects/aos.effects.mjs +45 -0
  142. package/esm2022/public-api.mjs +33 -0
  143. package/esm2022/viewer/lib/components/preview/preview.component.mjs +244 -0
  144. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +260 -0
  145. package/esm2022/viewer/lib/services/viewer.service.mjs +229 -0
  146. package/esm2022/viewer/lib/viewer.module.mjs +53 -0
  147. package/{fesm2015 → fesm2022}/alfresco-aca-content-about.mjs +17 -19
  148. package/fesm2022/alfresco-aca-content-about.mjs.map +1 -0
  149. package/{fesm2020 → fesm2022}/alfresco-aca-content-folder-rules.mjs +376 -357
  150. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -0
  151. package/{fesm2020 → fesm2022}/alfresco-aca-content-ms-office.mjs +28 -26
  152. package/fesm2022/alfresco-aca-content-ms-office.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/alfresco-aca-content-viewer.mjs +110 -83
  154. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -0
  155. package/fesm2022/alfresco-aca-content.mjs +10996 -0
  156. package/fesm2022/alfresco-aca-content.mjs.map +1 -0
  157. package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +3 -5
  158. package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +1 -1
  159. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +5 -6
  160. package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +1 -1
  161. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +4 -5
  162. package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +1 -1
  163. package/folder-rules/rule-details/rule-details.ui-component.d.ts +5 -6
  164. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +4 -5
  165. package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +1 -1
  166. package/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts +1 -1
  167. package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +3 -5
  168. package/folder-rules/services/folder-rule-sets.service.d.ts +4 -4
  169. package/folder-rules/services/folder-rules.service.d.ts +1 -1
  170. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +7 -13
  171. package/lib/components/common/location-link/location-link.component.d.ts +1 -1
  172. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +5 -6
  173. package/lib/components/context-menu/base-context-menu.directive.d.ts +20 -0
  174. package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
  175. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +4 -5
  176. package/lib/components/context-menu/context-menu.component.d.ts +4 -15
  177. package/lib/components/context-menu/context-menu.service.d.ts +4 -1
  178. package/lib/components/{knowledge-retrieval/search-ai/search-ai-utils.d.ts → context-menu/custom-context-menu-actions.token.d.ts} +2 -2
  179. package/lib/components/context-menu/custom-context-menu.component.d.ts +36 -0
  180. package/lib/components/details/details.component.d.ts +1 -2
  181. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +4 -5
  182. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -4
  183. package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +1 -1
  184. package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +1 -1
  185. package/lib/components/files/files.component.d.ts +1 -1
  186. package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +1 -1
  187. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +5 -7
  188. package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
  189. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +7 -8
  190. package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
  191. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +4 -6
  192. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +6 -8
  193. package/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.d.ts +8 -8
  194. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +4 -6
  195. package/lib/components/search/search-input/search-input.component.d.ts +13 -16
  196. package/lib/components/search/search-input-control/search-input-control.component.d.ts +3 -6
  197. package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +0 -1
  198. package/lib/components/search/search-results/search-results.component.d.ts +14 -9
  199. package/lib/components/search/search-results-row/search-results-row.component.d.ts +4 -5
  200. package/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.d.ts +16 -0
  201. package/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.d.ts +22 -0
  202. package/lib/components/search/search-save/dialog/save-search-dialog.component.d.ts +23 -0
  203. package/lib/components/search/search-save/dialog/saved-search-form.interface.d.ts +28 -0
  204. package/lib/components/search/search-save/dialog/unique-search-name-validator.d.ts +34 -0
  205. package/lib/components/search/search-save/directive/save-search.directive.d.ts +13 -0
  206. package/lib/components/search/search-save/list/saved-searches-list-ui.service.d.ts +9 -0
  207. package/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.d.ts +33 -0
  208. package/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.d.ts +13 -0
  209. package/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.d.ts +66 -0
  210. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +42 -0
  211. package/lib/components/shared-link-view/shared-link-view.component.d.ts +4 -5
  212. package/lib/components/sidenav/components/button-menu.component.d.ts +1 -1
  213. package/lib/components/sidenav/components/expand-menu.component.d.ts +3 -2
  214. package/lib/components/sidenav/components/sidenav-header.component.d.ts +3 -4
  215. package/lib/components/sidenav/directives/action.directive.d.ts +28 -1
  216. package/lib/components/sidenav/directives/active-link.directive.d.ts +3 -3
  217. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +4 -5
  218. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +4 -5
  219. package/lib/components/sidenav/sidenav.component.d.ts +7 -7
  220. package/lib/components/sidenav/user-menu/user-menu.component.d.ts +1 -1
  221. package/lib/components/toolbar/toggle-favorite/toggle-favorite.component.d.ts +1 -1
  222. package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +3 -4
  223. package/lib/components/toolbar/view-node/view-node.component.d.ts +1 -1
  224. package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +1 -27
  225. package/lib/components/view-profile/view-profile.component.d.ts +2 -4
  226. package/lib/directives/document-list.directive.d.ts +3 -5
  227. package/lib/services/search-ai-navigation.service.d.ts +4 -2
  228. package/lib/store/effects/app.effects.d.ts +2 -3
  229. package/lib/store/effects/contextmenu.effects.d.ts +3 -3
  230. package/lib/store/effects/download.effects.d.ts +0 -30
  231. package/lib/store/effects/favorite.effects.d.ts +0 -28
  232. package/lib/store/effects/library.effects.d.ts +2 -7
  233. package/lib/store/effects/node.effects.d.ts +7 -38
  234. package/lib/store/effects/search-ai.effects.d.ts +0 -4
  235. package/lib/store/effects/search.effects.d.ts +3 -30
  236. package/lib/store/effects/template.effects.d.ts +5 -7
  237. package/lib/store/effects/upload.effects.d.ts +8 -32
  238. package/lib/store/effects/viewer.effects.d.ts +0 -29
  239. package/lib/utils/aca-search-utils.d.ts +67 -0
  240. package/ms-office/effects/aos.effects.d.ts +0 -3
  241. package/package.json +21 -35
  242. package/public-api.d.ts +1 -0
  243. package/ui/overrides/adf-pagination.theme.scss +0 -4
  244. package/ui/theme.scss +9 -4
  245. package/viewer/lib/components/preview/preview.component.d.ts +3 -4
  246. package/viewer/lib/components/viewer/viewer.component.d.ts +2 -2
  247. package/assets/images/agent-avatar-blue.png +0 -0
  248. package/assets/images/agent-avatar-gold.png +0 -0
  249. package/assets/images/agent-avatar-pink.png +0 -0
  250. package/esm2020/about/about.component.mjs +0 -71
  251. package/esm2020/about/aca-about.module.mjs +0 -46
  252. package/esm2020/folder-rules/folder-rules.module.mjs +0 -115
  253. package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +0 -261
  254. package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +0 -117
  255. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +0 -351
  256. package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +0 -172
  257. package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +0 -234
  258. package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +0 -74
  259. package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +0 -129
  260. package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +0 -185
  261. package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +0 -88
  262. package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +0 -37
  263. package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +0 -164
  264. package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +0 -81
  265. package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +0 -58
  266. package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +0 -120
  267. package/esm2020/folder-rules/services/actions.service.mjs +0 -114
  268. package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +0 -225
  269. package/esm2020/folder-rules/services/folder-rules.service.mjs +0 -193
  270. package/esm2020/lib/aca-content.module.mjs +0 -299
  271. package/esm2020/lib/aca-content.routes.mjs +0 -359
  272. package/esm2020/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +0 -83
  273. package/esm2020/lib/components/common/location-link/location-link.component.mjs +0 -180
  274. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +0 -76
  275. package/esm2020/lib/components/common/user-info/user-info.component.mjs +0 -47
  276. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +0 -62
  277. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +0 -63
  278. package/esm2020/lib/components/context-menu/context-menu-overlay.mjs +0 -32
  279. package/esm2020/lib/components/context-menu/context-menu.component.mjs +0 -114
  280. package/esm2020/lib/components/context-menu/context-menu.service.mjs +0 -99
  281. package/esm2020/lib/components/details/details.component.mjs +0 -147
  282. package/esm2020/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +0 -71
  283. package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +0 -101
  284. package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +0 -48
  285. package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +0 -75
  286. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +0 -120
  287. package/esm2020/lib/components/favorites/favorites.component.mjs +0 -103
  288. package/esm2020/lib/components/files/files.component.mjs +0 -330
  289. package/esm2020/lib/components/home/home.component.mjs +0 -47
  290. package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +0 -59
  291. package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +0 -73
  292. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +0 -206
  293. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +0 -45
  294. package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +0 -134
  295. package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +0 -95
  296. package/esm2020/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +0 -129
  297. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +0 -171
  298. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +0 -82
  299. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +0 -199
  300. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-utils.mjs +0 -33
  301. package/esm2020/lib/components/libraries/libraries.component.mjs +0 -79
  302. package/esm2020/lib/components/recent-files/recent-files.component.mjs +0 -82
  303. package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +0 -64
  304. package/esm2020/lib/components/search/search-input/search-input.component.mjs +0 -301
  305. package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +0 -94
  306. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +0 -90
  307. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +0 -153
  308. package/esm2020/lib/components/search/search-navigation.service.mjs +0 -60
  309. package/esm2020/lib/components/search/search-results/search-results.component.mjs +0 -255
  310. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +0 -142
  311. package/esm2020/lib/components/shared-files/shared-files.component.mjs +0 -83
  312. package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +0 -82
  313. package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +0 -62
  314. package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +0 -67
  315. package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +0 -66
  316. package/esm2020/lib/components/sidenav/directives/action.directive.mjs +0 -75
  317. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +0 -93
  318. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +0 -102
  319. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +0 -99
  320. package/esm2020/lib/components/sidenav/sidenav.component.mjs +0 -89
  321. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +0 -56
  322. package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +0 -137
  323. package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +0 -86
  324. package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +0 -107
  325. package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +0 -74
  326. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +0 -105
  327. package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +0 -122
  328. package/esm2020/lib/components/trashcan/trashcan.component.mjs +0 -68
  329. package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +0 -52
  330. package/esm2020/lib/components/view-profile/view-profile.component.mjs +0 -193
  331. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +0 -120
  332. package/esm2020/lib/directives/document-list.directive.mjs +0 -199
  333. package/esm2020/lib/extensions/core.extensions.module.mjs +0 -55
  334. package/esm2020/lib/services/content-management.service.mjs +0 -873
  335. package/esm2020/lib/services/content-url.service.mjs +0 -71
  336. package/esm2020/lib/services/modal-ai.service.mjs +0 -66
  337. package/esm2020/lib/services/node-actions.service.mjs +0 -600
  338. package/esm2020/lib/services/node-template.service.mjs +0 -144
  339. package/esm2020/lib/services/search-ai-navigation.service.mjs +0 -52
  340. package/esm2020/lib/store/app-store.module.mjs +0 -102
  341. package/esm2020/lib/store/effects/app.effects.mjs +0 -49
  342. package/esm2020/lib/store/effects/contextmenu.effects.mjs +0 -55
  343. package/esm2020/lib/store/effects/download.effects.mjs +0 -159
  344. package/esm2020/lib/store/effects/favorite.effects.mjs +0 -76
  345. package/esm2020/lib/store/effects/library.effects.mjs +0 -113
  346. package/esm2020/lib/store/effects/node.effects.mjs +0 -325
  347. package/esm2020/lib/store/effects/search-ai.effects.mjs +0 -57
  348. package/esm2020/lib/store/effects/search.effects.mjs +0 -60
  349. package/esm2020/lib/store/effects/template.effects.mjs +0 -121
  350. package/esm2020/lib/store/effects/upload.effects.mjs +0 -166
  351. package/esm2020/lib/store/effects/viewer.effects.mjs +0 -175
  352. package/esm2020/ms-office/actions/aos.actions.mjs +0 -31
  353. package/esm2020/ms-office/aos-extension.module.mjs +0 -52
  354. package/esm2020/ms-office/aos-extension.service.mjs +0 -132
  355. package/esm2020/ms-office/effects/aos.effects.mjs +0 -48
  356. package/esm2020/public-api.mjs +0 -32
  357. package/esm2020/viewer/lib/components/preview/preview.component.mjs +0 -236
  358. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +0 -240
  359. package/esm2020/viewer/lib/services/viewer.service.mjs +0 -226
  360. package/esm2020/viewer/lib/viewer.module.mjs +0 -52
  361. package/fesm2015/alfresco-aca-content-about.mjs.map +0 -1
  362. package/fesm2015/alfresco-aca-content-folder-rules.mjs +0 -2662
  363. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +0 -1
  364. package/fesm2015/alfresco-aca-content-ms-office.mjs +0 -256
  365. package/fesm2015/alfresco-aca-content-ms-office.mjs.map +0 -1
  366. package/fesm2015/alfresco-aca-content-viewer.mjs +0 -700
  367. package/fesm2015/alfresco-aca-content-viewer.mjs.map +0 -1
  368. package/fesm2015/alfresco-aca-content.mjs +0 -9835
  369. package/fesm2015/alfresco-aca-content.mjs.map +0 -1
  370. package/fesm2020/alfresco-aca-content-about.mjs +0 -193
  371. package/fesm2020/alfresco-aca-content-about.mjs.map +0 -1
  372. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +0 -1
  373. package/fesm2020/alfresco-aca-content-ms-office.mjs.map +0 -1
  374. package/fesm2020/alfresco-aca-content-viewer.mjs.map +0 -1
  375. package/fesm2020/alfresco-aca-content.mjs +0 -9934
  376. package/fesm2020/alfresco-aca-content.mjs.map +0 -1
  377. /package/{esm2020 → esm2022}/about/alfresco-aca-content-about.mjs +0 -0
  378. /package/{esm2020 → esm2022}/about/dev-mode.tokens.mjs +0 -0
  379. /package/{esm2020 → esm2022}/about/package-json.token.mjs +0 -0
  380. /package/{esm2020 → esm2022}/about/public-api.mjs +0 -0
  381. /package/{esm2020 → esm2022}/alfresco-aca-content.mjs +0 -0
  382. /package/{esm2020 → esm2022}/folder-rules/alfresco-aca-content-folder-rules.mjs +0 -0
  383. /package/{esm2020 → esm2022}/folder-rules/folder-rules.rules.mjs +0 -0
  384. /package/{esm2020 → esm2022}/folder-rules/model/action-parameter-constraint.model.mjs +0 -0
  385. /package/{esm2020 → esm2022}/folder-rules/model/rule-action.model.mjs +0 -0
  386. /package/{esm2020 → esm2022}/folder-rules/model/rule-composite-condition.model.mjs +0 -0
  387. /package/{esm2020 → esm2022}/folder-rules/model/rule-grouping-item.model.mjs +0 -0
  388. /package/{esm2020 → esm2022}/folder-rules/model/rule-set.model.mjs +0 -0
  389. /package/{esm2020 → esm2022}/folder-rules/model/rule-simple-condition.model.mjs +0 -0
  390. /package/{esm2020 → esm2022}/folder-rules/model/rule.model.mjs +0 -0
  391. /package/{esm2020 → esm2022}/folder-rules/public-api.mjs +0 -0
  392. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +0 -0
  393. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-fields.mjs +0 -0
  394. /package/{esm2020 → esm2022}/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +0 -0
  395. /package/{esm2020 → esm2022}/lib/components/common/index.mjs +0 -0
  396. /package/{esm2020 → esm2022}/lib/components/context-menu/direction.token.mjs +0 -0
  397. /package/{esm2020 → esm2022}/lib/components/context-menu/interfaces.mjs +0 -0
  398. /package/{esm2020 → esm2022}/lib/components/search/index.mjs +0 -0
  399. /package/{esm2020 → esm2022}/lib/components/sidenav/index.mjs +0 -0
  400. /package/{esm2020 → esm2022}/lib/components/toolbar/index.mjs +0 -0
  401. /package/{esm2020 → esm2022}/lib/components/view-profile/view-profile.guard.mjs +0 -0
  402. /package/{esm2020 → esm2022}/lib/store/effects.mjs +0 -0
  403. /package/{esm2020 → esm2022}/lib/store/initial-state.mjs +0 -0
  404. /package/{esm2020 → esm2022}/lib/store/reducers/app.reducer.mjs +0 -0
  405. /package/{esm2020 → esm2022}/ms-office/alfresco-aca-content-ms-office.mjs +0 -0
  406. /package/{esm2020 → esm2022}/ms-office/public-api.mjs +0 -0
  407. /package/{esm2020 → esm2022}/viewer/alfresco-aca-content-viewer.mjs +0 -0
  408. /package/{esm2020 → esm2022}/viewer/public-api.mjs +0 -0
@@ -0,0 +1,244 @@
1
+ /*!
2
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { Component, HostListener, ViewEncapsulation } from '@angular/core';
25
+ import { CommonModule, Location } from '@angular/common';
26
+ import { ActivatedRoute, PRIMARY_OUTLET } from '@angular/router';
27
+ import { debounceTime, map } from 'rxjs/operators';
28
+ import { ViewerModule } from '@alfresco/adf-core';
29
+ import { SetSelectedNodesAction, ViewerActionTypes } from '@alfresco/aca-shared/store';
30
+ import { AppHookService, ContentApiService, InfoDrawerComponent, PageComponent, ToolbarComponent, ToolbarMenuItemComponent } from '@alfresco/aca-shared';
31
+ import { from } from 'rxjs';
32
+ import { Actions, ofType } from '@ngrx/effects';
33
+ import { AlfrescoViewerModule, NodesApiService } from '@alfresco/adf-content-services';
34
+ import { ViewerService } from '../../services/viewer.service';
35
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
36
+ import * as i0 from "@angular/core";
37
+ import * as i1 from "@ngrx/effects";
38
+ import * as i2 from "@alfresco/aca-shared";
39
+ import * as i3 from "@angular/common";
40
+ import * as i4 from "@alfresco/adf-content-services";
41
+ import * as i5 from "@angular/router";
42
+ import * as i6 from "../../services/viewer.service";
43
+ import * as i7 from "@alfresco/adf-core";
44
+ class PreviewComponent extends PageComponent {
45
+ actions$;
46
+ appHookService;
47
+ contentApi;
48
+ location;
49
+ nodesApiService;
50
+ route;
51
+ viewerService;
52
+ folderId = null;
53
+ navigateBackAsClose = false;
54
+ navigateMultiple = false;
55
+ navigateSource = null;
56
+ navigationSources = ['favorites', 'libraries', 'personal-files', 'recent-files', 'shared'];
57
+ nextNodeId;
58
+ nodeId = null;
59
+ openWith = [];
60
+ previewLocation = null;
61
+ previousNodeId;
62
+ routesSkipNavigation = ['favorites', 'recent-files', 'shared'];
63
+ showRightSide = false;
64
+ simplestMode = false;
65
+ containersSkipNavigation = ['adf-viewer__sidebar', 'cdk-overlay-container', 'adf-image-viewer'];
66
+ constructor(actions$, appHookService, contentApi, location, nodesApiService, route, viewerService) {
67
+ super();
68
+ this.actions$ = actions$;
69
+ this.appHookService = appHookService;
70
+ this.contentApi = contentApi;
71
+ this.location = location;
72
+ this.nodesApiService = nodesApiService;
73
+ this.route = route;
74
+ this.viewerService = viewerService;
75
+ }
76
+ ngOnInit() {
77
+ super.ngOnInit();
78
+ from(this.infoDrawerOpened$)
79
+ .pipe(takeUntilDestroyed(this.destroyRef))
80
+ .subscribe((val) => {
81
+ this.showRightSide = val;
82
+ });
83
+ this.previewLocation = this.router.url.substr(0, this.router.url.indexOf('/', 1)).replace(/\//g, '');
84
+ const routeData = this.route.snapshot.data;
85
+ this.navigateBackAsClose = !!routeData.navigateBackAsClose;
86
+ this.simplestMode = !!routeData.simplestMode;
87
+ if (routeData.navigateMultiple) {
88
+ this.navigateMultiple = true;
89
+ }
90
+ if (routeData.navigateSource) {
91
+ const source = routeData.navigateSource.toLowerCase();
92
+ if (this.navigationSources.includes(source)) {
93
+ this.navigateSource = routeData.navigateSource;
94
+ }
95
+ }
96
+ this.route.params.subscribe((params) => {
97
+ this.folderId = params.folderId;
98
+ const id = params.nodeId;
99
+ if (id) {
100
+ void this.displayNode(id);
101
+ }
102
+ });
103
+ this.subscriptions = this.subscriptions.concat([
104
+ this.appHookService.nodesDeleted.subscribe(() => this.navigateToFileLocation(true)),
105
+ this.uploadService.fileUploadDeleted.subscribe(() => this.navigateToFileLocation(true)),
106
+ this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.nodesApiService.nodeUpdated.next(file.data.entry)),
107
+ this.actions$
108
+ .pipe(ofType(ViewerActionTypes.ClosePreview), map(() => this.navigateToFileLocation(true)))
109
+ .subscribe(() => { })
110
+ ]);
111
+ this.extensions
112
+ .getOpenWithActions()
113
+ .pipe(takeUntilDestroyed(this.destroyRef))
114
+ .subscribe((actions) => {
115
+ this.openWith = actions;
116
+ });
117
+ }
118
+ /**
119
+ * Loads the particular node into the Viewer
120
+ *
121
+ * @param id Unique identifier for the Node to display
122
+ */
123
+ async displayNode(id) {
124
+ if (id) {
125
+ try {
126
+ this.node = await this.contentApi.getNodeInfo(id).toPromise();
127
+ this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));
128
+ if (this.node?.isFile) {
129
+ this.nodeId = this.node.id;
130
+ if (this.navigateMultiple) {
131
+ const nearest = await this.viewerService.getNearestNodes(this.node.id, this.node.parentId, this.navigateSource);
132
+ this.previousNodeId = nearest.left;
133
+ this.nextNodeId = nearest.right;
134
+ }
135
+ return;
136
+ }
137
+ await this.router.navigate([this.previewLocation, id]);
138
+ }
139
+ catch (err) {
140
+ if (!err || err.status !== 401) {
141
+ await this.router.navigate([this.previewLocation, id]);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ handleKeyboardEvent(event) {
147
+ const key = event.key;
148
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
149
+ event.preventDefault();
150
+ event.stopImmediatePropagation();
151
+ }
152
+ }
153
+ /**
154
+ * Handles the visibility change of the Viewer component.
155
+ *
156
+ * @param isVisible Indicator whether Viewer is visible or hidden.
157
+ */
158
+ onVisibilityChanged(isVisible) {
159
+ const shouldNavigate = !isVisible;
160
+ this.navigateToFileLocation(shouldNavigate);
161
+ }
162
+ navigateToFileLocation(shouldNavigate) {
163
+ if (shouldNavigate) {
164
+ if (this.navigateBackAsClose) {
165
+ this.location.back();
166
+ }
167
+ else {
168
+ const shouldSkipNavigation = this.routesSkipNavigation.includes(this.previewLocation);
169
+ const route = this.getNavigationCommands(this.previewLocation);
170
+ if (!shouldSkipNavigation && this.folderId) {
171
+ route.push(this.folderId);
172
+ }
173
+ void this.router.navigate(route);
174
+ }
175
+ }
176
+ }
177
+ /** Handles navigation to a previous document */
178
+ onNavigateBefore(event) {
179
+ if (event.type !== 'click' && this.shouldNavigate(event.target)) {
180
+ return;
181
+ }
182
+ if (this.previousNodeId) {
183
+ void this.router.navigate(this.getPreviewPath(this.folderId, this.previousNodeId));
184
+ }
185
+ }
186
+ /** Handles navigation to a next document */
187
+ onNavigateNext(event) {
188
+ if (event.type !== 'click' && this.shouldNavigate(event.target)) {
189
+ return;
190
+ }
191
+ if (this.nextNodeId) {
192
+ void this.router.navigate(this.getPreviewPath(this.folderId, this.nextNodeId));
193
+ }
194
+ }
195
+ /**
196
+ * Generates a node preview route based on folder and node IDs.
197
+ *
198
+ * @param folderId Folder ID
199
+ * @param nodeId Node ID
200
+ */
201
+ getPreviewPath(folderId, nodeId) {
202
+ const route = [this.previewLocation];
203
+ if (folderId) {
204
+ route.push(folderId);
205
+ }
206
+ if (nodeId) {
207
+ route.push('preview', nodeId);
208
+ }
209
+ return route;
210
+ }
211
+ getNavigationCommands(url) {
212
+ const urlTree = this.router.parseUrl(url);
213
+ const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];
214
+ if (!urlSegmentGroup) {
215
+ return [url];
216
+ }
217
+ const urlSegments = urlSegmentGroup.segments;
218
+ return urlSegments.reduce(function (acc, item) {
219
+ acc.push(item.path, item.parameters);
220
+ return acc;
221
+ }, []);
222
+ }
223
+ shouldNavigate(element) {
224
+ let currentElement = element.parentElement;
225
+ while (currentElement && !this.isChild(currentElement.classList)) {
226
+ currentElement = currentElement.parentElement;
227
+ }
228
+ return !!currentElement;
229
+ }
230
+ isChild(list) {
231
+ return Array.from(list).some((className) => this.containersSkipNavigation.includes(className));
232
+ }
233
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PreviewComponent, deps: [{ token: i1.Actions }, { token: i2.AppHookService }, { token: i2.ContentApiService }, { token: i3.Location }, { token: i4.NodesApiService }, { token: i5.ActivatedRoute }, { token: i6.ViewerService }], target: i0.ɵɵFactoryTarget.Component });
234
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PreviewComponent, isStandalone: true, selector: "app-preview", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "app-preview" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [nodeId]=\"nodeId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n [overlayMode]=\"true\"\n (showViewerChange)=\"onVisibilityChanged($event)\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions *ngIf=\"!simplestMode\">\n <aca-toolbar [items]=\"viewerToolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-preview{width:100%;height:100%}.adf-viewer-toolbar .adf-toolbar-divider{display:none}.adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center}.adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.adf-viewer-toolbar>*>button:last-child{display:none}.adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ViewerModule }, { kind: "component", type: i7.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i7.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i7.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "ngmodule", type: AlfrescoViewerModule }, { kind: "component", type: i4.AlfrescoViewerComponent, selector: "adf-alfresco-viewer", inputs: ["nodeId", "versionId", "sharedLinkId", "showViewer", "maxRetries", "allowGoBack", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "allowDownload", "allowPrint", "allowFullScreen", "hideInfoButton", "closeButtonPosition", "sidebarRightTemplate", "sidebarLeftTemplate"], outputs: ["invalidSharedLink", "navigateBefore", "navigateNext", "showViewerChange"] }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }], encapsulation: i0.ViewEncapsulation.None });
235
+ }
236
+ export { PreviewComponent };
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PreviewComponent, decorators: [{
238
+ type: Component,
239
+ args: [{ standalone: true, imports: [CommonModule, ViewerModule, AlfrescoViewerModule, InfoDrawerComponent, ToolbarMenuItemComponent, ToolbarComponent], selector: 'app-preview', encapsulation: ViewEncapsulation.None, host: { class: 'app-preview' }, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [nodeId]=\"nodeId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n [overlayMode]=\"true\"\n (showViewerChange)=\"onVisibilityChanged($event)\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions *ngIf=\"!simplestMode\">\n <aca-toolbar [items]=\"viewerToolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-preview{width:100%;height:100%}.adf-viewer-toolbar .adf-toolbar-divider{display:none}.adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center}.adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.adf-viewer-toolbar>*>button:last-child{display:none}.adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"] }]
240
+ }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.AppHookService }, { type: i2.ContentApiService }, { type: i3.Location }, { type: i4.NodesApiService }, { type: i5.ActivatedRoute }, { type: i6.ViewerService }]; }, propDecorators: { handleKeyboardEvent: [{
241
+ type: HostListener,
242
+ args: ['document:keydown', ['$event']]
243
+ }] } });
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQXdDLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFzQixzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNHLE9BQU8sRUFDTCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN6QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFn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SUFDekcsQ0FBQzt1R0E3TlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IseU1DdEQ3Qixnc0NBa0NBLHVhRGFZLFlBQVksa1pBQUUsWUFBWSx3VEFBRSxvQkFBb0IsNGxCQUFFLG1CQUFtQix3RkFBRSx3QkFBd0IsbUdBQUUsZ0JBQWdCOztTQU9oSCxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFUNUIsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLFlBQ2xILGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7eVFBc0g5QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBVcmxTZWdtZW50LCBVcmxTZWdtZW50R3JvdXAsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ2xvc2VQcmV2aWV3QWN0aW9uLCBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLCBWaWV3ZXJBY3Rpb25UeXBlcyB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7XG4gIEFwcEhvb2tTZXJ2aWNlLFxuICBDb250ZW50QXBpU2VydmljZSxcbiAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgUGFnZUNvbXBvbmVudCxcbiAgVG9vbGJhckNvbXBvbmVudCxcbiAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb1ZpZXdlck1vZHVsZSwgTm9kZXNBcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBWaWV3ZXJNb2R1bGUsIEFsZnJlc2NvVmlld2VyTW9kdWxlLCBJbmZvRHJhd2VyQ29tcG9uZW50LCBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FwcC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtcHJldmlldycgfVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvbGRlcklkOiBzdHJpbmcgPSBudWxsO1xuICBuYXZpZ2F0ZUJhY2tBc0Nsb3NlID0gZmFsc2U7XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSBmYWxzZTtcbiAgbmF2aWdhdGVTb3VyY2U6IHN0cmluZyA9IG51bGw7XG4gIG5hdmlnYXRpb25Tb3VyY2VzID0gWydmYXZvcml0ZXMnLCAnbGlicmFyaWVzJywgJ3BlcnNvbmFsLWZpbGVzJywgJ3JlY2VudC1maWxlcycsICdzaGFyZWQnXTtcbiAgbmV4dE5vZGVJZDogc3RyaW5nO1xuICBub2RlSWQ6IHN0cmluZyA9IG51bGw7XG4gIG9wZW5XaXRoOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuICBwcmV2aWV3TG9jYXRpb246IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIHJvdXRlc1NraXBOYXZpZ2F0aW9uID0gWydmYXZvcml0ZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHNpbXBsZXN0TW9kZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY29udGFpbmVyc1NraXBOYXZpZ2F0aW9uID0gWydhZGYtdmlld2VyX19zaWRlYmFyJywgJ2Nkay1vdmVybGF5LWNvbnRhaW5lcicsICdhZGYtaW1hZ2Utdmlld2VyJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMb2NhdGlvbiA9IHRoaXMucm91dGVyLnVybC5zdWJzdHIoMCwgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy8nLCAxKSkucmVwbGFjZSgvXFwvL2csICcnKTtcblxuICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcbiAgICB0aGlzLm5hdmlnYXRlQmFja0FzQ2xvc2UgPSAhIXJvdXRlRGF0YS5uYXZpZ2F0ZUJhY2tBc0Nsb3NlO1xuICAgIHRoaXMuc2ltcGxlc3RNb2RlID0gISFyb3V0ZURhdGEuc2ltcGxlc3RNb2RlO1xuXG4gICAgaWYgKHJvdXRlRGF0YS5uYXZpZ2F0ZU11bHRpcGxlKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZURhdGEubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gcm91dGVEYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgaWQgPSBwYXJhbXMubm9kZUlkO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHZvaWQgdGhpcy5kaXNwbGF5Tm9kZShpZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIHRoaXMuYXBwSG9va1NlcnZpY2Uubm9kZXNEZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSksXG5cbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSkpLFxuXG4gICAgICB0aGlzLmFjdGlvbnMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KVxuICAgIF0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwYXJ0aWN1bGFyIG5vZGUgaW50byB0aGUgVmlld2VyXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIE5vZGUgdG8gZGlzcGxheVxuICAgKi9cbiAgYXN5bmMgZGlzcGxheU5vZGUoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5ub2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKGlkKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbeyBlbnRyeTogdGhpcy5ub2RlIH1dKSk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmVhcmVzdCA9IGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5nZXROZWFyZXN0Tm9kZXModGhpcy5ub2RlLmlkLCB0aGlzLm5vZGUucGFyZW50SWQsIHRoaXMubmF2aWdhdGVTb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05vZGVJZCA9IG5lYXJlc3QubGVmdDtcbiAgICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFlcnIgfHwgZXJyLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBpZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUgVmlld2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGlzVmlzaWJsZSBJbmRpY2F0b3Igd2hldGhlciBWaWV3ZXIgaXMgdmlzaWJsZSBvciBoaWRkZW4uXG4gICAqL1xuICBvblZpc2liaWxpdHlDaGFuZ2VkKGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZE5hdmlnYXRlID0gIWlzVmlzaWJsZTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oc2hvdWxkTmF2aWdhdGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbihzaG91bGROYXZpZ2F0ZTogYm9vbGVhbikge1xuICAgIGlmIChzaG91bGROYXZpZ2F0ZSkge1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGVCYWNrQXNDbG9zZSkge1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNraXBOYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyh0aGlzLnByZXZpZXdMb2NhdGlvbik7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROYXZpZ2F0aW9uQ29tbWFuZHModGhpcy5wcmV2aWV3TG9jYXRpb24pO1xuXG4gICAgICAgIGlmICghc2hvdWxkU2tpcE5hdmlnYXRpb24gJiYgdGhpcy5mb2xkZXJJZCkge1xuICAgICAgICAgIHJvdXRlLnB1c2godGhpcy5mb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIHByZXZpb3VzIGRvY3VtZW50ICovXG4gIG9uTmF2aWdhdGVCZWZvcmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJldmlvdXNOb2RlSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5nZXRQcmV2aWV3UGF0aCh0aGlzLmZvbGRlcklkLCB0aGlzLnByZXZpb3VzTm9kZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIG5leHQgZG9jdW1lbnQgKi9cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV4dE5vZGVJZCkge1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMubmV4dE5vZGVJZCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBub2RlIHByZXZpZXcgcm91dGUgYmFzZWQgb24gZm9sZGVyIGFuZCBub2RlIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlcklkIEZvbGRlciBJRFxuICAgKiBAcGFyYW0gbm9kZUlkIE5vZGUgSURcbiAgICovXG4gIGdldFByZXZpZXdQYXRoKGZvbGRlcklkOiBzdHJpbmcsIG5vZGVJZDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW3RoaXMucHJldmlld0xvY2F0aW9uXTtcblxuICAgIGlmIChmb2xkZXJJZCkge1xuICAgICAgcm91dGUucHVzaChmb2xkZXJJZCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVJZCkge1xuICAgICAgcm91dGUucHVzaCgncHJldmlldycsIG5vZGVJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROYXZpZ2F0aW9uQ29tbWFuZHModXJsOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCk7XG4gICAgY29uc3QgdXJsU2VnbWVudEdyb3VwOiBVcmxTZWdtZW50R3JvdXAgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgaWYgKCF1cmxTZWdtZW50R3JvdXApIHtcbiAgICAgIHJldHVybiBbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdID0gdXJsU2VnbWVudEdyb3VwLnNlZ21lbnRzO1xuXG4gICAgcmV0dXJuIHVybFNlZ21lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBpdGVtKSB7XG4gICAgICBhY2MucHVzaChpdGVtLnBhdGgsIGl0ZW0ucGFyYW1ldGVycyk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTmF2aWdhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQgJiYgIXRoaXMuaXNDaGlsZChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QpKSB7XG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhY3VycmVudEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGlzQ2hpbGQobGlzdDogRE9NVG9rZW5MaXN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCkuc29tZSgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHRoaXMuY29udGFpbmVyc1NraXBOYXZpZ2F0aW9uLmluY2x1ZGVzKGNsYXNzTmFtZSkpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZUlkXCI+XG4gIDxhZGYtYWxmcmVzY28tdmlld2VyXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2FjYS1yaWdodF9zaWRlLS1oaWRlJzogIXNob3dSaWdodFNpZGVcbiAgICB9XCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW2Nhbk5hdmlnYXRlQmVmb3JlXT1cIiEhcHJldmlvdXNOb2RlSWRcIlxuICAgIFtjYW5OYXZpZ2F0ZU5leHRdPVwiISFuZXh0Tm9kZUlkXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwidHJ1ZVwiXG4gICAgKHNob3dWaWV3ZXJDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZSgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVOZXh0KT1cIm9uTmF2aWdhdGVOZXh0KCRldmVudClcIlxuICA+XG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cImluZm9EcmF3ZXJPcGVuZWQkIHwgYXN5bmNcIj5cbiAgICAgIDxhY2EtaW5mby1kcmF3ZXIgW25vZGVdPVwic2VsZWN0aW9uLmZpbGVcIiAvPlxuICAgIDwvYWRmLXZpZXdlci1zaWRlYmFyPlxuXG4gICAgPGFkZi12aWV3ZXItb3Blbi13aXRoICpuZ0lmPVwib3BlbldpdGgubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygb3BlbldpdGg7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YXBwLXRvb2xiYXItbWVudS1pdGVtIFthY3Rpb25SZWZdPVwiYWN0aW9uXCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnMgKm5nSWY9XCIhc2ltcGxlc3RNb2RlXCI+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInZpZXdlclRvb2xiYXJBY3Rpb25zXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,260 @@
1
+ /*!
2
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { AppExtensionService, AppHookService, AppSettingsService, ContentApiService, InfoDrawerComponent, ToolbarComponent, ToolbarMenuItemComponent } from '@alfresco/aca-shared';
25
+ import { getAppSelection, isInfoDrawerOpened, SetCurrentNodeVersionAction, SetSelectedNodesAction, ViewerActionTypes, ViewNodeAction } from '@alfresco/aca-shared/store';
26
+ import { VersionsApi } from '@alfresco/js-api';
27
+ import { Component, DestroyRef, HostListener, inject, ViewEncapsulation } from '@angular/core';
28
+ import { ActivatedRoute, PRIMARY_OUTLET, Router } from '@angular/router';
29
+ import { ViewerOpenWithComponent, ViewerSidebarComponent, ViewerToolbarActionsComponent } from '@alfresco/adf-core';
30
+ import { Store } from '@ngrx/store';
31
+ import { from } from 'rxjs';
32
+ import { debounceTime } from 'rxjs/operators';
33
+ import { Actions, ofType } from '@ngrx/effects';
34
+ import { AlfrescoApiService, AlfrescoViewerComponent, DocumentListService, NodesApiService, UploadService } from '@alfresco/adf-content-services';
35
+ import { CommonModule } from '@angular/common';
36
+ import { ViewerService } from '../../services/viewer.service';
37
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
38
+ import * as i0 from "@angular/core";
39
+ import * as i1 from "@ngrx/effects";
40
+ import * as i2 from "@alfresco/adf-content-services";
41
+ import * as i3 from "@alfresco/aca-shared";
42
+ import * as i4 from "@angular/router";
43
+ import * as i5 from "@ngrx/store";
44
+ import * as i6 from "../../services/viewer.service";
45
+ import * as i7 from "@angular/common";
46
+ class AcaViewerComponent {
47
+ actions$;
48
+ apiService;
49
+ appHookService;
50
+ contentApi;
51
+ extensions;
52
+ nodesApiService;
53
+ route;
54
+ router;
55
+ store;
56
+ uploadService;
57
+ viewerService;
58
+ settings = inject(AppSettingsService);
59
+ documentListService = inject(DocumentListService);
60
+ _versionsApi;
61
+ get versionsApi() {
62
+ this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());
63
+ return this._versionsApi;
64
+ }
65
+ fileName;
66
+ folderId = null;
67
+ infoDrawerOpened$;
68
+ navigateMultiple = true;
69
+ navigateSource = null;
70
+ navigationSources = ['favorites', 'libraries', 'personal-files', 'recent-files', 'shared'];
71
+ nextNodeId;
72
+ node;
73
+ nodeId = null;
74
+ openWith = [];
75
+ previousNodeId;
76
+ selection;
77
+ showRightSide = false;
78
+ toolbarActions = [];
79
+ versionId = null;
80
+ navigationPath;
81
+ previewLocation;
82
+ containersSkipNavigation = ['adf-viewer__sidebar', 'cdk-overlay-container', 'adf-image-viewer'];
83
+ destroyRef = inject(DestroyRef);
84
+ constructor(actions$, apiService, appHookService, contentApi, extensions, nodesApiService, route, router, store, uploadService, viewerService) {
85
+ this.actions$ = actions$;
86
+ this.apiService = apiService;
87
+ this.appHookService = appHookService;
88
+ this.contentApi = contentApi;
89
+ this.extensions = extensions;
90
+ this.nodesApiService = nodesApiService;
91
+ this.route = route;
92
+ this.router = router;
93
+ this.store = store;
94
+ this.uploadService = uploadService;
95
+ this.viewerService = viewerService;
96
+ }
97
+ ngOnInit() {
98
+ this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);
99
+ from(this.infoDrawerOpened$)
100
+ .pipe(takeUntilDestroyed(this.destroyRef))
101
+ .subscribe((val) => {
102
+ this.showRightSide = val;
103
+ });
104
+ this.store
105
+ .select(getAppSelection)
106
+ .pipe(takeUntilDestroyed(this.destroyRef))
107
+ .subscribe((selection) => {
108
+ this.selection = selection;
109
+ });
110
+ this.extensions
111
+ .getViewerToolbarActions()
112
+ .pipe(takeUntilDestroyed(this.destroyRef))
113
+ .subscribe((actions) => {
114
+ this.toolbarActions = actions;
115
+ });
116
+ this.extensions
117
+ .getOpenWithActions()
118
+ .pipe(takeUntilDestroyed(this.destroyRef))
119
+ .subscribe((actions) => {
120
+ this.openWith = actions;
121
+ });
122
+ this.route.params.subscribe((params) => {
123
+ this.folderId = params.folderId;
124
+ const { nodeId } = params;
125
+ this.versionId = params.versionId;
126
+ if (this.versionId) {
127
+ void this.versionsApi.getVersion(nodeId, this.versionId).then((version) => {
128
+ if (version) {
129
+ this.store.dispatch(new SetCurrentNodeVersionAction(version));
130
+ }
131
+ });
132
+ }
133
+ if (nodeId) {
134
+ void this.displayNode(nodeId);
135
+ }
136
+ });
137
+ this.route.queryParams.subscribe((params) => {
138
+ this.navigationPath = params.path || params.location;
139
+ });
140
+ if (this.route.snapshot.data?.navigateSource) {
141
+ const source = this.route.snapshot.data.navigateSource.toLowerCase();
142
+ if (this.navigationSources.includes(source)) {
143
+ this.navigateSource = this.route.snapshot.data.navigateSource;
144
+ }
145
+ }
146
+ this.actions$.pipe(ofType(ViewerActionTypes.ClosePreview), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
147
+ this.store.dispatch(new SetCurrentNodeVersionAction(null));
148
+ this.navigateToFileLocation();
149
+ });
150
+ this.actions$
151
+ .pipe(ofType(ViewerActionTypes.RefreshPreview), takeUntilDestroyed(this.destroyRef))
152
+ .subscribe((action) => {
153
+ this.nodesApiService.nodeUpdated.next(action.node);
154
+ void this.displayNode(action.node.id);
155
+ });
156
+ this.appHookService.nodesDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.navigateToFileLocation());
157
+ this.uploadService.fileUploadDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.navigateToFileLocation());
158
+ this.uploadService.fileUploadComplete.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((file) => {
159
+ this.nodesApiService.nodeUpdated.next(file.data.entry);
160
+ void this.displayNode(file.data.entry.id);
161
+ });
162
+ this.previewLocation = this.router.url.substring(0, this.router.url.indexOf('/', 1)).replace(/\//g, '');
163
+ }
164
+ onViewerVisibilityChanged() {
165
+ this.documentListService.reload();
166
+ this.navigateToFileLocation();
167
+ }
168
+ ngOnDestroy() {
169
+ this.store.dispatch(new SetCurrentNodeVersionAction(null));
170
+ }
171
+ trackByActionId(_, obj) {
172
+ return obj.id;
173
+ }
174
+ async displayNode(nodeId) {
175
+ if (nodeId) {
176
+ try {
177
+ this.node = await this.contentApi.getNodeInfo(nodeId).toPromise();
178
+ this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));
179
+ this.navigateMultiple = this.extensions.canShowViewerNavigation({ entry: this.node });
180
+ if (this.node?.isFile) {
181
+ this.nodeId = this.node.id;
182
+ this.fileName = this.node.name + this.node?.properties?.['cm:versionLabel'];
183
+ if (this.navigateMultiple) {
184
+ const nearest = await this.viewerService.getNearestNodes(this.node.id, this.node.parentId, this.navigateSource);
185
+ this.previousNodeId = nearest.left;
186
+ this.nextNodeId = nearest.right;
187
+ }
188
+ return;
189
+ }
190
+ this.navigateToFileLocation();
191
+ }
192
+ catch (error) {
193
+ const statusCode = JSON.parse(error.message).error.statusCode;
194
+ if (statusCode !== 401) {
195
+ await this.router.navigate([this.previewLocation, { outlets: { viewer: null } }]).then(() => {
196
+ void this.router.navigate([this.previewLocation, nodeId]);
197
+ });
198
+ }
199
+ }
200
+ }
201
+ }
202
+ onNavigateBefore(event) {
203
+ if (event.type !== 'click' && this.shouldNavigate(event.target)) {
204
+ return;
205
+ }
206
+ const location = this.getFileLocation();
207
+ this.store.dispatch(new ViewNodeAction(this.previousNodeId, { location }));
208
+ }
209
+ onNavigateNext(event) {
210
+ if (event.type !== 'click' && this.shouldNavigate(event.target)) {
211
+ return;
212
+ }
213
+ const location = this.getFileLocation();
214
+ this.store.dispatch(new ViewNodeAction(this.nextNodeId, { location }));
215
+ }
216
+ handleKeyboardEvent(event) {
217
+ const key = event.key;
218
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
219
+ event.preventDefault();
220
+ event.stopImmediatePropagation();
221
+ }
222
+ }
223
+ navigateToFileLocation() {
224
+ const location = this.getFileLocation();
225
+ void this.router.navigateByUrl(location);
226
+ }
227
+ getFileLocation() {
228
+ return this.navigationPath || this.router.parseUrl(this.router.url).root.children[PRIMARY_OUTLET].toString();
229
+ }
230
+ shouldNavigate(element) {
231
+ let currentElement = element.parentElement;
232
+ while (currentElement && !this.isChild(currentElement.classList)) {
233
+ currentElement = currentElement.parentElement;
234
+ }
235
+ return !!currentElement;
236
+ }
237
+ isChild(list) {
238
+ return Array.from(list).some((className) => this.containersSkipNavigation.includes(className));
239
+ }
240
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AcaViewerComponent, deps: [{ token: i1.Actions }, { token: i2.AlfrescoApiService }, { token: i3.AppHookService }, { token: i3.ContentApiService }, { token: i3.AppExtensionService }, { token: i2.NodesApiService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i5.Store }, { token: i2.UploadService }, { token: i6.ViewerService }], target: i0.ɵɵFactoryTarget.Component });
241
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AcaViewerComponent, isStandalone: true, selector: "aca-viewer", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "app-viewer" }, ngImport: i0, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [maxRetries]=\"settings.viewerMaxRetries\"\n [nodeId]=\"nodeId\"\n [versionId]=\"versionId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [overlayMode]=\"true\"\n [hideInfoButton]=\"true\"\n [closeButtonPosition]=\"settings.viewerCloseButtonPosition\"\n (showViewerChange)=\"onViewerVisibilityChanged()\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions>\n <aca-toolbar [items]=\"toolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-viewer{width:100%;height:100%}.app-viewer .adf-viewer-toolbar .adf-toolbar-divider{display:none}.app-viewer .adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center;margin-left:auto}.app-viewer .adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.app-viewer .adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }, { kind: "component", type: AlfrescoViewerComponent, selector: "adf-alfresco-viewer", inputs: ["nodeId", "versionId", "sharedLinkId", "showViewer", "maxRetries", "allowGoBack", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "allowDownload", "allowPrint", "allowFullScreen", "hideInfoButton", "closeButtonPosition", "sidebarRightTemplate", "sidebarLeftTemplate"], outputs: ["invalidSharedLink", "navigateBefore", "navigateNext", "showViewerChange"] }, { kind: "component", type: ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: ViewerSidebarComponent, selector: "adf-viewer-sidebar" }], encapsulation: i0.ViewEncapsulation.None });
242
+ }
243
+ export { AcaViewerComponent };
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AcaViewerComponent, decorators: [{
245
+ type: Component,
246
+ args: [{ standalone: true, imports: [
247
+ CommonModule,
248
+ InfoDrawerComponent,
249
+ ToolbarMenuItemComponent,
250
+ ToolbarComponent,
251
+ AlfrescoViewerComponent,
252
+ ViewerToolbarActionsComponent,
253
+ ViewerOpenWithComponent,
254
+ ViewerSidebarComponent
255
+ ], selector: 'aca-viewer', encapsulation: ViewEncapsulation.None, host: { class: 'app-viewer' }, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [maxRetries]=\"settings.viewerMaxRetries\"\n [nodeId]=\"nodeId\"\n [versionId]=\"versionId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [overlayMode]=\"true\"\n [hideInfoButton]=\"true\"\n [closeButtonPosition]=\"settings.viewerCloseButtonPosition\"\n (showViewerChange)=\"onViewerVisibilityChanged()\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions>\n <aca-toolbar [items]=\"toolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-viewer{width:100%;height:100%}.app-viewer .adf-viewer-toolbar .adf-toolbar-divider{display:none}.app-viewer .adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center;margin-left:auto}.app-viewer .adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.app-viewer .adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"] }]
256
+ }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.AlfrescoApiService }, { type: i3.AppHookService }, { type: i3.ContentApiService }, { type: i3.AppExtensionService }, { type: i2.NodesApiService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i5.Store }, { type: i2.UploadService }, { type: i6.ViewerService }]; }, propDecorators: { handleKeyboardEvent: [{
257
+ type: HostListener,
258
+ args: ['document:keydown', ['$event']]
259
+ }] } });
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyL3ZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUdMLGVBQWUsRUFDZixrQkFBa0IsRUFFbEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBRWhFLE1Ba0JhLGtCQUFrQjtJQWtDbkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTNDVixRQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFOUIsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFbEQsWUFBWSxDQUFjO0lBQ2xDLElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQVM7SUFDakIsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QixpQkFBaUIsQ0FBc0I7SUFDdkMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFDOUIsaUJBQWlCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRixVQUFVLENBQVM7SUFDbkIsSUFBSSxDQUFPO0lBQ1gsTUFBTSxHQUFXLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQXVCLEVBQUUsQ0FBQztJQUNsQyxjQUFjLENBQVM7SUFDdkIsU0FBUyxDQUFpQjtJQUMxQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLGNBQWMsR0FBdUIsRUFBRSxDQUFDO0lBQ3hDLFNBQVMsR0FBVyxJQUFJLENBQUM7SUFFakIsY0FBYyxDQUFTO0lBQ3ZCLGVBQWUsQ0FBUztJQUN4Qix3QkFBd0IsR0FBRyxDQUFDLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFdkYsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCxZQUNVLFFBQWlCLEVBQ2pCLFVBQThCLEVBQzlCLGNBQThCLEVBQzlCLFVBQTZCLEVBQzdCLFVBQStCLEVBQy9CLGVBQWdDLEVBQ2hDLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxLQUFzQixFQUN0QixhQUE0QixFQUM1QixhQUE0QjtRQVY1QixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ25DLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLEtBQUs7YUFDUCxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsVUFBVTthQUNaLHVCQUF1QixFQUFFO2FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsVUFBVTthQUNaLGtCQUFrQixFQUFFO2FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDaEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFO29CQUN0RixJQUFJLE9BQU8sRUFBRTt3QkFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7cUJBQy9EO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLE1BQU0sRUFBRTtnQkFDVixLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDL0Q7U0FDRjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBcUIsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUTthQUNWLElBQUksQ0FBQyxNQUFNLENBQXVCLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6RyxTQUFTLENBQUMsQ0FBQyxNQUE0QixFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUUxSCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUU5SCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBUyxFQUFFLEdBQXFCO1FBQzlDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQzlCLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSTtnQkFDRixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUV0RixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUNoSCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztxQkFDakM7b0JBQ0QsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUMvQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBRTlELElBQUksVUFBVSxLQUFLLEdBQUcsRUFBRTtvQkFDdEIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDMUYsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWlDO1FBQ2hELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxFQUFFO1lBQzlFLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBaUM7UUFDOUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDLEVBQUU7WUFDOUUsT0FBTztTQUNSO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUdELG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFdEIsSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDL0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9HLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBb0I7UUFDekMsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUUzQyxPQUFPLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hFLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQy9DO1FBRUQsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBa0I7UUFDaEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO3VHQTVOVSxrQkFBa0I7MkZBQWxCLGtCQUFrQixnTEM1RS9CLGsxQ0FzQ0Esa2JEdUJJLFlBQVksbVpBQ1osbUJBQW1CLHdGQUNuQix3QkFBd0IsbUdBQ3hCLGdCQUFnQiwyRUFDaEIsdUJBQXVCLG1pQkFDdkIsNkJBQTZCLHVFQUM3Qix1QkFBdUIsaUVBQ3ZCLHNCQUFzQjs7U0FRYixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFsQjlCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QixZQUNTLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7MFhBZ003QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHtcbiAgQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgQXBwSG9va1NlcnZpY2UsXG4gIEFwcFNldHRpbmdzU2VydmljZSxcbiAgQ29udGVudEFwaVNlcnZpY2UsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG4gIFRvb2xiYXJNZW51SXRlbUNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ2xvc2VQcmV2aWV3QWN0aW9uLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgUmVmcmVzaFByZXZpZXdBY3Rpb24sXG4gIFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbixcbiAgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbixcbiAgVmlld2VyQWN0aW9uVHlwZXMsXG4gIFZpZXdOb2RlQWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYsIFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IE5vZGUsIFZlcnNpb25FbnRyeSwgVmVyc2lvbnNBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVmlld2VyT3BlbldpdGhDb21wb25lbnQsIFZpZXdlclNpZGViYXJDb21wb25lbnQsIFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UsIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50LCBEb2N1bWVudExpc3RTZXJ2aWNlLCBOb2Rlc0FwaVNlcnZpY2UsIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgQWxmcmVzY29WaWV3ZXJDb21wb25lbnQsXG4gICAgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQsXG4gICAgVmlld2VyT3BlbldpdGhDb21wb25lbnQsXG4gICAgVmlld2VyU2lkZWJhckNvbXBvbmVudFxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtdmlld2VyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2V0dGluZ3MgPSBpbmplY3QoQXBwU2V0dGluZ3NTZXJ2aWNlKTtcblxuICBwcml2YXRlIGRvY3VtZW50TGlzdFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRMaXN0U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gIH1cblxuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgaW5mb0RyYXdlck9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICBuYXZpZ2F0ZVNvdXJjZTogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGlvblNvdXJjZXMgPSBbJ2Zhdm9yaXRlcycsICdsaWJyYXJpZXMnLCAncGVyc29uYWwtZmlsZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBuZXh0Tm9kZUlkOiBzdHJpbmc7XG4gIG5vZGU6IE5vZGU7XG4gIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcbiAgb3BlbldpdGg6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBwcmV2aW91c05vZGVJZDogc3RyaW5nO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHRvb2xiYXJBY3Rpb25zOiBDb250ZW50QWN0aW9uUmVmW10gPSBbXTtcbiAgdmVyc2lvbklkOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgbmF2aWdhdGlvblBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBwcmV2aWV3TG9jYXRpb246IHN0cmluZztcbiAgcHJpdmF0ZSBjb250YWluZXJzU2tpcE5hdmlnYXRpb24gPSBbJ2FkZi12aWV3ZXJfX3NpZGViYXInLCAnY2RrLW92ZXJsYXktY29udGFpbmVyJywgJ2FkZi1pbWFnZS12aWV3ZXInXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5mb0RyYXdlck9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChpc0luZm9EcmF3ZXJPcGVuZWQpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnNcbiAgICAgIC5nZXRWaWV3ZXJUb29sYmFyQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50b29sYmFyQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldE9wZW5XaXRoQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuV2l0aCA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgeyBub2RlSWQgfSA9IHBhcmFtcztcbiAgICAgIHRoaXMudmVyc2lvbklkID0gcGFyYW1zLnZlcnNpb25JZDtcbiAgICAgIGlmICh0aGlzLnZlcnNpb25JZCkge1xuICAgICAgICB2b2lkIHRoaXMudmVyc2lvbnNBcGkuZ2V0VmVyc2lvbihub2RlSWQsIHRoaXMudmVyc2lvbklkKS50aGVuKCh2ZXJzaW9uOiBWZXJzaW9uRW50cnkpID0+IHtcbiAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKHZlcnNpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVJZCkge1xuICAgICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUobm9kZUlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubmF2aWdhdGlvblBhdGggPSBwYXJhbXMucGF0aCB8fCBwYXJhbXMubG9jYXRpb247XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhPy5uYXZpZ2F0ZVNvdXJjZSkge1xuICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLm5hdmlnYXRlU291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU291cmNlcy5pbmNsdWRlcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVTb3VyY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEubmF2aWdhdGVTb3VyY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKG51bGwpKTtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZUeXBlPFJlZnJlc2hQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5SZWZyZXNoUHJldmlldyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9uOiBSZWZyZXNoUHJldmlld0FjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGFjdGlvbi5ub2RlKTtcbiAgICAgICAgdm9pZCB0aGlzLmRpc3BsYXlOb2RlKGFjdGlvbi5ub2RlLmlkKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hcHBIb29rU2VydmljZS5ub2Rlc0RlbGV0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRGVsZXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCkpO1xuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRDb21wbGV0ZS5waXBlKGRlYm91bmNlVGltZSgzMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB7XG4gICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSk7XG4gICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUoZmlsZS5kYXRhLmVudHJ5LmlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldmlld0xvY2F0aW9uID0gdGhpcy5yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignLycsIDEpKS5yZXBsYWNlKC9cXC8vZywgJycpO1xuICB9XG5cbiAgb25WaWV3ZXJWaXNpYmlsaXR5Q2hhbmdlZCgpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVsb2FkKCk7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24obnVsbCkpO1xuICB9XG5cbiAgdHJhY2tCeUFjdGlvbklkKF86IG51bWJlciwgb2JqOiBDb250ZW50QWN0aW9uUmVmKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb2JqLmlkO1xuICB9XG5cbiAgYXN5bmMgZGlzcGxheU5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAobm9kZUlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8obm9kZUlkKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbeyBlbnRyeTogdGhpcy5ub2RlIH1dKSk7XG4gICAgICAgIHRoaXMubmF2aWdhdGVNdWx0aXBsZSA9IHRoaXMuZXh0ZW5zaW9ucy5jYW5TaG93Vmlld2VyTmF2aWdhdGlvbih7IGVudHJ5OiB0aGlzLm5vZGUgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMubm9kZS5uYW1lICsgdGhpcy5ub2RlPy5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddO1xuICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRlTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lYXJlc3QgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuZ2V0TmVhcmVzdE5vZGVzKHRoaXMubm9kZS5pZCwgdGhpcy5ub2RlLnBhcmVudElkLCB0aGlzLm5hdmlnYXRlU291cmNlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNOb2RlSWQgPSBuZWFyZXN0LmxlZnQ7XG4gICAgICAgICAgICB0aGlzLm5leHROb2RlSWQgPSBuZWFyZXN0LnJpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gSlNPTi5wYXJzZShlcnJvci5tZXNzYWdlKS5lcnJvci5zdGF0dXNDb2RlO1xuXG4gICAgICAgIGlmIChzdGF0dXNDb2RlICE9PSA0MDEpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIHsgb3V0bGV0czogeyB2aWV3ZXI6IG51bGwgfSB9XSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnByZXZpZXdMb2NhdGlvbiwgbm9kZUlkXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk5hdmlnYXRlQmVmb3JlKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLnByZXZpb3VzTm9kZUlkLCB7IGxvY2F0aW9uIH0pKTtcbiAgfVxuXG4gIG9uTmF2aWdhdGVOZXh0KGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLm5leHROb2RlSWQsIHsgbG9jYXRpb24gfSkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuZ2V0RmlsZUxvY2F0aW9uKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZUxvY2F0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblBhdGggfHwgdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKS5yb290LmNoaWxkcmVuW1BSSU1BUllfT1VUTEVUXS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGROYXZpZ2F0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiAhdGhpcy5pc0NoaWxkKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkpIHtcbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gISFjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDaGlsZChsaXN0OiBET01Ub2tlbkxpc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShsaXN0KS5zb21lKChjbGFzc05hbWU6IHN0cmluZykgPT4gdGhpcy5jb250YWluZXJzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXMoY2xhc3NOYW1lKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlSWRcIj5cbiAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnYWNhLXJpZ2h0X3NpZGUtLWhpZGUnOiAhc2hvd1JpZ2h0U2lkZVxuICAgIH1cIlxuICAgIFttYXhSZXRyaWVzXT1cInNldHRpbmdzLnZpZXdlck1heFJldHJpZXNcIlxuICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICBbdmVyc2lvbklkXT1cInZlcnNpb25JZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW292ZXJsYXlNb2RlXT1cInRydWVcIlxuICAgIFtoaWRlSW5mb0J1dHRvbl09XCJ0cnVlXCJcbiAgICBbY2xvc2VCdXR0b25Qb3NpdGlvbl09XCJzZXR0aW5ncy52aWV3ZXJDbG9zZUJ1dHRvblBvc2l0aW9uXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKClcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItc2lkZWJhcj5cblxuICAgIDxhZGYtdmlld2VyLW9wZW4td2l0aCAqbmdJZj1cIm9wZW5XaXRoLmxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIG9wZW5XaXRoOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uSWRcIj5cbiAgICAgICAgPGFwcC10b29sYmFyLW1lbnUtaXRlbSBbYWN0aW9uUmVmXT1cImFjdGlvblwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FkZi12aWV3ZXItb3Blbi13aXRoPlxuXG4gICAgPGFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICAgICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJ0b29sYmFyQWN0aW9uc1wiIC8+XG4gICAgPC9hZGYtdmlld2VyLXRvb2xiYXItYWN0aW9ucz5cbiAgPC9hZGYtYWxmcmVzY28tdmlld2VyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=