vcomply-workflow-engine 2.6.128 → 2.6.129

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 (879) hide show
  1. package/bundles/vcomply-workflow-engine.umd.js +3 -1
  2. package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
  3. package/esm2015/lib/workflow-policy/workflow-policy.component.js +4 -2
  4. package/fesm2015/vcomply-workflow-engine.js +3 -1
  5. package/fesm2015/vcomply-workflow-engine.js.map +1 -1
  6. package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts +5 -0
  7. package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts.__ivy_ngcc_bak +83 -0
  8. package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts.map +1 -0
  9. package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +5 -0
  10. package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts.__ivy_ngcc_bak +35 -0
  11. package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts.map +1 -0
  12. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +5 -0
  13. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts.__ivy_ngcc_bak +171 -0
  14. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts.map +1 -0
  15. package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +5 -0
  16. package/lib/add-multiple-risk/add-multiple-risk.component.d.ts.__ivy_ngcc_bak +65 -0
  17. package/lib/add-multiple-risk/add-multiple-risk.component.d.ts.map +1 -0
  18. package/lib/confirmation-alert/confirmation-alert.component.d.ts +5 -0
  19. package/lib/confirmation-alert/confirmation-alert.component.d.ts.__ivy_ngcc_bak +10 -0
  20. package/lib/confirmation-alert/confirmation-alert.component.d.ts.map +1 -0
  21. package/lib/create-documents/create-documents.component.d.ts +5 -0
  22. package/lib/create-documents/create-documents.component.d.ts.__ivy_ngcc_bak +36 -0
  23. package/lib/create-documents/create-documents.component.d.ts.map +1 -0
  24. package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts +5 -0
  25. package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts.__ivy_ngcc_bak +14 -0
  26. package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts.map +1 -0
  27. package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +5 -0
  28. package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.__ivy_ngcc_bak +11 -0
  29. package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.map +1 -0
  30. package/lib/formgroup/cs-radio/cs-radio.component.d.ts +5 -0
  31. package/lib/formgroup/cs-radio/cs-radio.component.d.ts.__ivy_ngcc_bak +13 -0
  32. package/lib/formgroup/cs-radio/cs-radio.component.d.ts.map +1 -0
  33. package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts +5 -0
  34. package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts.__ivy_ngcc_bak +5 -0
  35. package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts.map +1 -0
  36. package/lib/formgroup/cs-select/cs-select.component.d.ts +5 -0
  37. package/lib/formgroup/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +31 -0
  38. package/lib/formgroup/cs-select/cs-select.component.d.ts.map +1 -0
  39. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +5 -0
  40. package/lib/formgroup/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +12 -0
  41. package/lib/formgroup/cs-switch/cs-switch.component.d.ts.map +1 -0
  42. package/lib/formgroup/formgroup.module.d.ts +15 -0
  43. package/lib/formgroup/formgroup.module.d.ts.__ivy_ngcc_bak +2 -0
  44. package/lib/formgroup/formgroup.module.d.ts.map +1 -0
  45. package/lib/formgroup/pipes/pascal.pipe.d.ts +5 -0
  46. package/lib/formgroup/pipes/pascal.pipe.d.ts.__ivy_ngcc_bak +4 -0
  47. package/lib/formgroup/pipes/pascal.pipe.d.ts.map +1 -0
  48. package/lib/formgroup/select/cs-option/cs-option.component.d.ts +5 -0
  49. package/lib/formgroup/select/cs-option/cs-option.component.d.ts.__ivy_ngcc_bak +15 -0
  50. package/lib/formgroup/select/cs-option/cs-option.component.d.ts.map +1 -0
  51. package/lib/formgroup/select/cs-select/cs-select.component.d.ts +5 -0
  52. package/lib/formgroup/select/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +34 -0
  53. package/lib/formgroup/select/cs-select/cs-select.component.d.ts.map +1 -0
  54. package/lib/formgroup/select/select.module.d.ts +11 -0
  55. package/lib/formgroup/select/select.module.d.ts.__ivy_ngcc_bak +2 -0
  56. package/lib/formgroup/select/select.module.d.ts.map +1 -0
  57. package/lib/formgroup/select/select.service.d.ts +4 -0
  58. package/lib/formgroup/select/select.service.d.ts.__ivy_ngcc_bak +15 -0
  59. package/lib/formgroup/select/select.service.d.ts.map +1 -0
  60. package/lib/log-an-issue/log-an-issue.component.d.ts +5 -0
  61. package/lib/log-an-issue/log-an-issue.component.d.ts.__ivy_ngcc_bak +218 -0
  62. package/lib/log-an-issue/log-an-issue.component.d.ts.map +1 -0
  63. package/lib/more-option/more-option.component.d.ts +5 -0
  64. package/lib/more-option/more-option.component.d.ts.__ivy_ngcc_bak +25 -0
  65. package/lib/more-option/more-option.component.d.ts.map +1 -0
  66. package/lib/pipes/data-type.pipe.d.ts +5 -0
  67. package/lib/pipes/data-type.pipe.d.ts.__ivy_ngcc_bak +4 -0
  68. package/lib/pipes/data-type.pipe.d.ts.map +1 -0
  69. package/lib/pipes/list-mapper.pipe.d.ts +5 -0
  70. package/lib/pipes/list-mapper.pipe.d.ts.__ivy_ngcc_bak +4 -0
  71. package/lib/pipes/list-mapper.pipe.d.ts.map +1 -0
  72. package/lib/pipes/search.pipe.d.ts +5 -0
  73. package/lib/pipes/search.pipe.d.ts.__ivy_ngcc_bak +4 -0
  74. package/lib/pipes/search.pipe.d.ts.map +1 -0
  75. package/lib/pipes/space-breaker.pipe.d.ts +5 -0
  76. package/lib/pipes/space-breaker.pipe.d.ts.__ivy_ngcc_bak +4 -0
  77. package/lib/pipes/space-breaker.pipe.d.ts.map +1 -0
  78. package/lib/pipes/uncategorized-filter.pipe.d.ts +5 -0
  79. package/lib/pipes/uncategorized-filter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  80. package/lib/pipes/uncategorized-filter.pipe.d.ts.map +1 -0
  81. package/lib/pipes/user-filter.pipe.d.ts +5 -0
  82. package/lib/pipes/user-filter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  83. package/lib/pipes/user-filter.pipe.d.ts.map +1 -0
  84. package/lib/services/bulk-upload.service.d.ts +4 -0
  85. package/lib/services/bulk-upload.service.d.ts.__ivy_ngcc_bak +6 -0
  86. package/lib/services/bulk-upload.service.d.ts.map +1 -0
  87. package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts +5 -0
  88. package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts.__ivy_ngcc_bak +117 -0
  89. package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts.map +1 -0
  90. package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts +5 -0
  91. package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts.__ivy_ngcc_bak +19 -0
  92. package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts.map +1 -0
  93. package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts +5 -0
  94. package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts.__ivy_ngcc_bak +10 -0
  95. package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts.map +1 -0
  96. package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts +5 -0
  97. package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts.__ivy_ngcc_bak +22 -0
  98. package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts.map +1 -0
  99. package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts +5 -0
  100. package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts.__ivy_ngcc_bak +46 -0
  101. package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts.map +1 -0
  102. package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts +26 -0
  103. package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts.__ivy_ngcc_bak +2 -0
  104. package/lib/sharedComponents/assessment-editor/components/build/build.module.d.ts.map +1 -0
  105. package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts +5 -0
  106. package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts.__ivy_ngcc_bak +11 -0
  107. package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts.map +1 -0
  108. package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts +5 -0
  109. package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts.__ivy_ngcc_bak +16 -0
  110. package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts.map +1 -0
  111. package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts +5 -0
  112. package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts.__ivy_ngcc_bak +6 -0
  113. package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts.map +1 -0
  114. package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts +5 -0
  115. package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts.__ivy_ngcc_bak +11 -0
  116. package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts.map +1 -0
  117. package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +5 -0
  118. package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts.__ivy_ngcc_bak +5 -0
  119. package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts.map +1 -0
  120. package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts +5 -0
  121. package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts.__ivy_ngcc_bak +5 -0
  122. package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts.map +1 -0
  123. package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts +5 -0
  124. package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts.__ivy_ngcc_bak +5 -0
  125. package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts.map +1 -0
  126. package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts +5 -0
  127. package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts.__ivy_ngcc_bak +11 -0
  128. package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts.map +1 -0
  129. package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts +5 -0
  130. package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts.__ivy_ngcc_bak +5 -0
  131. package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts.map +1 -0
  132. package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts +5 -0
  133. package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts.__ivy_ngcc_bak +5 -0
  134. package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts.map +1 -0
  135. package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts +5 -0
  136. package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts.__ivy_ngcc_bak +5 -0
  137. package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts.map +1 -0
  138. package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts +5 -0
  139. package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts.__ivy_ngcc_bak +9 -0
  140. package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts.map +1 -0
  141. package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +5 -0
  142. package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts.__ivy_ngcc_bak +5 -0
  143. package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts.map +1 -0
  144. package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts +5 -0
  145. package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts.__ivy_ngcc_bak +12 -0
  146. package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts.map +1 -0
  147. package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +5 -0
  148. package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts.__ivy_ngcc_bak +5 -0
  149. package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts.map +1 -0
  150. package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts +5 -0
  151. package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts.__ivy_ngcc_bak +57 -0
  152. package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts.map +1 -0
  153. package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +5 -0
  154. package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts.__ivy_ngcc_bak +24 -0
  155. package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts.map +1 -0
  156. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts +5 -0
  157. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts.__ivy_ngcc_bak +8 -0
  158. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts.map +1 -0
  159. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts +5 -0
  160. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts.__ivy_ngcc_bak +5 -0
  161. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts.map +1 -0
  162. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts +5 -0
  163. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts.__ivy_ngcc_bak +14 -0
  164. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts.map +1 -0
  165. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts +5 -0
  166. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts.__ivy_ngcc_bak +9 -0
  167. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts.map +1 -0
  168. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +5 -0
  169. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts.__ivy_ngcc_bak +5 -0
  170. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts.map +1 -0
  171. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts +5 -0
  172. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts.__ivy_ngcc_bak +8 -0
  173. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts.map +1 -0
  174. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts +5 -0
  175. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts.__ivy_ngcc_bak +5 -0
  176. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts.map +1 -0
  177. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts +24 -0
  178. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts.__ivy_ngcc_bak +2 -0
  179. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.d.ts.map +1 -0
  180. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts +5 -0
  181. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts.__ivy_ngcc_bak +5 -0
  182. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts.map +1 -0
  183. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts +5 -0
  184. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts.__ivy_ngcc_bak +9 -0
  185. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts.map +1 -0
  186. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts +5 -0
  187. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts.__ivy_ngcc_bak +5 -0
  188. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts.map +1 -0
  189. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts +5 -0
  190. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts.__ivy_ngcc_bak +5 -0
  191. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts.map +1 -0
  192. package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts +5 -0
  193. package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts.__ivy_ngcc_bak +23 -0
  194. package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts.map +1 -0
  195. package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts +5 -0
  196. package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts.__ivy_ngcc_bak +8 -0
  197. package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts.map +1 -0
  198. package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts +5 -0
  199. package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts.__ivy_ngcc_bak +4 -0
  200. package/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.d.ts.map +1 -0
  201. package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts +5 -0
  202. package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts.__ivy_ngcc_bak +4 -0
  203. package/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.d.ts.map +1 -0
  204. package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts +5 -0
  205. package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  206. package/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.d.ts.map +1 -0
  207. package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts +5 -0
  208. package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  209. package/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.d.ts.map +1 -0
  210. package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts +5 -0
  211. package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  212. package/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.d.ts.map +1 -0
  213. package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts +5 -0
  214. package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts.__ivy_ngcc_bak +4 -0
  215. package/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.d.ts.map +1 -0
  216. package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts +5 -0
  217. package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts.__ivy_ngcc_bak +4 -0
  218. package/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.d.ts.map +1 -0
  219. package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts +5 -0
  220. package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts.__ivy_ngcc_bak +8 -0
  221. package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts.map +1 -0
  222. package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts +5 -0
  223. package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts.__ivy_ngcc_bak +5 -0
  224. package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts.map +1 -0
  225. package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts +5 -0
  226. package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts.__ivy_ngcc_bak +11 -0
  227. package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts.map +1 -0
  228. package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts +5 -0
  229. package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts.__ivy_ngcc_bak +8 -0
  230. package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts.map +1 -0
  231. package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts +5 -0
  232. package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts.__ivy_ngcc_bak +8 -0
  233. package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts.map +1 -0
  234. package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts +5 -0
  235. package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts.__ivy_ngcc_bak +5 -0
  236. package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts.map +1 -0
  237. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts +5 -0
  238. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts.__ivy_ngcc_bak +7 -0
  239. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts.map +1 -0
  240. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts +5 -0
  241. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts.__ivy_ngcc_bak +7 -0
  242. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts.map +1 -0
  243. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts +5 -0
  244. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts.__ivy_ngcc_bak +8 -0
  245. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts.map +1 -0
  246. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts +5 -0
  247. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts.__ivy_ngcc_bak +5 -0
  248. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts.map +1 -0
  249. package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts +5 -0
  250. package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts.__ivy_ngcc_bak +5 -0
  251. package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts.map +1 -0
  252. package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts +5 -0
  253. package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts.__ivy_ngcc_bak +6 -0
  254. package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts.map +1 -0
  255. package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts +5 -0
  256. package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts.__ivy_ngcc_bak +5 -0
  257. package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts.map +1 -0
  258. package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts +5 -0
  259. package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts.__ivy_ngcc_bak +5 -0
  260. package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts.map +1 -0
  261. package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts +5 -0
  262. package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts.__ivy_ngcc_bak +27 -0
  263. package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts.map +1 -0
  264. package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts +33 -0
  265. package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts.__ivy_ngcc_bak +2 -0
  266. package/lib/sharedComponents/assessment-editor/components/preview/preview.module.d.ts.map +1 -0
  267. package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +5 -0
  268. package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts.__ivy_ngcc_bak +5 -0
  269. package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts.map +1 -0
  270. package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +5 -0
  271. package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts.__ivy_ngcc_bak +5 -0
  272. package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts.map +1 -0
  273. package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts +5 -0
  274. package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts.__ivy_ngcc_bak +6 -0
  275. package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts.map +1 -0
  276. package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts +5 -0
  277. package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts.__ivy_ngcc_bak +28 -0
  278. package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts.map +1 -0
  279. package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts +5 -0
  280. package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts.__ivy_ngcc_bak +11 -0
  281. package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts.map +1 -0
  282. package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts +5 -0
  283. package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts.__ivy_ngcc_bak +16 -0
  284. package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts.map +1 -0
  285. package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts +5 -0
  286. package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts.__ivy_ngcc_bak +47 -0
  287. package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts.map +1 -0
  288. package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts +5 -0
  289. package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts.__ivy_ngcc_bak +35 -0
  290. package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts.map +1 -0
  291. package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts +5 -0
  292. package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts.__ivy_ngcc_bak +8 -0
  293. package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts.map +1 -0
  294. package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +5 -0
  295. package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts.__ivy_ngcc_bak +15 -0
  296. package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts.map +1 -0
  297. package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts +5 -0
  298. package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts.__ivy_ngcc_bak +66 -0
  299. package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts.map +1 -0
  300. package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts +45 -0
  301. package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts.__ivy_ngcc_bak +2 -0
  302. package/lib/sharedComponents/assessment-editor/create-assessment.module.d.ts.map +1 -0
  303. package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts +4 -0
  304. package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts.__ivy_ngcc_bak +185 -0
  305. package/lib/sharedComponents/assessment-editor/services/editor.service.d.ts.map +1 -0
  306. package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts +4 -0
  307. package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts.__ivy_ngcc_bak +4 -0
  308. package/lib/sharedComponents/assessment-editor/services/result-criteria.service.d.ts.map +1 -0
  309. package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts +4 -0
  310. package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts.__ivy_ngcc_bak +32 -0
  311. package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts.map +1 -0
  312. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts +5 -0
  313. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  314. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts.map +1 -0
  315. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts +5 -0
  316. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  317. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts.map +1 -0
  318. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +5 -0
  319. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts.__ivy_ngcc_bak +81 -0
  320. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts.map +1 -0
  321. package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts +4 -0
  322. package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts.__ivy_ngcc_bak +10 -0
  323. package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts.map +1 -0
  324. package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts +24 -0
  325. package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts.__ivy_ngcc_bak +2 -0
  326. package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts.map +1 -0
  327. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts +5 -0
  328. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts.__ivy_ngcc_bak +9 -0
  329. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts.map +1 -0
  330. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts +5 -0
  331. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts.__ivy_ngcc_bak +12 -0
  332. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts.map +1 -0
  333. package/lib/sharedComponents/assessment-preview/device/device.component.d.ts +5 -0
  334. package/lib/sharedComponents/assessment-preview/device/device.component.d.ts.__ivy_ngcc_bak +7 -0
  335. package/lib/sharedComponents/assessment-preview/device/device.component.d.ts.map +1 -0
  336. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts +5 -0
  337. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts.__ivy_ngcc_bak +7 -0
  338. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts.map +1 -0
  339. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts +5 -0
  340. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts.__ivy_ngcc_bak +7 -0
  341. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts.map +1 -0
  342. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +5 -0
  343. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts.__ivy_ngcc_bak +11 -0
  344. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts.map +1 -0
  345. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts +5 -0
  346. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts.__ivy_ngcc_bak +5 -0
  347. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts.map +1 -0
  348. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts +5 -0
  349. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts.__ivy_ngcc_bak +6 -0
  350. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts.map +1 -0
  351. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts +5 -0
  352. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts.__ivy_ngcc_bak +9 -0
  353. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts.map +1 -0
  354. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts +5 -0
  355. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts.__ivy_ngcc_bak +9 -0
  356. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts.map +1 -0
  357. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts +5 -0
  358. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts.__ivy_ngcc_bak +7 -0
  359. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts.map +1 -0
  360. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts +5 -0
  361. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts.__ivy_ngcc_bak +6 -0
  362. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts.map +1 -0
  363. package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +5 -0
  364. package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts.__ivy_ngcc_bak +19 -0
  365. package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts.map +1 -0
  366. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +5 -0
  367. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts.__ivy_ngcc_bak +19 -0
  368. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts.map +1 -0
  369. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +5 -0
  370. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts.__ivy_ngcc_bak +17 -0
  371. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts.map +1 -0
  372. package/lib/sharedComponents/category-list/category-list.component.d.ts +5 -0
  373. package/lib/sharedComponents/category-list/category-list.component.d.ts.__ivy_ngcc_bak +19 -0
  374. package/lib/sharedComponents/category-list/category-list.component.d.ts.map +1 -0
  375. package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +5 -0
  376. package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts.__ivy_ngcc_bak +28 -0
  377. package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts.map +1 -0
  378. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +5 -0
  379. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts.__ivy_ngcc_bak +22 -0
  380. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts.map +1 -0
  381. package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts +5 -0
  382. package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts.__ivy_ngcc_bak +35 -0
  383. package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts.map +1 -0
  384. package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts +5 -0
  385. package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts.__ivy_ngcc_bak +8 -0
  386. package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts.map +1 -0
  387. package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts +5 -0
  388. package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts.__ivy_ngcc_bak +38 -0
  389. package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts.map +1 -0
  390. package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts +5 -0
  391. package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts.__ivy_ngcc_bak +15 -0
  392. package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts.map +1 -0
  393. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts +5 -0
  394. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts.__ivy_ngcc_bak +16 -0
  395. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts.map +1 -0
  396. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts +5 -0
  397. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts.__ivy_ngcc_bak +5 -0
  398. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts.map +1 -0
  399. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts +5 -0
  400. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts.__ivy_ngcc_bak +33 -0
  401. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts.map +1 -0
  402. package/lib/sharedComponents/directive/autofocus.directive.d.ts +5 -0
  403. package/lib/sharedComponents/directive/autofocus.directive.d.ts.__ivy_ngcc_bak +6 -0
  404. package/lib/sharedComponents/directive/autofocus.directive.d.ts.map +1 -0
  405. package/lib/sharedComponents/directive/conditional-focus.directive.d.ts +5 -0
  406. package/lib/sharedComponents/directive/conditional-focus.directive.d.ts.__ivy_ngcc_bak +9 -0
  407. package/lib/sharedComponents/directive/conditional-focus.directive.d.ts.map +1 -0
  408. package/lib/sharedComponents/directive/drag-drop.directive.d.ts +5 -0
  409. package/lib/sharedComponents/directive/drag-drop.directive.d.ts.__ivy_ngcc_bak +8 -0
  410. package/lib/sharedComponents/directive/drag-drop.directive.d.ts.map +1 -0
  411. package/lib/sharedComponents/directive/input-trim.directive.d.ts +5 -0
  412. package/lib/sharedComponents/directive/input-trim.directive.d.ts.__ivy_ngcc_bak +3 -0
  413. package/lib/sharedComponents/directive/input-trim.directive.d.ts.map +1 -0
  414. package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts +5 -0
  415. package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts.__ivy_ngcc_bak +9 -0
  416. package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts.map +1 -0
  417. package/lib/sharedComponents/document-section/document-section.component.d.ts +5 -0
  418. package/lib/sharedComponents/document-section/document-section.component.d.ts.__ivy_ngcc_bak +43 -0
  419. package/lib/sharedComponents/document-section/document-section.component.d.ts.map +1 -0
  420. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +5 -0
  421. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts.__ivy_ngcc_bak +34 -0
  422. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts.map +1 -0
  423. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +5 -0
  424. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts.__ivy_ngcc_bak +41 -0
  425. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts.map +1 -0
  426. package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts +5 -0
  427. package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts.__ivy_ngcc_bak +13 -0
  428. package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts.map +1 -0
  429. package/lib/sharedComponents/framework-list/framework-list.component.d.ts +5 -0
  430. package/lib/sharedComponents/framework-list/framework-list.component.d.ts.__ivy_ngcc_bak +108 -0
  431. package/lib/sharedComponents/framework-list/framework-list.component.d.ts.map +1 -0
  432. package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts +5 -0
  433. package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts.__ivy_ngcc_bak +14 -0
  434. package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts.map +1 -0
  435. package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts +5 -0
  436. package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  437. package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts.map +1 -0
  438. package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts +5 -0
  439. package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts.__ivy_ngcc_bak +26 -0
  440. package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts.map +1 -0
  441. package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts +5 -0
  442. package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts.__ivy_ngcc_bak +37 -0
  443. package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts.map +1 -0
  444. package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts +5 -0
  445. package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts.__ivy_ngcc_bak +35 -0
  446. package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts.map +1 -0
  447. package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts +5 -0
  448. package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts.__ivy_ngcc_bak +10 -0
  449. package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts.map +1 -0
  450. package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +5 -0
  451. package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts.__ivy_ngcc_bak +29 -0
  452. package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts.map +1 -0
  453. package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts +5 -0
  454. package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts.__ivy_ngcc_bak +30 -0
  455. package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts.map +1 -0
  456. package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts +5 -0
  457. package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts.__ivy_ngcc_bak +19 -0
  458. package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts.map +1 -0
  459. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +5 -0
  460. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts.__ivy_ngcc_bak +36 -0
  461. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts.map +1 -0
  462. package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts +5 -0
  463. package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts.__ivy_ngcc_bak +33 -0
  464. package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts.map +1 -0
  465. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +5 -0
  466. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts.__ivy_ngcc_bak +29 -0
  467. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts.map +1 -0
  468. package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts +5 -0
  469. package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts.__ivy_ngcc_bak +32 -0
  470. package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts.map +1 -0
  471. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +5 -0
  472. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts.__ivy_ngcc_bak +19 -0
  473. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts.map +1 -0
  474. package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts +5 -0
  475. package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts.__ivy_ngcc_bak +32 -0
  476. package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts.map +1 -0
  477. package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts +5 -0
  478. package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts.__ivy_ngcc_bak +10 -0
  479. package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts.map +1 -0
  480. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +5 -0
  481. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts.__ivy_ngcc_bak +59 -0
  482. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts.map +1 -0
  483. package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts +5 -0
  484. package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts.__ivy_ngcc_bak +22 -0
  485. package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts.map +1 -0
  486. package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts +5 -0
  487. package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts.__ivy_ngcc_bak +32 -0
  488. package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts.map +1 -0
  489. package/lib/sharedComponents/frequency/frequency.service.d.ts +4 -0
  490. package/lib/sharedComponents/frequency/frequency.service.d.ts.__ivy_ngcc_bak +46 -0
  491. package/lib/sharedComponents/frequency/frequency.service.d.ts.map +1 -0
  492. package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +5 -0
  493. package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts.__ivy_ngcc_bak +29 -0
  494. package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts.map +1 -0
  495. package/lib/sharedComponents/list-loader/list-loader.component.d.ts +5 -0
  496. package/lib/sharedComponents/list-loader/list-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  497. package/lib/sharedComponents/list-loader/list-loader.component.d.ts.map +1 -0
  498. package/lib/sharedComponents/no-data/no-data.component.d.ts +5 -0
  499. package/lib/sharedComponents/no-data/no-data.component.d.ts.__ivy_ngcc_bak +14 -0
  500. package/lib/sharedComponents/no-data/no-data.component.d.ts.map +1 -0
  501. package/lib/sharedComponents/no-data/no-data.module.d.ts +8 -0
  502. package/lib/sharedComponents/no-data/no-data.module.d.ts.__ivy_ngcc_bak +2 -0
  503. package/lib/sharedComponents/no-data/no-data.module.d.ts.map +1 -0
  504. package/lib/sharedComponents/owner-list/owner-list.component.d.ts +5 -0
  505. package/lib/sharedComponents/owner-list/owner-list.component.d.ts.__ivy_ngcc_bak +36 -0
  506. package/lib/sharedComponents/owner-list/owner-list.component.d.ts.map +1 -0
  507. package/lib/sharedComponents/pipes/array-filter.pipe.d.ts +5 -0
  508. package/lib/sharedComponents/pipes/array-filter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  509. package/lib/sharedComponents/pipes/array-filter.pipe.d.ts.map +1 -0
  510. package/lib/sharedComponents/pipes/filterPipe.d.ts +5 -0
  511. package/lib/sharedComponents/pipes/filterPipe.d.ts.__ivy_ngcc_bak +4 -0
  512. package/lib/sharedComponents/pipes/filterPipe.d.ts.map +1 -0
  513. package/lib/sharedComponents/pipes/short-merge.pipe.d.ts +5 -0
  514. package/lib/sharedComponents/pipes/short-merge.pipe.d.ts.__ivy_ngcc_bak +4 -0
  515. package/lib/sharedComponents/pipes/short-merge.pipe.d.ts.map +1 -0
  516. package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts +5 -0
  517. package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts.__ivy_ngcc_bak +4 -0
  518. package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts.map +1 -0
  519. package/lib/sharedComponents/pipes/within-data.pipe.d.ts +5 -0
  520. package/lib/sharedComponents/pipes/within-data.pipe.d.ts.__ivy_ngcc_bak +4 -0
  521. package/lib/sharedComponents/pipes/within-data.pipe.d.ts.map +1 -0
  522. package/lib/sharedComponents/program-listing/program-listing.component.d.ts +5 -0
  523. package/lib/sharedComponents/program-listing/program-listing.component.d.ts.__ivy_ngcc_bak +119 -0
  524. package/lib/sharedComponents/program-listing/program-listing.component.d.ts.map +1 -0
  525. package/lib/sharedComponents/radio-list/radio-list.component.d.ts +5 -0
  526. package/lib/sharedComponents/radio-list/radio-list.component.d.ts.__ivy_ngcc_bak +24 -0
  527. package/lib/sharedComponents/radio-list/radio-list.component.d.ts.map +1 -0
  528. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts +5 -0
  529. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  530. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts.map +1 -0
  531. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +5 -0
  532. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts.__ivy_ngcc_bak +47 -0
  533. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts.map +1 -0
  534. package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +5 -0
  535. package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts.__ivy_ngcc_bak +26 -0
  536. package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts.map +1 -0
  537. package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +5 -0
  538. package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts.__ivy_ngcc_bak +23 -0
  539. package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts.map +1 -0
  540. package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +5 -0
  541. package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts.__ivy_ngcc_bak +15 -0
  542. package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts.map +1 -0
  543. package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts +5 -0
  544. package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts.__ivy_ngcc_bak +35 -0
  545. package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts.map +1 -0
  546. package/lib/sharedComponents/roles-list/roles-list.component.d.ts +5 -0
  547. package/lib/sharedComponents/roles-list/roles-list.component.d.ts.__ivy_ngcc_bak +8 -0
  548. package/lib/sharedComponents/roles-list/roles-list.component.d.ts.map +1 -0
  549. package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +5 -0
  550. package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts.__ivy_ngcc_bak +21 -0
  551. package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts.map +1 -0
  552. package/lib/sharedComponents/v-loader/loader/loader.component.d.ts +5 -0
  553. package/lib/sharedComponents/v-loader/loader/loader.component.d.ts.__ivy_ngcc_bak +5 -0
  554. package/lib/sharedComponents/v-loader/loader/loader.component.d.ts.map +1 -0
  555. package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts +5 -0
  556. package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts.__ivy_ngcc_bak +5 -0
  557. package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts.map +1 -0
  558. package/lib/sharedComponents/v-loader/v-loader.module.d.ts +9 -0
  559. package/lib/sharedComponents/v-loader/v-loader.module.d.ts.__ivy_ngcc_bak +2 -0
  560. package/lib/sharedComponents/v-loader/v-loader.module.d.ts.map +1 -0
  561. package/lib/ui-kit/action-dialog/action-dialog.module.d.ts +11 -0
  562. package/lib/ui-kit/action-dialog/action-dialog.module.d.ts.__ivy_ngcc_bak +2 -0
  563. package/lib/ui-kit/action-dialog/action-dialog.module.d.ts.map +1 -0
  564. package/lib/ui-kit/action-dialog/active/active.component.d.ts +5 -0
  565. package/lib/ui-kit/action-dialog/active/active.component.d.ts.__ivy_ngcc_bak +12 -0
  566. package/lib/ui-kit/action-dialog/active/active.component.d.ts.map +1 -0
  567. package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts +5 -0
  568. package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts.__ivy_ngcc_bak +12 -0
  569. package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts.map +1 -0
  570. package/lib/ui-kit/action-dialog/delete/delete.component.d.ts +5 -0
  571. package/lib/ui-kit/action-dialog/delete/delete.component.d.ts.__ivy_ngcc_bak +11 -0
  572. package/lib/ui-kit/action-dialog/delete/delete.component.d.ts.map +1 -0
  573. package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts +5 -0
  574. package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts.__ivy_ngcc_bak +12 -0
  575. package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts.map +1 -0
  576. package/lib/ui-kit/click-outside/click-outside.directive.d.ts +5 -0
  577. package/lib/ui-kit/click-outside/click-outside.directive.d.ts.__ivy_ngcc_bak +7 -0
  578. package/lib/ui-kit/click-outside/click-outside.directive.d.ts.map +1 -0
  579. package/lib/ui-kit/click-outside/click-outside.module.d.ts +8 -0
  580. package/lib/ui-kit/click-outside/click-outside.module.d.ts.__ivy_ngcc_bak +2 -0
  581. package/lib/ui-kit/click-outside/click-outside.module.d.ts.map +1 -0
  582. package/lib/ui-kit/dialog/dialog-ref.d.ts +5 -0
  583. package/lib/ui-kit/dialog/dialog-ref.d.ts.__ivy_ngcc_bak +7 -0
  584. package/lib/ui-kit/dialog/dialog-ref.d.ts.map +1 -0
  585. package/lib/ui-kit/dialog/dialog.component.d.ts +5 -0
  586. package/lib/ui-kit/dialog/dialog.component.d.ts.__ivy_ngcc_bak +29 -0
  587. package/lib/ui-kit/dialog/dialog.component.d.ts.map +1 -0
  588. package/lib/ui-kit/dialog/dialog.module.d.ts +9 -0
  589. package/lib/ui-kit/dialog/dialog.module.d.ts.__ivy_ngcc_bak +2 -0
  590. package/lib/ui-kit/dialog/dialog.module.d.ts.map +1 -0
  591. package/lib/ui-kit/dialog/dialog.service.d.ts +4 -0
  592. package/lib/ui-kit/dialog/dialog.service.d.ts.__ivy_ngcc_bak +15 -0
  593. package/lib/ui-kit/dialog/dialog.service.d.ts.map +1 -0
  594. package/lib/ui-kit/dialog/insertion.directive.d.ts +5 -0
  595. package/lib/ui-kit/dialog/insertion.directive.d.ts.__ivy_ngcc_bak +5 -0
  596. package/lib/ui-kit/dialog/insertion.directive.d.ts.map +1 -0
  597. package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts +5 -0
  598. package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  599. package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts.map +1 -0
  600. package/lib/ui-kit/editor-loader/editor-loader.module.d.ts +8 -0
  601. package/lib/ui-kit/editor-loader/editor-loader.module.d.ts.__ivy_ngcc_bak +2 -0
  602. package/lib/ui-kit/editor-loader/editor-loader.module.d.ts.map +1 -0
  603. package/lib/ui-kit/format-html.pipe.d.ts +5 -0
  604. package/lib/ui-kit/format-html.pipe.d.ts.__ivy_ngcc_bak +7 -0
  605. package/lib/ui-kit/format-html.pipe.d.ts.map +1 -0
  606. package/lib/ui-kit/formgroup/click-outside.directive.d.ts +5 -0
  607. package/lib/ui-kit/formgroup/click-outside.directive.d.ts.__ivy_ngcc_bak +7 -0
  608. package/lib/ui-kit/formgroup/click-outside.directive.d.ts.map +1 -0
  609. package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts +5 -0
  610. package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts.__ivy_ngcc_bak +11 -0
  611. package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts.map +1 -0
  612. package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +5 -0
  613. package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.__ivy_ngcc_bak +11 -0
  614. package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts.map +1 -0
  615. package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts +5 -0
  616. package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts.__ivy_ngcc_bak +12 -0
  617. package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts.map +1 -0
  618. package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts +5 -0
  619. package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts.__ivy_ngcc_bak +5 -0
  620. package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts.map +1 -0
  621. package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts +5 -0
  622. package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts.__ivy_ngcc_bak +33 -0
  623. package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts.map +1 -0
  624. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +5 -0
  625. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +12 -0
  626. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts.map +1 -0
  627. package/lib/ui-kit/formgroup/formgroup.module.d.ts +18 -0
  628. package/lib/ui-kit/formgroup/formgroup.module.d.ts.__ivy_ngcc_bak +2 -0
  629. package/lib/ui-kit/formgroup/formgroup.module.d.ts.map +1 -0
  630. package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts +5 -0
  631. package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts.__ivy_ngcc_bak +4 -0
  632. package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts.map +1 -0
  633. package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts +5 -0
  634. package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts.__ivy_ngcc_bak +4 -0
  635. package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts.map +1 -0
  636. package/lib/ui-kit/line-loader/line-loader.component.d.ts +5 -0
  637. package/lib/ui-kit/line-loader/line-loader.component.d.ts.__ivy_ngcc_bak +6 -0
  638. package/lib/ui-kit/line-loader/line-loader.component.d.ts.map +1 -0
  639. package/lib/ui-kit/line-loader/line-loader.module.d.ts +8 -0
  640. package/lib/ui-kit/line-loader/line-loader.module.d.ts.__ivy_ngcc_bak +2 -0
  641. package/lib/ui-kit/line-loader/line-loader.module.d.ts.map +1 -0
  642. package/lib/ui-kit/no-data/no-data.component.d.ts +5 -0
  643. package/lib/ui-kit/no-data/no-data.component.d.ts.__ivy_ngcc_bak +18 -0
  644. package/lib/ui-kit/no-data/no-data.component.d.ts.map +1 -0
  645. package/lib/ui-kit/no-data/no-data.module.d.ts +8 -0
  646. package/lib/ui-kit/no-data/no-data.module.d.ts.__ivy_ngcc_bak +2 -0
  647. package/lib/ui-kit/no-data/no-data.module.d.ts.map +1 -0
  648. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +5 -0
  649. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts.__ivy_ngcc_bak +23 -0
  650. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts.map +1 -0
  651. package/lib/ui-kit/pagination/pagination.module.d.ts +9 -0
  652. package/lib/ui-kit/pagination/pagination.module.d.ts.__ivy_ngcc_bak +2 -0
  653. package/lib/ui-kit/pagination/pagination.module.d.ts.map +1 -0
  654. package/lib/ui-kit/popover/popover-event.directive.d.ts +5 -0
  655. package/lib/ui-kit/popover/popover-event.directive.d.ts.__ivy_ngcc_bak +7 -0
  656. package/lib/ui-kit/popover/popover-event.directive.d.ts.map +1 -0
  657. package/lib/ui-kit/popover/popover-longpress.directive.d.ts +5 -0
  658. package/lib/ui-kit/popover/popover-longpress.directive.d.ts.__ivy_ngcc_bak +13 -0
  659. package/lib/ui-kit/popover/popover-longpress.directive.d.ts.map +1 -0
  660. package/lib/ui-kit/popover/popover.component.d.ts +5 -0
  661. package/lib/ui-kit/popover/popover.component.d.ts.__ivy_ngcc_bak +24 -0
  662. package/lib/ui-kit/popover/popover.component.d.ts.map +1 -0
  663. package/lib/ui-kit/popover/popover.directive.d.ts +5 -0
  664. package/lib/ui-kit/popover/popover.directive.d.ts.__ivy_ngcc_bak +16 -0
  665. package/lib/ui-kit/popover/popover.directive.d.ts.map +1 -0
  666. package/lib/ui-kit/popover/popover.module.d.ts +11 -0
  667. package/lib/ui-kit/popover/popover.module.d.ts.__ivy_ngcc_bak +2 -0
  668. package/lib/ui-kit/popover/popover.module.d.ts.map +1 -0
  669. package/lib/ui-kit/popover/popover.service.d.ts +4 -0
  670. package/lib/ui-kit/popover/popover.service.d.ts.__ivy_ngcc_bak +9 -0
  671. package/lib/ui-kit/popover/popover.service.d.ts.map +1 -0
  672. package/lib/ui-kit/popover-hover/popover-hover.component.d.ts +5 -0
  673. package/lib/ui-kit/popover-hover/popover-hover.component.d.ts.__ivy_ngcc_bak +22 -0
  674. package/lib/ui-kit/popover-hover/popover-hover.component.d.ts.map +1 -0
  675. package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts +5 -0
  676. package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts.__ivy_ngcc_bak +12 -0
  677. package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts.map +1 -0
  678. package/lib/ui-kit/popover-hover/popover-hover.module.d.ts +9 -0
  679. package/lib/ui-kit/popover-hover/popover-hover.module.d.ts.__ivy_ngcc_bak +2 -0
  680. package/lib/ui-kit/popover-hover/popover-hover.module.d.ts.map +1 -0
  681. package/lib/ui-kit/popover-hover/popover-hover.service.d.ts +4 -0
  682. package/lib/ui-kit/popover-hover/popover-hover.service.d.ts.__ivy_ngcc_bak +9 -0
  683. package/lib/ui-kit/popover-hover/popover-hover.service.d.ts.map +1 -0
  684. package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts +5 -0
  685. package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts.__ivy_ngcc_bak +12 -0
  686. package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts.map +1 -0
  687. package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts +8 -0
  688. package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts.__ivy_ngcc_bak +2 -0
  689. package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts.map +1 -0
  690. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts +5 -0
  691. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts.__ivy_ngcc_bak +12 -0
  692. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts.map +1 -0
  693. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts +8 -0
  694. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts.__ivy_ngcc_bak +2 -0
  695. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.d.ts.map +1 -0
  696. package/lib/ui-kit/snack-bar/snack-bar.component.d.ts +5 -0
  697. package/lib/ui-kit/snack-bar/snack-bar.component.d.ts.__ivy_ngcc_bak +17 -0
  698. package/lib/ui-kit/snack-bar/snack-bar.component.d.ts.map +1 -0
  699. package/lib/ui-kit/snack-bar/snack-bar.module.d.ts +8 -0
  700. package/lib/ui-kit/snack-bar/snack-bar.module.d.ts.__ivy_ngcc_bak +2 -0
  701. package/lib/ui-kit/snack-bar/snack-bar.module.d.ts.map +1 -0
  702. package/lib/ui-kit/snack-bar/snack-bar.service.d.ts +4 -0
  703. package/lib/ui-kit/snack-bar/snack-bar.service.d.ts.__ivy_ngcc_bak +8 -0
  704. package/lib/ui-kit/snack-bar/snack-bar.service.d.ts.map +1 -0
  705. package/lib/ui-kit/tooltip/tooltip.directive.d.ts +5 -0
  706. package/lib/ui-kit/tooltip/tooltip.directive.d.ts.__ivy_ngcc_bak +24 -0
  707. package/lib/ui-kit/tooltip/tooltip.directive.d.ts.map +1 -0
  708. package/lib/ui-kit/tooltip/tooltip.module.d.ts +8 -0
  709. package/lib/ui-kit/tooltip/tooltip.module.d.ts.__ivy_ngcc_bak +2 -0
  710. package/lib/ui-kit/tooltip/tooltip.module.d.ts.map +1 -0
  711. package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +5 -0
  712. package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts.__ivy_ngcc_bak +231 -0
  713. package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts.map +1 -0
  714. package/lib/workflow-assessment/workflow-assessment.component.d.ts +5 -0
  715. package/lib/workflow-assessment/workflow-assessment.component.d.ts.__ivy_ngcc_bak +63 -0
  716. package/lib/workflow-assessment/workflow-assessment.component.d.ts.map +1 -0
  717. package/lib/workflow-compliance/workflow-compliance.component.d.ts +5 -0
  718. package/lib/workflow-compliance/workflow-compliance.component.d.ts.__ivy_ngcc_bak +349 -0
  719. package/lib/workflow-compliance/workflow-compliance.component.d.ts.map +1 -0
  720. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +5 -0
  721. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts.__ivy_ngcc_bak +127 -0
  722. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts.map +1 -0
  723. package/lib/workflow-engine.module.d.ts +117 -0
  724. package/lib/workflow-engine.module.d.ts.__ivy_ngcc_bak +5 -0
  725. package/lib/workflow-engine.module.d.ts.map +1 -0
  726. package/lib/workflow-engine.service.d.ts +4 -0
  727. package/lib/workflow-engine.service.d.ts.__ivy_ngcc_bak +3 -0
  728. package/lib/workflow-engine.service.d.ts.map +1 -0
  729. package/lib/workflow-pagination/workflow-pagination.component.d.ts +5 -0
  730. package/lib/workflow-pagination/workflow-pagination.component.d.ts.__ivy_ngcc_bak +24 -0
  731. package/lib/workflow-pagination/workflow-pagination.component.d.ts.map +1 -0
  732. package/lib/workflow-policy/workflow-policy.component.d.ts +5 -0
  733. package/lib/workflow-policy/workflow-policy.component.d.ts.__ivy_ngcc_bak +292 -0
  734. package/lib/workflow-policy/workflow-policy.component.d.ts.map +1 -0
  735. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts +5 -0
  736. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  737. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts.map +1 -0
  738. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +5 -0
  739. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts.__ivy_ngcc_bak +87 -0
  740. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts.map +1 -0
  741. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts +5 -0
  742. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts.__ivy_ngcc_bak +5 -0
  743. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts.map +1 -0
  744. package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts +4 -0
  745. package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts.__ivy_ngcc_bak +13 -0
  746. package/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.d.ts.map +1 -0
  747. package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts +5 -0
  748. package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts.__ivy_ngcc_bak +4 -0
  749. package/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.d.ts.map +1 -0
  750. package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts +5 -0
  751. package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts.__ivy_ngcc_bak +24 -0
  752. package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts.map +1 -0
  753. package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts +5 -0
  754. package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts.__ivy_ngcc_bak +13 -0
  755. package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts.map +1 -0
  756. package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts +44 -0
  757. package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts.__ivy_ngcc_bak +2 -0
  758. package/lib/workflow-program/create-program-ui/create-program-ui.module.d.ts.map +1 -0
  759. package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts +5 -0
  760. package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts.__ivy_ngcc_bak +17 -0
  761. package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts.map +1 -0
  762. package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts +5 -0
  763. package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts.__ivy_ngcc_bak +19 -0
  764. package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts.map +1 -0
  765. package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +5 -0
  766. package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts.__ivy_ngcc_bak +63 -0
  767. package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts.map +1 -0
  768. package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts +4 -0
  769. package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts.__ivy_ngcc_bak +12 -0
  770. package/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.d.ts.map +1 -0
  771. package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts +5 -0
  772. package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts.__ivy_ngcc_bak +5 -0
  773. package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts.map +1 -0
  774. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts +5 -0
  775. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts.__ivy_ngcc_bak +4 -0
  776. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.d.ts.map +1 -0
  777. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts +5 -0
  778. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts.__ivy_ngcc_bak +4 -0
  779. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.d.ts.map +1 -0
  780. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts +5 -0
  781. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts.__ivy_ngcc_bak +4 -0
  782. package/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.d.ts.map +1 -0
  783. package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts +5 -0
  784. package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts.__ivy_ngcc_bak +3 -0
  785. package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts.map +1 -0
  786. package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts +5 -0
  787. package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts.__ivy_ngcc_bak +9 -0
  788. package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts.map +1 -0
  789. package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts +5 -0
  790. package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts.__ivy_ngcc_bak +34 -0
  791. package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts.map +1 -0
  792. package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts +5 -0
  793. package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts.__ivy_ngcc_bak +9 -0
  794. package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts.map +1 -0
  795. package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts +5 -0
  796. package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts.__ivy_ngcc_bak +10 -0
  797. package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts.map +1 -0
  798. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +5 -0
  799. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts.__ivy_ngcc_bak +25 -0
  800. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts.map +1 -0
  801. package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts +9 -0
  802. package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts.__ivy_ngcc_bak +2 -0
  803. package/lib/workflow-program/create-program-ui/pagination/pagination.module.d.ts.map +1 -0
  804. package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts +5 -0
  805. package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts.__ivy_ngcc_bak +4 -0
  806. package/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.d.ts.map +1 -0
  807. package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts +5 -0
  808. package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts.__ivy_ngcc_bak +4 -0
  809. package/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.d.ts.map +1 -0
  810. package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts +5 -0
  811. package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts.__ivy_ngcc_bak +4 -0
  812. package/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.d.ts.map +1 -0
  813. package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts +5 -0
  814. package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts.__ivy_ngcc_bak +4 -0
  815. package/lib/workflow-program/create-program-ui/pipes/pager.pipe.d.ts.map +1 -0
  816. package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts +5 -0
  817. package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts.__ivy_ngcc_bak +4 -0
  818. package/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.d.ts.map +1 -0
  819. package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts +5 -0
  820. package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts.__ivy_ngcc_bak +4 -0
  821. package/lib/workflow-program/create-program-ui/pipes/search.pipe.d.ts.map +1 -0
  822. package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts +5 -0
  823. package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts.__ivy_ngcc_bak +5 -0
  824. package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts.map +1 -0
  825. package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +5 -0
  826. package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts.__ivy_ngcc_bak +66 -0
  827. package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts.map +1 -0
  828. package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts +5 -0
  829. package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts.__ivy_ngcc_bak +17 -0
  830. package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts.map +1 -0
  831. package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts +5 -0
  832. package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts.__ivy_ngcc_bak +5 -0
  833. package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts.map +1 -0
  834. package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +5 -0
  835. package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts.__ivy_ngcc_bak +101 -0
  836. package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts.map +1 -0
  837. package/lib/workflow-program/workflow-program.component.d.ts +5 -0
  838. package/lib/workflow-program/workflow-program.component.d.ts.__ivy_ngcc_bak +200 -0
  839. package/lib/workflow-program/workflow-program.component.d.ts.map +1 -0
  840. package/lib/workflow-risk/workflow-risk.component.d.ts +5 -0
  841. package/lib/workflow-risk/workflow-risk.component.d.ts.__ivy_ngcc_bak +107 -0
  842. package/lib/workflow-risk/workflow-risk.component.d.ts.map +1 -0
  843. package/lib/workflow-services/add-risk.service.d.ts +4 -0
  844. package/lib/workflow-services/add-risk.service.d.ts.__ivy_ngcc_bak +22 -0
  845. package/lib/workflow-services/add-risk.service.d.ts.map +1 -0
  846. package/lib/workflow-services/assessment.service.d.ts +4 -0
  847. package/lib/workflow-services/assessment.service.d.ts.__ivy_ngcc_bak +29 -0
  848. package/lib/workflow-services/assessment.service.d.ts.map +1 -0
  849. package/lib/workflow-services/auth.service.d.ts +4 -0
  850. package/lib/workflow-services/auth.service.d.ts.__ivy_ngcc_bak +29 -0
  851. package/lib/workflow-services/auth.service.d.ts.map +1 -0
  852. package/lib/workflow-services/frequency.service.d.ts +4 -0
  853. package/lib/workflow-services/frequency.service.d.ts.__ivy_ngcc_bak +5 -0
  854. package/lib/workflow-services/frequency.service.d.ts.map +1 -0
  855. package/lib/workflow-services/log-issue.service.d.ts +4 -0
  856. package/lib/workflow-services/log-issue.service.d.ts.__ivy_ngcc_bak +31 -0
  857. package/lib/workflow-services/log-issue.service.d.ts.map +1 -0
  858. package/lib/workflow-services/policy.service.d.ts +4 -0
  859. package/lib/workflow-services/policy.service.d.ts.__ivy_ngcc_bak +24 -0
  860. package/lib/workflow-services/policy.service.d.ts.map +1 -0
  861. package/lib/workflow-services/programs.service.d.ts +4 -0
  862. package/lib/workflow-services/programs.service.d.ts.__ivy_ngcc_bak +111 -0
  863. package/lib/workflow-services/programs.service.d.ts.map +1 -0
  864. package/lib/workflow-services/responsibility.service.d.ts +4 -0
  865. package/lib/workflow-services/responsibility.service.d.ts.__ivy_ngcc_bak +42 -0
  866. package/lib/workflow-services/responsibility.service.d.ts.map +1 -0
  867. package/lib/workflow-services/token-decoder.service.d.ts +4 -0
  868. package/lib/workflow-services/token-decoder.service.d.ts.__ivy_ngcc_bak +4 -0
  869. package/lib/workflow-services/token-decoder.service.d.ts.map +1 -0
  870. package/lib/workflow-services/ui-kit.service.d.ts +4 -0
  871. package/lib/workflow-services/ui-kit.service.d.ts.__ivy_ngcc_bak +5 -0
  872. package/lib/workflow-services/ui-kit.service.d.ts.map +1 -0
  873. package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +5 -0
  874. package/lib/workflow-survey-form/workflow-survey-form.component.d.ts.__ivy_ngcc_bak +7 -0
  875. package/lib/workflow-survey-form/workflow-survey-form.component.d.ts.map +1 -0
  876. package/package.json +1 -1
  877. package/vcomply-workflow-engine.d.ts +2 -0
  878. package/vcomply-workflow-engine.d.ts.__ivy_ngcc_bak +293 -0
  879. package/vcomply-workflow-engine.d.ts.map +1 -0
@@ -1156,7 +1156,7 @@ export class WorkflowPolicyComponent {
1156
1156
  }
1157
1157
  }
1158
1158
  populatePolicyForm(data, categoryIds) {
1159
- var _a, _b, _c, _e;
1159
+ var _a, _b, _c, _e, _f, _g;
1160
1160
  const reviewerFiles = data.ReviewerAttachments.map((file) => {
1161
1161
  file.filename = file.name;
1162
1162
  file.filepath = file.file_path;
@@ -1213,6 +1213,8 @@ export class WorkflowPolicyComponent {
1213
1213
  this.policyForm.addCheckpoints = (this.policyForm.checkpointDetails.length > 0) ? true : false;
1214
1214
  this.policyForm.addOverseers = (this.policyForm.CCFailEmail.length > 0 || this.policyForm.CCEmail.length > 0) ? true : false;
1215
1215
  this.policyForm.addAssociatedDocuments = data.associated_documents.length > 0 ? true : false;
1216
+ this.ccEmailObjIds = (((_f = data === null || data === void 0 ? void 0 : data.cc_usergroup_ids) === null || _f === void 0 ? void 0 : _f.length) > 0) ? data === null || data === void 0 ? void 0 : data.cc_usergroup_ids : [];
1217
+ this.ccFailGroupObjIds = (((_g = data === null || data === void 0 ? void 0 : data.cc_fail_usergroup_ids) === null || _g === void 0 ? void 0 : _g.length) > 0) ? data === null || data === void 0 ? void 0 : data.cc_fail_usergroup_ids : [];
1216
1218
  this.populateOptionalFields();
1217
1219
  // this.checkForCreateDocuments();
1218
1220
  this.loader = false;
@@ -1256,4 +1258,4 @@ WorkflowPolicyComponent.propDecorators = {
1256
1258
  selectedCategory: [{ type: Input }],
1257
1259
  formatEvidence: [{ type: ViewChild, args: ['formatEvidence',] }]
1258
1260
  };
1259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUW5GLE1BQU0sT0FBTyx1QkFBdUI7SUFxSWxDLFlBQW9CLGFBQTRCLEVBQ3RDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QjtRQVRsQixrQkFB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QUFLLENBQUM7SUFFdEIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7WUEzeUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQiw2MjFEQUErQzs7YUFFaEQ7OztZQWJRLGFBQWE7WUFIYixlQUFlO1lBS2YsWUFBWTtZQUhaLFdBQVc7WUFFWCxxQkFBcUI7WUFJTCxNQUFNO1lBQXRCLGNBQWM7WUFDZCxnQkFBZ0I7WUFIaEIsZ0JBQWdCO1lBWGhCLGlCQUFpQjs7OzRCQXVCdkIsTUFBTTttQkFDTixLQUFLO3VCQUNMLEtBQUs7c0JBQ0wsS0FBSztvQ0FDTCxNQUFNO3lCQUNOLFNBQVMsU0FBQyxZQUFZOzZCQUN0QixNQUFNO2dDQUNOLE1BQU07OEJBQ04sTUFBTTs4QkFDTixLQUFLOytCQUNMLEtBQUs7NkJBR0wsU0FBUyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCB1bmlxQnkgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25BbGVydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlybWF0aW9uLWFsZXJ0JztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeUZvcm0gfSBmcm9tICcuLi93b3JrZmxvdy1pbnRlcmZhY2VzL2NyZWF0ZS1wb2xpY3ktZm9ybSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9saWN5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3BvbGljeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctcG9saWN5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1BvbGljeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIHBvbGljeUlkID0gJyc7XHJcbiAgQElucHV0KCkgZmVhdHVyZTphbnk7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2hpZnRUb0VkaXRNb2RlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGNvbnZlcnRGaWxlRGF0YTogYW55ID0ge31cclxuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5ID0gJydcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1hdEV2aWRlbmNlJykgZm9ybWF0RXZpZGVuY2UhOiBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudDtcclxuXHJcblxyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgcG9saWN5LicsXHJcbiAgfTtcclxuICB3b3JrZmxvd1R5cGUgPSAnU0VRVUVOVElBTCdcclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIG5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgcmNMaXN0OiBhbnkgPSBbXTtcclxuICB1c2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIGFsbEFwcHJvdmVyczogYW55ID0gW107XHJcbiAgYWxsUmV2aWV3ZXJzOiBhbnkgPSBbXTtcclxuICBhc3NpZ25lZXNMaXN0OiBhbnkgPSBbXTtcclxuICBvd25lcmxpc3Q6YW55ID1bXTtcclxuICByZXZpZXdlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBvdmVyc2VlcnNMaXN0OiBhbnkgPSBbXTtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICB1c2Vyc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yeUxpc3Q6IGFueSA9IFtdO1xyXG4gIGdyb3Vwc0xpc3Q6IGFueVtdID0gW107XHJcbiAgd29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGFwcHJvdmVyV29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIGNjRW1haWxPYmpJZHM6IGFueVtdID0gW107XHJcbiAgY2NGYWlsR3JvdXBPYmpJZHM6IGFueVtdID0gW107XHJcblxyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIGNhdGVnb3JpZXNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgZ3JvdXBzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5Q29uZmlnID0ge1xyXG4gICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBDYXRlZ29yeScsXHJcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ0NhdGVnb3J5IHNlbGVjdGVkJyxcclxuICAgIGZsb2F0aW5nVGV4dFBsdXJhbDogJ0NhdGVnb3JpZXMgc2VsZWN0ZWQnLFxyXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggQ2F0ZWdvcnknLFxyXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICB3b3JrZmxvdzogJ3BvbGljeSdcclxuICB9XHJcbiAgYXBwcm92YWxXb3JrZmxvd0NvbmZpZyA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgdXNlcihzKScsXHJcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1VzZXIgc2VsZWN0ZWQnLFxyXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnVXNlcnMgc2VsZWN0ZWQnLFxyXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZVxyXG4gIH1cclxuXHJcblxyXG4gIGFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcclxuICBhcHByb3ZlcnNMaXN0SW5kZXggPSAwO1xyXG4gIHdvcmtmbG93TGlzdCA9IFsnU0VRVUVOVElBTCcsICdST1VORC1ST0JJTicsICdBTlkgT05FJ107XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBkYXRlQ29uZmlnID0ge1xyXG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxyXG4gICAgZm9ybWF0OiAnREQgTU1NIFlZWVknLFxyXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxyXG4gICAgb3Blbk9uQ2xpY2s6ZmFsc2UsXHJcbiAgICBvcGVuT25Gb2N1czpmYWxzZSxcclxuICB9O1xyXG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgZmFpbGVkOiAwLFxyXG4gICAgdGltZTogJzExOjU5IHBtJyxcclxuICAgIGZhaWxlZFRpbWU6ICcnLFxyXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMFxyXG4gIH07XHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIGZhaWxlZDogMCxcclxuICAgIHRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDNcclxuICB9O1xyXG4gIGZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doYXQgaXMgdGhlIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeSA/JztcclxuICByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xyXG5cclxuICBzaWRlU2VsZWN0b3JFbGVtZW50cyA9IFsnYXBwcm92YWxXb3JrZmxvdycsICdhc3NpZ25lZXMnLCAnYXBwcm92ZXJzJywgJ3Jldmlld2VyJyxcclxuICAgICdjY0VtYWlsJywgJ2NjRmFpbCcsICdyYycsICdjYXRlZ29yeScsICdmcmVxdWVuY3knLCAncmV2aWV3ZXJGcmVxdWVuY3knLCAnY2hlY2twb2ludHMnXVxyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ0xPVy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcclxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9XHJcbiAgXTtcclxuICBzaG93Umlza0NsYXNzaWZpY2F0aW9uID0gdHJ1ZTtcclxuICBzaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XHJcbiAgb3JnYW5pemF0aW9uX2lkID0gJyc7XHJcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xyXG4gIG1lbWJlcklkID0gMDtcclxuICB1c2VySW5mbyAhOiBhbnk7XHJcblxyXG4gIHBvbGljeUFwcHJvdmFsRmxhZyA9IDA7XHJcbiAgYmFzZVVSTCA9ICcnXHJcbiAgZ3JvdXBFbmFibGVkITogYW55O1xyXG4gIG92ZXJzZWVyR3JvdXBzTGlzdDogYW55W10gPSBbXTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9saWN5U2VydmljZTogUG9saWN5U2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXHJcbiAgICBwbGF0Zm9ybUxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJhc2VVUkwgPSAocGxhdGZvcm1Mb2NhdGlvbiBhcyBhbnkpLmxvY2F0aW9uLm9yaWdpbjtcclxuICAgIGlmICh0aGlzLmJhc2VVUkwgPT0gXCJodHRwOi8vbG9jYWxob3N0OjQyMDBcIikge1xyXG4gICAgICB0aGlzLmJhc2VVUkwgPSAnaHR0cHM6Ly9kZXYudi1jb21wbHkuY29tJ1xyXG4gICAgfVxyXG4gIH1cclxuICBwb2xpY3lGb3JtOiBQb2xpY3lGb3JtID0ge1xyXG4gICAgcG9saWN5TmFtZTogJycsXHJcbiAgICBwb2xpY3lOb3RlczogJycsXHJcbiAgICBzZWxlY3RlZENhdGVnb3JpZXM6IFtdLFxyXG4gICAgc2VsZWN0ZWRBcHByb3ZlcnM6IFtdLFxyXG4gICAgc2VsZWN0ZWRBc3NpZ25lZXM6IFtdLCAvL2RvdWJ0IGluIG5hbWVcclxuICAgIHNlbGVjdGVkR3JvdXBBc3NpZ25lZTogW10sXHJcbiAgICBzZWxlY3RlZFJldmlld2VyczogW10sXHJcblxyXG4gICAgc2VsZWN0ZWRSQ3M6IFtdLFxyXG4gICAgQ0NGYWlsRW1haWw6IFtdLFxyXG4gICAgQ0NGYWlsRW1haWxHcm91cDogW10sXHJcbiAgICBDQ0VtYWlsOiBbXSxcclxuICAgIENDR3JvdXBFbWFpbDogW10sXHJcbiAgICBhdmFpbGFibGVPblBvcnRhbDogZmFsc2UsXHJcbiAgICBhY2NlcHRTdWdnZXN0aW9uczogZmFsc2UsXHJcbiAgICByZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uOiBmYWxzZSxcclxuICAgIHJpc2tSYXRpbmc6IDEsXHJcbiAgICBhc3NvY2lhdGVkRG9jdW1lbnRzOiB7XHJcbiAgICAgIGZvcm1hdEZpbGVzOiBbXSxcclxuICAgIH0sXHJcbiAgICBwb2xpY3lEdWVEYXRlOiBtb21lbnQoKSxcclxuICAgIGN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgY2hlY2twb2ludERldGFpbHM6IFtdLFxyXG4gICAgdG90YWxRdWVzdGlvbjogMCxcclxuICAgIHBhc3NpbmdNYXJrczogMCxcclxuICAgIGRvY3VtZW50c0FuZExpbmtzOiB7XHJcbiAgICAgIGZvcm1hdEZpbGVzOiBbXSxcclxuICAgICAgZm9ybWF0TGlua3M6IFtdLFxyXG4gICAgfSxcclxuICAgIGFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyczogZmFsc2UsXHJcbiAgICBhZGRSZXZpZXdlcnM6IGZhbHNlLFxyXG4gICAgYWRkQ2hlY2twb2ludHM6IGZhbHNlLFxyXG4gICAgYWRkT3ZlcnNlZXJzOiBmYWxzZSxcclxuICAgIGFkZEFzc29jaWF0ZWREb2N1bWVudHM6IGZhbHNlLFxyXG5cclxuICAgIGZhaWxlZF90aW1lOiAnJyxcclxuICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcclxuICAgIGZyZXF1ZW5jeV90ZXh0OiAnJyxcclxuICAgIG1hcmtfZmFpbGVkX2FmdGVyOiAwLFxyXG4gICAgcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxyXG5cclxuICAgIHJldmlld0ZhaWxlZEFmdGVyOiAwLFxyXG4gICAgcmV2aWV3RmFpbGVkVGltZTogJycsXHJcbiAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6ICcnLFxyXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV90eXBlOiAnJyxcclxuICAgIHJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IDAsXHJcbiAgfTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBFbmFibGVkID0gdGhpcy5mZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKFwiZmZfcG9saWN5X2dyb3Vwc1wiKTtcclxuICAgIHRoaXMuZ2V0UkNMaXN0KCk7XHJcbiAgICB0aGlzLmdldFVzZXJzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XHJcbiAgICB0aGlzLm92ZXJzZWVyR3JvdXBMaXN0KCk7XHJcbiAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghcmVzLmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgICAgICB0aGlzLnNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbl9pZCA9IHJlcy5faWRcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tZW1iZXJfb2JqX2lkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLl9pZDtcclxuICAgIHRoaXMudXNlckluZm8gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlcjtcclxuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XHJcbiAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgdGhlIGxpc3RpbmcgcGFnZXMgdGhlIGxlZnQgc2lkZSBvZiBwb2xpY3kgZm9ybSB0byBzZXQgYW5kIGVkaXQgdGhlIGRyb3Bkb3duIGZpZWxkcyB2YWx1ZXNcclxuICAgKiBAcGFyYW0gdHlwZSBob2xkcyBuYW1lIG9mIHBhcnRpY3VsYXIgbGlzdCBpcyB0byBiZSBkaXNwbGF5ZWRcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgYm9vbGVhbiB2YWx1ZSB0byBkaXNwbGF5IHRoZSBsaXN0IG9yIG5vdFxyXG4gICAqIEBwYXJhbSB3b3JrZmxvd1R5cGUgaXQgc2V0cyB0aGUgYXBwcm92YWwgd29ya2Zsb3cgdHlwZSB3aGlsZSBlZGl0aW5nIHRoZSBhcHByb3ZhbCB3b3JrZmxvdy5cclxuICAgKi9cclxuICBhY3RpdmF0ZVNlbGVjdG9yKHR5cGU6IGFueSwgZXZlbnQ6IGJvb2xlYW4sIHdvcmtmbG93VHlwZT86IGFueSkge1xyXG4gICAgaWYgKHdvcmtmbG93VHlwZSkge1xyXG4gICAgICB0aGlzLndvcmtmbG93VHlwZSA9IHdvcmtmbG93VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gICAgaWYgKHRoaXMuc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogQ2xvc2VzIHRoZSBsaXN0aW5nIHBhZ2VzXHJcbiAgICAqL1xyXG4gIGRpc2FibGVTZWxlY3RvcigpIHtcclxuICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBSZXNwb25zaWJpbGl0eSBjZW50ZXJzIGxpc3RcclxuICAgKi9cclxuICBnZXRSQ0xpc3QoKSB7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0UkNMaXN0KCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMucmNMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgb3JnYW5pemF0aW9uIHVzZXJzIGxpc3RcclxuICAgKi9cclxuICBnZXRVc2Vyc0xpc3QoKSB7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uUGVvcGxlKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IHRoaXMudXBkYXRlTWVtYmVySWRLZXkocmVzKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IHJlcztcclxuICAgIH1cclxuICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyByZXBsYWNlIG1lbWJlcl9pZCB2YWx1ZSB0byBteV9tZW1iZXJfaWRcclxuICB1cGRhdGVNZW1iZXJJZEtleShsaXN0OiBhbnkpe1xyXG4gICAgbGV0IHVwZGF0ZWRMaXN0ID0gbGlzdC5tYXAoKGVsZTogYW55KSA9PiAoey4uLmVsZSwgbWVtYmVyX2lkOiBlbGU/Lm15X21lbWJlcl9pZH0pKTtcclxuICAgIHJldHVybiB1cGRhdGVkTGlzdFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBQb2xpY3kgQ2F0ZWdvcmllcyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgb3JnYW5pemF0aW9uIHVzZXJzIGdyb3VwcyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzTGlzdCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblBvbGljeUdyb3VwcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICBjb25zdCBncm91cHM6IGFueSA9IFtdO1xyXG4gICAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICBncm91cE5hbWU6IGVsZW1lbnQuZ3JvdXBfbmFtZSxcclxuICAgICAgICAgIHVzZXJJZHM6IGVsZW1lbnQubWVtYmVyX2lkcyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGdyb3Vwcy5wdXNoKG9iaik7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBncm91cHM7XHJcbiAgICAgIGlmKHRoaXMuZ3JvdXBFbmFibGVkKXtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPWRhdGFcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0dldCB0aGUgbGlzdCBvZiBvdmVyc2VlcnMgZ3JvdXAuXHJcbiAgb3ZlcnNlZXJHcm91cExpc3QoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZT8uZ2V0T3JnYW5pemF0aW9uT3ZlcnNlZXJzR3JvdXBzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCA9IHJlcz8uZGF0YTtcclxuICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgYXBwcm92ZXJzIHdvcmtmbG93IGZyb20gdGhlIHNlbGVjdGVkIHdvcmtmbG93IG9uIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0XHJcbiAgICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBwcmVkZWZpbmVkIHdvcmtmbG93XHJcbiAgICAqL1xyXG4gIHNlbGVjdGVkV29ya2Zsb3dDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50ID09PSAtMSkge1xyXG4gICAgICAvLyB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcclxuICAgICAgLy8gdGhpcy5hZGRNb3JlTGV2ZWxzID0gdHJ1ZVxyXG4gICAgICAvLyB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGRhdGEgPSBjbG9uZURlZXAoZXZlbnQuYXBwcm92YWxfd29ya2Zsb3cpO1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpdGVtLm5hbWUgPSBpdGVtLnR5cGVcclxuICAgICAgICBjb25zdCBpZHMgPSBpdGVtLmFwcHJvdmVycy5tYXAoKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZCk7XHJcbiAgICAgICAgaXRlbS5hcHByb3ZlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gbmV3QXJyYXkuZmlsdGVyKChsZXZlbDogYW55KSA9PiBsZXZlbC5hcHByb3ZlcnMubGVuZ3RoID4gMClcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEZldGNoZXMgQXBwcm92ZXJzIHdvcmtmbG93IGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcclxuICAqIEBwYXJhbSBpZCBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcclxuICAqL1xyXG4gIGdldEFwcHJvdmVyV29ya0Zsb3coaWQ6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFdvcmtmbG93TGlzdChpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzPy5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZXJXb3JrRmxvd0xpc3QgPSByZXM7IC8vIGdldHRpbmcgYWxsIGFwcHJvdmVyIHNhdmVkIHdvcmtmbG93c1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRmV0Y2hlcyBBcHByb3ZlcnMgYW5kIHJldmlld2VycyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXHJcbiAgKiBAcGFyYW0gY2F0ZWdvcnlJZHMgY29udGFpbnMgc2VsZWN0ZWQgY2F0ZWdvcmllcyBpZCdzXHJcbiAgKi9cclxuICBnZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KGNhdGVnb3J5SWRzOiBhbnksIGFwcHJvdmVySWRzPzogYW55LCByZXZpZXdlcklkcz86IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRSZXZpZXdlcnMoY2F0ZWdvcnlJZHMpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcclxuICAgICAgICByZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMgPSB1bmlxQnkodGhpcy5hbGxBcHByb3ZlcnMuY29uY2F0KGVsZW1lbnQuYWxsX2FwcHJvdmVycyksICdtZW1iZXJfaWQnKTtcclxuICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzID0gdW5pcUJ5KGVsZW1lbnQuYWxsX2FwcHJvdmVycy5jb25jYXQodGhpcy5hbGxSZXZpZXdlcnMsIGVsZW1lbnQuYWxsX2F1dGhvcnMpLCAnbWVtYmVyX2lkJyk7XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhcHByb3Zlcklkcykge1xyXG4gICAgICAgIGxldCBvYmogPSBhcHByb3ZlcklkcztcclxuICAgICAgICBsZXQgYXBwcm92ZXJMZXZlbHMgPSBbXVxyXG4gICAgICAgIGZvciAodmFyIGl0ZW0gaW4gb2JqKSB7XHJcbiAgICAgICAgICBjb25zdCBpZHMgPSBvYmpbaXRlbV0uYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkKTtcclxuXHJcbiAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgbmFtZTogb2JqW2l0ZW1dLnR5cGUsXHJcbiAgICAgICAgICAgIGFwcHJvdmVyczogdGhpcy5zZXRMaXN0KHRoaXMuYWxsQXBwcm92ZXJzLCBpZHMsICdtZW1iZXJfaWQnKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGRhdGEubmFtZSA9PSAnUk9VTkRST0JJTicpIHtcclxuICAgICAgICAgICAgZGF0YS5uYW1lID0gJ1JPVU5ELVJPQklOJ1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChkYXRhLm5hbWUgPT0gJ0FOWU9ORScpIHtcclxuICAgICAgICAgICAgZGF0YS5uYW1lID0gJ0FOWSBPTkUnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhcHByb3ZlckxldmVscy5wdXNoKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBhcHByb3ZlckxldmVscztcclxuICAgICAgfVxyXG4gICAgICBpZiAocmV2aWV3ZXJJZHMpIHtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxSZXZpZXdlcnMsIHJldmlld2VySWRzLCAnbWVtYmVyX2lkJyk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcblxyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpXHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKioqKioqKlxyXG4gICogSXQgaXMgdG8gcG9wdWxhdGUgbW9yZSBvcHRpb25zIGVsZW1lbnRzIHdoaWxlIGVkaXRpbmcgdGhlIHBvbGljeSBmb3JtXHJcbiAgKi9cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSRVNQT05TSUJJTElUWV9DRU5URVInKTsgfVxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSRVZJRVdFUicpOyB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTsgfVxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdPVkVSU0VFUicpOyB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdBU1NPQ0lBVEVEX0RPQ1VNRU5UUycpOyB9XHJcblxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJdCBpcyB0byBhZGQgYW5kIHJlbW92ZSB0aGUgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbiB0byB0aGUgcG9saWN5IEZvcm1cclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgZGV0YWlscyByZWxhdGVkIHRvIGNoZWNrZWQgdmFsdWUsIGNvZGUgcGFydGljdWxhciBlbGVtZW50cyBmcm9tIE1vcmUgb3B0aW9uc1xyXG4gICAqL1xyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICBjYXNlICdSRVNQT05TSUJJTElUWV9DRU5URVInOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSRVZJRVdFUic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0NIRUNLUE9JTlRTJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdPVkVSU0VFUic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0FTU09DSUFURURfRE9DVU1FTlRTJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogSXQgaXMgdG8gZW5zdXJlIHdoZXRoZXIgYWxsIHJlcXVpcmVkIGxpc3RzIG9uIFBvbGljeSBmcm9tIGlzIGxvYWRlZCBmcm9tIHRoZSBhcGkgY2FsbCBvciBub3RcclxuICAgICovXHJcbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XHJcbiAgICBpZiAodGhpcy5yY0xpc3RMb2FkZWQgJiYgdGhpcy51c2Vyc0xpc3RMb2FkZWQgJiYgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCAmJiB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhICYmIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZS5zdWJzdHJpbmcoMCwgdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSlcclxuICAgICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGEuY2F0ZWdvcnlJZCkge1xyXG4gICAgICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsIFt0aGlzLmNvbnZlcnRGaWxlRGF0YS5jYXRlZ29yeUlkXSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkpIHtcclxuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuc2VsZWN0ZWRDYXRlZ29yeV0pXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0UG9saWN5KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFRyaWdnZXJzIHRoZSBjb25maXJtYXRpb24gcG9wdXAgd2hlbiBhdmFpbGFiaWxpdHkgb24gUG9saWN5IHBvcnRhbCB0b2dnbGUgaW4gT05cclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHRvZ2dsZSB2YWx1ZSB3aGljaCBpcyBhbHdheXMgdHJ1ZSBvciBmYWxzZVxyXG4gICAgKi9cclxuICBhdmFpbGFiaWxpdHlPblBvcnRhbChldmVudDogYW55KSB7XHJcblxyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkRldGFpbHM6IENvbmZpcm1hdGlvbkFsZXJ0ID0ge1xyXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBtZXNzYWdlOiBgVGhlIHBvbGljaWVzIHRoYXQgeW91IGludGVuZCB0byBtYWtlIGFjY2Vzc2libGUgdG8gdGhlIGVudGlyZSBvcmdhbml6YXRpb24gY2FuIGJlIGFkZGVkIHRvIHRoZSBwb2xpY3kgcG9ydGFsLlxyXG4gICAgICAgIEl0IGlzIGxpa2UgYSBzaGFyZWQgY2F0YWxvZyBvZiBhbGwgYWN0aXZlICYgdXBkYXRlZCBwb2xpY2llcyB0aGF0IGFueSBsb2dnZWQgaW4gdXNlciBjYW4gcmVhZC8gZG93bmxvYWQgZm9yIHJlZmVyZW5jZS5cclxuICAgICAgICBIZW5jZSwgaWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgeW91IHRvIHNldCB1cCBhbiBhdHRlc3RhdGlvbiBzY2hlZHVsZSBvciBzZWxlY3RcclxuICAgICAgICByZWFkZXJzIHRvIGF0dGVzdCB0aGUgcG9saWNpZXMuYCxcclxuICAgICAgICBhY3Rpb246ICdQT0xJQ1lfUE9SVEFMJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uQWxlcnQuZW1pdChjb25maXJtYXRpb25EZXRhaWxzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlY2VpdmVzIHRoZSBpbnB1dCBmcm9tIHRoZSBDb25maXJtYXRpb24gZGlhbG9nIG9mIGF2YWlsYWJsZSBvbiBQb2xpY3kgcG9ydGFsXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIG9wdGlvbiBmcm9tIHRoZSBjb25maXJtYXRpb24gZGlhbG9nIHdoaWNoIGlzIGFsd2F5cyBlaXRoZXIgJ1lFUycgb3IgJ05PJ1xyXG4gICAqL1xyXG4gIGNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID0gKGV2ZW50ID09ICdZRVMnKSA/IHRydWUgOiBmYWxzZVxyXG4gICAgaWYgKGV2ZW50ID09ICdOTycpIHtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmFjY2VwdFN1Z2dlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBwb2xpY3lGb3JtIHdpdGggc2VsZWN0ZWQgZWxlbWVudHMgZnJvbSB0aGUgbGlzdGluZywgZnJlcXVlbmN5LCBmaWxlIHVwbG9hZCBjb21wb25lbnRzXHJcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBmaWVsZCBvbiBQb2xpY3kgZm9ybS5cclxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtcyBjb250YWlucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBpdGVtcyBmcm9tIHRoZSBsaXN0XHJcbiAgICovXHJcbiAgc2F2ZVNlbGVjdGVkTGlzdCh0eXBlOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcblxyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzID0gdGhpcy5zZXRMaXN0KHRoaXMucmNMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnaXRlbV9pZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmNhdGVnb3J5TGlzdCwgc2VsZWN0ZWRJdGVtcywgJ19pZCcpO1xyXG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsICdfaWQnKVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzID0gW107XHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KG9iamVjdElkcyk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRhZyA9IGVsZW1lbnQuY3VzdG9tX3RhZ3M7XHJcbiAgICAgICAgICBpZiAodGFnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KCh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWUpO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcclxuICAgICAgICBsZXQgdXNlcklkcyAsZ3JvdXBJZHM7XHJcbiAgICAgICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICAgICB1c2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy51c2VycywnbWVtYmVyX2lkJylcclxuICAgICAgICAgZ3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLmdyb3VwcywnZ3JvdXBfaWQnKVxyXG4gICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID0gIHRoaXMuc2V0TGlzdCh0aGlzLmdyb3Vwc0xpc3QsIGdyb3VwSWRzLCdncm91cF9pZCcpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdXNlcklkcyA9IHNlbGVjdGVkSXRlbXNcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID0gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgdXNlcklkcywgJ215X21lbWJlcl9pZCcpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbFJldmlld2VycywgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSwgJ21lbWJlcl9pZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0VtYWlsJzpcclxuICAgICAgICBsZXQgc2VsZWN0ZWRVc2VySWRzICxzZWxlY3RlZEdyb3VwSWRzO1xyXG4gICAgICAgIGlmKHRoaXMuZ3JvdXBFbmFibGVkKXtcclxuICAgICAgICAgIHNlbGVjdGVkVXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXM/LnVzZXJzLCdtZW1iZXJfaWQnKVxyXG4gICAgICAgICAgc2VsZWN0ZWRHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXM/Lmdyb3VwcywnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSAgdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBzZWxlY3RlZEdyb3VwSWRzLCdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIHNlbGVjdGVkVXNlcklkcywgJ215X21lbWJlcl9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsKVxyXG4gICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnZW1wbG95ZWVfaWQnKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NGYWlsJzpcclxuICAgICAgICBsZXQgc2VsZWN0ZWRGYWlsVXNlcklkcyAsc2VsZWN0ZWRGYWlsR3JvdXBJZHM7XHJcbiAgICAgICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICAgICAgc2VsZWN0ZWRGYWlsVXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXM/LnVzZXJzLCdtZW1iZXJfaWQnKVxyXG4gICAgICAgICAgc2VsZWN0ZWRGYWlsR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy5ncm91cHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cCA9ICB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIHNlbGVjdGVkRmFpbEdyb3VwSWRzLCdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBzZWxlY3RlZEZhaWxVc2VySWRzLCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cClcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdCh0aGlzLnVzZXJzTGlzdCwgc2VsZWN0ZWRJdGVtcywgJ2VtcGxveWVlX2lkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FwcHJvdmVycyc6XHJcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsQXBwcm92ZXJzLCBzZWxlY3RlZEl0ZW1zLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9yZUxldmVscykge1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLnB1c2goeyBuYW1lOiB0aGlzLndvcmtmbG93VHlwZSwgYXBwcm92ZXJzIH0pO1xyXG4gICAgICAgICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbdGhpcy5hcHByb3ZlcnNMaXN0SW5kZXhdID0geyBuYW1lOiB0aGlzLndvcmtmbG93VHlwZSwgYXBwcm92ZXJzIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyX2F0dGFjaG1lbnRzJzpcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzID0gc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcyA9IHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NvY2lhdGVkRG9jdW1lbnRzJzpcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMuZm9ybWF0RmlsZXMgPSBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscyA/PyBbXTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiA9IHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggPz8gMDtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gc2VsZWN0ZWRJdGVtcz8ucmVxdWlyZWRQb2ludCA/PyAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0b3IoKTtcclxuICB9XHJcblxyXG4gIC8vcmV0dXJuIHRoZSBfaWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3ZlcnNlZXIgZ3JvdXAuXHJcbiAgZ2V0R3JvdXBPYmplY3RJZChvdmVyc2Vlckdyb3VwPzogYW55KXtcclxuICAgIGxldCBvdmVyc2Vlckdyb3VwSWRBcnJheSA9IG92ZXJzZWVyR3JvdXAubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZCk7XHJcbiAgICByZXR1cm4gb3ZlcnNlZXJHcm91cElkQXJyYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogUmVtb3ZlcyB0aGUgcGFydGljdWxhciBlbGVtZW50IGZyb20gc2VsZWN0ZWQgbGlzdFxyXG4gICAgKiBAcGFyYW0gdHlwZSBkZWZpbmVzIHRoZSBwYXJ0aWN1bGFyIGNhc2VcclxuICAgICogQHBhcmFtIGV2ZW50IGhvbGRzIHRoZSBpZCBvciBrZXkgb2YgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICAqIEBwYXJhbSByZW1vdmVJbmRleCBjb250YWlucyB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxyXG4gICAgKi9cclxuICByZW1vdmUodHlwZTogYW55LCBldmVudDogYW55LCByZW1vdmVJbmRleD86IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmZpbmRJbmRleCgocmM6IGFueSkgPT4gcmMucmNfaWQgPT0gZXZlbnQucmNfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5zcGxpY2UocmNJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgY29uc3QgZW50cnVzdEluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzLmZpbmRJbmRleCgob3duZXI6IGFueSkgPT4gb3duZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5zcGxpY2UoZW50cnVzdEluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdncm91cEFzc2lnbmVlcyc6XHJcbiAgICAgICAgICBjb25zdCBncm91cEluZGV4OiBhbnkgPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5maW5kSW5kZXgoKGdyb3VwOiBhbnkpID0+IGdyb3VwLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWU/LnNwbGljZShncm91cEluZGV4LCAxKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5maW5kSW5kZXgoKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5zcGxpY2UocmV2aWV3ZXJJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5maW5kSW5kZXgoKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5zcGxpY2Uob3ZlcnNlZXJJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NHcm91cEVtYWlsJzpcclxuICAgICAgICBjb25zdCBjY0dyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5maW5kSW5kZXgoKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWw/LnNwbGljZShjY0dyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZCh0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbClcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWwnOlxyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuZmluZEluZGV4KChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuc3BsaWNlKG92ZXJzZWVyTm90aWZ5SW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjR3JvdXBGYWlsRW1haWwnOlxyXG4gICAgICAgIGNvbnN0IGNjRmFpbEdyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8uZmluZEluZGV4KChncm91cDogYW55KSA9PiBncm91cD8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cD8uc3BsaWNlKGNjRmFpbEdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQodGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FwcHJvdmVycyc6XHJcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5maW5kSW5kZXgoKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLnNwbGljZShhcHByb3ZlcnNJbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleCgoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuaXRlbV9pZCA9PSBldmVudC5pdGVtX2lkKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLnNwbGljZShjYXRlZ29yeUluZGV4LCAxKTtcclxuICAgICAgICBjb25zdCB0YWcgPSBldmVudC5jdXN0b21fdGFncztcclxuICAgICAgICBpZiAodGFnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhDVCA9IHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleCgodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5zcGxpY2UoaW5kZXhDVCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLCAnX2lkJylcclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKDAsIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGgpXHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybSA9IE9iamVjdC5hc3NpZ24odGhpcy5wb2xpY3lGb3JtKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gLT0gMTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzIC09IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dvcmtmbG93TGV2ZWwnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAgKiBSZWZyZXNoZXMgdGhlIGFzc2lnbmVlcyBhbmQgb3ZlcnNlZXJzIGxpc3Qgc3VjaCB0aGF0IGJvdGggbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZSBzYW1lIHVzZXJzIGJhc2VkIG9uIHNlbGVjdGlvblxyXG4gICAgKi9cclxuICByZWZyZXNoQWxsTGlzdHMoKSB7XHJcbiAgICBsZXQgYXNzaWduZWVzSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGFsbFVzZXJzID0gY2xvbmVEZWVwKHRoaXMudXNlcnNMaXN0KTtcclxuICAgIGNvbnN0IGFzc2lnbmVlcyA9IGNsb25lRGVlcCh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMpO1xyXG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsKTtcclxuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcCh0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwpO1xyXG4gICAgYXNzaWduZWVzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgYXNzaWduZWVzSWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XHJcbiAgICB9KTtcclxuICAgIG92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XHJcbiAgICB9KTtcclxuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBhc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZXNJZHMpXTtcclxuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xyXG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLmFzc2lnbm9yc0xpc3QgPSBiZWhhbGZVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShyZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSkpO1xyXG4gICAgdGhpcy5hc3NpZ25lZXNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEocmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpKSk7XHJcbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcclxuICAgICAgY29uc3QgdXNlck9iaiA9IHRoaXMuYXNzaWduZWVzTGlzdFxyXG4gICAgICB1c2VyT2JqPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICB1c2VyLm1lbWJlcl9pZCA9IHVzZXIubXlfbWVtYmVyX2lkXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMub3duZXJsaXN0ID0gdXNlck9ialxyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yZXZpZXdlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEoYXNzaWduZWVzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpKSk7XHJcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgcmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogUmV0dXJucyB3aG9sZSBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xyXG4gICAgKiBAcGFyYW0gbGlzdCBpdCBpcyB0aGUgbWFpbiBsaXN0ICB3aGljaCBjb250YWlucyBhbGwgZWxlbWVudHMgbGlzdFxyXG4gICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBmaWx0ZXIgc2VsZWN0ZWQgbGlzdCBmcm9tIHRoZSBsaXN0XHJcbiAgICAqIEBwYXJhbSBpZHMgc2VsZWN0ZWQgaWRzIGFycmF5XHJcbiAgICAqL1xyXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGlkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleCgobGlzdEVsZW1lbnQ6IGFueSkgPT4gbGlzdEVsZW1lbnRba2V5XSA9PSBlbGVtZW50KTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogUmV0dXJucyBpZCdzIGZyb20gYSBwYXJ0aWN1bGFyIGxpc3QgZWxlbWVudHNcclxuICAgICogQHBhcmFtIGxpc3QgYWN0dWFsIHNlbGVjdGVkIGxpc3RcclxuICAgICogQHBhcmFtIGtleSBjb250YWlucyBrZXkgdG8gZXh0cmFjdCBpZCBmcm9tIHRoZSBsaXN0XHJcbiAgICAqL1xyXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcChlbGUgPT4geyBpZiAoZWxlW2tleV0pIHsgcmV0dXJuIGVsZVtrZXldOyB9IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFNldHMgdGhlIHJldmlld2VyIHR5cGUgaW4gYXBwcm92YWwgd29ya2Zsb3dcclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHJldmlld2VyIHR5cGVcclxuICAgICovXHJcbiAgcmV2aWV3ZXJUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMud29ya2Zsb3dUeXBlID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFNldHMgZnJlcXVlbmN5IGluIGVkaXQgIG1vZGVcclxuICAqL1xyXG4gIGZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHsgLy9uZWVkcyB0byBkaXNjdXNzIHdpdGggYmFja2VuZCBhYm91dCBlZGl0IGFuZCBkZWZhdWx0IHZhbHVlc1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgcGF0dGVybjogZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzLCAvL1xyXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUsXHJcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ubWFya19mYWlsZWRfYWZ0ZXIsXHJcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXHJcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgdGltZUluMjRIcjogZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6ICcyMzo1OTowMCcsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihuZXcgRGF0ZShldmVudC5zdGFydERhdGUpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICBzdGFydERhdGU6IFwiXCIsXHJcbiAgICAgIHJlcG9ydElkOiAwLFxyXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6ICcyMzo1OTowMCcpLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQuZnJlcXVlbmN5X3RleHRcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZyZXF1ZW5jeURhdGEoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICAqL1xyXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZnJlcXVlbmN5X3RleHQgPSBldmVudC5wbGFjZWhvbGRlcixcclxuICAgIHRoaXMucG9saWN5Rm9ybS5tYXJrX2ZhaWxlZF9hZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mYWlsZWRfdGltZSA9IGV2ZW50LnRpbWVJbjI0SHJcclxuXHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcclxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGV2ZW50LndpbmRvdyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxyXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcclxuICAgICAgc3RhcnRfb2ZfZGF5X3V0YzogZXZlbnQuc3RhcnRGcm9tLFxyXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxyXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQb3B1bGF0aW9uKHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9wdWxhdGVzIHRoZSBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAqL1xyXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkVGltZSA9IGV2ZW50Py5mcmVxdWVuY3lfdGltZTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAoZXZlbnQ/LnBsYWNlaG9sZGVyKSA/IGV2ZW50LnBsYWNlaG9sZGVyIDogJ0hvdyBvZnRlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgYXR0ZXN0ZWQ/JztcclxuICB9XHJcblxyXG5cclxuICByZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHsgLy9uZWVkcyB0byBkaXNjdXNzIHdpdGggYmFja2VuZCBhYm91dCBlZGl0IGFuZCBkZWZhdWx0IHZhbHVlc1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgcGF0dGVybjogZXZlbnQ/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscywgLy9cclxuICAgICAgd2luZG93OiBldmVudD8ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcclxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5yZXZpZXdGYWlsZWRBZnRlcixcclxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiAnJyxcclxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICB0aW1lSW4yNEhyOiBldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6ICcyMzo1OTowMCcsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihuZXcgRGF0ZShldmVudC5zdGFydERhdGUpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICBzdGFydERhdGU6IFwiXCIsXHJcbiAgICAgIHJlcG9ydElkOiAwLFxyXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoZXZlbnQucmV2aWV3RmFpbGVkVGltZSAhPSAnJyA/IGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgOiAnMjM6NTk6MDAnKSxcclxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnJldmlld2ZyZXF1ZW5jeURldGFpbHNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIHJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKSB7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgICAgcGF0dGVybjogJycsXHJcbiAgICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICB3aW5kb3c6IDAsXHJcbiAgICAgIGZhaWxlZDogMCxcclxuICAgICAgdGltZTogJzExOjU5IHBtJyxcclxuICAgICAgZmFpbGVkVGltZTogJycsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDNcclxuICAgIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfdHlwZSA9ICcnO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSAnMjM6NTk6MDAnO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFNldHMgdGhlIHNlbGVjdGVkIHJldmlld2VyIGZyZXF1ZW5jeSBkZXRhaWxzIGluIHRoZSBwb2xpY3lGb3JtXHJcbiAgICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAgKi9cclxuICByZXZpZXdlckZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV90eXBlID0gZXZlbnQucGF0dGVybi5zcGxpdCgnficpWzBdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSBldmVudC53aW5kb3c7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkVGltZSA9IGV2ZW50LnRpbWVJbjI0SHJcclxuXHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgZmFsc2UpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudC50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBldmVudC5saWZlY3ljbGVEZXRhaWxzLFxyXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXHJcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXHJcbiAgICAgIGRvbV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXJcclxuICAgIH07XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBQb3B1bGF0ZXMgdGhlIHJldmlld2VyIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XHJcbiAgICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAgKi9cclxuICByZXZpZXdlckZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSBldmVudD8uZnJlcXVlbmN5X3RpbWU7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5saWZlY3ljbGUgPSBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID0gZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMDtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gZXZlbnQ/LmRvbV91dGM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9IChldmVudD8ucGxhY2Vob2xkZXIpID8gZXZlbnQucGxhY2Vob2xkZXIgOiAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIHBvbGljeSBmb3JtXHJcbiAgICAqL1xyXG4gIHZhbGlkYXRlUG9saWN5KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHJcbiAgICB9LCAxMDApO1xyXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZTtcclxuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKSA9PSAnJ1xyXG4gICAgICB8fCAoIXRoaXMucG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiYgKCggdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCAmJiAhdGhpcy5ncm91cEVuYWJsZWQpIHx8ICgodGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCB8fCB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID4gMCApICYmIHRoaXMuZ3JvdXBFbmFibGVkKSkpXHJcbiAgICAgIHx8ICh0aGlzLnBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmICghdGhpcy5ncm91cEVuYWJsZWQgIHx8ICggIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPT0gMCAmJiB0aGlzLmdyb3VwRW5hYmxlZCkpKVxyXG4gICAgICB8fCAoIXRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgJiYgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmxlbmd0aCA+IDApXHJcbiAgICAgIHx8ICh0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICYmIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5sZW5ndGggPT0gMClcclxuICAgICAgfHwgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAodGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCA9PSAwICYmIHRoaXMucG9saWN5QXBwcm92YWxGbGFnID09PSAwKSB8fCAodGhpcy5mb3JtYXRFdmlkZW5jZSAmJiB0aGlzLmZvcm1hdEV2aWRlbmNlLm5ld0xpbmsuY29udGFpbnNFcnJvcikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIE1ha2VzIGFuIGFwaSBjYWxsIHRvIGNyZWF0ZSBhIHBvbGljeVxyXG4gICogQHBhcmFtIHBvbGljeSBjb250YWlucyBwb2xpY3lGb3JtIGRhdGFcclxuICAqL1xyXG4gIHN1Ym1pdFBvbGljeSgpIHtcclxuXHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUG9saWN5KCk7XHJcbiAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIGNvbnN0IHBvbGljeSA9IHRoaXMucG9saWN5Rm9ybTtcclxuICAgIGxldCBhcHByb3ZlcnNEYXRhOiBhbnkgPSB7fVxyXG4gICAgY29uc3QgcG9saWN5U2VsZWN0ZWRBcHByb3ZlcnMgPSBjbG9uZURlZXAocG9saWN5LnNlbGVjdGVkQXBwcm92ZXJzKTtcclxuICAgIHBvbGljeVNlbGVjdGVkQXBwcm92ZXJzLmZvckVhY2goKGxldmVsOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGxldmVsLm5hbWUgPT0gJ1JPVU5ELVJPQklOJykge1xyXG4gICAgICAgIGxldmVsLm5hbWUgPSAnUk9VTkRST0JJTidcclxuICAgICAgfSBlbHNlIGlmIChsZXZlbC5uYW1lID09ICdBTlkgT05FJykge1xyXG4gICAgICAgIGxldmVsLm5hbWUgPSAnQU5ZT05FJ1xyXG4gICAgICB9XHJcbiAgICAgIGFwcHJvdmVyc0RhdGFbJ2xldmVsJyArIChpbmRleCArIDEpXSA9IHtcclxuICAgICAgICBhcHByb3ZlcnM6IGxldmVsLmFwcHJvdmVycy5tYXAoKGFwcHJvdmVyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICAgICAgbWVtYmVyX2lkOiBhcHByb3Zlci5tZW1iZXJfaWQsIGFwcHJvdmFsX2ZsYWc6IGZhbHNlLCByZWplY3RfZmxhZzogZmFsc2UsIHJlbW92ZV9mbGFnOiBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0eXBlOiBsZXZlbC5uYW1lLFxyXG4gICAgICAgIGFwcHJvdmFsX2RvbmU6IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCByZXZpZXdlckZpbGVzQXJyYXkgPSAgY2xvbmVEZWVwKHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyk7XHJcbiAgICBjb25zdCByZXZpZXdlckZpbGVzID0gcmV2aWV3ZXJGaWxlc0FycmF5Lm1hcCgoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgIGZpbGUubmFtZSA9IGZpbGUuZmlsZW5hbWU7XHJcbiAgICAgIGZpbGUuZmlsZV9wYXRoID0gZmlsZS5maWxlcGF0aFxyXG4gICAgICBmaWxlLm9yZ19uYW1lID0gZmlsZS5vcmlnaW5hbF9maWxlbmFtZVxyXG4gICAgICBkZWxldGUgZmlsZS5maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZXBhdGg7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZmlsZS5saW5rU2V0O1xyXG4gICAgICByZXR1cm4gZmlsZTtcclxuICAgIH0pXHJcblxyXG4gICAgbGV0IGF0dGVzdGF0aW9uRmlsZXNBcnJheSA9IGNsb25lRGVlcChwb2xpY3kuYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyk7XHJcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gYXR0ZXN0YXRpb25GaWxlc0FycmF5Lm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgZWxlLm5hbWUgPSBlbGUuZmlsZW5hbWU7XHJcbiAgICAgIGVsZS5maWxlX3BhdGggPSBlbGUuZmlsZXBhdGhcclxuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlbmFtZVxyXG4gICAgICBlbGUuZm9sZGVyX2lkID0gKGVsZT8uZm9sZGVyX2lkKSA/IGVsZS5mb2xkZXJfaWQgOiAwO1xyXG4gICAgICBlbGUucGF0aCA9IChlbGU/LnBhdGgpID8gZWxlLnBhdGggOiAoZWxlLmZpbGVwYXRoICsgZWxlLmZpbGVuYW1lKTtcclxuICAgICAgZWxlLmlzTGlua1NldCA9IGVsZS5saW5rU2V0XHJcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZXBhdGg7XHJcbiAgICAgIGRlbGV0ZSBlbGUub3JpZ2luYWxfZmlsZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUubGlua1NldDtcclxuICAgICAgZGVsZXRlIGVsZS5maWxlX25hbWU7XHJcbiAgICAgIHJldHVybiBlbGU7XHJcbiAgICB9KVxyXG4gICAgY29uc3QgcmV2aWV3ZXJJRCA9IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJldmlld2VycywgJ21lbWJlcl9pZCcpXHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgcG9saWN5X25hbWU6IHBvbGljeS5wb2xpY3lOYW1lLFxyXG4gICAgICBub3RlczogcG9saWN5LnBvbGljeU5vdGVzLFxyXG4gICAgICBpc19wb3J0YWxfZW5hYmxlOiAocG9saWN5LmF2YWlsYWJsZU9uUG9ydGFsKSA/IDEgOiAwLFxyXG4gICAgICBpc19zdWdnZXRpb25fZW5hYmxlOiAocG9saWN5LmFjY2VwdFN1Z2dlc3Rpb25zKSA/IDEgOiAwLFxyXG4gICAgICBjYXRlZ29yeV9pZF9hcnI6IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZENhdGVnb3JpZXMsICdpdGVtX2lkJyksXHJcbiAgICAgIGFwcHJvdmVyczogYXBwcm92ZXJzRGF0YSxcclxuICAgICAgZ3JvdXBfZW1wbG95ZWVJZHM6IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZEFzc2lnbmVlcywgJ2VtcGxveWVlX2lkJykudG9TdHJpbmcoKSxcclxuICAgICAgdXNlcmdyb3VwX2lkcyA6IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZEdyb3VwQXNzaWduZWUsJ19pZCcpID8/IFtdLFxyXG4gICAgICBJc19hcHByb3ZhbDogMCwgLy9uZWVkcyB0byBjaGVjayBpbiBmZVxyXG5cclxuICAgICAgYXNzb2NpYXRlZF9kb2N1bWVudHM6IHBvbGljeS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID8gYXR0ZXN0YXRpb25GaWxlczpbXSxcclxuXHJcbiAgICAgIGN1c3RvbV90YWdzOiBKU09OLnN0cmluZ2lmeShwb2xpY3kuY3VzdG9tVGFncyksXHJcblxyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMgOiAnJyxcclxuICAgICAgZnJlcXVlbmN5X3RleHQ6IChwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LmZyZXF1ZW5jeV90ZXh0IDogJycsXHJcbiAgICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlIDogMCxcclxuICAgICAgZmFpbGVkX3RpbWU6IChwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LmZhaWxlZF90aW1lIDogJycsXHJcbiAgICAgIG1hcmtfZmFpbGVkX2FmdGVyOiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5tYXJrX2ZhaWxlZF9hZnRlciA6ICcnLFxyXG4gICAgICAvLyBzdGFydERhdGU6IHBvbGljeS5wb2xpY3lEdWVEYXRlLnRvRGF0ZVN0cmluZygpLFxyXG4gICAgICBzdGFydERhdGU6IG1vbWVudChwb2xpY3kucG9saWN5RHVlRGF0ZSkuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVknKSxcclxuXHJcbiAgICAgIFJldmlld2VyQXR0YWNobWVudHM6ICAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMpID8gcmV2aWV3ZXJGaWxlcyA6IFtdLFxyXG4gICAgICBSZXZpZXdlckxpbmtzOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MpID8gcG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzIDogW10sXHJcbiAgICAgIFJldmlld2VyTWVtYmVySWQ6IChwb2xpY3kuYWRkUmV2aWV3ZXJzKSAmJiByZXZpZXdlcklEWzBdPyByZXZpZXdlcklEWzBdIDogMCxcclxuICAgICAgaXNSZXZpZXc6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmICgocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzKSB8fCAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzKSkpICYmIHJldmlld2VySURbMF0gPyAxIDogMCxcclxuXHJcbiAgICAgIHJldmlld0ZhaWxlZEFmdGVyOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZXZpZXdGYWlsZWRBZnRlciA6IDAsXHJcbiAgICAgIHJldmlld0ZhaWxlZFRpbWU6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld0ZhaWxlZFRpbWUgOiAnJyxcclxuICAgICAgcmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgOiAnJyxcclxuICAgICAgcmV2aWV3X2ZyZXF1ZW5jeV90eXBlOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgOiAnJyxcclxuICAgICAgcmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA6IDAsXHJcblxyXG4gICAgICBlbnRpdGllczogdGhpcy5wb2xpY3lGb3JtPy5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSQ3MsICdpdGVtX2lkJykudG9TdHJpbmcoKTpcIlwiLFxyXG4gICAgICByaXNrX2NsYXNzOiBwb2xpY3kucmlza1JhdGluZy50b1N0cmluZygpLFxyXG5cclxuICAgICAgQ0NGYWlsRW1haWw6cG9saWN5LmFkZE92ZXJzZWVycyAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuQ0NGYWlsRW1haWwsICdlbXBsb3llZV9lbWFpbCcpLnRvU3RyaW5nKCk6XCJcIixcclxuICAgICAgQ0NFbWFpbDogcG9saWN5LmFkZE92ZXJzZWVycyA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5DQ0VtYWlsLCAnZW1wbG95ZWVfZW1haWwnKS50b1N0cmluZygpOiBcIlwiLFxyXG5cclxuICAgICAgY2hlY2twb2ludERldGFpbHM6IChwb2xpY3kuYWRkQ2hlY2twb2ludHMpID8gcG9saWN5LmNoZWNrcG9pbnREZXRhaWxzIDogW10sXHJcbiAgICAgIHRvdGFsUXVlc3Rpb246IChwb2xpY3kuYWRkQ2hlY2twb2ludHMgJiYgcG9saWN5LnRvdGFsUXVlc3Rpb24pID8gcG9saWN5LnRvdGFsUXVlc3Rpb24gOiAwLC8vXHJcbiAgICAgIHBhc3NpbmdNYXJrczogKHBvbGljeS5hZGRDaGVja3BvaW50cyAmJiBwb2xpY3kucGFzc2luZ01hcmtzKSA/IHBvbGljeS5wYXNzaW5nTWFya3MgOiAwLC8vXHJcblxyXG4gICAgICBwb2xpY3lBcHByb3ZhbEZsYWc6IDAsXHJcblxyXG4gICAgICBpc19zaWduYXR1cmVfcmVxdWlyZWQ6IHBvbGljeS5yZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uID8gMSA6IDAsXHJcbiAgICAgIGNjX3VzZXJncm91cF9pZHM6IHRoaXMuY2NFbWFpbE9iaklkcyxcclxuICAgICAgY2NfZmFpbF91c2VyZ3JvdXBfaWRzOiB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzLFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLnN1Ym1pdFBvbGljeShwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcclxuICAgICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGE/LmZpbGVOYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxpbmtEb2N1bWVudFdpdGhQb2xpY3kodGhpcy5jb252ZXJ0RmlsZURhdGEpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JywgJ2FsZXJ0Jyk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnKSB7XHJcbiAgICAgIGlmICh0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMCkge1xyXG4gICAgICAgIGRlbGV0ZSBwYXlsb2FkLmFwcHJvdmVyc1xyXG4gICAgICAgIHBheWxvYWQucG9saWN5QXBwcm92YWxGbGFnID0gMlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIHBvbGljeSBoYXMgYmVlbiB1cGRhdGVkJywgJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5iYXNlVVJMICsgJy9hbGwvcG9saWN5L3dvcmtyb29tP2lkPScgKyB0aGlzLnBvbGljeUlkXHJcbiAgICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvd29ya3Jvb20nXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbGlua0RvY3VtZW50V2l0aFBvbGljeShkb2N1bWVudDogYW55KSB7XHJcbiAgICBpZiAoZG9jdW1lbnQuZmlsZU5hbWUgJiYgKGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdwZGYnIHx8IGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnIHx8XHJcbiAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fCBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCcpKSB7XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5leHRyYWN0RmlsZShkb2N1bWVudC5maWxlRXh0ZW5zaW9uLCBkb2N1bWVudC5maWxlUGF0aCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIGlmIChyZXMubWVzc2FnZSA9PT0gJ2RvbmUnIHx8IHJlcy5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHwgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS9lZGl0LXBvbGljeSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdwZGYnIHx8IGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXRcXCdzIGdpdmUgaXQgYW5vdGhlciB0cnksIHNoYWxsIHdlPycsICdhbGVydCcpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXRcXCdzIGdpdmUgaXQgYW5vdGhlciB0cnksIHNoYWxsIHdlPycsICdhbGVydCcpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBvcGVucyB0aGUgZGF0ZSBwaWNrZXIgb24gcG9saWN5IGZvcm1cclxuICAgICovXHJcbiAgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5zZXRBY3RpdmVGaWVsZFNlbGVjdG9yKCdJU1NVRV9EQVRFX1RJTUUnLCAnSVNTVUVfREFURV9USU1FJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIGNsb3NlcyB0aGUgZGF0ZSBwaWNrZXIgZnJvbSBwb2xpY3kgZm9ybVxyXG4gICovXHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCFldnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uX2QpIHtcclxuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVxyXG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXREYXRlKCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldE1vbnRoKCldO1xyXG4gICAgICBjb25zdCB5ZWFyVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IGV2dD8uZGF0ZT8uX2Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLmNsb3NlKCk7XHJcbiAgfVxyXG4gIGVkaXRQb2xpY3lGcm9tRG9jdW1lbnRzKCkge1xyXG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xyXG4gICAgdGhpcy5zaGlmdFRvRWRpdE1vZGUuZW1pdCgpXHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcclxuICAgIHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5lZGl0UG9saWN5KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JDcmVhdGVEb2N1bWVudHMoKSB7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gKGRhdGEgPT09IFwidHJ1ZVwiKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZWRpdFBvbGljeSgpIHtcclxuICAgIHRoaXMubW9kZSA9ICdFRElUJ1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5wb2xpY3lJZCkge1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UuZWRpdFBvbGljeSh0aGlzLnBvbGljeUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlc1swXTtcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKChpZDogYW55KSA9PiBpZC5jYXRPYmpJZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPSBkYXRhLnBvbGljeUFwcHJvdmFsRmxhZztcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMpXHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KGNhdGVnb3J5SWRzLCBkYXRhLmFwcHJvdmVycywgW2RhdGEuUmV2aWV3ZXJNZW1iZXJJZF0pXHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVBvbGljeUZvcm0oZGF0YSwgY2F0ZWdvcnlJZHMpO1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSlcclxuICAgICAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSlcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQb2xpY3lGb3JtKGRhdGE6IGFueSwgY2F0ZWdvcnlJZHM6IGFueSkge1xyXG5cclxuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSBkYXRhLlJldmlld2VyQXR0YWNobWVudHMubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgZmlsZS5maWxlbmFtZSA9IGZpbGUubmFtZVxyXG4gICAgICBmaWxlLmZpbGVwYXRoID0gZmlsZS5maWxlX3BhdGhcclxuICAgICAgZmlsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGZpbGUub3JnX25hbWVcclxuICAgICAgZmlsZS5maWxlX25hbWUgPSBmaWxlLm9yZ19uYW1lXHJcbiAgICAgIGZpbGUubGlua1NldCA9ICcnXHJcbiAgICAgIGRlbGV0ZSBmaWxlLm5hbWVcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZV9wYXRoXHJcbiAgICAgIGRlbGV0ZSBmaWxlLm9yZ19uYW1lXHJcblxyXG4gICAgICByZXR1cm4gZmlsZTtcclxuICAgIH0pXHJcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGVsZS5maWxlbmFtZSA9IGVsZS5uYW1lXHJcbiAgICAgIGVsZS5maWxlcGF0aCA9IGVsZS5maWxlX3BhdGhcclxuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZVxyXG4gICAgICBlbGUuZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZVxyXG4gICAgICBlbGUubGlua1NldCA9IGVsZS5pc0xpbmtTZXRcclxuICAgICAgZGVsZXRlIGVsZS5uYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVfcGF0aDtcclxuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUuaXNMaW5rU2V0O1xyXG4gICAgICByZXR1cm4gZWxlO1xyXG4gICAgfSlcclxuICAgIGNvbnN0IGdyb3VwX2VtcGxveWVlSWRzID0gZGF0YS5ncm91cF9lbXBsb3llZU5hbWVzLm1hcCgoaWQ6IGFueSkgPT4gaWQuZW1wbG95ZWVfaWQpO1xyXG4gICAgY29uc3QgZ3JvdXBfSWRzID0gZGF0YT8udXNlcmdyb3VwX2lkcz8ubWFwKChpZDphbnkpPT4gaWQpID8/IFtdXHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmNhdGVnb3J5TGlzdCwgY2F0ZWdvcnlJZHMsICdfaWQnKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZGF0YS5wb2xpY3lfbmFtZSxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5vdGVzID0gZGF0YS5ub3RlcyxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSAoZGF0YS5jdXN0b21fdGFncykgPyBkYXRhLmN1c3RvbV90YWdzIDogW107XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID0gKGdyb3VwX2VtcGxveWVlSWRzLmxlbmd0aCA+IDApID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgZ3JvdXBfZW1wbG95ZWVJZHMsICdlbXBsb3llZV9pZCcpIDogW107IC8vZG91YnQgaW4gbmFtZVxyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPSAoZ3JvdXBfSWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLmdyb3Vwc0xpc3QsZ3JvdXBfSWRzLCdfaWQnKSA6IFtdO1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IChkYXRhLmVudGl0aWVzKSA/IHRoaXMuc2V0TGlzdCh0aGlzLnJjTGlzdCwgZGF0YS5lbnRpdGllcy5zcGxpdCgnLCcpLCAnaXRlbV9pZCcpIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSAoZGF0YS5DQ0ZhaWxFbWFpbCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSAoZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLCAnX2lkJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsID0gKGRhdGEuQ0NFbWFpbCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRW1haWwuc3BsaXQoJywnKSwgJ2VtcGxveWVlX2VtYWlsJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSAoZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIGRhdGE/LmNjX3VzZXJncm91cF9pZHMsICdfaWQnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID0gZGF0YS5lbmFibGVQb3J0YWwgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBkYXRhLmVuYWJsZVN1Z2dlc3Rpb24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbiA9IGRhdGEuaXNfc2lnbmF0dXJlX3JlcXVpcmVkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJpc2tSYXRpbmcgPSAoZGF0YS5yaXNrX2NsYXNzKSA/IE51bWJlcihkYXRhLnJpc2tfY2xhc3MpIDogMTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gKGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMpID8ge1xyXG4gICAgICBmb3JtYXRGaWxlczogYXR0ZXN0YXRpb25GaWxlc1xyXG4gICAgfSA6IHsgZm9ybWF0RmlsZXM6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IChkYXRhLnN0YXJ0RGF0ZSkgPyBtb21lbnQoZGF0YS5zdGFydERhdGUpIDogbW9tZW50KCk7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSAoZGF0YS5jaGVja3BvaW50cykgPyBkYXRhLmNoZWNrcG9pbnRzIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiA9IChkYXRhLnRvdGFsX21hcmtzKSA/IGRhdGEudG90YWxfbWFya3MgOiAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IChkYXRhLnBhc3NfbWFya3MpID8gZGF0YS5wYXNzX21hcmtzIDogMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcyA9IChkYXRhLlJldmlld2VyQXR0YWNobWVudHMpID8ge1xyXG4gICAgICBmb3JtYXRGaWxlczogcmV2aWV3ZXJGaWxlcyxcclxuICAgICAgZm9ybWF0TGlua3M6IGRhdGEuUmV2aWV3ZXJMaW5rcyxcclxuICAgIH0gOiB7IGZvcm1hdEZpbGVzOiBbXSwgZm9ybWF0TGlua3M6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gKGRhdGEuUmV2aWV3ZXJNZW1iZXJJZCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPSAodGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycyA9ICh0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwubGVuZ3RoID4gMCB8fCB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgLy8gdGhpcy5jaGVja0ZvckNyZWF0ZURvY3VtZW50cygpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG4gIGNoYW5nZU5hbWUoZXZlbnQ6c3RyaW5nKXtcclxuICAgIGxldCB0ZXh0ID0gZXZlbnQ7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88KC4qPyk+L2dpLCcnKTtcclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iXX0=
1261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUW5GLE1BQU0sT0FBTyx1QkFBdUI7SUFxSWxDLFlBQW9CLGFBQTRCLEVBQ3RDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QjtRQVRsQixrQkFB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bmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIHVuaXFCeSB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFsZXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9saWN5Rm9ybSB9IGZyb20gJy4uL3dvcmtmbG93LWludGVyZmFjZXMvY3JlYXRlLXBvbGljeS1mb3JtJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2xpY3lTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcG9saWN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZm9ybWF0LWFuZC1ldmlkZW5jZS9mb3JtYXQtYW5kLWV2aWRlbmNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wb2xpY3knLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UG9saWN5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgcG9saWN5SWQgPSAnJztcclxuICBASW5wdXQoKSBmZWF0dXJlOmFueTtcclxuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzaGlmdFRvRWRpdE1vZGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgY29udmVydEZpbGVEYXRhOiBhbnkgPSB7fVxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkgPSAnJ1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZCgnZm9ybWF0RXZpZGVuY2UnKSBmb3JtYXRFdmlkZW5jZSE6IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBwb2xpY3kuJyxcclxuICB9O1xyXG4gIHdvcmtmbG93VHlwZSA9ICdTRVFVRU5USUFMJ1xyXG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgbmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICByY0xpc3Q6IGFueSA9IFtdO1xyXG4gIHVzZXJzTGlzdDogYW55ID0gW107XHJcbiAgYWxsQXBwcm92ZXJzOiBhbnkgPSBbXTtcclxuICBhbGxSZXZpZXdlcnM6IGFueSA9IFtdO1xyXG4gIGFzc2lnbmVlc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG93bmVybGlzdDphbnkgPVtdO1xyXG4gIHJldmlld2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG92ZXJzZWVyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHVzZXJzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5TGlzdDogYW55ID0gW107XHJcbiAgZ3JvdXBzTGlzdDogYW55W10gPSBbXTtcclxuICB3b3JrRmxvd0xpc3Q6IGFueVtdID0gW107XHJcbiAgYXBwcm92ZXJXb3JrRmxvd0xpc3Q6IGFueVtdID0gW107XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgY2NFbWFpbE9iaklkczogYW55W10gPSBbXTtcclxuICBjY0ZhaWxHcm91cE9iaklkczogYW55W10gPSBbXTtcclxuXHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBncm91cHNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlDb25maWcgPSB7XHJcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IENhdGVnb3J5JyxcclxuICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnQ2F0ZWdvcnkgc2VsZWN0ZWQnLFxyXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnQ2F0ZWdvcmllcyBzZWxlY3RlZCcsXHJcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBDYXRlZ29yeScsXHJcbiAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcclxuICAgIHdvcmtmbG93OiAncG9saWN5J1xyXG4gIH1cclxuICBhcHByb3ZhbFdvcmtmbG93Q29uZmlnID0ge1xyXG4gICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdVc2VycyBzZWxlY3RlZCcsXHJcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBVc2VyJyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkTW9yZUxldmVscyA9IGZhbHNlO1xyXG4gIGFwcHJvdmVyc0xpc3RJbmRleCA9IDA7XHJcbiAgd29ya2Zsb3dMaXN0ID0gWydTRVFVRU5USUFMJywgJ1JPVU5ELVJPQklOJywgJ0FOWSBPTkUnXTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIGRhdGVDb25maWcgPSB7XHJcbiAgICBkaXNhYmxlS2V5cHJlc3M6IHRydWUsXHJcbiAgICBmb3JtYXQ6ICdERCBNTU0gWVlZWScsXHJcbiAgICB1blNlbGVjdE9uQ2xpY2s6IHRydWUsXHJcbiAgICBvcGVuT25DbGljazpmYWxzZSxcclxuICAgIG9wZW5PbkZvY3VzOmZhbHNlLFxyXG4gIH07XHJcbiAgZnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiAnMTE6NTkgcG0nLFxyXG4gICAgZmFpbGVkVGltZTogJycsXHJcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwXHJcbiAgfTtcclxuICByZXZpZXdlckZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgZmFpbGVkOiAwLFxyXG4gICAgdGltZTogJzExOjU5IHBtJyxcclxuICAgIGZhaWxlZFRpbWU6ICcnLFxyXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogM1xyXG4gIH07XHJcbiAgZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hhdCBpcyB0aGUgYXR0ZXN0YXRpb24gc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5ID8nO1xyXG4gIHJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XHJcblxyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzID0gWydhcHByb3ZhbFdvcmtmbG93JywgJ2Fzc2lnbmVlcycsICdhcHByb3ZlcnMnLCAncmV2aWV3ZXInLFxyXG4gICAgJ2NjRW1haWwnLCAnY2NGYWlsJywgJ3JjJywgJ2NhdGVnb3J5JywgJ2ZyZXF1ZW5jeScsICdyZXZpZXdlckZyZXF1ZW5jeScsICdjaGVja3BvaW50cyddXHJcbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xyXG4gICAgeyBuYW1lOiAnTE9XJywgdmFsdWU6IDEsIGNsYXNzOiAnbG93JyB9LFxyXG4gICAgeyBuYW1lOiAnTE9XLU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAzLCBjbGFzczogJ21lZC1oaWdoJyB9LFxyXG4gICAgeyBuYW1lOiAnSGlnaCcsIHZhbHVlOiA0LCBjbGFzczogJ2hpZ2gnIH1cclxuICBdO1xyXG4gIHNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSB0cnVlO1xyXG4gIHNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcclxuICBvcmdhbml6YXRpb25faWQgPSAnJztcclxuICBtZW1iZXJfb2JqX2lkID0gJyc7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIHVzZXJJbmZvICE6IGFueTtcclxuXHJcbiAgcG9saWN5QXBwcm92YWxGbGFnID0gMDtcclxuICBiYXNlVVJMID0gJydcclxuICBncm91cEVuYWJsZWQhOiBhbnk7XHJcbiAgb3ZlcnNlZXJHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb2xpY3lTZXJ2aWNlOiBQb2xpY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcclxuICAgIHBsYXRmb3JtTG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuYmFzZVVSTCA9IChwbGF0Zm9ybUxvY2F0aW9uIGFzIGFueSkubG9jYXRpb24ub3JpZ2luO1xyXG4gICAgaWYgKHRoaXMuYmFzZVVSTCA9PSBcImh0dHA6Ly9sb2NhbGhvc3Q6NDIwMFwiKSB7XHJcbiAgICAgIHRoaXMuYmFzZVVSTCA9ICdodHRwczovL2Rldi52LWNvbXBseS5jb20nXHJcbiAgICB9XHJcbiAgfVxyXG4gIHBvbGljeUZvcm06IFBvbGljeUZvcm0gPSB7XHJcbiAgICBwb2xpY3lOYW1lOiAnJyxcclxuICAgIHBvbGljeU5vdGVzOiAnJyxcclxuICAgIHNlbGVjdGVkQ2F0ZWdvcmllczogW10sXHJcbiAgICBzZWxlY3RlZEFwcHJvdmVyczogW10sXHJcbiAgICBzZWxlY3RlZEFzc2lnbmVlczogW10sIC8vZG91YnQgaW4gbmFtZVxyXG4gICAgc2VsZWN0ZWRHcm91cEFzc2lnbmVlOiBbXSxcclxuICAgIHNlbGVjdGVkUmV2aWV3ZXJzOiBbXSxcclxuXHJcbiAgICBzZWxlY3RlZFJDczogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbDogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbEdyb3VwOiBbXSxcclxuICAgIENDRW1haWw6IFtdLFxyXG4gICAgQ0NHcm91cEVtYWlsOiBbXSxcclxuICAgIGF2YWlsYWJsZU9uUG9ydGFsOiBmYWxzZSxcclxuICAgIGFjY2VwdFN1Z2dlc3Rpb25zOiBmYWxzZSxcclxuICAgIHJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb246IGZhbHNlLFxyXG4gICAgcmlza1JhdGluZzogMSxcclxuICAgIGFzc29jaWF0ZWREb2N1bWVudHM6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgfSxcclxuICAgIHBvbGljeUR1ZURhdGU6IG1vbWVudCgpLFxyXG4gICAgY3VzdG9tVGFnczogW10sXHJcbiAgICBjaGVja3BvaW50RGV0YWlsczogW10sXHJcbiAgICB0b3RhbFF1ZXN0aW9uOiAwLFxyXG4gICAgcGFzc2luZ01hcmtzOiAwLFxyXG4gICAgZG9jdW1lbnRzQW5kTGlua3M6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgICBmb3JtYXRMaW5rczogW10sXHJcbiAgICB9LFxyXG4gICAgYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBmYWxzZSxcclxuICAgIGFkZFJldmlld2VyczogZmFsc2UsXHJcbiAgICBhZGRDaGVja3BvaW50czogZmFsc2UsXHJcbiAgICBhZGRPdmVyc2VlcnM6IGZhbHNlLFxyXG4gICAgYWRkQXNzb2NpYXRlZERvY3VtZW50czogZmFsc2UsXHJcblxyXG4gICAgZmFpbGVkX3RpbWU6ICcnLFxyXG4gICAgZnJlcXVlbmN5X2RldGFpbHM6ICcnLFxyXG4gICAgZnJlcXVlbmN5X3RleHQ6ICcnLFxyXG4gICAgbWFya19mYWlsZWRfYWZ0ZXI6IDAsXHJcbiAgICByZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IDAsXHJcblxyXG4gICAgcmV2aWV3RmFpbGVkQWZ0ZXI6IDAsXHJcbiAgICByZXZpZXdGYWlsZWRUaW1lOiAnJyxcclxuICAgIHJldmlld19mcmVxdWVuY3lfZGV0YWlsczogJycsXHJcbiAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6ICcnLFxyXG4gICAgcmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcclxuICB9O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cEVuYWJsZWQgPSB0aGlzLmZlYXR1cmU/LmlzRmVhdHVyZUVuYWJsZWQoXCJmZl9wb2xpY3lfZ3JvdXBzXCIpO1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCk7XHJcbiAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XHJcbiAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcclxuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFyZXMuZW5hYmxlX3Jpc2tjbGFzcykge1xyXG4gICAgICAgIHRoaXMuc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uX2lkID0gcmVzLl9pZFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xyXG4gICAgdGhpcy51c2VySW5mbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS51c2VyO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyB0aGUgbGlzdGluZyBwYWdlcyB0aGUgbGVmdCBzaWRlIG9mIHBvbGljeSBmb3JtIHRvIHNldCBhbmQgZWRpdCB0aGUgZHJvcGRvd24gZmllbGRzIHZhbHVlc1xyXG4gICAqIEBwYXJhbSB0eXBlIGhvbGRzIG5hbWUgb2YgcGFydGljdWxhciBsaXN0IGlzIHRvIGJlIGRpc3BsYXllZFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBib29sZWFuIHZhbHVlIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb3Igbm90XHJcbiAgICogQHBhcmFtIHdvcmtmbG93VHlwZSBpdCBzZXRzIHRoZSBhcHByb3ZhbCB3b3JrZmxvdyB0eXBlIHdoaWxlIGVkaXRpbmcgdGhlIGFwcHJvdmFsIHdvcmtmbG93LlxyXG4gICAqL1xyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbiwgd29ya2Zsb3dUeXBlPzogYW55KSB7XHJcbiAgICBpZiAod29ya2Zsb3dUeXBlKSB7XHJcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlID0gd29ya2Zsb3dUeXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgICBpZiAodGhpcy5zaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBDbG9zZXMgdGhlIGxpc3RpbmcgcGFnZXNcclxuICAgICovXHJcbiAgZGlzYWJsZVNlbGVjdG9yKCkge1xyXG4gICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIFJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgbGlzdFxyXG4gICAqL1xyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRSQ0xpc3QoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5yY0xpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgbGlzdFxyXG4gICAqL1xyXG4gIGdldFVzZXJzTGlzdCgpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRPcmdhbml6YXRpb25QZW9wbGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgIHRoaXMudXNlcnNMaXN0ID0gdGhpcy51cGRhdGVNZW1iZXJJZEtleShyZXMpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudXNlcnNMaXN0ID0gcmVzO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHJlcGxhY2UgbWVtYmVyX2lkIHZhbHVlIHRvIG15X21lbWJlcl9pZFxyXG4gIHVwZGF0ZU1lbWJlcklkS2V5KGxpc3Q6IGFueSl7XHJcbiAgICBsZXQgdXBkYXRlZExpc3QgPSBsaXN0Lm1hcCgoZWxlOiBhbnkpID0+ICh7Li4uZWxlLCBtZW1iZXJfaWQ6IGVsZT8ubXlfbWVtYmVyX2lkfSkpO1xyXG4gICAgcmV0dXJuIHVwZGF0ZWRMaXN0XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIFBvbGljeSBDYXRlZ29yaWVzIGxpc3RcclxuICAgKi9cclxuICBnZXRDYXRlZ29yaWVzTGlzdCgpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgZ3JvdXBzIGxpc3RcclxuICAgKi9cclxuICBnZXRHcm91cHNMaXN0KCkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uUG9saWN5R3JvdXBzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGE7XHJcbiAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XHJcbiAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICAgIGdyb3VwTmFtZTogZWxlbWVudC5ncm91cF9uYW1lLFxyXG4gICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZ3JvdXBzLnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGdyb3VwcztcclxuICAgICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9ZGF0YVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vR2V0IHRoZSBsaXN0IG9mIG92ZXJzZWVycyBncm91cC5cclxuICBvdmVyc2Vlckdyb3VwTGlzdCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlPy5nZXRPcmdhbml6YXRpb25PdmVyc2VlcnNHcm91cHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBhcHByb3ZlcnMgd29ya2Zsb3cgZnJvbSB0aGUgc2VsZWN0ZWQgd29ya2Zsb3cgb24gQXBwcm92ZXJzIHdvcmtmbG93IGxpc3RcclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHByZWRlZmluZWQgd29ya2Zsb3dcclxuICAgICovXHJcbiAgc2VsZWN0ZWRXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgPT09IC0xKSB7XHJcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xyXG4gICAgICAvLyB0aGlzLmFkZE1vcmVMZXZlbHMgPSB0cnVlXHJcbiAgICAgIC8vIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGF0YSA9IGNsb25lRGVlcChldmVudC5hcHByb3ZhbF93b3JrZmxvdyk7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGl0ZW0ubmFtZSA9IGl0ZW0udHlwZVxyXG4gICAgICAgIGNvbnN0IGlkcyA9IGl0ZW0uYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkKTtcclxuICAgICAgICBpdGVtLmFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBuZXdBcnJheS5maWx0ZXIoKGxldmVsOiBhbnkpID0+IGxldmVsLmFwcHJvdmVycy5sZW5ndGggPiAwKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRmV0Y2hlcyBBcHByb3ZlcnMgd29ya2Zsb3cgbGlzdCBiYXNlZCBvbiBzZWxlY3RlZCBwb2xpY3kgY2F0ZWdvcmllc1xyXG4gICogQHBhcmFtIGlkIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xyXG4gICovXHJcbiAgZ2V0QXBwcm92ZXJXb3JrRmxvdyhpZDogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0V29ya2Zsb3dMaXN0KGlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlcldvcmtGbG93TGlzdCA9IHJlczsgLy8gZ2V0dGluZyBhbGwgYXBwcm92ZXIgc2F2ZWQgd29ya2Zsb3dzXHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBGZXRjaGVzIEFwcHJvdmVycyBhbmQgcmV2aWV3ZXJzIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcclxuICAqIEBwYXJhbSBjYXRlZ29yeUlkcyBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcclxuICAqL1xyXG4gIGdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3QoY2F0ZWdvcnlJZHM6IGFueSwgYXBwcm92ZXJJZHM/OiBhbnksIHJldmlld2VySWRzPzogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFJldmlld2VycyhjYXRlZ29yeUlkcykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzPy5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgIHJlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyA9IHVuaXFCeSh0aGlzLmFsbEFwcHJvdmVycy5jb25jYXQoZWxlbWVudC5hbGxfYXBwcm92ZXJzKSwgJ21lbWJlcl9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMgPSB1bmlxQnkoZWxlbWVudC5hbGxfYXBwcm92ZXJzLmNvbmNhdCh0aGlzLmFsbFJldmlld2VycywgZWxlbWVudC5hbGxfYXV0aG9ycyksICdtZW1iZXJfaWQnKTtcclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFwcHJvdmVySWRzKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IGFwcHJvdmVySWRzO1xyXG4gICAgICAgIGxldCBhcHByb3ZlckxldmVscyA9IFtdXHJcbiAgICAgICAgZm9yICh2YXIgaXRlbSBpbiBvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGlkcyA9IG9ialtpdGVtXS5hcHByb3ZlcnMubWFwKChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQpO1xyXG5cclxuICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBvYmpbaXRlbV0udHlwZSxcclxuICAgICAgICAgICAgYXBwcm92ZXJzOiB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZGF0YS5uYW1lID09ICdST1VORFJPQklOJykge1xyXG4gICAgICAgICAgICBkYXRhLm5hbWUgPSAnUk9VTkQtUk9CSU4nXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEubmFtZSA9PSAnQU5ZT05FJykge1xyXG4gICAgICAgICAgICBkYXRhLm5hbWUgPSAnQU5ZIE9ORSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFwcHJvdmVyTGV2ZWxzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IGFwcHJvdmVyTGV2ZWxzO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXZpZXdlcklkcykge1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbFJldmlld2VycywgcmV2aWV3ZXJJZHMsICdtZW1iZXJfaWQnKTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqXHJcbiAgKiBJdCBpcyB0byBwb3B1bGF0ZSBtb3JlIG9wdGlvbnMgZWxlbWVudHMgd2hpbGUgZWRpdGluZyB0aGUgcG9saWN5IGZvcm1cclxuICAqL1xyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFU1BPTlNJQklMSVRZX0NFTlRFUicpOyB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFVklFV0VSJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UUycpOyB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ09WRVJTRUVSJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0FTU09DSUFURURfRE9DVU1FTlRTJyk7IH1cclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEl0IGlzIHRvIGFkZCBhbmQgcmVtb3ZlIHRoZSBlbGVtZW50cyBmcm9tIE1vcmUgb3B0aW9uIHRvIHRoZSBwb2xpY3kgRm9ybVxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBkZXRhaWxzIHJlbGF0ZWQgdG8gY2hlY2tlZCB2YWx1ZSwgY29kZSBwYXJ0aWN1bGFyIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb25zXHJcbiAgICovXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ1JFU1BPTlNJQklMSVRZX0NFTlRFUic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQ0hFQ0tQT0lOVFMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9ET0NVTUVOVFMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxyXG4gICAgKi9cclxuICBjaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLnJjTGlzdExvYWRlZCAmJiB0aGlzLnVzZXJzTGlzdExvYWRlZCAmJiB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkICYmIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGEgJiYgdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUpIHtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLnN1YnN0cmluZygwLCB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZS5sYXN0SW5kZXhPZignLicpKVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YS5jYXRlZ29yeUlkKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWRdKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5zZWxlY3RlZENhdGVnb3J5XSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmVkaXRQb2xpY3koKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogVHJpZ2dlcnMgdGhlIGNvbmZpcm1hdGlvbiBwb3B1cCB3aGVuIGF2YWlsYWJpbGl0eSBvbiBQb2xpY3kgcG9ydGFsIHRvZ2dsZSBpbiBPTlxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgdG9nZ2xlIHZhbHVlIHdoaWNoIGlzIGFsd2F5cyB0cnVlIG9yIGZhbHNlXHJcbiAgICAqL1xyXG4gIGF2YWlsYWJpbGl0eU9uUG9ydGFsKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XHJcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG1lc3NhZ2U6IGBUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuXHJcbiAgICAgICAgSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkLyBkb3dubG9hZCBmb3IgcmVmZXJlbmNlLlxyXG4gICAgICAgIEhlbmNlLCBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB5b3UgdG8gc2V0IHVwIGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIG9yIHNlbGVjdFxyXG4gICAgICAgIHJlYWRlcnMgdG8gYXR0ZXN0IHRoZSBwb2xpY2llcy5gLFxyXG4gICAgICAgIGFjdGlvbjogJ1BPTElDWV9QT1JUQUwnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb25BbGVydC5lbWl0KGNvbmZpcm1hdGlvbkRldGFpbHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjZWl2ZXMgdGhlIGlucHV0IGZyb20gdGhlIENvbmZpcm1hdGlvbiBkaWFsb2cgb2YgYXZhaWxhYmxlIG9uIFBvbGljeSBwb3J0YWxcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgb3B0aW9uIGZyb20gdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2hpY2ggaXMgYWx3YXlzIGVpdGhlciAnWUVTJyBvciAnTk8nXHJcbiAgICovXHJcbiAgY29uZmlybVBvbGljeVBvcnRhbChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSAoZXZlbnQgPT0gJ1lFUycpID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICBpZiAoZXZlbnQgPT0gJ05PJykge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHBvbGljeUZvcm0gd2l0aCBzZWxlY3RlZCBlbGVtZW50cyBmcm9tIHRoZSBsaXN0aW5nLCBmcmVxdWVuY3ksIGZpbGUgdXBsb2FkIGNvbXBvbmVudHNcclxuICAgKiBAcGFyYW0gdHlwZSBkZWZpbmVzIHRoZSBwYXJ0aWN1bGFyIGZpZWxkIG9uIFBvbGljeSBmb3JtLlxyXG4gICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1zIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zIGZyb20gdGhlIGxpc3RcclxuICAgKi9cclxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuXHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MgPSB0aGlzLnNldExpc3QodGhpcy5yY0xpc3QsIHNlbGVjdGVkSXRlbXMsICdpdGVtX2lkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzID0gdGhpcy5zZXRMaXN0KHRoaXMuY2F0ZWdvcnlMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnX2lkJyk7XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcywgJ19pZCcpXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFnID0gZWxlbWVudC5jdXN0b21fdGFncztcclxuICAgICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWduYW1lID09IHRhZ0RhdGEudGFnbmFtZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxyXG4gICAgICAgIGxldCB1c2VySWRzICxncm91cElkcztcclxuICAgICAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgICAgIHVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLnVzZXJzLCdtZW1iZXJfaWQnKVxyXG4gICAgICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCdncm91cF9pZCcpXHJcbiAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPSAgdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBzTGlzdCwgZ3JvdXBJZHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB1c2VySWRzID0gc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPSB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25lZXNMaXN0LCB1c2VySWRzLCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsUmV2aWV3ZXJzLCBbc2VsZWN0ZWRJdGVtcy5tZW1iZXJfaWRdLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxyXG4gICAgICAgIGxldCBzZWxlY3RlZFVzZXJJZHMgLHNlbGVjdGVkR3JvdXBJZHM7XHJcbiAgICAgICAgaWYodGhpcy5ncm91cEVuYWJsZWQpe1xyXG4gICAgICAgICAgc2VsZWN0ZWRVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8udXNlcnMsJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICBzZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLCdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9ICB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIHNlbGVjdGVkR3JvdXBJZHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdCh0aGlzLnVzZXJzTGlzdCwgc2VsZWN0ZWRVc2VySWRzLCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLmNjRW1haWxPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQodGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWwpXHJcbiAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIHNlbGVjdGVkSXRlbXMsICdlbXBsb3llZV9pZCcpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWwnOlxyXG4gICAgICAgIGxldCBzZWxlY3RlZEZhaWxVc2VySWRzICxzZWxlY3RlZEZhaWxHcm91cElkcztcclxuICAgICAgICBpZih0aGlzLmdyb3VwRW5hYmxlZCl7XHJcbiAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8udXNlcnMsJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXM/Lmdyb3VwcywnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwID0gIHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgc2VsZWN0ZWRGYWlsR3JvdXBJZHMsJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIHNlbGVjdGVkRmFpbFVzZXJJZHMsICdteV9tZW1iZXJfaWQnKTtcclxuICAgICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQodGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwKVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnZW1wbG95ZWVfaWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcclxuICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIHNlbGVjdGVkSXRlbXMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb3JlTGV2ZWxzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMucHVzaCh7IG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLCBhcHByb3ZlcnMgfSk7XHJcbiAgICAgICAgICB0aGlzLmFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1t0aGlzLmFwcHJvdmVyc0xpc3RJbmRleF0gPSB7IG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLCBhcHByb3ZlcnMgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXJfYXR0YWNobWVudHMnOlxyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMgPSBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzID0gc2VsZWN0ZWRJdGVtcz8ubGlua3MgPz8gW107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc29jaWF0ZWREb2N1bWVudHMnOlxyXG5cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyA9IHNlbGVjdGVkSXRlbXM/LmZpbGVzID8/IFtdO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9IHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzID8/IFtdO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBzZWxlY3RlZEl0ZW1zPy5yZXF1aXJlZFBvaW50ID8/IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gIH1cclxuXHJcbiAgLy9yZXR1cm4gdGhlIF9pZCBmcm9tIHRoZSBzZWxlY3RlZCBvdmVyc2VlciBncm91cC5cclxuICBnZXRHcm91cE9iamVjdElkKG92ZXJzZWVyR3JvdXA/OiBhbnkpe1xyXG4gICAgbGV0IG92ZXJzZWVyR3JvdXBJZEFycmF5ID0gb3ZlcnNlZXJHcm91cC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKTtcclxuICAgIHJldHVybiBvdmVyc2Vlckdyb3VwSWRBcnJheTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBSZW1vdmVzIHRoZSBwYXJ0aWN1bGFyIGVsZW1lbnQgZnJvbSBzZWxlY3RlZCBsaXN0XHJcbiAgICAqIEBwYXJhbSB0eXBlIGRlZmluZXMgdGhlIHBhcnRpY3VsYXIgY2FzZVxyXG4gICAgKiBAcGFyYW0gZXZlbnQgaG9sZHMgdGhlIGlkIG9yIGtleSBvZiBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgICogQHBhcmFtIHJlbW92ZUluZGV4IGNvbnRhaW5zIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICAqL1xyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MuZmluZEluZGV4KChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLnNwbGljZShyY0luZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcclxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuZmluZEluZGV4KChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzLnNwbGljZShlbnRydXN0SW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2dyb3VwQXNzaWduZWVzJzpcclxuICAgICAgICAgIGNvbnN0IGdyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWU/LmZpbmRJbmRleCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXAuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWQpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmZpbmRJbmRleCgocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NFbWFpbCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLmZpbmRJbmRleCgob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0dyb3VwRW1haWwnOlxyXG4gICAgICAgIGNvbnN0IGNjR3JvdXBJbmRleDogYW55ID0gdGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/LmZpbmRJbmRleCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbD8uc3BsaWNlKGNjR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJOb3RpZnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5maW5kSW5kZXgoKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5zcGxpY2Uob3ZlcnNlZXJOb3RpZnlJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NHcm91cEZhaWxFbWFpbCc6XHJcbiAgICAgICAgY29uc3QgY2NGYWlsR3JvdXBJbmRleDogYW55ID0gdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5maW5kSW5kZXgoKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwPy5zcGxpY2UoY2NGYWlsR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZCh0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXApXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcclxuICAgICAgICBjb25zdCBhcHByb3ZlcnNJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLmZpbmRJbmRleCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMuc3BsaWNlKGFwcHJvdmVyc0luZGV4LCAxKTtcclxuICAgICAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pdGVtX2lkID09IGV2ZW50Lml0ZW1faWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IGV2ZW50LmN1c3RvbV90YWdzO1xyXG4gICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KCh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhDVCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLnNwbGljZShpbmRleENULCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsICdfaWQnKVxyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UoMCwgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aClcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtID0gT2JqZWN0LmFzc2lnbih0aGlzLnBvbGljeUZvcm0pO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiAtPSAxO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgLT0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd29ya2Zsb3dMZXZlbCc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICAqIFJlZnJlc2hlcyB0aGUgYXNzaWduZWVzIGFuZCBvdmVyc2VlcnMgbGlzdCBzdWNoIHRoYXQgYm90aCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNhbWUgdXNlcnMgYmFzZWQgb24gc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcclxuICAgIGxldCBhc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy51c2Vyc0xpc3QpO1xyXG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyk7XHJcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRW1haWwpO1xyXG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCk7XHJcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBhc3NpZ25lZXNJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlc0lkcyldO1xyXG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XHJcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XHJcblxyXG5cclxuICAgIC8vIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpKSk7XHJcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShyZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICBjb25zdCB1c2VyT2JqID0gdGhpcy5hc3NpZ25lZXNMaXN0XHJcbiAgICAgIHVzZXJPYmo/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlci5teV9tZW1iZXJfaWRcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5vd25lcmxpc3QgPSB1c2VyT2JqXHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnJldmlld2Vyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKGFzc2lnbmVlc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fCByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBSZXR1cm5zIHdob2xlIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgICAqIEBwYXJhbSBsaXN0IGl0IGlzIHRoZSBtYWluIGxpc3QgIHdoaWNoIGNvbnRhaW5zIGFsbCBlbGVtZW50cyBsaXN0XHJcbiAgICAqIEBwYXJhbSBrZXkgY29udGFpbnMga2V5IHRvIGZpbHRlciBzZWxlY3RlZCBsaXN0IGZyb20gdGhlIGxpc3RcclxuICAgICogQHBhcmFtIGlkcyBzZWxlY3RlZCBpZHMgYXJyYXlcclxuICAgICovXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBSZXR1cm5zIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xyXG4gICAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxyXG4gICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcclxuICAgICovXHJcbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxpc3QubWFwKGVsZSA9PiB7IGlmIChlbGVba2V5XSkgeyByZXR1cm4gZWxlW2tleV07IH0gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgcmV2aWV3ZXIgdHlwZSBpbiBhcHByb3ZhbCB3b3JrZmxvd1xyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgcmV2aWV3ZXIgdHlwZVxyXG4gICAgKi9cclxuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy53b3JrZmxvd1R5cGUgPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogU2V0cyBmcmVxdWVuY3kgaW4gZWRpdCAgbW9kZVxyXG4gICovXHJcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkgeyAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBwYXR0ZXJuOiBldmVudD8uZnJlcXVlbmN5X2RldGFpbHMsIC8vXHJcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcclxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5tYXJrX2ZhaWxlZF9hZnRlcixcclxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiAnJyxcclxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICB0aW1lSW4yNEhyOiBldmVudC5mYWlsZWRfdGltZSAhPSAnJyA/IGV2ZW50LmZhaWxlZF90aW1lIDogJzIzOjU5OjAwJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKG5ldyBEYXRlKGV2ZW50LnN0YXJ0RGF0ZSkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogXCJcIixcclxuICAgICAgcmVwb3J0SWQ6IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihldmVudC5mYWlsZWRfdGltZSAhPSAnJyA/IGV2ZW50LmZhaWxlZF90aW1lIDogJzIzOjU5OjAwJyksXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5mcmVxdWVuY3lfdGV4dFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxyXG4gICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgICovXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9IGV2ZW50LnBsYWNlaG9sZGVyLFxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLm1hcmtfZmFpbGVkX2FmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gZXZlbnQud2luZG93O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZhaWxlZF90aW1lID0gZXZlbnQudGltZUluMjRIclxyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgZmFsc2UpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudC50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBldmVudC5saWZlY3ljbGVEZXRhaWxzLFxyXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXHJcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXHJcbiAgICAgIGRvbV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXJcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3B1bGF0ZXMgdGhlIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICovXHJcbiAgZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID0gZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IChldmVudD8ucGxhY2Vob2xkZXIpID8gZXZlbnQucGxhY2Vob2xkZXIgOiAnSG93IG9mdGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSBhdHRlc3RlZD8nO1xyXG4gIH1cclxuXHJcblxyXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkgeyAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBwYXR0ZXJuOiBldmVudD8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzLCAvL1xyXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxyXG4gICAgICBmYWlsZWRBZnRlcjogZXZlbnQ/LnJldmlld0ZhaWxlZEFmdGVyLFxyXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxyXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHRpbWVJbjI0SHI6IGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogJzIzOjU5OjAwJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKG5ldyBEYXRlKGV2ZW50LnN0YXJ0RGF0ZSkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogXCJcIixcclxuICAgICAgcmVwb3J0SWQ6IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6ICcyMzo1OTowMCcpLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucmV2aWV3ZnJlcXVlbmN5RGV0YWlsc1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpIHtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgICBwYXR0ZXJuOiAnJyxcclxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHdpbmRvdzogMCxcclxuICAgICAgZmFpbGVkOiAwLFxyXG4gICAgICB0aW1lOiAnMTE6NTkgcG0nLFxyXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogM1xyXG4gICAgfTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID0gJyc7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV90eXBlID0gJyc7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkVGltZSA9ICcyMzo1OTowMCc7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgc2VsZWN0ZWQgcmV2aWV3ZXIgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICAqL1xyXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZEFmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSBldmVudC5wYXR0ZXJuLnNwbGl0KCd+JylbMF07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gZXZlbnQudGltZUluMjRIclxyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCBmYWxzZSk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZXZlbnQucGF0dGVybixcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXHJcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudC5mYWlsZWRBZnRlcixcclxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXHJcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcclxuICAgICAgb25fY29tcGxldGlvbl9vZjogW2V2ZW50LnJlcG9ydElkXSxcclxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5wbGFjZWhvbGRlclxyXG4gICAgfTtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQb3B1bGF0aW9uKHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIFBvcHVsYXRlcyB0aGUgcmV2aWV3ZXIgZnJlcXVlbmN5IGZpZWxkIHdpdGggc2VsZWN0ZWQgZGF0YSBmcm9tIGZyZXF1ZW5jeSBjb21wb25lbnRcclxuICAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICAqL1xyXG4gIHJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZmFpbGVkVGltZSA9IGV2ZW50Py5mcmVxdWVuY3lfdGltZTtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gKGV2ZW50Py5wbGFjZWhvbGRlcikgPyBldmVudC5wbGFjZWhvbGRlciA6ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZCA/JztcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogVmFsaWRhdGVzIHRoZSBkYXRhIHN1Ym1pdHRlZCBvbiBjcmVhdGUgcG9saWN5IGZvcm1cclxuICAgICovXHJcbiAgdmFsaWRhdGVQb2xpY3koKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG5cclxuICAgIH0sIDEwMCk7XHJcbiAgICBjb25zdCBldmVudCA9IHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lO1xyXG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZXZlbnQucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUudHJpbSgpID09ICcnXHJcbiAgICAgIHx8ICghdGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJiAoKCB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwICYmICF0aGlzLmdyb3VwRW5hYmxlZCkgfHwgKCh0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8IHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPiAwICkgJiYgdGhpcy5ncm91cEVuYWJsZWQpKSlcclxuICAgICAgfHwgKHRoaXMucG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiYgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiYgKCF0aGlzLmdyb3VwRW5hYmxlZCAgfHwgKCAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA9PSAwICYmIHRoaXMuZ3JvdXBFbmFibGVkKSkpXHJcbiAgICAgIHx8ICghdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyAmJiB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID4gMClcclxuICAgICAgfHwgKHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgJiYgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmxlbmd0aCA9PSAwKVxyXG4gICAgICB8fCB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoID09IDAgJiYgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPT09IDApIHx8ICh0aGlzLmZvcm1hdEV2aWRlbmNlICYmIHRoaXMuZm9ybWF0RXZpZGVuY2UubmV3TGluay5jb250YWluc0Vycm9yKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogTWFrZXMgYW4gYXBpIGNhbGwgdG8gY3JlYXRlIGEgcG9saWN5XHJcbiAgKiBAcGFyYW0gcG9saWN5IGNvbnRhaW5zIHBvbGljeUZvcm0gZGF0YVxyXG4gICovXHJcbiAgc3VibWl0UG9saWN5KCkge1xyXG5cclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVQb2xpY3koKTtcclxuICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgcG9saWN5ID0gdGhpcy5wb2xpY3lGb3JtO1xyXG4gICAgbGV0IGFwcHJvdmVyc0RhdGE6IGFueSA9IHt9XHJcbiAgICBjb25zdCBwb2xpY3lTZWxlY3RlZEFwcHJvdmVycyA9IGNsb25lRGVlcChwb2xpY3kuc2VsZWN0ZWRBcHByb3ZlcnMpO1xyXG4gICAgcG9saWN5U2VsZWN0ZWRBcHByb3ZlcnMuZm9yRWFjaCgobGV2ZWw6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAobGV2ZWwubmFtZSA9PSAnUk9VTkQtUk9CSU4nKSB7XHJcbiAgICAgICAgbGV2ZWwubmFtZSA9ICdST1VORFJPQklOJ1xyXG4gICAgICB9IGVsc2UgaWYgKGxldmVsLm5hbWUgPT0gJ0FOWSBPTkUnKSB7XHJcbiAgICAgICAgbGV2ZWwubmFtZSA9ICdBTllPTkUnXHJcbiAgICAgIH1cclxuICAgICAgYXBwcm92ZXJzRGF0YVsnbGV2ZWwnICsgKGluZGV4ICsgMSldID0ge1xyXG4gICAgICAgIGFwcHJvdmVyczogbGV2ZWwuYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgICBtZW1iZXJfaWQ6IGFwcHJvdmVyLm1lbWJlcl9pZCwgYXBwcm92YWxfZmxhZzogZmFsc2UsIHJlamVjdF9mbGFnOiBmYWxzZSwgcmVtb3ZlX2ZsYWc6IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHR5cGU6IGxldmVsLm5hbWUsXHJcbiAgICAgICAgYXBwcm92YWxfZG9uZTogZmFsc2VcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHJldmlld2VyRmlsZXNBcnJheSA9ICBjbG9uZURlZXAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzKTtcclxuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSByZXZpZXdlckZpbGVzQXJyYXkubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlbmFtZTtcclxuICAgICAgZmlsZS5maWxlX3BhdGggPSBmaWxlLmZpbGVwYXRoXHJcbiAgICAgIGZpbGUub3JnX25hbWUgPSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lXHJcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZmlsZS5maWxlcGF0aDtcclxuICAgICAgZGVsZXRlIGZpbGUub3JpZ2luYWxfZmlsZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLmxpbmtTZXQ7XHJcbiAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgYXR0ZXN0YXRpb25GaWxlc0FycmF5ID0gY2xvbmVEZWVwKHBvbGljeS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzKTtcclxuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBhdHRlc3RhdGlvbkZpbGVzQXJyYXkubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBlbGUubmFtZSA9IGVsZS5maWxlbmFtZTtcclxuICAgICAgZWxlLmZpbGVfcGF0aCA9IGVsZS5maWxlcGF0aFxyXG4gICAgICBlbGUub3JpZ2luYWxfZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVuYW1lXHJcbiAgICAgIGVsZS5mb2xkZXJfaWQgPSAoZWxlPy5mb2xkZXJfaWQpID8gZWxlLmZvbGRlcl9pZCA6IDA7XHJcbiAgICAgIGVsZS5wYXRoID0gKGVsZT8ucGF0aCkgPyBlbGUucGF0aCA6IChlbGUuZmlsZXBhdGggKyBlbGUuZmlsZW5hbWUpO1xyXG4gICAgICBlbGUuaXNMaW5rU2V0ID0gZWxlLmxpbmtTZXRcclxuICAgICAgZGVsZXRlIGVsZS5maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5maWxlcGF0aDtcclxuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5saW5rU2V0O1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVfbmFtZTtcclxuICAgICAgcmV0dXJuIGVsZTtcclxuICAgIH0pXHJcbiAgICBjb25zdCByZXZpZXdlcklEID0gdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkUmV2aWV3ZXJzLCAnbWVtYmVyX2lkJylcclxuXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBwb2xpY3lfbmFtZTogcG9saWN5LnBvbGljeU5hbWUsXHJcbiAgICAgIG5vdGVzOiBwb2xpY3kucG9saWN5Tm90ZXMsXHJcbiAgICAgIGlzX3BvcnRhbF9lbmFibGU6IChwb2xpY3kuYXZhaWxhYmxlT25Qb3J0YWwpID8gMSA6IDAsXHJcbiAgICAgIGlzX3N1Z2dldGlvbl9lbmFibGU6IChwb2xpY3kuYWNjZXB0U3VnZ2VzdGlvbnMpID8gMSA6IDAsXHJcbiAgICAgIGNhdGVnb3J5X2lkX2FycjogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQ2F0ZWdvcmllcywgJ2l0ZW1faWQnKSxcclxuICAgICAgYXBwcm92ZXJzOiBhcHByb3ZlcnNEYXRhLFxyXG4gICAgICBncm91cF9lbXBsb3llZUlkczogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQXNzaWduZWVzLCAnZW1wbG95ZWVfaWQnKS50b1N0cmluZygpLFxyXG4gICAgICB1c2VyZ3JvdXBfaWRzIDogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkR3JvdXBBc3NpZ25lZSwnX2lkJykgPz8gW10sXHJcbiAgICAgIElzX2FwcHJvdmFsOiAwLCAvL25lZWRzIHRvIGNoZWNrIGluIGZlXHJcblxyXG4gICAgICBhc3NvY2lhdGVkX2RvY3VtZW50czogcG9saWN5LmFkZEFzc29jaWF0ZWREb2N1bWVudHMgPyBhdHRlc3RhdGlvbkZpbGVzOltdLFxyXG5cclxuICAgICAgY3VzdG9tX3RhZ3M6IEpTT04uc3RyaW5naWZ5KHBvbGljeS5jdXN0b21UYWdzKSxcclxuXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscyA6ICcnLFxyXG4gICAgICBmcmVxdWVuY3lfdGV4dDogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kuZnJlcXVlbmN5X3RleHQgOiAnJyxcclxuICAgICAgcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAocG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgOiAwLFxyXG4gICAgICBmYWlsZWRfdGltZTogKHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kuZmFpbGVkX3RpbWUgOiAnJyxcclxuICAgICAgbWFya19mYWlsZWRfYWZ0ZXI6IChwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5Lm1hcmtfZmFpbGVkX2FmdGVyIDogJycsXHJcbiAgICAgIC8vIHN0YXJ0RGF0ZTogcG9saWN5LnBvbGljeUR1ZURhdGUudG9EYXRlU3RyaW5nKCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogbW9tZW50KHBvbGljeS5wb2xpY3lEdWVEYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpLFxyXG5cclxuICAgICAgUmV2aWV3ZXJBdHRhY2htZW50czogIChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcykgPyByZXZpZXdlckZpbGVzIDogW10sXHJcbiAgICAgIFJldmlld2VyTGlua3M6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcykgPyBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MgOiBbXSxcclxuICAgICAgUmV2aWV3ZXJNZW1iZXJJZDogKHBvbGljeS5hZGRSZXZpZXdlcnMpICYmIHJldmlld2VySURbMF0/IHJldmlld2VySURbMF0gOiAwLFxyXG4gICAgICBpc1JldmlldzogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgKChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMpIHx8IChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MpKSkgJiYgcmV2aWV3ZXJJRFswXSA/IDEgOiAwLFxyXG5cclxuICAgICAgcmV2aWV3RmFpbGVkQWZ0ZXI6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld0ZhaWxlZEFmdGVyIDogMCxcclxuICAgICAgcmV2aWV3RmFpbGVkVGltZTogKHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscykgPyBwb2xpY3kucmV2aWV3RmFpbGVkVGltZSA6ICcnLFxyXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA6ICcnLFxyXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6IChwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMpID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfdHlwZSA6ICcnLFxyXG4gICAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAocG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzKSA/IHBvbGljeS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlIDogMCxcclxuXHJcbiAgICAgIGVudGl0aWVzOiB0aGlzLnBvbGljeUZvcm0/LmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJDcywgJ2l0ZW1faWQnKS50b1N0cmluZygpOlwiXCIsXHJcbiAgICAgIHJpc2tfY2xhc3M6IHBvbGljeS5yaXNrUmF0aW5nLnRvU3RyaW5nKCksXHJcblxyXG4gICAgICBDQ0ZhaWxFbWFpbDpwb2xpY3kuYWRkT3ZlcnNlZXJzICA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5DQ0ZhaWxFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJykudG9TdHJpbmcoKTpcIlwiLFxyXG4gICAgICBDQ0VtYWlsOiBwb2xpY3kuYWRkT3ZlcnNlZXJzID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LkNDRW1haWwsICdlbXBsb3llZV9lbWFpbCcpLnRvU3RyaW5nKCk6IFwiXCIsXHJcblxyXG4gICAgICBjaGVja3BvaW50RGV0YWlsczogKHBvbGljeS5hZGRDaGVja3BvaW50cykgPyBwb2xpY3kuY2hlY2twb2ludERldGFpbHMgOiBbXSxcclxuICAgICAgdG90YWxRdWVzdGlvbjogKHBvbGljeS5hZGRDaGVja3BvaW50cyAmJiBwb2xpY3kudG90YWxRdWVzdGlvbikgPyBwb2xpY3kudG90YWxRdWVzdGlvbiA6IDAsLy9cclxuICAgICAgcGFzc2luZ01hcmtzOiAocG9saWN5LmFkZENoZWNrcG9pbnRzICYmIHBvbGljeS5wYXNzaW5nTWFya3MpID8gcG9saWN5LnBhc3NpbmdNYXJrcyA6IDAsLy9cclxuXHJcbiAgICAgIHBvbGljeUFwcHJvdmFsRmxhZzogMCxcclxuXHJcbiAgICAgIGlzX3NpZ25hdHVyZV9yZXF1aXJlZDogcG9saWN5LnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPyAxIDogMCxcclxuICAgICAgY2NfdXNlcmdyb3VwX2lkczogdGhpcy5jY0VtYWlsT2JqSWRzLFxyXG4gICAgICBjY19mYWlsX3VzZXJncm91cF9pZHM6IHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5zdWJtaXRQb2xpY3kocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhPy5maWxlTmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5saW5rRG9jdW1lbnRXaXRoUG9saWN5KHRoaXMuY29udmVydEZpbGVEYXRhKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICBpZiAodGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgIT09IDApIHtcclxuICAgICAgICBkZWxldGUgcGF5bG9hZC5hcHByb3ZlcnNcclxuICAgICAgICBwYXlsb2FkLnBvbGljeUFwcHJvdmFsRmxhZyA9IDJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UudXBkYXRlUG9saWN5KHBheWxvYWQsIHRoaXMucG9saWN5SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBwb2xpY3kgaGFzIGJlZW4gdXBkYXRlZCcsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZFxyXG4gICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcG9saWN5L3dvcmtyb29tJ10sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucG9saWN5SWQgfSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLCAnYWxlcnQnKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xyXG4gICAgaWYgKGRvY3VtZW50LmZpbGVOYW1lICYmIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fCBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxyXG4gICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHwgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKSkge1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UuZXh0cmFjdEZpbGUoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiwgZG9jdW1lbnQuZmlsZVBhdGgsIHRoaXMucG9saWN5SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgPT09ICdkb25lJyB8fCByZXMuY29udGVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ2RvY3gnIHx8IGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdET0NYJykge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvZWRpdC1wb2xpY3knXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fCBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJykge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvd29ya3Jvb20nXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB3ZSB3ZXJlIHVuYWJsZSB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4gTGV0XFwncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT8nLCAnYWxlcnQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB3ZSB3ZXJlIHVuYWJsZSB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4gTGV0XFwncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT8nLCAnYWxlcnQnKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogb3BlbnMgdGhlIGRhdGUgcGlja2VyIG9uIHBvbGljeSBmb3JtXHJcbiAgICAqL1xyXG4gIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBjbG9zZXMgdGhlIGRhdGUgcGlja2VyIGZyb20gcG9saWN5IGZvcm1cclxuICAqL1xyXG4gIGNsb3NlRGF0ZVBpY2tlcihldnQ6IGFueSkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghZXZ0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/Ll9kKSB7XHJcbiAgICAgIGxldCBtb250aEFycmF5ID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11cclxuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RGF0ZSgpO1xyXG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRNb250aCgpXTtcclxuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgY29uc3QgZGF0ZVN0ciA9IGAke2RhdGVWYWx1ZX0gJHttb250aFZhbHVlfSAke3llYXJWYWx1ZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uX2QpIHtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgPSBldnQ/LmRhdGU/Ll9kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gIH1cclxuICBlZGl0UG9saWN5RnJvbURvY3VtZW50cygpIHtcclxuICAgIHRoaXMubW9kZSA9ICdFRElUJztcclxuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKVxyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuZWRpdFBvbGljeSgpO1xyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCkge1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IChkYXRhID09PSBcInRydWVcIikgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Nob3dDcmVhdGVEb2N1bWVudHMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRQb2xpY3koKSB7XHJcbiAgICB0aGlzLm1vZGUgPSAnRURJVCdcclxuXHJcblxyXG4gICAgaWYgKHRoaXMucG9saWN5SWQpIHtcclxuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmVkaXRQb2xpY3kodGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXNbMF07XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJZHMgPSBkYXRhLmNhdGVnb3J5X2RldGFpbHNfYXJyLm1hcCgoaWQ6IGFueSkgPT4gaWQuY2F0T2JqSWQpO1xyXG4gICAgICAgIHRoaXMucG9saWN5QXBwcm92YWxGbGFnID0gZGF0YS5wb2xpY3lBcHByb3ZhbEZsYWc7XHJcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KGNhdGVnb3J5SWRzKVxyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChjYXRlZ29yeUlkcywgZGF0YS5hcHByb3ZlcnMsIFtkYXRhLlJldmlld2VyTWVtYmVySWRdKVxyXG4gICAgICAgIHRoaXMucG9wdWxhdGVQb2xpY3lGb3JtKGRhdGEsIGNhdGVnb3J5SWRzKTtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGRhdGEpXHJcbiAgICAgICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGRhdGEpXHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvcHVsYXRlUG9saWN5Rm9ybShkYXRhOiBhbnksIGNhdGVnb3J5SWRzOiBhbnkpIHtcclxuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSBkYXRhLlJldmlld2VyQXR0YWNobWVudHMubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgZmlsZS5maWxlbmFtZSA9IGZpbGUubmFtZVxyXG4gICAgICBmaWxlLmZpbGVwYXRoID0gZmlsZS5maWxlX3BhdGhcclxuICAgICAgZmlsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGZpbGUub3JnX25hbWVcclxuICAgICAgZmlsZS5maWxlX25hbWUgPSBmaWxlLm9yZ19uYW1lXHJcbiAgICAgIGZpbGUubGlua1NldCA9ICcnXHJcbiAgICAgIGRlbGV0ZSBmaWxlLm5hbWVcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZV9wYXRoXHJcbiAgICAgIGRlbGV0ZSBmaWxlLm9yZ19uYW1lXHJcblxyXG4gICAgICByZXR1cm4gZmlsZTtcclxuICAgIH0pXHJcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGVsZS5maWxlbmFtZSA9IGVsZS5uYW1lXHJcbiAgICAgIGVsZS5maWxlcGF0aCA9IGVsZS5maWxlX3BhdGhcclxuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZVxyXG4gICAgICBlbGUuZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZVxyXG4gICAgICBlbGUubGlua1NldCA9IGVsZS5pc0xpbmtTZXRcclxuICAgICAgZGVsZXRlIGVsZS5uYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVfcGF0aDtcclxuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUuaXNMaW5rU2V0O1xyXG4gICAgICByZXR1cm4gZWxlO1xyXG4gICAgfSlcclxuICAgIGNvbnN0IGdyb3VwX2VtcGxveWVlSWRzID0gZGF0YS5ncm91cF9lbXBsb3llZU5hbWVzLm1hcCgoaWQ6IGFueSkgPT4gaWQuZW1wbG95ZWVfaWQpO1xyXG4gICAgY29uc3QgZ3JvdXBfSWRzID0gZGF0YT8udXNlcmdyb3VwX2lkcz8ubWFwKChpZDphbnkpPT4gaWQpID8/IFtdXHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmNhdGVnb3J5TGlzdCwgY2F0ZWdvcnlJZHMsICdfaWQnKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZGF0YS5wb2xpY3lfbmFtZSxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5vdGVzID0gZGF0YS5ub3RlcyxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSAoZGF0YS5jdXN0b21fdGFncykgPyBkYXRhLmN1c3RvbV90YWdzIDogW107XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID0gKGdyb3VwX2VtcGxveWVlSWRzLmxlbmd0aCA+IDApID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgZ3JvdXBfZW1wbG95ZWVJZHMsICdlbXBsb3llZV9pZCcpIDogW107IC8vZG91YnQgaW4gbmFtZVxyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPSAoZ3JvdXBfSWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLmdyb3Vwc0xpc3QsZ3JvdXBfSWRzLCdfaWQnKSA6IFtdO1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IChkYXRhLmVudGl0aWVzKSA/IHRoaXMuc2V0TGlzdCh0aGlzLnJjTGlzdCwgZGF0YS5lbnRpdGllcy5zcGxpdCgnLCcpLCAnaXRlbV9pZCcpIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSAoZGF0YS5DQ0ZhaWxFbWFpbCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSAoZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLCAnX2lkJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsID0gKGRhdGEuQ0NFbWFpbCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRW1haWwuc3BsaXQoJywnKSwgJ2VtcGxveWVlX2VtYWlsJykgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSAoZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCkgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIGRhdGE/LmNjX3VzZXJncm91cF9pZHMsICdfaWQnKSA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID0gZGF0YS5lbmFibGVQb3J0YWwgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBkYXRhLmVuYWJsZVN1Z2dlc3Rpb24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbiA9IGRhdGEuaXNfc2lnbmF0dXJlX3JlcXVpcmVkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJpc2tSYXRpbmcgPSAoZGF0YS5yaXNrX2NsYXNzKSA/IE51bWJlcihkYXRhLnJpc2tfY2xhc3MpIDogMTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gKGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMpID8ge1xyXG4gICAgICBmb3JtYXRGaWxlczogYXR0ZXN0YXRpb25GaWxlc1xyXG4gICAgfSA6IHsgZm9ybWF0RmlsZXM6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IChkYXRhLnN0YXJ0RGF0ZSkgPyBtb21lbnQoZGF0YS5zdGFydERhdGUpIDogbW9tZW50KCk7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSAoZGF0YS5jaGVja3BvaW50cykgPyBkYXRhLmNoZWNrcG9pbnRzIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiA9IChkYXRhLnRvdGFsX21hcmtzKSA/IGRhdGEudG90YWxfbWFya3MgOiAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IChkYXRhLnBhc3NfbWFya3MpID8gZGF0YS5wYXNzX21hcmtzIDogMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcyA9IChkYXRhLlJldmlld2VyQXR0YWNobWVudHMpID8ge1xyXG4gICAgICBmb3JtYXRGaWxlczogcmV2aWV3ZXJGaWxlcyxcclxuICAgICAgZm9ybWF0TGlua3M6IGRhdGEuUmV2aWV3ZXJMaW5rcyxcclxuICAgIH0gOiB7IGZvcm1hdEZpbGVzOiBbXSwgZm9ybWF0TGlua3M6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gKGRhdGEuUmV2aWV3ZXJNZW1iZXJJZCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPSAodGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycyA9ICh0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwubGVuZ3RoID4gMCB8fCB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gKGRhdGE/LmNjX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDApID8gIGRhdGE/LmNjX3VzZXJncm91cF9pZHMgOiBbXTtcclxuICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSAoZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwKSA/ICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHMgOiBbXTtcclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgLy8gdGhpcy5jaGVja0ZvckNyZWF0ZURvY3VtZW50cygpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG4gIGNoYW5nZU5hbWUoZXZlbnQ6c3RyaW5nKXtcclxuICAgIGxldCB0ZXh0ID0gZXZlbnQ7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88KC4qPyk+L2dpLCcnKTtcclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iXX0=