@sunbird-cb/toc 0.0.2 → 0.0.3-2.1

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 (371) hide show
  1. package/esm2022/lib/_collection/_common/ai-tutor/ai-tutor.component.mjs +1169 -0
  2. package/esm2022/lib/_collection/_common/ai-tutor/socket.service.mjs +121 -0
  3. package/esm2022/lib/_collection/_common/card-competency/card-competency.component.mjs +58 -0
  4. package/esm2022/lib/_collection/_common/card-competency/card-competency.module.mjs +22 -0
  5. package/esm2022/lib/_collection/_common/card-content-v2/card-content-v2.model.mjs +23 -0
  6. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +108 -7
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +5 -1
  8. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +3 -3
  9. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +18 -8
  10. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +88 -7
  11. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +393 -51
  12. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +16 -34
  13. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +7 -2
  14. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +5 -2
  15. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +2 -8
  16. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +3 -3
  17. package/esm2022/lib/_services/widget-content.model.mjs +8 -1
  18. package/esm2022/lib/_services/widget-content.service.mjs +3 -3
  19. package/esm2022/lib/app-toc-lib.module.mjs +7 -3
  20. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +37 -8
  21. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +3 -3
  22. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +3 -3
  23. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +224 -67
  24. package/esm2022/lib/registration-toc-lib.config.mjs +14 -0
  25. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +1 -1
  26. package/esm2022/lib/services/app-toc-v2.service.mjs +192 -54
  27. package/esm2022/lib/services/app-toc.service.mjs +381 -104
  28. package/esm2022/lib/services/certificate.service.mjs +54 -9
  29. package/esm2022/lib/services/root.service.mjs +106 -0
  30. package/esm2022/lib/services/viewer-data.service.mjs +1 -1
  31. package/esm2022/lib/services/viewer-util.service.mjs +150 -23
  32. package/esm2022/public-api.mjs +11 -1
  33. package/fesm2022/sunbird-cb-toc.mjs +9093 -6348
  34. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  35. package/index.d.ts +0 -1
  36. package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +139 -0
  37. package/lib/_collection/_common/ai-tutor/socket.service.d.ts +19 -0
  38. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +0 -1
  39. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +0 -1
  40. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +0 -1
  41. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +0 -1
  42. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +0 -1
  43. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +0 -1
  44. package/lib/_collection/_common/card-competency/card-competency.component.d.ts +14 -0
  45. package/lib/_collection/_common/card-competency/card-competency.module.d.ts +8 -0
  46. package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts +44 -0
  47. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +8 -1
  48. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +12 -12
  49. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +0 -1
  50. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +0 -1
  51. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +0 -1
  52. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +0 -1
  53. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +0 -1
  54. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +0 -1
  55. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +0 -1
  56. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +0 -1
  57. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +0 -1
  58. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +0 -1
  59. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +0 -1
  60. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +0 -1
  61. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +0 -1
  62. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +1 -2
  63. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +2 -1
  64. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +0 -1
  65. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +0 -1
  66. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +0 -1
  67. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +8 -1
  68. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +64 -5
  69. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +0 -1
  70. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +0 -1
  71. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +0 -1
  72. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +0 -1
  73. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +0 -1
  74. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +0 -1
  75. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +0 -1
  76. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +2 -2
  77. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +29 -29
  78. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +0 -1
  79. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +0 -1
  80. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +0 -1
  81. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +0 -1
  82. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +0 -1
  83. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +0 -1
  84. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +0 -1
  85. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +0 -1
  86. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +0 -1
  87. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +0 -1
  88. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +0 -1
  89. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +0 -1
  90. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +0 -1
  91. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +0 -1
  92. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +0 -2
  93. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +0 -1
  94. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +0 -1
  95. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +0 -1
  96. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +0 -1
  97. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +0 -1
  98. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +0 -1
  99. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +0 -1
  100. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +0 -1
  101. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +0 -1
  102. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +0 -1
  103. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +0 -1
  104. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +0 -1
  105. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +0 -1
  106. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +0 -1
  107. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +0 -1
  108. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +0 -1
  109. package/lib/_collection/_common/user-image/user-image.component.d.ts +0 -1
  110. package/lib/_collection/_common/user-image/user-image.module.d.ts +0 -1
  111. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +0 -1
  112. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +0 -1
  113. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +0 -1
  114. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +0 -1
  115. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +0 -1
  116. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +0 -1
  117. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +0 -1
  118. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +0 -1
  119. package/lib/_collection-api.d.ts +0 -1
  120. package/lib/_constants/widget-content.constants.d.ts +0 -1
  121. package/lib/_directives/tooltip.directive.d.ts +0 -1
  122. package/lib/_models/common.model.d.ts +0 -1
  123. package/lib/_models/error.model.d.ts +0 -1
  124. package/lib/_pipes/highlight.pipe.d.ts +0 -1
  125. package/lib/_services/rating.service.d.ts +0 -1
  126. package/lib/_services/samuhik-charcha.service.d.ts +0 -1
  127. package/lib/_services/viewer-route-util.d.ts +0 -1
  128. package/lib/_services/widget-content.model.d.ts +6 -1
  129. package/lib/_services/widget-content.service.d.ts +0 -1
  130. package/lib/_shared/translate-loader.factory.d.ts +0 -1
  131. package/lib/app-toc-lib.module.d.ts +2 -2
  132. package/lib/collection.config.d.ts +0 -1
  133. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +0 -1
  134. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +0 -1
  135. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +3 -1
  136. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +0 -1
  137. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +0 -1
  138. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +0 -1
  139. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +0 -1
  140. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +0 -1
  141. package/lib/components/app-toc-home/app-toc-home.component.d.ts +0 -1
  142. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +28 -4
  143. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +0 -1
  144. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +0 -1
  145. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +0 -1
  146. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +0 -1
  147. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +0 -1
  148. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +0 -1
  149. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +0 -1
  150. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +0 -1
  151. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +0 -1
  152. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +0 -1
  153. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +0 -1
  154. package/lib/components/public-survey-form/public-survey-form.component.d.ts +0 -1
  155. package/lib/components/survey-form-question/survey-form-question.component.d.ts +0 -1
  156. package/lib/components/survey-form-section/survey-form-section.component.d.ts +0 -1
  157. package/lib/models/app-toc-analytics.model.d.ts +0 -1
  158. package/lib/models/app-toc.model.d.ts +0 -1
  159. package/lib/models/auto-complete.model.d.ts +0 -1
  160. package/lib/models/card-content.model.d.ts +0 -1
  161. package/lib/models/content-strip-with-tabs.model.d.ts +0 -1
  162. package/lib/models/discussion-forum.model.d.ts +0 -1
  163. package/lib/models/goal.model.d.ts +0 -1
  164. package/lib/models/meta-tag.model.d.ts +0 -1
  165. package/lib/models/playlist.model.d.ts +0 -1
  166. package/lib/models/profile-revamp.model.d.ts +0 -1
  167. package/lib/models/rating.model.d.ts +0 -1
  168. package/lib/models/user-profile.model.d.ts +0 -1
  169. package/lib/registration-toc-lib.config.d.ts +4 -0
  170. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +0 -1
  171. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +0 -1
  172. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +0 -1
  173. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +0 -1
  174. package/lib/resolvers/app-toc-resolver.service.d.ts +0 -1
  175. package/lib/resolvers/config-resolver.service.d.ts +0 -1
  176. package/lib/resolvers/profile-resolver.service.d.ts +0 -1
  177. package/lib/resolvers/restricted-features-resolver.service.d.ts +0 -1
  178. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +0 -1
  179. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +0 -1
  180. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +0 -1
  181. package/lib/services/access-control.service.d.ts +0 -1
  182. package/lib/services/action.service.d.ts +0 -1
  183. package/lib/services/app-toc-v2.service.d.ts +3 -1
  184. package/lib/services/app-toc.service.d.ts +41 -13
  185. package/lib/services/certificate.service.d.ts +5 -7
  186. package/lib/services/discuss-utils.service.d.ts +0 -1
  187. package/lib/services/editor.service.d.ts +0 -1
  188. package/lib/services/load-check.service.d.ts +0 -1
  189. package/lib/services/loader.service.d.ts +0 -1
  190. package/lib/services/mobile-apps.service.d.ts +0 -1
  191. package/lib/services/netcore.service.d.ts +0 -1
  192. package/lib/services/nps-grid.service.d.ts +0 -1
  193. package/lib/services/otp.service.d.ts +0 -1
  194. package/lib/services/profile-v2.service.d.ts +0 -1
  195. package/lib/services/reset-ratings.service.d.ts +0 -1
  196. package/lib/services/resource-download-helper.service.d.ts +0 -1
  197. package/lib/services/root.service.d.ts +26 -0
  198. package/lib/services/timer.service.d.ts +0 -1
  199. package/lib/services/title-tag.service.d.ts +0 -1
  200. package/lib/services/user-profile.service.d.ts +0 -1
  201. package/lib/services/viewer-data.service.d.ts +9 -6
  202. package/lib/services/viewer-util.service.d.ts +14 -1
  203. package/lib/share-toc/share-toc/share-toc.component.d.ts +0 -1
  204. package/lib/share-toc/share-toc.module.d.ts +0 -1
  205. package/package.json +3 -5
  206. package/public-api.d.ts +9 -1
  207. package/sunbird-cb-toc-0.0.32.1.tgz +0 -0
  208. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +0 -1
  209. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +0 -1
  210. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +0 -1
  211. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +0 -1
  212. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +0 -1
  213. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +0 -1
  214. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +0 -1
  215. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +0 -1
  216. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +0 -1
  217. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +0 -1
  218. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +0 -1
  219. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +0 -1
  220. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +0 -1
  221. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +0 -1
  222. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +0 -1
  223. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +0 -1
  224. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +0 -1
  225. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +0 -1
  226. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +0 -1
  227. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +0 -1
  228. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +0 -1
  229. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +0 -1
  230. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +0 -1
  231. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +0 -1
  232. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +0 -1
  233. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +0 -1
  234. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +0 -1
  235. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +0 -1
  236. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +0 -1
  237. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +0 -1
  238. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +0 -1
  239. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +0 -1
  240. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +0 -1
  241. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +0 -1
  242. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +0 -1
  243. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +0 -1
  244. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +0 -1
  245. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +0 -1
  246. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +0 -1
  247. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +0 -1
  248. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +0 -1
  249. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +0 -1
  250. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +0 -1
  251. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +0 -1
  252. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +0 -1
  253. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +0 -1
  254. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +0 -1
  255. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +0 -1
  256. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +0 -1
  257. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +0 -1
  258. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +0 -1
  259. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +0 -1
  260. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +0 -1
  261. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +0 -1
  262. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +0 -1
  263. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +0 -1
  264. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +0 -1
  265. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +0 -1
  266. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +0 -1
  267. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +0 -1
  268. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +0 -1
  269. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +0 -1
  270. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +0 -1
  271. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +0 -1
  272. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +0 -1
  273. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +0 -1
  274. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +0 -1
  275. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +0 -1
  276. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +0 -1
  277. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +0 -1
  278. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +0 -1
  279. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +0 -1
  280. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +0 -1
  281. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +0 -1
  282. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +0 -1
  283. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +0 -1
  284. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +0 -1
  285. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +0 -1
  286. package/lib/_collection-api.d.ts.map +0 -1
  287. package/lib/_constants/widget-content.constants.d.ts.map +0 -1
  288. package/lib/_directives/tooltip.directive.d.ts.map +0 -1
  289. package/lib/_models/common.model.d.ts.map +0 -1
  290. package/lib/_models/error.model.d.ts.map +0 -1
  291. package/lib/_pipes/highlight.pipe.d.ts.map +0 -1
  292. package/lib/_services/rating.service.d.ts.map +0 -1
  293. package/lib/_services/samuhik-charcha.service.d.ts.map +0 -1
  294. package/lib/_services/viewer-route-util.d.ts.map +0 -1
  295. package/lib/_services/widget-content.model.d.ts.map +0 -1
  296. package/lib/_services/widget-content.service.d.ts.map +0 -1
  297. package/lib/_shared/translate-loader.factory.d.ts.map +0 -1
  298. package/lib/app-toc-lib.module.d.ts.map +0 -1
  299. package/lib/collection.config.d.ts.map +0 -1
  300. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +0 -1
  301. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +0 -1
  302. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +0 -1
  303. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +0 -1
  304. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +0 -1
  305. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +0 -1
  306. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +0 -1
  307. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +0 -1
  308. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  309. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +0 -1
  310. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +0 -1
  311. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +0 -1
  312. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +0 -1
  313. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +0 -1
  314. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +0 -1
  315. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +0 -1
  316. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +0 -1
  317. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +0 -1
  318. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +0 -1
  319. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +0 -1
  320. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +0 -1
  321. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +0 -1
  322. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +0 -1
  323. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +0 -1
  324. package/lib/models/app-toc-analytics.model.d.ts.map +0 -1
  325. package/lib/models/app-toc.model.d.ts.map +0 -1
  326. package/lib/models/auto-complete.model.d.ts.map +0 -1
  327. package/lib/models/card-content.model.d.ts.map +0 -1
  328. package/lib/models/content-strip-with-tabs.model.d.ts.map +0 -1
  329. package/lib/models/discussion-forum.model.d.ts.map +0 -1
  330. package/lib/models/goal.model.d.ts.map +0 -1
  331. package/lib/models/meta-tag.model.d.ts.map +0 -1
  332. package/lib/models/playlist.model.d.ts.map +0 -1
  333. package/lib/models/profile-revamp.model.d.ts.map +0 -1
  334. package/lib/models/rating.model.d.ts.map +0 -1
  335. package/lib/models/user-profile.model.d.ts.map +0 -1
  336. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +0 -1
  337. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +0 -1
  338. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +0 -1
  339. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +0 -1
  340. package/lib/resolvers/app-toc-resolver.service.d.ts.map +0 -1
  341. package/lib/resolvers/config-resolver.service.d.ts.map +0 -1
  342. package/lib/resolvers/profile-resolver.service.d.ts.map +0 -1
  343. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +0 -1
  344. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  345. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +0 -1
  346. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +0 -1
  347. package/lib/services/access-control.service.d.ts.map +0 -1
  348. package/lib/services/action.service.d.ts.map +0 -1
  349. package/lib/services/app-toc-v2.service.d.ts.map +0 -1
  350. package/lib/services/app-toc.service.d.ts.map +0 -1
  351. package/lib/services/certificate.service.d.ts.map +0 -1
  352. package/lib/services/discuss-utils.service.d.ts.map +0 -1
  353. package/lib/services/editor.service.d.ts.map +0 -1
  354. package/lib/services/load-check.service.d.ts.map +0 -1
  355. package/lib/services/loader.service.d.ts.map +0 -1
  356. package/lib/services/mobile-apps.service.d.ts.map +0 -1
  357. package/lib/services/netcore.service.d.ts.map +0 -1
  358. package/lib/services/nps-grid.service.d.ts.map +0 -1
  359. package/lib/services/otp.service.d.ts.map +0 -1
  360. package/lib/services/profile-v2.service.d.ts.map +0 -1
  361. package/lib/services/reset-ratings.service.d.ts.map +0 -1
  362. package/lib/services/resource-download-helper.service.d.ts.map +0 -1
  363. package/lib/services/timer.service.d.ts.map +0 -1
  364. package/lib/services/title-tag.service.d.ts.map +0 -1
  365. package/lib/services/user-profile.service.d.ts.map +0 -1
  366. package/lib/services/viewer-data.service.d.ts.map +0 -1
  367. package/lib/services/viewer-util.service.d.ts.map +0 -1
  368. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +0 -1
  369. package/lib/share-toc/share-toc.module.d.ts.map +0 -1
  370. package/public-api.d.ts.map +0 -1
  371. package/sunbird-cb-toc.d.ts.map +0 -1
@@ -243,5 +243,12 @@ export var NsContent;
243
243
  (function (EContextLockingType) {
244
244
  EContextLockingType["COURSE_ASSESSMENT_ONLY"] = "Course Assessment Only";
245
245
  })(EContextLockingType = NsContent.EContextLockingType || (NsContent.EContextLockingType = {}));
246
+ let EAssessmentContextCategory;
247
+ (function (EAssessmentContextCategory) {
248
+ EAssessmentContextCategory["PRELIMINARY_ASSESSMENT"] = "Preliminary Assessment";
249
+ EAssessmentContextCategory["FINAL_MILESTONE_ASSESSMENT"] = "Final Milestone Assessment";
250
+ EAssessmentContextCategory["FINAL_PROGRAM_ASSESSMENT"] = "Final Program Assessment";
251
+ EAssessmentContextCategory["PRE_ENROLMENT_ASSESSMENT"] = "Pre Enrolment Assessment";
252
+ })(EAssessmentContextCategory = NsContent.EAssessmentContextCategory || (NsContent.EAssessmentContextCategory = {}));
246
253
  })(NsContent || (NsContent = {}));
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX3NlcnZpY2VzL3dpZGdldC1jb250ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sS0FBVyxTQUFTLENBMmtCekI7QUEza0JELFdBQWlCLFNBQVM7SUFvVnhCOztRQUVJO0lBQ0osSUFBWSxhQVVYO0lBVkQsV0FBWSxhQUFhO1FBQ3ZCLHNDQUFxQixDQUFBO1FBQ3JCLDBDQUF5QixDQUFBO1FBQ3pCLG9DQUFtQixDQUFBO1FBQ25CLGtDQUFpQixDQUFBO1FBQ2pCLDBEQUF5QyxDQUFBO1FBQ3pDLG9EQUFtQyxDQUFBO1FBQ25DLHVEQUFzQyxDQUFBO1FBQ3RDLHNDQUFxQixDQUFBO1FBQ3JCLHNDQUFxQixDQUFBO0lBQ3ZCLENBQUMsRUFWVyxhQUFhLEdBQWIsdUJBQWEsS0FBYix1QkFBYSxRQVV4QjtJQUNELElBQVksZ0JBb0NYO0lBcENELFdBQVksZ0JBQWdCO1FBQzFCLHVDQUFtQixDQUFBO1FBQ25CLHFDQUFpQixDQUFBO1FBQ2pCLDBDQUFzQixDQUFBO1FBQ3RCLGtEQUE4QixDQUFBO1FBQzlCLG1DQUFlLENBQUE7UUFDZix5Q0FBcUIsQ0FBQTtRQUNyQiwrREFBMkMsQ0FBQTtRQUMzQywwREFBc0MsQ0FBQTtRQUN0Qyw2REFBeUMsQ0FBQTtRQUN6QyxpREFBNkIsQ0FBQTtRQUM3QixpREFBNkIsQ0FBQTtRQUM3Qix5RUFBcUQsQ0FBQTtRQUNyRCxxRUFBaUQsQ0FBQTtRQUNqRCxtRUFBK0MsQ0FBQTtRQUMvQyxtRUFBK0MsQ0FBQTtRQUMvQyx1REFBbUMsQ0FBQTtRQUNuQyx1REFBbUMsQ0FBQTtRQUNuQyx1REFBbUMsQ0FBQTtRQUNuQyx1Q0FBdUM7UUFDdkM7O1dBRUc7UUFDSCw2REFBeUMsQ0FBQTtRQUN6Qzs7VUFFRTtRQUNGLHVE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QyxTQUFTO1FBQ3BCLFVBQVUsQ0FBQyxHQUFHO1FBQ2QsVUFBVSxDQUFDLElBQUk7UUFDZixVQUFVLENBQUMsR0FBRztRQUNkLFVBQVUsQ0FBQyxHQUFHO1FBQ2QsVUFBVSxDQUFDLEdBQUc7UUFDZCxVQUFVLENBQUMsR0FBRztRQUNkLFVBQVUsQ0FBQyxPQUFPO1FBQ2xCLFVBQVUsQ0FBQyxRQUFRO1FBQ25CLFVBQVUsQ0FBQyxNQUFNO0tBQ2xCLENBQUE7SUFTRCxJQUFZLG1CQUVYO0lBRkQsV0FBWSxtQkFBbUI7UUFDN0Isd0VBQWlELENBQUE7SUFDbkQsQ0FBQyxFQUZXLG1CQUFtQixHQUFuQiw2QkFBbUIsS0FBbkIsNkJBQW1CLFFBRTlCO0FBQ0gsQ0FBQyxFQTNrQmdCLFNBQVMsS0FBVCxTQUFTLFFBMmtCekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbmFtZXNwYWNlIE5zQ29udGVudCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvbnRpbnVlTGVhcm5pbmdEYXRhIGV4dGVuZHMgSUNvbnRlbnQge1xuICAgIGNvbnRpbnVlRGF0YTogYW55XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElDb250aW51ZUxlYXJuaW5nRGF0YVJlcSB7XG4gICAgcmVxdWVzdDoge1xuICAgICAgdXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBjb3Vyc2VJZDogc3RyaW5nLFxuICAgICAgY29udGVudElkczogc3RyaW5nW10sXG4gICAgICBiYXRjaElkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gICAgICBmaWVsZHM/OiBzdHJpbmdbXVxuICAgICAgbGFuZ3VhZ2U/OiBzdHJpbmdcbiAgICB9XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElDb250ZW50IHtcbiAgICBwbGF0Zm9ybT86IGFueVxuICAgIGFkZGVkT246IHN0cmluZ1xuICAgIGFwcEljb246IHN0cmluZ1xuICAgIGFydGlmYWN0VXJsOiBzdHJpbmdcbiAgICBhdmVyYWdlUmF0aW5nPzogYW55XG4gICAgLy8gdGhpcyB3aWxsIGJlIHVzZWQgdG8gY29udGVudCBmb3JtIGVucm9sbG1lbnQgdXNlciBsaXN0XG4gICAgYmF0Y2hlcz86IGFueVxuICAgIGJhdGNoPzogYW55XG4gICAgYm9keT86IHN0cmluZ1xuICAgIGNlcnRpZmljYXRpb25MaXN0PzogSVJlbGF0ZWRDb250ZW50TWV0YVtdXG4gICAgY2VydGlmaWNhdGlvblN0YXR1cz86IFRDZXJ0aWZpY2F0aW9uU3RhdHVzXG4gICAgY2VydGlmaWNhdGlvblN1Ym1pc3Npb25EYXRlPzogc3RyaW5nXG4gICAgY2VydGlmaWNhdGlvblVybDogc3RyaW5nXG4gICAgY2hpbGROb2Rlcz86IHN0cmluZ1tdXG4gICAgY2hpbGRyZW46IElDb250ZW50W11cbiAgICBjaGlsZHJlbkNsYXNzaWZpZXJzPzogc3RyaW5nW11cbiAgICBjbGllbnRzPzogSUNsaWVudFtdXG4gICAgY29sbGVjdGlvbnM/OiBJQ29udGVudFtdXG4gICAgY29tcGxldGlvblBlcmNlbnRhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgY29tcGxldGlvblN0YXR1cz86IG51bWJlclxuICAgIGNvbXBsZXhpdHlMZXZlbDogc3RyaW5nXG4gICAgZGlmZmljdWx0eUxldmVsOiBzdHJpbmdcbiAgICBjb250ZW50SWQ6IHN0cmluZ1xuICAgIGNvbnRlbnRUeXBlOiBFQ29udGVudFR5cGVzXG4gICAgY29udGVudFVybEF0U291cmNlOiBzdHJpbmdcbiAgICBjcmVhdG9yQ29udGFjdHM6IElDcmVhdG9yW11cblxuICAgIGNyZWF0b3JEZXRhaWxzOiBJQ3JlYXRvcltdXG4gICAgY3JlYXRvckxvZ286IHN0cmluZ1xuICAgIGNyZWF0b3JQb3N0ZXJJbWFnZTogc3RyaW5nXG4gICAgY3JlYXRvclRodW1ibmFpbDogc3RyaW5nXG5cbiAgICBjdXJhdGVkVGFnczogc3RyaW5nW11cbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgZGlzcGxheUNvbnRlbnRUeXBlOiBFRGlzcGxheUNvbnRlbnRUeXBlcyAvLyBGb3IgVUlcbiAgICBkb3dubG9hZFVybD86IHN0cmluZ1xuICAgIGR1cmF0aW9uOiBudW1iZXJcbiAgICBlbnJvbGxlZERhdGU/OiBzdHJpbmdcbiAgICBleGNsdXNpdmVDb250ZW50PzogYm9vbGVhblxuICAgIGV4cGlyeURhdGU/OiBzdHJpbmdcbiAgICBlcXVpdmFsZW50Q2VydGlmaWNhdGlvbnM/OiBJUmVsYXRlZENvbnRlbnRNZXRhW11cbiAgICBoYXNBY2Nlc3M6IGJvb2xlYW5cbiAgICBoYXNBc3Nlc3NtZW50Pzogc3RyaW5nXG4gICAgaWRlYWxTY3JlZW5TaXplPzogc3RyaW5nXG4gICAgaWRlbnRpZmllcjogc3RyaW5nXG4gICAgaW50cm9kdWN0b3J5VmlkZW8/OiBzdHJpbmdcbiAgICBpbnRyb2R1Y3RvcnlWaWRlb0ljb24/OiBzdHJpbmdcbiAgICBsZWFybmluZ1RyYWNrPzogc3RyaW5nXG4gICAgaXNFeHRlcm5hbDogYm9vbGVhblxuICAgIGlzSWZyYW1lU3VwcG9ydGVkOiAnWWVzJyB8ICdObycgfCAnTWF5YmUnXG4gICAgaXNJbkludHJhbmV0PzogYm9vbGVhblxuICAgIGtleXdvcmRzPzogc3RyaW5nW11cbiAgICBrQXJ0aWZhY3RzPzogSVJlbGF0ZWRDb250ZW50TWV0YVtdXG4gICAgbGFzdENvbnRlbnRBY2Nlc3NUaW1lPzogc3RyaW5nXG4gICAgbGFzdFVwZGF0ZWRPbjogc3RyaW5nXG4gICAgbGVhcm5pbmdNb2RlPzogVExlYXJuaW5nTW9kZVxuICAgIGxlYXJuaW5nT2JqZWN0aXZlOiBzdHJpbmdcbiAgICBsYWJlbHM/OiBzdHJpbmdbXVxuICAgIGxvY2FsZT86IHN0cmluZ1xuICAgIGhhc1RyYW5zbGF0aW9ucz86IHsgaWRlbnRpZmllcjogc3RyaW5nOyBsb2NhbGU6IHN0cmluZyB9W11cbiAgICBpc1RyYW5zbGF0aW9uT2Y/OiB7IGlkZW50aWZpZXI6IHN0cmluZzsgbG9jYWxlOiBzdHJpbmcgfVtdXG4gICAgbWVfdG90YWxTZXNzaW9uc0NvdW50OiBudW1iZXJcbiAgICBtZWRpYVR5cGU6IHN0cmluZ1xuICAgIG1pbWVUeXBlOiBFTWltZVR5cGVzXG4gICAgbXNBcnRpZmFjdERldGFpbHM/OiBJTVNBcnRpZmFjdERldGFpbHNcbiAgICBtb2RlPzogRVRhZ1R5cGVcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBuZXh0Q2VydGlmaWNhdGlvbkF0dGVtcHREYXRlPzogc3RyaW5nXG4gICAgcGFyZW50Pzogc3RyaW5nXG4gICAgcGxheWdyb3VuZEluc3RydWN0aW9ucz86IHN0cmluZ1xuICAgIHBsYXlncm91bmRSZXNvdXJjZXM/OiBJUmVzb3VyY2VQbGF5Z3JvdW5kW11cbiAgICBwb3N0Q29udGVudHM/OiBJUHJlUG9zdENvbnRlbnRbXVxuICAgIHBvc3RlckltYWdlPzogc3RyaW5nXG4gICAgcHJlQ29udGVudHM/OiBJUHJlUG9zdENvbnRlbnRbXVxuICAgIHByZVJlcXVpc2l0ZXM6IHN0cmluZ1xuICAgIHByaWNlPzoge1xuICAgICAgY3VycmVuY3k6IHN0cmluZ1xuICAgICAgdmFsdWU6IG51bWJlclxuICAgIH1cbiAgICBwcmltYXJ5Q2F0ZWdvcnk6IEVQcmltYXJ5Q2F0ZWdvcnksXG4gICAgcHJvY3RvclVybD86IHN0cmluZ1xuICAgIHByb2dyZXNzPzogSU1hcmtBc0NvbXBsZXRlUHJvZ3Jlc3NcbiAgICBwdWJsaXNoZWRPbjogc3RyaW5nXG4gICAgcmVjZW50Q2VydGlmaWNhdGlvbkF0dGVtcHRTY29yZT86IG51bWJlclxuICAgIHJlY29tbWVuZGF0aW9uUmVhc29ucz86IHN0cmluZ1tdXG4gICAgcmVnaW9uPzogc3RyaW5nW11cbiAgICByZWdpc3RyYXRpb25Vcmw/OiBzdHJpbmdcbiAgICByZWdpc3RyYXRpb25JbnN0cnVjdGlvbnM/OiBzdHJpbmdcbiAgICByZXNvdXJjZUNhdGVnb3J5Pzogc3RyaW5nW11cbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZ1xuICAgIHNpemU/OiBudW1iZXJcbiAgICBza2lsbHM6IElTa2lsbFtdXG4gICAgc29mdHdhcmVSZXF1aXJlbWVudHM/OiBJUmVzb3VyY2VEZXRhaWxbXVxuICAgIHNvdXJjZU5hbWU6IHN0cmluZ1xuICAgIHNvdXJjZVNob3J0TmFtZTogc3RyaW5nXG4gICAgc291cmNlSWNvblVybD86IHN0cmluZ1xuICAgIHNvdXJjZVVybD86IHN0cmluZ1xuICAgIHNzb0VuYWJsZWQ/OiBib29sZWFuXG4gICAgbGFzdFJlYWRDb250ZW50SWQ/OiBzdHJpbmdcbiAgICBzdGF0dXM6XG4gICAgfCAnRHJhZnQnXG4gICAgfCAnSW5SZXZpZXcnXG4gICAgfCAnUXVhbGl0eVJldmlldydcbiAgICB8ICdSZXZpZXdlZCdcbiAgICB8ICdQcm9jZXNzaW5nJ1xuICAgIHwgJ0xpdmUnXG4gICAgfCAnRGVsZXRlZCdcbiAgICB8ICdNYXJrZWRGb3JEZWxldGlvbidcbiAgICB8ICdFeHBpcmVkJ1xuICAgIHN1YlRpdGxlPzogc3RyaW5nXG4gICAgc3ViVGl0bGVzPzogSVN1YnRpdGxlW11cbiAgICBzdHVkeU1hdGVyaWFscz86IElSZWxhdGVkQ29udGVudE1ldGFbXVxuICAgIHN5c3RlbVJlcXVpcmVtZW50cz86IHN0cmluZ1tdXG4gICAgdGFnczogSVRhZ1tdXG4gICAgdG9waWNzOiBJQ29udGVudFRvcGljW11cbiAgICB0b3RhbExpa2VzPzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfVxuICAgIHRvdGFsUmF0aW5nPzogbnVtYmVyXG4gICAgdHJhY2s6IElUcmFja1tdXG4gICAgdW5pcXVlTGVhcm5lcnM/OiBudW1iZXJcbiAgICB2aWV3Q291bnQ/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9XG4gICAgcmVhc29uPzogc3RyaW5nIC8vIHJlcXVpcmVkIGZvciBLbm93bGVkZ2UgYm9hcmRcbiAgICB0cmFpbmluZ0xIdWJDb3VudD86IG51bWJlciAvLyBmb3IgTEh1YiB0cmFpbmluZ3NcbiAgICB2ZXJpZmllcnM/OiB7XG4gICAgICAvLyByZXF1aXJlZCBmb3IgRXh0ZXJuYWwgQ2VydGlmaWNhdGlvbnNcbiAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgZW1haWw6IHN0cmluZ1xuICAgICAgaWQ6IHN0cmluZ1xuICAgIH1bXVxuICAgIHJlZmVyZW5jZXM/OiB7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXVxuICAgIHJlc3VtZVBhZ2U/OiBudW1iZXIgLy8gRm9yIHBsYXllciBXZWJNb2R1bGUgaW4gVUlcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgICBvcHRpb25hbFJlYWRpbmc6IGJvb2xlYW5cbiAgICBhZGRpdGlvbmFsVGFncz86IHN0cmluZ1tdXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElDb250ZW50UmVzcG9uc2Uge1xuICAgIGlkOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBhbnksXG4gICAgcmVzcG9uc2VDb2RlOiBzdHJpbmcsXG4gICAgcmVzdWx0OiB7XG4gICAgICBjb250ZW50OiBJQ29udGVudFxuICAgIH0sXG4gICAgdHM6IHN0cmluZyxcbiAgICB2ZXI6IHN0cmluZ1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQmF0Y2gge1xuICAgIGJhdGNoSWQ6IHN0cmluZyxcbiAgICBjcmVhdGVkQnk6IHN0cmluZyxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsLFxuICAgIGVucm9sbG1lbnRUeXBlOiBzdHJpbmcsXG4gICAgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBzdGFydERhdGU6IHN0cmluZyxcbiAgICBzdGF0dXM6IG51bWJlclxuICAgIGNlcnRfdGVtcGxhdGVzPzogbnVsbFxuICAgIGNvbGxlY3Rpb25JZDogc3RyaW5nXG4gICAgY291cnNlSWQ6IHN0cmluZ1xuICAgIGNyZWF0ZWREYXRlOiBzdHJpbmdcbiAgICBjcmVhdGVkRm9yOiBzdHJpbmdbXVxuICAgIGRlc2NyaXB0aW9uPzogbnVsbFxuICAgIGVucm9sbG1lbnRFbmREYXRlOiBzdHJpbmcgfCBudWxsXG4gICAgaWQ6IHN0cmluZ1xuICAgIG1lbnRvcnM/OiBzdHJpbmdbXSB8IG51bGxcbiAgICB0YW5kYz86IG51bGxcbiAgICB1cGRhdGVkRGF0ZT86IHN0cmluZyB8IG51bGxcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUJhdGNoTGlzdFJlc3BvbnNlIHtcbiAgICBjb250ZW50PzogSUJhdGNoW11cbiAgICBjb3VudD86IG51bWJlcixcbiAgICBlbnJvbGxlZD86IGJvb2xlYW4sXG4gICAgd29ya0Zsb3c/OiB7XG4gICAgICB3ZkluaXRpYXRlZD86IGJvb2xlYW5cbiAgICAgIGJhdGNoPzogYW55XG4gICAgICB3Zkl0ZW0/OiBhbnlcbiAgICB9LFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQ291cnNlIHtcbiAgICBhY3RpdmU6IHRydWVcbiAgICBhZGRlZEJ5OiBzdHJpbmdcbiAgICBiYXRjaDogSUJhdGNoXG4gICAgYmF0Y2hJZDogc3RyaW5nXG4gICAgY2VydGlmaWNhdGVzOiBbXVxuICAgIGNvbGxlY3Rpb25JZDogc3RyaW5nXG4gICAgY29tcGxldGVkT246IHN0cmluZyB8IG51bGxcbiAgICBjb21wbGV0aW9uUGVyY2VudGFnZTogbnVtYmVyIHwgbnVsbFxuICAgIGNvbXBsZXRpb25TdGF0dXM/OiBudW1iZXJcbiAgICBjb250ZW50OiBJQ29udGVudFxuICAgIGNvbnRlbnRJZDogc3RyaW5nXG4gICAgY29udGVudFN0YXR1czogYW55XG4gICAgY291cnNlSWQ6IHN0cmluZ1xuICAgIGNvdXJzZUxvZ29Vcmw6IHN0cmluZ1xuICAgIGNvdXJzZU5hbWU6IHN0cmluZ1xuICAgIGRhdGVUaW1lOiBudW1iZXJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgZW5yb2xsZWREYXRlOiBzdHJpbmdcbiAgICBpc3N1ZWRDZXJ0aWZpY2F0ZXM6IFtdXG4gICAgbGFzdENvbnRlbnRBY2Nlc3NUaW1lPzogc3RyaW5nXG4gICAgbGFzdFJlYWRDb250ZW50SWQ/OiBzdHJpbmdcbiAgICBsYXN0UmVhZENvbnRlbnRTdGF0dXM6IHN0cmluZyB8IG51bGwsXG4gICAgbHJjUHJvZ3Jlc3NEZXRhaWxzOiBhbnksXG4gICAgcmVjZW50X2xhbmd1YWdlOiBzdHJpbmdcbiAgICBsZWFmTm9kZXNDb3VudDogbnVtYmVyXG4gICAgcHJvZ3Jlc3M6IG51bWJlclxuICAgIHN0YXR1czogbnVtYmVyXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvbnRlbnRNaW5pbWFsIHtcbiAgICBhcHBJY29uOiBzdHJpbmdcbiAgICBhcnRpZmFjdFVybDogc3RyaW5nXG4gICAgZGlmZmljdWx0eUxldmVsOiBzdHJpbmdcbiAgICBjb250ZW50VHlwZTogRUNvbnRlbnRUeXBlc1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBkaXNwbGF5Q29udGVudFR5cGU/OiBFRGlzcGxheUNvbnRlbnRUeXBlc1xuICAgIGR1cmF0aW9uOiBudW1iZXJcbiAgICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgICBoYXNBY2Nlc3M/OiBib29sZWFuXG4gICAgaXNJbkludHJhbmV0PzogYm9vbGVhblxuICAgIGxlYXJuaW5nTW9kZT86IFRMZWFybmluZ01vZGVcbiAgICBtaW1lVHlwZTogRU1pbWVUeXBlc1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGNyZWF0b3JEZXRhaWxzOiBJQ3JlYXRvcltdXG4gICAgY3JlYXRvckNvbnRhY3RzOiBJQ3JlYXRvcltdXG4gICAgcG9zdGVySW1hZ2U6IHN0cmluZ1xuICAgIHByaW1hcnlDYXRlZ29yeTogRVByaW1hcnlDYXRlZ29yeVxuICAgIHJlc291cmNlVHlwZT86IHN0cmluZ1xuICAgIHRvdGFsUmF0aW5nPzogbnVtYmVyXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElDb2xsZWN0aW9uSGllcmFyY2h5UmVzcG9uc2Uge1xuICAgIGRhdGE6IElDb250ZW50XG4gICAgaGFzTW9yZTogYm9vbGVhblxuICAgIHRvdGFsQ29udGVudHM6IG51bWJlclxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJUmVsYXRlZENvbnRlbnRNZXRhIHtcbiAgICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxuXG4gIHR5cGUgVENlcnRpZmljYXRpb25TdGF0dXMgPSAnb25nb2luZycgfCAncGFzc2VkJyB8ICdjYW5BdHRlbXB0JyB8ICdjYW5ub3RBdHRlbXB0J1xuICBleHBvcnQgdHlwZSBUTGVhcm5pbmdNb2RlID0gJ1NlbGYtUGFjZWQnIHwgJ0luc3RydWN0b3ItTGVkJyB8ICdPcGVuJyB8ICdDbG9zZWQnXG5cbiAgaW50ZXJmYWNlIElNYXJrQXNDb21wbGV0ZVByb2dyZXNzIHtcbiAgICBwcm9ncmVzc1N0YXR1czogJ29wZW4nIHwgJ3N0YXJ0ZWQnIHwgJ2NvbXBsZXRlZCdcbiAgICBzaG93TWFya0FzQ29tcGxldGU6IGJvb2xlYW5cbiAgICBtYXJrQXNDb21wbGV0ZVJlYXNvbjogc3RyaW5nXG4gICAgcHJvZ3Jlc3NTdXBwb3J0ZWQ6IGJvb2xlYW5cbiAgICBwcm9ncmVzczogbnVtYmVyIHwgbnVsbFxuICB9XG5cbiAgaW50ZXJmYWNlIElUYWcge1xuICAgIGlkOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgICB2YWx1ZTogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElNU0FydGlmYWN0RGV0YWlscyB7XG4gICAgY2hhbm5lbElkOiBzdHJpbmdcbiAgICB2aWRlb0lkOiBzdHJpbmdcbiAgfVxuICBpbnRlcmZhY2UgSUNsaWVudCB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZ1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxuICBpbnRlcmZhY2UgSVN1YnRpdGxlIHtcbiAgICBzcmNsYW5nOiBzdHJpbmdcbiAgICBsYWJlbDogc3RyaW5nXG4gICAgdXJsOiBzdHJpbmdcbiAgfVxuICBpbnRlcmZhY2UgSVByZVBvc3RDb250ZW50IHtcbiAgICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxuICBpbnRlcmZhY2UgSVJlc291cmNlRGV0YWlsIHtcbiAgICB0aXRsZT86IHN0cmluZ1xuICAgIHVybD86IHN0cmluZ1xuICB9XG4gIGludGVyZmFjZSBJUmVzb3VyY2VQbGF5Z3JvdW5kIHtcbiAgICBhcHBJY29uOiBzdHJpbmdcbiAgICBhcnRpZmFjdFVybDogc3RyaW5nXG4gICAgaWRlbnRpZmllcjogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElUcmFjayB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHN0YXR1czogc3RyaW5nXG4gICAgdmlzaWJpbGl0eTogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElTa2lsbCB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIGNhdGVnb3J5OiBzdHJpbmdcbiAgICBza2lsbDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBJQ3JlYXRvciB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGVtYWlsOiBzdHJpbmdcbiAgfVxuICBleHBvcnQgaW50ZXJmYWNlIElDb250ZW50VG9waWMge1xuICAgIGlkZW50aWZpZXI6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIC8vIEFQSSBCYXNlZFxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvbnRhY3Qge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBlbWFpbDogc3RyaW5nXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElWaWV3ZXJDb250aW51ZUxlYXJuaW5nUmVxdWVzdCB7XG4gICAgcmVzb3VyY2VJZDogc3RyaW5nXG4gICAgY29udGV4dFBhdGhJZDogc3RyaW5nXG4gICAgZGF0YTogc3RyaW5nXG4gICAgZGF0ZUFjY2Vzc2VkOiBudW1iZXJcbiAgICBjb250ZXh0VHlwZT86IHN0cmluZ1xuICB9XG4gIC8qKlxuICAgICogQGRlcHJlY2F0ZWQgRW51bSBFQ29udGVudFR5cGVzIHNob3VsZCBub3QgYmUgdXNlZCBpbiBmdXR1cmVcbiAgICAqL1xuICBleHBvcnQgZW51bSBFQ29udGVudFR5cGVzIHtcbiAgICBQUk9HUkFNVjIgPSAnUHJvZ3JhbScsXG4gICAgUFJPR1JBTSA9ICdMZWFybmluZyBQYXRoJyxcbiAgICBDSEFOTkVMID0gJ0NoYW5uZWwnLFxuICAgIENPVVJTRSA9ICdDb3Vyc2UnLFxuICAgIEtOT1dMRURHRV9BUlRJRkFDVCA9ICdLbm93bGVkZ2UgQXJ0aWZhY3QnLFxuICAgIEtOT1dMRURHRV9CT0FSRCA9ICdLbm93bGVkZ2UgQm9hcmQnLFxuICAgIExFQVJOSU5HX0pPVVJORVkgPSAnTGVhcm5pbmcgSm91cm5leXMnLFxuICAgIE1PRFVMRSA9ICdDb3Vyc2VVbml0JyxcbiAgICBSRVNPVVJDRSA9ICdSZXNvdXJjZScsXG4gIH1cbiAgZXhwb3J0IGVudW0gRVByaW1hcnlDYXRlZ29yeSB7XG4gICAgUFJPR1JBTSA9ICdQcm9ncmFtJyxcbiAgICBDT1VSU0UgPSAnQ291cnNlJyxcbiAgICBNT0RVTEUgPSAnQ291cnNlIFVuaXQnLFxuICAgIFJFU09VUkNFID0gJ0xlYXJuaW5nIFJlc291cmNlJyxcbiAgICBHT0FMUyA9ICdHT0FMUycsXG4gICAgUExBWUxJU1QgPSAnUExBWUxJU1QnLFxuICAgIFBSQUNUSUNFX1JFU09VUkNFID0gJ1ByYWN0aWNlIFF1ZXN0aW9uIFNldCcsXG4gICAgRklOQUxfQVNTRVNTTUVOVCA9ICdDb3Vyc2UgQXNzZXNzbWVudCcsXG4gICAgQ09NUF9BU1NFU1NNRU5UID0gJ0NvbXBldGVuY3kgQXNzZXNzbWVudCcsXG4gICAgRlRCX1FVRVNUSU9OID0gJ0ZUQiBRdWVzdGlvbicsXG4gICAgTVRGX1FVRVNUSU9OID0gJ01URiBRdWVzdGlvbicsXG4gICAgTVVMVElQTEVfQ0hPSUNFX1FVRVNUSU9OID0gJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbicsXG4gICAgU0lOR0xFX0NIT0lDRV9RVUVTVElPTiA9ICdTaW5nbGUgQ2hvaWNlIFF1ZXN0aW9uJyxcbiAgICBNQU5EQVRPUllfQ09VUlNFX0dPQUwgPSAnTWFuZGF0b3J5IENvdXJzZSBHb2FsJyxcbiAgICBTVEFOREFMT05FX0FTU0VTU01FTlQgPSAnU3RhbmRhbG9uZSBBc3Nlc3NtZW50JyxcbiAgICBCTEVOREVEX1BST0dSQU0gPSAnQmxlbmRlZCBQcm9ncmFtJyxcbiAgICBPRkZMSU5FX1NFU1NJT04gPSAnT2ZmbGluZSBTZXNzaW9uJyxcbiAgICBDVVJBVEVEX1BST0dSQU0gPSAnQ3VyYXRlZCBQcm9ncmFtJyxcbiAgICAvLyBmb2xsb3dpbmcgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHNvb25cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBUaGUgdHlwZSBzaG91bGQgbm90IGJlIHVzZWRcbiAgICAgKi9cbiAgICBLTk9XTEVER0VfQVJUSUZBQ1QgPSAnS25vd2xlZGdlIEFydGlmYWN0JyxcbiAgICAvKipcbiAgICAqIEBkZXByZWNhdGVkIFRoZSB0eXBlIHNob3VsZCBub3QgYmUgdXNlZFxuICAgICovXG4gICAgS05PV0xFREdFX0JPQVJEID0gJ0tub3dsZWRnZSBCb2FyZCcsXG4gICAgLyoqXG4gICAgKiBAZGVwcmVjYXRlZCBUaGUgdHlwZSBzaG91bGQgbm90IGJlIHVzZWRcbiAgICAqL1xuICAgIExFQVJOSU5HX0pPVVJORVkgPSAnTGVhcm5pbmcgSm91cm5leXMnLFxuICAgIC8qKlxuICAgICogQGRlcHJlY2F0ZWQgVGhlIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkXG4gICAgKi9cbiAgICBDSEFOTkVMID0gJ0NoYW5uZWwnLFxuICB9XG5cbiAgZXhwb3J0IGVudW0gRUNvdXJzZUNhdGVnb3J5IHtcbiAgICBJTlZJVEVfT05MWV9QUk9HUkFNID0gJ0ludml0ZS1Pbmx5IFByb2dyYW0nLFxuICAgIE1PREVSQVRFRF9QUk9HUkFNID0gJ01vZGVyYXRlZCBQcm9ncmFtJyxcbiAgICBCTEVOREVEX1BST0dSQU0gPSAnQmxlbmRlZCBQcm9ncmFtJyxcbiAgICBDVVJBVEVEX1BST0dSQU0gPSAnQ3VyYXRlZCBQcm9ncmFtJyxcbiAgICBDT1VSU0UgPSAnQ291cnNlJyxcbiAgICBNT0RFUkFURURfQ09VUlNFID0gJ01vZGVyYXRlZCBDb3Vyc2UnLFxuICAgIFNUQU5EQUxPTkVfQVNTRVNTTUVOVCA9ICdTdGFuZGFsb25lIEFzc2Vzc21lbnQnLFxuICAgIE1PREVSQVRFRF9BU1NFU1NFTUVOVCA9ICdNb2RlcmF0ZWQgQXNzZXNzbWVudCcsXG4gICAgTEVBUk5JTkdfUEFUSFdBWSA9ICdMZWFybmluZyBQYXRod2F5JyxcbiAgICBDQVNFX1NUVURZID0gJ0Nhc2UgU3R1ZHknLFxuICB9XG5cbiAgZXhwb3J0IGVudW0gV0ZCbGVuZGVkUHJvZ3JhbVN0YXR1cyB7XG4gICAgSU5JVElBVEUgPSAnSU5JVElBVEUnLFxuICAgIFNFTkRfRk9SX01ET19BUFBST1ZBTCA9ICdTRU5EX0ZPUl9NRE9fQVBQUk9WQUwnLFxuICAgIFNFTkRfRk9SX1BDX0FQUFJPVkFMID0gJ1NFTkRfRk9SX1BDX0FQUFJPVkFMJyxcbiAgICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gICAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICAgIFdJVEhEUkFXTiA9ICdXSVRIRFJBV04nLFxuICAgIFJFTU9WRUQgPSAnUkVNT1ZFRCcsXG4gICAgV0lUSERSQVcgPSAnV0lUSERSQVcnLFxuICB9XG4gIGV4cG9ydCBlbnVtIFdGQmxlbmRlZFByb2dyYW1BcHByb3ZhbFR5cGVzIHtcbiAgICBPTkVfU1RFUF9QQyA9ICdvbmVTdGVwUENBcHByb3ZhbCcsXG4gICAgT05FX1NURVBfTURPID0gJ29uZVN0ZXBNRE9BcHByb3ZhbCcsXG4gICAgVFdPX1NURVBfTURPX1BDID0gJ3R3b1N0ZXBNRE9BbmRQQ0FwcHJvdmFsJyxcbiAgICBUV09fU1RFUF9QQ19NRE8gPSAndHdvU3RlcFBDQW5kTURPQXBwcm92YWwnLFxuICB9XG5cbiAgZXhwb3J0IGNvbnN0ICBXRlNUQVRVU19NU0dfTUFQUElORzogYW55ID0ge1xuICAgIElOSVRJQVRFOiAgJycsXG4gICAgU0VORF9GT1JfTURPX0FQUFJPVkFMOiAgJ0JhdGNoRW5yb2xsTDFNc2cnLFxuICAgIFNFTkRfRk9SX1BDX0FQUFJPVkFMOiAgJ0JhdGNoRW5yb2xsTDJNc2cnLFxuICAgIEFQUFJPVkVEOiAgJ0JhdGNoRW5yb2xsQXBwcm92ZWRNc2cnLFxuICAgIFJFSkVDVEVEOiAgJ0JhdGNoRW5yb2xsUmVqZWN0ZWRNc2cnLFxuICAgIFdJVEhEUkFXTjogJ0JhdGNoRW5yb2xsV2l0aGRyYXdNc2cnLFxuICAgIFJFTU9WRUQ6ICdCYXRjaEVucm9sbFJlbW92ZU1zZycsXG4gICAgRVhQSVJFRDogJ0JhdGNoTGlzdEV4cGlyZWRNc2cnLFxuICB9XG5cbiAgZXhwb3J0IGVudW0gRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMge1xuICAgIExFQVJOSU5HX1JFU09VUkNFID0gJ0xlYXJuaW5nIFJlc291cmNlJyxcbiAgICBQUkFDVElDRV9SRVNPVVJDRSA9ICdQcmFjdGljZSBRdWVzdGlvbiBTZXQnLFxuICAgIEZJTkFMX0FTU0VTU01FTlQgPSAnQ291cnNlIEFzc2Vzc21lbnQnLFxuICAgIENPTVBfQVNTRVNTTUVOVCA9ICdDb21wZXRlbmN5IEFzc2Vzc21lbnQnLFxuICAgIE9GRkxJTkVfU0VTU0lPTiA9ICdPZmZsaW5lIFNlc3Npb24nLFxuICB9XG5cbiAgZXhwb3J0IGVudW0gRU1pc2NQbGF5ZXJTdXBwb3J0ZWRDb2xsZWN0aW9uVHlwZXMge1xuICAgIFBMQVlMSVNUID0gJ1BsYXlsaXN0JyxcbiAgfVxuICBleHBvcnQgY29uc3QgUExBWUVSX1NVUFBPUlRFRF9DT0xMRUNUSU9OX1RZUEVTOiBzdHJpbmdbXSA9IFtcbiAgICBFUHJpbWFyeUNhdGVnb3J5LkNPVVJTRSxcbiAgICBFUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSxcbiAgICBFUHJpbWFyeUNhdGVnb3J5LlBST0dSQU0sXG4gICAgRVByaW1hcnlDYXRlZ29yeS5DVVJBVEVEX1BST0dSQU0sXG4gICAgRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0sXG4gICAgRVByaW1hcnlDYXRlZ29yeS5TVEFOREFMT05FX0FTU0VTU01FTlQsXG4gICAgRU1pc2NQbGF5ZXJTdXBwb3J0ZWRDb2xsZWN0aW9uVHlwZXMuUExBWUxJU1QsXG4gIF1cbiAgZXhwb3J0IGNvbnN0IEtCX1NVUFBPUlRFRF9DT05URU5UX1RZUEVTOiBFUHJpbWFyeUNhdGVnb3J5W10gPSBbXG4gICAgRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UsXG4gICAgRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUsXG4gICAgRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UsXG4gIF1cbiAgZXhwb3J0IGNvbnN0IFBMQVlMSVNUX1NVUFBPUlRFRF9DT05URU5UX1RZUEVTOiBFUHJpbWFyeUNhdGVnb3J5W10gPSBbXG4gICAgRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UsXG4gICAgRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUsXG4gICAgRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UsXG4gIF1cbiAgZXhwb3J0IGVudW0gRU1pbWVUeXBlcyB7XG4gICAgQ09MTEVDVElPTiA9ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmNvbnRlbnQtY29sbGVjdGlvbicsXG4gICAgWklQID0gJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuaHRtbC1hcmNoaXZlJyxcbiAgICBaSVAyID0gJ2FwcGxpY2F0aW9uL3ZuZC5la3N0ZXAuZWNtbC1hcmNoaXZlJyxcbiAgICBIVE1MID0gJ2FwcGxpY2F0aW9uL2h0bWwnLFxuICAgIEhUTUxfVEVYVCA9ICd0ZXh0L2h0bWwnLFxuICAgIElMUF9GUCA9ICdhcHBsaWNhdGlvbi9pbHBmcCcsXG4gICAgSUFQID0gJ2FwcGxpY2F0aW9uL2lhcC1hc3Nlc3NtZW50JyxcbiAgICBNNEEgPSAnYXVkaW8vbTRhJyxcbiAgICBNUDMgPSAnYXVkaW8vbXBlZycsXG4gICAgTVA0ID0gJ3ZpZGVvL21wNCcsXG4gICAgTTNVOCA9ICdhcHBsaWNhdGlvbi94LW1wZWdVUkwnLFxuICAgIElOVEVSQUNUSU9OID0gJ3ZpZGVvL2ludGVyYWN0aXZlJyxcbiAgICBQREYgPSAnYXBwbGljYXRpb24vcGRmJyxcbiAgICBRVUlaID0gJ2FwcGxpY2F0aW9uL3F1aXonLFxuICAgIERSQUdfRFJPUCA9ICdhcHBsaWNhdGlvbi9kcmFnLWRyb3AnLFxuICAgIEhUTUxfUElDS0VSID0gJ2FwcGxpY2F0aW9uL2h0bWxwaWNrZXInLFxuICAgIFdFQl9NT0RVTEUgPSAnYXBwbGljYXRpb24vd2ViLW1vZHVsZScsXG4gICAgV0VCX01PRFVMRV9FWEVSQ0lTRSA9ICdhcHBsaWNhdGlvbi93ZWItbW9kdWxlLWV4ZXJjaXNlJyxcbiAgICBZT1VUVUJFID0gJ3ZpZGVvL3gteW91dHViZScsXG4gICAgSEFORFNfT04gPSAnYXBwbGljYXRpb24vaW50ZWdyYXRlZC1oYW5kcy1vbicsXG4gICAgUkRCTVNfSEFORFNfT04gPSAnYXBwbGljYXRpb24vcmRibXMnLFxuICAgIENMQVNTX0RJQUdSQU0gPSAnYXBwbGljYXRpb24vY2xhc3MtZGlhZ3JhbScsXG4gICAgQ0hBTk5FTCA9ICdhcHBsaWNhdGlvbi9jaGFubmVsJyxcbiAgICBDT0xMRUNUSU9OX1JFU09VUkNFID0gJ3Jlc291cmNlL2NvbGxlY3Rpb24nLFxuICAgIEFQUExJQ0FUSU9OX0pTT04gPSAnYXBwbGljYXRpb24vanNvbicsXG4gICAgUFJBQ1RJQ0VfUkVTT1VSQ0UgPSAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnLFxuICAgIEZJTkFMX0FTU0VTU01FTlQgPSAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnLFxuICAgIE9GRkxJTkVfU0VTU0lPTiA9ICdhcHBsaWNhdGlvbi9vZmZsaW5lJyxcbiAgICAvLyBBZGRlZCBvbiBVSSBPbmx5XG4gICAgQ0VSVElGSUNBVElPTiA9ICdhcHBsaWNhdGlvbi9jZXJ0aWZpY2F0aW9uJyxcbiAgICBQTEFZTElTVCA9ICdhcHBsaWNhdGlvbi9wbGF5bGlzdCcsXG4gICAgVEVYVF9XRUIgPSAndGV4dC94LXVybCcsXG4gICAgU1VSVkVZID0gJ2FwcGxpY2F0aW9uL3N1cnZleScsXG4gICAgUVVFU1RJT05fU0VUID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JyxcbiAgICBRVUVTVElPTiA9ICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbicsXG4gICAgVU5LTk9XTiA9ICdhcHBsaWNhdGlvbi91bmtub3duJyxcbiAgfVxuICBleHBvcnQgZW51bSBFRGlzcGxheUNvbnRlbnRUeXBlcyB7XG4gICAgQVNTRVNTTUVOVCA9ICdBU1NFU1NNRU5UJyxcbiAgICBTVEFOREFMT05FX0FTU0VTU01FTlQgPSAnU1RBTkRBTE9ORSBBU1NFU1NNRU5UJyxcbiAgICBQUkFDVElDRV9SRVNPVVJDRSA9ICdQcmFjdGljZSBRdWVzdGlvbiBTZXQnLFxuICAgIEZJTkFMX0FTU0VTU01FTlQgPSAnQ291cnNlIEFzc2Vzc21lbnQnLFxuICAgIEFVRElPID0gJ0FVRElPJyxcbiAgICBDRVJUSUZJQ0FUSU9OID0gJ0NFUlRJRklDQVRJT04nLFxuICAgIENIQU5ORUwgPSAnQ2hhbm5lbCcsXG4gICAgQ0xBU1NfRElBR1JBTSA9ICdDTEFTU19ESUFHUkFNJyxcbiAgICBDT1VSU0UgPSAnQ09VUlNFJyxcbiAgICBERUZBVUxUID0gJ0RFRkFVTFQnLFxuICAgIERSQUdfRFJPUCA9ICdEUkFHX0RST1AnLFxuICAgIEVYVEVSTkFMX0NFUlRJRklDQVRJT04gPSAnRVhURVJOQUxfQ0VSVElGSUNBVElPTicsXG4gICAgRVhURVJOQUxfQ09VUlNFID0gJ0VYVEVSTkFMX0NPVVJTRScsXG4gICAgR09BTFMgPSAnR09BTFMnLFxuICAgIEhBTkRTX09OID0gJ0hBTkRTX09OJyxcbiAgICBJQVAgPSAnSUFQJyxcbiAgICBJTlNUUlVDVE9SX0xFRCA9ICdJTlNUUlVDVE9SX0xFRCcsXG4gICAgSU5URVJBQ1RJVkVfVklERU8gPSAnSU5URVJBQ1RJVkVfVklERU8nLFxuICAgIEtOT1dMRURHRV9BUlRJRkFDVCA9ICdLTk9XTEVER0VfQVJUSUZBQ1QnLFxuICAgIE1PRFVMRSA9ICdNT0RVTEUnLFxuICAgIFBERiA9ICdQREYnLFxuICAgIFNVUlZFWSA9ICdTVVJWRVknLFxuICAgIFBMQVlMSVNUID0gJ1BMQVlMSVNUJyxcbiAgICBQUk9HUkFNID0gJ1BST0dSQU0nLFxuICAgIFFVSVogPSAnUVVJWicsXG4gICAgUkVTT1VSQ0UgPSAnUkVTT1VSQ0UnLFxuICAgIFJEQk1TX0hBTkRTX09OID0gJ1JEQk1TX0hBTkRTX09OJyxcbiAgICBWSURFTyA9ICdWSURFTycsXG4gICAgV0VCX01PRFVMRSA9ICdXRUJfTU9EVUxFJyxcbiAgICBXRUJfUEFHRSA9ICdXRUJfUEFHRScsXG4gICAgWU9VVFVCRSA9ICdZT1VUVUJFJyxcbiAgICBMSU5LID0gJ0xJTksnLFxuICAgIEtOT1dMRURHRV9CT0FSRCA9ICdLbm93bGVkZ2UgQm9hcmQnLFxuICAgIExFQVJOSU5HX0pPVVJORVkgPSAnTGVhcm5pbmcgSm91cm5leXMnLFxuICAgIEJMRU5ERURfUFJPR1JBTSA9ICdCTEVOREVEIFBST0dSQU0nLFxuICAgIENVUkFURURfUFJPR1JBTSA9ICdDVVJBVEVEIFBST0dSQU0nLFxuICB9XG4gIC8vIGZvciBVSVxuICBleHBvcnQgZW51bSBFRmlsdGVyQ2F0ZWdvcnkge1xuICAgIEFMTCA9ICdBTEwnLFxuICAgIExFQVJOID0gJ0xFQVJOJyxcbiAgICBQUkFDVElDRSA9ICdQUkFDVElDRScsXG4gICAgQVNTRVNTID0gJ0FTU0VTUycsXG4gIH1cblxuICAvLyBmb3IgVUlcbiAgZXhwb3J0IGVudW0gRVRhZ1R5cGUge1xuICAgIE5FV0xZX0FEREVEID0gJ05FV0xZIEFEREVEJyxcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBVTl9TVVBQT1JURURfREFUQV9UWVBFU19GT1JfTk9OX0JBVENIX1VTRVJTOiBzdHJpbmdbXSA9IFtcbiAgICAvLyB0aGlzIGlzIGNvbW1lbnQgbm93IGZvciBlbmFibGluZyBsaW5rcyBpbiB0aGUgdG9jIHBhZ2UgZm9yIGVucm9sbGVkIHVzZXJzXG4gICAgLy8gRU1pbWVUeXBlcy5RVUlaLFxuICAgIC8vIEVNaW1lVHlwZXMuQVBQTElDQVRJT05fSlNPTixcbiAgICAvLyBFTWltZVR5cGVzLldFQl9NT0RVTEVfRVhFUkNJU0UsXG5cbiAgXVxuICBleHBvcnQgY29uc3QgUFVCTElDX1NVUFBPUlRFRF9DT05URU5UX1RZUEVTOiBFTWltZVR5cGVzW10gPSBbXG4gICAgRU1pbWVUeXBlcy5BUFBMSUNBVElPTl9KU09OLFxuICAgIEVNaW1lVHlwZXMuRklOQUxfQVNTRVNTTUVOVCxcbiAgICBFTWltZVR5cGVzLkhUTUwsXG4gICAgRU1pbWVUeXBlcy5IVE1MX1RFWFQsXG4gICAgRU1pbWVUeXBlcy5aSVAsXG4gICAgRU1pbWVUeXBlcy5aSVAyLFxuICAgIEVNaW1lVHlwZXMuTTRBLFxuICAgIEVNaW1lVHlwZXMuTVAzLFxuICAgIEVNaW1lVHlwZXMuTVA0LFxuICAgIEVNaW1lVHlwZXMuUERGLFxuICAgIEVNaW1lVHlwZXMuWU9VVFVCRSxcbiAgICBFTWltZVR5cGVzLlRFWFRfV0VCLFxuICAgIEVNaW1lVHlwZXMuU1VSVkVZLFxuICBdXG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQ29tcGVudGVuY3lLZXlzIHtcbiAgICB2S2V5OiBzdHJpbmdcbiAgICB2Q29tcGV0ZW5jeUFyZWE6IHN0cmluZ1xuICAgIHZDb21wZXRlbmN5QXJlYURlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICB2Q29tcGV0ZW5jeVRoZW1lOiBzdHJpbmdcbiAgICB2Q29tcGV0ZW5jeVN1YlRoZW1lOiBzdHJpbmdcbiAgfVxuICBleHBvcnQgZW51bSBFQ29udGV4dExvY2tpbmdUeXBlIHtcbiAgICBDT1VSU0VfQVNTRVNTTUVOVF9PTkxZID0gJ0NvdXJzZSBBc3Nlc3NtZW50IE9ubHknXG4gIH1cbn1cbiJdfQ==
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX3NlcnZpY2VzL3dpZGdldC1jb250ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sS0FBVyxTQUFTLENBa2xCekI7QUFsbEJELFdBQWlCLFNBQVM7SUFvVnhCOztRQUVJO0lBQ0osSUFBWSxhQVVYO0lBVkQsV0FBWSxhQUFhO1FBQ3ZCLHNDQUFxQixDQUFBO1FBQ3JCLDBDQUF5QixDQUFBO1FBQ3pCLG9DQUFtQixDQUFBO1FBQ25CLGtDQUFpQixDQUFBO1FBQ2pCLDBEQUF5QyxDQUFBO1FBQ3pDLG9EQUFtQyxDQUFBO1FBQ25DLHVEQUFzQyxDQUFBO1FBQ3RDLHNDQUFxQixDQUFBO1FBQ3JCLHNDQUFxQixDQUFBO0lBQ3ZCLENBQUMsRUFWVyxhQUFhLEdBQWIsdUJBQWEsS0FBYix1QkFBYSxRQVV4QjtJQUNELElBQVksZ0JBb0NYO0lBcENELFdBQVksZ0JBQWdCO1FBQzFCLHVDQUFtQixDQUFBO1FBQ25CLHFDQUFpQixDQUFBO1FBQ2pCLDBDQUFzQixDQUFBO1FBQ3RCLGtEQUE4QixDQUFBO1FBQzlCLG1DQUFlLENBQUE7UUFDZix5Q0FBcUIsQ0FBQTtRQUNyQiwrREFBMkMsQ0FBQTtRQUMzQywwREFBc0MsQ0FBQTtRQUN0Qyw2REFBeUMsQ0FBQTtRQUN6QyxpREFBNkIsQ0FBQTtRQUM3QixpREFBNkIsQ0FBQTtRQUM3Qix5RUFBcUQsQ0FBQTtRQUNyRCxxRUFBaUQsQ0FBQTtRQUNqRCxtRUFBK0MsQ0FBQTtRQUMvQyxtRUFBK0MsQ0FBQTtRQUMvQyx1REFBbUMsQ0FBQTtRQUNuQyx1REFBbUMsQ0FBQTtRQUNuQyx1REFBbUMsQ0FBQTtRQUNuQyx1Q0FBdUM7UUFDdkM7O1dBRUc7UUFDSCw2REFBeUMsQ0FBQTtRQUN6Qzs7VUFFRTtRQUNGLHVE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QyxTQUFTO1FBQ3BCLFVBQVUsQ0FBQyxHQUFHO1FBQ2QsVUFBVSxDQUFDLElBQUk7UUFDZixVQUFVLENBQUMsR0FBRztRQUNkLFVBQVUsQ0FBQyxHQUFHO1FBQ2QsVUFBVSxDQUFDLEdBQUc7UUFDZCxVQUFVLENBQUMsR0FBRztRQUNkLFVBQVUsQ0FBQyxPQUFPO1FBQ2xCLFVBQVUsQ0FBQyxRQUFRO1FBQ25CLFVBQVUsQ0FBQyxNQUFNO0tBQ2xCLENBQUE7SUFTRCxJQUFZLG1CQUVYO0lBRkQsV0FBWSxtQkFBbUI7UUFDN0Isd0VBQWlELENBQUE7SUFDbkQsQ0FBQyxFQUZXLG1CQUFtQixHQUFuQiw2QkFBbUIsS0FBbkIsNkJBQW1CLFFBRTlCO0lBRUQsSUFBWSwwQkFLWDtJQUxELFdBQVksMEJBQTBCO1FBQ3BDLCtFQUFpRCxDQUFBO1FBQ2pELHVGQUF5RCxDQUFBO1FBQ3pELG1GQUFxRCxDQUFBO1FBQ3JELG1GQUFxRCxDQUFBO0lBQ3ZELENBQUMsRUFMVywwQkFBMEIsR0FBMUIsb0NBQTBCLEtBQTFCLG9DQUEwQixRQUtyQztBQUNILENBQUMsRUFsbEJnQixTQUFTLEtBQVQsU0FBUyxRQWtsQnpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBOc0NvbnRlbnQge1xuICBleHBvcnQgaW50ZXJmYWNlIElDb250aW51ZUxlYXJuaW5nRGF0YSBleHRlbmRzIElDb250ZW50IHtcbiAgICBjb250aW51ZURhdGE6IGFueVxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQ29udGludWVMZWFybmluZ0RhdGFSZXEge1xuICAgIHJlcXVlc3Q6IHtcbiAgICAgIHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgY291cnNlSWQ6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRJZHM6IHN0cmluZ1tdLFxuICAgICAgYmF0Y2hJZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICAgICAgZmllbGRzPzogc3RyaW5nW11cbiAgICAgIGxhbmd1YWdlPzogc3RyaW5nXG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQ29udGVudCB7XG4gICAgcGxhdGZvcm0/OiBhbnlcbiAgICBhZGRlZE9uOiBzdHJpbmdcbiAgICBhcHBJY29uOiBzdHJpbmdcbiAgICBhcnRpZmFjdFVybDogc3RyaW5nXG4gICAgYXZlcmFnZVJhdGluZz86IGFueVxuICAgIC8vIHRoaXMgd2lsbCBiZSB1c2VkIHRvIGNvbnRlbnQgZm9ybSBlbnJvbGxtZW50IHVzZXIgbGlzdFxuICAgIGJhdGNoZXM/OiBhbnlcbiAgICBiYXRjaD86IGFueVxuICAgIGJvZHk/OiBzdHJpbmdcbiAgICBjZXJ0aWZpY2F0aW9uTGlzdD86IElSZWxhdGVkQ29udGVudE1ldGFbXVxuICAgIGNlcnRpZmljYXRpb25TdGF0dXM/OiBUQ2VydGlmaWNhdGlvblN0YXR1c1xuICAgIGNlcnRpZmljYXRpb25TdWJtaXNzaW9uRGF0ZT86IHN0cmluZ1xuICAgIGNlcnRpZmljYXRpb25Vcmw6IHN0cmluZ1xuICAgIGNoaWxkTm9kZXM/OiBzdHJpbmdbXVxuICAgIGNoaWxkcmVuOiBJQ29udGVudFtdXG4gICAgY2hpbGRyZW5DbGFzc2lmaWVycz86IHN0cmluZ1tdXG4gICAgY2xpZW50cz86IElDbGllbnRbXVxuICAgIGNvbGxlY3Rpb25zPzogSUNvbnRlbnRbXVxuICAgIGNvbXBsZXRpb25QZXJjZW50YWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGNvbXBsZXRpb25TdGF0dXM/OiBudW1iZXJcbiAgICBjb21wbGV4aXR5TGV2ZWw6IHN0cmluZ1xuICAgIGRpZmZpY3VsdHlMZXZlbDogc3RyaW5nXG4gICAgY29udGVudElkOiBzdHJpbmdcbiAgICBjb250ZW50VHlwZTogRUNvbnRlbnRUeXBlc1xuICAgIGNvbnRlbnRVcmxBdFNvdXJjZTogc3RyaW5nXG4gICAgY3JlYXRvckNvbnRhY3RzOiBJQ3JlYXRvcltdXG5cbiAgICBjcmVhdG9yRGV0YWlsczogSUNyZWF0b3JbXVxuICAgIGNyZWF0b3JMb2dvOiBzdHJpbmdcbiAgICBjcmVhdG9yUG9zdGVySW1hZ2U6IHN0cmluZ1xuICAgIGNyZWF0b3JUaHVtYm5haWw6IHN0cmluZ1xuXG4gICAgY3VyYXRlZFRhZ3M6IHN0cmluZ1tdXG4gICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgIGRpc3BsYXlDb250ZW50VHlwZTogRURpc3BsYXlDb250ZW50VHlwZXMgLy8gRm9yIFVJXG4gICAgZG93bmxvYWRVcmw/OiBzdHJpbmdcbiAgICBkdXJhdGlvbjogbnVtYmVyXG4gICAgZW5yb2xsZWREYXRlPzogc3RyaW5nXG4gICAgZXhjbHVzaXZlQ29udGVudD86IGJvb2xlYW5cbiAgICBleHBpcnlEYXRlPzogc3RyaW5nXG4gICAgZXF1aXZhbGVudENlcnRpZmljYXRpb25zPzogSVJlbGF0ZWRDb250ZW50TWV0YVtdXG4gICAgaGFzQWNjZXNzOiBib29sZWFuXG4gICAgaGFzQXNzZXNzbWVudD86IHN0cmluZ1xuICAgIGlkZWFsU2NyZWVuU2l6ZT86IHN0cmluZ1xuICAgIGlkZW50aWZpZXI6IHN0cmluZ1xuICAgIGludHJvZHVjdG9yeVZpZGVvPzogc3RyaW5nXG4gICAgaW50cm9kdWN0b3J5VmlkZW9JY29uPzogc3RyaW5nXG4gICAgbGVhcm5pbmdUcmFjaz86IHN0cmluZ1xuICAgIGlzRXh0ZXJuYWw6IGJvb2xlYW5cbiAgICBpc0lmcmFtZVN1cHBvcnRlZDogJ1llcycgfCAnTm8nIHwgJ01heWJlJ1xuICAgIGlzSW5JbnRyYW5ldD86IGJvb2xlYW5cbiAgICBrZXl3b3Jkcz86IHN0cmluZ1tdXG4gICAga0FydGlmYWN0cz86IElSZWxhdGVkQ29udGVudE1ldGFbXVxuICAgIGxhc3RDb250ZW50QWNjZXNzVGltZT86IHN0cmluZ1xuICAgIGxhc3RVcGRhdGVkT246IHN0cmluZ1xuICAgIGxlYXJuaW5nTW9kZT86IFRMZWFybmluZ01vZGVcbiAgICBsZWFybmluZ09iamVjdGl2ZTogc3RyaW5nXG4gICAgbGFiZWxzPzogc3RyaW5nW11cbiAgICBsb2NhbGU/OiBzdHJpbmdcbiAgICBoYXNUcmFuc2xhdGlvbnM/OiB7IGlkZW50aWZpZXI6IHN0cmluZzsgbG9jYWxlOiBzdHJpbmcgfVtdXG4gICAgaXNUcmFuc2xhdGlvbk9mPzogeyBpZGVudGlmaWVyOiBzdHJpbmc7IGxvY2FsZTogc3RyaW5nIH1bXVxuICAgIG1lX3RvdGFsU2Vzc2lvbnNDb3VudDogbnVtYmVyXG4gICAgbWVkaWFUeXBlOiBzdHJpbmdcbiAgICBtaW1lVHlwZTogRU1pbWVUeXBlc1xuICAgIG1zQXJ0aWZhY3REZXRhaWxzPzogSU1TQXJ0aWZhY3REZXRhaWxzXG4gICAgbW9kZT86IEVUYWdUeXBlXG4gICAgbmFtZTogc3RyaW5nXG4gICAgbmV4dENlcnRpZmljYXRpb25BdHRlbXB0RGF0ZT86IHN0cmluZ1xuICAgIHBhcmVudD86IHN0cmluZ1xuICAgIHBsYXlncm91bmRJbnN0cnVjdGlvbnM/OiBzdHJpbmdcbiAgICBwbGF5Z3JvdW5kUmVzb3VyY2VzPzogSVJlc291cmNlUGxheWdyb3VuZFtdXG4gICAgcG9zdENvbnRlbnRzPzogSVByZVBvc3RDb250ZW50W11cbiAgICBwb3N0ZXJJbWFnZT86IHN0cmluZ1xuICAgIHByZUNvbnRlbnRzPzogSVByZVBvc3RDb250ZW50W11cbiAgICBwcmVSZXF1aXNpdGVzOiBzdHJpbmdcbiAgICBwcmljZT86IHtcbiAgICAgIGN1cnJlbmN5OiBzdHJpbmdcbiAgICAgIHZhbHVlOiBudW1iZXJcbiAgICB9XG4gICAgcHJpbWFyeUNhdGVnb3J5OiBFUHJpbWFyeUNhdGVnb3J5LFxuICAgIHByb2N0b3JVcmw/OiBzdHJpbmdcbiAgICBwcm9ncmVzcz86IElNYXJrQXNDb21wbGV0ZVByb2dyZXNzXG4gICAgcHVibGlzaGVkT246IHN0cmluZ1xuICAgIHJlY2VudENlcnRpZmljYXRpb25BdHRlbXB0U2NvcmU/OiBudW1iZXJcbiAgICByZWNvbW1lbmRhdGlvblJlYXNvbnM/OiBzdHJpbmdbXVxuICAgIHJlZ2lvbj86IHN0cmluZ1tdXG4gICAgcmVnaXN0cmF0aW9uVXJsPzogc3RyaW5nXG4gICAgcmVnaXN0cmF0aW9uSW5zdHJ1Y3Rpb25zPzogc3RyaW5nXG4gICAgcmVzb3VyY2VDYXRlZ29yeT86IHN0cmluZ1tdXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmdcbiAgICBzaXplPzogbnVtYmVyXG4gICAgc2tpbGxzOiBJU2tpbGxbXVxuICAgIHNvZnR3YXJlUmVxdWlyZW1lbnRzPzogSVJlc291cmNlRGV0YWlsW11cbiAgICBzb3VyY2VOYW1lOiBzdHJpbmdcbiAgICBzb3VyY2VTaG9ydE5hbWU6IHN0cmluZ1xuICAgIHNvdXJjZUljb25Vcmw/OiBzdHJpbmdcbiAgICBzb3VyY2VVcmw/OiBzdHJpbmdcbiAgICBzc29FbmFibGVkPzogYm9vbGVhblxuICAgIGxhc3RSZWFkQ29udGVudElkPzogc3RyaW5nXG4gICAgc3RhdHVzOlxuICAgIHwgJ0RyYWZ0J1xuICAgIHwgJ0luUmV2aWV3J1xuICAgIHwgJ1F1YWxpdHlSZXZpZXcnXG4gICAgfCAnUmV2aWV3ZWQnXG4gICAgfCAnUHJvY2Vzc2luZydcbiAgICB8ICdMaXZlJ1xuICAgIHwgJ0RlbGV0ZWQnXG4gICAgfCAnTWFya2VkRm9yRGVsZXRpb24nXG4gICAgfCAnRXhwaXJlZCdcbiAgICBzdWJUaXRsZT86IHN0cmluZ1xuICAgIHN1YlRpdGxlcz86IElTdWJ0aXRsZVtdXG4gICAgc3R1ZHlNYXRlcmlhbHM/OiBJUmVsYXRlZENvbnRlbnRNZXRhW11cbiAgICBzeXN0ZW1SZXF1aXJlbWVudHM/OiBzdHJpbmdbXVxuICAgIHRhZ3M6IElUYWdbXVxuICAgIHRvcGljczogSUNvbnRlbnRUb3BpY1tdXG4gICAgdG90YWxMaWtlcz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH1cbiAgICB0b3RhbFJhdGluZz86IG51bWJlclxuICAgIHRyYWNrOiBJVHJhY2tbXVxuICAgIHVuaXF1ZUxlYXJuZXJzPzogbnVtYmVyXG4gICAgdmlld0NvdW50PzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfVxuICAgIHJlYXNvbj86IHN0cmluZyAvLyByZXF1aXJlZCBmb3IgS25vd2xlZGdlIGJvYXJkXG4gICAgdHJhaW5pbmdMSHViQ291bnQ/OiBudW1iZXIgLy8gZm9yIExIdWIgdHJhaW5pbmdzXG4gICAgdmVyaWZpZXJzPzoge1xuICAgICAgLy8gcmVxdWlyZWQgZm9yIEV4dGVybmFsIENlcnRpZmljYXRpb25zXG4gICAgICBuYW1lOiBzdHJpbmdcbiAgICAgIGVtYWlsOiBzdHJpbmdcbiAgICAgIGlkOiBzdHJpbmdcbiAgICB9W11cbiAgICByZWZlcmVuY2VzPzogeyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W11cbiAgICByZXN1bWVQYWdlPzogbnVtYmVyIC8vIEZvciBwbGF5ZXIgV2ViTW9kdWxlIGluIFVJXG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgb3B0aW9uYWxSZWFkaW5nOiBib29sZWFuXG4gICAgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXVxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQ29udGVudFJlc3BvbnNlIHtcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhcmFtczogYW55LFxuICAgIHJlc3BvbnNlQ29kZTogc3RyaW5nLFxuICAgIHJlc3VsdDoge1xuICAgICAgY29udGVudDogSUNvbnRlbnRcbiAgICB9LFxuICAgIHRzOiBzdHJpbmcsXG4gICAgdmVyOiBzdHJpbmdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUJhdGNoIHtcbiAgICBiYXRjaElkOiBzdHJpbmcsXG4gICAgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCxcbiAgICBlbnJvbGxtZW50VHlwZTogc3RyaW5nLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcsXG4gICAgc3RhdHVzOiBudW1iZXJcbiAgICBjZXJ0X3RlbXBsYXRlcz86IG51bGxcbiAgICBjb2xsZWN0aW9uSWQ6IHN0cmluZ1xuICAgIGNvdXJzZUlkOiBzdHJpbmdcbiAgICBjcmVhdGVkRGF0ZTogc3RyaW5nXG4gICAgY3JlYXRlZEZvcjogc3RyaW5nW11cbiAgICBkZXNjcmlwdGlvbj86IG51bGxcbiAgICBlbnJvbGxtZW50RW5kRGF0ZTogc3RyaW5nIHwgbnVsbFxuICAgIGlkOiBzdHJpbmdcbiAgICBtZW50b3JzPzogc3RyaW5nW10gfCBudWxsXG4gICAgdGFuZGM/OiBudWxsXG4gICAgdXBkYXRlZERhdGU/OiBzdHJpbmcgfCBudWxsXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElCYXRjaExpc3RSZXNwb25zZSB7XG4gICAgY29udGVudD86IElCYXRjaFtdXG4gICAgY291bnQ/OiBudW1iZXIsXG4gICAgZW5yb2xsZWQ/OiBib29sZWFuLFxuICAgIHdvcmtGbG93Pzoge1xuICAgICAgd2ZJbml0aWF0ZWQ/OiBib29sZWFuXG4gICAgICBiYXRjaD86IGFueVxuICAgICAgd2ZJdGVtPzogYW55XG4gICAgfSxcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvdXJzZSB7XG4gICAgYWN0aXZlOiB0cnVlXG4gICAgYWRkZWRCeTogc3RyaW5nXG4gICAgYmF0Y2g6IElCYXRjaFxuICAgIGJhdGNoSWQ6IHN0cmluZ1xuICAgIGNlcnRpZmljYXRlczogW11cbiAgICBjb2xsZWN0aW9uSWQ6IHN0cmluZ1xuICAgIGNvbXBsZXRlZE9uOiBzdHJpbmcgfCBudWxsXG4gICAgY29tcGxldGlvblBlcmNlbnRhZ2U6IG51bWJlciB8IG51bGxcbiAgICBjb21wbGV0aW9uU3RhdHVzPzogbnVtYmVyXG4gICAgY29udGVudDogSUNvbnRlbnRcbiAgICBjb250ZW50SWQ6IHN0cmluZ1xuICAgIGNvbnRlbnRTdGF0dXM6IGFueVxuICAgIGNvdXJzZUlkOiBzdHJpbmdcbiAgICBjb3Vyc2VMb2dvVXJsOiBzdHJpbmdcbiAgICBjb3Vyc2VOYW1lOiBzdHJpbmdcbiAgICBkYXRlVGltZTogbnVtYmVyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgIGVucm9sbGVkRGF0ZTogc3RyaW5nXG4gICAgaXNzdWVkQ2VydGlmaWNhdGVzOiBbXVxuICAgIGxhc3RDb250ZW50QWNjZXNzVGltZT86IHN0cmluZ1xuICAgIGxhc3RSZWFkQ29udGVudElkPzogc3RyaW5nXG4gICAgbGFzdFJlYWRDb250ZW50U3RhdHVzOiBzdHJpbmcgfCBudWxsLFxuICAgIGxyY1Byb2dyZXNzRGV0YWlsczogYW55LFxuICAgIHJlY2VudF9sYW5ndWFnZTogc3RyaW5nXG4gICAgbGVhZk5vZGVzQ291bnQ6IG51bWJlclxuICAgIHByb2dyZXNzOiBudW1iZXJcbiAgICBzdGF0dXM6IG51bWJlclxuICAgIHVzZXJJZDogc3RyaW5nXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElDb250ZW50TWluaW1hbCB7XG4gICAgYXBwSWNvbjogc3RyaW5nXG4gICAgYXJ0aWZhY3RVcmw6IHN0cmluZ1xuICAgIGRpZmZpY3VsdHlMZXZlbDogc3RyaW5nXG4gICAgY29udGVudFR5cGU6IEVDb250ZW50VHlwZXNcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgZGlzcGxheUNvbnRlbnRUeXBlPzogRURpc3BsYXlDb250ZW50VHlwZXNcbiAgICBkdXJhdGlvbjogbnVtYmVyXG4gICAgaWRlbnRpZmllcjogc3RyaW5nXG4gICAgaGFzQWNjZXNzPzogYm9vbGVhblxuICAgIGlzSW5JbnRyYW5ldD86IGJvb2xlYW5cbiAgICBsZWFybmluZ01vZGU/OiBUTGVhcm5pbmdNb2RlXG4gICAgbWltZVR5cGU6IEVNaW1lVHlwZXNcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBjcmVhdG9yRGV0YWlsczogSUNyZWF0b3JbXVxuICAgIGNyZWF0b3JDb250YWN0czogSUNyZWF0b3JbXVxuICAgIHBvc3RlckltYWdlOiBzdHJpbmdcbiAgICBwcmltYXJ5Q2F0ZWdvcnk6IEVQcmltYXJ5Q2F0ZWdvcnlcbiAgICByZXNvdXJjZVR5cGU/OiBzdHJpbmdcbiAgICB0b3RhbFJhdGluZz86IG51bWJlclxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQ29sbGVjdGlvbkhpZXJhcmNoeVJlc3BvbnNlIHtcbiAgICBkYXRhOiBJQ29udGVudFxuICAgIGhhc01vcmU6IGJvb2xlYW5cbiAgICB0b3RhbENvbnRlbnRzOiBudW1iZXJcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVJlbGF0ZWRDb250ZW50TWV0YSB7XG4gICAgaWRlbnRpZmllcjogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cblxuICB0eXBlIFRDZXJ0aWZpY2F0aW9uU3RhdHVzID0gJ29uZ29pbmcnIHwgJ3Bhc3NlZCcgfCAnY2FuQXR0ZW1wdCcgfCAnY2Fubm90QXR0ZW1wdCdcbiAgZXhwb3J0IHR5cGUgVExlYXJuaW5nTW9kZSA9ICdTZWxmLVBhY2VkJyB8ICdJbnN0cnVjdG9yLUxlZCcgfCAnT3BlbicgfCAnQ2xvc2VkJ1xuXG4gIGludGVyZmFjZSBJTWFya0FzQ29tcGxldGVQcm9ncmVzcyB7XG4gICAgcHJvZ3Jlc3NTdGF0dXM6ICdvcGVuJyB8ICdzdGFydGVkJyB8ICdjb21wbGV0ZWQnXG4gICAgc2hvd01hcmtBc0NvbXBsZXRlOiBib29sZWFuXG4gICAgbWFya0FzQ29tcGxldGVSZWFzb246IHN0cmluZ1xuICAgIHByb2dyZXNzU3VwcG9ydGVkOiBib29sZWFuXG4gICAgcHJvZ3Jlc3M6IG51bWJlciB8IG51bGxcbiAgfVxuXG4gIGludGVyZmFjZSBJVGFnIHtcbiAgICBpZDogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gICAgdmFsdWU6IHN0cmluZ1xuICB9XG4gIGludGVyZmFjZSBJTVNBcnRpZmFjdERldGFpbHMge1xuICAgIGNoYW5uZWxJZDogc3RyaW5nXG4gICAgdmlkZW9JZDogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElDbGllbnQge1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmdcbiAgICBpZDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElTdWJ0aXRsZSB7XG4gICAgc3JjbGFuZzogc3RyaW5nXG4gICAgbGFiZWw6IHN0cmluZ1xuICAgIHVybDogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElQcmVQb3N0Q29udGVudCB7XG4gICAgaWRlbnRpZmllcjogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgaW50ZXJmYWNlIElSZXNvdXJjZURldGFpbCB7XG4gICAgdGl0bGU/OiBzdHJpbmdcbiAgICB1cmw/OiBzdHJpbmdcbiAgfVxuICBpbnRlcmZhY2UgSVJlc291cmNlUGxheWdyb3VuZCB7XG4gICAgYXBwSWNvbjogc3RyaW5nXG4gICAgYXJ0aWZhY3RVcmw6IHN0cmluZ1xuICAgIGlkZW50aWZpZXI6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIGludGVyZmFjZSBJVHJhY2sge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBzdGF0dXM6IHN0cmluZ1xuICAgIHZpc2liaWxpdHk6IHN0cmluZ1xuICB9XG4gIGludGVyZmFjZSBJU2tpbGwge1xuICAgIGlkOiBzdHJpbmdcbiAgICBjYXRlZ29yeTogc3RyaW5nXG4gICAgc2tpbGw6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNyZWF0b3Ige1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBlbWFpbDogc3RyaW5nXG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBJQ29udGVudFRvcGljIHtcbiAgICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxuICAvLyBBUEkgQmFzZWRcblxuICBleHBvcnQgaW50ZXJmYWNlIElDb250YWN0IHtcbiAgICBpZDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gICAgZW1haWw6IHN0cmluZ1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJVmlld2VyQ29udGludWVMZWFybmluZ1JlcXVlc3Qge1xuICAgIHJlc291cmNlSWQ6IHN0cmluZ1xuICAgIGNvbnRleHRQYXRoSWQ6IHN0cmluZ1xuICAgIGRhdGE6IHN0cmluZ1xuICAgIGRhdGVBY2Nlc3NlZDogbnVtYmVyXG4gICAgY29udGV4dFR5cGU/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICAqIEBkZXByZWNhdGVkIEVudW0gRUNvbnRlbnRUeXBlcyBzaG91bGQgbm90IGJlIHVzZWQgaW4gZnV0dXJlXG4gICAgKi9cbiAgZXhwb3J0IGVudW0gRUNvbnRlbnRUeXBlcyB7XG4gICAgUFJPR1JBTVYyID0gJ1Byb2dyYW0nLFxuICAgIFBST0dSQU0gPSAnTGVhcm5pbmcgUGF0aCcsXG4gICAgQ0hBTk5FTCA9ICdDaGFubmVsJyxcbiAgICBDT1VSU0UgPSAnQ291cnNlJyxcbiAgICBLTk9XTEVER0VfQVJUSUZBQ1QgPSAnS25vd2xlZGdlIEFydGlmYWN0JyxcbiAgICBLTk9XTEVER0VfQk9BUkQgPSAnS25vd2xlZGdlIEJvYXJkJyxcbiAgICBMRUFSTklOR19KT1VSTkVZID0gJ0xlYXJuaW5nIEpvdXJuZXlzJyxcbiAgICBNT0RVTEUgPSAnQ291cnNlVW5pdCcsXG4gICAgUkVTT1VSQ0UgPSAnUmVzb3VyY2UnLFxuICB9XG4gIGV4cG9ydCBlbnVtIEVQcmltYXJ5Q2F0ZWdvcnkge1xuICAgIFBST0dSQU0gPSAnUHJvZ3JhbScsXG4gICAgQ09VUlNFID0gJ0NvdXJzZScsXG4gICAgTU9EVUxFID0gJ0NvdXJzZSBVbml0JyxcbiAgICBSRVNPVVJDRSA9ICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgR09BTFMgPSAnR09BTFMnLFxuICAgIFBMQVlMSVNUID0gJ1BMQVlMSVNUJyxcbiAgICBQUkFDVElDRV9SRVNPVVJDRSA9ICdQcmFjdGljZSBRdWVzdGlvbiBTZXQnLFxuICAgIEZJTkFMX0FTU0VTU01FTlQgPSAnQ291cnNlIEFzc2Vzc21lbnQnLFxuICAgIENPTVBfQVNTRVNTTUVOVCA9ICdDb21wZXRlbmN5IEFzc2Vzc21lbnQnLFxuICAgIEZUQl9RVUVTVElPTiA9ICdGVEIgUXVlc3Rpb24nLFxuICAgIE1URl9RVUVTVElPTiA9ICdNVEYgUXVlc3Rpb24nLFxuICAgIE1VTFRJUExFX0NIT0lDRV9RVUVTVElPTiA9ICdNdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb24nLFxuICAgIFNJTkdMRV9DSE9JQ0VfUVVFU1RJT04gPSAnU2luZ2xlIENob2ljZSBRdWVzdGlvbicsXG4gICAgTUFOREFUT1JZX0NPVVJTRV9HT0FMID0gJ01hbmRhdG9yeSBDb3Vyc2UgR29hbCcsXG4gICAgU1RBTkRBTE9ORV9BU1NFU1NNRU5UID0gJ1N0YW5kYWxvbmUgQXNzZXNzbWVudCcsXG4gICAgQkxFTkRFRF9QUk9HUkFNID0gJ0JsZW5kZWQgUHJvZ3JhbScsXG4gICAgT0ZGTElORV9TRVNTSU9OID0gJ09mZmxpbmUgU2Vzc2lvbicsXG4gICAgQ1VSQVRFRF9QUk9HUkFNID0gJ0N1cmF0ZWQgUHJvZ3JhbScsXG4gICAgLy8gZm9sbG93aW5nIHdpbGwgbm90IGJlIGF2YWlsYWJsZSBzb29uXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVGhlIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkXG4gICAgICovXG4gICAgS05PV0xFREdFX0FSVElGQUNUID0gJ0tub3dsZWRnZSBBcnRpZmFjdCcsXG4gICAgLyoqXG4gICAgKiBAZGVwcmVjYXRlZCBUaGUgdHlwZSBzaG91bGQgbm90IGJlIHVzZWRcbiAgICAqL1xuICAgIEtOT1dMRURHRV9CT0FSRCA9ICdLbm93bGVkZ2UgQm9hcmQnLFxuICAgIC8qKlxuICAgICogQGRlcHJlY2F0ZWQgVGhlIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkXG4gICAgKi9cbiAgICBMRUFSTklOR19KT1VSTkVZID0gJ0xlYXJuaW5nIEpvdXJuZXlzJyxcbiAgICAvKipcbiAgICAqIEBkZXByZWNhdGVkIFRoZSB0eXBlIHNob3VsZCBub3QgYmUgdXNlZFxuICAgICovXG4gICAgQ0hBTk5FTCA9ICdDaGFubmVsJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEVDb3Vyc2VDYXRlZ29yeSB7XG4gICAgSU5WSVRFX09OTFlfUFJPR1JBTSA9ICdJbnZpdGUtT25seSBQcm9ncmFtJyxcbiAgICBNT0RFUkFURURfUFJPR1JBTSA9ICdNb2RlcmF0ZWQgUHJvZ3JhbScsXG4gICAgQkxFTkRFRF9QUk9HUkFNID0gJ0JsZW5kZWQgUHJvZ3JhbScsXG4gICAgQ1VSQVRFRF9QUk9HUkFNID0gJ0N1cmF0ZWQgUHJvZ3JhbScsXG4gICAgQ09VUlNFID0gJ0NvdXJzZScsXG4gICAgTU9ERVJBVEVEX0NPVVJTRSA9ICdNb2RlcmF0ZWQgQ291cnNlJyxcbiAgICBTVEFOREFMT05FX0FTU0VTU01FTlQgPSAnU3RhbmRhbG9uZSBBc3Nlc3NtZW50JyxcbiAgICBNT0RFUkFURURfQVNTRVNTRU1FTlQgPSAnTW9kZXJhdGVkIEFzc2Vzc21lbnQnLFxuICAgIExFQVJOSU5HX1BBVEhXQVkgPSAnTGVhcm5pbmcgUGF0aHdheScsXG4gICAgQ0FTRV9TVFVEWSA9ICdDYXNlIFN0dWR5JyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIFdGQmxlbmRlZFByb2dyYW1TdGF0dXMge1xuICAgIElOSVRJQVRFID0gJ0lOSVRJQVRFJyxcbiAgICBTRU5EX0ZPUl9NRE9fQVBQUk9WQUwgPSAnU0VORF9GT1JfTURPX0FQUFJPVkFMJyxcbiAgICBTRU5EX0ZPUl9QQ19BUFBST1ZBTCA9ICdTRU5EX0ZPUl9QQ19BUFBST1ZBTCcsXG4gICAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICAgIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbiAgICBXSVRIRFJBV04gPSAnV0lUSERSQVdOJyxcbiAgICBSRU1PVkVEID0gJ1JFTU9WRUQnLFxuICAgIFdJVEhEUkFXID0gJ1dJVEhEUkFXJyxcbiAgfVxuICBleHBvcnQgZW51bSBXRkJsZW5kZWRQcm9ncmFtQXBwcm92YWxUeXBlcyB7XG4gICAgT05FX1NURVBfUEMgPSAnb25lU3RlcFBDQXBwcm92YWwnLFxuICAgIE9ORV9TVEVQX01ETyA9ICdvbmVTdGVwTURPQXBwcm92YWwnLFxuICAgIFRXT19TVEVQX01ET19QQyA9ICd0d29TdGVwTURPQW5kUENBcHByb3ZhbCcsXG4gICAgVFdPX1NURVBfUENfTURPID0gJ3R3b1N0ZXBQQ0FuZE1ET0FwcHJvdmFsJyxcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCAgV0ZTVEFUVVNfTVNHX01BUFBJTkc6IGFueSA9IHtcbiAgICBJTklUSUFURTogICcnLFxuICAgIFNFTkRfRk9SX01ET19BUFBST1ZBTDogICdCYXRjaEVucm9sbEwxTXNnJyxcbiAgICBTRU5EX0ZPUl9QQ19BUFBST1ZBTDogICdCYXRjaEVucm9sbEwyTXNnJyxcbiAgICBBUFBST1ZFRDogICdCYXRjaEVucm9sbEFwcHJvdmVkTXNnJyxcbiAgICBSRUpFQ1RFRDogICdCYXRjaEVucm9sbFJlamVjdGVkTXNnJyxcbiAgICBXSVRIRFJBV046ICdCYXRjaEVucm9sbFdpdGhkcmF3TXNnJyxcbiAgICBSRU1PVkVEOiAnQmF0Y2hFbnJvbGxSZW1vdmVNc2cnLFxuICAgIEVYUElSRUQ6ICdCYXRjaExpc3RFeHBpcmVkTXNnJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzIHtcbiAgICBMRUFSTklOR19SRVNPVVJDRSA9ICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgUFJBQ1RJQ0VfUkVTT1VSQ0UgPSAnUHJhY3RpY2UgUXVlc3Rpb24gU2V0JyxcbiAgICBGSU5BTF9BU1NFU1NNRU5UID0gJ0NvdXJzZSBBc3Nlc3NtZW50JyxcbiAgICBDT01QX0FTU0VTU01FTlQgPSAnQ29tcGV0ZW5jeSBBc3Nlc3NtZW50JyxcbiAgICBPRkZMSU5FX1NFU1NJT04gPSAnT2ZmbGluZSBTZXNzaW9uJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEVNaXNjUGxheWVyU3VwcG9ydGVkQ29sbGVjdGlvblR5cGVzIHtcbiAgICBQTEFZTElTVCA9ICdQbGF5bGlzdCcsXG4gIH1cbiAgZXhwb3J0IGNvbnN0IFBMQVlFUl9TVVBQT1JURURfQ09MTEVDVElPTl9UWVBFUzogc3RyaW5nW10gPSBbXG4gICAgRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UsXG4gICAgRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUsXG4gICAgRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuQ1VSQVRFRF9QUk9HUkFNLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuU1RBTkRBTE9ORV9BU1NFU1NNRU5ULFxuICAgIEVNaXNjUGxheWVyU3VwcG9ydGVkQ29sbGVjdGlvblR5cGVzLlBMQVlMSVNULFxuICBdXG4gIGV4cG9ydCBjb25zdCBLQl9TVVBQT1JURURfQ09OVEVOVF9UWVBFUzogRVByaW1hcnlDYXRlZ29yeVtdID0gW1xuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSxcbiAgICBFUHJpbWFyeUNhdGVnb3J5LlJFU09VUkNFLFxuICBdXG4gIGV4cG9ydCBjb25zdCBQTEFZTElTVF9TVVBQT1JURURfQ09OVEVOVF9UWVBFUzogRVByaW1hcnlDYXRlZ29yeVtdID0gW1xuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFLFxuICAgIEVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSxcbiAgICBFUHJpbWFyeUNhdGVnb3J5LlJFU09VUkNFLFxuICBdXG4gIGV4cG9ydCBlbnVtIEVNaW1lVHlwZXMge1xuICAgIENPTExFQ1RJT04gPSAnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5jb250ZW50LWNvbGxlY3Rpb24nLFxuICAgIFpJUCA9ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmh0bWwtYXJjaGl2ZScsXG4gICAgWklQMiA9ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmVjbWwtYXJjaGl2ZScsXG4gICAgSFRNTCA9ICdhcHBsaWNhdGlvbi9odG1sJyxcbiAgICBIVE1MX1RFWFQgPSAndGV4dC9odG1sJyxcbiAgICBJTFBfRlAgPSAnYXBwbGljYXRpb24vaWxwZnAnLFxuICAgIElBUCA9ICdhcHBsaWNhdGlvbi9pYXAtYXNzZXNzbWVudCcsXG4gICAgTTRBID0gJ2F1ZGlvL200YScsXG4gICAgTVAzID0gJ2F1ZGlvL21wZWcnLFxuICAgIE1QNCA9ICd2aWRlby9tcDQnLFxuICAgIE0zVTggPSAnYXBwbGljYXRpb24veC1tcGVnVVJMJyxcbiAgICBJTlRFUkFDVElPTiA9ICd2aWRlby9pbnRlcmFjdGl2ZScsXG4gICAgUERGID0gJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgUVVJWiA9ICdhcHBsaWNhdGlvbi9xdWl6JyxcbiAgICBEUkFHX0RST1AgPSAnYXBwbGljYXRpb24vZHJhZy1kcm9wJyxcbiAgICBIVE1MX1BJQ0tFUiA9ICdhcHBsaWNhdGlvbi9odG1scGlja2VyJyxcbiAgICBXRUJfTU9EVUxFID0gJ2FwcGxpY2F0aW9uL3dlYi1tb2R1bGUnLFxuICAgIFdFQl9NT0RVTEVfRVhFUkNJU0UgPSAnYXBwbGljYXRpb24vd2ViLW1vZHVsZS1leGVyY2lzZScsXG4gICAgWU9VVFVCRSA9ICd2aWRlby94LXlvdXR1YmUnLFxuICAgIEhBTkRTX09OID0gJ2FwcGxpY2F0aW9uL2ludGVncmF0ZWQtaGFuZHMtb24nLFxuICAgIFJEQk1TX0hBTkRTX09OID0gJ2FwcGxpY2F0aW9uL3JkYm1zJyxcbiAgICBDTEFTU19ESUFHUkFNID0gJ2FwcGxpY2F0aW9uL2NsYXNzLWRpYWdyYW0nLFxuICAgIENIQU5ORUwgPSAnYXBwbGljYXRpb24vY2hhbm5lbCcsXG4gICAgQ09MTEVDVElPTl9SRVNPVVJDRSA9ICdyZXNvdXJjZS9jb2xsZWN0aW9uJyxcbiAgICBBUFBMSUNBVElPTl9KU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIFBSQUNUSUNFX1JFU09VUkNFID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JyxcbiAgICBGSU5BTF9BU1NFU1NNRU5UID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0JyxcbiAgICBPRkZMSU5FX1NFU1NJT04gPSAnYXBwbGljYXRpb24vb2ZmbGluZScsXG4gICAgLy8gQWRkZWQgb24gVUkgT25seVxuICAgIENFUlRJRklDQVRJT04gPSAnYXBwbGljYXRpb24vY2VydGlmaWNhdGlvbicsXG4gICAgUExBWUxJU1QgPSAnYXBwbGljYXRpb24vcGxheWxpc3QnLFxuICAgIFRFWFRfV0VCID0gJ3RleHQveC11cmwnLFxuICAgIFNVUlZFWSA9ICdhcHBsaWNhdGlvbi9zdXJ2ZXknLFxuICAgIFFVRVNUSU9OX1NFVCA9ICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbnNldCcsXG4gICAgUVVFU1RJT04gPSAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb24nLFxuICAgIFVOS05PV04gPSAnYXBwbGljYXRpb24vdW5rbm93bicsXG4gIH1cbiAgZXhwb3J0IGVudW0gRURpc3BsYXlDb250ZW50VHlwZXMge1xuICAgIEFTU0VTU01FTlQgPSAnQVNTRVNTTUVOVCcsXG4gICAgU1RBTkRBTE9ORV9BU1NFU1NNRU5UID0gJ1NUQU5EQUxPTkUgQVNTRVNTTUVOVCcsXG4gICAgUFJBQ1RJQ0VfUkVTT1VSQ0UgPSAnUHJhY3RpY2UgUXVlc3Rpb24gU2V0JyxcbiAgICBGSU5BTF9BU1NFU1NNRU5UID0gJ0NvdXJzZSBBc3Nlc3NtZW50JyxcbiAgICBBVURJTyA9ICdBVURJTycsXG4gICAgQ0VSVElGSUNBVElPTiA9ICdDRVJUSUZJQ0FUSU9OJyxcbiAgICBDSEFOTkVMID0gJ0NoYW5uZWwnLFxuICAgIENMQVNTX0RJQUdSQU0gPSAnQ0xBU1NfRElBR1JBTScsXG4gICAgQ09VUlNFID0gJ0NPVVJTRScsXG4gICAgREVGQVVMVCA9ICdERUZBVUxUJyxcbiAgICBEUkFHX0RST1AgPSAnRFJBR19EUk9QJyxcbiAgICBFWFRFUk5BTF9DRVJUSUZJQ0FUSU9OID0gJ0VYVEVSTkFMX0NFUlRJRklDQVRJT04nLFxuICAgIEVYVEVSTkFMX0NPVVJTRSA9ICdFWFRFUk5BTF9DT1VSU0UnLFxuICAgIEdPQUxTID0gJ0dPQUxTJyxcbiAgICBIQU5EU19PTiA9ICdIQU5EU19PTicsXG4gICAgSUFQID0gJ0lBUCcsXG4gICAgSU5TVFJVQ1RPUl9MRUQgPSAnSU5TVFJVQ1RPUl9MRUQnLFxuICAgIElOVEVSQUNUSVZFX1ZJREVPID0gJ0lOVEVSQUNUSVZFX1ZJREVPJyxcbiAgICBLTk9XTEVER0VfQVJUSUZBQ1QgPSAnS05PV0xFREdFX0FSVElGQUNUJyxcbiAgICBNT0RVTEUgPSAnTU9EVUxFJyxcbiAgICBQREYgPSAnUERGJyxcbiAgICBTVVJWRVkgPSAnU1VSVkVZJyxcbiAgICBQTEFZTElTVCA9ICdQTEFZTElTVCcsXG4gICAgUFJPR1JBTSA9ICdQUk9HUkFNJyxcbiAgICBRVUlaID0gJ1FVSVonLFxuICAgIFJFU09VUkNFID0gJ1JFU09VUkNFJyxcbiAgICBSREJNU19IQU5EU19PTiA9ICdSREJNU19IQU5EU19PTicsXG4gICAgVklERU8gPSAnVklERU8nLFxuICAgIFdFQl9NT0RVTEUgPSAnV0VCX01PRFVMRScsXG4gICAgV0VCX1BBR0UgPSAnV0VCX1BBR0UnLFxuICAgIFlPVVRVQkUgPSAnWU9VVFVCRScsXG4gICAgTElOSyA9ICdMSU5LJyxcbiAgICBLTk9XTEVER0VfQk9BUkQgPSAnS25vd2xlZGdlIEJvYXJkJyxcbiAgICBMRUFSTklOR19KT1VSTkVZID0gJ0xlYXJuaW5nIEpvdXJuZXlzJyxcbiAgICBCTEVOREVEX1BST0dSQU0gPSAnQkxFTkRFRCBQUk9HUkFNJyxcbiAgICBDVVJBVEVEX1BST0dSQU0gPSAnQ1VSQVRFRCBQUk9HUkFNJyxcbiAgfVxuICAvLyBmb3IgVUlcbiAgZXhwb3J0IGVudW0gRUZpbHRlckNhdGVnb3J5IHtcbiAgICBBTEwgPSAnQUxMJyxcbiAgICBMRUFSTiA9ICdMRUFSTicsXG4gICAgUFJBQ1RJQ0UgPSAnUFJBQ1RJQ0UnLFxuICAgIEFTU0VTUyA9ICdBU1NFU1MnLFxuICB9XG5cbiAgLy8gZm9yIFVJXG4gIGV4cG9ydCBlbnVtIEVUYWdUeXBlIHtcbiAgICBORVdMWV9BRERFRCA9ICdORVdMWSBBRERFRCcsXG4gIH1cblxuICBleHBvcnQgY29uc3QgVU5fU1VQUE9SVEVEX0RBVEFfVFlQRVNfRk9SX05PTl9CQVRDSF9VU0VSUzogc3RyaW5nW10gPSBbXG4gICAgLy8gdGhpcyBpcyBjb21tZW50IG5vdyBmb3IgZW5hYmxpbmcgbGlua3MgaW4gdGhlIHRvYyBwYWdlIGZvciBlbnJvbGxlZCB1c2Vyc1xuICAgIC8vIEVNaW1lVHlwZXMuUVVJWixcbiAgICAvLyBFTWltZVR5cGVzLkFQUExJQ0FUSU9OX0pTT04sXG4gICAgLy8gRU1pbWVUeXBlcy5XRUJfTU9EVUxFX0VYRVJDSVNFLFxuXG4gIF1cbiAgZXhwb3J0IGNvbnN0IFBVQkxJQ19TVVBQT1JURURfQ09OVEVOVF9UWVBFUzogRU1pbWVUeXBlc1tdID0gW1xuICAgIEVNaW1lVHlwZXMuQVBQTElDQVRJT05fSlNPTixcbiAgICBFTWltZVR5cGVzLkZJTkFMX0FTU0VTU01FTlQsXG4gICAgRU1pbWVUeXBlcy5IVE1MLFxuICAgIEVNaW1lVHlwZXMuSFRNTF9URVhULFxuICAgIEVNaW1lVHlwZXMuWklQLFxuICAgIEVNaW1lVHlwZXMuWklQMixcbiAgICBFTWltZVR5cGVzLk00QSxcbiAgICBFTWltZVR5cGVzLk1QMyxcbiAgICBFTWltZVR5cGVzLk1QNCxcbiAgICBFTWltZVR5cGVzLlBERixcbiAgICBFTWltZVR5cGVzLllPVVRVQkUsXG4gICAgRU1pbWVUeXBlcy5URVhUX1dFQixcbiAgICBFTWltZVR5cGVzLlNVUlZFWSxcbiAgXVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvbXBlbnRlbmN5S2V5cyB7XG4gICAgdktleTogc3RyaW5nXG4gICAgdkNvbXBldGVuY3lBcmVhOiBzdHJpbmdcbiAgICB2Q29tcGV0ZW5jeUFyZWFEZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgdkNvbXBldGVuY3lUaGVtZTogc3RyaW5nXG4gICAgdkNvbXBldGVuY3lTdWJUaGVtZTogc3RyaW5nXG4gIH1cbiAgZXhwb3J0IGVudW0gRUNvbnRleHRMb2NraW5nVHlwZSB7XG4gICAgQ09VUlNFX0FTU0VTU01FTlRfT05MWSA9ICdDb3Vyc2UgQXNzZXNzbWVudCBPbmx5J1xuICB9XG5cbiAgZXhwb3J0IGVudW0gRUFzc2Vzc21lbnRDb250ZXh0Q2F0ZWdvcnkge1xuICAgIFBSRUxJTUlOQVJZX0FTU0VTU01FTlQgPSAnUHJlbGltaW5hcnkgQXNzZXNzbWVudCcsXG4gICAgRklOQUxfTUlMRVNUT05FX0FTU0VTU01FTlQgPSAnRmluYWwgTWlsZXN0b25lIEFzc2Vzc21lbnQnLFxuICAgIEZJTkFMX1BST0dSQU1fQVNTRVNTTUVOVCA9ICdGaW5hbCBQcm9ncmFtIEFzc2Vzc21lbnQnLFxuICAgIFBSRV9FTlJPTE1FTlRfQVNTRVNTTUVOVCA9ICdQcmUgRW5yb2xtZW50IEFzc2Vzc21lbnQnLFxuICB9XG59XG4iXX0=
@@ -96,11 +96,11 @@ export class WidgetContentService {
96
96
  const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
97
97
  if (primaryCategory && this.isResource(primaryCategory)) {
98
98
  if (!forPreview) {
99
- url = `/apis/proxies/v8/extended/content/v1/read/${contentId}`;
99
+ url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;
100
100
  }
101
101
  else {
102
102
  if (window.location.href.includes('editMode=true') && window.location.href.includes('_rc')) {
103
- url = `/apis/proxies/v8/extended/content/v1/read/${contentId}`;
103
+ url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;
104
104
  }
105
105
  else {
106
106
  url = `/api/content/v1/read/${contentId}`;
@@ -591,4 +591,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
591
591
  providedIn: 'root',
592
592
  }]
593
593
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigurationsService }, { type: i3.ActivatedRoute }]; } });
594
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2xELGlCQUFpQjtBQUNqQixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7QUFDdEIsT0FBTyxFQUFHLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDM0QsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBOzs7OztBQUkzQixnQkFBZ0I7QUFFaEIsdUNBQXVDO0FBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUE7QUFFOUMsTUFBTSxjQUFjLEdBQUc7SUFDckIsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLFVBQVU7SUFDdkMsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLGFBQWEsRUFBRSxHQUFHLGlCQUFpQixvQkFBb0I7SUFDdkQsYUFBYSxFQUFFLEdBQUcsaUJBQWlCLG9CQUFvQjtJQUN2RCxtQkFBbUIsRUFBRSxHQUFHLGlCQUFpQix5QkFBeUI7SUFDbEUsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLCtCQUErQjtJQUNuRSxzQkFBc0IsRUFBRSxHQUFHLGlCQUFpQiw0QkFBNEI7SUFDeEUsZ0JBQWdCLEVBQUUsR0FBRyxpQkFBaUIsbUJBQW1CO0lBQ3pELGlCQUFpQixFQUFF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RUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQTduQlUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgRU1QVFksIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCByZXRyeSwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi93aWRnZXQtY29udGVudC5tb2RlbCdcbi8vIHRzbGludDpkaXNhYmxlXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyAgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuL3ZpZXdlci1yb3V0ZS11dGlsJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE5TU2VhcmNoIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjIvbGliL3NlcnZpY2VzL3dpZGdldC1zZWFyY2gubW9kZWwnXG5pbXBvcnQgeyBOc0NvbnRlbnRTdHJpcE11bHRpcGxlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjIvbGliL3NlcnZpY2VzL2NvbnRlbnQtc3RyaXAtbXVsdGlwbGUubW9kZWwnXG4vLyB0c2xpbnQ6ZW5hYmxlXG5cbi8vIFRPRE86IG1vdmUgdGhpcyBpbiBzb21lIGNvbW1vbiBwbGFjZVxuY29uc3QgUFJPVEVDVEVEX1NMQUdfVjggPSAnL2FwaXMvcHJvdGVjdGVkL3Y4J1xuXG5jb25zdCBBUElfRU5EX1BPSU5UUyA9IHtcbiAgQ09OVEVOVDogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnRgLFxuICBBVVRIT1JJTkdfQ09OVEVOVDogYC9hcGkvY291cnNlL3YxL2hpZXJhcmNoeWAsXG4gIENPTlRFTlRfTElLRVM6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2xpa2VDb3VudGAsXG4gIFNFVF9TM19DT09LSUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NldENvb2tpZWAsXG4gIFNFVF9TM19JTUFHRV9DT09LSUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NldEltYWdlQ29va2llYCxcbiAgRkVUQ0hfTUFOSUZFU1Q6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2dldFdlYk1vZHVsZU1hbmlmZXN0YCxcbiAgRkVUQ0hfV0VCX01PRFVMRV9GSUxFUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvZ2V0V2ViTW9kdWxlRmlsZXNgLFxuICBNVUxUSVBMRV9DT05URU5UOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9tdWx0aXBsZWAsXG4gIENPTlRFTlRfU0VBUkNIX1Y1OiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9zZWFyY2hWNWAsXG4gIENPTlRFTlRfU0VBUkNIX1Y2OiBgL2FwaXMvcHJveGllcy92OC9zdW5iaXJkaWdvdC9zZWFyY2hgLFxuICBUUkVORElOR19DT05URU5UX1NFQVJDSDogYGFwaXMvcHJveGllcy92OC90cmVuZGluZy9jb250ZW50L3NlYXJjaGAsXG4gIENPTlRFTlRfU0VBUkNIX1JFTEFURURfQ0JQX1Y2OiBgL2FwaXMvcHJveGllcy92OC9zdW5iaXJkaWdvdC9zZWFyY2hgLFxuICBDT05URU5UX1NFQVJDSF9SRUdJT05fUkVDT01NRU5EQVRJT046IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NlYXJjaFJlZ2lvblJlY29tbWVuZGF0aW9uYCxcbiAgQ09OVEVOVF9ISVNUT1JZOiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9oaXN0b3J5YCxcbiAgQ09OVEVOVF9ISVNUT1JZVjI6IGAvYXBpcy9wcm94aWVzL3Y4L3JlYWQvY29udGVudC1wcm9ncmVzYCxcbiAgQ09VUlNFX0JBVENIX0xJU1Q6IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YxL2JhdGNoL2xpc3RgLFxuICBDT1VSU0VfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2NvdXJzZS92MS9iYXRjaC9yZWFkYCxcbiAgQVVUT19BU1NJR05fQkFUQ0g6IGAvYXBpcy9wcm90ZWN0ZWQvdjgvY29ob3J0cy91c2VyL2F1dG9lbnJvbGxtZW50L2AsXG4gIEFVVE9fQVNTSUdOX0NVUkFURURfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2N1cmF0ZWRwcm9ncmFtL3YxL2Vucm9sYCxcbiAgQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNOiBgL2FwaXMvcHJveGllcy92OC9vcGVucHJvZ3JhbS92MS9lbnJvbGAsXG4gIFVTRVJfQ09OVElOVUVfTEVBUk5JTkc6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL2hpc3RvcnkvY29udGludWVgLFxuICBDT05URU5UX1JBVElORzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvcmF0aW5nYCxcbiAgQ09MTEVDVElPTl9ISUVSQVJDSFk6ICh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpID0+XG4gICAgYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvY29sbGVjdGlvbi8ke3R5cGV9LyR7aWR9YCxcbiAgUkVHSVNUUkFUSU9OX1NUQVRVUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2FkbWluL3VzZXJSZWdpc3RyYXRpb24vY2hlY2tVc2VyUmVnaXN0cmF0aW9uQ29udGVudGAsXG4gIE1BUktfQVNfQ09NUExFVEVfTUVUQTogKGNvbnRlbnRJZDogc3RyaW5nKSA9PiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9wcm9ncmVzcy8ke2NvbnRlbnRJZH1gLFxuICBFTlJPTExfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YxL2Vucm9sYCxcbiAgRU5ST0xMX0JBVENIX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS9lbnJvbGAsXG4gIFdJVEhEUkFXX0JBVENIX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS91bmVucm9sYCxcbiAgQkxFTkRFRF9VU0VSX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS91c2VyL3NlYXJjaGAsXG4gIEJMRU5ERURfVVNFUl9DT1VOVDogYGFwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS9lbnJvbC9zdGF0dXMvY291bnRgLFxuICBDRVJUX0FERF9URU1QTEFURTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvdGVtcGxhdGUvYWRkYCxcbiAgQ0VSVF9JU1NVRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvaXNzdWVgLFxuICBDRVJUX0RPV05MT0FEOiAoY2VydElkOiBhbnkpID0+IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb2hvcnRzL2NvdXJzZS9iYXRjaC9jZXJ0L2Rvd25sb2FkLyR7Y2VydElkfWAsXG4gIFJFQURfS0FSTUFQT0lOVFM6IGAvYXBpcy9wcm94aWVzL3Y4L2thcm1hcG9pbnRzL3JlYWRgLFxuICBDT05URU5UX1JFQUQ6IChjb250ZW50SWQ6IGFueSkgPT4gYC9hcGlzL3Byb3hpZXMvdjgvZXh0ZW5kZWQvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWAsXG4gIFJFQURfQ09VUlNFX0tBUk1BUE9JTlRTOiAnL2FwaXMvcHJveGllcy92OC9rYXJtYXBvaW50cy91c2VyL2NvdXJzZS9yZWFkJyxcbiAgQ0xBSU1fS0FSTUFQT0lOVFM6ICcvYXBpcy9wcm94aWVzL3Y4L2NsYWlta2FybWFwb2ludHMnLFxuICBVU0VSX0tBUk1BX1BPSU5UUzogJy9hcGlzL3Byb3hpZXMvdjgvdXNlci90b3RhbGthcm1hcG9pbnRzJyxcbiAgRVhUX0NPTlRFTlRfUkVBRDogKGNvbnRlbnRJZDogYW55KSA9PiBgL2FwaXMvcHJveGllcy92OC9jaW9zL3YxL2NvbnRlbnQvcmVhZC8ke2NvbnRlbnRJZH1gLFxuICBFWFRfVVNFUl9DT1VSU0VfRU5ST0xMIDogKGNvbnRlbnRJZDogYW55KSA9PiBgL2FwaXMvcHJveGllcy92OC9jaW9zLWVucm9sbC92MS9yZWFkYnkvdXNlcmlkY291cnNlaWQvJHtjb250ZW50SWR9YCxcbiAgRVhUX0NPTlRFTlRfRVJPTEw6IGAvYXBpcy9wcm94aWVzL3Y4L2Npb3MtZW5yb2xsL3YxL2NyZWF0ZWAsXG4gIEVYVF9QVUJMSUNfQ09OVEVOVDogKHBhcnRlbnQ6IGFueSwgY29udGVudElkOiBhbnkpID0+IGAvYXBpcy9wcm94aWVzL3Y4L2Npb3NJbnRlZ3JhdGlvbi92MS9yZWFkL2NvbnRlbnQvJHtwYXJ0ZW50fS8ke2NvbnRlbnRJZH1gLFxuICBFTlJPTExfQ09OVEVOVF9EQVRBOiAodXNlcklkOiBzdHJpbmcsKSA9PiBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92NC91c2VyL2Vucm9sbG1lbnQvZGV0YWlscy8ke3VzZXJJZH1gLFxuICBMRUFSTkVSX1BBVEhXQVlfRU5ST0xMOiAoY29udGVudElkOiBzdHJpbmcpID0+IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuaW5ncGF0aHdheS92MS9lbnJvbC8ke2NvbnRlbnRJZH1gLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29udGVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gIH1cblxuICB0b2NDb25maWdEYXRhOiBhbnkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pXG4gIHRvY0NvbmZpZ0RhdGEkICA9IHRoaXMudG9jQ29uZmlnRGF0YS5hc09ic2VydmFibGUoKVxuICBjdXJyZW50TWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnRcbiAgY3VycmVudENvbnRlbnRSZWFkTWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnRcbiAgY3VycmVudEJhdGNoRW5yb2xsbWVudExpc3QhOiBOc0NvbnRlbnQuSUNvdXJzZVtdXG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pXG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEkID0gdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLmFzT2JzZXJ2YWJsZSgpXG4gIGxhbmd1YWdlTWFwUHJvZ3Jlc3M6IGFueVxuICBpc1Jlc291cmNlKHByaW1hcnlDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgaWYgKHByaW1hcnlDYXRlZ29yeSkge1xuICAgICAgY29uc3QgaXNSZXNvdXJjZSA9IChwcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUmVzb3VyY2VQcmltYXJ5Q2F0ZWdvcmllcy5MRUFSTklOR19SRVNPVVJDRSkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLlBSQUNUSUNFX1JFU09VUkNFKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuRklOQUxfQVNTRVNTTUVOVCkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLkNPTVBfQVNTRVNTTUVOVCkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLk9GRkxJTkVfU0VTU0lPTilcbiAgICAgIHJldHVybiBpc1Jlc291cmNlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZmV0Y2hNYXJrQXNDb21wbGV0ZU1ldGEoaWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCB1cmwgPSBBUElfRU5EX1BPSU5UUy5NQVJLX0FTX0NPTVBMRVRFX01FVEEoaWRlbnRpZmllcilcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnRvUHJvbWlzZSgpXG4gICAgaWYgKHVybCkgeyB9XG4gICAgcmV0dXJuIG9mKCkudG9Qcm9taXNlKClcbiAgfVxuXG4gIHVwZGF0ZVRvY0NvbmZpZyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRvY0NvbmZpZ0RhdGEubmV4dChkYXRhKVxuICB9XG5cbiAgZmV0Y2hDb250ZW50KFxuICAgIGNvbnRlbnRJZDogc3RyaW5nLFxuICAgIGhpZXJhcmNoeVR5cGU6ICdhbGwnIHwgJ21pbmltYWwnIHwgJ2RldGFpbCcgPSAnZGV0YWlsJyxcbiAgICBfYWRkaXRpb25hbEZpZWxkczogc3RyaW5nW10gPSBbXSxcbiAgICBwcmltYXJ5Q2F0ZWdvcnk/OiBzdHJpbmcgfCBudWxsLFxuICApOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIC8vIGNvbnN0IHVybCA9IGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlR9LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gXG4gICAgbGV0IHVybCA9ICcnXG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJylcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5ICYmIHRoaXMuaXNSZXNvdXJjZShwcmltYXJ5Q2F0ZWdvcnkpKSB7XG4gICAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvZXh0ZW5kZWQvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdfcmMnKSkge1xuICAgICAgICAgIHVybCA9IGAvYXBpcy9wcm94aWVzL3Y4L2V4dGVuZGVkL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmwgPSBgL2FwaS9jb250ZW50L3YxL3JlYWQvJHtjb250ZW50SWR9YFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9yUHJldmlldykge1xuICAgICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZvcmNyZWF0b3IgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpXG4gICAgICAgIGlmIChmb3JjcmVhdG9yKSB7XG4gICAgICAgICAgdXJsID0gYGFwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P21vZGU9ZWRpdGBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwgPSBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cFxuICAgIC8vICAgLnBvc3Q8TnNDb250ZW50LklDb250ZW50Pih1cmwsIHsgYWRkaXRpb25hbEZpZWxkcyB9KVxuICAgIC8vICAgLnBpcGUocmV0cnkoMSkpXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybClcbiAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKVxuICAgIC8vIGlmIChhcGlEYXRhICYmIGFwaURhdGEucmVzdWx0KSB7XG4gICAgLy8gICByZXR1cm4gYXBpRGF0YS5yZXN1bHQuY29udGVudFxuICAgIC8vIH1cbiAgfVxuICBmZXRjaEF1dGhvcmluZ0NvbnRlbnQoY29udGVudElkOiBzdHJpbmcsIGFwaVR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGZvcmNyZWF0b3IgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpXG4gICAgbGV0IHVybCA9ICcnXG4gICAgaWYgKGZvcmNyZWF0b3IpIHtcbiAgICAgIHVybCA9IGBhcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvaGllcmFyY2h5LyR7Y29udGVudElkfT9tb2RlPWVkaXRgXG4gICAgfSBlbHNlIGlmKGFwaVR5cGUgJiYgYXBpVHlwZSA9PT0gJ3JlYWQnKSB7XG4gICAgICB1cmwgPSBgL2FwaS9jb250ZW50L3YxL3JlYWQvJHtjb250ZW50SWR9YFxuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSBgJHtBUElfRU5EX1BPSU5UUy5BVVRIT1JJTkdfQ09OVEVOVH0vJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9ZGV0YWlsYFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybCkucGlwZShzaGFyZVJlcGxheSgxKSwgciA9PiByKVxuICB9XG4gIGZldGNoTXVsdGlwbGVDb250ZW50KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuTVVMVElQTEVfQ09OVEVOVH0vJHtpZHMuam9pbignLCcpfWAsXG4gICAgKVxuICB9XG4gIGZldGNoQ29sbGVjdGlvbkhpZXJhcmNoeSh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHBhZ2VOdW1iZXI6IG51bWJlciA9IDAsIHBhZ2VTaXplOiBudW1iZXIgPSAxKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb2xsZWN0aW9uSGllcmFyY2h5UmVzcG9uc2U+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuQ09MTEVDVElPTl9ISUVSQVJDSFkoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGlkLFxuICAgICAgKX0/cGFnZU51bWJlcj0ke3BhZ2VOdW1iZXJ9JnBhZ2VTaXplPSR7cGFnZVNpemV9YCxcbiAgICApXG4gIH1cblxuICBmZXRjaEJsZW5kZWRDb3Vyc2UoKSB7XG5cbiAgfVxuXG4gIGZldGNoQ291cnNlQmF0Y2hlcyhyZXE6IGFueSk6IE9ic2VydmFibGU8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+KEFQSV9FTkRfUE9JTlRTLkNPVVJTRV9CQVRDSF9MSVNULCByZXEpXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICAvLyBmZXRjaCBpbmRpdmlkdWFsIGJhdGNoXG4gIGZldGNoQ291cnNlQmF0Y2goYmF0Y2hJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT1VSU0VfQkFUQ0h9LyR7YmF0Y2hJZH1gLFxuICAgIClcbiAgfVxuXG4gIGF1dG9Bc3NpZ25CYXRjaEFwaShpZGVudGlmaWVyOiBhbnksIGxhbmd1YWdlPzogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgbGV0IGVucm9sbExhbmc6IHN0cmluZyA9IGxhbmd1YWdlPy5sYW5nSWQgfHwgJ2VuZ2xpc2gnXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7QVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQkFUQ0h9JHtpZGVudGlmaWVyfT9sYW5ndWFnZT0ke2Vucm9sbExhbmd9YClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGF1dG9FbnJvbGxMUChpZGVudGlmaWVyOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPihgJHtBUElfRU5EX1BPSU5UUy5MRUFSTkVSX1BBVEhXQVlfRU5ST0xMKGlkZW50aWZpZXIpfWApXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuXG4gIGF1dG9Bc3NpZ25DdXJhdGVkQmF0Y2hBcGkocmVxdWVzdDogYW55LCBwcm9ncmFtVHlwZTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gcHJvZ3JhbVR5cGUgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTU9ERVJBVEVEX1BST0dSQU0gP1xuICAgIEFQSV9FTkRfUE9JTlRTLkFVVE9fQVNTSUdOX09QRU5fUFJPR1JBTSA6IEFQSV9FTkRfUE9JTlRTLkFVVE9fQVNTSUdOX0NVUkFURURfQkFUQ0hcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7dXJsfWAsIHJlcXVlc3QpXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBlbnJvbGxVc2VyVG9CYXRjaChyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkVOUk9MTF9CQVRDSCwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gIH1cblxuICBlbnJvbGxBbmRVbmVucm9sbFVzZXJUb0JhdGNoV0YocmVxOiBhbnksIHR5cGU6IGFueSkge1xuICAgIGNvbnN0IHVybDogYW55ID0gdHlwZSA9PT0gJ1dJVEhEUkFXJyA/IEFQSV9FTkRfUE9JTlRTLldJVEhEUkFXX0JBVENIX1dGIDogQVBJX0VORF9QT0lOVFMuRU5ST0xMX0JBVENIX1dGXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCByZXEpXG4gICAgICAudG9Qcm9taXNlKClcbiAgfVxuXG4gIGZldGNoQmxlbmRlZFVzZXJXRihyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkJMRU5ERURfVVNFUl9XRiwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gIH1cblxuICBmZXRjaEJsZW5kZWRVc2VyQ09VTlQocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5CTEVOREVEX1VTRVJfQ09VTlQsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKVxuICB9XG5cbiAgZmV0Y2hDb250ZW50TGlrZXMoY29udGVudElkczogeyBjb250ZW50X2lkOiBzdHJpbmdbXSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyBbaWRlbnRpZmllcjogc3RyaW5nXTogbnVtYmVyIH0+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfTElLRVMsIGNvbnRlbnRJZHMpXG4gICAgICAudG9Qcm9taXNlKClcbiAgfVxuICBmZXRjaENvbnRlbnRSYXRpbmdzKGNvbnRlbnRJZHM6IHsgY29udGVudElkczogc3RyaW5nW10gfSkge1xuICAgIGlmIChjb250ZW50SWRzKSB7IH1cbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdChgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX1JBVElOR30vcmF0aW5nYCwgY29udGVudElkcylcbiAgICAvLyAgIC50b1Byb21pc2UoKVxuICAgIHJldHVybiBvZigpLnRvUHJvbWlzZSgpXG4gIH1cblxuICBmZXRjaENvbnRlbnRIaXN0b3J5KGNvbnRlbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX0hJU1RPUll9LyR7Y29udGVudElkfWAsXG4gICAgKVxuICB9XG5cbiAgZmV0Y2hDb250ZW50SGlzdG9yeVYyKHJlcTogTnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YVJlcSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaXNQcmVBc3Nlc3NtZW50ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5wcmVBc3Nlc3NtZW50XG4gICAgcmVxLnJlcXVlc3QuZmllbGRzID0gWydwcm9ncmVzc2RldGFpbHMnXVxuICAgIGlmKHJlcS5yZXF1ZXN0LmNvdXJzZUlkICYmICFpc1ByZUFzc2Vzc21lbnQpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX0hJU1RPUllWMn0vJHtyZXEucmVxdWVzdC5jb3Vyc2VJZH1gLCByZXFcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sYW5ndWFnZU1hcFByb2dyZXNzID0gckRhdGE/LnJlc3VsdD8ubGFuZ3VhZ2VQcm9ncmVzcyB8fCB7fVxuICAgICAgICByZXR1cm4gckRhdGFcbiAgICAgIH0pLCAvLyAgKHJEYXRhLnJlc3BvbnNlRGF0YSB8fCBbXSkubWFwKChwOiBhbnkpID0+IHAubmFtZSlcbiAgICApXG4gICAgLy8gZGF0YS5zdWJzY3JpYmUoKHN1YnNjcmliZURhdGE6IGFueSkgPT4ge1xuICAgIC8vICAgICAgIHRoaXMucHJvZ3JhbUNoaWxkQ291cnNlUmVzdW1lRGF0YS5uZXh0KHsgcmVzdW1lRGF0YTogc3Vic2NyaWJlRGF0YS5yZXN1bHQuY29udGVudExpc3QsIGNvdXJzZUlkOiByZXEucmVxdWVzdC5jb3Vyc2VJZCB9KVxuICAgIC8vICAgICB9KVxuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgcmV0dXJuIG9mKClcbiAgfVxuXG4gIHNldFByb2dyYW1DaGlsZFJlc3VtZURhdGEoY29udGVudExpc3Q6IGFueSwgY291cnNlSWQ6IGFueSkge1xuICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLm5leHQoeyByZXN1bWVEYXRhOiBjb250ZW50TGlzdCwgY291cnNlSWQgfSlcbiAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gIH1cblxuICBhc3luYyBjb250aW51ZUxlYXJuaW5nKGlkOiBzdHJpbmcsIGNvbGxlY3Rpb25JZD86IHN0cmluZywgY29sbGVjdGlvblR5cGU/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZlID0+IHtcbiAgICAgIGlmIChjb2xsZWN0aW9uVHlwZSAmJlxuICAgICAgICBjb2xsZWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpID09PSAncGxheWxpc3QnKSB7XG4gICAgICAgIGNvbnN0IHJlcUJvZHkgPSB7XG4gICAgICAgICAgY29udGV4dFBhdGhJZDogY29sbGVjdGlvbklkID8gY29sbGVjdGlvbklkIDogaWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogaWQsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgY29udGV4dEZ1bGxQYXRoOiBbY29sbGVjdGlvbklkLCBpZF0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZGF0ZUFjY2Vzc2VkOiBEYXRlLm5vdygpLFxuICAgICAgICAgIGNvbnRleHRUeXBlOiAncGxheWxpc3QnLFxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUNvbnRpbnVlTGVhcm5pbmcocmVxQm9keSkudG9Qcm9taXNlKCkuY2F0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpXG4gICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVxQm9keSA9IHtcbiAgICAgICAgICBjb250ZXh0UGF0aElkOiBjb2xsZWN0aW9uSWQgPyBjb2xsZWN0aW9uSWQgOiBpZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBpZCxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IHRpbWVzdGFtcDogRGF0ZS5ub3coKSB9KSxcbiAgICAgICAgICBkYXRlQWNjZXNzZWQ6IERhdGUubm93KCksXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlQ29udGludWVMZWFybmluZyhyZXFCb2R5KS50b1Byb21pc2UoKS5jYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHNhdmVDb250aW51ZUxlYXJuaW5nKGNvbnRlbnQ6IE5zQ29udGVudC5JVmlld2VyQ29udGludWVMZWFybmluZ1JlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLlVTRVJfQ09OVElOVUVfTEVBUk5JTkdcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIGNvbnRlbnQpXG4gICAgaWYgKGNvbnRlbnQpIHtcblxuICAgIH1cbiAgICByZXR1cm4gb2YoKSBhcyBhbnlcbiAgfVxuXG4gIHNldFMzQ29va2llKFxuICAgIF9jb250ZW50SWQ6IHN0cmluZyxcbiAgICAvLyBfcGF0aDogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLlNFVF9TM19DT09LSUUsIHsgY29udGVudElkIH0pXG4gICAgLy8gICAucGlwZShjYXRjaEVycm9yKF9lcnIgPT4gb2YodHJ1ZSkpKVxuXG4gICAgcmV0dXJuIEVNUFRZXG4gIH1cblxuICBzZXRTM0ltYWdlQ29va2llKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlNFVF9TM19JTUFHRV9DT09LSUUsIHt9KS5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpXG4gIH1cblxuICBmZXRjaE1hbmlmZXN0KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuRkVUQ0hfTUFOSUZFU1QsIHsgdXJsIH0pXG4gIH1cbiAgZmV0Y2hXZWJNb2R1bGVDb250ZW50KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHtBUElfRU5EX1BPSU5UUy5GRVRDSF9XRUJfTU9EVUxFX0ZJTEVTfT91cmw9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gKVxuICB9XG4gIHNlYXJjaChyZXE6IE5TU2VhcmNoLklTZWFyY2hSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoQXBpUmVzdWx0PiB7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y1LCB7XG4gICAgICByZXF1ZXN0OiByZXEsXG4gICAgfSlcbiAgfVxuICBzZWFyY2hSZWdpb25SZWNvbW1lbmRhdGlvbihcbiAgICByZXE6IE5TU2VhcmNoLklTZWFyY2hPcmdSZWdpb25SZWNvbW1lbmRhdGlvblJlcXVlc3QsXG4gICk6IE9ic2VydmFibGU8TnNDb250ZW50U3RyaXBNdWx0aXBsZS5JQ29udGVudFN0cmlwUmVzcG9uc2VBcGk+IHtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJydcbiAgICByZXEucHJlTGFiZWxWYWx1ZSA9XG4gICAgICAocmVxLnByZUxhYmVsVmFsdWUgfHwgJycpICtcbiAgICAgICgodGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUuY291bnRyeSkgfHwgJycpXG4gICAgcmVxLmZpbHRlcnMgPSB7XG4gICAgICAuLi5yZXEuZmlsdGVycyxcbiAgICAgIGxhYmVsczogW3JlcS5wcmVMYWJlbFZhbHVlIHx8ICcnXSxcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5zQ29udGVudFN0cmlwTXVsdGlwbGUuSUNvbnRlbnRTdHJpcFJlc3BvbnNlQXBpPihcbiAgICAgIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1JFR0lPTl9SRUNPTU1FTkRBVElPTixcbiAgICAgIHsgcmVxdWVzdDogcmVxIH0sXG4gICAgKVxuICB9XG4gIHNlYXJjaFY2KHJlcTogTlNTZWFyY2guSVNlYXJjaFY2UmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYXBpUGF0aCA9IF8uZ2V0KHJlcSwgJ2FwaS5wYXRoJylcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJydcbiAgICBpZiAoYXBpUGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihhcGlQYXRoKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9WNiwgcmVxKVxuICB9XG5cbiAgc2VhcmNoUmVsYXRlZENCUFY2KHJlcTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9SRUxBVEVEX0NCUF9WNiwgcmVxKVxuICB9XG5cbiAgZmV0Y2hDb250ZW50UmF0aW5nKGNvbnRlbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IHJhdGluZzogbnVtYmVyIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDx7IHJhdGluZzogbnVtYmVyIH0+KGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gKVxuICB9XG4gIGRlbGV0ZUNvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gKVxuICB9XG4gIGFkZENvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcsIGRhdGE6IHsgcmF0aW5nOiBudW1iZXIgfSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWAsIGRhdGEpXG4gIH1cblxuICBnZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkoY29udGVudDogTnNDb250ZW50LklDb250ZW50KTogTnNDb250ZW50LklDb250ZW50IHtcbiAgICBpZiAoIShjb250ZW50LmNoaWxkcmVuIHx8IFtdKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBjb250ZW50XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1BTkRBVE9SWV9DT1VSU0VfR09BTCB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSkgfHxcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpXG4gICAgKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF1cbiAgICAgIHJldHVybiB0aGlzLmdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjaGlsZClcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlJFU09VUkNFIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuS05PV0xFREdFX0FSVElGQUNUIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBSQUNUSUNFX1JFU09VUkNFIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuRklOQUxfQVNTRVNTTUVOVCB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkNPTVBfQVNTRVNTTUVOVCB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk9GRkxJTkVfU0VTU0lPTlxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRcbiAgICB9XG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF1cbiAgICBjb25zdCByZXN1bHRDb250ZW50ID0gdGhpcy5nZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkoZmlyc3RDaGlsZClcbiAgICByZXR1cm4gcmVzdWx0Q29udGVudFxuICB9XG5cbiAgZ2V0UmVnaXN0cmF0aW9uU3RhdHVzKHNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTx7IGhhc0FjY2VzczogYm9vbGVhbjsgcmVnaXN0cmF0aW9uVXJsPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLlJFR0lTVFJBVElPTl9TVEFUVVN9LyR7c291cmNlfWApLnRvUHJvbWlzZSgpXG4gIH1cblxuICBmZXRjaENvbmZpZyh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKVxuICB9XG5cbiAgYWRkQ2VydFRlbXBsYXRlKGJvZHk6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8YW55PihgJHtBUElfRU5EX1BPSU5UUy5DRVJUX0FERF9URU1QTEFURX1gLCBib2R5KVxuICB9XG5cbiAgaXNzdWVDZXJ0KGJvZHk6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfSVNTVUV9YCwgYm9keSlcbiAgfVxuICBkb3dubG9hZENlcnQoY2VydElkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfRE9XTkxPQUQoY2VydElkKX1gKVxuICB9XG5cbiAgdHJlbmRpbmdDb250ZW50U2VhcmNoKHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJydcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklDb250ZW50PihBUElfRU5EX1BPSU5UUy5UUkVORElOR19DT05URU5UX1NFQVJDSCwgcmVxKVxuICB9XG5cbiAgZ2V0S2FybWFQb2l0bnMgKGxpbWl0OiBudW1iZXIsIG9mZnNldDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlJFQURfS0FSTUFQT0lOVFMsIHsgbGltaXQsIG9mZnNldCB9KS5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpXG4gIH1cbiAgZmV0Y2hQcm9ncmFtQ29udGVudChjb250ZW50SWQ6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnRbXT4ge1xuICAgIGxldCB1cmwgPSAnJ1xuICAgIGNvbnN0IGZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3B1YmxpYy8nKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnJnByZXZpZXc9dHJ1ZScpXG4gICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oXG4gICAgICAgIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VkaXRNb2RlPXRydWUnKSkge1xuICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvZXh0ZW5kZWQvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWBcbiAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSBgL2FwaS9jb250ZW50L3YxL3JlYWQvJHtjb250ZW50SWR9YFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4odXJsKVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudFtdPihBUElfRU5EX1BPSU5UUy5DT05URU5UX1JFQUQoY29udGVudElkKSlcbiAgfVxuICBmZXRjaEV4dGVybmFsQ29udGVudChjb250ZW50SWQ6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudFtdPihBUElfRU5EX1BPSU5UUy5FWFRfQ09OVEVOVF9SRUFEKGNvbnRlbnRJZCkpXG4gIH1cblxuICBmZXRjaEV4dGVybmFsUHVibGljQ29udGVudChwYXJ0ZW5lck5hbWU6IGFueSwgY29udGVudElkOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KEFQSV9FTkRfUE9JTlRTLkVYVF9QVUJMSUNfQ09OVEVOVChwYXJ0ZW5lck5hbWUsIGNvbnRlbnRJZCkpXG4gIH1cblxuICBmZXRjaEV4dFVzZXJDb250ZW50RW5yb2xsKGNvbnRlbnRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihBUElfRU5EX1BPSU5UUy5FWFRfVVNFUl9DT1VSU0VfRU5ST0xMKGNvbnRlbnRJZCkpXG4gIH1cblxuICBleHRDb250ZW50RW5yb2xsIChyZXF1ZXN0Qm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuRVhUX0NPTlRFTlRfRVJPTEx9YCwgcmVxdWVzdEJvZHkpXG4gIH1cblxuICBnZXRDb3Vyc2VLYXJtYVBvaW50cyhyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5SRUFEX0NPVVJTRV9LQVJNQVBPSU5UUywgcmVxdWVzdClcbiAgfVxuXG4gIGNsYWltS2FybWFwb2ludHMocmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuQ0xBSU1fS0FSTUFQT0lOVFMsIHJlcXVlc3QpXG4gIH1cblxuICB1c2VyS2FybWFQb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuVVNFUl9LQVJNQV9QT0lOVFMsIHt9KVxuICB9XG5cbiAgZ2V0RW5yb2xsZWREYXRhKGRvSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGVucm9sbG1lbnRNYXBEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZW5yb2xsbWVudE1hcERhdGEnKSB8fCAne30nKVxuICAgIGNvbnN0IGVucm9sbGVkQ291cnNlRGF0YSA9IGVucm9sbG1lbnRNYXBEYXRhW2RvSWRdXG4gICAgcmV0dXJuIGVucm9sbGVkQ291cnNlRGF0YVxuICB9XG5cbiAgYXN5bmMgZ2V0UmVzb3Vyc2VMaW5rKGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IGVucm9sbGVkQ291cnNlRGF0YTogYW55ID0gdGhpcy5nZXRFbnJvbGxlZERhdGEoY29udGVudC5pZGVudGlmaWVyKVxuICAgIGlmIChlbnJvbGxlZENvdXJzZURhdGEpIHtcbiAgICAgIGlmIChlbnJvbGxlZENvdXJzZURhdGEgJiYgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQgJiYgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuc3RhdHVzICYmXG4gICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9PSAncmV0aXJlZCcpIHtcbiAgICAgICAgaWYgKGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSAgTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuSU5WSVRFX09OTFlfUFJPR1JBTSB8fFxuICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSAgTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5NT0RFUkFURURfUFJPR1JBTSB8fFxuICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSB8fFxuICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBST0dSQU0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0JhdGNoSW5Qcm9ncmVzcyhlbnJvbGxlZENvdXJzZURhdGEuYmF0Y2gpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGNvbnRlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXR1cm5EYXRhID0gIGF3YWl0IHRoaXMuY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQsIGVucm9sbGVkQ291cnNlRGF0YSlcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5EYXRhXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9ICBhd2FpdCB0aGlzLmNoZWNrRm9yRGF0YVRvRm9ybVVybChjb250ZW50LCBlbnJvbGxlZENvdXJzZURhdGEpXG4gICAgICAgIHJldHVybiBkYXRhXG4gICAgICB9XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudClcbiAgfVxuICBhc3luYyBjaGVja0ZvckRhdGFUb0Zvcm1VcmwoY29udGVudDogYW55LCBlbnJvbGxEYXRhOiBhbnkpIHtcbiAgICBsZXQgdXJsRGF0YTogYW55XG4gICAgaWYgKGVucm9sbERhdGEuY29tcGxldGlvblBlcmNlbnRhZ2UgID09PSAxMDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGVucm9sbERhdGEpXG4gICAgfVxuICAgIC8vIGlmIChlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscyAmJiBlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscy5taW1lVHlwZSkge1xuICAgIC8vICAgY29uc3QgbW9kaWZ5RW5yb2xsRGF0YSAgPSB7XG4gICAgLy8gICAgIC4uLmVucm9sbERhdGEsXG4gICAgLy8gICAgIGlkZW50aWZpZXI6IGVucm9sbERhdGEuY29sbGVjdGlvbklkLFxuICAgIC8vICAgICBwcmltYXJ5Q2F0ZWdvcnk6IGVucm9sbERhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgLy8gICAgIG5hbWU6IGVucm9sbERhdGEuY29udGVudC5uYW1lLFxuICAgIC8vICAgfVxuICAgIC8vICAgaWYgKG1vZGlmeUVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQpIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCwgZW5yb2xsRGF0YS5scmNQcm9ncmVzc0RldGFpbHMubWltZVR5cGUpXG4gICAgLy8gICB9XG4gICAgLy8gICBpZiAobW9kaWZ5RW5yb2xsRGF0YS5maXJzdENoaWxkSWQpIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yb2xsRGF0YS5maXJzdENoaWxkSWQsXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlKVxuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAgIGlmIChlbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkIHx8IGVucm9sbERhdGEuZmlyc3RDaGlsZElkKSB7XG4gICAgICAgIGNvbnN0IGRvSWQgPSAgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCB8fCBlbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZFxuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmZldGNoUHJvZ3JhbUNvbnRlbnQoZG9JZCkudG9Qcm9taXNlKCkudGhlbihhc3luYyAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5jb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50RGF0YTogYW55ID0gcmVzLnJlc3VsdC5jb250ZW50XG4gICAgICAgICAgICBjb25zdCBtb2RpZnlFbnJvbGxEYXRhICA9IHtcbiAgICAgICAgICAgICAgLi4uZW5yb2xsRGF0YSxcbiAgICAgICAgICAgICAgaWRlbnRpZmllcjogZW5yb2xsRGF0YS5jb2xsZWN0aW9uSWQsXG4gICAgICAgICAgICAgIHByaW1hcnlDYXRlZ29yeTogZW5yb2xsRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgICAgICAgbmFtZTogZW5yb2xsRGF0YS5jb250ZW50Lm5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmxEYXRhID0gIHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSwgY29udGVudERhdGEuaWRlbnRpZmllciwgY29udGVudERhdGEubWltZVR5cGUpXG4gICAgICAgICAgICBpZiAodXJsRGF0YSkge1xuICAgICAgICAgICAgICByZXR1cm4gdXJsRGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSA/IHJlc3BvbnNlRGF0YSA6IHRoaXMuZ290b1RvY1BhZ2UoY29udGVudClcbiAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudClcblxuICB9XG5cbiAgZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEoY29udGVudDogYW55LCByZXNvdXJzZUlkOiBhbnksIG1pbWVUeXBlOiBhbnkpIHtcbiAgICBpZiAoY29udGVudCkge1xuICAgICAgY29uc3QgdXJsID0gdmlld2VyUm91dGVHZW5lcmF0b3IoXG4gICAgICAgIHJlc291cnNlSWQsXG4gICAgICAgIG1pbWVUeXBlLFxuICAgICAgICBjb250ZW50LmlkZW50aWZpZXIsXG4gICAgICAgICdDb3Vyc2UnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgJ0xlYXJuaW5nIFJlc291cmNlJyxcbiAgICAgICAgY29udGVudC5iYXRjaElkLFxuICAgICAgICBjb250ZW50Lm5hbWUsXG4gICAgICApXG4gICAgICByZXR1cm4gdXJsXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGNvbnRlbnQpXG4gIH1cbiAgZ290b1RvY1BhZ2UoY29udGVudDogYW55KSB7XG4gICAgY29uc3QgdXJsRGF0YTogYW55ID0ge1xuICAgICAgdXJsOiBgL2FwcC90b2MvJHtjb250ZW50LmlkZW50aWZpZXIgPyBjb250ZW50LmlkZW50aWZpZXIgOiBjb250ZW50LmNvbGxlY3Rpb25JZH0vb3ZlcnZpZXdgLFxuICAgICAgcXVlcnlQYXJhbXM6IHsgYmF0Y2hJZDogY29udGVudC5iYXRjaElkIH0sXG4gICAgfVxuICAgIGlmIChjb250ZW50LmVuZERhdGUpIHtcbiAgICAgIHVybERhdGEucXVlcnlQYXJhbXMgPSB7IC4uLnVybERhdGEucXVlcnlQYXJhbXMsIHBsYW5UeXBlOiAnY2JQbGFuJywgZW5kRGF0ZTogY29udGVudC5lbmREYXRlIH1cbiAgICB9XG4gICAgaWYgKGNvbnRlbnQuY29udGVudElkICYmIGNvbnRlbnQuY29udGVudElkLmluY2x1ZGVzKCdleHRfJykpIHtcbiAgICAgIHVybERhdGEudXJsID0gYC9hcHAvdG9jL2V4dC8ke2NvbnRlbnQuY29udGVudElkfWBcbiAgICAgIHVybERhdGEucXVlcnlQYXJhbXMgPSB7fVxuICAgIH1cbiAgICByZXR1cm4gdXJsRGF0YVxuICB9XG4gIGlzQmF0Y2hJblByb2dyZXNzKGJhdGNoRGF0YTogYW55KSB7XG4gICAgLy8gaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnRbJ2JhdGNoZXMnXSkge1xuICAgIC8vIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmNvbnRlbnRbJ2JhdGNoZXMnXSBhcyBOc0NvbnRlbnQuSUJhdGNoXG4gICAgaWYgKGJhdGNoRGF0YSAmJiBiYXRjaERhdGEuZW5kRGF0ZSkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJylcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChiYXRjaERhdGEuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgY29uc3QgZW5kRGF0ZSA9IGJhdGNoRGF0YS5lbmREYXRlID8gbW9tZW50KGJhdGNoRGF0YS5lbmREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA6IG5vd1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAvLyBiYXRjaC5zdGF0dXMgJiZcbiAgICAgICAgICAgIG1vbWVudChzdGFydERhdGUpLmlzU2FtZU9yQmVmb3JlKG5vdylcbiAgICAgICAgICAgICYmIG1vbWVudChlbmREYXRlKS5pc1NhbWVPckFmdGVyKG5vdylcbiAgICAgICAgICApXG4gICAgfSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZ2V0UHJlQXNzZXNzbWVudEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpOiBOc0NvbnRlbnQuSUNvbnRlbnQge1xuICAgIGlmICghKGNvbnRlbnQuY2hpbGRyZW4gfHwgW10pLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTUFOREFUT1JZX0NPVVJTRV9HT0FMIHx8XG4gICAgICAoY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUgJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gY29udGVudC5jaGlsZHJlblswXVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJlQXNzZXNzbWVudEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjaGlsZClcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlJFU09VUkNFIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuS05PV0xFREdFX0FSVElGQUNUIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBSQUNUSUNFX1JFU09VUkNFIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuRklOQUxfQVNTRVNTTUVOVCB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkNPTVBfQVNTRVNTTUVOVCB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk9GRkxJTkVfU0VTU0lPTlxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRcbiAgICB9XG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF1cbiAgICBjb25zdCByZXN1bHRDb250ZW50ID0gdGhpcy5nZXRQcmVBc3Nlc3NtZW50Rmlyc3RDaGlsZEluSGllcmFyY2h5KGZpcnN0Q2hpbGQpXG4gICAgcmV0dXJuIHJlc3VsdENvbnRlbnRcbiAgfVxuXG4gIGZldGNoSGllcmFyY2h5Q29udGVudChjb250ZW50SWQ6c3RyaW5nLCBoaWVyYXJjaHlUeXBlOiAnYWxsJyB8ICdtaW5pbWFsJyB8ICdkZXRhaWwnID0gJ2RldGFpbCcpIHtcbiAgICBsZXQgdXJsID0gJydcbiAgICBjb25zdCBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKVxuICAgIGlmICghZm9yUHJldmlldykge1xuICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZvcmNyZWF0b3IgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpXG4gICAgICBpZiAoZm9yY3JlYXRvcikge1xuICAgICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gYC9hcGkvY291cnNlL3YxL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT0ke2hpZXJhcmNoeVR5cGV9YFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybCkucGlwZShzaGFyZVJlcGxheSgxKSlcbiAgfVxuXG4gIGZldGNoQ29udGVudERhdGEoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIGxldCB1cmwgPSAnJ1xuICAgIGNvbnN0IGZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3B1YmxpYy8nKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnJnByZXZpZXc9dHJ1ZScpXG4gICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KFxuICAgICAgICBBUElfRU5EX1BPSU5UUy5DT05URU5UX1JFQUQoY29udGVudElkKSxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJykgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ19yYycpKSB7XG4gICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9leHRlbmRlZC9jb250ZW50L3YxL3JlYWQvJHtjb250ZW50SWR9YFxuICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IGAvYXBpL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50Pih1cmwpXG4gIH1cblxuICBnZXRVc2VyRW5yb2xsbWVudERhdGEodXNlcklkOiBzdHJpbmcsIHJlcXVlc3Q6IGFueSk6IE9ic2VydmFibGU8eyBkYXRhOiBhbnk7IGVycm9yOiBhbnkgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElfRU5EX1BPSU5UUy5FTlJPTExfQ09OVEVOVF9EQVRBKHVzZXJJZCksIHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAoKHJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gckRhdGE/LnJlc3VsdCA/PyBudWxsO1xuICAgICAgICByZXR1cm4geyBkYXRhOiByZXN1bHQsIGVycm9yOiBudWxsIH07XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKHsgZGF0YTogbnVsbCwgZXJyb3IgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
594
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2xELGlCQUFpQjtBQUNqQixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7QUFDdEIsT0FBTyxFQUFHLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDM0QsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBOzs7OztBQUkzQixnQkFBZ0I7QUFFaEIsdUNBQXVDO0FBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUE7QUFFOUMsTUFBTSxjQUFjLEdBQUc7SUFDckIsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLFVBQVU7SUFDdkMsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLGFBQWEsRUFBRSxHQUFHLGlCQUFpQixvQkFBb0I7SUFDdkQsYUFBYSxFQUFFLEdBQUcsaUJBQWlCLG9CQUFvQjtJQUN2RCxtQkFBbUIsRUFBRSxHQUFHLGlCQUFpQix5QkFBeUI7SUFDbEUsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLCtCQUErQjtJQUNuRSxzQkFBc0IsRUFBRSxHQUFHLGlCQUFpQiw0QkFBNEI7SUFDeEUsZ0JBQWdCLEVBQUUsR0FBRyxpQkFBaUIsbUJBQW1CO0lBQ3pELGlCQUFpQixFQUFF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RUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQTduQlUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgRU1QVFksIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCByZXRyeSwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi93aWRnZXQtY29udGVudC5tb2RlbCdcbi8vIHRzbGludDpkaXNhYmxlXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyAgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuL3ZpZXdlci1yb3V0ZS11dGlsJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE5TU2VhcmNoIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjIvbGliL3NlcnZpY2VzL3dpZGdldC1zZWFyY2gubW9kZWwnXG5pbXBvcnQgeyBOc0NvbnRlbnRTdHJpcE11bHRpcGxlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjIvbGliL3NlcnZpY2VzL2NvbnRlbnQtc3RyaXAtbXVsdGlwbGUubW9kZWwnXG4vLyB0c2xpbnQ6ZW5hYmxlXG5cbi8vIFRPRE86IG1vdmUgdGhpcyBpbiBzb21lIGNvbW1vbiBwbGFjZVxuY29uc3QgUFJPVEVDVEVEX1NMQUdfVjggPSAnL2FwaXMvcHJvdGVjdGVkL3Y4J1xuXG5jb25zdCBBUElfRU5EX1BPSU5UUyA9IHtcbiAgQ09OVEVOVDogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnRgLFxuICBBVVRIT1JJTkdfQ09OVEVOVDogYC9hcGkvY291cnNlL3YxL2hpZXJhcmNoeWAsXG4gIENPTlRFTlRfTElLRVM6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2xpa2VDb3VudGAsXG4gIFNFVF9TM19DT09LSUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NldENvb2tpZWAsXG4gIFNFVF9TM19JTUFHRV9DT09LSUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NldEltYWdlQ29va2llYCxcbiAgRkVUQ0hfTUFOSUZFU1Q6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2dldFdlYk1vZHVsZU1hbmlmZXN0YCxcbiAgRkVUQ0hfV0VCX01PRFVMRV9GSUxFUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvZ2V0V2ViTW9kdWxlRmlsZXNgLFxuICBNVUxUSVBMRV9DT05URU5UOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9tdWx0aXBsZWAsXG4gIENPTlRFTlRfU0VBUkNIX1Y1OiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9zZWFyY2hWNWAsXG4gIENPTlRFTlRfU0VBUkNIX1Y2OiBgL2FwaXMvcHJveGllcy92OC9zdW5iaXJkaWdvdC9zZWFyY2hgLFxuICBUUkVORElOR19DT05URU5UX1NFQVJDSDogYGFwaXMvcHJveGllcy92OC90cmVuZGluZy9jb250ZW50L3NlYXJjaGAsXG4gIENPTlRFTlRfU0VBUkNIX1JFTEFURURfQ0JQX1Y2OiBgL2FwaXMvcHJveGllcy92OC9zdW5iaXJkaWdvdC9zZWFyY2hgLFxuICBDT05URU5UX1NFQVJDSF9SRUdJT05fUkVDT01NRU5EQVRJT046IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NlYXJjaFJlZ2lvblJlY29tbWVuZGF0aW9uYCxcbiAgQ09OVEVOVF9ISVNUT1JZOiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9oaXN0b3J5YCxcbiAgQ09OVEVOVF9ISVNUT1JZVjI6IGAvYXBpcy9wcm94aWVzL3Y4L3JlYWQvY29udGVudC1wcm9ncmVzYCxcbiAgQ09VUlNFX0JBVENIX0xJU1Q6IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YxL2JhdGNoL2xpc3RgLFxuICBDT1VSU0VfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2NvdXJzZS92MS9iYXRjaC9yZWFkYCxcbiAgQVVUT19BU1NJR05fQkFUQ0g6IGAvYXBpcy9wcm90ZWN0ZWQvdjgvY29ob3J0cy91c2VyL2F1dG9lbnJvbGxtZW50L2AsXG4gIEFVVE9fQVNTSUdOX0NVUkFURURfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2N1cmF0ZWRwcm9ncmFtL3YxL2Vucm9sYCxcbiAgQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNOiBgL2FwaXMvcHJveGllcy92OC9vcGVucHJvZ3JhbS92MS9lbnJvbGAsXG4gIFVTRVJfQ09OVElOVUVfTEVBUk5JTkc6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL2hpc3RvcnkvY29udGludWVgLFxuICBDT05URU5UX1JBVElORzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvcmF0aW5nYCxcbiAgQ09MTEVDVElPTl9ISUVSQVJDSFk6ICh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpID0+XG4gICAgYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvY29sbGVjdGlvbi8ke3R5cGV9LyR7aWR9YCxcbiAgUkVHSVNUUkFUSU9OX1NUQVRVUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2FkbWluL3VzZXJSZWdpc3RyYXRpb24vY2hlY2tVc2VyUmVnaXN0cmF0aW9uQ29udGVudGAsXG4gIE1BUktfQVNfQ09NUExFVEVfTUVUQTogKGNvbnRlbnRJZDogc3RyaW5nKSA9PiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9wcm9ncmVzcy8ke2NvbnRlbnRJZH1gLFxuICBFTlJPTExfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YxL2Vucm9sYCxcbiAgRU5ST0xMX0JBVENIX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS9lbnJvbGAsXG4gIFdJVEhEUkFXX0JBVENIX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS91bmVucm9sYCxcbiAgQkxFTkRFRF9VU0VSX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS91c2VyL3NlYXJjaGAsXG4gIEJMRU5ERURfVVNFUl9DT1VOVDogYGFwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS9lbnJvbC9zdGF0dXMvY291bnRgLFxuICBDRVJUX0FERF9URU1QTEFURTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvdGVtcGxhdGUvYWRkYCxcbiAgQ0VSVF9JU1NVRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvaXNzdWVgLFxuICBDRVJUX0RPV05MT0FEOiAoY2VydElkOiBhbnkpID0+IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb2hvcnRzL2NvdXJzZS9iYXRjaC9jZXJ0L2Rvd25sb2FkLyR7Y2VydElkfWAsXG4gIFJFQURfS0FSTUFQT0lOVFM6IGAvYXBpcy9wcm94aWVzL3Y4L2thcm1hcG9pbnRzL3JlYWRgLFxuICBDT05URU5UX1JFQUQ6IChjb250ZW50SWQ6IGFueSkgPT4gYC9hcGlzL3Byb3hpZXMvdjgvZXh0ZW5kZWQvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWAsXG4gIFJFQURfQ09VUlNFX0tBUk1BUE9JTlRTOiAnL2FwaXMvcHJveGllcy92OC9rYXJtYXBvaW50cy91c2VyL2NvdXJzZS9yZWFkJyxcbiAgQ0xBSU1fS0FSTUFQT0lOVFM6ICcvYXBpcy9wcm94aWVzL3Y4L2NsYWlta2FybWFwb2ludHMnLFxuICBVU0VSX0tBUk1BX1BPSU5UUzogJy9hcGlzL3Byb3hpZXMvdjgvdXNlci90b3RhbGthcm1hcG9pbnRzJyxcbiAgRVhUX0NPTlRFTlRfUkVBRDogKGNvbnRlbnRJZDogYW55KSA9PiBgL2FwaXMvcHJveGllcy92OC9jaW9zL3YxL2NvbnRlbnQvcmVhZC8ke2NvbnRlbnRJZH1gLFxuICBFWFRfVVNFUl9DT1VSU0VfRU5ST0xMIDogKGNvbnRlbnRJZDogYW55KSA9PiBgL2FwaXMvcHJveGllcy92OC9jaW9zLWVucm9sbC92MS9yZWFkYnkvdXNlcmlkY291cnNlaWQvJHtjb250ZW50SWR9YCxcbiAgRVhUX0NPTlRFTlRfRVJPTEw6IGAvYXBpcy9wcm94aWVzL3Y4L2Npb3MtZW5yb2xsL3YxL2NyZWF0ZWAsXG4gIEVYVF9QVUJMSUNfQ09OVEVOVDogKHBhcnRlbnQ6IGFueSwgY29udGVudElkOiBhbnkpID0+IGAvYXBpcy9wcm94aWVzL3Y4L2Npb3NJbnRlZ3JhdGlvbi92MS9yZWFkL2NvbnRlbnQvJHtwYXJ0ZW50fS8ke2NvbnRlbnRJZH1gLFxuICBFTlJPTExfQ09OVEVOVF9EQVRBOiAodXNlcklkOiBzdHJpbmcsKSA9PiBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92NC91c2VyL2Vucm9sbG1lbnQvZGV0YWlscy8ke3VzZXJJZH1gLFxuICBMRUFSTkVSX1BBVEhXQVlfRU5ST0xMOiAoY29udGVudElkOiBzdHJpbmcpID0+IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuaW5ncGF0aHdheS92MS9lbnJvbC8ke2NvbnRlbnRJZH1gLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29udGVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gIH1cblxuICB0b2NDb25maWdEYXRhOiBhbnkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pXG4gIHRvY0NvbmZpZ0RhdGEkICA9IHRoaXMudG9jQ29uZmlnRGF0YS5hc09ic2VydmFibGUoKVxuICBjdXJyZW50TWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnRcbiAgY3VycmVudENvbnRlbnRSZWFkTWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnRcbiAgY3VycmVudEJhdGNoRW5yb2xsbWVudExpc3QhOiBOc0NvbnRlbnQuSUNvdXJzZVtdXG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pXG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEkID0gdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLmFzT2JzZXJ2YWJsZSgpXG4gIGxhbmd1YWdlTWFwUHJvZ3Jlc3M6IGFueVxuICBpc1Jlc291cmNlKHByaW1hcnlDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgaWYgKHByaW1hcnlDYXRlZ29yeSkge1xuICAgICAgY29uc3QgaXNSZXNvdXJjZSA9IChwcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUmVzb3VyY2VQcmltYXJ5Q2F0ZWdvcmllcy5MRUFSTklOR19SRVNPVVJDRSkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLlBSQUNUSUNFX1JFU09VUkNFKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuRklOQUxfQVNTRVNTTUVOVCkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLkNPTVBfQVNTRVNTTUVOVCkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLk9GRkxJTkVfU0VTU0lPTilcbiAgICAgIHJldHVybiBpc1Jlc291cmNlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZmV0Y2hNYXJrQXNDb21wbGV0ZU1ldGEoaWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCB1cmwgPSBBUElfRU5EX1BPSU5UUy5NQVJLX0FTX0NPTVBMRVRFX01FVEEoaWRlbnRpZmllcilcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnRvUHJvbWlzZSgpXG4gICAgaWYgKHVybCkgeyB9XG4gICAgcmV0dXJuIG9mKCkudG9Qcm9taXNlKClcbiAgfVxuXG4gIHVwZGF0ZVRvY0NvbmZpZyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRvY0NvbmZpZ0RhdGEubmV4dChkYXRhKVxuICB9XG5cbiAgZmV0Y2hDb250ZW50KFxuICAgIGNvbnRlbnRJZDogc3RyaW5nLFxuICAgIGhpZXJhcmNoeVR5cGU6ICdhbGwnIHwgJ21pbmltYWwnIHwgJ2RldGFpbCcgPSAnZGV0YWlsJyxcbiAgICBfYWRkaXRpb25hbEZpZWxkczogc3RyaW5nW10gPSBbXSxcbiAgICBwcmltYXJ5Q2F0ZWdvcnk/OiBzdHJpbmcgfCBudWxsLFxuICApOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIC8vIGNvbnN0IHVybCA9IGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlR9LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gXG4gICAgbGV0IHVybCA9ICcnXG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJylcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5ICYmIHRoaXMuaXNSZXNvdXJjZShwcmltYXJ5Q2F0ZWdvcnkpKSB7XG4gICAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VkaXRNb2RlPXRydWUnKSAmJiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnX3JjJykpIHtcbiAgICAgICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9yZWFkLyR7Y29udGVudElkfWBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybCA9IGAvYXBpL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICAgIHVybCA9IGAvYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT0ke2hpZXJhcmNoeVR5cGV9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJylcbiAgICAgICAgaWYgKGZvcmNyZWF0b3IpIHtcbiAgICAgICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybCA9IGAvYXBpL2NvdXJzZS92MS9oaWVyYXJjaHkvJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybCwgeyBhZGRpdGlvbmFsRmllbGRzIH0pXG4gICAgLy8gICAucGlwZShyZXRyeSgxKSlcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG4gICAgLy8gaWYgKGFwaURhdGEgJiYgYXBpRGF0YS5yZXN1bHQpIHtcbiAgICAvLyAgIHJldHVybiBhcGlEYXRhLnJlc3VsdC5jb250ZW50XG4gICAgLy8gfVxuICB9XG4gIGZldGNoQXV0aG9yaW5nQ29udGVudChjb250ZW50SWQ6IHN0cmluZywgYXBpVHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJylcbiAgICBsZXQgdXJsID0gJydcbiAgICBpZiAoZm9yY3JlYXRvcikge1xuICAgICAgdXJsID0gYGFwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P21vZGU9ZWRpdGBcbiAgICB9IGVsc2UgaWYoYXBpVHlwZSAmJiBhcGlUeXBlID09PSAncmVhZCcpIHtcbiAgICAgIHVybCA9IGAvYXBpL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9IGAke0FQSV9FTkRfUE9JTlRTLkFVVEhPUklOR19DT05URU5UfS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT1kZXRhaWxgXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKS5waXBlKHNoYXJlUmVwbGF5KDEpLCByID0+IHIpXG4gIH1cbiAgZmV0Y2hNdWx0aXBsZUNvbnRlbnQoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5NVUxUSVBMRV9DT05URU5UfS8ke2lkcy5qb2luKCcsJyl9YCxcbiAgICApXG4gIH1cbiAgZmV0Y2hDb2xsZWN0aW9uSGllcmFyY2h5KHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZywgcGFnZU51bWJlcjogbnVtYmVyID0gMCwgcGFnZVNpemU6IG51bWJlciA9IDEpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbGxlY3Rpb25IaWVyYXJjaHlSZXNwb25zZT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT0xMRUNUSU9OX0hJRVJBUkNIWShcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaWQsXG4gICAgICApfT9wYWdlTnVtYmVyPSR7cGFnZU51bWJlcn0mcGFnZVNpemU9JHtwYWdlU2l6ZX1gLFxuICAgIClcbiAgfVxuXG4gIGZldGNoQmxlbmRlZENvdXJzZSgpIHtcblxuICB9XG5cbiAgZmV0Y2hDb3Vyc2VCYXRjaGVzKHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oQVBJX0VORF9QT0lOVFMuQ09VUlNFX0JBVENIX0xJU1QsIHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIC8vIGZldGNoIGluZGl2aWR1YWwgYmF0Y2hcbiAgZmV0Y2hDb3Vyc2VCYXRjaChiYXRjaElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPVVJTRV9CQVRDSH0vJHtiYXRjaElkfWAsXG4gICAgKVxuICB9XG5cbiAgYXV0b0Fzc2lnbkJhdGNoQXBpKGlkZW50aWZpZXI6IGFueSwgbGFuZ3VhZ2U/OiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+IHtcbiAgICBsZXQgZW5yb2xsTGFuZzogc3RyaW5nID0gbGFuZ3VhZ2U/LmxhbmdJZCB8fCAnZW5nbGlzaCdcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPihgJHtBUElfRU5EX1BPSU5UUy5BVVRPX0FTU0lHTl9CQVRDSH0ke2lkZW50aWZpZXJ9P2xhbmd1YWdlPSR7ZW5yb2xsTGFuZ31gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHJldHJ5KDEpLFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5yZXN1bHQucmVzcG9uc2VcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG5cbiAgYXV0b0Vucm9sbExQKGlkZW50aWZpZXI6IGFueSk6IE9ic2VydmFibGU8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+KGAke0FQSV9FTkRfUE9JTlRTLkxFQVJORVJfUEFUSFdBWV9FTlJPTEwoaWRlbnRpZmllcil9YClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG5cbiAgYXV0b0Fzc2lnbkN1cmF0ZWRCYXRjaEFwaShyZXF1ZXN0OiBhbnksIHByb2dyYW1UeXBlOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBwcm9ncmFtVHlwZSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5NT0RFUkFURURfUFJPR1JBTSA/XG4gICAgQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNIDogQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQ1VSQVRFRF9CQVRDSFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPihgJHt1cmx9YCwgcmVxdWVzdClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGVucm9sbFVzZXJUb0JhdGNoKHJlcTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoQVBJX0VORF9QT0lOVFMuRU5ST0xMX0JBVENILCByZXEpXG4gICAgICAudG9Qcm9taXNlKClcbiAgfVxuXG4gIGVucm9sbEFuZFVuZW5yb2xsVXNlclRvQmF0Y2hXRihyZXE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgY29uc3QgdXJsOiBhbnkgPSB0eXBlID09PSAnV0lUSERSQVcnID8gQVBJX0VORF9QT0lOVFMuV0lUSERSQVdfQkFUQ0hfV0YgOiBBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0hfV0ZcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKVxuICB9XG5cbiAgZmV0Y2hCbGVuZGVkVXNlcldGKHJlcTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoQVBJX0VORF9QT0lOVFMuQkxFTkRFRF9VU0VSX1dGLCByZXEpXG4gICAgICAudG9Qcm9taXNlKClcbiAgfVxuXG4gIGZldGNoQmxlbmRlZFVzZXJDT1VOVChyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkJMRU5ERURfVVNFUl9DT1VOVCwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gIH1cblxuICBmZXRjaENvbnRlbnRMaWtlcyhjb250ZW50SWRzOiB7IGNvbnRlbnRfaWQ6IHN0cmluZ1tdIH0pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDx7IFtpZGVudGlmaWVyOiBzdHJpbmddOiBudW1iZXIgfT4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9MSUtFUywgY29udGVudElkcylcbiAgICAgIC50b1Byb21pc2UoKVxuICB9XG4gIGZldGNoQ29udGVudFJhdGluZ3MoY29udGVudElkczogeyBjb250ZW50SWRzOiBzdHJpbmdbXSB9KSB7XG4gICAgaWYgKGNvbnRlbnRJZHMpIHsgfVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5wb3N0KGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS9yYXRpbmdgLCBjb250ZW50SWRzKVxuICAgIC8vICAgLnRvUHJvbWlzZSgpXG4gICAgcmV0dXJuIG9mKCkudG9Qcm9taXNlKClcbiAgfVxuXG4gIGZldGNoQ29udGVudEhpc3RvcnkoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfSElTVE9SWX0vJHtjb250ZW50SWR9YCxcbiAgICApXG4gIH1cblxuICBmZXRjaENvbnRlbnRIaXN0b3J5VjIocmVxOiBOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhUmVxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBpc1ByZUFzc2Vzc21lbnQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnByZUFzc2Vzc21lbnRcbiAgICByZXEucmVxdWVzdC5maWVsZHMgPSBbJ3Byb2dyZXNzZGV0YWlscyddXG4gICAgaWYocmVxLnJlcXVlc3QuY291cnNlSWQgJiYgIWlzUHJlQXNzZXNzbWVudCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfSElTVE9SWVYyfS8ke3JlcS5yZXF1ZXN0LmNvdXJzZUlkfWAsIHJlcVxuICAgICkucGlwZShcbiAgICAgIG1hcCgockRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxhbmd1YWdlTWFwUHJvZ3Jlc3MgPSByRGF0YT8ucmVzdWx0Py5sYW5ndWFnZVByb2dyZXNzIHx8IHt9XG4gICAgICAgIHJldHVybiByRGF0YVxuICAgICAgfSksIC8vICAockRhdGEucmVzcG9uc2VEYXRhIHx8IFtdKS5tYXAoKHA6IGFueSkgPT4gcC5uYW1lKVxuICAgIClcbiAgICAvLyBkYXRhLnN1YnNjcmliZSgoc3Vic2NyaWJlRGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLm5leHQoeyByZXN1bWVEYXRhOiBzdWJzY3JpYmVEYXRhLnJlc3VsdC5jb250ZW50TGlzdCwgY291cnNlSWQ6IHJlcS5yZXF1ZXN0LmNvdXJzZUlkIH0pXG4gICAgLy8gICAgIH0pXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuICByZXR1cm4gb2YoKVxuICB9XG5cbiAgc2V0UHJvZ3JhbUNoaWxkUmVzdW1lRGF0YShjb250ZW50TGlzdDogYW55LCBjb3Vyc2VJZDogYW55KSB7XG4gICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICB0aGlzLnByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEubmV4dCh7IHJlc3VtZURhdGE6IGNvbnRlbnRMaXN0LCBjb3Vyc2VJZCB9KVxuICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgfVxuXG4gIGFzeW5jIGNvbnRpbnVlTGVhcm5pbmcoaWQ6IHN0cmluZywgY29sbGVjdGlvbklkPzogc3RyaW5nLCBjb2xsZWN0aW9uVHlwZT86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlICYmXG4gICAgICAgIGNvbGxlY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdwbGF5bGlzdCcpIHtcbiAgICAgICAgY29uc3QgcmVxQm9keSA9IHtcbiAgICAgICAgICBjb250ZXh0UGF0aElkOiBjb2xsZWN0aW9uSWQgPyBjb2xsZWN0aW9uSWQgOiBpZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBpZCxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgICAgICBjb250ZXh0RnVsbFBhdGg6IFtjb2xsZWN0aW9uSWQsIGlkXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBkYXRlQWNjZXNzZWQ6IERhdGUubm93KCksXG4gICAgICAgICAgY29udGV4dFR5cGU6ICdwbGF5bGlzdCcsXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlQ29udGludWVMZWFybmluZyhyZXFCb2R5KS50b1Byb21pc2UoKS5jYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXFCb2R5ID0ge1xuICAgICAgICAgIGNvbnRleHRQYXRoSWQ6IGNvbGxlY3Rpb25JZCA/IGNvbGxlY3Rpb25JZCA6IGlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IGlkLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pLFxuICAgICAgICAgIGRhdGVBY2Nlc3NlZDogRGF0ZS5ub3coKSxcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnNhdmVDb250aW51ZUxlYXJuaW5nKHJlcUJvZHkpLnRvUHJvbWlzZSgpLmNhdGNoKCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgc2F2ZUNvbnRpbnVlTGVhcm5pbmcoY29udGVudDogTnNDb250ZW50LklWaWV3ZXJDb250aW51ZUxlYXJuaW5nUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8gY29uc3QgdXJsID0gQVBJX0VORF9QT0lOVFMuVVNFUl9DT05USU5VRV9MRUFSTklOR1xuICAgIC8vIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgY29udGVudClcbiAgICBpZiAoY29udGVudCkge1xuXG4gICAgfVxuICAgIHJldHVybiBvZigpIGFzIGFueVxuICB9XG5cbiAgc2V0UzNDb29raWUoXG4gICAgX2NvbnRlbnRJZDogc3RyaW5nLFxuICAgIC8vIF9wYXRoOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cFxuICAgIC8vICAgLnBvc3QoQVBJX0VORF9QT0lOVFMuU0VUX1MzX0NPT0tJRSwgeyBjb250ZW50SWQgfSlcbiAgICAvLyAgIC5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpXG5cbiAgICByZXR1cm4gRU1QVFlcbiAgfVxuXG4gIHNldFMzSW1hZ2VDb29raWUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuU0VUX1MzX0lNQUdFX0NPT0tJRSwge30pLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSlcbiAgfVxuXG4gIGZldGNoTWFuaWZlc3QodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElfRU5EX1BPSU5UUy5GRVRDSF9NQU5JRkVTVCwgeyB1cmwgfSlcbiAgfVxuICBmZXRjaFdlYk1vZHVsZUNvbnRlbnQodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke0FQSV9FTkRfUE9JTlRTLkZFVENIX1dFQl9NT0RVTEVfRklMRVN9P3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh1cmwpfWApXG4gIH1cbiAgc2VhcmNoKHJlcTogTlNTZWFyY2guSVNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+IHtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJydcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TlNTZWFyY2guSVNlYXJjaEFwaVJlc3VsdD4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfVjUsIHtcbiAgICAgIHJlcXVlc3Q6IHJlcSxcbiAgICB9KVxuICB9XG4gIHNlYXJjaFJlZ2lvblJlY29tbWVuZGF0aW9uKFxuICAgIHJlcTogTlNTZWFyY2guSVNlYXJjaE9yZ1JlZ2lvblJlY29tbWVuZGF0aW9uUmVxdWVzdCxcbiAgKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnRTdHJpcE11bHRpcGxlLklDb250ZW50U3RyaXBSZXNwb25zZUFwaT4ge1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJ1xuICAgIHJlcS5wcmVMYWJlbFZhbHVlID1cbiAgICAgIChyZXEucHJlTGFiZWxWYWx1ZSB8fCAnJykgK1xuICAgICAgKCh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5jb3VudHJ5KSB8fCAnJylcbiAgICByZXEuZmlsdGVycyA9IHtcbiAgICAgIC4uLnJlcS5maWx0ZXJzLFxuICAgICAgbGFiZWxzOiBbcmVxLnByZUxhYmVsVmFsdWUgfHwgJyddLFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50U3RyaXBNdWx0aXBsZS5JQ29udGVudFN0cmlwUmVzcG9uc2VBcGk+KFxuICAgICAgQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfUkVHSU9OX1JFQ09NTUVOREFUSU9OLFxuICAgICAgeyByZXF1ZXN0OiByZXEgfSxcbiAgICApXG4gIH1cbiAgc2VhcmNoVjYocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBhcGlQYXRoID0gXy5nZXQocmVxLCAnYXBpLnBhdGgnKVxuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJ1xuICAgIGlmIChhcGlQYXRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGFwaVBhdGgpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y2LCByZXEpXG4gIH1cblxuICBzZWFyY2hSZWxhdGVkQ0JQVjYocmVxOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1JFTEFURURfQ0JQX1Y2LCByZXEpXG4gIH1cblxuICBmZXRjaENvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgcmF0aW5nOiBudW1iZXIgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgcmF0aW5nOiBudW1iZXIgfT4oYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWApXG4gIH1cbiAgZGVsZXRlQ29udGVudFJhdGluZyhjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWApXG4gIH1cbiAgYWRkQ29udGVudFJhdGluZyhjb250ZW50SWQ6IHN0cmluZywgZGF0YTogeyByYXRpbmc6IG51bWJlciB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX1JBVElOR30vJHtjb250ZW50SWR9YCwgZGF0YSlcbiAgfVxuXG4gIGdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpOiBOc0NvbnRlbnQuSUNvbnRlbnQge1xuICAgIGlmICghKGNvbnRlbnQuY2hpbGRyZW4gfHwgW10pLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTUFOREFUT1JZX0NPVVJTRV9HT0FMIHx8XG4gICAgICAoY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUgJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gY29udGVudC5jaGlsZHJlblswXVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rmlyc3RDaGlsZEluSGllcmFyY2h5KGNoaWxkKVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJBQ1RJQ0VfUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5GSU5BTF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OXG4gICAgKSB7XG4gICAgICByZXR1cm4gY29udGVudFxuICAgIH1cbiAgICBjb25zdCBmaXJzdENoaWxkID0gY29udGVudC5jaGlsZHJlblswXVxuICAgIGNvbnN0IHJlc3VsdENvbnRlbnQgPSB0aGlzLmdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShmaXJzdENoaWxkKVxuICAgIHJldHVybiByZXN1bHRDb250ZW50XG4gIH1cblxuICBnZXRSZWdpc3RyYXRpb25TdGF0dXMoc291cmNlOiBzdHJpbmcpOiBQcm9taXNlPHsgaGFzQWNjZXNzOiBib29sZWFuOyByZWdpc3RyYXRpb25Vcmw/OiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuUkVHSVNUUkFUSU9OX1NUQVRVU30vJHtzb3VyY2V9YCkudG9Qcm9taXNlKClcbiAgfVxuXG4gIGZldGNoQ29uZmlnKHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpXG4gIH1cblxuICBhZGRDZXJ0VGVtcGxhdGUoYm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfQUREX1RFTVBMQVRFfWAsIGJvZHkpXG4gIH1cblxuICBpc3N1ZUNlcnQoYm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ0VSVF9JU1NVRX1gLCBib2R5KVxuICB9XG4gIGRvd25sb2FkQ2VydChjZXJ0SWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ0VSVF9ET1dOTE9BRChjZXJ0SWQpfWApXG4gIH1cblxuICB0cmVuZGluZ0NvbnRlbnRTZWFyY2gocmVxOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJ1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnQuSUNvbnRlbnQ+KEFQSV9FTkRfUE9JTlRTLlRSRU5ESU5HX0NPTlRFTlRfU0VBUkNILCByZXEpXG4gIH1cblxuICBnZXRLYXJtYVBvaXRucyAobGltaXQ6IG51bWJlciwgb2Zmc2V0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuUkVBRF9LQVJNQVBPSU5UUywgeyBsaW1pdCwgb2Zmc2V0IH0pLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSlcbiAgfVxuICBmZXRjaFByb2dyYW1Db250ZW50KGNvbnRlbnRJZDogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgbGV0IHVybCA9ICcnXG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJylcbiAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudFtdPihcbiAgICAgICAgQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SRUFEKGNvbnRlbnRJZCksXG4gICAgICApXG4gICAgfVxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpKSB7XG4gICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9leHRlbmRlZC9jb250ZW50L3YxL3JlYWQvJHtjb250ZW50SWR9YFxuICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IGAvYXBpL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudFtdPih1cmwpXG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpKVxuICB9XG4gIGZldGNoRXh0ZXJuYWxDb250ZW50KGNvbnRlbnRJZDogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KEFQSV9FTkRfUE9JTlRTLkVYVF9DT05URU5UX1JFQUQoY29udGVudElkKSlcbiAgfVxuXG4gIGZldGNoRXh0ZXJuYWxQdWJsaWNDb250ZW50KHBhcnRlbmVyTmFtZTogYW55LCBjb250ZW50SWQ6IGFueSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oQVBJX0VORF9QT0lOVFMuRVhUX1BVQkxJQ19DT05URU5UKHBhcnRlbmVyTmFtZSwgY29udGVudElkKSlcbiAgfVxuXG4gIGZldGNoRXh0VXNlckNvbnRlbnRFbnJvbGwoY29udGVudElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KEFQSV9FTkRfUE9JTlRTLkVYVF9VU0VSX0NPVVJTRV9FTlJPTEwoY29udGVudElkKSlcbiAgfVxuXG4gIGV4dENvbnRlbnRFbnJvbGwgKHJlcXVlc3RCb2R5OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHtBUElfRU5EX1BPSU5UUy5FWFRfQ09OVEVOVF9FUk9MTH1gLCByZXF1ZXN0Qm9keSlcbiAgfVxuXG4gIGdldENvdXJzZUthcm1hUG9pbnRzKHJlcXVlc3Q6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9FTkRfUE9JTlRTLlJFQURfQ09VUlNFX0tBUk1BUE9JTlRTLCByZXF1ZXN0KVxuICB9XG5cbiAgY2xhaW1LYXJtYXBvaW50cyhyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5DTEFJTV9LQVJNQVBPSU5UUywgcmVxdWVzdClcbiAgfVxuXG4gIHVzZXJLYXJtYVBvaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5VU0VSX0tBUk1BX1BPSU5UUywge30pXG4gIH1cblxuICBnZXRFbnJvbGxlZERhdGEoZG9JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZW5yb2xsbWVudE1hcERhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdlbnJvbGxtZW50TWFwRGF0YScpIHx8ICd7fScpXG4gICAgY29uc3QgZW5yb2xsZWRDb3Vyc2VEYXRhID0gZW5yb2xsbWVudE1hcERhdGFbZG9JZF1cbiAgICByZXR1cm4gZW5yb2xsZWRDb3Vyc2VEYXRhXG4gIH1cblxuICBhc3luYyBnZXRSZXNvdXJzZUxpbmsoY29udGVudDogYW55KSB7XG4gICAgY29uc3QgZW5yb2xsZWRDb3Vyc2VEYXRhOiBhbnkgPSB0aGlzLmdldEVucm9sbGVkRGF0YShjb250ZW50LmlkZW50aWZpZXIpXG4gICAgaWYgKGVucm9sbGVkQ291cnNlRGF0YSkge1xuICAgICAgaWYgKGVucm9sbGVkQ291cnNlRGF0YSAmJiBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudCAmJiBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5zdGF0dXMgJiZcbiAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT09ICdyZXRpcmVkJykge1xuICAgICAgICBpZiAoZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSB8fFxuICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSAgTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5JTlZJVEVfT05MWV9QUk9HUkFNIHx8XG4gICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5Lk1PREVSQVRFRF9QUk9HUkFNIHx8XG4gICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSAgTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSAgTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQmF0Y2hJblByb2dyZXNzKGVucm9sbGVkQ291cnNlRGF0YS5iYXRjaCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJldHVybkRhdGEgPSAgYXdhaXQgdGhpcy5jaGVja0ZvckRhdGFUb0Zvcm1VcmwoY29udGVudCwgZW5yb2xsZWRDb3Vyc2VEYXRhKVxuICAgICAgICAgICAgcmV0dXJuIHJldHVybkRhdGFcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gIGF3YWl0IHRoaXMuY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQsIGVucm9sbGVkQ291cnNlRGF0YSlcbiAgICAgICAgcmV0dXJuIGRhdGFcbiAgICAgIH1cbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KVxuICB9XG4gIGFzeW5jIGNoZWNrRm9yRGF0YVRvRm9ybVVybChjb250ZW50OiBhbnksIGVucm9sbERhdGE6IGFueSkge1xuICAgIGxldCB1cmxEYXRhOiBhbnlcbiAgICBpZiAoZW5yb2xsRGF0YS5jb21wbGV0aW9uUGVyY2VudGFnZSAgPT09IDEwMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoZW5yb2xsRGF0YSlcbiAgICB9XG4gICAgLy8gaWYgKGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzICYmIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlKSB7XG4gICAgLy8gICBjb25zdCBtb2RpZnlFbnJvbGxEYXRhICA9IHtcbiAgICAvLyAgICAgLi4uZW5yb2xsRGF0YSxcbiAgICAvLyAgICAgaWRlbnRpZmllcjogZW5yb2xsRGF0YS5jb2xsZWN0aW9uSWQsXG4gICAgLy8gICAgIHByaW1hcnlDYXRlZ29yeTogZW5yb2xsRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcbiAgICAvLyAgICAgbmFtZTogZW5yb2xsRGF0YS5jb250ZW50Lm5hbWUsXG4gICAgLy8gICB9XG4gICAgLy8gICBpZiAobW9kaWZ5RW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCkge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkLCBlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscy5taW1lVHlwZSlcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmIChtb2RpZnlFbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCkge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yb2xsRGF0YS5scmNQcm9ncmVzc0RldGFpbHMubWltZVR5cGUpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgICAgaWYgKGVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQgfHwgZW5yb2xsRGF0YS5maXJzdENoaWxkSWQpIHtcbiAgICAgICAgY29uc3QgZG9JZCA9ICBlbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkIHx8IGVucm9sbERhdGEuZmlyc3RDaGlsZElkXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hQcm9ncmFtQ29udGVudChkb0lkKS50b1Byb21pc2UoKS50aGVuKGFzeW5jIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnREYXRhOiBhbnkgPSByZXMucmVzdWx0LmNvbnRlbnRcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmeUVucm9sbERhdGEgID0ge1xuICAgICAgICAgICAgICAuLi5lbnJvbGxEYXRhLFxuICAgICAgICAgICAgICBpZGVudGlmaWVyOiBlbnJvbGxEYXRhLmNvbGxlY3Rpb25JZCxcbiAgICAgICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBlbnJvbGxEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgICAgICAgICBuYW1lOiBlbnJvbGxEYXRhLmNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybERhdGEgPSAgdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLCBjb250ZW50RGF0YS5pZGVudGlmaWVyLCBjb250ZW50RGF0YS5taW1lVHlwZSlcbiAgICAgICAgICAgIGlmICh1cmxEYXRhKSB7XG4gICAgICAgICAgICAgIHJldHVybiB1cmxEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhID8gcmVzcG9uc2VEYXRhIDogdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KVxuICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KVxuXG4gIH1cblxuICBnZXRSZXNvdXJzZURhdGFXaXRoRGF0YShjb250ZW50OiBhbnksIHJlc291cnNlSWQ6IGFueSwgbWltZVR5cGU6IGFueSkge1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBjb25zdCB1cmwgPSB2aWV3ZXJSb3V0ZUdlbmVyYXRvcihcbiAgICAgICAgcmVzb3Vyc2VJZCxcbiAgICAgICAgbWltZVR5cGUsXG4gICAgICAgIGNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgJ0NvdXJzZScsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICAnTGVhcm5pbmcgUmVzb3VyY2UnLFxuICAgICAgICBjb250ZW50LmJhdGNoSWQsXG4gICAgICAgIGNvbnRlbnQubmFtZSxcbiAgICAgIClcbiAgICAgIHJldHVybiB1cmxcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudClcbiAgfVxuICBnb3RvVG9jUGFnZShjb250ZW50OiBhbnkpIHtcbiAgICBjb25zdCB1cmxEYXRhOiBhbnkgPSB7XG4gICAgICB1cmw6IGAvYXBwL3RvYy8ke2NvbnRlbnQuaWRlbnRpZmllciA/IGNvbnRlbnQuaWRlbnRpZmllciA6IGNvbnRlbnQuY29sbGVjdGlvbklkfS9vdmVydmlld2AsXG4gICAgICBxdWVyeVBhcmFtczogeyBiYXRjaElkOiBjb250ZW50LmJhdGNoSWQgfSxcbiAgICB9XG4gICAgaWYgKGNvbnRlbnQuZW5kRGF0ZSkge1xuICAgICAgdXJsRGF0YS5xdWVyeVBhcmFtcyA9IHsgLi4udXJsRGF0YS5xdWVyeVBhcmFtcywgcGxhblR5cGU6ICdjYlBsYW4nLCBlbmREYXRlOiBjb250ZW50LmVuZERhdGUgfVxuICAgIH1cbiAgICBpZiAoY29udGVudC5jb250ZW50SWQgJiYgY29udGVudC5jb250ZW50SWQuaW5jbHVkZXMoJ2V4dF8nKSkge1xuICAgICAgdXJsRGF0YS51cmwgPSBgL2FwcC90b2MvZXh0LyR7Y29udGVudC5jb250ZW50SWR9YFxuICAgICAgdXJsRGF0YS5xdWVyeVBhcmFtcyA9IHt9XG4gICAgfVxuICAgIHJldHVybiB1cmxEYXRhXG4gIH1cbiAgaXNCYXRjaEluUHJvZ3Jlc3MoYmF0Y2hEYXRhOiBhbnkpIHtcbiAgICAvLyBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudFsnYmF0Y2hlcyddKSB7XG4gICAgLy8gY29uc3QgYmF0Y2hlcyA9IHRoaXMuY29udGVudFsnYmF0Y2hlcyddIGFzIE5zQ29udGVudC5JQmF0Y2hcbiAgICBpZiAoYmF0Y2hEYXRhICYmIGJhdGNoRGF0YS5lbmREYXRlKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGJhdGNoRGF0YS5zdGFydERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICBjb25zdCBlbmREYXRlID0gYmF0Y2hEYXRhLmVuZERhdGUgPyBtb21lbnQoYmF0Y2hEYXRhLmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogbm93XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIC8vIGJhdGNoLnN0YXR1cyAmJlxuICAgICAgICAgICAgbW9tZW50KHN0YXJ0RGF0ZSkuaXNTYW1lT3JCZWZvcmUobm93KVxuICAgICAgICAgICAgJiYgbW9tZW50KGVuZERhdGUpLmlzU2FtZU9yQWZ0ZXIobm93KVxuICAgICAgICAgIClcbiAgICB9IHJldHVybiB0cnVlXG4gIH1cblxuICBnZXRQcmVBc3Nlc3NtZW50Rmlyc3RDaGlsZEluSGllcmFyY2h5KGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCk6IE5zQ29udGVudC5JQ29udGVudCB7XG4gICAgaWYgKCEoY29udGVudC5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY29udGVudFxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBST0dSQU0gJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSkgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5NQU5EQVRPUllfQ09VUlNFX0dPQUwgfHxcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpIHx8XG4gICAgICAoY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKVxuICAgICkge1xuICAgICAgY29uc3QgY2hpbGQgPSBjb250ZW50LmNoaWxkcmVuWzBdXG4gICAgICByZXR1cm4gdGhpcy5nZXRQcmVBc3Nlc3NtZW50Rmlyc3RDaGlsZEluSGllcmFyY2h5KGNoaWxkKVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJBQ1RJQ0VfUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5GSU5BTF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OXG4gICAgKSB7XG4gICAgICByZXR1cm4gY29udGVudFxuICAgIH1cbiAgICBjb25zdCBmaXJzdENoaWxkID0gY29udGVudC5jaGlsZHJlblswXVxuICAgIGNvbnN0IHJlc3VsdENvbnRlbnQgPSB0aGlzLmdldFByZUFzc2Vzc21lbnRGaXJzdENoaWxkSW5IaWVyYXJjaHkoZmlyc3RDaGlsZClcbiAgICByZXR1cm4gcmVzdWx0Q29udGVudFxuICB9XG5cbiAgZmV0Y2hIaWVyYXJjaHlDb250ZW50KGNvbnRlbnRJZDpzdHJpbmcsIGhpZXJhcmNoeVR5cGU6ICdhbGwnIHwgJ21pbmltYWwnIHwgJ2RldGFpbCcgPSAnZGV0YWlsJykge1xuICAgIGxldCB1cmwgPSAnJ1xuICAgIGNvbnN0IGZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3B1YmxpYy8nKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnJnByZXZpZXc9dHJ1ZScpXG4gICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWBcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJylcbiAgICAgIGlmIChmb3JjcmVhdG9yKSB7XG4gICAgICAgIHVybCA9IGBhcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvaGllcmFyY2h5LyR7Y29udGVudElkfT9tb2RlPWVkaXRgXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuICB9XG5cbiAgZmV0Y2hDb250ZW50RGF0YShjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50PiB7XG4gICAgbGV0IHVybCA9ICcnXG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJylcbiAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4oXG4gICAgICAgIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VkaXRNb2RlPXRydWUnKSAmJiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnX3JjJykpIHtcbiAgICAgIHVybCA9IGAvYXBpcy9wcm94aWVzL3Y4L2V4dGVuZGVkL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWBcbiAgICB9XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybClcbiAgfVxuXG4gIGdldFVzZXJFbnJvbGxtZW50RGF0YSh1c2VySWQ6IHN0cmluZywgcmVxdWVzdDogYW55KTogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueTsgZXJyb3I6IGFueSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLkVOUk9MTF9DT05URU5UX0RBVEEodXNlcklkKSwgcmVxdWVzdCkucGlwZShcbiAgICAgIG1hcCgockRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSByRGF0YT8ucmVzdWx0ID8/IG51bGw7XG4gICAgICAgIHJldHVybiB7IGRhdGE6IHJlc3VsdCwgZXJyb3I6IG51bGwgfTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gb2YoeyBkYXRhOiBudWxsLCBlcnJvciB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19