@sunbird-cb/toc 0.0.8 → 0.0.9

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 (495) hide show
  1. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
  2. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
  3. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
  4. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
  5. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
  6. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
  8. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
  9. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
  10. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
  11. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
  12. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
  13. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
  14. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
  15. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
  16. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
  17. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
  18. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
  19. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
  20. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
  21. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
  22. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
  23. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
  24. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
  25. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
  26. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
  27. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +248 -225
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1148 -1030
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
  34. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
  35. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
  36. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
  37. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
  38. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
  39. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
  40. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
  41. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
  42. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
  43. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
  44. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
  45. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
  46. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
  47. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
  48. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
  49. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
  50. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
  51. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
  52. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
  53. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
  54. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
  55. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
  56. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
  57. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
  58. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
  59. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
  60. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
  61. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
  62. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
  63. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
  64. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
  65. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
  66. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
  67. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
  68. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
  69. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
  70. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
  71. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
  72. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
  73. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
  74. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
  75. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
  76. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
  77. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
  78. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
  79. package/esm2022/lib/_collection-api.mjs +57 -57
  80. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
  81. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
  82. package/esm2022/lib/_models/common.model.mjs +2 -2
  83. package/esm2022/lib/_models/error.model.mjs +2 -2
  84. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
  85. package/esm2022/lib/_services/rating.service.mjs +89 -89
  86. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
  87. package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
  88. package/esm2022/lib/_services/widget-content.model.mjs +247 -247
  89. package/esm2022/lib/_services/widget-content.service.mjs +594 -594
  90. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
  91. package/esm2022/lib/app-toc-lib.module.mjs +499 -499
  92. package/esm2022/lib/collection.config.mjs +161 -161
  93. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
  94. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
  95. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
  96. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
  97. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
  98. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
  99. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
  100. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
  101. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
  102. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2907 -2905
  103. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
  104. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
  105. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
  106. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
  107. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
  108. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
  109. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
  110. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
  111. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
  112. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
  113. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
  114. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
  115. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
  116. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
  117. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
  118. package/esm2022/lib/models/app-toc.model.mjs +38 -38
  119. package/esm2022/lib/models/auto-complete.model.mjs +2 -2
  120. package/esm2022/lib/models/card-content.model.mjs +13 -13
  121. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
  122. package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
  123. package/esm2022/lib/models/goal.model.mjs +2 -2
  124. package/esm2022/lib/models/meta-tag.model.mjs +8 -8
  125. package/esm2022/lib/models/playlist.model.mjs +2 -2
  126. package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
  127. package/esm2022/lib/models/rating.model.mjs +2 -2
  128. package/esm2022/lib/models/user-profile.model.mjs +21 -21
  129. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
  130. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
  131. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
  132. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
  133. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
  134. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
  135. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
  136. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
  137. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
  138. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
  139. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
  140. package/esm2022/lib/services/access-control.service.mjs +56 -56
  141. package/esm2022/lib/services/action.service.mjs +23 -23
  142. package/esm2022/lib/services/app-toc-v2.service.mjs +313 -243
  143. package/esm2022/lib/services/app-toc.service.mjs +1613 -1387
  144. package/esm2022/lib/services/certificate.service.mjs +69 -69
  145. package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
  146. package/esm2022/lib/services/editor.service.mjs +34 -34
  147. package/esm2022/lib/services/load-check.service.mjs +21 -21
  148. package/esm2022/lib/services/loader.service.mjs +33 -33
  149. package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
  150. package/esm2022/lib/services/netcore.service.mjs +56 -56
  151. package/esm2022/lib/services/nps-grid.service.mjs +31 -31
  152. package/esm2022/lib/services/otp.service.mjs +43 -43
  153. package/esm2022/lib/services/profile-v2.service.mjs +43 -43
  154. package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
  155. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
  156. package/esm2022/lib/services/timer.service.mjs +23 -23
  157. package/esm2022/lib/services/title-tag.service.mjs +71 -71
  158. package/esm2022/lib/services/user-profile.service.mjs +55 -55
  159. package/esm2022/lib/services/viewer-data.service.mjs +64 -64
  160. package/esm2022/lib/services/viewer-util.service.mjs +590 -590
  161. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
  162. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
  163. package/esm2022/public-api.mjs +71 -71
  164. package/esm2022/sunbird-cb-toc.mjs +4 -4
  165. package/fesm2022/sunbird-cb-toc.mjs +24776 -24339
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  167. package/index.d.ts +5 -6
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +16 -17
  169. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +31 -32
  170. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +15 -16
  171. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +20 -21
  172. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +22 -23
  173. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +15 -16
  174. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +22 -23
  175. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +22 -23
  176. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +9 -10
  177. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +11 -12
  178. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +12 -13
  179. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +18 -19
  180. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +14 -15
  181. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +11 -12
  182. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +17 -18
  183. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +14 -15
  184. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +199 -200
  185. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +16 -17
  186. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +10 -11
  187. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +38 -39
  188. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +19 -20
  189. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +11 -12
  190. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +183 -184
  191. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +41 -42
  192. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +54 -55
  193. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +47 -48
  194. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +49 -49
  195. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +171 -155
  196. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +8 -9
  197. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +16 -17
  198. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +40 -41
  199. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +21 -22
  200. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +45 -46
  201. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +10 -11
  202. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +10 -11
  203. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +128 -129
  204. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +51 -52
  205. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +29 -30
  206. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +9 -10
  207. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +7 -8
  208. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +7 -8
  209. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +28 -29
  210. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +24 -25
  211. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +14 -15
  212. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +9 -10
  213. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +12 -13
  214. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +10 -11
  215. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +22 -23
  216. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +8 -9
  217. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +18 -19
  218. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +8 -9
  219. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +15 -16
  220. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +35 -36
  221. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +19 -20
  222. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +14 -15
  223. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +13 -14
  224. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +11 -12
  225. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +11 -12
  226. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +15 -16
  227. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +10 -11
  228. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +16 -17
  229. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +11 -12
  230. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +34 -35
  231. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +17 -18
  232. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +15 -16
  233. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +15 -16
  234. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +21 -22
  235. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +12 -13
  236. package/lib/_collection/_common/user-image/user-image.component.d.ts +21 -22
  237. package/lib/_collection/_common/user-image/user-image.module.d.ts +9 -10
  238. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +47 -48
  239. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +14 -15
  240. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +22 -23
  241. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +19 -20
  242. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +15 -16
  243. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +25 -26
  244. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +21 -22
  245. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +18 -19
  246. package/lib/_collection-api.d.ts +34 -35
  247. package/lib/_constants/widget-content.constants.d.ts +7 -8
  248. package/lib/_directives/tooltip.directive.d.ts +17 -18
  249. package/lib/_models/common.model.d.ts +3 -4
  250. package/lib/_models/error.model.d.ts +5 -6
  251. package/lib/_pipes/highlight.pipe.d.ts +10 -11
  252. package/lib/_services/rating.service.d.ts +18 -19
  253. package/lib/_services/samuhik-charcha.service.d.ts +13 -14
  254. package/lib/_services/viewer-route-util.d.ts +8 -9
  255. package/lib/_services/widget-content.model.d.ts +515 -516
  256. package/lib/_services/widget-content.service.d.ts +101 -102
  257. package/lib/_shared/translate-loader.factory.d.ts +7 -8
  258. package/lib/app-toc-lib.module.d.ts +88 -89
  259. package/lib/collection.config.d.ts +159 -160
  260. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +17 -18
  261. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +225 -226
  262. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +78 -79
  263. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +22 -23
  264. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +31 -32
  265. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +47 -48
  266. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +14 -15
  267. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +21 -22
  268. package/lib/components/app-toc-home/app-toc-home.component.d.ts +314 -315
  269. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +408 -409
  270. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +47 -48
  271. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +22 -23
  272. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +14 -15
  273. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +149 -150
  274. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +42 -43
  275. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +27 -28
  276. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +15 -16
  277. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +195 -196
  278. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +44 -45
  279. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +54 -55
  280. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +18 -19
  281. package/lib/components/public-survey-form/public-survey-form.component.d.ts +43 -44
  282. package/lib/components/survey-form-question/survey-form-question.component.d.ts +20 -21
  283. package/lib/components/survey-form-section/survey-form-section.component.d.ts +13 -14
  284. package/lib/models/app-toc-analytics.model.d.ts +152 -153
  285. package/lib/models/app-toc.model.d.ts +84 -85
  286. package/lib/models/auto-complete.model.d.ts +27 -28
  287. package/lib/models/card-content.model.d.ts +19 -20
  288. package/lib/models/content-strip-with-tabs.model.d.ts +44 -45
  289. package/lib/models/discussion-forum.model.d.ts +40 -41
  290. package/lib/models/goal.model.d.ts +22 -23
  291. package/lib/models/meta-tag.model.d.ts +6 -7
  292. package/lib/models/playlist.model.d.ts +23 -24
  293. package/lib/models/profile-revamp.model.d.ts +14 -15
  294. package/lib/models/rating.model.d.ts +17 -18
  295. package/lib/models/user-profile.model.d.ts +37 -38
  296. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +12 -13
  297. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +12 -13
  298. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +16 -17
  299. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +12 -13
  300. package/lib/resolvers/app-toc-resolver.service.d.ts +16 -17
  301. package/lib/resolvers/config-resolver.service.d.ts +11 -12
  302. package/lib/resolvers/profile-resolver.service.d.ts +11 -12
  303. package/lib/resolvers/restricted-features-resolver.service.d.ts +11 -12
  304. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +19 -20
  305. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +8 -9
  306. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +8 -9
  307. package/lib/services/access-control.service.d.ts +29 -30
  308. package/lib/services/action.service.d.ts +9 -10
  309. package/lib/services/app-toc-v2.service.d.ts +16 -15
  310. package/lib/services/app-toc.service.d.ts +235 -178
  311. package/lib/services/certificate.service.d.ts +42 -43
  312. package/lib/services/discuss-utils.service.d.ts +33 -34
  313. package/lib/services/editor.service.d.ts +17 -18
  314. package/lib/services/load-check.service.d.ts +8 -9
  315. package/lib/services/loader.service.d.ts +16 -17
  316. package/lib/services/mobile-apps.service.d.ts +38 -39
  317. package/lib/services/netcore.service.d.ts +33 -34
  318. package/lib/services/nps-grid.service.d.ts +15 -16
  319. package/lib/services/otp.service.d.ts +20 -21
  320. package/lib/services/profile-v2.service.d.ts +20 -21
  321. package/lib/services/reset-ratings.service.d.ts +8 -9
  322. package/lib/services/resource-download-helper.service.d.ts +29 -30
  323. package/lib/services/timer.service.d.ts +9 -10
  324. package/lib/services/title-tag.service.d.ts +21 -22
  325. package/lib/services/user-profile.service.d.ts +24 -25
  326. package/lib/services/viewer-data.service.d.ts +58 -59
  327. package/lib/services/viewer-util.service.d.ts +76 -77
  328. package/lib/share-toc/share-toc/share-toc.component.d.ts +56 -57
  329. package/lib/share-toc/share-toc.module.d.ts +32 -33
  330. package/package.json +1 -1
  331. package/public-api.d.ts +56 -57
  332. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +0 -1
  333. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +0 -1
  334. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +0 -1
  335. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +0 -1
  336. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +0 -1
  337. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +0 -1
  338. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +0 -1
  339. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +0 -1
  340. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +0 -1
  341. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +0 -1
  342. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +0 -1
  343. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +0 -1
  344. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +0 -1
  345. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +0 -1
  346. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +0 -1
  347. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +0 -1
  348. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +0 -1
  349. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +0 -1
  350. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +0 -1
  351. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +0 -1
  352. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +0 -1
  353. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +0 -1
  354. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +0 -1
  355. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +0 -1
  356. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +0 -1
  357. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +0 -1
  358. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +0 -1
  359. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +0 -1
  360. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +0 -1
  361. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +0 -1
  362. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +0 -1
  363. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +0 -1
  364. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +0 -1
  365. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +0 -1
  366. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +0 -1
  367. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +0 -1
  368. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +0 -1
  369. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +0 -1
  370. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +0 -1
  371. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +0 -1
  372. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +0 -1
  373. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +0 -1
  374. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +0 -1
  375. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +0 -1
  376. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +0 -1
  377. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +0 -1
  378. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +0 -1
  379. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +0 -1
  380. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +0 -1
  381. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +0 -1
  382. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +0 -1
  383. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +0 -1
  384. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +0 -1
  385. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +0 -1
  386. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +0 -1
  387. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +0 -1
  388. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +0 -1
  389. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +0 -1
  390. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +0 -1
  391. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +0 -1
  392. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +0 -1
  393. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +0 -1
  394. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +0 -1
  395. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +0 -1
  396. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +0 -1
  397. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +0 -1
  398. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +0 -1
  399. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +0 -1
  400. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +0 -1
  401. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +0 -1
  402. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +0 -1
  403. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +0 -1
  404. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +0 -1
  405. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +0 -1
  406. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +0 -1
  407. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +0 -1
  408. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +0 -1
  409. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +0 -1
  410. package/lib/_collection-api.d.ts.map +0 -1
  411. package/lib/_constants/widget-content.constants.d.ts.map +0 -1
  412. package/lib/_directives/tooltip.directive.d.ts.map +0 -1
  413. package/lib/_models/common.model.d.ts.map +0 -1
  414. package/lib/_models/error.model.d.ts.map +0 -1
  415. package/lib/_pipes/highlight.pipe.d.ts.map +0 -1
  416. package/lib/_services/rating.service.d.ts.map +0 -1
  417. package/lib/_services/samuhik-charcha.service.d.ts.map +0 -1
  418. package/lib/_services/viewer-route-util.d.ts.map +0 -1
  419. package/lib/_services/widget-content.model.d.ts.map +0 -1
  420. package/lib/_services/widget-content.service.d.ts.map +0 -1
  421. package/lib/_shared/translate-loader.factory.d.ts.map +0 -1
  422. package/lib/app-toc-lib.module.d.ts.map +0 -1
  423. package/lib/collection.config.d.ts.map +0 -1
  424. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +0 -1
  425. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +0 -1
  426. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +0 -1
  427. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +0 -1
  428. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +0 -1
  429. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +0 -1
  430. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +0 -1
  431. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +0 -1
  432. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  433. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +0 -1
  434. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +0 -1
  435. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +0 -1
  436. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +0 -1
  437. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +0 -1
  438. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +0 -1
  439. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +0 -1
  440. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +0 -1
  441. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +0 -1
  442. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +0 -1
  443. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +0 -1
  444. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +0 -1
  445. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +0 -1
  446. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +0 -1
  447. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +0 -1
  448. package/lib/models/app-toc-analytics.model.d.ts.map +0 -1
  449. package/lib/models/app-toc.model.d.ts.map +0 -1
  450. package/lib/models/auto-complete.model.d.ts.map +0 -1
  451. package/lib/models/card-content.model.d.ts.map +0 -1
  452. package/lib/models/content-strip-with-tabs.model.d.ts.map +0 -1
  453. package/lib/models/discussion-forum.model.d.ts.map +0 -1
  454. package/lib/models/goal.model.d.ts.map +0 -1
  455. package/lib/models/meta-tag.model.d.ts.map +0 -1
  456. package/lib/models/playlist.model.d.ts.map +0 -1
  457. package/lib/models/profile-revamp.model.d.ts.map +0 -1
  458. package/lib/models/rating.model.d.ts.map +0 -1
  459. package/lib/models/user-profile.model.d.ts.map +0 -1
  460. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +0 -1
  461. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +0 -1
  462. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +0 -1
  463. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +0 -1
  464. package/lib/resolvers/app-toc-resolver.service.d.ts.map +0 -1
  465. package/lib/resolvers/config-resolver.service.d.ts.map +0 -1
  466. package/lib/resolvers/profile-resolver.service.d.ts.map +0 -1
  467. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +0 -1
  468. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  469. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +0 -1
  470. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +0 -1
  471. package/lib/services/access-control.service.d.ts.map +0 -1
  472. package/lib/services/action.service.d.ts.map +0 -1
  473. package/lib/services/app-toc-v2.service.d.ts.map +0 -1
  474. package/lib/services/app-toc.service.d.ts.map +0 -1
  475. package/lib/services/certificate.service.d.ts.map +0 -1
  476. package/lib/services/discuss-utils.service.d.ts.map +0 -1
  477. package/lib/services/editor.service.d.ts.map +0 -1
  478. package/lib/services/load-check.service.d.ts.map +0 -1
  479. package/lib/services/loader.service.d.ts.map +0 -1
  480. package/lib/services/mobile-apps.service.d.ts.map +0 -1
  481. package/lib/services/netcore.service.d.ts.map +0 -1
  482. package/lib/services/nps-grid.service.d.ts.map +0 -1
  483. package/lib/services/otp.service.d.ts.map +0 -1
  484. package/lib/services/profile-v2.service.d.ts.map +0 -1
  485. package/lib/services/reset-ratings.service.d.ts.map +0 -1
  486. package/lib/services/resource-download-helper.service.d.ts.map +0 -1
  487. package/lib/services/timer.service.d.ts.map +0 -1
  488. package/lib/services/title-tag.service.d.ts.map +0 -1
  489. package/lib/services/user-profile.service.d.ts.map +0 -1
  490. package/lib/services/viewer-data.service.d.ts.map +0 -1
  491. package/lib/services/viewer-util.service.d.ts.map +0 -1
  492. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +0 -1
  493. package/lib/share-toc/share-toc.module.d.ts.map +0 -1
  494. package/public-api.d.ts.map +0 -1
  495. package/sunbird-cb-toc.d.ts.map +0 -1
@@ -1,225 +1,248 @@
1
- import { Component, Input } from '@angular/core';
2
- import { NsContent } from '@sunbird-cb/utils-v2';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/router";
5
- import * as i2 from "../../../../services/app-toc.service";
6
- import * as i3 from "@sunbird-cb/utils-v2";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "../app-toc-content-card-v2/app-toc-content-card-v2.component";
9
- import * as i6 from "../app-toc-sessions-new/app-toc-sessions-new.component";
10
- import * as i7 from "../app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component";
11
- // import { NsAppToc } from '../models/app-toc.model'
12
- export class AppTocContentComponent {
13
- constructor(route, tocSvc, configSvc) {
14
- this.route = route;
15
- this.tocSvc = tocSvc;
16
- this.configSvc = configSvc;
17
- this.forPreview = false;
18
- this.resumeData = null;
19
- this.batchData = null;
20
- this.skeletonLoader = false;
21
- this.hierarchyMapData = {};
22
- this.isPreAssessment = false;
23
- this.isPlayable = false;
24
- this.contentPlayWidgetConfig = null;
25
- this.defaultThumbnail = '';
26
- // errorCode: NsAppToc.EWsTocErrorCode | null = null
27
- this.routeSubscription = null;
28
- this.routeQuerySubscription = null;
29
- this.contentParents = [];
30
- this.expandAll = false;
31
- this.expandPartOf = false;
32
- this.contentLoader = false;
33
- this.selectedTabType = 'content';
34
- this.nsContent = NsContent;
35
- this.otherResourse = 0;
36
- this.tocSvc.resumeData.subscribe((res) => {
37
- this.resumeData = res;
38
- // this.getLastPlayedResource()
39
- });
40
- }
41
- ngOnInit() {
42
- // this.forPreview = window.location.href.includes('/author/')
43
- this.routeQuerySubscription = this.route.queryParamMap.subscribe(qParamsMap => {
44
- // console.log('qParamsMap--', qParamsMap)
45
- // console.log('this.content--', this.content)
46
- // console.log('this.hierarchyMapData', this.hierarchyMapData)
47
- // Parse preEnrolmentResources if it exists as a string
48
- // Note: This is separate from preliminary assessment which is in children array with isPreAssessment flag
49
- if (this.content && this.content?.preEnrolmentResources && typeof this.content?.preEnrolmentResources === 'string') {
50
- this.content['preEnrolmentResources'] = JSON.parse(this.content?.preEnrolmentResources);
51
- }
52
- const contextId = qParamsMap.get('contextId');
53
- const contextPath = qParamsMap.get('contextPath');
54
- const batchId = qParamsMap.get('batchId');
55
- const primaryCategory = qParamsMap.get('primaryCategory');
56
- const preAssessment = qParamsMap.get('preAssessment');
57
- if (preAssessment === 'true') {
58
- this.isPreAssessment = true;
59
- }
60
- if (contextId && contextPath) {
61
- this.contextId = contextId;
62
- this.contextPath = contextPath;
63
- }
64
- if (batchId) {
65
- this.batchId = batchId;
66
- }
67
- if (primaryCategory) {
68
- this.selectedTabType = primaryCategory === this.nsContent.EPrimaryCategory.OFFLINE_SESSION ? 'session' : 'content';
69
- }
70
- });
71
- if (this.route && this.route.parent) {
72
- this.routeSubscription = this.route.parent.data.subscribe((data) => {
73
- this.initData(data);
74
- });
75
- }
76
- this.tocSvc.contentLoader$.subscribe((val) => {
77
- this.contentLoader = val;
78
- });
79
- const instanceConfig = this.configSvc.instanceConfig;
80
- if (instanceConfig) {
81
- this.defaultThumbnail = instanceConfig.logos.defaultContent || '';
82
- }
83
- this.typesOfContent = [
84
- {
85
- name: 'Self-paced',
86
- id: 'content',
87
- disabled: false,
88
- },
89
- {
90
- name: 'Instructor-led',
91
- id: 'session',
92
- disabled: false,
93
- },
94
- ];
95
- this.otherResourse = 0;
96
- if (this.tocStructure) {
97
- Object.keys(this.tocStructure).forEach((ele) => {
98
- if (ele === 'offlineSession' || ele === 'learningModule') {
99
- }
100
- else {
101
- this.otherResourse = this.otherResourse + this.tocStructure[ele];
102
- }
103
- });
104
- if (!this.otherResourse) {
105
- setTimeout(() => {
106
- this.selectedTabType = 'session';
107
- this.typesOfContent[0].disabled = true;
108
- }, 1000);
109
- }
110
- else {
111
- this.typesOfContent[1].disabled = this.tocStructure['offlineSession'] ? false : true;
112
- }
113
- }
114
- }
115
- initData(_data) {
116
- // not required init now because new implementation of hashmap already has mapped the completion percent
117
- // const initData = this.tocSvc.initData(data, true)
118
- // this.content = initData.content
119
- // this.errorCode = initData.errorCode
120
- if (this.content) {
121
- if (!this.contextId || !this.contextPath) {
122
- this.contextId = this.content.identifier;
123
- this.contextPath = this.content.primaryCategory;
124
- }
125
- }
126
- }
127
- ngOnChanges(changes) {
128
- for (const property in changes) {
129
- if (property === 'resumeData') {
130
- // this.getLastPlayedResource()
131
- }
132
- }
133
- }
134
- get isEnrolled() {
135
- return this.batchId ? true : false;
136
- }
137
- // private processCollectionForTree() {
138
- // this.pathSet = new Set()
139
- // }
140
- // getLastPlayedResource() {
141
- // let firstPlayableContent
142
- // let resumeDataV2: any
143
- // if (this.resumeData && this.resumeData.length > 0 && this.content) {
144
- // if (this.content.completionPercentage === 100) {
145
- // resumeDataV2 = this.getResumeDataFromList('start')
146
- // } else {
147
- // resumeDataV2 = this.getResumeDataFromList()
148
- // }
149
- // this.expandThePath(resumeDataV2.identifier)
150
- // } else {
151
- // firstPlayableContent = this.contentSvc.getFirstChildInHierarchy(this.content)
152
- // this.expandThePath(firstPlayableContent.identifier)
153
- // }
154
- // }
155
- // expandThePath(resourceId: string) {
156
- // if (this.content && resourceId) {
157
- // const path = this.utilitySvc.getPath(this.content, resourceId)
158
- // // console.log('Path :: :: : ', path)
159
- // this.pathSet = new Set(path.map((u: { identifier: any }) => u.identifier))
160
- // // console.log('pathSet ::: ', this.pathSet)
161
- // // path.forEach((node: IViewerTocCard) => {
162
- // // this.nestedTreeControl.expand(node)
163
- // // })
164
- // }
165
- // }
166
- // private getResumeDataFromList(type?: string) {
167
- // if (!type) {
168
- // // tslint:disable-next-line:max-line-length
169
- // const lastItem = this.resumeData && this.resumeData.sort((a: any, b: any) =>
170
- // new Date(b.lastAccessTime).getTime() - new Date(a.lastAccessTime).getTime()).shift()
171
- // return {
172
- // identifier: lastItem.contentId,
173
- // mimeType: lastItem.progressdetails && lastItem.progressdetails.mimeType,
174
- // }
175
- // }
176
- // const firstItem = this.resumeData && this.resumeData.length && this.resumeData[0]
177
- // return {
178
- // identifier: firstItem.contentId,
179
- // mimeType: firstItem.progressdetails && firstItem.progressdetails.mimeType,
180
- // }
181
- // }
182
- ngOnDestroy() {
183
- if (this.routeSubscription) {
184
- this.routeSubscription.unsubscribe();
185
- }
186
- if (this.routeQuerySubscription) {
187
- this.routeQuerySubscription.unsubscribe();
188
- }
189
- }
190
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }], target: i0.ɵɵFactoryTarget.Component }); }
191
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocContentComponent, selector: "ws-widget-app-toc-content", inputs: { batchId: "batchId", content: "content", forPreview: "forPreview", resumeData: "resumeData", batchData: "batchData", skeletonLoader: "skeletonLoader", tocStructure: "tocStructure", config: "config", hierarchyMapData: "hierarchyMapData", pathSet: "pathSet", componentName: "componentName", isPreAssessment: "isPreAssessment", baseContentReadData: "baseContentReadData", contentReadData: "contentReadData" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"content?.courseCategory === 'Learning Pathway' && componentName !== 'viewer'\">\n <!-- Milestone / Learning Path UI -->\n <div class=\"milestone-wrapper\" role=\"group\" aria-label=\"Learning path milestones\">\n <!-- Learning Path Header -->\n <div class=\"learning-path-header\">\n <h3 class=\"learning-path-title\">Learning Path</h3>\n <p class=\"learning-path-subtitle\">Complete {{content?.children?.length - 1 || 3}} key milestones</p>\n </div>\n <ng-container *ngIf=\"content?.children?.length; else fallbackMilestones\">\n <ul class=\"milestone-list\">\n <li *ngFor=\"let m of content?.children; let i = index\" class=\"milestone-item\"\n [class.completed]=\"m?.completionStatus === 2\" role=\"listitem\">\n <div class=\"milestone-circle\" [attr.aria-label]=\"m?.name || ('Milestone ' + (i+1))\">\n <img *ngIf=\"m?.completionStatus === 2\" src=\"assets/icons/toc/tick-orange.svg\"\n class=\"milestone-checkmark\" alt=\"Completed\" />\n <span *ngIf=\"m?.completionStatus !== 2\" class=\"milestone-index\"></span>\n </div>\n <div class=\"milestone-label\">{{ m?.name }}</div>\n </li>\n </ul>\n </ng-container>\n <ng-template #fallbackMilestones>\n <ul class=\"milestone-list\">\n <li class=\"milestone-item completed\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"Pre Assessment\">\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\n </div>\n <div class=\"milestone-label\">Pre Assessment</div>\n </li>\n <li class=\"milestone-item completed\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"1. Foundation of Workplace Ethics\">\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\n </div>\n <div class=\"milestone-label\">1. Foundation of Workplace Ethics</div>\n </li>\n <li class=\"milestone-item\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"2. Health and Productivity at Work\">\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\n </div>\n <div class=\"milestone-label\">2. Health and Productivity at Work</div>\n </li>\n <li class=\"milestone-item\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"3. Health and Productivity at Work\">\n <span class=\"milestone-index\">4</span>\n </div>\n <div class=\"milestone-label\">3. Health and Productivity at Work</div>\n </li>\n </ul>\n </ng-template>\n </div>\n</div>\n<div class=\"bggrey\">\n <div class=\"py-4 content-container\" id=\"contentContainer\" *ngIf=\"!isPreAssessment\">\n <div class=\"main-container flex flex-col gap-4\">\n <ng-container *ngIf=\"content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <div class=\"padding-left-m flex gap-4 tab-list\">\n <ng-container *ngFor=\"let type of typesOfContent\">\n <div class=\"tab-data\" (click)=\"!type.disabled && selectedTabType = type.id\"\n [ngClass]=\"{'active-tab': selectedTabType === type.id, 'disabled':type.disabled}\">\n <span>{{type.name}}</span>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"selectedTabType === 'content' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\n </ng-container>\n <ng-container\n *ngIf=\"selectedTabType === 'session' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <ws-widget-app-app-toc-sessions-new [batchData]=\"batchData\" [pathSet]=\"pathSet\" [rootId]=\"contextId\"\n [rootContentType]=\"contextPath\" [batchId]=\"batchId\" [config]=\"config\" [content]=\"content\">\n </ws-widget-app-app-toc-sessions-new>\n </ng-container>\n <ng-container *ngIf=\"content?.primaryCategory !== nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\n </ng-container>\n </div>\n </div>\n <!-- {{pathSet|json}} -->\n <ng-template #contentBlock>\n <ng-container *ngIf=\"!contentLoader\">\n <ng-container *ngIf=\"content?.children?.length; else noChildren\">\n <div class=\"content-card \"\n *ngFor=\"let card of content?.children; trackBy: contentTrackBy; let i = index;\"\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\n <!-- {{card|json}} -->\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\n [rootContentType]=\"contextPath\" [content]=\"card\" [mlCourse]=\"content\" [index]=\"i+1\"\n [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\" [batchData]=\"batchData\"\n [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\n </div>\n </ng-container>\n <ng-template #noChildren>\n <div *ngIf=\"!isPlayable\"\n class=\"ws-mat-primary-default-text ws-mat-primary-lite-background px-6 py-8 font-normal text-base noChildren\">\n The preview for this type of content is unavailable. Please click on Start button above to view.\n </div>\n <!-- <ng-container *ngIf=\"isPlayable\" [wsResolverWidget]=\"contentPlayWidgetConfig\"></ng-container> -->\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"contentLoader\">\n <ws-widget-app-toc-content-card-v2-skeleton></ws-widget-app-toc-content-card-v2-skeleton>\n </ng-container>\n </ng-template>\n <div *ngIf=\"isPreAssessment\">\n <div class=\"content-card \"\n *ngFor=\"let card of content?.preEnrolmentResources; trackBy: identifier; let i = index;\"\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\n <!-- {{card|json}} -->\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\n [rootContentType]=\"contextPath\" [isPreAssessment]=\"isPreAssessment\" [content]=\"card\"\n [mlCourse]=\"content\" [index]=\"i+1\" [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\"\n [batchData]=\"batchData\" [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\n </div>\n </div>\n</div>", styles: [".bggrey{background-color:#eff3f9}.content-container{min-height:800px}.content-accordion .content-panel{box-shadow:none}.content-accordion .content-header{padding:20px;background-color:#fff;border:none;box-shadow:none}.content-key-values{color:#0009}.content-key-values mat-icon{width:14px;height:14px;font-size:14px;color:#0006}.main-container{width:100%;box-sizing:border-box}.main-container .toc-section{display:flex;justify-content:space-between;padding-bottom:12px}.main-container .content-card{background:#fff;border:1px solid rgb(221,221,221);overflow:hidden;position:relative}.main-container .content-card.content-active{border:1px solid #1a4ca1}.main-container .noChildren{color:#222!important}@media only screen and (max-width: 959px){.main-container{width:100%;padding-right:0;margin-bottom:32px}}::ng-deep .mat-expansion-indicator{display:none!important}.mat-panel-indicator{width:28px;height:28px;font-size:28px}.tab-list .tab-data{border-radius:18px;border:1px solid rgba(0,0,0,.08);opacity:1;background-color:#e5e9ef;padding:6px 16px;cursor:pointer}.tab-list .tab-data span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:14px;font-weight:400;font-style:Regular;letter-spacing:.25px;text-align:left;line-height:20px}.tab-list .active-tab{border-radius:18px;border:1px solid rgb(27,76,161);opacity:1;background-color:#dee6f2}.tab-list .active-tab span{color:#1b4ca1}.tab-list .disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.milestone-wrapper{--milestone-size: 33px;--milestone-border: 3px;padding:16px;background:#fff;display:flex;align-items:center;margin-top:16px}.learning-path-header{padding-right:16px}.learning-path-title{font-size:18px;font-weight:700;color:#000000de;margin:0 0 4px;font-family:Lato-Bold,Lato,sans-serif}.learning-path-subtitle{font-size:14px;font-weight:400;color:#0009;margin:0;font-family:Lato-Regular,Lato,sans-serif}.milestone-list{display:flex;align-items:flex-start;justify-content:space-between;list-style:none;margin:0;gap:12px;flex:1}.milestone-item{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1 1 0;position:relative}.milestone-item:after{content:\"\";position:absolute;top:calc(var(--milestone-size) / 2);left:50%;right:-50%;height:3px;background:#e0e0e0;border-top:3px dotted #BDBDBD;background:transparent;z-index:0}.milestone-item.completed:after{background:linear-gradient(90deg,#efa34f,#f3962f);border:none}.milestone-item:last-child:after{display:none}.milestone-circle{width:var(--milestone-size);height:var(--milestone-size);min-width:var(--milestone-size);border-radius:50%;background:#fff;border:var(--milestone-border) solid #F3962F;display:flex;align-items:center;justify-content:center;z-index:1;position:relative;box-shadow:0 2px 8px #00000014;transition:all .2s ease}.milestone-item.completed .milestone-circle{background:#fff;border-color:#f3962f;box-shadow:0 4px 12px #efa34f4d}.milestone-checkmark{width:80%;height:80%;object-fit:contain}.milestone-index{font-weight:700;font-size:18px;color:#757575}.milestone-item.completed .milestone-index{color:#fff}.milestone-label{margin-top:12px;font-size:14px;line-height:1.4;color:#000000de;max-width:140px;word-wrap:break-word;white-space:normal;font-weight:500}.milestone-item:focus-within .milestone-circle,.milestone-item:hover .milestone-circle{transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #00000026}.milestone-item.completed:hover .milestone-circle{box-shadow:0 6px 20px #efa34f66}@media (max-width: 768px){.milestone-wrapper{--milestone-size: 48px;padding:20px 12px 28px}.milestone-list{gap:8px;padding:0 8px}.milestone-label{font-size:12px;max-width:100px}.milestone-index{font-size:16px}}@media (max-width: 480px){.milestone-wrapper{--milestone-size: 40px;padding:16px 8px 24px}.milestone-list{gap:6px;padding:0 4px}.milestone-label{font-size:11px;max-width:80px;margin-top:8px}.milestone-index{font-size:14px}.milestone-item:after{height:2px;border-top-width:2px}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.AppTocContentCardV2Component, selector: "ws-widget-app-toc-content-card-v2", inputs: ["content", "expandAll", "rootId", "rootContentType", "forPreview", "batchId", "componentName", "index", "pathSet", "expandActive", "hierarchyMapData", "batchData", "isPreAssessment", "baseContentReadData", "mlCourse", "parentMilestoneLocked"] }, { kind: "component", type: i6.AppTocSessionsNewComponent, selector: "ws-widget-app-app-toc-sessions-new", inputs: ["batchData", "content", "forPreview", "config", "batchId", "rootId", "rootContentType", "pathSet"] }, { kind: "component", type: i7.AppTocContentCardV2SkeletonComponent, selector: "ws-widget-app-toc-content-card-v2-skeleton" }] }); }
192
- }
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentComponent, decorators: [{
194
- type: Component,
195
- args: [{ selector: 'ws-widget-app-toc-content', template: "<div *ngIf=\"content?.courseCategory === 'Learning Pathway' && componentName !== 'viewer'\">\n <!-- Milestone / Learning Path UI -->\n <div class=\"milestone-wrapper\" role=\"group\" aria-label=\"Learning path milestones\">\n <!-- Learning Path Header -->\n <div class=\"learning-path-header\">\n <h3 class=\"learning-path-title\">Learning Path</h3>\n <p class=\"learning-path-subtitle\">Complete {{content?.children?.length - 1 || 3}} key milestones</p>\n </div>\n <ng-container *ngIf=\"content?.children?.length; else fallbackMilestones\">\n <ul class=\"milestone-list\">\n <li *ngFor=\"let m of content?.children; let i = index\" class=\"milestone-item\"\n [class.completed]=\"m?.completionStatus === 2\" role=\"listitem\">\n <div class=\"milestone-circle\" [attr.aria-label]=\"m?.name || ('Milestone ' + (i+1))\">\n <img *ngIf=\"m?.completionStatus === 2\" src=\"assets/icons/toc/tick-orange.svg\"\n class=\"milestone-checkmark\" alt=\"Completed\" />\n <span *ngIf=\"m?.completionStatus !== 2\" class=\"milestone-index\"></span>\n </div>\n <div class=\"milestone-label\">{{ m?.name }}</div>\n </li>\n </ul>\n </ng-container>\n <ng-template #fallbackMilestones>\n <ul class=\"milestone-list\">\n <li class=\"milestone-item completed\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"Pre Assessment\">\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\n </div>\n <div class=\"milestone-label\">Pre Assessment</div>\n </li>\n <li class=\"milestone-item completed\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"1. Foundation of Workplace Ethics\">\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\n </div>\n <div class=\"milestone-label\">1. Foundation of Workplace Ethics</div>\n </li>\n <li class=\"milestone-item\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"2. Health and Productivity at Work\">\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\n </div>\n <div class=\"milestone-label\">2. Health and Productivity at Work</div>\n </li>\n <li class=\"milestone-item\" role=\"listitem\">\n <div class=\"milestone-circle\" aria-label=\"3. Health and Productivity at Work\">\n <span class=\"milestone-index\">4</span>\n </div>\n <div class=\"milestone-label\">3. Health and Productivity at Work</div>\n </li>\n </ul>\n </ng-template>\n </div>\n</div>\n<div class=\"bggrey\">\n <div class=\"py-4 content-container\" id=\"contentContainer\" *ngIf=\"!isPreAssessment\">\n <div class=\"main-container flex flex-col gap-4\">\n <ng-container *ngIf=\"content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <div class=\"padding-left-m flex gap-4 tab-list\">\n <ng-container *ngFor=\"let type of typesOfContent\">\n <div class=\"tab-data\" (click)=\"!type.disabled && selectedTabType = type.id\"\n [ngClass]=\"{'active-tab': selectedTabType === type.id, 'disabled':type.disabled}\">\n <span>{{type.name}}</span>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"selectedTabType === 'content' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\n </ng-container>\n <ng-container\n *ngIf=\"selectedTabType === 'session' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <ws-widget-app-app-toc-sessions-new [batchData]=\"batchData\" [pathSet]=\"pathSet\" [rootId]=\"contextId\"\n [rootContentType]=\"contextPath\" [batchId]=\"batchId\" [config]=\"config\" [content]=\"content\">\n </ws-widget-app-app-toc-sessions-new>\n </ng-container>\n <ng-container *ngIf=\"content?.primaryCategory !== nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\n </ng-container>\n </div>\n </div>\n <!-- {{pathSet|json}} -->\n <ng-template #contentBlock>\n <ng-container *ngIf=\"!contentLoader\">\n <ng-container *ngIf=\"content?.children?.length; else noChildren\">\n <div class=\"content-card \"\n *ngFor=\"let card of content?.children; trackBy: contentTrackBy; let i = index;\"\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\n <!-- {{card|json}} -->\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\n [rootContentType]=\"contextPath\" [content]=\"card\" [mlCourse]=\"content\" [index]=\"i+1\"\n [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\" [batchData]=\"batchData\"\n [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\n </div>\n </ng-container>\n <ng-template #noChildren>\n <div *ngIf=\"!isPlayable\"\n class=\"ws-mat-primary-default-text ws-mat-primary-lite-background px-6 py-8 font-normal text-base noChildren\">\n The preview for this type of content is unavailable. Please click on Start button above to view.\n </div>\n <!-- <ng-container *ngIf=\"isPlayable\" [wsResolverWidget]=\"contentPlayWidgetConfig\"></ng-container> -->\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"contentLoader\">\n <ws-widget-app-toc-content-card-v2-skeleton></ws-widget-app-toc-content-card-v2-skeleton>\n </ng-container>\n </ng-template>\n <div *ngIf=\"isPreAssessment\">\n <div class=\"content-card \"\n *ngFor=\"let card of content?.preEnrolmentResources; trackBy: identifier; let i = index;\"\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\n <!-- {{card|json}} -->\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\n [rootContentType]=\"contextPath\" [isPreAssessment]=\"isPreAssessment\" [content]=\"card\"\n [mlCourse]=\"content\" [index]=\"i+1\" [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\"\n [batchData]=\"batchData\" [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\n </div>\n </div>\n</div>", styles: [".bggrey{background-color:#eff3f9}.content-container{min-height:800px}.content-accordion .content-panel{box-shadow:none}.content-accordion .content-header{padding:20px;background-color:#fff;border:none;box-shadow:none}.content-key-values{color:#0009}.content-key-values mat-icon{width:14px;height:14px;font-size:14px;color:#0006}.main-container{width:100%;box-sizing:border-box}.main-container .toc-section{display:flex;justify-content:space-between;padding-bottom:12px}.main-container .content-card{background:#fff;border:1px solid rgb(221,221,221);overflow:hidden;position:relative}.main-container .content-card.content-active{border:1px solid #1a4ca1}.main-container .noChildren{color:#222!important}@media only screen and (max-width: 959px){.main-container{width:100%;padding-right:0;margin-bottom:32px}}::ng-deep .mat-expansion-indicator{display:none!important}.mat-panel-indicator{width:28px;height:28px;font-size:28px}.tab-list .tab-data{border-radius:18px;border:1px solid rgba(0,0,0,.08);opacity:1;background-color:#e5e9ef;padding:6px 16px;cursor:pointer}.tab-list .tab-data span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:14px;font-weight:400;font-style:Regular;letter-spacing:.25px;text-align:left;line-height:20px}.tab-list .active-tab{border-radius:18px;border:1px solid rgb(27,76,161);opacity:1;background-color:#dee6f2}.tab-list .active-tab span{color:#1b4ca1}.tab-list .disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.milestone-wrapper{--milestone-size: 33px;--milestone-border: 3px;padding:16px;background:#fff;display:flex;align-items:center;margin-top:16px}.learning-path-header{padding-right:16px}.learning-path-title{font-size:18px;font-weight:700;color:#000000de;margin:0 0 4px;font-family:Lato-Bold,Lato,sans-serif}.learning-path-subtitle{font-size:14px;font-weight:400;color:#0009;margin:0;font-family:Lato-Regular,Lato,sans-serif}.milestone-list{display:flex;align-items:flex-start;justify-content:space-between;list-style:none;margin:0;gap:12px;flex:1}.milestone-item{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1 1 0;position:relative}.milestone-item:after{content:\"\";position:absolute;top:calc(var(--milestone-size) / 2);left:50%;right:-50%;height:3px;background:#e0e0e0;border-top:3px dotted #BDBDBD;background:transparent;z-index:0}.milestone-item.completed:after{background:linear-gradient(90deg,#efa34f,#f3962f);border:none}.milestone-item:last-child:after{display:none}.milestone-circle{width:var(--milestone-size);height:var(--milestone-size);min-width:var(--milestone-size);border-radius:50%;background:#fff;border:var(--milestone-border) solid #F3962F;display:flex;align-items:center;justify-content:center;z-index:1;position:relative;box-shadow:0 2px 8px #00000014;transition:all .2s ease}.milestone-item.completed .milestone-circle{background:#fff;border-color:#f3962f;box-shadow:0 4px 12px #efa34f4d}.milestone-checkmark{width:80%;height:80%;object-fit:contain}.milestone-index{font-weight:700;font-size:18px;color:#757575}.milestone-item.completed .milestone-index{color:#fff}.milestone-label{margin-top:12px;font-size:14px;line-height:1.4;color:#000000de;max-width:140px;word-wrap:break-word;white-space:normal;font-weight:500}.milestone-item:focus-within .milestone-circle,.milestone-item:hover .milestone-circle{transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #00000026}.milestone-item.completed:hover .milestone-circle{box-shadow:0 6px 20px #efa34f66}@media (max-width: 768px){.milestone-wrapper{--milestone-size: 48px;padding:20px 12px 28px}.milestone-list{gap:8px;padding:0 8px}.milestone-label{font-size:12px;max-width:100px}.milestone-index{font-size:16px}}@media (max-width: 480px){.milestone-wrapper{--milestone-size: 40px;padding:16px 8px 24px}.milestone-list{gap:6px;padding:0 4px}.milestone-label{font-size:11px;max-width:80px;margin-top:8px}.milestone-index{font-size:14px}.milestone-item:after{height:2px;border-top-width:2px}}\n"] }]
196
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }]; }, propDecorators: { batchId: [{
197
- type: Input
198
- }], content: [{
199
- type: Input
200
- }], forPreview: [{
201
- type: Input
202
- }], resumeData: [{
203
- type: Input
204
- }], batchData: [{
205
- type: Input
206
- }], skeletonLoader: [{
207
- type: Input
208
- }], tocStructure: [{
209
- type: Input
210
- }], config: [{
211
- type: Input
212
- }], hierarchyMapData: [{
213
- type: Input
214
- }], pathSet: [{
215
- type: Input
216
- }], componentName: [{
217
- type: Input
218
- }], isPreAssessment: [{
219
- type: Input
220
- }], baseContentReadData: [{
221
- type: Input
222
- }], contentReadData: [{
223
- type: Input
224
- }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL2FwcC10b2MtY29udGVudC9hcHAtdG9jLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1jb250ZW50L2FwcC10b2MtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUE7QUFHN0YsT0FBTyxFQUF5QixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTs7Ozs7Ozs7O0FBR3ZFLHFEQUFxRDtBQVFyRCxNQUFNLE9BQU8sc0JBQXNCO0lBaUNqQyxZQUNVLEtBQXFCLEVBQ3JCLE1BQXFCLEVBQ3JCLFNBQWdDO1FBRmhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFqQ2pDLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsZUFBVSxHQUEyQyxJQUFJLENBQUE7UUFDekQsY0FBUyxHQUFrRCxJQUFJLENBQUE7UUFDL0QsbUJBQWMsR0FBRyxLQUFLLENBQUE7UUFHdEIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBRzFCLG9CQUFlLEdBQUcsS0FBSyxDQUFBO1FBR2hDLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsNEJBQXVCLEdBQTRELElBQUksQ0FBQTtRQUN2RixxQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDckIsb0RBQW9EO1FBQzVDLHNCQUFpQixHQUF3QixJQUFJLENBQUE7UUFDN0MsMkJBQXNCLEdBQXdCLElBQUksQ0FBQTtRQUMxRCxtQkFBYyxHQUFnQyxFQUFFLENBQUE7UUFDaEQsY0FBUyxHQUFHLEtBQUssQ0FBQTtRQUNqQixpQkFBWSxHQUFHLEtBQUssQ0FBQTtRQUdwQixrQkFBYSxHQUFHLEtBQUssQ0FBQTtRQUdyQixvQkFBZSxHQUFRLFNBQVMsQ0FBQTtRQUNoQyxjQUFTLEdBQVMsU0FBUyxDQUFBO1FBQzNCLGtCQUFhLEdBQUcsQ0FBQyxDQUFBO1FBT2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUE7WUFDckIsK0JBQStCO1FBQ2pDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTiw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RSwwQ0FBMEM7WUFDMUMsOENBQThDO1lBQzlDLDhEQUE4RDtZQUU5RCx1REFBdUQ7WUFDdkQsMEdBQTBHO1lBQzFHLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLHFCQUFxQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsS0FBSyxRQUFRLEVBQUU7Z0JBQ2pILElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQTthQUN6RjtZQUNELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDN0MsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUNqRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3pDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtZQUN6RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQ3JELElBQUcsYUFBYSxLQUFLLE1BQU0sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUE7YUFDNUI7WUFDRCxJQUFJLFNBQVMsSUFBSSxXQUFXLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTthQUMvQjtZQUNELElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO2FBQ3ZCO1lBQ0QsSUFBRyxlQUFlLEVBQUc7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTthQUNuSDtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDckIsQ0FBQyxDQUFDLENBQUE7U0FDSDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFBO1FBQzFCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUE7UUFDcEQsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQTtTQUNsRTtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEI7Z0JBQ0UsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLFFBQVEsRUFBRSxLQUFLO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsUUFBUSxFQUFFLEtBQUs7YUFDaEI7U0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUE7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsRCxJQUFJLEdBQUcsS0FBSyxnQkFBZ0IsSUFBSSxHQUFHLEtBQUssZ0JBQWdCLEVBQUU7aUJBQ3pEO3FCQUFNO29CQUVMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUNqRTtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUE7b0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDeEMsQ0FBQyxFQUFVLElBQUksQ0FBQyxDQUFBO2FBQ2pCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7YUFDdEY7U0FDRjtJQUNILENBQUM7SUFFTyxRQUFRLENBQUMsS0FBVztRQUMxQix5R0FBeUc7UUFDekcsb0RBQW9EO1FBQ3BELGtDQUFrQztRQUNsQyxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQTtnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQTthQUNoRDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLE1BQU0sUUFBUSxJQUFJLE9BQU8sRUFBRTtZQUM5QixJQUFJLFFBQVEsS0FBSyxZQUFZLEVBQUU7Z0JBQzdCLCtCQUErQjthQUNoQztTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDcEMsQ0FBQztJQUVELHVDQUF1QztJQUN2QywrQkFBK0I7SUFDL0IsSUFBSTtJQUVKLDRCQUE0QjtJQUM1Qiw2QkFBNkI7SUFDN0IsMEJBQTBCO0lBQzFCLHlFQUF5RTtJQUN6RSx1REFBdUQ7SUFDdkQsMkRBQTJEO0lBQzNELGVBQWU7SUFDZixvREFBb0Q7SUFDcEQsUUFBUTtJQUNSLGtEQUFrRDtJQUNsRCxhQUFhO0lBQ2Isb0ZBQW9GO0lBQ3BGLDBEQUEwRDtJQUMxRCxNQUFNO0lBQ04sSUFBSTtJQUVKLHNDQUFzQztJQUN0QyxzQ0FBc0M7SUFDdEMscUVBQXFFO0lBQ3JFLDRDQUE0QztJQUM1QyxpRkFBaUY7SUFDakYsbURBQW1EO0lBQ25ELGtEQUFrRDtJQUNsRCwrQ0FBK0M7SUFDL0MsWUFBWTtJQUNaLE1BQU07SUFDTixJQUFJO0lBRUosaURBQWlEO0lBQ2pELGlCQUFpQjtJQUNqQixrREFBa0Q7SUFDbEQsbUZBQW1GO0lBQ25GLHVGQUF1RjtJQUN2RixlQUFlO0lBQ2Ysd0NBQXdDO0lBQ3hDLGlGQUFpRjtJQUNqRixRQUFRO0lBQ1IsTUFBTTtJQUVOLHNGQUFzRjtJQUN0RixhQUFhO0lBQ2IsdUNBQXVDO0lBQ3ZDLGlGQUFpRjtJQUNqRixNQUFNO0lBQ04sSUFBSTtJQUVKLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDckM7UUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDMUM7SUFDSCxDQUFDOytHQXpNVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixzZkNkbkMsbXFQQXVITTs7NEZEekdPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSwyQkFBMkI7cUtBTTVCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIERhdGEgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBOc1dpZGdldFJlc29sdmVyIH0gZnJvbSAnQHN1bmJpcmQtY2IvcmVzb2x2ZXItdjInXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIE5zQ29udGVudCB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG4vLyBpbXBvcnQgeyBOc0FwcFRvYyB9IGZyb20gJy4uL21vZGVscy9hcHAtdG9jLm1vZGVsJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtYXBwLXRvYy1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC10b2MtY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC10b2MtY29udGVudC5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEFwcFRvY0NvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYmF0Y2hJZCE6IHN0cmluZ1xuICBASW5wdXQoKSBjb250ZW50ITogTnNDb250ZW50LklDb250ZW50XG4gIEBJbnB1dCgpIGZvclByZXZpZXcgPSBmYWxzZVxuICBASW5wdXQoKSByZXN1bWVEYXRhOiBOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhIHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgYmF0Y2hEYXRhOiAvKipOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlICovIGFueSB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIHNrZWxldG9uTG9hZGVyID0gZmFsc2VcbiAgQElucHV0KCkgdG9jU3RydWN0dXJlOiBhbnlcbiAgQElucHV0KCkgY29uZmlnOiBhbnlcbiAgQElucHV0KCkgaGllcmFyY2h5TWFwRGF0YTogYW55ID0ge31cbiAgQElucHV0KCkgcGF0aFNldDogYW55XG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWUhOiBzdHJpbmdcbiAgQElucHV0KCkgaXNQcmVBc3Nlc3NtZW50ID0gZmFsc2VcbiAgQElucHV0KCkgYmFzZUNvbnRlbnRSZWFkRGF0YSE6IGFueVxuICBASW5wdXQoKSBjb250ZW50UmVhZERhdGEhOiBhbnlcbiAgaXNQbGF5YWJsZSA9IGZhbHNlXG4gIGNvbnRlbnRQbGF5V2lkZ2V0Q29uZmlnOiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoVHlwZWREYXRhPGFueT4gfCBudWxsID0gbnVsbFxuICBkZWZhdWx0VGh1bWJuYWlsID0gJydcbiAgLy8gZXJyb3JDb2RlOiBOc0FwcFRvYy5FV3NUb2NFcnJvckNvZGUgfCBudWxsID0gbnVsbFxuICBwcml2YXRlIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBwcml2YXRlIHJvdXRlUXVlcnlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIGNvbnRlbnRQYXJlbnRzOiBOc0NvbnRlbnQuSUNvbnRlbnRNaW5pbWFsW10gPSBbXVxuICBleHBhbmRBbGwgPSBmYWxzZVxuICBleHBhbmRQYXJ0T2YgPSBmYWxzZVxuICBjb250ZXh0SWQhOiBzdHJpbmdcbiAgY29udGV4dFBhdGghOiBzdHJpbmdcbiAgY29udGVudExvYWRlciA9IGZhbHNlXG5cbiAgdHlwZXNPZkNvbnRlbnQ6IGFueVxuICBzZWxlY3RlZFRhYlR5cGU6IGFueSA9ICdjb250ZW50J1xuICBuc0NvbnRlbnQ6IGFueSA9ICBOc0NvbnRlbnRcbiAgb3RoZXJSZXNvdXJzZSA9IDBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRvY1N2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudG9jU3ZjLnJlc3VtZURhdGEuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5yZXN1bWVEYXRhID0gcmVzXG4gICAgICAvLyB0aGlzLmdldExhc3RQbGF5ZWRSZXNvdXJjZSgpXG4gICAgfSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIHRoaXMuZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvYXV0aG9yLycpXG4gICAgdGhpcy5yb3V0ZVF1ZXJ5U3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShxUGFyYW1zTWFwID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdxUGFyYW1zTWFwLS0nLCBxUGFyYW1zTWFwKVxuICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuY29udGVudC0tJywgdGhpcy5jb250ZW50KVxuICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuaGllcmFyY2h5TWFwRGF0YScsIHRoaXMuaGllcmFyY2h5TWFwRGF0YSlcbiAgICAgIFxuICAgICAgLy8gUGFyc2UgcHJlRW5yb2xtZW50UmVzb3VyY2VzIGlmIGl0IGV4aXN0cyBhcyBhIHN0cmluZ1xuICAgICAgLy8gTm90ZTogVGhpcyBpcyBzZXBhcmF0ZSBmcm9tIHByZWxpbWluYXJ5IGFzc2Vzc21lbnQgd2hpY2ggaXMgaW4gY2hpbGRyZW4gYXJyYXkgd2l0aCBpc1ByZUFzc2Vzc21lbnQgZmxhZ1xuICAgICAgaWYodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudD8ucHJlRW5yb2xtZW50UmVzb3VyY2VzICYmIHR5cGVvZiB0aGlzLmNvbnRlbnQ/LnByZUVucm9sbWVudFJlc291cmNlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5jb250ZW50WydwcmVFbnJvbG1lbnRSZXNvdXJjZXMnXSA9ICBKU09OLnBhcnNlKHRoaXMuY29udGVudD8ucHJlRW5yb2xtZW50UmVzb3VyY2VzKVxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dElkID0gcVBhcmFtc01hcC5nZXQoJ2NvbnRleHRJZCcpXG4gICAgICBjb25zdCBjb250ZXh0UGF0aCA9IHFQYXJhbXNNYXAuZ2V0KCdjb250ZXh0UGF0aCcpXG4gICAgICBjb25zdCBiYXRjaElkID0gcVBhcmFtc01hcC5nZXQoJ2JhdGNoSWQnKVxuICAgICAgY29uc3QgcHJpbWFyeUNhdGVnb3J5ID0gcVBhcmFtc01hcC5nZXQoJ3ByaW1hcnlDYXRlZ29yeScpXG4gICAgICBjb25zdCBwcmVBc3Nlc3NtZW50ID0gcVBhcmFtc01hcC5nZXQoJ3ByZUFzc2Vzc21lbnQnKVxuICAgICAgaWYocHJlQXNzZXNzbWVudCA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuaXNQcmVBc3Nlc3NtZW50ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGNvbnRleHRJZCAmJiBjb250ZXh0UGF0aCkge1xuICAgICAgICB0aGlzLmNvbnRleHRJZCA9IGNvbnRleHRJZFxuICAgICAgICB0aGlzLmNvbnRleHRQYXRoID0gY29udGV4dFBhdGhcbiAgICAgIH1cbiAgICAgIGlmIChiYXRjaElkKSB7XG4gICAgICAgIHRoaXMuYmF0Y2hJZCA9IGJhdGNoSWRcbiAgICAgIH1cbiAgICAgIGlmKHByaW1hcnlDYXRlZ29yeSApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYlR5cGUgPSBwcmltYXJ5Q2F0ZWdvcnkgPT09IHRoaXMubnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OID8gJ3Nlc3Npb24nIDogJ2NvbnRlbnQnXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodGhpcy5yb3V0ZSAmJiB0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKChkYXRhOiBEYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdERhdGEoZGF0YSlcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMudG9jU3ZjLmNvbnRlbnRMb2FkZXIkLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY29udGVudExvYWRlciA9IHZhbFxuICAgIH0pXG4gICAgY29uc3QgaW5zdGFuY2VDb25maWcgPSB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZ1xuICAgIGlmIChpbnN0YW5jZUNvbmZpZykge1xuICAgICAgdGhpcy5kZWZhdWx0VGh1bWJuYWlsID0gaW5zdGFuY2VDb25maWcubG9nb3MuZGVmYXVsdENvbnRlbnQgfHwgJydcbiAgICB9XG4gICAgdGhpcy50eXBlc09mQ29udGVudCA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1NlbGYtcGFjZWQnLFxuICAgICAgICBpZDogJ2NvbnRlbnQnLFxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnSW5zdHJ1Y3Rvci1sZWQnLFxuICAgICAgICBpZDogJ3Nlc3Npb24nLFxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICB9LFxuICAgIF1cbiAgICB0aGlzLm90aGVyUmVzb3Vyc2UgPSAwXG4gICAgaWYgKHRoaXMudG9jU3RydWN0dXJlKSB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnRvY1N0cnVjdHVyZSkuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGVsZSA9PT0gJ29mZmxpbmVTZXNzaW9uJyB8fCBlbGUgPT09ICdsZWFybmluZ01vZHVsZScpIHtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIHRoaXMub3RoZXJSZXNvdXJzZSA9IHRoaXMub3RoZXJSZXNvdXJzZSArIHRoaXMudG9jU3RydWN0dXJlW2VsZV1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmICghdGhpcy5vdGhlclJlc291cnNlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJUeXBlID0gJ3Nlc3Npb24nXG4gICAgICAgICAgdGhpcy50eXBlc09mQ29udGVudFswXS5kaXNhYmxlZCA9IHRydWVcbiAgICAgICAgfSwgICAgICAgICAxMDAwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50eXBlc09mQ29udGVudFsxXS5kaXNhYmxlZCA9ICB0aGlzLnRvY1N0cnVjdHVyZVsnb2ZmbGluZVNlc3Npb24nXSA/IGZhbHNlIDogdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdERhdGEoX2RhdGE6IERhdGEpIHtcbiAgICAvLyBub3QgcmVxdWlyZWQgaW5pdCBub3cgYmVjYXVzZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgIGhhc2htYXAgYWxyZWFkeSBoYXMgbWFwcGVkIHRoZSBjb21wbGV0aW9uIHBlcmNlbnRcbiAgICAvLyBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU3ZjLmluaXREYXRhKGRhdGEsIHRydWUpXG4gICAgLy8gdGhpcy5jb250ZW50ID0gaW5pdERhdGEuY29udGVudFxuICAgIC8vIHRoaXMuZXJyb3JDb2RlID0gaW5pdERhdGEuZXJyb3JDb2RlXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgaWYgKCF0aGlzLmNvbnRleHRJZCB8fCAhdGhpcy5jb250ZXh0UGF0aCkge1xuICAgICAgICB0aGlzLmNvbnRleHRJZCA9IHRoaXMuY29udGVudC5pZGVudGlmaWVyXG4gICAgICAgIHRoaXMuY29udGV4dFBhdGggPSB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gY2hhbmdlcykge1xuICAgICAgaWYgKHByb3BlcnR5ID09PSAncmVzdW1lRGF0YScpIHtcbiAgICAgICAgLy8gdGhpcy5nZXRMYXN0UGxheWVkUmVzb3VyY2UoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBpc0Vucm9sbGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJhdGNoSWQgPyB0cnVlIDogZmFsc2VcbiAgfVxuXG4gIC8vIHByaXZhdGUgcHJvY2Vzc0NvbGxlY3Rpb25Gb3JUcmVlKCkge1xuICAvLyAgICAgdGhpcy5wYXRoU2V0ID0gbmV3IFNldCgpXG4gIC8vIH1cblxuICAvLyBnZXRMYXN0UGxheWVkUmVzb3VyY2UoKSB7XG4gIC8vICAgbGV0IGZpcnN0UGxheWFibGVDb250ZW50XG4gIC8vICAgbGV0IHJlc3VtZURhdGFWMjogYW55XG4gIC8vICAgaWYgKHRoaXMucmVzdW1lRGF0YSAmJiB0aGlzLnJlc3VtZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmNvbnRlbnQpIHtcbiAgLy8gICAgIGlmICh0aGlzLmNvbnRlbnQuY29tcGxldGlvblBlcmNlbnRhZ2UgPT09IDEwMCkge1xuICAvLyAgICAgICByZXN1bWVEYXRhVjIgPSB0aGlzLmdldFJlc3VtZURhdGFGcm9tTGlzdCgnc3RhcnQnKVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgcmVzdW1lRGF0YVYyID0gdGhpcy5nZXRSZXN1bWVEYXRhRnJvbUxpc3QoKVxuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5leHBhbmRUaGVQYXRoKHJlc3VtZURhdGFWMi5pZGVudGlmaWVyKVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBmaXJzdFBsYXlhYmxlQ29udGVudCA9IHRoaXMuY29udGVudFN2Yy5nZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkodGhpcy5jb250ZW50KVxuICAvLyAgICAgdGhpcy5leHBhbmRUaGVQYXRoKGZpcnN0UGxheWFibGVDb250ZW50LmlkZW50aWZpZXIpXG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gZXhwYW5kVGhlUGF0aChyZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAodGhpcy5jb250ZW50ICYmIHJlc291cmNlSWQpIHtcbiAgLy8gICAgIGNvbnN0IHBhdGggPSB0aGlzLnV0aWxpdHlTdmMuZ2V0UGF0aCh0aGlzLmNvbnRlbnQsIHJlc291cmNlSWQpXG4gIC8vICAgICAvLyBjb25zb2xlLmxvZygnUGF0aCA6OiA6OiA6ICcsIHBhdGgpXG4gIC8vICAgICB0aGlzLnBhdGhTZXQgPSBuZXcgU2V0KHBhdGgubWFwKCh1OiB7IGlkZW50aWZpZXI6IGFueSB9KSA9PiB1LmlkZW50aWZpZXIpKVxuICAvLyAgICAgLy8gY29uc29sZS5sb2coJ3BhdGhTZXQgOjo6ICcsIHRoaXMucGF0aFNldClcbiAgLy8gICAgIC8vIHBhdGguZm9yRWFjaCgobm9kZTogSVZpZXdlclRvY0NhcmQpID0+IHtcbiAgLy8gICAgIC8vICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5leHBhbmQobm9kZSlcbiAgLy8gICAgIC8vIH0pXG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gcHJpdmF0ZSBnZXRSZXN1bWVEYXRhRnJvbUxpc3QodHlwZT86IHN0cmluZykge1xuICAvLyAgIGlmICghdHlwZSkge1xuICAvLyAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAvLyAgICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLnJlc3VtZURhdGEgJiYgdGhpcy5yZXN1bWVEYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PlxuICAvLyBuZXcgRGF0ZShiLmxhc3RBY2Nlc3NUaW1lKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmxhc3RBY2Nlc3NUaW1lKS5nZXRUaW1lKCkpLnNoaWZ0KClcbiAgLy8gICAgIHJldHVybiB7XG4gIC8vICAgICAgIGlkZW50aWZpZXI6IGxhc3RJdGVtLmNvbnRlbnRJZCxcbiAgLy8gICAgICAgbWltZVR5cGU6IGxhc3RJdGVtLnByb2dyZXNzZGV0YWlscyAmJiBsYXN0SXRlbS5wcm9ncmVzc2RldGFpbHMubWltZVR5cGUsXG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5yZXN1bWVEYXRhICYmIHRoaXMucmVzdW1lRGF0YS5sZW5ndGggJiYgdGhpcy5yZXN1bWVEYXRhWzBdXG4gIC8vICAgcmV0dXJuIHtcbiAgLy8gICAgIGlkZW50aWZpZXI6IGZpcnN0SXRlbS5jb250ZW50SWQsXG4gIC8vICAgICBtaW1lVHlwZTogZmlyc3RJdGVtLnByb2dyZXNzZGV0YWlscyAmJiBmaXJzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzLm1pbWVUeXBlLFxuICAvLyAgIH1cbiAgLy8gfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gICAgaWYgKHRoaXMucm91dGVRdWVyeVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yb3V0ZVF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJjb250ZW50Py5jb3Vyc2VDYXRlZ29yeSA9PT0gJ0xlYXJuaW5nIFBhdGh3YXknICYmICBjb21wb25lbnROYW1lICE9PSAndmlld2VyJ1wiPlxuICAgIDwhLS0gTWlsZXN0b25lIC8gTGVhcm5pbmcgUGF0aCBVSSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLXdyYXBwZXJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiTGVhcm5pbmcgcGF0aCBtaWxlc3RvbmVzXCI+XG4gICAgICAgIDwhLS0gTGVhcm5pbmcgUGF0aCBIZWFkZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWFybmluZy1wYXRoLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibGVhcm5pbmctcGF0aC10aXRsZVwiPkxlYXJuaW5nIFBhdGg8L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJsZWFybmluZy1wYXRoLXN1YnRpdGxlXCI+Q29tcGxldGUge3tjb250ZW50Py5jaGlsZHJlbj8ubGVuZ3RoIC0gMSB8fCAzfX0ga2V5IG1pbGVzdG9uZXM8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBmYWxsYmFja01pbGVzdG9uZXNcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm1pbGVzdG9uZS1saXN0XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtIG9mIGNvbnRlbnQ/LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJtaWxlc3RvbmUtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jb21wbGV0ZWRdPVwibT8uY29tcGxldGlvblN0YXR1cyA9PT0gMlwiIHJvbGU9XCJsaXN0aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWNpcmNsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwibT8ubmFtZSB8fCAoJ01pbGVzdG9uZSAnICsgKGkrMSkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibT8uY29tcGxldGlvblN0YXR1cyA9PT0gMlwiIHNyYz1cImFzc2V0cy9pY29ucy90b2MvdGljay1vcmFuZ2Uuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbGVzdG9uZS1jaGVja21hcmtcIiBhbHQ9XCJDb21wbGV0ZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtPy5jb21wbGV0aW9uU3RhdHVzICE9PSAyXCIgY2xhc3M9XCJtaWxlc3RvbmUtaW5kZXhcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWxhYmVsXCI+e3sgbT8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmYWxsYmFja01pbGVzdG9uZXM+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJtaWxlc3RvbmUtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1pbGVzdG9uZS1pdGVtIGNvbXBsZXRlZFwiIHJvbGU9XCJsaXN0aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWNpcmNsZVwiIGFyaWEtbGFiZWw9XCJQcmUgQXNzZXNzbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvdG9jL3RpY2stb3JhbmdlLnN2Z1wiIGNsYXNzPVwibWlsZXN0b25lLWNoZWNrbWFya1wiIGFsdD1cIkNvbXBsZXRlZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWxhYmVsXCI+UHJlIEFzc2Vzc21lbnQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1pbGVzdG9uZS1pdGVtIGNvbXBsZXRlZFwiIHJvbGU9XCJsaXN0aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWNpcmNsZVwiIGFyaWEtbGFiZWw9XCIxLiBGb3VuZGF0aW9uIG9mIFdvcmtwbGFjZSBFdGhpY3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL3RvYy90aWNrLW9yYW5nZS5zdmdcIiBjbGFzcz1cIm1pbGVzdG9uZS1jaGVja21hcmtcIiBhbHQ9XCJDb21wbGV0ZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1sYWJlbFwiPjEuIEZvdW5kYXRpb24gb2YgV29ya3BsYWNlIEV0aGljczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWlsZXN0b25lLWl0ZW1cIiByb2xlPVwibGlzdGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1jaXJjbGVcIiBhcmlhLWxhYmVsPVwiMi4gSGVhbHRoIGFuZCBQcm9kdWN0aXZpdHkgYXQgV29ya1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvdG9jL3RpY2stb3JhbmdlLnN2Z1wiIGNsYXNzPVwibWlsZXN0b25lLWNoZWNrbWFya1wiIGFsdD1cIkNvbXBsZXRlZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWxhYmVsXCI+Mi4gSGVhbHRoIGFuZCBQcm9kdWN0aXZpdHkgYXQgV29yazwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWlsZXN0b25lLWl0ZW1cIiByb2xlPVwibGlzdGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1jaXJjbGVcIiBhcmlhLWxhYmVsPVwiMy4gSGVhbHRoIGFuZCBQcm9kdWN0aXZpdHkgYXQgV29ya1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWxlc3RvbmUtaW5kZXhcIj40PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1sYWJlbFwiPjMuIEhlYWx0aCBhbmQgUHJvZHVjdGl2aXR5IGF0IFdvcms8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImJnZ3JleVwiPlxuICAgIDxkaXYgY2xhc3M9XCJweS00IGNvbnRlbnQtY29udGFpbmVyXCIgaWQ9XCJjb250ZW50Q29udGFpbmVyXCIgKm5nSWY9XCIhaXNQcmVBc3Nlc3NtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRhaW5lciBmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSBuc0NvbnRlbnQ/LkVQcmltYXJ5Q2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWRkaW5nLWxlZnQtbSBmbGV4IGdhcC00IHRhYi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNPZkNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItZGF0YVwiIChjbGljayk9XCIhdHlwZS5kaXNhYmxlZCAmJiBzZWxlY3RlZFRhYlR5cGUgPSB0eXBlLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZS10YWInOiBzZWxlY3RlZFRhYlR5cGUgPT09IHR5cGUuaWQsICdkaXNhYmxlZCc6dHlwZS5kaXNhYmxlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3R5cGUubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFRhYlR5cGUgPT09ICdjb250ZW50JyAmJiBjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgPT09IG5zQ29udGVudD8uRVByaW1hcnlDYXRlZ29yeT8uQkxFTkRFRF9QUk9HUkFNXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRUYWJUeXBlID09PSAnc2Vzc2lvbicgJiYgY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSBuc0NvbnRlbnQ/LkVQcmltYXJ5Q2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTVwiPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLWFwcC10b2Mtc2Vzc2lvbnMtbmV3IFtiYXRjaERhdGFdPVwiYmF0Y2hEYXRhXCIgW3BhdGhTZXRdPVwicGF0aFNldFwiIFtyb290SWRdPVwiY29udGV4dElkXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvb3RDb250ZW50VHlwZV09XCJjb250ZXh0UGF0aFwiIFtiYXRjaElkXT1cImJhdGNoSWRcIiBbY29uZmlnXT1cImNvbmZpZ1wiIFtjb250ZW50XT1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1hcHAtYXBwLXRvYy1zZXNzaW9ucy1uZXc+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgIT09IG5zQ29udGVudD8uRVByaW1hcnlDYXRlZ29yeT8uQkxFTkRFRF9QUk9HUkFNXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIHt7cGF0aFNldHxqc29ufX0gLS0+XG4gICAgPG5nLXRlbXBsYXRlICNjb250ZW50QmxvY2s+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29udGVudExvYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugbm9DaGlsZHJlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNhcmQgXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgY29udGVudD8uY2hpbGRyZW47IHRyYWNrQnk6IGNvbnRlbnRUcmFja0J5OyBsZXQgaSA9IGluZGV4O1wiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NvbnRlbnQtYWN0aXZlJzogcGF0aFNldCAmJiBwYXRoU2V0LmhhcyhjYXJkLmlkZW50aWZpZXIpICAmJiBpc0Vucm9sbGVkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIHt7Y2FyZHxqc29ufX0gLS0+XG4gICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy1jb250ZW50LWNhcmQtdjIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtleHBhbmRBbGxdPVwiZXhwYW5kQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIiBbZXhwYW5kQWN0aXZlXT1cInRydWVcIiBbcm9vdElkXT1cImNvbnRleHRJZFwiIFtiYXRjaElkXT1cImJhdGNoSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Jvb3RDb250ZW50VHlwZV09XCJjb250ZXh0UGF0aFwiIFtjb250ZW50XT1cImNhcmRcIiBbbWxDb3Vyc2VdPVwiY29udGVudFwiIFtpbmRleF09XCJpKzFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhTZXRdPVwicGF0aFNldFwiIFtoaWVyYXJjaHlNYXBEYXRhXT1cImhpZXJhcmNoeU1hcERhdGFcIiBbYmF0Y2hEYXRhXT1cImJhdGNoRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmFzZUNvbnRlbnRSZWFkRGF0YV09XCJiYXNlQ29udGVudFJlYWREYXRhXCI+PC93cy13aWRnZXQtYXBwLXRvYy1jb250ZW50LWNhcmQtdjI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGlsZHJlbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzUGxheWFibGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LWRlZmF1bHQtdGV4dCB3cy1tYXQtcHJpbWFyeS1saXRlLWJhY2tncm91bmQgcHgtNiBweS04IGZvbnQtbm9ybWFsIHRleHQtYmFzZSBub0NoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aWV3IGZvciB0aGlzIHR5cGUgb2YgY29udGVudCBpcyB1bmF2YWlsYWJsZS4gUGxlYXNlIGNsaWNrIG9uIFN0YXJ0IGJ1dHRvbiBhYm92ZSB0byB2aWV3LlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUGxheWFibGVcIiBbd3NSZXNvbHZlcldpZGdldF09XCJjb250ZW50UGxheVdpZGdldENvbmZpZ1wiPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50TG9hZGVyXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LWFwcC10b2MtY29udGVudC1jYXJkLXYyLXNrZWxldG9uPjwvd3Mtd2lkZ2V0LWFwcC10b2MtY29udGVudC1jYXJkLXYyLXNrZWxldG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJpc1ByZUFzc2Vzc21lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2FyZCBcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgY29udGVudD8ucHJlRW5yb2xtZW50UmVzb3VyY2VzOyB0cmFja0J5OiBpZGVudGlmaWVyOyBsZXQgaSA9IGluZGV4O1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjb250ZW50LWFjdGl2ZSc6IHBhdGhTZXQgJiYgcGF0aFNldC5oYXMoY2FyZC5pZGVudGlmaWVyKSAgJiYgaXNFbnJvbGxlZH1cIj5cbiAgICAgICAgICAgIDwhLS0ge3tjYXJkfGpzb259fSAtLT5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy1jb250ZW50LWNhcmQtdjIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtleHBhbmRBbGxdPVwiZXhwYW5kQWxsXCJcbiAgICAgICAgICAgICAgICBbY29tcG9uZW50TmFtZV09XCJjb21wb25lbnROYW1lXCIgW2V4cGFuZEFjdGl2ZV09XCJ0cnVlXCIgW3Jvb3RJZF09XCJjb250ZXh0SWRcIiBbYmF0Y2hJZF09XCJiYXRjaElkXCJcbiAgICAgICAgICAgICAgICBbcm9vdENvbnRlbnRUeXBlXT1cImNvbnRleHRQYXRoXCIgW2lzUHJlQXNzZXNzbWVudF09XCJpc1ByZUFzc2Vzc21lbnRcIiBbY29udGVudF09XCJjYXJkXCJcbiAgICAgICAgICAgICAgICBbbWxDb3Vyc2VdPVwiY29udGVudFwiIFtpbmRleF09XCJpKzFcIiBbcGF0aFNldF09XCJwYXRoU2V0XCIgW2hpZXJhcmNoeU1hcERhdGFdPVwiaGllcmFyY2h5TWFwRGF0YVwiXG4gICAgICAgICAgICAgICAgW2JhdGNoRGF0YV09XCJiYXRjaERhdGFcIiBbYmFzZUNvbnRlbnRSZWFkRGF0YV09XCJiYXNlQ29udGVudFJlYWREYXRhXCI+PC93cy13aWRnZXQtYXBwLXRvYy1jb250ZW50LWNhcmQtdjI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
1
+ import { Component, Input } from '@angular/core';
2
+ import { NsContent } from '@sunbird-cb/utils-v2';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "../../../../services/app-toc.service";
6
+ import * as i3 from "@sunbird-cb/utils-v2";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "../app-toc-content-card-v2/app-toc-content-card-v2.component";
9
+ import * as i6 from "../app-toc-sessions-new/app-toc-sessions-new.component";
10
+ import * as i7 from "../app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component";
11
+ // import { NsAppToc } from '../models/app-toc.model'
12
+ export class AppTocContentComponent {
13
+ constructor(route, tocSvc, configSvc) {
14
+ this.route = route;
15
+ this.tocSvc = tocSvc;
16
+ this.configSvc = configSvc;
17
+ this.forPreview = false;
18
+ this.resumeData = null;
19
+ this.batchData = null;
20
+ this.skeletonLoader = false;
21
+ this.hierarchyMapData = {};
22
+ this.isPreAssessment = false;
23
+ this.isPlayable = false;
24
+ this.contentPlayWidgetConfig = null;
25
+ this.defaultThumbnail = '';
26
+ // errorCode: NsAppToc.EWsTocErrorCode | null = null
27
+ this.routeSubscription = null;
28
+ this.routeQuerySubscription = null;
29
+ this.contentParents = [];
30
+ this.expandAll = false;
31
+ this.expandPartOf = false;
32
+ this.contentLoader = false;
33
+ this.selectedTabType = 'content';
34
+ this.nsContent = NsContent;
35
+ this.otherResourse = 0;
36
+ this.tocSvc.resumeData.subscribe((res) => {
37
+ this.resumeData = res;
38
+ // this.getLastPlayedResource()
39
+ });
40
+ }
41
+ ngOnInit() {
42
+ // this.forPreview = window.location.href.includes('/author/')
43
+ this.routeQuerySubscription = this.route.queryParamMap.subscribe(qParamsMap => {
44
+ // console.log('qParamsMap--', qParamsMap)
45
+ // console.log('this.content--', this.content)
46
+ // console.log('this.hierarchyMapData', this.hierarchyMapData)
47
+ // Parse preEnrolmentResources if it exists as a string
48
+ // Note: This is separate from preliminary assessment which is in children array with isPreAssessment flag
49
+ if (this.content && this.content?.preEnrolmentResources && typeof this.content?.preEnrolmentResources === 'string') {
50
+ this.content['preEnrolmentResources'] = JSON.parse(this.content?.preEnrolmentResources);
51
+ }
52
+ const contextId = qParamsMap.get('contextId');
53
+ const contextPath = qParamsMap.get('contextPath');
54
+ const batchId = qParamsMap.get('batchId');
55
+ const primaryCategory = qParamsMap.get('primaryCategory');
56
+ const preAssessment = qParamsMap.get('preAssessment');
57
+ if (preAssessment === 'true') {
58
+ this.isPreAssessment = true;
59
+ }
60
+ if (contextId && contextPath) {
61
+ this.contextId = contextId;
62
+ this.contextPath = contextPath;
63
+ }
64
+ if (batchId) {
65
+ this.batchId = batchId;
66
+ }
67
+ if (primaryCategory) {
68
+ this.selectedTabType = primaryCategory === this.nsContent.EPrimaryCategory.OFFLINE_SESSION ? 'session' : 'content';
69
+ }
70
+ });
71
+ if (this.route && this.route.parent) {
72
+ this.routeSubscription = this.route.parent.data.subscribe((data) => {
73
+ this.initData(data);
74
+ });
75
+ }
76
+ this.tocSvc.contentLoader$.subscribe((val) => {
77
+ this.contentLoader = val;
78
+ });
79
+ const instanceConfig = this.configSvc.instanceConfig;
80
+ if (instanceConfig) {
81
+ this.defaultThumbnail = instanceConfig.logos.defaultContent || '';
82
+ }
83
+ this.typesOfContent = [
84
+ {
85
+ name: 'Self-paced',
86
+ id: 'content',
87
+ disabled: false,
88
+ },
89
+ {
90
+ name: 'Instructor-led',
91
+ id: 'session',
92
+ disabled: false,
93
+ },
94
+ ];
95
+ this.otherResourse = 0;
96
+ if (this.tocStructure) {
97
+ Object.keys(this.tocStructure).forEach((ele) => {
98
+ if (ele === 'offlineSession' || ele === 'learningModule') {
99
+ }
100
+ else {
101
+ this.otherResourse = this.otherResourse + this.tocStructure[ele];
102
+ }
103
+ });
104
+ if (!this.otherResourse) {
105
+ setTimeout(() => {
106
+ this.selectedTabType = 'session';
107
+ this.typesOfContent[0].disabled = true;
108
+ }, 1000);
109
+ }
110
+ else {
111
+ this.typesOfContent[1].disabled = this.tocStructure['offlineSession'] ? false : true;
112
+ }
113
+ }
114
+ }
115
+ initData(_data) {
116
+ // not required init now because new implementation of hashmap already has mapped the completion percent
117
+ // const initData = this.tocSvc.initData(data, true)
118
+ // this.content = initData.content
119
+ // this.errorCode = initData.errorCode
120
+ if (this.content) {
121
+ if (!this.contextId || !this.contextPath) {
122
+ this.contextId = this.content.identifier;
123
+ this.contextPath = this.content.primaryCategory;
124
+ }
125
+ }
126
+ }
127
+ ngOnChanges(changes) {
128
+ for (const property in changes) {
129
+ if (property === 'resumeData') {
130
+ // this.getLastPlayedResource()
131
+ }
132
+ }
133
+ }
134
+ get isEnrolled() {
135
+ return this.batchId ? true : false;
136
+ }
137
+ // private processCollectionForTree() {
138
+ // this.pathSet = new Set()
139
+ // }
140
+ // getLastPlayedResource() {
141
+ // let firstPlayableContent
142
+ // let resumeDataV2: any
143
+ // if (this.resumeData && this.resumeData.length > 0 && this.content) {
144
+ // if (this.content.completionPercentage === 100) {
145
+ // resumeDataV2 = this.getResumeDataFromList('start')
146
+ // } else {
147
+ // resumeDataV2 = this.getResumeDataFromList()
148
+ // }
149
+ // this.expandThePath(resumeDataV2.identifier)
150
+ // } else {
151
+ // firstPlayableContent = this.contentSvc.getFirstChildInHierarchy(this.content)
152
+ // this.expandThePath(firstPlayableContent.identifier)
153
+ // }
154
+ // }
155
+ // expandThePath(resourceId: string) {
156
+ // if (this.content && resourceId) {
157
+ // const path = this.utilitySvc.getPath(this.content, resourceId)
158
+ // // console.log('Path :: :: : ', path)
159
+ // this.pathSet = new Set(path.map((u: { identifier: any }) => u.identifier))
160
+ // // console.log('pathSet ::: ', this.pathSet)
161
+ // // path.forEach((node: IViewerTocCard) => {
162
+ // // this.nestedTreeControl.expand(node)
163
+ // // })
164
+ // }
165
+ // }
166
+ // private getResumeDataFromList(type?: string) {
167
+ // if (!type) {
168
+ // // tslint:disable-next-line:max-line-length
169
+ // const lastItem = this.resumeData && this.resumeData.sort((a: any, b: any) =>
170
+ // new Date(b.lastAccessTime).getTime() - new Date(a.lastAccessTime).getTime()).shift()
171
+ // return {
172
+ // identifier: lastItem.contentId,
173
+ // mimeType: lastItem.progressdetails && lastItem.progressdetails.mimeType,
174
+ // }
175
+ // }
176
+ // const firstItem = this.resumeData && this.resumeData.length && this.resumeData[0]
177
+ // return {
178
+ // identifier: firstItem.contentId,
179
+ // mimeType: firstItem.progressdetails && firstItem.progressdetails.mimeType,
180
+ // }
181
+ // }
182
+ ngOnDestroy() {
183
+ if (this.routeSubscription) {
184
+ this.routeSubscription.unsubscribe();
185
+ }
186
+ if (this.routeQuerySubscription) {
187
+ this.routeQuerySubscription.unsubscribe();
188
+ }
189
+ }
190
+ getMilestoneCompletedOrNot(identifier) {
191
+ if (!this.content || !this.hierarchyMapData) {
192
+ return false;
193
+ }
194
+ const milestoneData = this.hierarchyMapData[identifier];
195
+ if (milestoneData && milestoneData?.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT) {
196
+ return milestoneData?.completionStatus === 2;
197
+ }
198
+ if (!milestoneData || !milestoneData.leafNodes) {
199
+ return false;
200
+ }
201
+ let completedCount = 0;
202
+ milestoneData.leafNodes.forEach((leafId) => {
203
+ const leafData = this.hierarchyMapData[leafId];
204
+ if (leafData && leafData.completionStatus === 2) {
205
+ completedCount++;
206
+ }
207
+ });
208
+ if (completedCount === milestoneData?.leafNodes.length) {
209
+ return true;
210
+ }
211
+ return false;
212
+ }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }], target: i0.ɵɵFactoryTarget.Component }); }
214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocContentComponent, selector: "ws-widget-app-toc-content", inputs: { batchId: "batchId", content: "content", forPreview: "forPreview", resumeData: "resumeData", batchData: "batchData", skeletonLoader: "skeletonLoader", tocStructure: "tocStructure", config: "config", hierarchyMapData: "hierarchyMapData", pathSet: "pathSet", componentName: "componentName", isPreAssessment: "isPreAssessment", baseContentReadData: "baseContentReadData", contentReadData: "contentReadData" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"content?.courseCategory === 'Learning Pathway' && componentName !== 'viewer'\">\r\n <!-- Milestone / Learning Path UI -->\r\n <div class=\"milestone-wrapper\" role=\"group\" aria-label=\"Learning path milestones\">\r\n <!-- Learning Path Header -->\r\n <div class=\"learning-path-header\">\r\n <h3 class=\"learning-path-title\">Learning Path</h3>\r\n <p class=\"learning-path-subtitle\">Complete {{content?.children?.length - 1 || 3}} key milestones</p>\r\n </div>\r\n <ng-container *ngIf=\"content?.children?.length; else fallbackMilestones\">\r\n <ul class=\"milestone-list\">\r\n <li *ngFor=\"let m of content?.children; let i = index\" class=\"milestone-item\"\r\n [class.completed]=\"m?.completionStatus === 2 || getMilestoneCompletedOrNot(m?.identifier)\" role=\"listitem\">\r\n <div class=\"milestone-circle\" [attr.aria-label]=\"m?.name || ('Milestone ' + (i+1))\">\r\n <img *ngIf=\"m?.completionStatus === 2 || getMilestoneCompletedOrNot(m?.identifier)\" src=\"assets/icons/toc/tick-orange.svg\"\r\n class=\"milestone-checkmark\" alt=\"Completed\" />\r\n <span *ngIf=\"m?.completionStatus !== 2 || getMilestoneCompletedOrNot(m?.identifier)\" class=\"milestone-index\"></span>\r\n </div>\r\n <div class=\"milestone-label\">{{ m?.name }} {{getMilestoneCompletedOrNot(m?.identifier)}}</div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #fallbackMilestones>\r\n <ul class=\"milestone-list\">\r\n <li class=\"milestone-item completed\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"Pre Assessment\">\r\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\r\n </div>\r\n <div class=\"milestone-label\">Pre Assessment</div>\r\n </li>\r\n <li class=\"milestone-item completed\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"1. Foundation of Workplace Ethics\">\r\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\r\n </div>\r\n <div class=\"milestone-label\">1. Foundation of Workplace Ethics</div>\r\n </li>\r\n <li class=\"milestone-item\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"2. Health and Productivity at Work\">\r\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\r\n </div>\r\n <div class=\"milestone-label\">2. Health and Productivity at Work</div>\r\n </li>\r\n <li class=\"milestone-item\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"3. Health and Productivity at Work\">\r\n <span class=\"milestone-index\">4</span>\r\n </div>\r\n <div class=\"milestone-label\">3. Health and Productivity at Work</div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n</div>\r\n<div class=\"bggrey\">\r\n <div class=\"py-4 content-container\" id=\"contentContainer\" *ngIf=\"!isPreAssessment\">\r\n <div class=\"main-container flex flex-col gap-4\">\r\n <ng-container *ngIf=\"content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <div class=\"padding-left-m flex gap-4 tab-list\">\r\n <ng-container *ngFor=\"let type of typesOfContent\">\r\n <div class=\"tab-data\" (click)=\"!type.disabled && selectedTabType = type.id\"\r\n [ngClass]=\"{'active-tab': selectedTabType === type.id, 'disabled':type.disabled}\">\r\n <span>{{type.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"selectedTabType === 'content' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"selectedTabType === 'session' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <ws-widget-app-app-toc-sessions-new [batchData]=\"batchData\" [pathSet]=\"pathSet\" [rootId]=\"contextId\"\r\n [rootContentType]=\"contextPath\" [batchId]=\"batchId\" [config]=\"config\" [content]=\"content\">\r\n </ws-widget-app-app-toc-sessions-new>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.primaryCategory !== nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- {{pathSet|json}} -->\r\n <ng-template #contentBlock>\r\n <ng-container *ngIf=\"!contentLoader\">\r\n <ng-container *ngIf=\"content?.children?.length; else noChildren\">\r\n <div class=\"content-card \"\r\n *ngFor=\"let card of content?.children; trackBy: contentTrackBy; let i = index;\"\r\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\r\n <!-- {{card|json}} -->\r\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\r\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\r\n [rootContentType]=\"contextPath\" [content]=\"card\" [mlCourse]=\"content\" [index]=\"i+1\"\r\n [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\" [batchData]=\"batchData\"\r\n [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\r\n </div>\r\n </ng-container>\r\n <ng-template #noChildren>\r\n <div *ngIf=\"!isPlayable\"\r\n class=\"ws-mat-primary-default-text ws-mat-primary-lite-background px-6 py-8 font-normal text-base noChildren\">\r\n The preview for this type of content is unavailable. Please click on Start button above to view.\r\n </div>\r\n <!-- <ng-container *ngIf=\"isPlayable\" [wsResolverWidget]=\"contentPlayWidgetConfig\"></ng-container> -->\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"contentLoader\">\r\n <ws-widget-app-toc-content-card-v2-skeleton></ws-widget-app-toc-content-card-v2-skeleton>\r\n </ng-container>\r\n </ng-template>\r\n <div *ngIf=\"isPreAssessment\">\r\n <div class=\"content-card \"\r\n *ngFor=\"let card of content?.preEnrolmentResources; trackBy: identifier; let i = index;\"\r\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\r\n <!-- {{card|json}} -->\r\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\r\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\r\n [rootContentType]=\"contextPath\" [isPreAssessment]=\"isPreAssessment\" [content]=\"card\"\r\n [mlCourse]=\"content\" [index]=\"i+1\" [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\"\r\n [batchData]=\"batchData\" [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\r\n </div>\r\n </div>\r\n</div>", styles: [".bggrey{background-color:#eff3f9}.content-container{min-height:800px}.content-accordion .content-panel{box-shadow:none}.content-accordion .content-header{padding:20px;background-color:#fff;border:none;box-shadow:none}.content-key-values{color:#0009}.content-key-values mat-icon{width:14px;height:14px;font-size:14px;color:#0006}.main-container{width:100%;box-sizing:border-box}.main-container .toc-section{display:flex;justify-content:space-between;padding-bottom:12px}.main-container .content-card{background:#fff;border:1px solid rgb(221,221,221);overflow:hidden;position:relative}.main-container .content-card.content-active{border:1px solid #1a4ca1}.main-container .noChildren{color:#222!important}@media only screen and (max-width: 959px){.main-container{width:100%;padding-right:0;margin-bottom:32px}}::ng-deep .mat-expansion-indicator{display:none!important}.mat-panel-indicator{width:28px;height:28px;font-size:28px}.tab-list .tab-data{border-radius:18px;border:1px solid rgba(0,0,0,.08);opacity:1;background-color:#e5e9ef;padding:6px 16px;cursor:pointer}.tab-list .tab-data span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:14px;font-weight:400;font-style:Regular;letter-spacing:.25px;text-align:left;line-height:20px}.tab-list .active-tab{border-radius:18px;border:1px solid rgb(27,76,161);opacity:1;background-color:#dee6f2}.tab-list .active-tab span{color:#1b4ca1}.tab-list .disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.milestone-wrapper{--milestone-size: 33px;--milestone-border: 3px;padding:16px;background:#fff;display:flex;align-items:center;margin-top:16px}.learning-path-header{padding-right:16px}.learning-path-title{font-size:18px;font-weight:700;color:#000000de;margin:0 0 4px;font-family:Lato-Bold,Lato,sans-serif}.learning-path-subtitle{font-size:14px;font-weight:400;color:#0009;margin:0;font-family:Lato-Regular,Lato,sans-serif}.milestone-list{display:flex;align-items:flex-start;justify-content:space-between;list-style:none;margin:0;gap:12px;flex:1}.milestone-item{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1 1 0;position:relative}.milestone-item:after{content:\"\";position:absolute;top:calc(var(--milestone-size) / 2);left:50%;right:-50%;height:3px;background:#e0e0e0;border-top:3px dotted #BDBDBD;background:transparent;z-index:0}.milestone-item.completed:after{background:linear-gradient(90deg,#efa34f,#f3962f);border:none}.milestone-item:last-child:after{display:none}.milestone-circle{width:var(--milestone-size);height:var(--milestone-size);min-width:var(--milestone-size);border-radius:50%;background:#fff;border:var(--milestone-border) solid #F3962F;display:flex;align-items:center;justify-content:center;z-index:1;position:relative;box-shadow:0 2px 8px #00000014;transition:all .2s ease}.milestone-item.completed .milestone-circle{background:#fff;border-color:#f3962f;box-shadow:0 4px 12px #efa34f4d}.milestone-checkmark{width:80%;height:80%;object-fit:contain}.milestone-index{font-weight:700;font-size:18px;color:#757575}.milestone-item.completed .milestone-index{color:#fff}.milestone-label{margin-top:12px;font-size:14px;line-height:1.4;color:#000000de;max-width:140px;word-wrap:break-word;white-space:normal;font-weight:500}.milestone-item:focus-within .milestone-circle,.milestone-item:hover .milestone-circle{transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #00000026}.milestone-item.completed:hover .milestone-circle{box-shadow:0 6px 20px #efa34f66}@media (max-width: 768px){.milestone-wrapper{--milestone-size: 48px;padding:20px 12px 28px}.milestone-list{gap:8px;padding:0 8px}.milestone-label{font-size:12px;max-width:100px}.milestone-index{font-size:16px}}@media (max-width: 480px){.milestone-wrapper{--milestone-size: 40px;padding:16px 8px 24px}.milestone-list{gap:6px;padding:0 4px}.milestone-label{font-size:11px;max-width:80px;margin-top:8px}.milestone-index{font-size:14px}.milestone-item:after{height:2px;border-top-width:2px}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.AppTocContentCardV2Component, selector: "ws-widget-app-toc-content-card-v2", inputs: ["content", "expandAll", "rootId", "rootContentType", "forPreview", "batchId", "componentName", "index", "pathSet", "expandActive", "hierarchyMapData", "batchData", "isPreAssessment", "baseContentReadData", "mlCourse", "parentMilestoneLocked"] }, { kind: "component", type: i6.AppTocSessionsNewComponent, selector: "ws-widget-app-app-toc-sessions-new", inputs: ["batchData", "content", "forPreview", "config", "batchId", "rootId", "rootContentType", "pathSet"] }, { kind: "component", type: i7.AppTocContentCardV2SkeletonComponent, selector: "ws-widget-app-toc-content-card-v2-skeleton" }] }); }
215
+ }
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentComponent, decorators: [{
217
+ type: Component,
218
+ args: [{ selector: 'ws-widget-app-toc-content', template: "<div *ngIf=\"content?.courseCategory === 'Learning Pathway' && componentName !== 'viewer'\">\r\n <!-- Milestone / Learning Path UI -->\r\n <div class=\"milestone-wrapper\" role=\"group\" aria-label=\"Learning path milestones\">\r\n <!-- Learning Path Header -->\r\n <div class=\"learning-path-header\">\r\n <h3 class=\"learning-path-title\">Learning Path</h3>\r\n <p class=\"learning-path-subtitle\">Complete {{content?.children?.length - 1 || 3}} key milestones</p>\r\n </div>\r\n <ng-container *ngIf=\"content?.children?.length; else fallbackMilestones\">\r\n <ul class=\"milestone-list\">\r\n <li *ngFor=\"let m of content?.children; let i = index\" class=\"milestone-item\"\r\n [class.completed]=\"m?.completionStatus === 2 || getMilestoneCompletedOrNot(m?.identifier)\" role=\"listitem\">\r\n <div class=\"milestone-circle\" [attr.aria-label]=\"m?.name || ('Milestone ' + (i+1))\">\r\n <img *ngIf=\"m?.completionStatus === 2 || getMilestoneCompletedOrNot(m?.identifier)\" src=\"assets/icons/toc/tick-orange.svg\"\r\n class=\"milestone-checkmark\" alt=\"Completed\" />\r\n <span *ngIf=\"m?.completionStatus !== 2 || getMilestoneCompletedOrNot(m?.identifier)\" class=\"milestone-index\"></span>\r\n </div>\r\n <div class=\"milestone-label\">{{ m?.name }} {{getMilestoneCompletedOrNot(m?.identifier)}}</div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #fallbackMilestones>\r\n <ul class=\"milestone-list\">\r\n <li class=\"milestone-item completed\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"Pre Assessment\">\r\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\r\n </div>\r\n <div class=\"milestone-label\">Pre Assessment</div>\r\n </li>\r\n <li class=\"milestone-item completed\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"1. Foundation of Workplace Ethics\">\r\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\r\n </div>\r\n <div class=\"milestone-label\">1. Foundation of Workplace Ethics</div>\r\n </li>\r\n <li class=\"milestone-item\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"2. Health and Productivity at Work\">\r\n <img src=\"assets/icons/toc/tick-orange.svg\" class=\"milestone-checkmark\" alt=\"Completed\" />\r\n </div>\r\n <div class=\"milestone-label\">2. Health and Productivity at Work</div>\r\n </li>\r\n <li class=\"milestone-item\" role=\"listitem\">\r\n <div class=\"milestone-circle\" aria-label=\"3. Health and Productivity at Work\">\r\n <span class=\"milestone-index\">4</span>\r\n </div>\r\n <div class=\"milestone-label\">3. Health and Productivity at Work</div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n</div>\r\n<div class=\"bggrey\">\r\n <div class=\"py-4 content-container\" id=\"contentContainer\" *ngIf=\"!isPreAssessment\">\r\n <div class=\"main-container flex flex-col gap-4\">\r\n <ng-container *ngIf=\"content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <div class=\"padding-left-m flex gap-4 tab-list\">\r\n <ng-container *ngFor=\"let type of typesOfContent\">\r\n <div class=\"tab-data\" (click)=\"!type.disabled && selectedTabType = type.id\"\r\n [ngClass]=\"{'active-tab': selectedTabType === type.id, 'disabled':type.disabled}\">\r\n <span>{{type.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"selectedTabType === 'content' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"selectedTabType === 'session' && content?.primaryCategory === nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <ws-widget-app-app-toc-sessions-new [batchData]=\"batchData\" [pathSet]=\"pathSet\" [rootId]=\"contextId\"\r\n [rootContentType]=\"contextPath\" [batchId]=\"batchId\" [config]=\"config\" [content]=\"content\">\r\n </ws-widget-app-app-toc-sessions-new>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.primaryCategory !== nsContent?.EPrimaryCategory?.BLENDED_PROGRAM\">\r\n <ng-container [ngTemplateOutlet]=\"contentBlock\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- {{pathSet|json}} -->\r\n <ng-template #contentBlock>\r\n <ng-container *ngIf=\"!contentLoader\">\r\n <ng-container *ngIf=\"content?.children?.length; else noChildren\">\r\n <div class=\"content-card \"\r\n *ngFor=\"let card of content?.children; trackBy: contentTrackBy; let i = index;\"\r\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\r\n <!-- {{card|json}} -->\r\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\r\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\r\n [rootContentType]=\"contextPath\" [content]=\"card\" [mlCourse]=\"content\" [index]=\"i+1\"\r\n [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\" [batchData]=\"batchData\"\r\n [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\r\n </div>\r\n </ng-container>\r\n <ng-template #noChildren>\r\n <div *ngIf=\"!isPlayable\"\r\n class=\"ws-mat-primary-default-text ws-mat-primary-lite-background px-6 py-8 font-normal text-base noChildren\">\r\n The preview for this type of content is unavailable. Please click on Start button above to view.\r\n </div>\r\n <!-- <ng-container *ngIf=\"isPlayable\" [wsResolverWidget]=\"contentPlayWidgetConfig\"></ng-container> -->\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"contentLoader\">\r\n <ws-widget-app-toc-content-card-v2-skeleton></ws-widget-app-toc-content-card-v2-skeleton>\r\n </ng-container>\r\n </ng-template>\r\n <div *ngIf=\"isPreAssessment\">\r\n <div class=\"content-card \"\r\n *ngFor=\"let card of content?.preEnrolmentResources; trackBy: identifier; let i = index;\"\r\n [ngClass]=\"{ 'content-active': pathSet && pathSet.has(card.identifier) && isEnrolled}\">\r\n <!-- {{card|json}} -->\r\n <ws-widget-app-toc-content-card-v2 [forPreview]=\"forPreview\" [expandAll]=\"expandAll\"\r\n [componentName]=\"componentName\" [expandActive]=\"true\" [rootId]=\"contextId\" [batchId]=\"batchId\"\r\n [rootContentType]=\"contextPath\" [isPreAssessment]=\"isPreAssessment\" [content]=\"card\"\r\n [mlCourse]=\"content\" [index]=\"i+1\" [pathSet]=\"pathSet\" [hierarchyMapData]=\"hierarchyMapData\"\r\n [batchData]=\"batchData\" [baseContentReadData]=\"baseContentReadData\"></ws-widget-app-toc-content-card-v2>\r\n </div>\r\n </div>\r\n</div>", styles: [".bggrey{background-color:#eff3f9}.content-container{min-height:800px}.content-accordion .content-panel{box-shadow:none}.content-accordion .content-header{padding:20px;background-color:#fff;border:none;box-shadow:none}.content-key-values{color:#0009}.content-key-values mat-icon{width:14px;height:14px;font-size:14px;color:#0006}.main-container{width:100%;box-sizing:border-box}.main-container .toc-section{display:flex;justify-content:space-between;padding-bottom:12px}.main-container .content-card{background:#fff;border:1px solid rgb(221,221,221);overflow:hidden;position:relative}.main-container .content-card.content-active{border:1px solid #1a4ca1}.main-container .noChildren{color:#222!important}@media only screen and (max-width: 959px){.main-container{width:100%;padding-right:0;margin-bottom:32px}}::ng-deep .mat-expansion-indicator{display:none!important}.mat-panel-indicator{width:28px;height:28px;font-size:28px}.tab-list .tab-data{border-radius:18px;border:1px solid rgba(0,0,0,.08);opacity:1;background-color:#e5e9ef;padding:6px 16px;cursor:pointer}.tab-list .tab-data span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:14px;font-weight:400;font-style:Regular;letter-spacing:.25px;text-align:left;line-height:20px}.tab-list .active-tab{border-radius:18px;border:1px solid rgb(27,76,161);opacity:1;background-color:#dee6f2}.tab-list .active-tab span{color:#1b4ca1}.tab-list .disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.milestone-wrapper{--milestone-size: 33px;--milestone-border: 3px;padding:16px;background:#fff;display:flex;align-items:center;margin-top:16px}.learning-path-header{padding-right:16px}.learning-path-title{font-size:18px;font-weight:700;color:#000000de;margin:0 0 4px;font-family:Lato-Bold,Lato,sans-serif}.learning-path-subtitle{font-size:14px;font-weight:400;color:#0009;margin:0;font-family:Lato-Regular,Lato,sans-serif}.milestone-list{display:flex;align-items:flex-start;justify-content:space-between;list-style:none;margin:0;gap:12px;flex:1}.milestone-item{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1 1 0;position:relative}.milestone-item:after{content:\"\";position:absolute;top:calc(var(--milestone-size) / 2);left:50%;right:-50%;height:3px;background:#e0e0e0;border-top:3px dotted #BDBDBD;background:transparent;z-index:0}.milestone-item.completed:after{background:linear-gradient(90deg,#efa34f,#f3962f);border:none}.milestone-item:last-child:after{display:none}.milestone-circle{width:var(--milestone-size);height:var(--milestone-size);min-width:var(--milestone-size);border-radius:50%;background:#fff;border:var(--milestone-border) solid #F3962F;display:flex;align-items:center;justify-content:center;z-index:1;position:relative;box-shadow:0 2px 8px #00000014;transition:all .2s ease}.milestone-item.completed .milestone-circle{background:#fff;border-color:#f3962f;box-shadow:0 4px 12px #efa34f4d}.milestone-checkmark{width:80%;height:80%;object-fit:contain}.milestone-index{font-weight:700;font-size:18px;color:#757575}.milestone-item.completed .milestone-index{color:#fff}.milestone-label{margin-top:12px;font-size:14px;line-height:1.4;color:#000000de;max-width:140px;word-wrap:break-word;white-space:normal;font-weight:500}.milestone-item:focus-within .milestone-circle,.milestone-item:hover .milestone-circle{transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #00000026}.milestone-item.completed:hover .milestone-circle{box-shadow:0 6px 20px #efa34f66}@media (max-width: 768px){.milestone-wrapper{--milestone-size: 48px;padding:20px 12px 28px}.milestone-list{gap:8px;padding:0 8px}.milestone-label{font-size:12px;max-width:100px}.milestone-index{font-size:16px}}@media (max-width: 480px){.milestone-wrapper{--milestone-size: 40px;padding:16px 8px 24px}.milestone-list{gap:6px;padding:0 4px}.milestone-label{font-size:11px;max-width:80px;margin-top:8px}.milestone-index{font-size:14px}.milestone-item:after{height:2px;border-top-width:2px}}\n"] }]
219
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }]; }, propDecorators: { batchId: [{
220
+ type: Input
221
+ }], content: [{
222
+ type: Input
223
+ }], forPreview: [{
224
+ type: Input
225
+ }], resumeData: [{
226
+ type: Input
227
+ }], batchData: [{
228
+ type: Input
229
+ }], skeletonLoader: [{
230
+ type: Input
231
+ }], tocStructure: [{
232
+ type: Input
233
+ }], config: [{
234
+ type: Input
235
+ }], hierarchyMapData: [{
236
+ type: Input
237
+ }], pathSet: [{
238
+ type: Input
239
+ }], componentName: [{
240
+ type: Input
241
+ }], isPreAssessment: [{
242
+ type: Input
243
+ }], baseContentReadData: [{
244
+ type: Input
245
+ }], contentReadData: [{
246
+ type: Input
247
+ }] } });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL2FwcC10b2MtY29udGVudC9hcHAtdG9jLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1jb250ZW50L2FwcC10b2MtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUE7QUFHN0YsT0FBTyxFQUF5QixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTs7Ozs7Ozs7O0FBR3ZFLHFEQUFxRDtBQVFyRCxNQUFNLE9BQU8sc0JBQXNCO0lBaUNqQyxZQUNVLEtBQXFCLEVBQ3JCLE1BQXFCLEVBQ3JCLFNBQWdDO1FBRmhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFqQ2pDLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsZUFBVSxHQUEyQyxJQUFJLENBQUE7UUFDekQsY0FBUyxHQUFrRCxJQUFJLENBQUE7UUFDL0QsbUJBQWMsR0FBRyxLQUFLLENBQUE7UUFHdEIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBRzFCLG9CQUFlLEdBQUcsS0FBSyxDQUFBO1FBR2hDLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsNEJBQXVCLEdBQTRELElBQUksQ0FBQTtRQUN2RixxQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDckIsb0RBQW9EO1FB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LENBQUMsTUFBYyxFQUFFLEVBQUU7WUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzlDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7Z0JBQy9DLGNBQWMsRUFBRSxDQUFBO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLGNBQWMsS0FBSyxhQUFhLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDOytHQWpPVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixzZkNkbkMsc2tRQXVITTs7NEZEekdPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSwyQkFBMkI7cUtBTTVCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcclxuaW1wb3J0IHsgTnNXaWRnZXRSZXNvbHZlciB9IGZyb20gJ0BzdW5iaXJkLWNiL3Jlc29sdmVyLXYyJ1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIE5zQ29udGVudCB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xyXG5pbXBvcnQgeyBBcHBUb2NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvYXBwLXRvYy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xyXG4vLyBpbXBvcnQgeyBOc0FwcFRvYyB9IGZyb20gJy4uL21vZGVscy9hcHAtdG9jLm1vZGVsJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtYXBwLXRvYy1jb250ZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRvYy1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtdG9jLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBcHBUb2NDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgYmF0Y2hJZCE6IHN0cmluZ1xyXG4gIEBJbnB1dCgpIGNvbnRlbnQhOiBOc0NvbnRlbnQuSUNvbnRlbnRcclxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gZmFsc2VcclxuICBASW5wdXQoKSByZXN1bWVEYXRhOiBOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhIHwgbnVsbCA9IG51bGxcclxuICBASW5wdXQoKSBiYXRjaERhdGE6IC8qKk5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2UgKi8gYW55IHwgbnVsbCA9IG51bGxcclxuICBASW5wdXQoKSBza2VsZXRvbkxvYWRlciA9IGZhbHNlXHJcbiAgQElucHV0KCkgdG9jU3RydWN0dXJlOiBhbnlcclxuICBASW5wdXQoKSBjb25maWc6IGFueVxyXG4gIEBJbnB1dCgpIGhpZXJhcmNoeU1hcERhdGE6IGFueSA9IHt9XHJcbiAgQElucHV0KCkgcGF0aFNldDogYW55XHJcbiAgQElucHV0KCkgY29tcG9uZW50TmFtZSE6IHN0cmluZ1xyXG4gIEBJbnB1dCgpIGlzUHJlQXNzZXNzbWVudCA9IGZhbHNlXHJcbiAgQElucHV0KCkgYmFzZUNvbnRlbnRSZWFkRGF0YSE6IGFueVxyXG4gIEBJbnB1dCgpIGNvbnRlbnRSZWFkRGF0YSE6IGFueVxyXG4gIGlzUGxheWFibGUgPSBmYWxzZVxyXG4gIGNvbnRlbnRQbGF5V2lkZ2V0Q29uZmlnOiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoVHlwZWREYXRhPGFueT4gfCBudWxsID0gbnVsbFxyXG4gIGRlZmF1bHRUaHVtYm5haWwgPSAnJ1xyXG4gIC8vIGVycm9yQ29kZTogTnNBcHBUb2MuRVdzVG9jRXJyb3JDb2RlIHwgbnVsbCA9IG51bGxcclxuICBwcml2YXRlIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxyXG4gIHByaXZhdGUgcm91dGVRdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcclxuICBjb250ZW50UGFyZW50czogTnNDb250ZW50LklDb250ZW50TWluaW1hbFtdID0gW11cclxuICBleHBhbmRBbGwgPSBmYWxzZVxyXG4gIGV4cGFuZFBhcnRPZiA9IGZhbHNlXHJcbiAgY29udGV4dElkITogc3RyaW5nXHJcbiAgY29udGV4dFBhdGghOiBzdHJpbmdcclxuICBjb250ZW50TG9hZGVyID0gZmFsc2VcclxuXHJcbiAgdHlwZXNPZkNvbnRlbnQ6IGFueVxyXG4gIHNlbGVjdGVkVGFiVHlwZTogYW55ID0gJ2NvbnRlbnQnXHJcbiAgbnNDb250ZW50OiBhbnkgPSAgTnNDb250ZW50XHJcbiAgb3RoZXJSZXNvdXJzZSA9IDBcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9jU3ZjOiBBcHBUb2NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy50b2NTdmMucmVzdW1lRGF0YS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmVzdW1lRGF0YSA9IHJlc1xyXG4gICAgICAvLyB0aGlzLmdldExhc3RQbGF5ZWRSZXNvdXJjZSgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyB0aGlzLmZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL2F1dGhvci8nKVxyXG4gICAgdGhpcy5yb3V0ZVF1ZXJ5U3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShxUGFyYW1zTWFwID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ3FQYXJhbXNNYXAtLScsIHFQYXJhbXNNYXApXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmNvbnRlbnQtLScsIHRoaXMuY29udGVudClcclxuICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuaGllcmFyY2h5TWFwRGF0YScsIHRoaXMuaGllcmFyY2h5TWFwRGF0YSlcclxuICAgICAgXHJcbiAgICAgIC8vIFBhcnNlIHByZUVucm9sbWVudFJlc291cmNlcyBpZiBpdCBleGlzdHMgYXMgYSBzdHJpbmdcclxuICAgICAgLy8gTm90ZTogVGhpcyBpcyBzZXBhcmF0ZSBmcm9tIHByZWxpbWluYXJ5IGFzc2Vzc21lbnQgd2hpY2ggaXMgaW4gY2hpbGRyZW4gYXJyYXkgd2l0aCBpc1ByZUFzc2Vzc21lbnQgZmxhZ1xyXG4gICAgICBpZih0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50Py5wcmVFbnJvbG1lbnRSZXNvdXJjZXMgJiYgdHlwZW9mIHRoaXMuY29udGVudD8ucHJlRW5yb2xtZW50UmVzb3VyY2VzID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMuY29udGVudFsncHJlRW5yb2xtZW50UmVzb3VyY2VzJ10gPSAgSlNPTi5wYXJzZSh0aGlzLmNvbnRlbnQ/LnByZUVucm9sbWVudFJlc291cmNlcylcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb250ZXh0SWQgPSBxUGFyYW1zTWFwLmdldCgnY29udGV4dElkJylcclxuICAgICAgY29uc3QgY29udGV4dFBhdGggPSBxUGFyYW1zTWFwLmdldCgnY29udGV4dFBhdGgnKVxyXG4gICAgICBjb25zdCBiYXRjaElkID0gcVBhcmFtc01hcC5nZXQoJ2JhdGNoSWQnKVxyXG4gICAgICBjb25zdCBwcmltYXJ5Q2F0ZWdvcnkgPSBxUGFyYW1zTWFwLmdldCgncHJpbWFyeUNhdGVnb3J5JylcclxuICAgICAgY29uc3QgcHJlQXNzZXNzbWVudCA9IHFQYXJhbXNNYXAuZ2V0KCdwcmVBc3Nlc3NtZW50JylcclxuICAgICAgaWYocHJlQXNzZXNzbWVudCA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgdGhpcy5pc1ByZUFzc2Vzc21lbnQgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRleHRJZCAmJiBjb250ZXh0UGF0aCkge1xyXG4gICAgICAgIHRoaXMuY29udGV4dElkID0gY29udGV4dElkXHJcbiAgICAgICAgdGhpcy5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJhdGNoSWQpIHtcclxuICAgICAgICB0aGlzLmJhdGNoSWQgPSBiYXRjaElkXHJcbiAgICAgIH1cclxuICAgICAgaWYocHJpbWFyeUNhdGVnb3J5ICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJUeXBlID0gcHJpbWFyeUNhdGVnb3J5ID09PSB0aGlzLm5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk9GRkxJTkVfU0VTU0lPTiA/ICdzZXNzaW9uJyA6ICdjb250ZW50J1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKHRoaXMucm91dGUgJiYgdGhpcy5yb3V0ZS5wYXJlbnQpIHtcclxuICAgICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKChkYXRhOiBEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0RGF0YShkYXRhKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy50b2NTdmMuY29udGVudExvYWRlciQuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnRlbnRMb2FkZXIgPSB2YWxcclxuICAgIH0pXHJcbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZyA9IHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnXHJcbiAgICBpZiAoaW5zdGFuY2VDb25maWcpIHtcclxuICAgICAgdGhpcy5kZWZhdWx0VGh1bWJuYWlsID0gaW5zdGFuY2VDb25maWcubG9nb3MuZGVmYXVsdENvbnRlbnQgfHwgJydcclxuICAgIH1cclxuICAgIHRoaXMudHlwZXNPZkNvbnRlbnQgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnU2VsZi1wYWNlZCcsXHJcbiAgICAgICAgaWQ6ICdjb250ZW50JyxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnSW5zdHJ1Y3Rvci1sZWQnLFxyXG4gICAgICAgIGlkOiAnc2Vzc2lvbicsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgXVxyXG4gICAgdGhpcy5vdGhlclJlc291cnNlID0gMFxyXG4gICAgaWYgKHRoaXMudG9jU3RydWN0dXJlKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudG9jU3RydWN0dXJlKS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGUgPT09ICdvZmZsaW5lU2Vzc2lvbicgfHwgZWxlID09PSAnbGVhcm5pbmdNb2R1bGUnKSB7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICB0aGlzLm90aGVyUmVzb3Vyc2UgPSB0aGlzLm90aGVyUmVzb3Vyc2UgKyB0aGlzLnRvY1N0cnVjdHVyZVtlbGVdXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpZiAoIXRoaXMub3RoZXJSZXNvdXJzZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYlR5cGUgPSAnc2Vzc2lvbidcclxuICAgICAgICAgIHRoaXMudHlwZXNPZkNvbnRlbnRbMF0uZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgfSwgICAgICAgICAxMDAwKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZXNPZkNvbnRlbnRbMV0uZGlzYWJsZWQgPSAgdGhpcy50b2NTdHJ1Y3R1cmVbJ29mZmxpbmVTZXNzaW9uJ10gPyBmYWxzZSA6IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RGF0YShfZGF0YTogRGF0YSkge1xyXG4gICAgLy8gbm90IHJlcXVpcmVkIGluaXQgbm93IGJlY2F1c2UgbmV3IGltcGxlbWVudGF0aW9uIG9mICBoYXNobWFwIGFscmVhZHkgaGFzIG1hcHBlZCB0aGUgY29tcGxldGlvbiBwZXJjZW50XHJcbiAgICAvLyBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU3ZjLmluaXREYXRhKGRhdGEsIHRydWUpXHJcbiAgICAvLyB0aGlzLmNvbnRlbnQgPSBpbml0RGF0YS5jb250ZW50XHJcbiAgICAvLyB0aGlzLmVycm9yQ29kZSA9IGluaXREYXRhLmVycm9yQ29kZVxyXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xyXG4gICAgICBpZiAoIXRoaXMuY29udGV4dElkIHx8ICF0aGlzLmNvbnRleHRQYXRoKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0SWQgPSB0aGlzLmNvbnRlbnQuaWRlbnRpZmllclxyXG4gICAgICAgIHRoaXMuY29udGV4dFBhdGggPSB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gY2hhbmdlcykge1xyXG4gICAgICBpZiAocHJvcGVydHkgPT09ICdyZXN1bWVEYXRhJykge1xyXG4gICAgICAgIC8vIHRoaXMuZ2V0TGFzdFBsYXllZFJlc291cmNlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRW5yb2xsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXRjaElkID8gdHJ1ZSA6IGZhbHNlXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIHByb2Nlc3NDb2xsZWN0aW9uRm9yVHJlZSgpIHtcclxuICAvLyAgICAgdGhpcy5wYXRoU2V0ID0gbmV3IFNldCgpXHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXRMYXN0UGxheWVkUmVzb3VyY2UoKSB7XHJcbiAgLy8gICBsZXQgZmlyc3RQbGF5YWJsZUNvbnRlbnRcclxuICAvLyAgIGxldCByZXN1bWVEYXRhVjI6IGFueVxyXG4gIC8vICAgaWYgKHRoaXMucmVzdW1lRGF0YSAmJiB0aGlzLnJlc3VtZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmNvbnRlbnQpIHtcclxuICAvLyAgICAgaWYgKHRoaXMuY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZSA9PT0gMTAwKSB7XHJcbiAgLy8gICAgICAgcmVzdW1lRGF0YVYyID0gdGhpcy5nZXRSZXN1bWVEYXRhRnJvbUxpc3QoJ3N0YXJ0JylcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXN1bWVEYXRhVjIgPSB0aGlzLmdldFJlc3VtZURhdGFGcm9tTGlzdCgpXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgdGhpcy5leHBhbmRUaGVQYXRoKHJlc3VtZURhdGFWMi5pZGVudGlmaWVyKVxyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgZmlyc3RQbGF5YWJsZUNvbnRlbnQgPSB0aGlzLmNvbnRlbnRTdmMuZ2V0Rmlyc3RDaGlsZEluSGllcmFyY2h5KHRoaXMuY29udGVudClcclxuICAvLyAgICAgdGhpcy5leHBhbmRUaGVQYXRoKGZpcnN0UGxheWFibGVDb250ZW50LmlkZW50aWZpZXIpXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBleHBhbmRUaGVQYXRoKHJlc291cmNlSWQ6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHRoaXMuY29udGVudCAmJiByZXNvdXJjZUlkKSB7XHJcbiAgLy8gICAgIGNvbnN0IHBhdGggPSB0aGlzLnV0aWxpdHlTdmMuZ2V0UGF0aCh0aGlzLmNvbnRlbnQsIHJlc291cmNlSWQpXHJcbiAgLy8gICAgIC8vIGNvbnNvbGUubG9nKCdQYXRoIDo6IDo6IDogJywgcGF0aClcclxuICAvLyAgICAgdGhpcy5wYXRoU2V0ID0gbmV3IFNldChwYXRoLm1hcCgodTogeyBpZGVudGlmaWVyOiBhbnkgfSkgPT4gdS5pZGVudGlmaWVyKSlcclxuICAvLyAgICAgLy8gY29uc29sZS5sb2coJ3BhdGhTZXQgOjo6ICcsIHRoaXMucGF0aFNldClcclxuICAvLyAgICAgLy8gcGF0aC5mb3JFYWNoKChub2RlOiBJVmlld2VyVG9jQ2FyZCkgPT4ge1xyXG4gIC8vICAgICAvLyAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpXHJcbiAgLy8gICAgIC8vIH0pXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwcml2YXRlIGdldFJlc3VtZURhdGFGcm9tTGlzdCh0eXBlPzogc3RyaW5nKSB7XHJcbiAgLy8gICBpZiAoIXR5cGUpIHtcclxuICAvLyAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG4gIC8vICAgICBjb25zdCBsYXN0SXRlbSA9IHRoaXMucmVzdW1lRGF0YSAmJiB0aGlzLnJlc3VtZURhdGEuc29ydCgoYTogYW55LCBiOiBhbnkpID0+XHJcbiAgLy8gbmV3IERhdGUoYi5sYXN0QWNjZXNzVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5sYXN0QWNjZXNzVGltZSkuZ2V0VGltZSgpKS5zaGlmdCgpXHJcbiAgLy8gICAgIHJldHVybiB7XHJcbiAgLy8gICAgICAgaWRlbnRpZmllcjogbGFzdEl0ZW0uY29udGVudElkLFxyXG4gIC8vICAgICAgIG1pbWVUeXBlOiBsYXN0SXRlbS5wcm9ncmVzc2RldGFpbHMgJiYgbGFzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzLm1pbWVUeXBlLFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5yZXN1bWVEYXRhICYmIHRoaXMucmVzdW1lRGF0YS5sZW5ndGggJiYgdGhpcy5yZXN1bWVEYXRhWzBdXHJcbiAgLy8gICByZXR1cm4ge1xyXG4gIC8vICAgICBpZGVudGlmaWVyOiBmaXJzdEl0ZW0uY29udGVudElkLFxyXG4gIC8vICAgICBtaW1lVHlwZTogZmlyc3RJdGVtLnByb2dyZXNzZGV0YWlscyAmJiBmaXJzdEl0ZW0ucHJvZ3Jlc3NkZXRhaWxzLm1pbWVUeXBlLFxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJvdXRlUXVlcnlTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5yb3V0ZVF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gICAgZ2V0TWlsZXN0b25lQ29tcGxldGVkT3JOb3QoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY29udGVudCB8fCAhdGhpcy5oaWVyYXJjaHlNYXBEYXRhKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgY29uc3QgbWlsZXN0b25lRGF0YSA9IHRoaXMuaGllcmFyY2h5TWFwRGF0YVtpZGVudGlmaWVyXVxyXG4gICAgaWYobWlsZXN0b25lRGF0YSAmJiBtaWxlc3RvbmVEYXRhPy5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkZJTkFMX0FTU0VTU01FTlQpIHtcclxuICAgICAgcmV0dXJuIG1pbGVzdG9uZURhdGE/LmNvbXBsZXRpb25TdGF0dXMgPT09IDJcclxuICAgIH1cclxuICAgIGlmICghbWlsZXN0b25lRGF0YSB8fCAhbWlsZXN0b25lRGF0YS5sZWFmTm9kZXMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICBsZXQgY29tcGxldGVkQ291bnQgPSAwXHJcbiAgICBtaWxlc3RvbmVEYXRhLmxlYWZOb2Rlcy5mb3JFYWNoKChsZWFmSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICBjb25zdCBsZWFmRGF0YSA9IHRoaXMuaGllcmFyY2h5TWFwRGF0YVtsZWFmSWRdXHJcbiAgICAgIGlmIChsZWFmRGF0YSAmJiBsZWFmRGF0YS5jb21wbGV0aW9uU3RhdHVzID09PSAyKSB7XHJcbiAgICAgICAgY29tcGxldGVkQ291bnQrK1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYoIGNvbXBsZXRlZENvdW50ID09PSBtaWxlc3RvbmVEYXRhPy5sZWFmTm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5ID09PSAnTGVhcm5pbmcgUGF0aHdheScgJiYgIGNvbXBvbmVudE5hbWUgIT09ICd2aWV3ZXInXCI+XHJcbiAgICA8IS0tIE1pbGVzdG9uZSAvIExlYXJuaW5nIFBhdGggVUkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLXdyYXBwZXJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiTGVhcm5pbmcgcGF0aCBtaWxlc3RvbmVzXCI+XHJcbiAgICAgICAgPCEtLSBMZWFybmluZyBQYXRoIEhlYWRlciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVhcm5pbmctcGF0aC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibGVhcm5pbmctcGF0aC10aXRsZVwiPkxlYXJuaW5nIFBhdGg8L2gzPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImxlYXJuaW5nLXBhdGgtc3VidGl0bGVcIj5Db21wbGV0ZSB7e2NvbnRlbnQ/LmNoaWxkcmVuPy5sZW5ndGggLSAxIHx8IDN9fSBrZXkgbWlsZXN0b25lczwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBmYWxsYmFja01pbGVzdG9uZXNcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibWlsZXN0b25lLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbSBvZiBjb250ZW50Py5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwibWlsZXN0b25lLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jb21wbGV0ZWRdPVwibT8uY29tcGxldGlvblN0YXR1cyA9PT0gMiB8fCBnZXRNaWxlc3RvbmVDb21wbGV0ZWRPck5vdChtPy5pZGVudGlmaWVyKVwiIHJvbGU9XCJsaXN0aXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWxlc3RvbmUtY2lyY2xlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtPy5uYW1lIHx8ICgnTWlsZXN0b25lICcgKyAoaSsxKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIm0/LmNvbXBsZXRpb25TdGF0dXMgPT09IDIgfHwgZ2V0TWlsZXN0b25lQ29tcGxldGVkT3JOb3QobT8uaWRlbnRpZmllcilcIiBzcmM9XCJhc3NldHMvaWNvbnMvdG9jL3RpY2stb3JhbmdlLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbGVzdG9uZS1jaGVja21hcmtcIiBhbHQ9XCJDb21wbGV0ZWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm0/LmNvbXBsZXRpb25TdGF0dXMgIT09IDIgfHwgZ2V0TWlsZXN0b25lQ29tcGxldGVkT3JOb3QobT8uaWRlbnRpZmllcilcIiBjbGFzcz1cIm1pbGVzdG9uZS1pbmRleFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWxhYmVsXCI+e3sgbT8ubmFtZSB9fSB7e2dldE1pbGVzdG9uZUNvbXBsZXRlZE9yTm90KG0/LmlkZW50aWZpZXIpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNmYWxsYmFja01pbGVzdG9uZXM+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm1pbGVzdG9uZS1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtaWxlc3RvbmUtaXRlbSBjb21wbGV0ZWRcIiByb2xlPVwibGlzdGl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWNpcmNsZVwiIGFyaWEtbGFiZWw9XCJQcmUgQXNzZXNzbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy90b2MvdGljay1vcmFuZ2Uuc3ZnXCIgY2xhc3M9XCJtaWxlc3RvbmUtY2hlY2ttYXJrXCIgYWx0PVwiQ29tcGxldGVkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWxhYmVsXCI+UHJlIEFzc2Vzc21lbnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtaWxlc3RvbmUtaXRlbSBjb21wbGV0ZWRcIiByb2xlPVwibGlzdGl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWNpcmNsZVwiIGFyaWEtbGFiZWw9XCIxLiBGb3VuZGF0aW9uIG9mIFdvcmtwbGFjZSBFdGhpY3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvdG9jL3RpY2stb3JhbmdlLnN2Z1wiIGNsYXNzPVwibWlsZXN0b25lLWNoZWNrbWFya1wiIGFsdD1cIkNvbXBsZXRlZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1sYWJlbFwiPjEuIEZvdW5kYXRpb24gb2YgV29ya3BsYWNlIEV0aGljczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1pbGVzdG9uZS1pdGVtXCIgcm9sZT1cImxpc3RpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1jaXJjbGVcIiBhcmlhLWxhYmVsPVwiMi4gSGVhbHRoIGFuZCBQcm9kdWN0aXZpdHkgYXQgV29ya1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy90b2MvdGljay1vcmFuZ2Uuc3ZnXCIgY2xhc3M9XCJtaWxlc3RvbmUtY2hlY2ttYXJrXCIgYWx0PVwiQ29tcGxldGVkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZXN0b25lLWxhYmVsXCI+Mi4gSGVhbHRoIGFuZCBQcm9kdWN0aXZpdHkgYXQgV29yazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1pbGVzdG9uZS1pdGVtXCIgcm9sZT1cImxpc3RpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1jaXJjbGVcIiBhcmlhLWxhYmVsPVwiMy4gSGVhbHRoIGFuZCBQcm9kdWN0aXZpdHkgYXQgV29ya1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pbGVzdG9uZS1pbmRleFwiPjQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVzdG9uZS1sYWJlbFwiPjMuIEhlYWx0aCBhbmQgUHJvZHVjdGl2aXR5IGF0IFdvcms8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImJnZ3JleVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB5LTQgY29udGVudC1jb250YWluZXJcIiBpZD1cImNvbnRlbnRDb250YWluZXJcIiAqbmdJZj1cIiFpc1ByZUFzc2Vzc21lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250YWluZXIgZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSBuc0NvbnRlbnQ/LkVQcmltYXJ5Q2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhZGRpbmctbGVmdC1tIGZsZXggZ2FwLTQgdGFiLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVzT2ZDb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItZGF0YVwiIChjbGljayk9XCIhdHlwZS5kaXNhYmxlZCAmJiBzZWxlY3RlZFRhYlR5cGUgPSB0eXBlLmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLXRhYic6IHNlbGVjdGVkVGFiVHlwZSA9PT0gdHlwZS5pZCwgJ2Rpc2FibGVkJzp0eXBlLmRpc2FibGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t0eXBlLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRUYWJUeXBlID09PSAnY29udGVudCcgJiYgY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSBuc0NvbnRlbnQ/LkVQcmltYXJ5Q2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRUYWJUeXBlID09PSAnc2Vzc2lvbicgJiYgY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSBuc0NvbnRlbnQ/LkVQcmltYXJ5Q2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTVwiPlxyXG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtYXBwLXRvYy1zZXNzaW9ucy1uZXcgW2JhdGNoRGF0YV09XCJiYXRjaERhdGFcIiBbcGF0aFNldF09XCJwYXRoU2V0XCIgW3Jvb3RJZF09XCJjb250ZXh0SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb290Q29udGVudFR5cGVdPVwiY29udGV4dFBhdGhcIiBbYmF0Y2hJZF09XCJiYXRjaElkXCIgW2NvbmZpZ109XCJjb25maWdcIiBbY29udGVudF09XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1hcHAtYXBwLXRvYy1zZXNzaW9ucy1uZXc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ICE9PSBuc0NvbnRlbnQ/LkVQcmltYXJ5Q2F0ZWdvcnk/LkJMRU5ERURfUFJPR1JBTVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0ge3twYXRoU2V0fGpzb259fSAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudEJsb2NrPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29udGVudExvYWRlclwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBub0NoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jYXJkIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgY29udGVudD8uY2hpbGRyZW47IHRyYWNrQnk6IGNvbnRlbnRUcmFja0J5OyBsZXQgaSA9IGluZGV4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY29udGVudC1hY3RpdmUnOiBwYXRoU2V0ICYmIHBhdGhTZXQuaGFzKGNhcmQuaWRlbnRpZmllcikgICYmIGlzRW5yb2xsZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSB7e2NhcmR8anNvbn19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy1jb250ZW50LWNhcmQtdjIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtleHBhbmRBbGxdPVwiZXhwYW5kQWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBvbmVudE5hbWVdPVwiY29tcG9uZW50TmFtZVwiIFtleHBhbmRBY3RpdmVdPVwidHJ1ZVwiIFtyb290SWRdPVwiY29udGV4dElkXCIgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb290Q29udGVudFR5cGVdPVwiY29udGV4dFBhdGhcIiBbY29udGVudF09XCJjYXJkXCIgW21sQ291cnNlXT1cImNvbnRlbnRcIiBbaW5kZXhdPVwiaSsxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhTZXRdPVwicGF0aFNldFwiIFtoaWVyYXJjaHlNYXBEYXRhXT1cImhpZXJhcmNoeU1hcERhdGFcIiBbYmF0Y2hEYXRhXT1cImJhdGNoRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIj48L3dzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQtY2FyZC12Mj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NoaWxkcmVuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc1BsYXlhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LWRlZmF1bHQtdGV4dCB3cy1tYXQtcHJpbWFyeS1saXRlLWJhY2tncm91bmQgcHgtNiBweS04IGZvbnQtbm9ybWFsIHRleHQtYmFzZSBub0NoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpZXcgZm9yIHRoaXMgdHlwZSBvZiBjb250ZW50IGlzIHVuYXZhaWxhYmxlLiBQbGVhc2UgY2xpY2sgb24gU3RhcnQgYnV0dG9uIGFib3ZlIHRvIHZpZXcuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUGxheWFibGVcIiBbd3NSZXNvbHZlcldpZGdldF09XCJjb250ZW50UGxheVdpZGdldENvbmZpZ1wiPjwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRMb2FkZXJcIj5cclxuICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQtY2FyZC12Mi1za2VsZXRvbj48L3dzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQtY2FyZC12Mi1za2VsZXRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNQcmVBc3Nlc3NtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2FyZCBcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2FyZCBvZiBjb250ZW50Py5wcmVFbnJvbG1lbnRSZXNvdXJjZXM7IHRyYWNrQnk6IGlkZW50aWZpZXI7IGxldCBpID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY29udGVudC1hY3RpdmUnOiBwYXRoU2V0ICYmIHBhdGhTZXQuaGFzKGNhcmQuaWRlbnRpZmllcikgICYmIGlzRW5yb2xsZWR9XCI+XHJcbiAgICAgICAgICAgIDwhLS0ge3tjYXJkfGpzb259fSAtLT5cclxuICAgICAgICAgICAgPHdzLXdpZGdldC1hcHAtdG9jLWNvbnRlbnQtY2FyZC12MiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCIgW2V4cGFuZEFsbF09XCJleHBhbmRBbGxcIlxyXG4gICAgICAgICAgICAgICAgW2NvbXBvbmVudE5hbWVdPVwiY29tcG9uZW50TmFtZVwiIFtleHBhbmRBY3RpdmVdPVwidHJ1ZVwiIFtyb290SWRdPVwiY29udGV4dElkXCIgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiXHJcbiAgICAgICAgICAgICAgICBbcm9vdENvbnRlbnRUeXBlXT1cImNvbnRleHRQYXRoXCIgW2lzUHJlQXNzZXNzbWVudF09XCJpc1ByZUFzc2Vzc21lbnRcIiBbY29udGVudF09XCJjYXJkXCJcclxuICAgICAgICAgICAgICAgIFttbENvdXJzZV09XCJjb250ZW50XCIgW2luZGV4XT1cImkrMVwiIFtwYXRoU2V0XT1cInBhdGhTZXRcIiBbaGllcmFyY2h5TWFwRGF0YV09XCJoaWVyYXJjaHlNYXBEYXRhXCJcclxuICAgICAgICAgICAgICAgIFtiYXRjaERhdGFdPVwiYmF0Y2hEYXRhXCIgW2Jhc2VDb250ZW50UmVhZERhdGFdPVwiYmFzZUNvbnRlbnRSZWFkRGF0YVwiPjwvd3Mtd2lkZ2V0LWFwcC10b2MtY29udGVudC1jYXJkLXYyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==