@sunbird-cb/toc 0.0.9 → 0.0.11

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 +272 -248
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1202 -1148
  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 +2938 -2907
  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 +333 -313
  143. package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
  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 +599 -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 +73 -71
  164. package/esm2022/sunbird-cb-toc.mjs +4 -4
  165. package/fesm2022/sunbird-cb-toc.mjs +24942 -24771
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  167. package/index.d.ts +6 -5
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
  169. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
  170. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -31
  171. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
  172. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -15
  173. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
  174. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -20
  175. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
  176. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -22
  177. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
  178. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -15
  179. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
  180. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -22
  181. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
  182. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
  183. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
  184. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -9
  185. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
  186. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -11
  187. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
  188. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -12
  189. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
  190. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -18
  191. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
  192. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -14
  193. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
  194. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -11
  195. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
  196. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -17
  197. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
  198. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -14
  199. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
  200. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -199
  201. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
  202. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -16
  203. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
  204. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -10
  205. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
  206. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -38
  207. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
  208. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -19
  209. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
  210. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -11
  211. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
  212. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -183
  213. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
  214. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -41
  215. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
  216. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -54
  217. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
  218. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -47
  219. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
  220. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +57 -49
  221. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
  222. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +186 -171
  223. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
  224. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -8
  225. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
  226. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -16
  227. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
  228. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -40
  229. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
  230. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -21
  231. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
  232. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -45
  233. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
  234. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -10
  235. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
  236. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -10
  237. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
  238. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -128
  239. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
  240. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
  241. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
  242. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -29
  243. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
  244. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -9
  245. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
  246. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -7
  247. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
  248. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -7
  249. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
  250. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -28
  251. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
  252. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -24
  253. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
  254. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -14
  255. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
  256. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -9
  257. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
  258. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -12
  259. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
  260. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -10
  261. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
  262. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -22
  263. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
  264. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -8
  265. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
  266. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -18
  267. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
  268. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -8
  269. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
  270. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +16 -15
  271. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
  272. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -35
  273. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
  274. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -19
  275. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
  276. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -14
  277. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
  278. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -13
  279. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
  280. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -11
  281. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
  282. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -11
  283. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
  284. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -15
  285. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
  286. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -10
  287. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
  288. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -16
  289. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
  290. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -11
  291. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
  292. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -34
  293. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
  294. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -17
  295. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
  296. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -15
  297. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
  298. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -15
  299. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
  300. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -21
  301. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
  302. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -12
  303. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
  304. package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -21
  305. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
  306. package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -9
  307. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
  308. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -47
  309. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
  310. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -14
  311. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
  312. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -22
  313. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
  314. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -19
  315. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
  316. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -15
  317. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
  318. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
  319. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
  320. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -21
  321. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
  322. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -18
  323. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
  324. package/lib/_collection-api.d.ts +35 -34
  325. package/lib/_collection-api.d.ts.map +1 -0
  326. package/lib/_constants/widget-content.constants.d.ts +8 -7
  327. package/lib/_constants/widget-content.constants.d.ts.map +1 -0
  328. package/lib/_directives/tooltip.directive.d.ts +18 -17
  329. package/lib/_directives/tooltip.directive.d.ts.map +1 -0
  330. package/lib/_models/common.model.d.ts +4 -3
  331. package/lib/_models/common.model.d.ts.map +1 -0
  332. package/lib/_models/error.model.d.ts +6 -5
  333. package/lib/_models/error.model.d.ts.map +1 -0
  334. package/lib/_pipes/highlight.pipe.d.ts +11 -10
  335. package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
  336. package/lib/_services/rating.service.d.ts +19 -18
  337. package/lib/_services/rating.service.d.ts.map +1 -0
  338. package/lib/_services/samuhik-charcha.service.d.ts +14 -13
  339. package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
  340. package/lib/_services/viewer-route-util.d.ts +9 -8
  341. package/lib/_services/viewer-route-util.d.ts.map +1 -0
  342. package/lib/_services/widget-content.model.d.ts +516 -515
  343. package/lib/_services/widget-content.model.d.ts.map +1 -0
  344. package/lib/_services/widget-content.service.d.ts +102 -101
  345. package/lib/_services/widget-content.service.d.ts.map +1 -0
  346. package/lib/_shared/translate-loader.factory.d.ts +8 -7
  347. package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
  348. package/lib/app-toc-lib.module.d.ts +89 -88
  349. package/lib/app-toc-lib.module.d.ts.map +1 -0
  350. package/lib/collection.config.d.ts +160 -159
  351. package/lib/collection.config.d.ts.map +1 -0
  352. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -17
  353. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
  354. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -225
  355. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
  356. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -78
  357. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
  358. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -22
  359. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
  360. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -31
  361. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
  362. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -47
  363. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
  364. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -14
  365. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
  366. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -21
  367. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
  368. package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
  369. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  370. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +415 -408
  371. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
  372. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -47
  373. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
  374. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -22
  375. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
  376. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -14
  377. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
  378. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -149
  379. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
  380. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -42
  381. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
  382. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -27
  383. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
  384. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -15
  385. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
  386. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -195
  387. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
  388. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -44
  389. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
  390. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -54
  391. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
  392. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -18
  393. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
  394. package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
  395. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
  396. package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -20
  397. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
  398. package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -13
  399. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
  400. package/lib/models/app-toc-analytics.model.d.ts +153 -152
  401. package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
  402. package/lib/models/app-toc.model.d.ts +85 -84
  403. package/lib/models/app-toc.model.d.ts.map +1 -0
  404. package/lib/models/auto-complete.model.d.ts +28 -27
  405. package/lib/models/auto-complete.model.d.ts.map +1 -0
  406. package/lib/models/card-content.model.d.ts +20 -19
  407. package/lib/models/card-content.model.d.ts.map +1 -0
  408. package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
  409. package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
  410. package/lib/models/discussion-forum.model.d.ts +41 -40
  411. package/lib/models/discussion-forum.model.d.ts.map +1 -0
  412. package/lib/models/goal.model.d.ts +23 -22
  413. package/lib/models/goal.model.d.ts.map +1 -0
  414. package/lib/models/meta-tag.model.d.ts +7 -6
  415. package/lib/models/meta-tag.model.d.ts.map +1 -0
  416. package/lib/models/playlist.model.d.ts +24 -23
  417. package/lib/models/playlist.model.d.ts.map +1 -0
  418. package/lib/models/profile-revamp.model.d.ts +15 -14
  419. package/lib/models/profile-revamp.model.d.ts.map +1 -0
  420. package/lib/models/rating.model.d.ts +18 -17
  421. package/lib/models/rating.model.d.ts.map +1 -0
  422. package/lib/models/user-profile.model.d.ts +38 -37
  423. package/lib/models/user-profile.model.d.ts.map +1 -0
  424. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
  425. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
  426. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -12
  427. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
  428. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -16
  429. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
  430. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -12
  431. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
  432. package/lib/resolvers/app-toc-resolver.service.d.ts +17 -16
  433. package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
  434. package/lib/resolvers/config-resolver.service.d.ts +12 -11
  435. package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
  436. package/lib/resolvers/profile-resolver.service.d.ts +12 -11
  437. package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
  438. package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
  439. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
  440. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -19
  441. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  442. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -8
  443. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
  444. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -8
  445. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
  446. package/lib/services/access-control.service.d.ts +30 -29
  447. package/lib/services/access-control.service.d.ts.map +1 -0
  448. package/lib/services/action.service.d.ts +10 -9
  449. package/lib/services/action.service.d.ts.map +1 -0
  450. package/lib/services/app-toc-v2.service.d.ts +17 -16
  451. package/lib/services/app-toc-v2.service.d.ts.map +1 -0
  452. package/lib/services/app-toc.service.d.ts +241 -235
  453. package/lib/services/app-toc.service.d.ts.map +1 -0
  454. package/lib/services/certificate.service.d.ts +43 -42
  455. package/lib/services/certificate.service.d.ts.map +1 -0
  456. package/lib/services/discuss-utils.service.d.ts +34 -33
  457. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  458. package/lib/services/editor.service.d.ts +18 -17
  459. package/lib/services/editor.service.d.ts.map +1 -0
  460. package/lib/services/load-check.service.d.ts +9 -8
  461. package/lib/services/load-check.service.d.ts.map +1 -0
  462. package/lib/services/loader.service.d.ts +17 -16
  463. package/lib/services/loader.service.d.ts.map +1 -0
  464. package/lib/services/mobile-apps.service.d.ts +39 -38
  465. package/lib/services/mobile-apps.service.d.ts.map +1 -0
  466. package/lib/services/netcore.service.d.ts +34 -33
  467. package/lib/services/netcore.service.d.ts.map +1 -0
  468. package/lib/services/nps-grid.service.d.ts +16 -15
  469. package/lib/services/nps-grid.service.d.ts.map +1 -0
  470. package/lib/services/otp.service.d.ts +21 -20
  471. package/lib/services/otp.service.d.ts.map +1 -0
  472. package/lib/services/profile-v2.service.d.ts +21 -20
  473. package/lib/services/profile-v2.service.d.ts.map +1 -0
  474. package/lib/services/reset-ratings.service.d.ts +9 -8
  475. package/lib/services/reset-ratings.service.d.ts.map +1 -0
  476. package/lib/services/resource-download-helper.service.d.ts +30 -29
  477. package/lib/services/resource-download-helper.service.d.ts.map +1 -0
  478. package/lib/services/timer.service.d.ts +10 -9
  479. package/lib/services/timer.service.d.ts.map +1 -0
  480. package/lib/services/title-tag.service.d.ts +22 -21
  481. package/lib/services/title-tag.service.d.ts.map +1 -0
  482. package/lib/services/user-profile.service.d.ts +25 -24
  483. package/lib/services/user-profile.service.d.ts.map +1 -0
  484. package/lib/services/viewer-data.service.d.ts +59 -58
  485. package/lib/services/viewer-data.service.d.ts.map +1 -0
  486. package/lib/services/viewer-util.service.d.ts +77 -76
  487. package/lib/services/viewer-util.service.d.ts.map +1 -0
  488. package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -56
  489. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
  490. package/lib/share-toc/share-toc.module.d.ts +33 -32
  491. package/lib/share-toc/share-toc.module.d.ts.map +1 -0
  492. package/package.json +1 -1
  493. package/public-api.d.ts +59 -56
  494. package/public-api.d.ts.map +1 -0
  495. package/sunbird-cb-toc.d.ts.map +1 -0
@@ -1,249 +1,249 @@
1
- import { Component, Input } from '@angular/core';
2
- import { NsContent } from '../../_services/widget-content.model';
3
- import { viewerRouteGenerator } from '../../_services/viewer-route-util';
4
- /* tslint:disable*/
5
- import _ from 'lodash';
6
- import { CertificateDialogComponent } from '../../_collection/_common/certificate-dialog/certificate-dialog.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@sunbird-cb/utils-v2";
9
- import * as i2 from "@angular/material/legacy-dialog";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@angular/router";
12
- import * as i5 from "@angular/material/icon";
13
- import * as i6 from "@angular/material/legacy-button";
14
- import * as i7 from "@angular/material/legacy-menu";
15
- import * as i8 from "@angular/material/legacy-tooltip";
16
- import * as i9 from "ng-circle-progress";
17
- import * as i10 from "@ngx-translate/core";
18
- export class AppTocContentCardComponent {
19
- constructor(events, dialog) {
20
- this.events = events;
21
- this.dialog = dialog;
22
- this.content = null;
23
- this.expandAll = false;
24
- this.forPreview = false;
25
- this.hasContentStructure = false;
26
- this.enumContentTypes = NsContent.EDisplayContentTypes;
27
- this.contentStructure = {
28
- assessment: 0,
29
- finalTest: 0,
30
- course: 0,
31
- handsOn: 0,
32
- interactiveVideo: 0,
33
- learningModule: 0,
34
- other: 0,
35
- pdf: 0,
36
- survey: 0,
37
- podcast: 0,
38
- practiceTest: 0,
39
- quiz: 0,
40
- video: 0,
41
- webModule: 0,
42
- webPage: 0,
43
- youtube: 0,
44
- interactivecontent: 0,
45
- offlineSession: 0,
46
- };
47
- this.defaultThumbnail = '';
48
- this.viewChildren = false;
49
- }
50
- ngOnInit() {
51
- this.evaluateImmediateChildrenStructure();
52
- // this.route.data.subscribe(data => {
53
- // this.defaultThumbnail = data.configData.data.logos.defaultContent
54
- // }
55
- // )
56
- }
57
- ngOnChanges(changes) {
58
- for (const property in changes) {
59
- if (property === 'expandAll') {
60
- this.viewChildren = this.expandAll;
61
- }
62
- }
63
- }
64
- get isCollection() {
65
- if (this.content) {
66
- return this.content.mimeType === NsContent.EMimeTypes.COLLECTION;
67
- }
68
- return false;
69
- }
70
- get isResource() {
71
- if (this.content) {
72
- return (this.content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE
73
- // || this.content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT
74
- || this.content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE
75
- || this.content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT
76
- || this.content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT);
77
- }
78
- return false;
79
- }
80
- get resourceLink() {
81
- if (this.content) {
82
- let url = viewerRouteGenerator(this.content.identifier, this.content.mimeType, this.rootId, this.rootContentType, this.forPreview, this.content.primaryCategory, this.batchId);
83
- /* tslint:disable-next-line */
84
- // console.log(url,'=====> content card url link <========')
85
- return url;
86
- }
87
- return { url: '', queryParams: {} };
88
- }
89
- progressColor() {
90
- // if (this.currentProgress <= 30) {
91
- // return '#D13924'
92
- // } if (this.currentProgress > 30 && this.currentProgress <= 70) {
93
- // return '#E99E38'
94
- // }
95
- // if (this.currentProgress > 70 && this.currentProgress <= 100) {
96
- // return '#1D8923'
97
- // }
98
- return '#1D8923';
99
- }
100
- progressColor2() {
101
- return '#f27d00';
102
- }
103
- evaluateImmediateChildrenStructure() {
104
- if (this.content && this.content.children && this.content.children.length) {
105
- this.content.children.forEach((child) => {
106
- if (child.primaryCategory === NsContent.EPrimaryCategory.COURSE) {
107
- this.contentStructure.course += 1;
108
- }
109
- else if (child.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT) {
110
- this.contentStructure.other += 1;
111
- }
112
- else if (child.primaryCategory === NsContent.EPrimaryCategory.MODULE) {
113
- this.contentStructure.learningModule += 1;
114
- }
115
- else if (child.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION) {
116
- this.contentStructure.offlineSession += 1;
117
- }
118
- else if (child.primaryCategory === NsContent.EPrimaryCategory.RESOURCE) {
119
- switch (child.mimeType) {
120
- case NsContent.EMimeTypes.HANDS_ON:
121
- this.contentStructure.handsOn += 1;
122
- break;
123
- case NsContent.EMimeTypes.MP3:
124
- this.contentStructure.podcast += 1;
125
- break;
126
- case NsContent.EMimeTypes.MP4:
127
- case NsContent.EMimeTypes.M3U8:
128
- this.contentStructure.video += 1;
129
- break;
130
- case NsContent.EMimeTypes.INTERACTION:
131
- this.contentStructure.interactiveVideo += 1;
132
- break;
133
- case NsContent.EMimeTypes.PDF:
134
- this.contentStructure.pdf += 1;
135
- break;
136
- case NsContent.EMimeTypes.OFFLINE_SESSION:
137
- this.contentStructure.offlineSession += 1;
138
- break;
139
- case NsContent.EMimeTypes.SURVEY:
140
- this.contentStructure.survey += 1;
141
- break;
142
- case NsContent.EMimeTypes.HTML:
143
- this.contentStructure.webPage += 1;
144
- break;
145
- case NsContent.EMimeTypes.QUIZ:
146
- if (child.resourceType === 'Assessment') {
147
- this.contentStructure.assessment += 1;
148
- }
149
- else {
150
- this.contentStructure.quiz += 1;
151
- }
152
- break;
153
- case NsContent.EMimeTypes.PRACTICE_RESOURCE:
154
- // case NsContent.EMimeTypes.FINAL_ASSESSMENT:
155
- // case NsContent.EMimeTypes.PRACTICE_RESOURCE:
156
- this.contentStructure.practiceTest += 1;
157
- break;
158
- case NsContent.EMimeTypes.WEB_MODULE:
159
- this.contentStructure.webModule += 1;
160
- break;
161
- case NsContent.EMimeTypes.YOUTUBE:
162
- this.contentStructure.youtube += 1;
163
- break;
164
- default:
165
- this.contentStructure.other += 1;
166
- break;
167
- }
168
- }
169
- });
170
- }
171
- for (const key in this.contentStructure) {
172
- if (this.contentStructure[key] > 0) {
173
- this.hasContentStructure = true;
174
- }
175
- }
176
- }
177
- get contextPath() {
178
- return {
179
- contextId: this.rootId,
180
- contextPath: this.rootContentType,
181
- batchId: this.batchId,
182
- };
183
- }
184
- contentTrackBy(_index, content) {
185
- if (!content) {
186
- return null;
187
- }
188
- return content.identifier;
189
- }
190
- raiseTelemetry() {
191
- // if (this.forPreview) { return }
192
- if (this.content) {
193
- this.events.raiseInteractTelemetry({
194
- type: 'click',
195
- subType: `card-tocContentCard`,
196
- // id: this.content.identifier || '',
197
- }, {
198
- // contentId: this.content.identifier || '',
199
- // contentType: this.content.primaryCategory,
200
- id: this.content.identifier || '',
201
- type: this.content.primaryCategory,
202
- rollup: {
203
- l1: this.rootId || '',
204
- },
205
- ver: `${this.content.version}${''}`,
206
- }, {
207
- pageIdExt: `${_.camelCase(this.content.primaryCategory)}-card`,
208
- module: _.camelCase(this.content.primaryCategory),
209
- });
210
- }
211
- }
212
- get isAllowed() {
213
- if (this.content) {
214
- return !(NsContent.UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS.indexOf(this.content.mimeType) >= 0);
215
- }
216
- return false;
217
- }
218
- get isEnabled() {
219
- return false;
220
- }
221
- openCertificateDialog(certData) {
222
- const cet = certData;
223
- this.dialog.open(CertificateDialogComponent, {
224
- // height: '400px',
225
- width: '1300px',
226
- data: { cet },
227
- // panelClass: 'custom-dialog-container',
228
- });
229
- }
230
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, deps: [{ token: i1.EventService }, { token: i2.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
231
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: { content: "content", expandAll: "expandAll", rootId: "rootId", rootContentType: "rootContentType", forPreview: "forPreview", batchId: "batchId" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content\">\r\n <ng-container *ngIf=\"isCollection\">\r\n <div class=\"flex flex-col position-relative\">\r\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n {{ content?.name }} \r\n </p>\r\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\r\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\r\n <span class=\"view-certificate-wrapper\">\r\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\r\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\r\n </span>\r\n </a>\r\n </ng-container>\r\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.resource' | translate}}</span>\r\n </div>\r\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.module' | translate}}</span>\r\n </div>\r\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.course' | translate}}</span>\r\n </div>\r\n </div>\r\n <div>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\r\n }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\r\n [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\r\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\r\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\r\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\r\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\r\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\r\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\r\n [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\r\n <div class=\"child-structure\"> -->\r\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\r\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\r\n <ng-container>{{ contentStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\r\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\r\n <ng-container> {{ contentStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\r\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\r\n Interactive Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\r\n Interactive Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\r\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\r\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\r\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\r\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\r\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\r\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\r\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\r\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\r\n <ng-container>{{ contentStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\r\n </span>\r\n </div>\r\n </div> -->\r\n <div class=\"see-all-container\">\r\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\r\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\r\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\r\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\r\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\r\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\r\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\r\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\r\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\r\n </ws-app-toc-content-card>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"isResource\" class=\"resource-container\">\r\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type-icon> -->\r\n <!-- <div class=\"img-container\"> -->\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container> -->\r\n <!-- </div> -->\r\n\r\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\r\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\r\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\r\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\r\n {{ content?.name }}\r\n </p>\r\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\r\n </div>\r\n <div class=\"resicons ws-mat-black60-text\">\r\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\r\n content?.mimeType ==='application/x-mpegURL'\">\r\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\r\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/pdf'\">\r\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\r\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\r\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\r\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\r\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\r\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\r\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\r\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\r\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\r\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Resource</span>\r\n </div>\r\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Module</span>\r\n </div>\r\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Course</span>\r\n </div> -->\r\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\r\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\r\n \r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n \r\n </ng-container>\r\n <ng-template #elseBlock>\r\n <circle-progress class=\"flex items-center progress\"\r\n [percent]=\"0\"\r\n [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\"\r\n [outerStrokeColor]=\"'#808080'\"\r\n [innerStrokeColor]=\"'#808080'\"\r\n [animation]=\"true\"\r\n [space]=\"-3\"\r\n [showUnits]=\"false\"\r\n [animationDuration]=\"300\"\r\n [showTitle]=\"false\"\r\n [backgroundPadding]=\"0\"\r\n [backgroundPadding]=\"-9\"\r\n [outerStrokeLinecap]=\"'butt'\"\r\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\r\n [showSubtitle]=\"false\" \r\n [showInnerStroke]=\"true\" \r\n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\r\n <!-- <p>no data</p> -->\r\n </ng-template>\r\n </div>\r\n\r\n \r\n\r\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button> -->\r\n </div>\r\n <!-- <div class=\"resource-meta width-expand\">\r\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\r\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h3>\r\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h1>\r\n </a>\r\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\r\n </span>\r\n </div> -->\r\n </div>\r\n</ng-container>\r\n\r\n<mat-menu #buttonMenu=\"matMenu\">\r\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\r\n class=\"flex flex-middle\">\r\n <mat-icon>toc</mat-icon>\r\n <h3 class=\"margin-remove\" >\r\n {{'apptoccontentcard.viewDetails' | translate}}\r\n </h3>\r\n </a>\r\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\r\n <!-- <div mat-menu-item>\r\n <ws-widget-btn-content-download [widgetData]=\"\r\n content\r\n | pipePartialContent\r\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\r\n \"></ws-widget-btn-content-download>\r\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\r\n </ws-widget-btn-content-like>\r\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\r\n <ws-widget-btn-goals></ws-widget-btn-goals>\r\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\r\n </div> -->\r\n</mat-menu>\r\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.CircleProgressComponent, selector: "circle-progress", inputs: ["name", "class", "backgroundGradient", "backgroundColor", "backgroundGradientStopColor", "backgroundOpacity", "backgroundStroke", "backgroundStrokeWidth", "backgroundPadding", "radius", "space", "percent", "toFixed", "maxPercent", "renderOnClick", "units", "unitsFontSize", "unitsFontWeight", "unitsColor", "outerStrokeGradient", "outerStrokeWidth", "outerStrokeColor", "outerStrokeGradientStopColor", "outerStrokeLinecap", "innerStrokeColor", "innerStrokeWidth", "titleFormat", "title", "titleColor", "titleFontSize", "titleFontWeight", "subtitleFormat", "subtitle", "subtitleColor", "subtitleFontSize", "subtitleFontWeight", "imageSrc", "imageHeight", "imageWidth", "animation", "animateTitle", "animateSubtitle", "animationDuration", "showTitle", "showSubtitle", "showUnits", "showImage", "showBackground", "showInnerStroke", "clockwise", "responsive", "startFromZero", "showZeroOuterStroke", "lazy", "options"], outputs: ["onClick"] }, { kind: "component", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: ["content", "expandAll", "rootId", "rootContentType", "forPreview", "batchId"] }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
232
- }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, decorators: [{
234
- type: Component,
235
- args: [{ selector: 'ws-app-toc-content-card', template: "<ng-container *ngIf=\"content\">\r\n <ng-container *ngIf=\"isCollection\">\r\n <div class=\"flex flex-col position-relative\">\r\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n {{ content?.name }} \r\n </p>\r\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\r\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\r\n <span class=\"view-certificate-wrapper\">\r\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\r\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\r\n </span>\r\n </a>\r\n </ng-container>\r\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.resource' | translate}}</span>\r\n </div>\r\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.module' | translate}}</span>\r\n </div>\r\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.course' | translate}}</span>\r\n </div>\r\n </div>\r\n <div>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\r\n }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\r\n [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\r\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\r\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\r\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\r\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\r\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\r\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\r\n [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\r\n <div class=\"child-structure\"> -->\r\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\r\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\r\n <ng-container>{{ contentStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\r\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\r\n <ng-container> {{ contentStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\r\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\r\n Interactive Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\r\n Interactive Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\r\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\r\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\r\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\r\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\r\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\r\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\r\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\r\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\r\n <ng-container>{{ contentStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\r\n </span>\r\n </div>\r\n </div> -->\r\n <div class=\"see-all-container\">\r\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\r\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\r\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\r\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\r\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\r\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\r\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\r\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\r\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\r\n </ws-app-toc-content-card>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"isResource\" class=\"resource-container\">\r\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type-icon> -->\r\n <!-- <div class=\"img-container\"> -->\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container> -->\r\n <!-- </div> -->\r\n\r\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\r\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\r\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\r\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\r\n {{ content?.name }}\r\n </p>\r\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\r\n </div>\r\n <div class=\"resicons ws-mat-black60-text\">\r\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\r\n content?.mimeType ==='application/x-mpegURL'\">\r\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\r\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/pdf'\">\r\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\r\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\r\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\r\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\r\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\r\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\r\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\r\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\r\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\r\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Resource</span>\r\n </div>\r\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Module</span>\r\n </div>\r\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Course</span>\r\n </div> -->\r\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\r\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\r\n \r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n \r\n </ng-container>\r\n <ng-template #elseBlock>\r\n <circle-progress class=\"flex items-center progress\"\r\n [percent]=\"0\"\r\n [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\"\r\n [outerStrokeColor]=\"'#808080'\"\r\n [innerStrokeColor]=\"'#808080'\"\r\n [animation]=\"true\"\r\n [space]=\"-3\"\r\n [showUnits]=\"false\"\r\n [animationDuration]=\"300\"\r\n [showTitle]=\"false\"\r\n [backgroundPadding]=\"0\"\r\n [backgroundPadding]=\"-9\"\r\n [outerStrokeLinecap]=\"'butt'\"\r\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\r\n [showSubtitle]=\"false\" \r\n [showInnerStroke]=\"true\" \r\n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\r\n <!-- <p>no data</p> -->\r\n </ng-template>\r\n </div>\r\n\r\n \r\n\r\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button> -->\r\n </div>\r\n <!-- <div class=\"resource-meta width-expand\">\r\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\r\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h3>\r\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h1>\r\n </a>\r\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\r\n </span>\r\n </div> -->\r\n </div>\r\n</ng-container>\r\n\r\n<mat-menu #buttonMenu=\"matMenu\">\r\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\r\n class=\"flex flex-middle\">\r\n <mat-icon>toc</mat-icon>\r\n <h3 class=\"margin-remove\" >\r\n {{'apptoccontentcard.viewDetails' | translate}}\r\n </h3>\r\n </a>\r\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\r\n <!-- <div mat-menu-item>\r\n <ws-widget-btn-content-download [widgetData]=\"\r\n content\r\n | pipePartialContent\r\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\r\n \"></ws-widget-btn-content-download>\r\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\r\n </ws-widget-btn-content-like>\r\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\r\n <ws-widget-btn-goals></ws-widget-btn-goals>\r\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\r\n </div> -->\r\n</mat-menu>\r\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"] }]
236
- }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialog }]; }, propDecorators: { content: [{
237
- type: Input
238
- }], expandAll: [{
239
- type: Input
240
- }], rootId: [{
241
- type: Input
242
- }], rootContentType: [{
243
- type: Input
244
- }], forPreview: [{
245
- type: Input
246
- }], batchId: [{
247
- type: Input
248
- }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUd4RSxtQkFBbUI7QUFDbkIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJFQUEyRSxDQUFBOzs7Ozs7Ozs7Ozs7QUFRdEgsTUFBTSxPQUFPLDBCQUEwQjtJQStCckMsWUFDVSxNQUFvQixFQUNwQixNQUFpQjtRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFoQ2xCLFlBQU8sR0FBOEIsSUFBSSxDQUFBO1FBQ3pDLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFHakIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUUzQix3QkFBbUIsR0FBRyxLQUFLLENBQUE7UUFDM0IscUJBQWdCLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFBO1FBQ2pELHFCQUFnQixHQUEyQjtZQUN6QyxVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFD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Q0FBQzsrR0F6T1UsMEJBQTBCO21HQUExQiwwQkFBMEIsZ1BDZnZDLHdzeEJBcVdBLHV3TUR0VmEsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtpSUFLMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCdcclxuaW1wb3J0IHsgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvdmlld2VyLXJvdXRlLXV0aWwnXHJcbmltcG9ydCB7IE5zQXBwVG9jIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10b2MubW9kZWwnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgQ2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9fY29sbGVjdGlvbi9fY29tbW9uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd3MtYXBwLXRvYy1jb250ZW50LWNhcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWNvbnRlbnQtY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvY0NvbnRlbnRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXHJcbiAgQElucHV0KCkgZXhwYW5kQWxsID0gZmFsc2VcclxuICBASW5wdXQoKSByb290SWQhOiBzdHJpbmdcclxuICBASW5wdXQoKSByb290Q29udGVudFR5cGUhOiBzdHJpbmdcclxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gZmFsc2VcclxuICBASW5wdXQoKSBiYXRjaElkITogc3RyaW5nXHJcbiAgaGFzQ29udGVudFN0cnVjdHVyZSA9IGZhbHNlXHJcbiAgZW51bUNvbnRlbnRUeXBlcyA9IE5zQ29udGVudC5FRGlzcGxheUNvbnRlbnRUeXBlc1xyXG4gIGNvbnRlbnRTdHJ1Y3R1cmU6IE5zQXBwVG9jLklUb2NTdHJ1Y3R1cmUgPSB7XHJcbiAgICBhc3Nlc3NtZW50OiAwLFxyXG4gICAgZmluYWxUZXN0OiAwLFxyXG4gICAgY291cnNlOiAwLFxyXG4gICAgaGFuZHNPbjogMCxcclxuICAgIGludGVyYWN0aXZlVmlkZW86IDAsXHJcbiAgICBsZWFybmluZ01vZHVsZTogMCxcclxuICAgIG90aGVyOiAwLFxyXG4gICAgcGRmOiAwLFxyXG4gICAgc3VydmV5OiAwLFxyXG4gICAgcG9kY2FzdDogMCxcclxuICAgIHByYWN0aWNlVGVzdDogMCxcclxuICAgIHF1aXo6IDAsXHJcbiAgICB2aWRlbzogMCxcclxuICAgIHdlYk1vZHVsZTogMCxcclxuICAgIHdlYlBhZ2U6IDAsXHJcbiAgICB5b3V0dWJlOiAwLFxyXG4gICAgaW50ZXJhY3RpdmVjb250ZW50OiAwLFxyXG4gICAgb2ZmbGluZVNlc3Npb246IDAsXHJcbiAgfVxyXG4gIGRlZmF1bHRUaHVtYm5haWwgPSAnJ1xyXG4gIHZpZXdDaGlsZHJlbiA9IGZhbHNlXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZXZhbHVhdGVJbW1lZGlhdGVDaGlsZHJlblN0cnVjdHVyZSgpXHJcbiAgICAvLyB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMuZGVmYXVsdFRodW1ibmFpbCA9IGRhdGEuY29uZmlnRGF0YS5kYXRhLmxvZ29zLmRlZmF1bHRDb250ZW50XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIClcclxuICAgIFxyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNoYW5nZXMpIHtcclxuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZXhwYW5kQWxsJykge1xyXG4gICAgICAgIHRoaXMudmlld0NoaWxkcmVuID0gdGhpcy5leHBhbmRBbGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgaXNDb2xsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb250ZW50Lm1pbWVUeXBlID09PSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5DT0xMRUNUSU9OXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgZ2V0IGlzUmVzb3VyY2UoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0VcclxuICAgICAgICAvLyB8fCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1RcclxuICAgICAgICB8fCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUkFDVElDRV9SRVNPVVJDRVxyXG4gICAgICAgIHx8IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkZJTkFMX0FTU0VTU01FTlRcclxuICAgICAgICB8fCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT01QX0FTU0VTU01FTlRcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG4gIGdldCByZXNvdXJjZUxpbmsoKTogeyB1cmw6IHN0cmluZzsgcXVlcnlQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIGxldCB1cmwgPSB2aWV3ZXJSb3V0ZUdlbmVyYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcclxuICAgICAgICB0aGlzLmNvbnRlbnQubWltZVR5cGUsXHJcbiAgICAgICAgdGhpcy5yb290SWQsXHJcbiAgICAgICAgdGhpcy5yb290Q29udGVudFR5cGUsXHJcbiAgICAgICAgdGhpcy5mb3JQcmV2aWV3LFxyXG4gICAgICAgIHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXHJcbiAgICAgICAgdGhpcy5iYXRjaElkXHJcbiAgICAgIClcclxuICAgICAgXHJcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyh1cmwsJz09PT09PiBjb250ZW50IGNhcmQgdXJsIGxpbmsgPD09PT09PT09JylcclxuICAgICAgcmV0dXJuIHVybFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdXJsOiAnJywgcXVlcnlQYXJhbXM6IHt9IH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcm9ncmVzc0NvbG9yKCk6IHN0cmluZyB7XHJcbiAgICAvLyBpZiAodGhpcy5jdXJyZW50UHJvZ3Jlc3MgPD0gMzApIHtcclxuICAgIC8vICAgcmV0dXJuICcjRDEzOTI0J1xyXG4gICAgLy8gfSBpZiAodGhpcy5jdXJyZW50UHJvZ3Jlc3MgPiAzMCAmJiB0aGlzLmN1cnJlbnRQcm9ncmVzcyA8PSA3MCkge1xyXG4gICAgLy8gICByZXR1cm4gJyNFOTlFMzgnXHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodGhpcy5jdXJyZW50UHJvZ3Jlc3MgPiA3MCAmJiB0aGlzLmN1cnJlbnRQcm9ncmVzcyA8PSAxMDApIHtcclxuICAgIC8vICAgcmV0dXJuICcjMUQ4OTIzJ1xyXG4gICAgLy8gfVxyXG4gICBcclxuICAgIHJldHVybiAnIzFEODkyMydcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcm9ncmVzc0NvbG9yMigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcjZjI3ZDAwJ1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZXZhbHVhdGVJbW1lZGlhdGVDaGlsZHJlblN0cnVjdHVyZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNoaWxkcmVuICYmIHRoaXMuY29udGVudC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb250ZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBOc0NvbnRlbnQuSUNvbnRlbnQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5jb3Vyc2UgKz0gMVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vdGhlciArPSAxXHJcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSkge1xyXG4gICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmxlYXJuaW5nTW9kdWxlICs9IDFcclxuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub2ZmbGluZVNlc3Npb24gKz0gMVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5SRVNPVVJDRSkge1xyXG4gICAgICAgICAgc3dpdGNoIChjaGlsZC5taW1lVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkhBTkRTX09OOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5oYW5kc09uICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk1QMzpcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucG9kY2FzdCArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5NUDQ6XHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTTNVODpcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUudmlkZW8gKz0gMVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSU5URVJBQ1RJT046XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmludGVyYWN0aXZlVmlkZW8gKz0gMVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUERGOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5wZGYgKz0gMVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuT0ZGTElORV9TRVNTSU9OOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vZmZsaW5lU2Vzc2lvbiArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5TVVJWRVk6XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLnN1cnZleSArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS53ZWJQYWdlICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlFVSVo6XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkLnJlc291cmNlVHlwZSA9PT0gJ0Fzc2Vzc21lbnQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUuYXNzZXNzbWVudCArPSAxXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5xdWl6ICs9IDFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QUkFDVElDRV9SRVNPVVJDRTpcclxuICAgICAgICAgICAgICAvLyBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkZJTkFMX0FTU0VTU01FTlQ6XHJcbiAgICAgICAgICAgICAgLy8gY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QUkFDVElDRV9SRVNPVVJDRTpcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucHJhY3RpY2VUZXN0ICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLldFQl9NT0RVTEU6XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLndlYk1vZHVsZSArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5ZT1VUVUJFOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS55b3V0dWJlICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vdGhlciArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUpIHtcclxuICAgICAgaWYgKHRoaXMuY29udGVudFN0cnVjdHVyZVtrZXldID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzQ29udGVudFN0cnVjdHVyZSA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbnRleHRQYXRoKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udGV4dElkOiB0aGlzLnJvb3RJZCxcclxuICAgICAgY29udGV4dFBhdGg6IHRoaXMucm9vdENvbnRlbnRUeXBlLFxyXG4gICAgICBiYXRjaElkOiB0aGlzLmJhdGNoSWQsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udGVudFRyYWNrQnkoX2luZGV4OiBudW1iZXIsIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCkge1xyXG4gICAgaWYgKCFjb250ZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGVudC5pZGVudGlmaWVyXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmFpc2VUZWxlbWV0cnkoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5mb3JQcmV2aWV3KSB7IHJldHVybiB9XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ2NsaWNrJyxcclxuICAgICAgICAgIHN1YlR5cGU6IGBjYXJkLXRvY0NvbnRlbnRDYXJkYCxcclxuICAgICAgICAgIC8vIGlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC8vIGNvbnRlbnRJZDogdGhpcy5jb250ZW50LmlkZW50aWZpZXIgfHwgJycsXHJcbiAgICAgICAgICAvLyBjb250ZW50VHlwZTogdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcclxuICAgICAgICAgIGlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcclxuICAgICAgICAgIHR5cGU6IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXHJcbiAgICAgICAgICByb2xsdXA6IHtcclxuICAgICAgICAgICAgbDE6IHRoaXMucm9vdElkIHx8ICcnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHZlcjogYCR7dGhpcy5jb250ZW50LnZlcnNpb259JHsnJ31gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZSh0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5KX0tY2FyZGAsXHJcbiAgICAgICAgICBtb2R1bGU6IF8uY2FtZWxDYXNlKHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkpLFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpc0FsbG93ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHJldHVybiAhKE5zQ29udGVudC5VTl9TVVBQT1JURURfREFUQV9UWVBFU19GT1JfTk9OX0JBVENIX1VTRVJTLmluZGV4T2YodGhpcy5jb250ZW50Lm1pbWVUeXBlKSA+PSAwKVxyXG4gICAgfSByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgb3BlbkNlcnRpZmljYXRlRGlhbG9nKGNlcnREYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGNldCA9IGNlcnREYXRhXHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIC8vIGhlaWdodDogJzQwMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMzAwcHgnLFxyXG4gICAgICBkYXRhOiB7IGNldCB9LFxyXG4gICAgICAvLyBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInLFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDb2xsZWN0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb2xsZWN0aW9uIHctYXV0byBzbTp3LTEwMCBwYWRkaW5nLXJpZ2h0LXhsXCI+XHJcbiAgICAgICAgPCEtLSA8aW1nIGNsYXNzPVwiY2FyZC10aHVtYm5haWwgd3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kXCIgW3NyY109XCJjb250ZW50Py5hcHBJY29uXCIgYWx0PVwiVGh1bWJuYWlsXCJcclxuICAgICAgICAgIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCIgW3dzVXRpbHNEZWZhdWx0VGh1bWJuYWlsXT1cImRlZmF1bHRUaHVtYm5haWxcIiAvPiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LXdyYXAgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiIFtuZ0NsYXNzXT1cInsnY3Vyc29yLXBvaW50ZXInOiAhaXNFbmFibGVkfVwiIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWFyZ2luLXJlbW92ZSB0ZXh0LXRydW5jYXRlIG1hdC1zdWJoZWFkaW5nLTEgZmxleC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjb250ZW50Py5uYW1lIH19IFxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudC5pc3N1ZWRDZXJ0aWZpY2F0ZXNTVkdcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY2VydGlmaWNhdGUtdHh0XCIgKGNsaWNrKT1cIm9wZW5DZXJ0aWZpY2F0ZURpYWxvZyhjb250ZW50Lmlzc3VlZENlcnRpZmljYXRlc1NWRylcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aWV3LWNlcnRpZmljYXRlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImZ1c2lvbi1hc3NldHMvaW1hZ2VzL2NlcnRpZmljYXRlLWljby5zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC52aWV3Q2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgcmVzb3VyY2UgbXQtMiBzbTptdC0wXCIgKm5nSWY9XCJjb250ZW50Py5jYXRlZ29yeSA9PT0gJ1Jlc291cmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5yZXNvdXJjZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgbW9kdWxlIG10LTIgc206bXQtMFwiICpuZ0lmPVwiY29udGVudD8uY2F0ZWdvcnkgPT09ICdDb2xsZWN0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5tb2R1bGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIGNvdXJzZSBtdC0yIHNtOm10LTBcIiAqbmdJZj1cImNvbnRlbnQ/LmNhdGVnb3J5ID09PSAnQ291cnNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5jb3Vyc2UnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXQtYm9keS1zdHJvbmcgY29udGVudC10eXBlXCI+e3sgY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj4mbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7PC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGltZS1pY29uXCI+c2NoZWR1bGU8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbG93ZXJjYXNlIHdzLW1hdC1ibGFjazYwLXRleHRcIj57eyBjb250ZW50Py5kdXJhdGlvbiB8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcydcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwhLS0gPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250ZW50Py5hcnRpZmFjdFVybCAmJiBpc0FsbG93ZWQgJiYgIWlzRW5hYmxlZFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJ1dHRvbk1lbnVcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydGljYWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZSAmJiBjb250ZW50LnByaW1hcnlDYXRlZ29yeSAhPT0gJ0NvdXJzZSdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUtcHJvZ3Jlc3MgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwcm9ncmVzc1wiIFtwZXJjZW50XT1cIjEwMFwiIFtyYWRpdXNdPVwiMTJcIiBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIlxyXG4gICAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwwLDAsLjE2KSdcIiBbYW5pbWF0aW9uXT1cInRydWVcIiBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZE9wYWNpdHldPVwiMFwiIFtiYWNrZ3JvdW5kR3JhZGllbnRdPVwiZmFsc2VcIiBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3daZXJvT3V0ZXJTdHJva2VdPWZhbHNlIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiIFtzdGFydEZyb21aZXJvXT1cImZhbHNlXCIgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIiBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxyXG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cclxuICAgICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPiAtLT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUtcHJvZ3Jlc3MgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwcm9ncmVzc1wiIFtwZXJjZW50XT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIiBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCIgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIiBbaW5uZXJTdHJva2VDb2xvcl09XCIncmdiYSgwLDAsMCwuMTYpJ1wiIFthbmltYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiIFtiYWNrZ3JvdW5kT3BhY2l0eV09XCIwXCIgW2JhY2tncm91bmRHcmFkaWVudF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIiBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIiBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxyXG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImhhc0NvbnRlbnRTdHJ1Y3R1cmVcIiBjbGFzcz1cImNoaWxkLW1ldGEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZC1zdHJ1Y3R1cmVcIj4gLS0+XHJcbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInN0cnVjdHVyZS1pY29uXCI+aW1wb3J0X2NvbnRhY3RzPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uY291cnNlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgPT09IDFcIiA+IENvdXJzZTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmNvdXJzZSA+IDFcIiA+IENvdXJzZXM8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5sZWFybmluZ01vZHVsZSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPT09IDFcIiA+IE1vZHVsZTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlID4gMVwiID4gTW9kdWxlczwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8udmlkZW8gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy52aWRlbyA9PT0gMVwiID4gVmlkZW88L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy52aWRlbyA+IDFcIiA+IFZpZGVvczwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmludGVyYWN0aXZlVmlkZW8gPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPiB7eyBjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA9PT0gMVwiID5cclxuICAgICAgICAgICAgICAgICAgSW50ZXJhY3RpdmUgVmlkZW88L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMVwiID5cclxuICAgICAgICAgICAgICAgICAgSW50ZXJhY3RpdmUgVmlkZW9zPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LnlvdXR1YmUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy55b3V0dWJlID09PSAxXCIgPiBZb3V0dWJlIFZpZGVvPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDFcIiA+IFlvdXR1YmUgVmlkZW9zPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucGRmID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ucGRmIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucGRmID09PSAxXCIgPiBQREY8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wZGYgPiAxXCIgPiBQREZzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucG9kY2FzdCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LnBvZGNhc3QgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wb2RjYXN0ID09PSAxXCIgPiBQb2RjYXN0PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucG9kY2FzdCA+IDFcIiA+IFBvZGNhc3RzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID09PSAxXCIgPiBXZWIgTW9kdWxlPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMVwiID4gV2ViIE1vZHVsZXM8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LndlYlBhZ2UgPT09IDFcIiA+IFdlYiBQYWdlPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSA+IDFcIiA+IFdlYiBQYWdlczwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnF1aXogPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSA+IDBcIj4sIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5xdWl6IH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucXVpeiA9PT0gMVwiID4gUXVpejwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnF1aXogPiAxXCIgPiBRdWl6emVzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5hc3Nlc3NtZW50ID09PSAxXCIgPiBBc3Nlc3NtZW50PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDFcIiA+IEFzc2Vzc21lbnRzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ub3RoZXIgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPnt7IGNvbnRlbnRTdHJ1Y3R1cmU/Lm90aGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ub3RoZXIgPT09IDFcIiA+IE90aGVyIGl0ZW08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5vdGhlciA+IDFcIiA+IE90aGVyIEl0ZW1zPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWUtYWxsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi1sZWZ0LW0gc2VlLWFsbC1idG4gdGFiIGN1c3RvbS1jaGV2cm9uIGN1c3RvbWljb25cIiBtYXQtYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2aWV3Q2hpbGRyZW5cIiA+U2VlIEFsbDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q2hpbGRyZW5cIiA+U2VlIExlc3M8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXZpZXdDaGlsZHJlblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZpZXdDaGlsZHJlblwiPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cclxuICAgICAgICAgIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxyXG4gICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgPC93cy13aWRnZXQtY29udGVudC1wcm9ncmVzcz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY29tcGxldGlvblN0YXR1cyA8IDJcIj5cclxuICAgICAgICAgIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCI+XHJcbiAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyIG1hcmdpbi1sZWZ0LWwgbWFyZ2luLXRvcC1zIG1hcmdpbi1ib3R0b20tc1wiIFtoaWRkZW5dPVwiIXZpZXdDaGlsZHJlblwiPlxyXG4gICAgICA8d3MtYXBwLXRvYy1jb250ZW50LWNhcmQgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtjb250ZW50XT1cImNoaWxkXCIgW2V4cGFuZEFsbF09XCJleHBhbmRBbGxcIiBbcm9vdElkXT1cInJvb3RJZFwiXHJcbiAgICAgICAgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtyb290Q29udGVudFR5cGVdPVwicm9vdENvbnRlbnRUeXBlXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29udGVudD8uY2hpbGRyZW47IHRyYWNrQnk6IGNvbnRlbnRUcmFja0J5XCI+XHJcbiAgICAgIDwvd3MtYXBwLXRvYy1jb250ZW50LWNhcmQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNSZXNvdXJjZVwiIGNsYXNzPVwicmVzb3VyY2UtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIDx3cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUtaWNvbiBjbGFzcz1cImZsZXhcIiBbZGlzcGxheUNvbnRlbnRUeXBlXT1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPlxyXG4gICAgPC93cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUtaWNvbj4gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbWctY29udGFpbmVyXCI+IC0tPlxyXG4gICAgPCEtLSA8aW1nIGNsYXNzPVwiY2FyZC10aHVtYm5haWwgd3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kXCIgW3NyY109XCJjb250ZW50Py5hcHBJY29uXCIgYWx0PVwiVGh1bWJuYWlsXCJcclxuICAgICAgICAoY2xpY2spPVwidmlld0NoaWxkcmVuID0gIXZpZXdDaGlsZHJlblwiIFt3c1V0aWxzRGVmYXVsdFRodW1ibmFpbF09XCJkZWZhdWx0VGh1bWJuYWlsXCIgLz4gLS0+XHJcbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cclxuICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxyXG4gICAgICAgIFtjb250ZW50SWRdPVwiY29udGVudD8uaWRlbnRpZmllclwiIGNsYXNzPVwicHJvZ3Jlc3MtYmFyLXRoaW5cIiBbcHJvZ3Jlc3NdPVwiMTAwXCIgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cclxuICAgICAgPC93cy13aWRnZXQtY29udGVudC1wcm9ncmVzcz5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPCAyXCI+XHJcbiAgICAgIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXIgJiYgY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2VcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcclxuICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgPCEtLSA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvXCI+XHJcbiAgICAgIDwhLS0gZGVhY3RpdmF0ZWQgYXMgcGVyIE5JQyBDRU8gcmVxdWlyZW1lbnQgdG8gYWNjZXNzIGNvdXJzZSB3dGhvdXQgbG9naW4gLS0+XHJcbiAgICAgIDxhIFtjbGFzcy5kaXNhYmxlZF09XCIoZm9yUHJldmlldyB8fCAhaXNFbmFibGVkKSA/IHRydWUgOiBudWxsXCIgW3JvdXRlckxpbmtdPVwiKGlzQWxsb3dlZCAmJiAhZm9yUHJldmlldyAmJiAhaXNFbmFibGVkKSA/IHJlc291cmNlTGluay51cmwgOiBudWxsXCJcclxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwiKGlzQWxsb3dlZCAmJiAhZm9yUHJldmlldyAmJiAhaXNFbmFibGVkKSAgPyByZXNvdXJjZUxpbmsucXVlcnlQYXJhbXMgOiBudWxsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgXCIgW25nQ2xhc3NdPVwieydjdXJzb3ItcG9pbnRlcic6ICFpc0VuYWJsZWR9XCIgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW47IHJhaXNlVGVsZW1ldHJ5KClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibWFyZ2luLXJpZ2h0LXhzIHJhZGlvYnRuIHRpbWUtaWNvblwiPnJhZGlvX2J1dHRvbl91bmNoZWNrZWQgPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICAgICAge3sgY29udGVudD8ubmFtZSB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudC10eXBlIG9wdGlvbmFsLXNwYW5cIiAqbmdJZj1cImNvbnRlbnQ/Lm9wdGlvbmFsUmVhZGluZ1wiPnt7J2FwcHRvY2NvbnRlbnRjYXJkLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIGNvbnRlbnQtdHlwZVwiPnt7IGNvbnRlbnQ/LmlkZW50aWZpZXIgfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaWNvbnMgd3MtbWF0LWJsYWNrNjAtdGV4dFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIGNvbnRlbnQtdHlwZSB3cy1tYXQtZGVmYXVsdC10ZXh0XCI+e3sgY29udGVudD8uY29udGVudFR5cGUgfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlXCI+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0aW1lLWljb25cIj5zY2hlZHVsZTwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L3ZpZGVvLnN2Z1wiIGFsdD1cIlZpZGVvXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICd2aWRlby9tcDQnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndmlkZW8veC15b3V0dWJlJyB8fFxyXG4gICAgICAgICAgICAgICAgY29udGVudD8ubWltZVR5cGUgPT09J2FwcGxpY2F0aW9uL3gtbXBlZ1VSTCdcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9hdWRpby5zdmdcIiBhbHQ9XCJBdWRpb1wiIGNsYXNzPVwiZmxvYXQtbGVmdCBtYXJnaW4tcmlnaHQteHNcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhdWRpby9tcGVnJ1wiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L3BkZi5zdmdcIiBhbHQ9XCJQREZcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vcGRmJ1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvcmVzb3VyY2Uuc3ZnXCIgYWx0PVwiU3VydmV5XCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3N1cnZleSdcIj4gLS0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvbGluay5zdmdcIiBhbHQ9XCJJbnRlcmFjdGl2ZUNvbnRlbnRcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndGV4dC94LXVybCdcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9hc3Nlc3NtZW50LnN2Z1wiIGFsdD1cIkFzc2Vzc21lbnRcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vanNvbicgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9xdWl6JyB8fCBjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0J1wiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2ltYWdlLnN2Z1wiIGFsdD1cIkltYWdlXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZSA9PT0gJ2ltYWdlL3BuZycgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdpbWFnZS9qcGVnJ1wiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2NvbnRlbnRfY29weS5zdmdcIiBjbGFzcz1cImNvbnRlbnRpY29uXCIgYWx0PVwiQ291cnNlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmNvbnRlbnQtY29sbGVjdGlvbicgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9zdXJ2ZXknXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvbW9kdWxlLnN2Z1wiIGNsYXNzPVwiZmxvYXQtbGVmdCBtYXJnaW4tcmlnaHQteHNcIiBhbHQ9XCJvZmZsaW5lIHNlc3Npb25zXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9vZmZsaW5lJyB8fCBjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3N1cnZleSdcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3sgKGNvbnRlbnQ/LmR1cmF0aW9uIHx8IDEyMCl8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gPC9zcGFuPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBzbTpqdXN0aWZ5LWVuZFwiPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIHJlc291cmNlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ1Jlc291cmNlJ1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5SZXNvdXJjZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgbW9kdWxlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ0NvbGxlY3Rpb24nXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtci0xIGN1c3RvbS1pY29uIHJvdGF0ZS05MFwiPmNhbGxfdG9fYWN0aW9uPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuPk1vZHVsZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgY291cnNlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ0NvdXJzZSdcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+Q291cnNlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uYXJ0aWZhY3RVcmwgJiYgIWlzWFNtYWxsICYmIGlzQWxsb3dlZCAmJiBpc0VuYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cIlwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJidXR0b25NZW51XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0aWNhbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JQcmV2aWV3ICYmIGNvbnRlbnQ/LmlkZW50aWZpZXIgJiYgY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2UgOyBlbHNlIGVsc2VCbG9ja1wiPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxyXG4gICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCIxMDBcIiBbcmFkaXVzXT1cIjEyXCIgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiXHJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiIFtvdXRlclN0cm9rZUNvbG9yXT1cInByb2dyZXNzQ29sb3IoKVwiXHJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwgMCwgMCwgMC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbYmFja2dyb3VuZE9wYWNpdHldPVwiMFwiIFtiYWNrZ3JvdW5kR3JhZGllbnRdPVwiZmFsc2VcIiBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIiBtYXRUb29sdGlwPVwie3snYXBwdG9jY29udGVudGNhcmQuY29tcGxldGVkJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIiBbYmFja2dyb3VuZFBhZGRpbmddPVwiMFwiXHJcbiAgICAgICAgICAgICAgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIiBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxyXG4gICAgICAgICAgICA8L2NpcmNsZS1wcm9ncmVzcz5cclxuICAgICAgICAgICAgPCEtLSA8d3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3MgKm5nSWY9XCJjb250ZW50Py5pZGVudGlmaWVyXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXHJcbiAgICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY29tcGxldGlvblN0YXR1cyA8IDJcIj5cclxuICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2VcIiBbcmFkaXVzXT1cIjEyXCJcclxuICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCIgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiIFtvdXRlclN0cm9rZUNvbG9yXT1cInByb2dyZXNzQ29sb3IyKClcIlxyXG4gICAgICAgICAgICAgIFtpbm5lclN0cm9rZUNvbG9yXT1cIidyZ2JhKDAsIDAsIDAsIDAuMTYpJ1wiIFthbmltYXRpb25dPVwidHJ1ZVwiIFthbmltYXRpb25EdXJhdGlvbl09XCIzMDBcIiBbc2hvd1RpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2JhY2tncm91bmRPcGFjaXR5XT1cIjBcIiBbYmFja2dyb3VuZEdyYWRpZW50XT1cImZhbHNlXCIgW2JhY2tncm91bmRTdHJva2VXaWR0aF09XCIzXCIgbWF0VG9vbHRpcD1cInt7J2FwcHRvY2NvbnRlbnRjYXJkLmluUHJvZ3Jlc3MnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgIFtzaG93WmVyb091dGVyU3Ryb2tlXT1mYWxzZSBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIiBbc3RhcnRGcm9tWmVyb109XCJmYWxzZVwiIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCJcclxuICAgICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XHJcbiAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPiAtLT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XHJcbiAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwcm9ncmVzc1wiXHJcbiAgICAgICAgICBbcGVyY2VudF09XCIwXCJcclxuICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIlxyXG4gICAgICAgICAgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiXHJcbiAgICAgICAgICBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cIicjODA4MDgwJ1wiXHJcbiAgICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInIzgwODA4MCdcIlxyXG4gICAgICAgICAgW2FuaW1hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCJcclxuICAgICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIzMDBcIlxyXG4gICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZFBhZGRpbmddPVwiMFwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIlxyXG4gICAgICAgICAgW291dGVyU3Ryb2tlTGluZWNhcF09XCInYnV0dCdcIlxyXG4gICAgICAgICAgbWF0VG9vbHRpcD1cInt7J2FwcHRvY2NvbnRlbnRjYXJkLm5vdFN0YXJ0ZWQnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFxyXG4gICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgXHJcbiAgICAgICAgICBbY2xvY2t3aXNlXT1cInRydWVcIiBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiPjwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgIDwhLS0gPHA+bm8gZGF0YTwvcD4gLS0+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBcclxuXHJcbiAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNvbnRlbnQ/LmFydGlmYWN0VXJsXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYnV0dG9uTWVudVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1tZXRhIHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICA8YSBbcm91dGVyTGlua109XCJyZXNvdXJjZUxpbmsudXJsXCIgW3F1ZXJ5UGFyYW1zXT1cInJlc291cmNlTGluay5xdWVyeVBhcmFtc1wiPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZSAhPT0gZW51bUNvbnRlbnRUeXBlcy5BU1NFU1NNRU5UXCIgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMSAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZSA9PT0gZW51bUNvbnRlbnRUeXBlcy5BU1NFU1NNRU5UXCIgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cclxuICAgICAgICA8L2gxPlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIG1hcmdpbi1sZWZ0LXhzXCI+e3sgY29udGVudD8uZHVyYXRpb24gfCBwaXBlRHVyYXRpb25UcmFuc2Zvcm06ICd0aW1lMjQnIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bWF0LW1lbnUgI2J1dHRvbk1lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGEgbWF0LW1lbnUtaXRlbSBbcm91dGVyTGlua109XCInLi4vJyArIGNvbnRlbnQ/LmlkZW50aWZpZXIgKyAnL292ZXJ2aWV3J1wiIFtxdWVyeVBhcmFtc109XCJjb250ZXh0UGF0aFwiXHJcbiAgICBjbGFzcz1cImZsZXggZmxleC1taWRkbGVcIj5cclxuICAgIDxtYXQtaWNvbj50b2M8L21hdC1pY29uPlxyXG4gICAgPGgzIGNsYXNzPVwibWFyZ2luLXJlbW92ZVwiID5cclxuICAgICAge3snYXBwdG9jY29udGVudGNhcmQudmlld0RldGFpbHMnIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvaDM+XHJcbiAgPC9hPlxyXG4gIDwhLS0gVE9ETzogSGlkaW5nIHRoaXMgZnJvbSBoZXJlIGZvciBub3csIGFzIHRoZSBmdW5jdGlvbmFsaXRpZXMgYXJlIG5vdCB3b3JraW5nIC0tPlxyXG4gIDwhLS0gPGRpdiBtYXQtbWVudS1pdGVtPlxyXG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1kb3dubG9hZCBbd2lkZ2V0RGF0YV09XCJcclxuICAgICAgICBjb250ZW50XHJcbiAgICAgICAgICB8IHBpcGVQYXJ0aWFsQ29udGVudFxyXG4gICAgICAgICAgICA6IFsnaWRlbnRpZmllcicsICdjb250ZW50VHlwZScsICdyZXNvdXJjZVR5cGUnLCAnbWltZVR5cGUnLCAnZG93bmxvYWRVcmwnLCAnaXNFeHRlcm5hbCddXHJcbiAgICAgIFwiPjwvd3Mtd2lkZ2V0LWJ0bi1jb250ZW50LWRvd25sb2FkPlxyXG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1saWtlIFt3aWRnZXREYXRhXT1cImNvbnRlbnQgfCBwaXBlUGFydGlhbENvbnRlbnQ6IFsnaWRlbnRpZmllciddXCI+XHJcbiAgICA8L3dzLXdpZGdldC1idG4tY29udGVudC1saWtlPlxyXG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1zaGFyZSBbd2lkZ2V0RGF0YV09XCJjb250ZW50XCI+PC93cy13aWRnZXQtYnRuLWNvbnRlbnQtc2hhcmU+XHJcbiAgICA8d3Mtd2lkZ2V0LWJ0bi1nb2Fscz48L3dzLXdpZGdldC1idG4tZ29hbHM+XHJcbiAgICA8d3Mtd2lkZ2V0LWJ0bi1wbGF5bGlzdD48L3dzLXdpZGdldC1idG4tcGxheWxpc3Q+XHJcbiAgPC9kaXY+IC0tPlxyXG48L21hdC1tZW51PlxyXG4iXX0=
1
+ import { Component, Input } from '@angular/core';
2
+ import { NsContent } from '../../_services/widget-content.model';
3
+ import { viewerRouteGenerator } from '../../_services/viewer-route-util';
4
+ /* tslint:disable*/
5
+ import _ from 'lodash';
6
+ import { CertificateDialogComponent } from '../../_collection/_common/certificate-dialog/certificate-dialog.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@sunbird-cb/utils-v2";
9
+ import * as i2 from "@angular/material/legacy-dialog";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/router";
12
+ import * as i5 from "@angular/material/icon";
13
+ import * as i6 from "@angular/material/legacy-button";
14
+ import * as i7 from "@angular/material/legacy-menu";
15
+ import * as i8 from "@angular/material/legacy-tooltip";
16
+ import * as i9 from "ng-circle-progress";
17
+ import * as i10 from "@ngx-translate/core";
18
+ export class AppTocContentCardComponent {
19
+ constructor(events, dialog) {
20
+ this.events = events;
21
+ this.dialog = dialog;
22
+ this.content = null;
23
+ this.expandAll = false;
24
+ this.forPreview = false;
25
+ this.hasContentStructure = false;
26
+ this.enumContentTypes = NsContent.EDisplayContentTypes;
27
+ this.contentStructure = {
28
+ assessment: 0,
29
+ finalTest: 0,
30
+ course: 0,
31
+ handsOn: 0,
32
+ interactiveVideo: 0,
33
+ learningModule: 0,
34
+ other: 0,
35
+ pdf: 0,
36
+ survey: 0,
37
+ podcast: 0,
38
+ practiceTest: 0,
39
+ quiz: 0,
40
+ video: 0,
41
+ webModule: 0,
42
+ webPage: 0,
43
+ youtube: 0,
44
+ interactivecontent: 0,
45
+ offlineSession: 0,
46
+ };
47
+ this.defaultThumbnail = '';
48
+ this.viewChildren = false;
49
+ }
50
+ ngOnInit() {
51
+ this.evaluateImmediateChildrenStructure();
52
+ // this.route.data.subscribe(data => {
53
+ // this.defaultThumbnail = data.configData.data.logos.defaultContent
54
+ // }
55
+ // )
56
+ }
57
+ ngOnChanges(changes) {
58
+ for (const property in changes) {
59
+ if (property === 'expandAll') {
60
+ this.viewChildren = this.expandAll;
61
+ }
62
+ }
63
+ }
64
+ get isCollection() {
65
+ if (this.content) {
66
+ return this.content.mimeType === NsContent.EMimeTypes.COLLECTION;
67
+ }
68
+ return false;
69
+ }
70
+ get isResource() {
71
+ if (this.content) {
72
+ return (this.content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE
73
+ // || this.content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT
74
+ || this.content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE
75
+ || this.content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT
76
+ || this.content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT);
77
+ }
78
+ return false;
79
+ }
80
+ get resourceLink() {
81
+ if (this.content) {
82
+ let url = viewerRouteGenerator(this.content.identifier, this.content.mimeType, this.rootId, this.rootContentType, this.forPreview, this.content.primaryCategory, this.batchId);
83
+ /* tslint:disable-next-line */
84
+ // console.log(url,'=====> content card url link <========')
85
+ return url;
86
+ }
87
+ return { url: '', queryParams: {} };
88
+ }
89
+ progressColor() {
90
+ // if (this.currentProgress <= 30) {
91
+ // return '#D13924'
92
+ // } if (this.currentProgress > 30 && this.currentProgress <= 70) {
93
+ // return '#E99E38'
94
+ // }
95
+ // if (this.currentProgress > 70 && this.currentProgress <= 100) {
96
+ // return '#1D8923'
97
+ // }
98
+ return '#1D8923';
99
+ }
100
+ progressColor2() {
101
+ return '#f27d00';
102
+ }
103
+ evaluateImmediateChildrenStructure() {
104
+ if (this.content && this.content.children && this.content.children.length) {
105
+ this.content.children.forEach((child) => {
106
+ if (child.primaryCategory === NsContent.EPrimaryCategory.COURSE) {
107
+ this.contentStructure.course += 1;
108
+ }
109
+ else if (child.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT) {
110
+ this.contentStructure.other += 1;
111
+ }
112
+ else if (child.primaryCategory === NsContent.EPrimaryCategory.MODULE) {
113
+ this.contentStructure.learningModule += 1;
114
+ }
115
+ else if (child.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION) {
116
+ this.contentStructure.offlineSession += 1;
117
+ }
118
+ else if (child.primaryCategory === NsContent.EPrimaryCategory.RESOURCE) {
119
+ switch (child.mimeType) {
120
+ case NsContent.EMimeTypes.HANDS_ON:
121
+ this.contentStructure.handsOn += 1;
122
+ break;
123
+ case NsContent.EMimeTypes.MP3:
124
+ this.contentStructure.podcast += 1;
125
+ break;
126
+ case NsContent.EMimeTypes.MP4:
127
+ case NsContent.EMimeTypes.M3U8:
128
+ this.contentStructure.video += 1;
129
+ break;
130
+ case NsContent.EMimeTypes.INTERACTION:
131
+ this.contentStructure.interactiveVideo += 1;
132
+ break;
133
+ case NsContent.EMimeTypes.PDF:
134
+ this.contentStructure.pdf += 1;
135
+ break;
136
+ case NsContent.EMimeTypes.OFFLINE_SESSION:
137
+ this.contentStructure.offlineSession += 1;
138
+ break;
139
+ case NsContent.EMimeTypes.SURVEY:
140
+ this.contentStructure.survey += 1;
141
+ break;
142
+ case NsContent.EMimeTypes.HTML:
143
+ this.contentStructure.webPage += 1;
144
+ break;
145
+ case NsContent.EMimeTypes.QUIZ:
146
+ if (child.resourceType === 'Assessment') {
147
+ this.contentStructure.assessment += 1;
148
+ }
149
+ else {
150
+ this.contentStructure.quiz += 1;
151
+ }
152
+ break;
153
+ case NsContent.EMimeTypes.PRACTICE_RESOURCE:
154
+ // case NsContent.EMimeTypes.FINAL_ASSESSMENT:
155
+ // case NsContent.EMimeTypes.PRACTICE_RESOURCE:
156
+ this.contentStructure.practiceTest += 1;
157
+ break;
158
+ case NsContent.EMimeTypes.WEB_MODULE:
159
+ this.contentStructure.webModule += 1;
160
+ break;
161
+ case NsContent.EMimeTypes.YOUTUBE:
162
+ this.contentStructure.youtube += 1;
163
+ break;
164
+ default:
165
+ this.contentStructure.other += 1;
166
+ break;
167
+ }
168
+ }
169
+ });
170
+ }
171
+ for (const key in this.contentStructure) {
172
+ if (this.contentStructure[key] > 0) {
173
+ this.hasContentStructure = true;
174
+ }
175
+ }
176
+ }
177
+ get contextPath() {
178
+ return {
179
+ contextId: this.rootId,
180
+ contextPath: this.rootContentType,
181
+ batchId: this.batchId,
182
+ };
183
+ }
184
+ contentTrackBy(_index, content) {
185
+ if (!content) {
186
+ return null;
187
+ }
188
+ return content.identifier;
189
+ }
190
+ raiseTelemetry() {
191
+ // if (this.forPreview) { return }
192
+ if (this.content) {
193
+ this.events.raiseInteractTelemetry({
194
+ type: 'click',
195
+ subType: `card-tocContentCard`,
196
+ // id: this.content.identifier || '',
197
+ }, {
198
+ // contentId: this.content.identifier || '',
199
+ // contentType: this.content.primaryCategory,
200
+ id: this.content.identifier || '',
201
+ type: this.content.primaryCategory,
202
+ rollup: {
203
+ l1: this.rootId || '',
204
+ },
205
+ ver: `${this.content.version}${''}`,
206
+ }, {
207
+ pageIdExt: `${_.camelCase(this.content.primaryCategory)}-card`,
208
+ module: _.camelCase(this.content.primaryCategory),
209
+ });
210
+ }
211
+ }
212
+ get isAllowed() {
213
+ if (this.content) {
214
+ return !(NsContent.UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS.indexOf(this.content.mimeType) >= 0);
215
+ }
216
+ return false;
217
+ }
218
+ get isEnabled() {
219
+ return false;
220
+ }
221
+ openCertificateDialog(certData) {
222
+ const cet = certData;
223
+ this.dialog.open(CertificateDialogComponent, {
224
+ // height: '400px',
225
+ width: '1300px',
226
+ data: { cet },
227
+ // panelClass: 'custom-dialog-container',
228
+ });
229
+ }
230
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, deps: [{ token: i1.EventService }, { token: i2.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
231
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: { content: "content", expandAll: "expandAll", rootId: "rootId", rootContentType: "rootContentType", forPreview: "forPreview", batchId: "batchId" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content\">\n <ng-container *ngIf=\"isCollection\">\n <div class=\"flex flex-col position-relative\">\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n {{ content?.name }} \n </p>\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\n <span class=\"view-certificate-wrapper\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\n </span>\n </a>\n </ng-container>\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.resource' | translate}}</span>\n </div>\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.module' | translate}}</span>\n </div>\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.course' | translate}}</span>\n </div>\n </div>\n <div>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\n }}</span>\n <!-- </span> -->\n </div>\n </div>\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\n [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\n [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n </ng-container>\n\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\n <div class=\"child-structure\"> -->\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\n <ng-container>{{ contentStructure?.course }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\n <ng-container> {{ contentStructure?.video }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\n Interactive Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\n Interactive Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\n <ng-container>{{ contentStructure?.other }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\n </span>\n </div>\n </div> -->\n <div class=\"see-all-container\">\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\n </a>\n </div>\n </div>\n </div>\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n </div> -->\n </div>\n\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\n </ws-app-toc-content-card>\n </div>\n </ng-container>\n <div *ngIf=\"isResource\" class=\"resource-container\">\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type-icon> -->\n <!-- <div class=\"img-container\"> -->\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <!-- </div> -->\n\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\n {{ content?.name }}\n </p>\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\n </div>\n <div class=\"resicons ws-mat-black60-text\">\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\n content?.mimeType ==='application/x-mpegURL'\">\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/pdf'\">\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\n <!-- </span> -->\n </div>\n </div>\n </a>\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Resource</span>\n </div>\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Module</span>\n </div>\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Course</span>\n </div> -->\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\n \n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n \n </ng-container>\n <ng-template #elseBlock>\n <circle-progress class=\"flex items-center progress\"\n [percent]=\"0\"\n [radius]=\"12\"\n [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\"\n [outerStrokeColor]=\"'#808080'\"\n [innerStrokeColor]=\"'#808080'\"\n [animation]=\"true\"\n [space]=\"-3\"\n [showUnits]=\"false\"\n [animationDuration]=\"300\"\n [showTitle]=\"false\"\n [backgroundPadding]=\"0\"\n [backgroundPadding]=\"-9\"\n [outerStrokeLinecap]=\"'butt'\"\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\n [showSubtitle]=\"false\" \n [showInnerStroke]=\"true\" \n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\n <!-- <p>no data</p> -->\n </ng-template>\n </div>\n\n \n\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button> -->\n </div>\n <!-- <div class=\"resource-meta width-expand\">\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h3>\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h1>\n </a>\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\n </span>\n </div> -->\n </div>\n</ng-container>\n\n<mat-menu #buttonMenu=\"matMenu\">\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\n class=\"flex flex-middle\">\n <mat-icon>toc</mat-icon>\n <h3 class=\"margin-remove\" >\n {{'apptoccontentcard.viewDetails' | translate}}\n </h3>\n </a>\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\n <!-- <div mat-menu-item>\n <ws-widget-btn-content-download [widgetData]=\"\n content\n | pipePartialContent\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\n \"></ws-widget-btn-content-download>\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\n </ws-widget-btn-content-like>\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\n <ws-widget-btn-goals></ws-widget-btn-goals>\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\n </div> -->\n</mat-menu>\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.CircleProgressComponent, selector: "circle-progress", inputs: ["name", "class", "backgroundGradient", "backgroundColor", "backgroundGradientStopColor", "backgroundOpacity", "backgroundStroke", "backgroundStrokeWidth", "backgroundPadding", "radius", "space", "percent", "toFixed", "maxPercent", "renderOnClick", "units", "unitsFontSize", "unitsFontWeight", "unitsColor", "outerStrokeGradient", "outerStrokeWidth", "outerStrokeColor", "outerStrokeGradientStopColor", "outerStrokeLinecap", "innerStrokeColor", "innerStrokeWidth", "titleFormat", "title", "titleColor", "titleFontSize", "titleFontWeight", "subtitleFormat", "subtitle", "subtitleColor", "subtitleFontSize", "subtitleFontWeight", "imageSrc", "imageHeight", "imageWidth", "animation", "animateTitle", "animateSubtitle", "animationDuration", "showTitle", "showSubtitle", "showUnits", "showImage", "showBackground", "showInnerStroke", "clockwise", "responsive", "startFromZero", "showZeroOuterStroke", "lazy", "options"], outputs: ["onClick"] }, { kind: "component", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: ["content", "expandAll", "rootId", "rootContentType", "forPreview", "batchId"] }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
232
+ }
233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, decorators: [{
234
+ type: Component,
235
+ args: [{ selector: 'ws-app-toc-content-card', template: "<ng-container *ngIf=\"content\">\n <ng-container *ngIf=\"isCollection\">\n <div class=\"flex flex-col position-relative\">\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n {{ content?.name }} \n </p>\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\n <span class=\"view-certificate-wrapper\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\n </span>\n </a>\n </ng-container>\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.resource' | translate}}</span>\n </div>\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.module' | translate}}</span>\n </div>\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.course' | translate}}</span>\n </div>\n </div>\n <div>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\n }}</span>\n <!-- </span> -->\n </div>\n </div>\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\n [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\n [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n </ng-container>\n\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\n <div class=\"child-structure\"> -->\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\n <ng-container>{{ contentStructure?.course }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\n <ng-container> {{ contentStructure?.video }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\n Interactive Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\n Interactive Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\n <ng-container>{{ contentStructure?.other }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\n </span>\n </div>\n </div> -->\n <div class=\"see-all-container\">\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\n </a>\n </div>\n </div>\n </div>\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n </div> -->\n </div>\n\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\n </ws-app-toc-content-card>\n </div>\n </ng-container>\n <div *ngIf=\"isResource\" class=\"resource-container\">\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type-icon> -->\n <!-- <div class=\"img-container\"> -->\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <!-- </div> -->\n\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\n {{ content?.name }}\n </p>\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\n </div>\n <div class=\"resicons ws-mat-black60-text\">\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\">&nbsp;&nbsp;|&nbsp;&nbsp;</ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\n content?.mimeType ==='application/x-mpegURL'\">\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/pdf'\">\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\n <!-- </span> -->\n </div>\n </div>\n </a>\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Resource</span>\n </div>\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Module</span>\n </div>\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Course</span>\n </div> -->\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\n \n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n \n </ng-container>\n <ng-template #elseBlock>\n <circle-progress class=\"flex items-center progress\"\n [percent]=\"0\"\n [radius]=\"12\"\n [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\"\n [outerStrokeColor]=\"'#808080'\"\n [innerStrokeColor]=\"'#808080'\"\n [animation]=\"true\"\n [space]=\"-3\"\n [showUnits]=\"false\"\n [animationDuration]=\"300\"\n [showTitle]=\"false\"\n [backgroundPadding]=\"0\"\n [backgroundPadding]=\"-9\"\n [outerStrokeLinecap]=\"'butt'\"\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\n [showSubtitle]=\"false\" \n [showInnerStroke]=\"true\" \n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\n <!-- <p>no data</p> -->\n </ng-template>\n </div>\n\n \n\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button> -->\n </div>\n <!-- <div class=\"resource-meta width-expand\">\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h3>\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h1>\n </a>\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\n </span>\n </div> -->\n </div>\n</ng-container>\n\n<mat-menu #buttonMenu=\"matMenu\">\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\n class=\"flex flex-middle\">\n <mat-icon>toc</mat-icon>\n <h3 class=\"margin-remove\" >\n {{'apptoccontentcard.viewDetails' | translate}}\n </h3>\n </a>\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\n <!-- <div mat-menu-item>\n <ws-widget-btn-content-download [widgetData]=\"\n content\n | pipePartialContent\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\n \"></ws-widget-btn-content-download>\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\n </ws-widget-btn-content-like>\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\n <ws-widget-btn-goals></ws-widget-btn-goals>\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\n </div> -->\n</mat-menu>\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"] }]
236
+ }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialog }]; }, propDecorators: { content: [{
237
+ type: Input
238
+ }], expandAll: [{
239
+ type: Input
240
+ }], rootId: [{
241
+ type: Input
242
+ }], rootContentType: [{
243
+ type: Input
244
+ }], forPreview: [{
245
+ type: Input
246
+ }], batchId: [{
247
+ type: Input
248
+ }] } });
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUd4RSxtQkFBbUI7QUFDbkIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJFQUEyRSxDQUFBOzs7Ozs7Ozs7Ozs7QUFRdEgsTUFBTSxPQUFPLDBCQUEwQjtJQStCckMsWUFDVSxNQUFvQixFQUNwQixNQUFpQjtRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFoQ2xCLFlBQU8sR0FBOEIsSUFBSSxDQUFBO1FBQ3pDLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFHakIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUUzQix3QkFBbUIsR0FBRyxLQUFLLENBQUE7UUFDM0IscUJBQWdCLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFBO1FBQ2pELHFCQUFnQixHQUEyQjtZQUN6QyxVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFD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Q0FBQzsrR0F6T1UsMEJBQTBCO21HQUExQiwwQkFBMEIsZ1BDZnZDLDgvdkJBcVdBLHV3TUR0VmEsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtpSUFLMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXG5pbXBvcnQgeyB2aWV3ZXJSb3V0ZUdlbmVyYXRvciB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy92aWV3ZXItcm91dGUtdXRpbCdcbmltcG9ydCB7IE5zQXBwVG9jIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10b2MubW9kZWwnXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12Midcbi8qIHRzbGludDpkaXNhYmxlKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbGxlY3Rpb24vX2NvbW1vbi9jZXJ0aWZpY2F0ZS1kaWFsb2cvY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy1hcHAtdG9jLWNvbnRlbnQtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWNvbnRlbnQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC10b2MtY29udGVudC1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFwcFRvY0NvbnRlbnRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBleHBhbmRBbGwgPSBmYWxzZVxuICBASW5wdXQoKSByb290SWQhOiBzdHJpbmdcbiAgQElucHV0KCkgcm9vdENvbnRlbnRUeXBlITogc3RyaW5nXG4gIEBJbnB1dCgpIGZvclByZXZpZXcgPSBmYWxzZVxuICBASW5wdXQoKSBiYXRjaElkITogc3RyaW5nXG4gIGhhc0NvbnRlbnRTdHJ1Y3R1cmUgPSBmYWxzZVxuICBlbnVtQ29udGVudFR5cGVzID0gTnNDb250ZW50LkVEaXNwbGF5Q29udGVudFR5cGVzXG4gIGNvbnRlbnRTdHJ1Y3R1cmU6IE5zQXBwVG9jLklUb2NTdHJ1Y3R1cmUgPSB7XG4gICAgYXNzZXNzbWVudDogMCxcbiAgICBmaW5hbFRlc3Q6IDAsXG4gICAgY291cnNlOiAwLFxuICAgIGhhbmRzT246IDAsXG4gICAgaW50ZXJhY3RpdmVWaWRlbzogMCxcbiAgICBsZWFybmluZ01vZHVsZTogMCxcbiAgICBvdGhlcjogMCxcbiAgICBwZGY6IDAsXG4gICAgc3VydmV5OiAwLFxuICAgIHBvZGNhc3Q6IDAsXG4gICAgcHJhY3RpY2VUZXN0OiAwLFxuICAgIHF1aXo6IDAsXG4gICAgdmlkZW86IDAsXG4gICAgd2ViTW9kdWxlOiAwLFxuICAgIHdlYlBhZ2U6IDAsXG4gICAgeW91dHViZTogMCxcbiAgICBpbnRlcmFjdGl2ZWNvbnRlbnQ6IDAsXG4gICAgb2ZmbGluZVNlc3Npb246IDAsXG4gIH1cbiAgZGVmYXVsdFRodW1ibmFpbCA9ICcnXG4gIHZpZXdDaGlsZHJlbiA9IGZhbHNlXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2YWx1YXRlSW1tZWRpYXRlQ2hpbGRyZW5TdHJ1Y3R1cmUoKVxuICAgIC8vIHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgLy8gICAgIHRoaXMuZGVmYXVsdFRodW1ibmFpbCA9IGRhdGEuY29uZmlnRGF0YS5kYXRhLmxvZ29zLmRlZmF1bHRDb250ZW50XG4gICAgLy8gICB9XG4gICAgLy8gKVxuICAgIFxuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNoYW5nZXMpIHtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2V4cGFuZEFsbCcpIHtcbiAgICAgICAgdGhpcy52aWV3Q2hpbGRyZW4gPSB0aGlzLmV4cGFuZEFsbFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXQgaXNDb2xsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubWltZVR5cGUgPT09IE5zQ29udGVudC5FTWltZVR5cGVzLkNPTExFQ1RJT05cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZ2V0IGlzUmVzb3VyY2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0VcbiAgICAgICAgLy8gfHwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuS05PV0xFREdFX0FSVElGQUNUXG4gICAgICAgIHx8IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBSQUNUSUNFX1JFU09VUkNFXG4gICAgICAgIHx8IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkZJTkFMX0FTU0VTU01FTlRcbiAgICAgICAgfHwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGdldCByZXNvdXJjZUxpbmsoKTogeyB1cmw6IHN0cmluZzsgcXVlcnlQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgbGV0IHVybCA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgdGhpcy5jb250ZW50Lm1pbWVUeXBlLFxuICAgICAgICB0aGlzLnJvb3RJZCxcbiAgICAgICAgdGhpcy5yb290Q29udGVudFR5cGUsXG4gICAgICAgIHRoaXMuZm9yUHJldmlldyxcbiAgICAgICAgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgdGhpcy5iYXRjaElkXG4gICAgICApXG4gICAgICBcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICAgICAgLy8gY29uc29sZS5sb2codXJsLCc9PT09PT4gY29udGVudCBjYXJkIHVybCBsaW5rIDw9PT09PT09PScpXG4gICAgICByZXR1cm4gdXJsXG4gICAgfVxuICAgIHJldHVybiB7IHVybDogJycsIHF1ZXJ5UGFyYW1zOiB7fSB9XG4gIH1cblxuICBwdWJsaWMgcHJvZ3Jlc3NDb2xvcigpOiBzdHJpbmcge1xuICAgIC8vIGlmICh0aGlzLmN1cnJlbnRQcm9ncmVzcyA8PSAzMCkge1xuICAgIC8vICAgcmV0dXJuICcjRDEzOTI0J1xuICAgIC8vIH0gaWYgKHRoaXMuY3VycmVudFByb2dyZXNzID4gMzAgJiYgdGhpcy5jdXJyZW50UHJvZ3Jlc3MgPD0gNzApIHtcbiAgICAvLyAgIHJldHVybiAnI0U5OUUzOCdcbiAgICAvLyB9XG4gICAgLy8gaWYgKHRoaXMuY3VycmVudFByb2dyZXNzID4gNzAgJiYgdGhpcy5jdXJyZW50UHJvZ3Jlc3MgPD0gMTAwKSB7XG4gICAgLy8gICByZXR1cm4gJyMxRDg5MjMnXG4gICAgLy8gfVxuICAgXG4gICAgcmV0dXJuICcjMUQ4OTIzJ1xuICB9XG5cbiAgcHVibGljIHByb2dyZXNzQ29sb3IyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcjZjI3ZDAwJ1xuICB9XG5cblxuICBwcml2YXRlIGV2YWx1YXRlSW1tZWRpYXRlQ2hpbGRyZW5TdHJ1Y3R1cmUoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2hpbGRyZW4gJiYgdGhpcy5jb250ZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb250ZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBOc0NvbnRlbnQuSUNvbnRlbnQpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFKSB7XG4gICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmNvdXJzZSArPSAxXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QpIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub3RoZXIgKz0gMVxuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFKSB7XG4gICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmxlYXJuaW5nTW9kdWxlICs9IDFcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk9GRkxJTkVfU0VTU0lPTikge1xuICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vZmZsaW5lU2Vzc2lvbiArPSAxXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5SRVNPVVJDRSkge1xuICAgICAgICAgIHN3aXRjaCAoY2hpbGQubWltZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSEFORFNfT046XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5oYW5kc09uICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTVAzOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucG9kY2FzdCArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk1QNDpcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTTNVODpcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLnZpZGVvICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSU5URVJBQ1RJT046XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5pbnRlcmFjdGl2ZVZpZGVvICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUERGOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucGRmICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuT0ZGTElORV9TRVNTSU9OOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub2ZmbGluZVNlc3Npb24gKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5TVVJWRVk6XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5zdXJ2ZXkgKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUud2ViUGFnZSArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlFVSVo6XG4gICAgICAgICAgICAgIGlmIChjaGlsZC5yZXNvdXJjZVR5cGUgPT09ICdBc3Nlc3NtZW50Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5hc3Nlc3NtZW50ICs9IDFcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucXVpeiArPSAxXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUFJBQ1RJQ0VfUkVTT1VSQ0U6XG4gICAgICAgICAgICAgIC8vIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuRklOQUxfQVNTRVNTTUVOVDpcbiAgICAgICAgICAgICAgLy8gY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QUkFDVElDRV9SRVNPVVJDRTpcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLnByYWN0aWNlVGVzdCArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLldFQl9NT0RVTEU6XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS53ZWJNb2R1bGUgKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5ZT1VUVUJFOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUueW91dHViZSArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub3RoZXIgKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jb250ZW50U3RydWN0dXJlKSB7XG4gICAgICBpZiAodGhpcy5jb250ZW50U3RydWN0dXJlW2tleV0gPiAwKSB7XG4gICAgICAgIHRoaXMuaGFzQ29udGVudFN0cnVjdHVyZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY29udGV4dFBhdGgoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHRJZDogdGhpcy5yb290SWQsXG4gICAgICBjb250ZXh0UGF0aDogdGhpcy5yb290Q29udGVudFR5cGUsXG4gICAgICBiYXRjaElkOiB0aGlzLmJhdGNoSWQsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbnRlbnRUcmFja0J5KF9pbmRleDogbnVtYmVyLCBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBjb250ZW50LmlkZW50aWZpZXJcbiAgfVxuXG4gIHB1YmxpYyByYWlzZVRlbGVtZXRyeSgpIHtcbiAgICAvLyBpZiAodGhpcy5mb3JQcmV2aWV3KSB7IHJldHVybiB9XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5ldmVudHMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeShcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjbGljaycsXG4gICAgICAgICAgc3ViVHlwZTogYGNhcmQtdG9jQ29udGVudENhcmRgLFxuICAgICAgICAgIC8vIGlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIGNvbnRlbnRJZDogdGhpcy5jb250ZW50LmlkZW50aWZpZXIgfHwgJycsXG4gICAgICAgICAgLy8gY29udGVudFR5cGU6IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgICAgaWQ6IHRoaXMuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxuICAgICAgICAgIHR5cGU6IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgICAgcm9sbHVwOiB7XG4gICAgICAgICAgICBsMTogdGhpcy5yb290SWQgfHwgJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2ZXI6IGAke3RoaXMuY29udGVudC52ZXJzaW9ufSR7Jyd9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UodGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSl9LWNhcmRgLFxuICAgICAgICAgIG1vZHVsZTogXy5jYW1lbENhc2UodGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSksXG4gICAgICAgIH0pXG4gICAgfVxuICB9XG4gIGdldCBpc0FsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuICEoTnNDb250ZW50LlVOX1NVUFBPUlRFRF9EQVRBX1RZUEVTX0ZPUl9OT05fQkFUQ0hfVVNFUlMuaW5kZXhPZih0aGlzLmNvbnRlbnQubWltZVR5cGUpID49IDApXG4gICAgfSByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgb3BlbkNlcnRpZmljYXRlRGlhbG9nKGNlcnREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjZXQgPSBjZXJ0RGF0YVxuICAgIHRoaXMuZGlhbG9nLm9wZW4oQ2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIC8vIGhlaWdodDogJzQwMHB4JyxcbiAgICAgIHdpZHRoOiAnMTMwMHB4JyxcbiAgICAgIGRhdGE6IHsgY2V0IH0sXG4gICAgICAvLyBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NvbGxlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29sbGVjdGlvbiB3LWF1dG8gc206dy0xMDAgcGFkZGluZy1yaWdodC14bFwiPlxuICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCJjYXJkLXRodW1ibmFpbCB3cy1tYXQtcHJpbWFyeS1saXRlLWJhY2tncm91bmRcIiBbc3JjXT1cImNvbnRlbnQ/LmFwcEljb25cIiBhbHQ9XCJUaHVtYm5haWxcIlxuICAgICAgICAgIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCIgW3dzVXRpbHNEZWZhdWx0VGh1bWJuYWlsXT1cImRlZmF1bHRUaHVtYm5haWxcIiAvPiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC13cmFwIGZsZXgtYmV0d2VlbiB3aWR0aC1leHBhbmQgcHItMCB3LTEwMCBzbTpwci00IHNtOnctYXV0b1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgW25nQ2xhc3NdPVwieydjdXJzb3ItcG9pbnRlcic6ICFpc0VuYWJsZWR9XCIgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX0gXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQuaXNzdWVkQ2VydGlmaWNhdGVzU1ZHXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjZXJ0aWZpY2F0ZS10eHRcIiAoY2xpY2spPVwib3BlbkNlcnRpZmljYXRlRGlhbG9nKGNvbnRlbnQuaXNzdWVkQ2VydGlmaWNhdGVzU1ZHKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aWV3LWNlcnRpZmljYXRlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJmdXNpb24tYXNzZXRzL2ltYWdlcy9jZXJ0aWZpY2F0ZS1pY28uc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2FwcHRvY2NvbnRlbnRjYXJkLnZpZXdDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgcmVzb3VyY2UgbXQtMiBzbTptdC0wXCIgKm5nSWY9XCJjb250ZW50Py5jYXRlZ29yeSA9PT0gJ1Jlc291cmNlJ1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7J2FwcHRvY2NvbnRlbnRjYXJkLnJlc291cmNlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIG1vZHVsZSBtdC0yIHNtOm10LTBcIiAqbmdJZj1cImNvbnRlbnQ/LmNhdGVnb3J5ID09PSAnQ29sbGVjdGlvbidcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtci0xIGN1c3RvbS1pY29uIHJvdGF0ZS05MFwiPmNhbGxfdG9fYWN0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5tb2R1bGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgY291cnNlIG10LTIgc206bXQtMFwiICpuZ0lmPVwiY29udGVudD8uY2F0ZWdvcnkgPT09ICdDb3Vyc2UnXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3snYXBwdG9jY29udGVudGNhcmQuY291cnNlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5LXN0cm9uZyBjb250ZW50LXR5cGVcIj57eyBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGUgfX08L3NwYW4+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlXCI+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0aW1lLWljb25cIj5zY2hlZHVsZTwvbWF0LWljb24+IC0tPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbG93ZXJjYXNlIHdzLW1hdC1ibGFjazYwLXRleHRcIj57eyBjb250ZW50Py5kdXJhdGlvbiB8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcydcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRlbnQ/LmFydGlmYWN0VXJsICYmIGlzQWxsb3dlZCAmJiAhaXNFbmFibGVkXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJ1dHRvbk1lbnVcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZSAmJiBjb250ZW50LnByaW1hcnlDYXRlZ29yeSAhPT0gJ0NvdXJzZSdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cbiAgICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiMTAwXCIgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIlxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZUNvbG9yXT1cIidyZ2JhKDAsMCwwLC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZE9wYWNpdHldPVwiMFwiIFtiYWNrZ3JvdW5kR3JhZGllbnRdPVwiZmFsc2VcIiBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICAgIFtzaG93WmVyb091dGVyU3Ryb2tlXT1mYWxzZSBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIiBbc3RhcnRGcm9tWmVyb109XCJmYWxzZVwiIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCJcbiAgICAgICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcbiAgICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgICAgICAgICAgPC93cy13aWRnZXQtY29udGVudC1wcm9ncmVzcz4gLS0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXG4gICAgICAgICAgICAgICAgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIiBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCIgW3NwYWNlXT1cIi0zXCJcbiAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIiBbaW5uZXJTdHJva2VDb2xvcl09XCIncmdiYSgwLDAsMCwuMTYpJ1wiIFthbmltYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIiBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCIgW2JhY2tncm91bmRPcGFjaXR5XT1cIjBcIiBbYmFja2dyb3VuZEdyYWRpZW50XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIiBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCIgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcbiAgICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcbiAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxuICAgICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPiAtLT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaGFzQ29udGVudFN0cnVjdHVyZVwiIGNsYXNzPVwiY2hpbGQtbWV0YS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZC1zdHJ1Y3R1cmVcIj4gLS0+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJzdHJ1Y3R1cmUtaWNvblwiPmltcG9ydF9jb250YWN0czwvbWF0LWljb24+IC0tPlxuICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uY291cnNlID09PSAxXCIgPiBDb3Vyc2U8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uY291cnNlID4gMVwiID4gQ291cnNlczwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPT09IDFcIiA+IE1vZHVsZTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5sZWFybmluZ01vZHVsZSA+IDFcIiA+IE1vZHVsZXM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvID4gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvID09PSAxXCIgPiBWaWRlbzwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy52aWRlbyA+IDFcIiA+IFZpZGVvczwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA+IDBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPiB7eyBjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmludGVyYWN0aXZlVmlkZW8gPT09IDFcIiA+XG4gICAgICAgICAgICAgICAgICBJbnRlcmFjdGl2ZSBWaWRlbzwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMVwiID5cbiAgICAgICAgICAgICAgICAgIEludGVyYWN0aXZlIFZpZGVvczwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPiB7eyBjb250ZW50U3RydWN0dXJlPy55b3V0dWJlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnlvdXR1YmUgPT09IDFcIiA+IFlvdXR1YmUgVmlkZW88L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDFcIiA+IFlvdXR1YmUgVmlkZW9zPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wZGYgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ucGRmIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBkZiA9PT0gMVwiID4gUERGPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBkZiA+IDFcIiA+IFBERnM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBvZGNhc3QgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ucG9kY2FzdCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wb2RjYXN0ID09PSAxXCIgPiBQb2RjYXN0PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBvZGNhc3QgPiAxXCIgPiBQb2RjYXN0czwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LndlYk1vZHVsZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJNb2R1bGUgPT09IDFcIiA+IFdlYiBNb2R1bGU8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMVwiID4gV2ViIE1vZHVsZXM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LndlYlBhZ2UgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID09PSAxXCIgPiBXZWIgUGFnZTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID4gMVwiID4gV2ViIFBhZ2VzPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5xdWl6ID4gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID4gMFwiPiwgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5xdWl6IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnF1aXogPT09IDFcIiA+IFF1aXo8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucXVpeiA+IDFcIiA+IFF1aXp6ZXM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8uYXNzZXNzbWVudCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5hc3Nlc3NtZW50ID09PSAxXCIgPiBBc3Nlc3NtZW50PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgPiAxXCIgPiBBc3Nlc3NtZW50czwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ub3RoZXIgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5vdGhlciB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5vdGhlciA9PT0gMVwiID4gT3RoZXIgaXRlbTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5vdGhlciA+IDFcIiA+IE90aGVyIEl0ZW1zPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VlLWFsbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW5cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi1sZWZ0LW0gc2VlLWFsbC1idG4gdGFiIGN1c3RvbS1jaGV2cm9uIGN1c3RvbWljb25cIiBtYXQtYnV0dG9uPlxuICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlld0NoaWxkcmVuXCIgPlNlZSBBbGw8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDaGlsZHJlblwiID5TZWUgTGVzczwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXZpZXdDaGlsZHJlblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ2aWV3Q2hpbGRyZW5cIj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY29tcGxldGlvblN0YXR1cyA9PSAyXCI+XG4gICAgICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxuICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPCAyXCI+XG4gICAgICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXG4gICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxuICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNoaWxkcmVuLWNvbnRhaW5lciBtYXJnaW4tbGVmdC1sIG1hcmdpbi10b3AtcyBtYXJnaW4tYm90dG9tLXNcIiBbaGlkZGVuXT1cIiF2aWV3Q2hpbGRyZW5cIj5cbiAgICAgIDx3cy1hcHAtdG9jLWNvbnRlbnQtY2FyZCBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCIgW2NvbnRlbnRdPVwiY2hpbGRcIiBbZXhwYW5kQWxsXT1cImV4cGFuZEFsbFwiIFtyb290SWRdPVwicm9vdElkXCJcbiAgICAgICAgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtyb290Q29udGVudFR5cGVdPVwicm9vdENvbnRlbnRUeXBlXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbnRlbnQ/LmNoaWxkcmVuOyB0cmFja0J5OiBjb250ZW50VHJhY2tCeVwiPlxuICAgICAgPC93cy1hcHAtdG9jLWNvbnRlbnQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgKm5nSWY9XCJpc1Jlc291cmNlXCIgY2xhc3M9XCJyZXNvdXJjZS1jb250YWluZXJcIj5cbiAgICA8IS0tIDx3cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUtaWNvbiBjbGFzcz1cImZsZXhcIiBbZGlzcGxheUNvbnRlbnRUeXBlXT1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPlxuICAgIDwvd3Mtd2lkZ2V0LWRpc3BsYXktY29udGVudC10eXBlLWljb24+IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImltZy1jb250YWluZXJcIj4gLS0+XG4gICAgPCEtLSA8aW1nIGNsYXNzPVwiY2FyZC10aHVtYm5haWwgd3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kXCIgW3NyY109XCJjb250ZW50Py5hcHBJY29uXCIgYWx0PVwiVGh1bWJuYWlsXCJcbiAgICAgICAgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW5cIiBbd3NVdGlsc0RlZmF1bHRUaHVtYm5haWxdPVwiZGVmYXVsdFRodW1ibmFpbFwiIC8+IC0tPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxuICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cIjEwMFwiIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCI+XG4gICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxuICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcbiAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+XG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDwhLS0gPC9kaXY+IC0tPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvXCI+XG4gICAgICA8IS0tIGRlYWN0aXZhdGVkIGFzIHBlciBOSUMgQ0VPIHJlcXVpcmVtZW50IHRvIGFjY2VzcyBjb3Vyc2Ugd3Rob3V0IGxvZ2luIC0tPlxuICAgICAgPGEgW2NsYXNzLmRpc2FibGVkXT1cIihmb3JQcmV2aWV3IHx8ICFpc0VuYWJsZWQpID8gdHJ1ZSA6IG51bGxcIiBbcm91dGVyTGlua109XCIoaXNBbGxvd2VkICYmICFmb3JQcmV2aWV3ICYmICFpc0VuYWJsZWQpID8gcmVzb3VyY2VMaW5rLnVybCA6IG51bGxcIlxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwiKGlzQWxsb3dlZCAmJiAhZm9yUHJldmlldyAmJiAhaXNFbmFibGVkKSAgPyByZXNvdXJjZUxpbmsucXVlcnlQYXJhbXMgOiBudWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIFwiIFtuZ0NsYXNzXT1cInsnY3Vyc29yLXBvaW50ZXInOiAhaXNFbmFibGVkfVwiIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuOyByYWlzZVRlbGVtZXRyeSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC13cmFwXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm1hcmdpbi1yaWdodC14cyByYWRpb2J0biB0aW1lLWljb25cIj5yYWRpb19idXR0b25fdW5jaGVja2VkIDwvbWF0LWljb24+IC0tPlxuICAgICAgICAgICAgICB7eyBjb250ZW50Py5uYW1lIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnQtdHlwZSBvcHRpb25hbC1zcGFuXCIgKm5nSWY9XCJjb250ZW50Py5vcHRpb25hbFJlYWRpbmdcIj57eydhcHB0b2Njb250ZW50Y2FyZC5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXQtYm9keS1zdHJvbmcgY29udGVudC10eXBlXCI+e3sgY29udGVudD8uaWRlbnRpZmllciB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2ljb25zIHdzLW1hdC1ibGFjazYwLXRleHRcIj5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXQtYm9keS1zdHJvbmcgY29udGVudC10eXBlIHdzLW1hdC1kZWZhdWx0LXRleHRcIj57eyBjb250ZW50Py5jb250ZW50VHlwZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPiZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDs8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRpbWUtaWNvblwiPnNjaGVkdWxlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L3ZpZGVvLnN2Z1wiIGFsdD1cIlZpZGVvXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICd2aWRlby9tcDQnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndmlkZW8veC15b3V0dWJlJyB8fFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ/Lm1pbWVUeXBlID09PSdhcHBsaWNhdGlvbi94LW1wZWdVUkwnXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2F1ZGlvLnN2Z1wiIGFsdD1cIkF1ZGlvXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhdWRpby9tcGVnJ1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9wZGYuc3ZnXCIgYWx0PVwiUERGXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9wZGYnXCI+XG4gICAgICAgICAgICA8IS0tIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvcmVzb3VyY2Uuc3ZnXCIgYWx0PVwiU3VydmV5XCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9zdXJ2ZXknXCI+IC0tPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9saW5rLnN2Z1wiIGFsdD1cIkludGVyYWN0aXZlQ29udGVudFwiIGNsYXNzPVwiZmxvYXQtbGVmdCBtYXJnaW4tcmlnaHQteHNcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndGV4dC94LXVybCdcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvYXNzZXNzbWVudC5zdmdcIiBhbHQ9XCJBc3Nlc3NtZW50XCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJyB8fCBjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3F1aXonIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2ltYWdlLnN2Z1wiIGFsdD1cIkltYWdlXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdpbWFnZS9wbmcnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnaW1hZ2UvanBlZydcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvY29udGVudF9jb3B5LnN2Z1wiIGNsYXNzPVwiY29udGVudGljb25cIiBhbHQ9XCJDb3Vyc2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmNvbnRlbnQtY29sbGVjdGlvbicgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9zdXJ2ZXknXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L21vZHVsZS5zdmdcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCIgYWx0PVwib2ZmbGluZSBzZXNzaW9uc1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudC5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL29mZmxpbmUnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vc3VydmV5J1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3sgKGNvbnRlbnQ/LmR1cmF0aW9uIHx8IDEyMCl8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcycgfX08L3NwYW4+XG4gICAgICAgICAgICA8IS0tIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IHNtOmp1c3RpZnktZW5kXCI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIHJlc291cmNlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ1Jlc291cmNlJ1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPlJlc291cmNlPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIG1vZHVsZVwiICpuZ0lmPVwiY29udGVudD8uY29udGVudFR5cGUgPT09ICdDb2xsZWN0aW9uJ1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPk1vZHVsZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlLWNvbnRhaW5lciBjb3Vyc2VcIiAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRUeXBlID09PSAnQ291cnNlJ1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPkNvdXJzZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uYXJ0aWZhY3RVcmwgJiYgIWlzWFNtYWxsICYmIGlzQWxsb3dlZCAmJiBpc0VuYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYnV0dG9uTWVudVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9yUHJldmlldyAmJiBjb250ZW50Py5pZGVudGlmaWVyICYmIGNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlIDsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxuICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiMTAwXCIgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCIgW3NwYWNlXT1cIi0zXCIgW291dGVyU3Ryb2tlQ29sb3JdPVwicHJvZ3Jlc3NDb2xvcigpXCJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwgMCwgMCwgMC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtiYWNrZ3JvdW5kT3BhY2l0eV09XCIwXCIgW2JhY2tncm91bmRHcmFkaWVudF09XCJmYWxzZVwiIFtiYWNrZ3JvdW5kU3Ryb2tlV2lkdGhdPVwiM1wiIG1hdFRvb2x0aXA9XCJ7eydhcHB0b2Njb250ZW50Y2FyZC5jb21wbGV0ZWQnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIiBbYmFja2dyb3VuZFBhZGRpbmddPVwiMFwiXG4gICAgICAgICAgICAgIFtpbWFnZUhlaWdodF09XCIyNFwiIFtpbWFnZVdpZHRoXT1cIjI0XCIgW3Nob3dCYWNrZ3JvdW5kXT1cImZhbHNlXCIgW291dGVyU3Ryb2tlTGluZWNhcF09XCInYnV0dCdcIj5cbiAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgPCEtLSA8d3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3MgKm5nSWY9XCJjb250ZW50Py5pZGVudGlmaWVyXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxuICAgICAgICAgICAgICAgIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCI+XG4gICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxuICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2VcIiBbcmFkaXVzXT1cIjEyXCJcbiAgICAgICAgICAgICAgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yMigpXCJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwgMCwgMCwgMC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtiYWNrZ3JvdW5kT3BhY2l0eV09XCIwXCIgW2JhY2tncm91bmRHcmFkaWVudF09XCJmYWxzZVwiIFtiYWNrZ3JvdW5kU3Ryb2tlV2lkdGhdPVwiM1wiIG1hdFRvb2x0aXA9XCJ7eydhcHB0b2Njb250ZW50Y2FyZC5pblByb2dyZXNzJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgW3Nob3daZXJvT3V0ZXJTdHJva2VdPWZhbHNlIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiIFtzdGFydEZyb21aZXJvXT1cImZhbHNlXCIgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIlxuICAgICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICA8L2NpcmNsZS1wcm9ncmVzcz5cbiAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcbiAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XG4gICAgICAgIDxjaXJjbGUtcHJvZ3Jlc3MgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIlxuICAgICAgICAgIFtwZXJjZW50XT1cIjBcIlxuICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIlxuICAgICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cIicjODA4MDgwJ1wiXG4gICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJyM4MDgwODAnXCJcbiAgICAgICAgICBbYW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICAgIFtzcGFjZV09XCItM1wiXG4gICAgICAgICAgW3Nob3dVbml0c109XCJmYWxzZVwiXG4gICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiXG4gICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIlxuICAgICAgICAgIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiXG4gICAgICAgICAgW291dGVyU3Ryb2tlTGluZWNhcF09XCInYnV0dCdcIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydhcHB0b2Njb250ZW50Y2FyZC5ub3RTdGFydGVkJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgXG4gICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgXG4gICAgICAgICAgW2Nsb2Nrd2lzZV09XCJ0cnVlXCIgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIj48L2NpcmNsZS1wcm9ncmVzcz5cbiAgICAgICAgPCEtLSA8cD5ubyBkYXRhPC9wPiAtLT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBcblxuICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY29udGVudD8uYXJ0aWZhY3RVcmxcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJidXR0b25NZW51XCI+XG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1tZXRhIHdpZHRoLWV4cGFuZFwiPlxuICAgICAgPGEgW3JvdXRlckxpbmtdPVwicmVzb3VyY2VMaW5rLnVybFwiIFtxdWVyeVBhcmFtc109XCJyZXNvdXJjZUxpbmsucXVlcnlQYXJhbXNcIj5cbiAgICAgICAgPGgzICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlICE9PSBlbnVtQ29udGVudFR5cGVzLkFTU0VTU01FTlRcIiBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgxICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlID09PSBlbnVtQ29udGVudFR5cGVzLkFTU0VTU01FTlRcIiBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIG1hcmdpbi1sZWZ0LXhzXCI+e3sgY29udGVudD8uZHVyYXRpb24gfCBwaXBlRHVyYXRpb25UcmFuc2Zvcm06ICd0aW1lMjQnIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+IC0tPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bWF0LW1lbnUgI2J1dHRvbk1lbnU9XCJtYXRNZW51XCI+XG4gIDxhIG1hdC1tZW51LWl0ZW0gW3JvdXRlckxpbmtdPVwiJy4uLycgKyBjb250ZW50Py5pZGVudGlmaWVyICsgJy9vdmVydmlldydcIiBbcXVlcnlQYXJhbXNdPVwiY29udGV4dFBhdGhcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LW1pZGRsZVwiPlxuICAgIDxtYXQtaWNvbj50b2M8L21hdC1pY29uPlxuICAgIDxoMyBjbGFzcz1cIm1hcmdpbi1yZW1vdmVcIiA+XG4gICAgICB7eydhcHB0b2Njb250ZW50Y2FyZC52aWV3RGV0YWlscycgfCB0cmFuc2xhdGV9fVxuICAgIDwvaDM+XG4gIDwvYT5cbiAgPCEtLSBUT0RPOiBIaWRpbmcgdGhpcyBmcm9tIGhlcmUgZm9yIG5vdywgYXMgdGhlIGZ1bmN0aW9uYWxpdGllcyBhcmUgbm90IHdvcmtpbmcgLS0+XG4gIDwhLS0gPGRpdiBtYXQtbWVudS1pdGVtPlxuICAgIDx3cy13aWRnZXQtYnRuLWNvbnRlbnQtZG93bmxvYWQgW3dpZGdldERhdGFdPVwiXG4gICAgICAgIGNvbnRlbnRcbiAgICAgICAgICB8IHBpcGVQYXJ0aWFsQ29udGVudFxuICAgICAgICAgICAgOiBbJ2lkZW50aWZpZXInLCAnY29udGVudFR5cGUnLCAncmVzb3VyY2VUeXBlJywgJ21pbWVUeXBlJywgJ2Rvd25sb2FkVXJsJywgJ2lzRXh0ZXJuYWwnXVxuICAgICAgXCI+PC93cy13aWRnZXQtYnRuLWNvbnRlbnQtZG93bmxvYWQ+XG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1saWtlIFt3aWRnZXREYXRhXT1cImNvbnRlbnQgfCBwaXBlUGFydGlhbENvbnRlbnQ6IFsnaWRlbnRpZmllciddXCI+XG4gICAgPC93cy13aWRnZXQtYnRuLWNvbnRlbnQtbGlrZT5cbiAgICA8d3Mtd2lkZ2V0LWJ0bi1jb250ZW50LXNoYXJlIFt3aWRnZXREYXRhXT1cImNvbnRlbnRcIj48L3dzLXdpZGdldC1idG4tY29udGVudC1zaGFyZT5cbiAgICA8d3Mtd2lkZ2V0LWJ0bi1nb2Fscz48L3dzLXdpZGdldC1idG4tZ29hbHM+XG4gICAgPHdzLXdpZGdldC1idG4tcGxheWxpc3Q+PC93cy13aWRnZXQtYnRuLXBsYXlsaXN0PlxuICA8L2Rpdj4gLS0+XG48L21hdC1tZW51PlxuIl19