@pega/angular-sdk-components 23.1.10 → 24.2.10

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 (238) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +18 -6
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
  3. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
  4. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +1 -1
  5. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +4 -4
  6. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +4 -4
  8. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +5 -5
  9. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +9 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +5 -5
  12. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +10 -7
  13. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +5 -5
  14. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +5 -5
  16. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +5 -5
  17. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +16 -9
  18. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
  19. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +4 -4
  20. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +14 -12
  22. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +5 -7
  23. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +111 -45
  24. package/esm2022/lib/_components/field/currency/currency.component.mjs +48 -18
  25. package/esm2022/lib/_components/field/date/date.component.mjs +21 -41
  26. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +26 -45
  27. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +41 -11
  28. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +126 -31
  29. package/esm2022/lib/_components/field/email/email.component.mjs +15 -8
  30. package/esm2022/lib/_components/field/group/group.component.mjs +11 -8
  31. package/esm2022/lib/_components/field/integer/integer.component.mjs +15 -10
  32. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +3 -3
  33. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +314 -0
  34. package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
  35. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +41 -14
  36. package/esm2022/lib/_components/field/phone/phone.component.mjs +12 -19
  37. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +12 -19
  38. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +10 -11
  39. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +9 -9
  40. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +5 -5
  41. package/esm2022/lib/_components/field/text/text.component.mjs +7 -5
  42. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +15 -13
  43. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +5 -5
  44. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +15 -10
  45. package/esm2022/lib/_components/field/time/time.component.mjs +23 -12
  46. package/esm2022/lib/_components/field/url/url.component.mjs +17 -10
  47. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +69 -37
  48. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +18 -0
  49. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +71 -0
  50. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +40 -41
  51. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +1 -1
  52. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  53. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +41 -13
  54. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
  55. package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
  56. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +10 -18
  57. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +35 -40
  59. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +4 -4
  60. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +5 -6
  61. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +13 -16
  62. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  63. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +6 -6
  64. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +12 -8
  65. package/esm2022/lib/_components/infra/reference/reference.component.mjs +5 -5
  66. package/esm2022/lib/_components/infra/region/region.component.mjs +4 -4
  67. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +5 -5
  68. package/esm2022/lib/_components/infra/stages/stages.component.mjs +6 -6
  69. package/esm2022/lib/_components/infra/view/view.component.mjs +24 -9
  70. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +21 -5
  71. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +5 -5
  72. package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
  73. package/esm2022/lib/_components/template/base/form-template-base.mjs +13 -0
  74. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +38 -9
  75. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +12 -23
  76. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
  77. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +15 -12
  78. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +9 -21
  79. package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
  80. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
  81. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
  82. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
  83. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
  84. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
  85. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
  86. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +9 -9
  87. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +4 -4
  88. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +9 -21
  89. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +10 -5
  90. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +4 -4
  91. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +6 -6
  92. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +4 -4
  93. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +1 -1
  94. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +54 -35
  95. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +2 -3
  96. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  97. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +5 -5
  98. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  99. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
  100. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +4 -4
  101. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  102. package/esm2022/lib/_components/template/page/page.component.mjs +5 -5
  103. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +5 -5
  104. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +5 -6
  105. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +5 -7
  106. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +3 -3
  107. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +51 -32
  108. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +8 -10
  109. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +4 -4
  110. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +5 -5
  111. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
  112. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
  114. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +5 -5
  115. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  116. package/esm2022/lib/_components/template/utils.mjs +1 -1
  117. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
  118. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +5 -5
  119. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +9 -7
  120. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +4 -4
  121. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +229 -424
  122. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +6 -7
  123. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +6 -10
  124. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +18 -22
  125. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +6 -6
  126. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +5 -5
  127. package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -64
  128. package/esm2022/lib/_components/widget/utility/utility.component.mjs +5 -5
  129. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +5 -5
  130. package/esm2022/lib/_helpers/case-utils.mjs +1 -1
  131. package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
  132. package/esm2022/lib/_helpers/currency-utils.mjs +1 -1
  133. package/esm2022/lib/_helpers/event-util.mjs +1 -1
  134. package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
  135. package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
  136. package/esm2022/lib/_helpers/formatters/boolean.mjs +1 -1
  137. package/esm2022/lib/_helpers/formatters/common.mjs +3 -5
  138. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  139. package/esm2022/lib/_helpers/formatters/date.mjs +4 -4
  140. package/esm2022/lib/_helpers/formatters/format-utils.mjs +3 -3
  141. package/esm2022/lib/_helpers/formatters/index.mjs +17 -3
  142. package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
  143. package/esm2022/lib/_helpers/tab-utils.mjs +1 -1
  144. package/esm2022/lib/_helpers/template-utils.mjs +4 -4
  145. package/esm2022/lib/_helpers/utils.mjs +6 -6
  146. package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
  147. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  148. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  149. package/esm2022/lib/_services/case.service.mjs +4 -4
  150. package/esm2022/lib/_services/datapage.service.mjs +5 -5
  151. package/esm2022/lib/_services/endpoints.mjs +1 -2
  152. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  153. package/esm2022/public-api.mjs +6 -4
  154. package/fesm2022/pega-angular-sdk-components.mjs +2722 -2143
  155. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  156. package/lib/_bridge/angular-pconnect.d.ts +2 -0
  157. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
  158. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
  159. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +1 -1
  160. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
  161. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -2
  162. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +3 -2
  163. package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
  164. package/lib/_components/field/currency/currency.component.d.ts +10 -5
  165. package/lib/_components/field/date/date.component.d.ts +17 -6
  166. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  167. package/lib/_components/field/decimal/decimal.component.d.ts +9 -1
  168. package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -2
  169. package/lib/_components/field/email/email.component.d.ts +2 -0
  170. package/lib/_components/field/integer/integer.component.d.ts +3 -1
  171. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
  172. package/lib/_components/field/multiselect/multiselect.component.d.ts +65 -0
  173. package/lib/_components/field/multiselect/utils.d.ts +8 -0
  174. package/lib/_components/field/percentage/percentage.component.d.ts +11 -1
  175. package/lib/_components/field/phone/phone.component.d.ts +3 -1
  176. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -1
  177. package/lib/_components/field/rich-text/rich-text.component.d.ts +2 -0
  178. package/lib/_components/field/text/text.component.d.ts +3 -1
  179. package/lib/_components/field/text-area/text-area.component.d.ts +3 -1
  180. package/lib/_components/field/text-input/text-input.component.d.ts +3 -1
  181. package/lib/_components/field/time/time.component.d.ts +5 -1
  182. package/lib/_components/field/url/url.component.d.ts +4 -1
  183. package/lib/_components/field/user-reference/user-reference.component.d.ts +16 -4
  184. package/lib/_components/infra/Containers/base-components/flow-container-base.component.d.ts +8 -0
  185. package/lib/_components/infra/Containers/base-components/helper.d.ts +1 -0
  186. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +6 -7
  187. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +3 -2
  188. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  189. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  190. package/lib/_components/infra/assignment/assignment.component.d.ts +2 -2
  191. package/lib/_components/infra/defer-load/defer-load.component.d.ts +2 -2
  192. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  193. package/lib/_components/infra/navbar/navbar.component.d.ts +4 -2
  194. package/lib/_components/infra/view/view.component.d.ts +1 -0
  195. package/lib/_components/template/base/details-template-base.d.ts +22 -0
  196. package/lib/_components/template/base/form-template-base.d.ts +8 -0
  197. package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
  198. package/lib/_components/template/case-view/case-view.component.d.ts +1 -2
  199. package/lib/_components/template/default-form/default-form.component.d.ts +2 -5
  200. package/lib/_components/template/details/details.component.d.ts +3 -11
  201. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -11
  202. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -13
  203. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -13
  204. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -13
  205. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -13
  206. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -13
  207. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -0
  208. package/lib/_components/template/field-value-list/field-value-list.component.d.ts +2 -1
  209. package/lib/_components/template/list-view/list-view.component.d.ts +12 -3
  210. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  211. package/lib/_components/template/one-column/one-column.component.d.ts +2 -1
  212. package/lib/_components/template/simple-table-manual/helpers.d.ts +2 -2
  213. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +4 -0
  214. package/lib/_components/template/three-column/three-column.component.d.ts +2 -1
  215. package/lib/_components/template/two-column/two-column.component.d.ts +2 -1
  216. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -1
  217. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -1
  218. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +4 -2
  219. package/lib/_components/widget/attachment/attachment.component.d.ts +30 -54
  220. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
  221. package/lib/_components/widget/file-utility/file-utility.component.d.ts +2 -2
  222. package/lib/_components/widget/todo/todo.component.d.ts +8 -10
  223. package/lib/_helpers/createstage-utils.d.ts +1 -0
  224. package/lib/_helpers/field-group-utils.d.ts +1 -1
  225. package/lib/_helpers/filter-utils.d.ts +1 -1
  226. package/lib/_helpers/formatters/common.d.ts +1 -1
  227. package/lib/_helpers/instructions-utils.d.ts +4 -0
  228. package/lib/_messages/error-messages.service.d.ts +1 -1
  229. package/lib/_services/endpoints.d.ts +0 -1
  230. package/lib/doc/KeyReleaseUpdates.md +35 -1
  231. package/package.json +3 -3
  232. package/public-api.d.ts +5 -3
  233. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  234. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  235. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  236. package/lib/_messages/get-login-status.service.d.ts +0 -10
  237. package/lib/_messages/oauth-response.service.d.ts +0 -14
  238. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import isEqual from 'fast-deep-equal';
4
4
  import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component';
5
5
  import { getBanners } from '../../../../_helpers/case-utils';
6
+ import { ReferenceComponent } from '../../reference/reference.component';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../../../../_bridge/angular-pconnect";
8
9
  import * as i2 from "../../../../_messages/progress-spinner.service";
@@ -148,10 +149,9 @@ export class ModalViewContainerComponent {
148
149
  }
149
150
  }
150
151
  createView(routingInfo, currentItem, latestItem, key) {
151
- const configObject = this.getConfigObject(currentItem, this.pConn$);
152
+ const configObject = this.getConfigObject(currentItem, null, false);
152
153
  const newComp = configObject?.getPConnect();
153
154
  // const newCompName = newComp.getComponentName();
154
- // @ts-ignore - parameter “contextName” for getDataObject method should be optional
155
155
  const caseInfo = newComp && newComp.getDataObject() && newComp.getDataObject().caseInfo ? newComp.getDataObject().caseInfo : null;
156
156
  // The metadata for pyDetails changed such that the "template": "CaseView"
157
157
  // is no longer a child of the created View but is in the created View's
@@ -186,8 +186,15 @@ export class ModalViewContainerComponent {
186
186
  isDataObject || this.isMultiRecord
187
187
  ? this.getModalHeading(dataObjectAction)
188
188
  : this.determineModalHeaderByAction(actionName, caseTypeName, ID, `${theNewCaseInfo?.getClassName()}!CASE!${theNewCaseInfo.getName()}`.toUpperCase());
189
- // // update children with new view's children
190
- this.arChildren$ = newComp.getChildren();
189
+ const bIsRefComponent = this.checkIfRefComponent(newComp);
190
+ if (bIsRefComponent) {
191
+ const newPConn = ReferenceComponent.normalizePConn(newComp);
192
+ this.arChildren$ = ReferenceComponent.normalizePConnArray(newPConn.getChildren());
193
+ }
194
+ else {
195
+ // update children with new view's children
196
+ this.arChildren$ = newComp.getChildren();
197
+ }
191
198
  this.bShowModal$ = true;
192
199
  // for when non modal
193
200
  this.modalVisibleChange.emit(this.bShowModal$);
@@ -210,22 +217,43 @@ export class ModalViewContainerComponent {
210
217
  this.oCaseInfo = {};
211
218
  });
212
219
  }
213
- getConfigObject(item, pConnect) {
220
+ getConfigObject(item, pConnect, isReverseCoexistence = false) {
221
+ let config;
222
+ if (isReverseCoexistence) {
223
+ config = {
224
+ options: {
225
+ pageReference: pConnect?.getPageReference(),
226
+ hasForm: true,
227
+ containerName: pConnect?.getContainerName() || PCore.getConstants().MODAL
228
+ }
229
+ };
230
+ return PCore.createPConnect(config);
231
+ }
214
232
  if (item) {
215
- const { context, view } = item;
216
- const config = {
233
+ const { context, view, isBulkAction } = item;
234
+ const target = PCore.getContainerUtils().getTargetFromContainerItemID(context);
235
+ config = {
217
236
  meta: view,
218
237
  options: {
219
238
  context,
220
239
  pageReference: view.config.context || pConnect.getPageReference(),
221
240
  hasForm: true,
222
- containerName: pConnect?.getContainerName() || PCore.getConstants().MODAL
241
+ ...(isBulkAction && { isBulkAction }),
242
+ containerName: pConnect?.getContainerName() || PCore.getConstants().MODAL,
243
+ target
223
244
  }
224
245
  };
225
246
  return PCore.createPConnect(config);
226
247
  }
227
248
  return null;
228
249
  }
250
+ checkIfRefComponent(thePConn) {
251
+ let bReturn = false;
252
+ if (thePConn && thePConn.getComponentName() == 'reference') {
253
+ bReturn = true;
254
+ }
255
+ return bReturn;
256
+ }
229
257
  onAlertState(bData) {
230
258
  this.bAlertState = bData;
231
259
  this.bShowCancelAlert$ = false;
@@ -298,17 +326,17 @@ export class ModalViewContainerComponent {
298
326
  }
299
327
  return `${this.localizedVal('Create', this.localeCategory)} ${this.localizedVal(caseTypeName, undefined, caseLocaleRef)} (${ID})`;
300
328
  }
301
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.NgZone }, { token: i2.ProgressSpinnerService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
302
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ModalViewContainerComponent, isStandalone: true, selector: "app-modal-view-container", inputs: { pConn$: "pConn$", displayOnlyFA$: "displayOnlyFA$" }, outputs: { modalVisibleChange: "modalVisibleChange" }, ngImport: i0, template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ModalViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.NgZone }, { token: i2.ProgressSpinnerService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
330
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ModalViewContainerComponent, isStandalone: true, selector: "app-modal-view-container", inputs: { pConn$: "pConn$", displayOnlyFA$: "displayOnlyFA$" }, outputs: { modalVisibleChange: "modalVisibleChange" }, ngImport: i0, template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
303
331
  }
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalViewContainerComponent, decorators: [{
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ModalViewContainerComponent, decorators: [{
305
333
  type: Component,
306
334
  args: [{ selector: 'app-modal-view-container', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n" }]
307
- }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i0.NgZone }, { type: i2.ProgressSpinnerService }, { type: i3.FormBuilder }]; }, propDecorators: { pConn$: [{
335
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.NgZone }, { type: i2.ProgressSpinnerService }, { type: i3.FormBuilder }], propDecorators: { pConn$: [{
308
336
  type: Input
309
337
  }], displayOnlyFA$: [{
310
338
  type: Input
311
339
  }], modalVisibleChange: [{
312
340
  type: Output
313
341
  }] } });
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBRTdEOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sMkJBQTJCO0lBeUN0QyxZQUNVLGVBQXVDLEVBQ3ZDLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxFQUFlO1FBSGYsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBekN6QixxQkFBcUI7UUFDWCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFD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QUFDLHdCQUF3QixDQUFDLENBQUM7aU1BRzFELE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRCYW5uZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2hlbHBlcnMvY2FzZS11dGlscyc7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tb2RhbC12aWV3LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC12aWV3LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxWaWV3Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZGlzcGxheU9ubHlGQSQ6IGJvb2xlYW47XG5cbiAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gIEBPdXRwdXQoKSBtb2RhbFZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBzdGF0ZVByb3BzJDogT2JqZWN0O1xuICBiYW5uZXJzOiBhbnk7XG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuICBjb250ZXh0JDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcbiAgYlNob3dNb2RhbCQgPSBmYWxzZTtcbiAgYlNob3dBc01vZGFsJCA9IHRydWU7XG4gIGl0ZW1LZXkkOiBzdHJpbmc7XG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgb0Nhc2VJbmZvOiBPYmplY3QgPSB7fTtcblxuICAvLyBmb3IgY2F1c2luZyBhIGNoYW5nZSBvbiBhc3NpZ25tZW50XG4gIHVwZGF0ZVRva2VuJCA9IDA7XG5cbiAgcm91dGluZ0luZm9SZWY6IGFueSA9IHt9O1xuXG4gIC8vIGNyZWF0ZWQgb2JqZWN0IGlzIG5vdyBhIFZpZXcgd2l0aCBhIFRlbXBsYXRlXG4gIC8vICBVc2UgaXRzIFBDb25uZWN0IHRvIHJlbmRlciB0aGUgQ2FzZVZpZXc7IERPTidUIHJlcGxhY2UgdGhpcy5wQ29ubiRcbiAgY3JlYXRlZFZpZXdQQ29ubiQ6IGFueTtcblxuICBiU3Vic2NyaWJlZCA9IGZhbHNlO1xuICBjYW5jZWxQQ29ubiQ/OiB0eXBlb2YgUENvbm5lY3Q7XG4gIGJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gIGJBbGVydFN0YXRlOiBib29sZWFuO1xuICBsb2NhbGl6ZWRWYWw6IEZ1bmN0aW9uO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdEYXRhIE9iamVjdCc7XG4gIGlzTXVsdGlSZWNvcmQgPSBmYWxzZTtcbiAgYWN0aW9uc0RpYWxvZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBmb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCQgPSBmYi5ncm91cCh7IGhpZGVSZXF1aXJlZDogZmFsc2UgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5T25seUZBJCkge1xuICAgICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgICB0aGlzLmJTaG93QXNNb2RhbCQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICAvLyBmb3Igbm93LCBpbiBnZW5lcmFsIHRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgdXBkYXRlU2VsZigpLCBhbmQgbm90IGJlIGJsYW5rXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyTWdyOiBhbnkgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG5cbiAgICBjb250YWluZXJNZ3IuaW5pdGlhbGl6ZUNvbnRhaW5lcnMoe1xuICAgICAgdHlwZTogJ211bHRpcGxlJ1xuICAgIH0pO1xuXG4gICAgLy8gY29uc3QgeyBDT05UQUlORVJfVFlQRSwgUFVCX1NVQl9FVkVOVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuICAgIHRoaXMubG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IFBVQl9TVUJfRVZFTlRTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoXG4gICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVCxcbiAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJUIC8qIFNob3VsZCBiZSBzYW1lIHVuaXF1ZSBzdHJpbmcgcGFzc2VkIGR1cmluZyBzdWJzY3JpcHRpb24gKi9cbiAgICApO1xuICAgIHRoaXMuYlN1YnNjcmliZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyByaWdodCBub3cgb25sdSBnZXQgb25lIHVwZGF0ZWQgd2hlbiBpbml0aWFsIGRpYXBsYXkuICBTbywgb25jZSBtb2RhbCBpcyB1cFxuICAgICAgLy8gbGV0IGZhbGwgdGhyb3VnaCBhbmQgZG8gYSBjaGVjayB3aXRoIFwiY29tcGFyZUNhc2VJbmZvSXNEaWZmZXJlbnRcIiB1bnRpbCBmaXhlZFxuICAgICAgLy8gdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIHJvdXRpbmdJbmZvIHdhcyBhZGRlZCBhcyBjb21wb25lbnQgcHJvcCBpbiBwb3B1bGF0ZUFkZGl0aW9uYWxQcm9wc1xuICAgIGNvbnN0IHJvdXRpbmdJbmZvID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50UHJvcCh0aGlzLCAncm91dGluZ0luZm8nKTtcbiAgICB0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQgPSByb3V0aW5nSW5mbztcblxuICAgIGxldCBsb2FkaW5nSW5mbztcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRMb2FkaW5nU3RhdHVzJyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDMTFuRW52J1xuICAgICAgbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8qIGVtcHR5ICovXG4gICAgfVxuICAgIC8vIGNvbnN0IGNvbmZpZ1Byb3BzID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuICAgIHRoaXMuc3RhdGVQcm9wcyQgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCk7XG4gICAgdGhpcy5iYW5uZXJzID0gdGhpcy5nZXRCYW5uZXJzKCk7XG5cbiAgICBpZiAoIWxvYWRpbmdJbmZvKSB7XG4gICAgICAvLyB0dXJuIG9mZiBzcGlubmVyXG4gICAgICAvLyB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHJvdXRpbmdJbmZvICYmICFsb2FkaW5nSW5mbyAvKiAmJiB0aGlzLmJVcGRhdGUgKi8pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlciA9IHJvdXRpbmdJbmZvLmFjY2Vzc2VkT3JkZXI7XG5cbiAgICAgIGlmICh1bmRlZmluZWQgPT0gY3VycmVudE9yZGVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gcm91dGluZ0luZm8uaXRlbXM7XG5cbiAgICAgIGNvbnN0IHsga2V5LCBsYXRlc3RJdGVtIH0gPSB0aGlzLmdldEtleUFuZExhdGVzdEl0ZW0ocm91dGluZ0luZm8pO1xuXG4gICAgICBpZiAoY3VycmVudE9yZGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJdGVtc1trZXldICYmIGN1cnJlbnRJdGVtc1trZXldLnZpZXcgJiYgT2JqZWN0LmtleXMoY3VycmVudEl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gY3VycmVudEl0ZW1zW2tleV07XG4gICAgICAgICAgY29uc3Qgcm9vdFZpZXcgPSBjdXJyZW50SXRlbS52aWV3O1xuICAgICAgICAgIGNvbnN0IHsgY29udGV4dCB9ID0gcm9vdFZpZXcuY29uZmlnO1xuICAgICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0geyBtZXRhOiByb290VmlldyB9O1xuICAgICAgICAgIGNvbmZpZy5vcHRpb25zID0ge1xuICAgICAgICAgICAgY29udGV4dDogY3VycmVudEl0ZW0uY29udGV4dCxcbiAgICAgICAgICAgIGhhc0Zvcm06IHRydWUsXG4gICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiBjb250ZXh0IHx8IHRoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoIXRoaXMuYlN1YnNjcmliZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYlN1YnNjcmliZWQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgeyBQVUJfU1VCX0VWRU5UUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlQsXG4gICAgICAgICAgICAgIHBheWxvYWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0KHBheWxvYWQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBsZXQgY29uZmlnT2JqZWN0ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcblxuICAgICAgICAgIC8vIFRISVMgaXMgd2hlcmUgdGhlIFZpZXdDb250YWluZXIgY3JlYXRlcyBhIFZpZXdcbiAgICAgICAgICAvLyBUaGUgY29uZmlnIGhhcyBtZXRhLmNvbmZpZy50eXBlID0gXCJ2aWV3XCJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVZpZXcocm91dGluZ0luZm8sIGN1cnJlbnRJdGVtLCBsYXRlc3RJdGVtLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVZpZXcocm91dGluZ0luZm8sIGN1cnJlbnRJdGVtLCBsYXRlc3RJdGVtLCBrZXkpIHtcbiAgICBjb25zdCBjb25maWdPYmplY3QgPSB0aGlzLmdldENvbmZpZ09iamVjdChjdXJyZW50SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgIGNvbnN0IG5ld0NvbXAgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgLy8gY29uc3QgbmV3Q29tcE5hbWUgPSBuZXdDb21wLmdldENvbXBvbmVudE5hbWUoKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gcGFyYW1ldGVyIOKAnGNvbnRleHROYW1l4oCdIGZvciBnZXREYXRhT2JqZWN0IG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICBjb25zdCBjYXNlSW5mbyA9IG5ld0NvbXAgJiYgbmV3Q29tcC5nZXREYXRhT2JqZWN0KCkgJiYgbmV3Q29tcC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8gPyBuZXdDb21wLmdldERhdGFPYmplY3QoKS5jYXNlSW5mbyA6IG51bGw7XG4gICAgLy8gVGhlIG1ldGFkYXRhIGZvciBweURldGFpbHMgY2hhbmdlZCBzdWNoIHRoYXQgdGhlIFwidGVtcGxhdGVcIjogXCJDYXNlVmlld1wiXG4gICAgLy8gIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIHRoZSBjcmVhdGVkIFZpZXcgYnV0IGlzIGluIHRoZSBjcmVhdGVkIFZpZXcnc1xuICAgIC8vICBjb25maWcuIFNvLCB3ZSBET04nVCB3YW50IHRvIHJlcGxhY2UgdGhpcy5wQ29ubiQgc2luY2UgdGhlIGNyZWF0ZWRcbiAgICAvLyAgY29tcG9uZW50IGlzIGEgVmlldyAoYW5kIG5vdCBhIFZpZXdDb250YWluZXIpLiBXZSBub3cgbG9vayBmb3IgdGhlXG4gICAgLy8gIFwidGVtcGxhdGVcIiB0eXBlIGRpcmVjdGx5IGluIHRoZSBjcmVhdGVkIGNvbXBvbmVudCAobmV3Q29tcCkgYW5kIE5PVFxuICAgIC8vICBhcyBhIGNoaWxkIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudC5cbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBNb2RhbFZpZXdDb250YWluZXIgY3JlYXRlZCBuZXcgJHtuZXdDb21wTmFtZX1gKTtcblxuICAgIC8vIFVzZSB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQgKFZpZXcpIGluZm8gYnV0IERPIE5PVCByZXBsYWNlXG4gICAgLy8gIHRoaXMgTW9kYWxWaWV3Q29udGFpbmVyJ3MgcENvbm4kLCBldGMuXG4gICAgLy8gIE5vdGUgdGhhdCB3ZSdyZSBub3cgdXNpbmcgdGhlIG5ld2x5IGNyZWF0ZWQgVmlldydzIFBDb25uZWN0IGluIHRoZVxuICAgIC8vICBWaWV3Q29udGFpbmVyIEhUTUwgdGVtcGxhdGUgdG8gZ3VpZGUgd2hhdCdzIHJlbmRlcmVkIHNpbWlsYXIgdG8gd2hhdFxuICAgIC8vICB0aGUgTmVidWxhL0NvbnN0ZWxsYXRpb24gcmV0dXJuIG9mIFJlYWN0LkZyYWdtZW50IGRvZXNcblxuICAgIC8vIHJpZ2h0IG5vdyBuZWVkIHRvIGNoZWNrIGNhc2VJbmZvIGZvciBjaGFuZ2VzLCB0byB0cmlnZ2VyIHJlZHJhdywgbm90IGdldHRpbmdcbiAgICAvLyBjaGFuZ2VzIGZyb20gYW5ndWxhclBjb25uZWN0IGV4Y2VwdCBmb3IgZmlyc3QgZHJhd1xuICAgIGlmIChuZXdDb21wICYmIGNhc2VJbmZvICYmIHRoaXMuY29tcGFyZUNhc2VJbmZvSXNEaWZmZXJlbnQoY2FzZUluZm8pKSB7XG4gICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlZFZpZXdQQ29ubiQgPSBuZXdDb21wO1xuICAgICAgICBjb25zdCBuZXdDb25maWdQcm9wcyA9IG5ld0NvbXAuZ2V0Q29uZmlnUHJvcHMoKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gJ3RlbXBsYXRlJyBpbiBuZXdDb25maWdQcm9wcyA/IChuZXdDb25maWdQcm9wcy50ZW1wbGF0ZSBhcyBzdHJpbmcpIDogJyc7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb25OYW1lIH0gPSBsYXRlc3RJdGVtO1xuICAgICAgICBjb25zdCB0aGVOZXdDYXNlSW5mbyA9IG5ld0NvbXAuZ2V0Q2FzZUluZm8oKTtcbiAgICAgICAgLy8gY29uc3QgY2FzZU5hbWUgPSB0aGVOZXdDYXNlSW5mby5nZXROYW1lKCk7XG4gICAgICAgIGNvbnN0IElEID0gdGhlTmV3Q2FzZUluZm8uZ2V0QnVzaW5lc3NJRCgpIHx8IHRoZU5ld0Nhc2VJbmZvLmdldElEKCk7XG5cbiAgICAgICAgY29uc3QgY2FzZVR5cGVOYW1lID0gdGhlTmV3Q2FzZUluZm8uZ2V0Q2FzZVR5cGVOYW1lKCk7XG4gICAgICAgIGNvbnN0IGlzRGF0YU9iamVjdCA9IHJvdXRpbmdJbmZvLml0ZW1zW2xhdGVzdEl0ZW0uY29udGV4dF0ucmVzb3VyY2VUeXBlID09PSBQQ29yZS5nZXRDb25zdGFudHMoKS5SRVNPVVJDRV9UWVBFUy5EQVRBO1xuICAgICAgICBjb25zdCBkYXRhT2JqZWN0QWN0aW9uID0gcm91dGluZ0luZm8uaXRlbXNbbGF0ZXN0SXRlbS5jb250ZXh0XS5yZXNvdXJjZVN0YXR1cztcbiAgICAgICAgdGhpcy5pc011bHRpUmVjb3JkID0gcm91dGluZ0luZm8uaXRlbXNbbGF0ZXN0SXRlbS5jb250ZXh0XS5pc011bHRpUmVjb3JkRGF0YTtcbiAgICAgICAgdGhpcy5jb250ZXh0JCA9IGxhdGVzdEl0ZW0uY29udGV4dDtcbiAgICAgICAgdGhpcy50aXRsZSQgPVxuICAgICAgICAgIGlzRGF0YU9iamVjdCB8fCB0aGlzLmlzTXVsdGlSZWNvcmRcbiAgICAgICAgICAgID8gdGhpcy5nZXRNb2RhbEhlYWRpbmcoZGF0YU9iamVjdEFjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5kZXRlcm1pbmVNb2RhbEhlYWRlckJ5QWN0aW9uKFxuICAgICAgICAgICAgICAgIGFjdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgY2FzZVR5cGVOYW1lLFxuICAgICAgICAgICAgICAgIElELFxuICAgICAgICAgICAgICAgIGAke3RoZU5ld0Nhc2VJbmZvPy5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke3RoZU5ld0Nhc2VJbmZvLmdldE5hbWUoKX1gLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgLy8gLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gbmV3Q29tcC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuICAgICAgICB0aGlzLmJTaG93TW9kYWwkID0gdHJ1ZTtcblxuICAgICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgICAgICAvLyBzYXZlIG9mZiBpdGVtS2V5IHRvIGJlIHVzZWQgZm9yIGZpbmlzaEFzc2lnbm1lbnQsIGV0Yy5cbiAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcblxuICAgICAgICAvLyBjYXVzZSBhIGNoYW5nZSBmb3IgYXNzaWdubWVudFxuICAgICAgICB0aGlzLnVwZGF0ZVRva2VuJCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGlkZU1vZGFsKCkge1xuICAgIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyBvdGhlciBjb2RlIGluIE5lYnVsYS9Db25zdGVsbGF0aW9uIG5vdCBuZWVkZWQgY3VycmVudGx5LCBidXQgaWYgc28gbGF0ZXIsXG4gICAgICAvLyBzaG91bGQgcHV0IGhlcmVcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWdPYmplY3QoaXRlbSwgcENvbm5lY3QpIHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgY29uc3QgeyBjb250ZXh0LCB2aWV3IH0gPSBpdGVtO1xuICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICBtZXRhOiB2aWV3LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB2aWV3LmNvbmZpZy5jb250ZXh0IHx8IHBDb25uZWN0LmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5lck5hbWU6IHBDb25uZWN0Py5nZXRDb250YWluZXJOYW1lKCkgfHwgUENvcmUuZ2V0Q29uc3RhbnRzKCkuTU9EQUxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG9uQWxlcnRTdGF0ZShiRGF0YTogYm9vbGVhbikge1xuICAgIHRoaXMuYkFsZXJ0U3RhdGUgPSBiRGF0YTtcbiAgICB0aGlzLmJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuYkFsZXJ0U3RhdGUpIHtcbiAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0FsZXJ0KHBheWxvYWQpIHtcbiAgICBjb25zdCB7IGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbSh0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHsgaXNNb2RhbEFjdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8qXG4gICAgICBJZiB3ZSBhcmUgaW4gY3JlYXRlIHN0YWdlIGZ1bGwgcGFnZSBtb2RlLCBjcmVhdGVkIGEgbmV3IGNhc2UgYW5kIHRyeWluZyB0byBjbGljayBvbiBjYW5jZWwgYnV0dG9uXG4gICAgICBpdCB3aWxsIHNob3cgdHdvIGFsZXJ0IGRpYWxvZ3Mgd2hpY2ggaXMgbm90IGV4cGVjdGVkLiBIZW5jZSBpc01vZGFsQWN0aW9uIGZsYWcgdG8gYXZvaWQgdGhhdC5cbiAgICAqL1xuICAgIGlmIChsYXRlc3RJdGVtICYmIGlzTW9kYWxBY3Rpb24gJiYgIXRoaXMuYWN0aW9uc0RpYWxvZykge1xuICAgICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QobGF0ZXN0SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxQQ29ubiQgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgICAgIHRoaXMuYlNob3dDYW5jZWxBbGVydCQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29udGFpbmVySXRlbXMocm91dGluZ0luZm8pIHtcbiAgICBpZiAocm91dGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IHsgYWNjZXNzZWRPcmRlciwgaXRlbXMgfSA9IHJvdXRpbmdJbmZvO1xuICAgICAgcmV0dXJuIGFjY2Vzc2VkT3JkZXIgJiYgYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwICYmIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdpbmZvKSB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGFpbmVySXRlbXMocm91dGluZ2luZm8pKSB7XG4gICAgICBjb25zdCB7IGFjY2Vzc2VkT3JkZXIsIGl0ZW1zIH0gPSByb3V0aW5naW5mbztcbiAgICAgIGNvbnN0IGtleSA9IGFjY2Vzc2VkT3JkZXJbYWNjZXNzZWRPcmRlci5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgcmV0dXJuIHsga2V5LCBsYXRlc3RJdGVtIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KG9DdXJyZW50Q2FzZUluZm86IE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG5cbiAgICAvLyBmYXN0LWRlZXAtZXF1YWwgdmVyc2lvblxuICAgIGlmIChpc0VxdWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJSZXQgPSAhaXNFcXVhbCh0aGlzLm9DYXNlSW5mbywgb0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNDdXJybmVudENhc2VJbmZvID0gSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgICBjb25zdCBzT2xkQ2FzZUluZm8gPSBKU09OLnN0cmluZ2lmeSh0aGlzLm9DYXNlSW5mbyk7XG4gICAgICAvLyBzdHJpbmdpZnkgY29tcGFyZSB2ZXJzaW9uXG4gICAgICBpZiAoc0N1cnJuZW50Q2FzZUluZm8gIT0gc09sZENhc2VJbmZvKSB7XG4gICAgICAgIGJSZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGRpZmZlcmVudCwgc2F2ZSBvZmYgbmV3IGNhc2UgaW5mb1xuICAgIGlmIChiUmV0KSB7XG4gICAgICB0aGlzLm9DYXNlSW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbykpO1xuICAgIH1cblxuICAgIHJldHVybiBiUmV0O1xuICB9XG5cbiAgZ2V0QmFubmVycygpIHtcbiAgICByZXR1cm4gZ2V0QmFubmVycyh7IHRhcmdldDogdGhpcy5pdGVtS2V5JCwgLi4udGhpcy5zdGF0ZVByb3BzJCB9KTtcbiAgfVxuXG4gIGdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RBY3Rpb24gPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEVcbiAgICAgID8gdGhpcy5sb2NhbGl6ZWRWYWwoJ0FkZCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KVxuICAgICAgOiB0aGlzLmxvY2FsaXplZFZhbCgnRWRpdCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgfVxuXG4gIGRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oYWN0aW9uTmFtZSwgY2FzZVR5cGVOYW1lLCBJRCwgY2FzZUxvY2FsZVJlZikge1xuICAgIGlmIChhY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRWYWwoYWN0aW9uTmFtZSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ3JlYXRlJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9ICR7dGhpcy5sb2NhbGl6ZWRWYWwoY2FzZVR5cGVOYW1lLCB1bmRlZmluZWQsIGNhc2VMb2NhbGVSZWYpfSAoJHtJRH0pYDtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uc0RpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLmFjdGlvbnNEaWFsb2cgPSB0cnVlO1xuICAgIC8vIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgLy8gfSk7XG4gIH07XG59XG4iLCI8ZGl2IGlkPVwiZGlhbG9nXCIgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiBiU2hvd0FzTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLXZpZXctY29udGFpbmVyLXRvcFwiIGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCwgaXNJbk1vZGFsJDogdHJ1ZSwgYmFubmVycyB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDxkaXYgKm5nSWY9XCJpc011bHRpUmVjb3JkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiTGlzdFZpZXdBY3Rpb25CdXR0b25zXCJcbiAgICAgICAgW3Byb3BzXT1cInsgcENvbm4kOiBjcmVhdGVkVmlld1BDb25uJCwgY29udGV4dCQgfVwiXG4gICAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBjbG9zZUFjdGlvbnNEaWFsb2c6IGNsb3NlQWN0aW9uc0RpYWxvZyB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiAhYlNob3dBc01vZGFsJFwiPlxuICA8ZGl2IGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dDYW5jZWxBbGVydCRcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiQ2FuY2VsQWxlcnRcIlxuICAgIFtwcm9wc109XCJ7IGJTaG93QWxlcnQkOiBiU2hvd0NhbmNlbEFsZXJ0JCwgcENvbm4kOiBjYW5jZWxQQ29ubiQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgb25BbGVydFN0YXRlJDogb25BbGVydFN0YXRlIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG4iXX0=
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7O0FBRXpFOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sMkJBQTJCO0lBeUN0QyxZQUNVLGVBQXVDLEVBQ3ZDLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxFQUFlO1FBSGYsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBekN6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Q0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNwSSxDQUFDOytHQXJZVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiwyTUN2QnhDLGswQ0FtQ0EsNkVEZFksWUFBWSw2S0FBbUIsd0JBQXdCOzs0RkFFdEQsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7K0tBRzFELE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRCYW5uZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2hlbHBlcnMvY2FzZS11dGlscyc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tb2RhbC12aWV3LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC12aWV3LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxWaWV3Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZGlzcGxheU9ubHlGQSQ6IGJvb2xlYW47XG5cbiAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gIEBPdXRwdXQoKSBtb2RhbFZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBzdGF0ZVByb3BzJDogT2JqZWN0O1xuICBiYW5uZXJzOiBhbnk7XG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuICBjb250ZXh0JDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcbiAgYlNob3dNb2RhbCQgPSBmYWxzZTtcbiAgYlNob3dBc01vZGFsJCA9IHRydWU7XG4gIGl0ZW1LZXkkOiBzdHJpbmc7XG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgb0Nhc2VJbmZvOiBPYmplY3QgPSB7fTtcblxuICAvLyBmb3IgY2F1c2luZyBhIGNoYW5nZSBvbiBhc3NpZ25tZW50XG4gIHVwZGF0ZVRva2VuJCA9IDA7XG5cbiAgcm91dGluZ0luZm9SZWY6IGFueSA9IHt9O1xuXG4gIC8vIGNyZWF0ZWQgb2JqZWN0IGlzIG5vdyBhIFZpZXcgd2l0aCBhIFRlbXBsYXRlXG4gIC8vICBVc2UgaXRzIFBDb25uZWN0IHRvIHJlbmRlciB0aGUgQ2FzZVZpZXc7IERPTidUIHJlcGxhY2UgdGhpcy5wQ29ubiRcbiAgY3JlYXRlZFZpZXdQQ29ubiQ6IGFueTtcblxuICBiU3Vic2NyaWJlZCA9IGZhbHNlO1xuICBjYW5jZWxQQ29ubiQ/OiB0eXBlb2YgUENvbm5lY3Q7XG4gIGJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gIGJBbGVydFN0YXRlOiBib29sZWFuO1xuICBsb2NhbGl6ZWRWYWw6IEZ1bmN0aW9uO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdEYXRhIE9iamVjdCc7XG4gIGlzTXVsdGlSZWNvcmQgPSBmYWxzZTtcbiAgYWN0aW9uc0RpYWxvZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBmb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCQgPSBmYi5ncm91cCh7IGhpZGVSZXF1aXJlZDogZmFsc2UgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5T25seUZBJCkge1xuICAgICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgICB0aGlzLmJTaG93QXNNb2RhbCQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICAvLyBmb3Igbm93LCBpbiBnZW5lcmFsIHRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgdXBkYXRlU2VsZigpLCBhbmQgbm90IGJlIGJsYW5rXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuXG4gICAgY29udGFpbmVyTWdyLmluaXRpYWxpemVDb250YWluZXJzKHtcbiAgICAgIHR5cGU6ICdtdWx0aXBsZSdcbiAgICB9KTtcblxuICAgIC8vIGNvbnN0IHsgQ09OVEFJTkVSX1RZUEUsIFBVQl9TVUJfRVZFTlRTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBQVUJfU1VCX0VWRU5UUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFxuICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlQsXG4gICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVCAvKiBTaG91bGQgYmUgc2FtZSB1bmlxdWUgc3RyaW5nIHBhc3NlZCBkdXJpbmcgc3Vic2NyaXB0aW9uICovXG4gICAgKTtcbiAgICB0aGlzLmJTdWJzY3JpYmVkID0gZmFsc2U7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5iU2hvd01vZGFsJCkge1xuICAgICAgLy8gcmlnaHQgbm93IG9ubHUgZ2V0IG9uZSB1cGRhdGVkIHdoZW4gaW5pdGlhbCBkaWFwbGF5LiAgU28sIG9uY2UgbW9kYWwgaXMgdXBcbiAgICAgIC8vIGxldCBmYWxsIHRocm91Z2ggYW5kIGRvIGEgY2hlY2sgd2l0aCBcImNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50XCIgdW50aWwgZml4ZWRcbiAgICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHVwZGF0ZVNlbGZcbiAgdXBkYXRlU2VsZigpOiB2b2lkIHtcbiAgICAvLyByb3V0aW5nSW5mbyB3YXMgYWRkZWQgYXMgY29tcG9uZW50IHByb3AgaW4gcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHNcbiAgICBjb25zdCByb3V0aW5nSW5mbyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudFByb3AodGhpcywgJ3JvdXRpbmdJbmZvJyk7XG4gICAgdGhpcy5yb3V0aW5nSW5mb1JlZi5jdXJyZW50ID0gcm91dGluZ0luZm87XG5cbiAgICBsZXQgbG9hZGluZ0luZm87XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBQcm9wZXJ0eSAnZ2V0TG9hZGluZ1N0YXR1cycgaXMgcHJpdmF0ZSBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiBjbGFzcyAnQzExbkVudidcbiAgICAgIGxvYWRpbmdJbmZvID0gdGhpcy5wQ29ubiQuZ2V0TG9hZGluZ1N0YXR1cygpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICAvLyBjb25zdCBjb25maWdQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcbiAgICB0aGlzLnN0YXRlUHJvcHMkID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpO1xuICAgIHRoaXMuYmFubmVycyA9IHRoaXMuZ2V0QmFubmVycygpO1xuXG4gICAgaWYgKCFsb2FkaW5nSW5mbykge1xuICAgICAgLy8gdHVybiBvZmYgc3Bpbm5lclxuICAgICAgLy8gdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChyb3V0aW5nSW5mbyAmJiAhbG9hZGluZ0luZm8gLyogJiYgdGhpcy5iVXBkYXRlICovKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3JkZXIgPSByb3V0aW5nSW5mby5hY2Nlc3NlZE9yZGVyO1xuXG4gICAgICBpZiAodW5kZWZpbmVkID09IGN1cnJlbnRPcmRlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHJvdXRpbmdJbmZvLml0ZW1zO1xuXG4gICAgICBjb25zdCB7IGtleSwgbGF0ZXN0SXRlbSB9ID0gdGhpcy5nZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdJbmZvKTtcblxuICAgICAgaWYgKGN1cnJlbnRPcmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChjdXJyZW50SXRlbXNba2V5XSAmJiBjdXJyZW50SXRlbXNba2V5XS52aWV3ICYmIE9iamVjdC5rZXlzKGN1cnJlbnRJdGVtc1trZXldLnZpZXcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGN1cnJlbnRJdGVtc1trZXldO1xuICAgICAgICAgIGNvbnN0IHJvb3RWaWV3ID0gY3VycmVudEl0ZW0udmlldztcbiAgICAgICAgICBjb25zdCB7IGNvbnRleHQgfSA9IHJvb3RWaWV3LmNvbmZpZztcbiAgICAgICAgICBjb25zdCBjb25maWc6IGFueSA9IHsgbWV0YTogcm9vdFZpZXcgfTtcbiAgICAgICAgICBjb25maWcub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGN1cnJlbnRJdGVtLmNvbnRleHQsXG4gICAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgICAgcGFnZVJlZmVyZW5jZTogY29udGV4dCB8fCB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKClcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKCF0aGlzLmJTdWJzY3JpYmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHsgUFVCX1NVQl9FVkVOVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJULFxuICAgICAgICAgICAgICBwYXlsb2FkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gbGV0IGNvbmZpZ09iamVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG5cbiAgICAgICAgICAvLyBUSElTIGlzIHdoZXJlIHRoZSBWaWV3Q29udGFpbmVyIGNyZWF0ZXMgYSBWaWV3XG4gICAgICAgICAgLy8gVGhlIGNvbmZpZyBoYXMgbWV0YS5jb25maWcudHlwZSA9IFwidmlld1wiXG4gICAgICAgICAgdGhpcy5jcmVhdGVWaWV3KHJvdXRpbmdJbmZvLCBjdXJyZW50SXRlbSwgbGF0ZXN0SXRlbSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVWaWV3KHJvdXRpbmdJbmZvLCBjdXJyZW50SXRlbSwgbGF0ZXN0SXRlbSwga2V5KSB7XG4gICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QoY3VycmVudEl0ZW0sIG51bGwsIGZhbHNlKTtcbiAgICBjb25zdCBuZXdDb21wID0gY29uZmlnT2JqZWN0Py5nZXRQQ29ubmVjdCgpO1xuICAgIC8vIGNvbnN0IG5ld0NvbXBOYW1lID0gbmV3Q29tcC5nZXRDb21wb25lbnROYW1lKCk7XG4gICAgY29uc3QgY2FzZUluZm8gPSBuZXdDb21wICYmIG5ld0NvbXAuZ2V0RGF0YU9iamVjdCgpICYmIG5ld0NvbXAuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvID8gbmV3Q29tcC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8gOiBudWxsO1xuICAgIC8vIFRoZSBtZXRhZGF0YSBmb3IgcHlEZXRhaWxzIGNoYW5nZWQgc3VjaCB0aGF0IHRoZSBcInRlbXBsYXRlXCI6IFwiQ2FzZVZpZXdcIlxuICAgIC8vICBpcyBubyBsb25nZXIgYSBjaGlsZCBvZiB0aGUgY3JlYXRlZCBWaWV3IGJ1dCBpcyBpbiB0aGUgY3JlYXRlZCBWaWV3J3NcbiAgICAvLyAgY29uZmlnLiBTbywgd2UgRE9OJ1Qgd2FudCB0byByZXBsYWNlIHRoaXMucENvbm4kIHNpbmNlIHRoZSBjcmVhdGVkXG4gICAgLy8gIGNvbXBvbmVudCBpcyBhIFZpZXcgKGFuZCBub3QgYSBWaWV3Q29udGFpbmVyKS4gV2Ugbm93IGxvb2sgZm9yIHRoZVxuICAgIC8vICBcInRlbXBsYXRlXCIgdHlwZSBkaXJlY3RseSBpbiB0aGUgY3JlYXRlZCBjb21wb25lbnQgKG5ld0NvbXApIGFuZCBOT1RcbiAgICAvLyAgYXMgYSBjaGlsZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQuXG4gICAgLy8gY29uc29sZS5sb2coYC0tLT4gTW9kYWxWaWV3Q29udGFpbmVyIGNyZWF0ZWQgbmV3ICR7bmV3Q29tcE5hbWV9YCk7XG5cbiAgICAvLyBVc2UgdGhlIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50IChWaWV3KSBpbmZvIGJ1dCBETyBOT1QgcmVwbGFjZVxuICAgIC8vICB0aGlzIE1vZGFsVmlld0NvbnRhaW5lcidzIHBDb25uJCwgZXRjLlxuICAgIC8vICBOb3RlIHRoYXQgd2UncmUgbm93IHVzaW5nIHRoZSBuZXdseSBjcmVhdGVkIFZpZXcncyBQQ29ubmVjdCBpbiB0aGVcbiAgICAvLyAgVmlld0NvbnRhaW5lciBIVE1MIHRlbXBsYXRlIHRvIGd1aWRlIHdoYXQncyByZW5kZXJlZCBzaW1pbGFyIHRvIHdoYXRcbiAgICAvLyAgdGhlIE5lYnVsYS9Db25zdGVsbGF0aW9uIHJldHVybiBvZiBSZWFjdC5GcmFnbWVudCBkb2VzXG5cbiAgICAvLyByaWdodCBub3cgbmVlZCB0byBjaGVjayBjYXNlSW5mbyBmb3IgY2hhbmdlcywgdG8gdHJpZ2dlciByZWRyYXcsIG5vdCBnZXR0aW5nXG4gICAgLy8gY2hhbmdlcyBmcm9tIGFuZ3VsYXJQY29ubmVjdCBleGNlcHQgZm9yIGZpcnN0IGRyYXdcbiAgICBpZiAobmV3Q29tcCAmJiBjYXNlSW5mbyAmJiB0aGlzLmNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KGNhc2VJbmZvKSkge1xuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZWRWaWV3UENvbm4kID0gbmV3Q29tcDtcbiAgICAgICAgY29uc3QgbmV3Q29uZmlnUHJvcHMgPSBuZXdDb21wLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9ICd0ZW1wbGF0ZScgaW4gbmV3Q29uZmlnUHJvcHMgPyAobmV3Q29uZmlnUHJvcHMudGVtcGxhdGUgYXMgc3RyaW5nKSA6ICcnO1xuXG4gICAgICAgIGNvbnN0IHsgYWN0aW9uTmFtZSB9ID0gbGF0ZXN0SXRlbTtcbiAgICAgICAgY29uc3QgdGhlTmV3Q2FzZUluZm8gPSBuZXdDb21wLmdldENhc2VJbmZvKCk7XG4gICAgICAgIC8vIGNvbnN0IGNhc2VOYW1lID0gdGhlTmV3Q2FzZUluZm8uZ2V0TmFtZSgpO1xuICAgICAgICBjb25zdCBJRCA9IHRoZU5ld0Nhc2VJbmZvLmdldEJ1c2luZXNzSUQoKSB8fCB0aGVOZXdDYXNlSW5mby5nZXRJRCgpO1xuXG4gICAgICAgIGNvbnN0IGNhc2VUeXBlTmFtZSA9IHRoZU5ld0Nhc2VJbmZvLmdldENhc2VUeXBlTmFtZSgpO1xuICAgICAgICBjb25zdCBpc0RhdGFPYmplY3QgPSByb3V0aW5nSW5mby5pdGVtc1tsYXRlc3RJdGVtLmNvbnRleHRdLnJlc291cmNlVHlwZSA9PT0gUENvcmUuZ2V0Q29uc3RhbnRzKCkuUkVTT1VSQ0VfVFlQRVMuREFUQTtcbiAgICAgICAgY29uc3QgZGF0YU9iamVjdEFjdGlvbiA9IHJvdXRpbmdJbmZvLml0ZW1zW2xhdGVzdEl0ZW0uY29udGV4dF0ucmVzb3VyY2VTdGF0dXM7XG4gICAgICAgIHRoaXMuaXNNdWx0aVJlY29yZCA9IHJvdXRpbmdJbmZvLml0ZW1zW2xhdGVzdEl0ZW0uY29udGV4dF0uaXNNdWx0aVJlY29yZERhdGE7XG4gICAgICAgIHRoaXMuY29udGV4dCQgPSBsYXRlc3RJdGVtLmNvbnRleHQ7XG4gICAgICAgIHRoaXMudGl0bGUkID1cbiAgICAgICAgICBpc0RhdGFPYmplY3QgfHwgdGhpcy5pc011bHRpUmVjb3JkXG4gICAgICAgICAgICA/IHRoaXMuZ2V0TW9kYWxIZWFkaW5nKGRhdGFPYmplY3RBY3Rpb24pXG4gICAgICAgICAgICA6IHRoaXMuZGV0ZXJtaW5lTW9kYWxIZWFkZXJCeUFjdGlvbihcbiAgICAgICAgICAgICAgICBhY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgIGNhc2VUeXBlTmFtZSxcbiAgICAgICAgICAgICAgICBJRCxcbiAgICAgICAgICAgICAgICBgJHt0aGVOZXdDYXNlSW5mbz8uZ2V0Q2xhc3NOYW1lKCl9IUNBU0UhJHt0aGVOZXdDYXNlSW5mby5nZXROYW1lKCl9YC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgYklzUmVmQ29tcG9uZW50ID0gdGhpcy5jaGVja0lmUmVmQ29tcG9uZW50KG5ld0NvbXApO1xuXG4gICAgICAgIGlmIChiSXNSZWZDb21wb25lbnQpIHtcbiAgICAgICAgICBjb25zdCBuZXdQQ29ubiA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihuZXdDb21wKTtcbiAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkobmV3UENvbm4uZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBuZXdDb21wLmdldENoaWxkcmVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJTaG93TW9kYWwkID0gdHJ1ZTtcblxuICAgICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgICAgICAvLyBzYXZlIG9mZiBpdGVtS2V5IHRvIGJlIHVzZWQgZm9yIGZpbmlzaEFzc2lnbm1lbnQsIGV0Yy5cbiAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcblxuICAgICAgICAvLyBjYXVzZSBhIGNoYW5nZSBmb3IgYXNzaWdubWVudFxuICAgICAgICB0aGlzLnVwZGF0ZVRva2VuJCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGlkZU1vZGFsKCkge1xuICAgIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyBvdGhlciBjb2RlIGluIE5lYnVsYS9Db25zdGVsbGF0aW9uIG5vdCBuZWVkZWQgY3VycmVudGx5LCBidXQgaWYgc28gbGF0ZXIsXG4gICAgICAvLyBzaG91bGQgcHV0IGhlcmVcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWdPYmplY3QoaXRlbSwgcENvbm5lY3QsIGlzUmV2ZXJzZUNvZXhpc3RlbmNlID0gZmFsc2UpIHtcbiAgICBsZXQgY29uZmlnO1xuICAgIGlmIChpc1JldmVyc2VDb2V4aXN0ZW5jZSkge1xuICAgICAgY29uZmlnID0ge1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFnZVJlZmVyZW5jZTogcENvbm5lY3Q/LmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5lck5hbWU6IHBDb25uZWN0Py5nZXRDb250YWluZXJOYW1lKCkgfHwgUENvcmUuZ2V0Q29uc3RhbnRzKCkuTU9EQUxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgY29uc3QgeyBjb250ZXh0LCB2aWV3LCBpc0J1bGtBY3Rpb24gfSA9IGl0ZW07XG4gICAgICBjb25zdCB0YXJnZXQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldFRhcmdldEZyb21Db250YWluZXJJdGVtSUQoY29udGV4dCk7XG4gICAgICBjb25maWcgPSB7XG4gICAgICAgIG1ldGE6IHZpZXcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IHZpZXcuY29uZmlnLmNvbnRleHQgfHwgcENvbm5lY3QuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgIGhhc0Zvcm06IHRydWUsXG4gICAgICAgICAgLi4uKGlzQnVsa0FjdGlvbiAmJiB7IGlzQnVsa0FjdGlvbiB9KSxcbiAgICAgICAgICBjb250YWluZXJOYW1lOiBwQ29ubmVjdD8uZ2V0Q29udGFpbmVyTmFtZSgpIHx8IFBDb3JlLmdldENvbnN0YW50cygpLk1PREFMLFxuICAgICAgICAgIHRhcmdldFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2hlY2tJZlJlZkNvbXBvbmVudCh0aGVQQ29ubjogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGJSZXR1cm4gPSBmYWxzZTtcbiAgICBpZiAodGhlUENvbm4gJiYgdGhlUENvbm4uZ2V0Q29tcG9uZW50TmFtZSgpID09ICdyZWZlcmVuY2UnKSB7XG4gICAgICBiUmV0dXJuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYlJldHVybjtcbiAgfVxuXG4gIG9uQWxlcnRTdGF0ZShiRGF0YTogYm9vbGVhbikge1xuICAgIHRoaXMuYkFsZXJ0U3RhdGUgPSBiRGF0YTtcbiAgICB0aGlzLmJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuYkFsZXJ0U3RhdGUpIHtcbiAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0FsZXJ0KHBheWxvYWQpIHtcbiAgICBjb25zdCB7IGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbSh0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHsgaXNNb2RhbEFjdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8qXG4gICAgICBJZiB3ZSBhcmUgaW4gY3JlYXRlIHN0YWdlIGZ1bGwgcGFnZSBtb2RlLCBjcmVhdGVkIGEgbmV3IGNhc2UgYW5kIHRyeWluZyB0byBjbGljayBvbiBjYW5jZWwgYnV0dG9uXG4gICAgICBpdCB3aWxsIHNob3cgdHdvIGFsZXJ0IGRpYWxvZ3Mgd2hpY2ggaXMgbm90IGV4cGVjdGVkLiBIZW5jZSBpc01vZGFsQWN0aW9uIGZsYWcgdG8gYXZvaWQgdGhhdC5cbiAgICAqL1xuICAgIGlmIChsYXRlc3RJdGVtICYmIGlzTW9kYWxBY3Rpb24gJiYgIXRoaXMuYWN0aW9uc0RpYWxvZykge1xuICAgICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QobGF0ZXN0SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxQQ29ubiQgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgICAgIHRoaXMuYlNob3dDYW5jZWxBbGVydCQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29udGFpbmVySXRlbXMocm91dGluZ0luZm8pIHtcbiAgICBpZiAocm91dGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IHsgYWNjZXNzZWRPcmRlciwgaXRlbXMgfSA9IHJvdXRpbmdJbmZvO1xuICAgICAgcmV0dXJuIGFjY2Vzc2VkT3JkZXIgJiYgYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwICYmIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdpbmZvKSB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGFpbmVySXRlbXMocm91dGluZ2luZm8pKSB7XG4gICAgICBjb25zdCB7IGFjY2Vzc2VkT3JkZXIsIGl0ZW1zIH0gPSByb3V0aW5naW5mbztcbiAgICAgIGNvbnN0IGtleSA9IGFjY2Vzc2VkT3JkZXJbYWNjZXNzZWRPcmRlci5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgcmV0dXJuIHsga2V5LCBsYXRlc3RJdGVtIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KG9DdXJyZW50Q2FzZUluZm86IE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG5cbiAgICAvLyBmYXN0LWRlZXAtZXF1YWwgdmVyc2lvblxuICAgIGlmIChpc0VxdWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJSZXQgPSAhaXNFcXVhbCh0aGlzLm9DYXNlSW5mbywgb0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNDdXJybmVudENhc2VJbmZvID0gSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgICBjb25zdCBzT2xkQ2FzZUluZm8gPSBKU09OLnN0cmluZ2lmeSh0aGlzLm9DYXNlSW5mbyk7XG4gICAgICAvLyBzdHJpbmdpZnkgY29tcGFyZSB2ZXJzaW9uXG4gICAgICBpZiAoc0N1cnJuZW50Q2FzZUluZm8gIT0gc09sZENhc2VJbmZvKSB7XG4gICAgICAgIGJSZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGRpZmZlcmVudCwgc2F2ZSBvZmYgbmV3IGNhc2UgaW5mb1xuICAgIGlmIChiUmV0KSB7XG4gICAgICB0aGlzLm9DYXNlSW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbykpO1xuICAgIH1cblxuICAgIHJldHVybiBiUmV0O1xuICB9XG5cbiAgZ2V0QmFubmVycygpIHtcbiAgICByZXR1cm4gZ2V0QmFubmVycyh7IHRhcmdldDogdGhpcy5pdGVtS2V5JCwgLi4udGhpcy5zdGF0ZVByb3BzJCB9KTtcbiAgfVxuXG4gIGdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RBY3Rpb24gPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEVcbiAgICAgID8gdGhpcy5sb2NhbGl6ZWRWYWwoJ0FkZCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KVxuICAgICAgOiB0aGlzLmxvY2FsaXplZFZhbCgnRWRpdCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgfVxuXG4gIGRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oYWN0aW9uTmFtZSwgY2FzZVR5cGVOYW1lLCBJRCwgY2FzZUxvY2FsZVJlZikge1xuICAgIGlmIChhY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRWYWwoYWN0aW9uTmFtZSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ3JlYXRlJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9ICR7dGhpcy5sb2NhbGl6ZWRWYWwoY2FzZVR5cGVOYW1lLCB1bmRlZmluZWQsIGNhc2VMb2NhbGVSZWYpfSAoJHtJRH0pYDtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uc0RpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLmFjdGlvbnNEaWFsb2cgPSB0cnVlO1xuICAgIC8vIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgLy8gfSk7XG4gIH07XG59XG4iLCI8ZGl2IGlkPVwiZGlhbG9nXCIgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiBiU2hvd0FzTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLXZpZXctY29udGFpbmVyLXRvcFwiIGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCwgaXNJbk1vZGFsJDogdHJ1ZSwgYmFubmVycyB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDxkaXYgKm5nSWY9XCJpc011bHRpUmVjb3JkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiTGlzdFZpZXdBY3Rpb25CdXR0b25zXCJcbiAgICAgICAgW3Byb3BzXT1cInsgcENvbm4kOiBjcmVhdGVkVmlld1BDb25uJCwgY29udGV4dCQgfVwiXG4gICAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBjbG9zZUFjdGlvbnNEaWFsb2c6IGNsb3NlQWN0aW9uc0RpYWxvZyB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiAhYlNob3dBc01vZGFsJFwiPlxuICA8ZGl2IGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dDYW5jZWxBbGVydCRcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiQ2FuY2VsQWxlcnRcIlxuICAgIFtwcm9wc109XCJ7IGJTaG93QWxlcnQkOiBiU2hvd0NhbmNlbEFsZXJ0JCwgcENvbm4kOiBjYW5jZWxQQ29ubiQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgb25BbGVydFN0YXRlJDogb25BbGVydFN0YXRlIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG4iXX0=
@@ -20,13 +20,13 @@ export class PreviewViewContainerComponent {
20
20
  viewContainerName = '';
21
21
  return `${context.toUpperCase()}/${viewContainerName.toUpperCase()}`;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PreviewViewContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PreviewViewContainerComponent, isStandalone: true, selector: "app-preview-view-container", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div class=\"psdk-preview\"></div>\n", styles: [""] }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PreviewViewContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: PreviewViewContainerComponent, isStandalone: true, selector: "app-preview-view-container", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div class=\"psdk-preview\"></div>\n", styles: [""] }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PreviewViewContainerComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PreviewViewContainerComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'app-preview-view-container', standalone: true, template: "<div class=\"psdk-preview\"></div>\n" }]
29
29
  }], propDecorators: { pConn$: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy12aWV3LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvQ29udGFpbmVycy9wcmV2aWV3LXZpZXctY29udGFpbmVyL3ByZXZpZXctdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvcHJldmlldy12aWV3LWNvbnRhaW5lci9wcmV2aWV3LXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6RDs7OztHQUlHO0FBRUgsK0RBQStEO0FBUS9ELE1BQU0sT0FBTyw2QkFBNkI7SUFHeEMsUUFBUTtRQUNOLE1BQU0sWUFBWSxHQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUU1RCxZQUFZLENBQUMsb0JBQW9CLENBQUM7WUFDaEMsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQyxpQkFBaUI7WUFBRSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7K0dBakJVLDZCQUE2QjttR0FBN0IsNkJBQTZCLG9IQ2hCMUMsc0NBQ0E7OzRGRGVhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSw0QkFBNEIsY0FHMUIsSUFBSTs4QkFHUCxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuLy8gUmlnaHQgdGhpcyBpcyBhIHNrZWxldG9uLCBhcyBQcmV2aWV3IGhhc24ndCBiZWVuIGltcGxlbWVudGVkXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcmV2aWV3LXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXctdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld1ZpZXdDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXJNZ3I6IGFueSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcblxuICAgIGNvbnRhaW5lck1nci5pbml0aWFsaXplQ29udGFpbmVycyh7XG4gICAgICB0eXBlOiAnbXVsdGlwbGUnXG4gICAgfSk7XG4gIH1cblxuICBidWlsZE5hbWUoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgbGV0IHZpZXdDb250YWluZXJOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29tcG9uZW50TmFtZSgpO1xuXG4gICAgaWYgKCF2aWV3Q29udGFpbmVyTmFtZSkgdmlld0NvbnRhaW5lck5hbWUgPSAnJztcbiAgICByZXR1cm4gYCR7Y29udGV4dC50b1VwcGVyQ2FzZSgpfS8ke3ZpZXdDb250YWluZXJOYW1lLnRvVXBwZXJDYXNlKCl9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstcHJldmlld1wiPjwvZGl2PlxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy12aWV3LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvQ29udGFpbmVycy9wcmV2aWV3LXZpZXctY29udGFpbmVyL3ByZXZpZXctdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvcHJldmlldy12aWV3LWNvbnRhaW5lci9wcmV2aWV3LXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6RDs7OztHQUlHO0FBRUgsK0RBQStEO0FBUS9ELE1BQU0sT0FBTyw2QkFBNkI7SUFHeEMsUUFBUTtRQUNOLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUV2RCxZQUFZLENBQUMsb0JBQW9CLENBQUM7WUFDaEMsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQyxpQkFBaUI7WUFBRSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7K0dBakJVLDZCQUE2QjttR0FBN0IsNkJBQTZCLG9IQ2hCMUMsc0NBQ0E7OzRGRGVhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSw0QkFBNEIsY0FHMUIsSUFBSTs4QkFHUCxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuLy8gUmlnaHQgdGhpcyBpcyBhIHNrZWxldG9uLCBhcyBQcmV2aWV3IGhhc24ndCBiZWVuIGltcGxlbWVudGVkXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcmV2aWV3LXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXctdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld1ZpZXdDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXJNZ3IgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG5cbiAgICBjb250YWluZXJNZ3IuaW5pdGlhbGl6ZUNvbnRhaW5lcnMoe1xuICAgICAgdHlwZTogJ211bHRpcGxlJ1xuICAgIH0pO1xuICB9XG5cbiAgYnVpbGROYW1lKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCB2aWV3Q29udGFpbmVyTmFtZSA9IHRoaXMucENvbm4kLmdldENvbXBvbmVudE5hbWUoKTtcblxuICAgIGlmICghdmlld0NvbnRhaW5lck5hbWUpIHZpZXdDb250YWluZXJOYW1lID0gJyc7XG4gICAgcmV0dXJuIGAke2NvbnRleHQudG9VcHBlckNhc2UoKX0vJHt2aWV3Q29udGFpbmVyTmFtZS50b1VwcGVyQ2FzZSgpfWA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLXByZXZpZXdcIj48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ export const addContainerItem = pConnect => {
2
+ const containerManager = pConnect.getContainerManager();
3
+ const context = pConnect.getContextName();
4
+ containerManager.addContainerItem({
5
+ context,
6
+ semanticURL: ''
7
+ });
8
+ };
9
+ export const configureBrowserBookmark = pConnect => {
10
+ const context = pConnect.getContextName();
11
+ const containerName = pConnect.getContainerName();
12
+ const navPages = pConnect.getValue('pyPortal.pyPrimaryNavPages');
13
+ const defaultViewLabel = Array.isArray(navPages) && navPages[0] ? navPages[0].pyLabel : '';
14
+ PCore.configureForBrowserBookmark({
15
+ context,
16
+ containerName,
17
+ acName: containerName,
18
+ semanticURL: '',
19
+ defaultViewLabel
20
+ });
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxFQUFFO0lBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQ2hDLE9BQU87UUFDUCxXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsRUFBRTtJQUNqRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRixLQUFLLENBQUMsMkJBQTJCLENBQUM7UUFDaEMsT0FBTztRQUNQLGFBQWE7UUFDYixNQUFNLEVBQUUsYUFBYTtRQUNyQixXQUFXLEVBQUUsRUFBRTtRQUNmLGdCQUFnQjtLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYWRkQ29udGFpbmVySXRlbSA9IHBDb25uZWN0ID0+IHtcbiAgY29uc3QgY29udGFpbmVyTWFuYWdlciA9IHBDb25uZWN0LmdldENvbnRhaW5lck1hbmFnZXIoKTtcbiAgY29uc3QgY29udGV4dCA9IHBDb25uZWN0LmdldENvbnRleHROYW1lKCk7XG4gIGNvbnRhaW5lck1hbmFnZXIuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgY29udGV4dCxcbiAgICBzZW1hbnRpY1VSTDogJydcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uZmlndXJlQnJvd3NlckJvb2ttYXJrID0gcENvbm5lY3QgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gcENvbm5lY3QuZ2V0Q29udGV4dE5hbWUoKTtcbiAgY29uc3QgY29udGFpbmVyTmFtZSA9IHBDb25uZWN0LmdldENvbnRhaW5lck5hbWUoKTtcbiAgY29uc3QgbmF2UGFnZXMgPSBwQ29ubmVjdC5nZXRWYWx1ZSgncHlQb3J0YWwucHlQcmltYXJ5TmF2UGFnZXMnKTtcbiAgY29uc3QgZGVmYXVsdFZpZXdMYWJlbCA9IEFycmF5LmlzQXJyYXkobmF2UGFnZXMpICYmIG5hdlBhZ2VzWzBdID8gbmF2UGFnZXNbMF0ucHlMYWJlbCA6ICcnO1xuICBQQ29yZS5jb25maWd1cmVGb3JCcm93c2VyQm9va21hcmsoe1xuICAgIGNvbnRleHQsXG4gICAgY29udGFpbmVyTmFtZSxcbiAgICBhY05hbWU6IGNvbnRhaW5lck5hbWUsXG4gICAgc2VtYW50aWNVUkw6ICcnLFxuICAgIGRlZmF1bHRWaWV3TGFiZWxcbiAgfSk7XG59O1xuIl19
@@ -2,6 +2,7 @@ import { Component, Input, forwardRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { ReferenceComponent } from '../../reference/reference.component';
4
4
  import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component';
5
+ import { configureBrowserBookmark } from './helper';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../../../_bridge/angular-pconnect";
7
8
  import * as i2 from "../../../../_messages/progress-spinner.service";
@@ -41,16 +42,9 @@ export class ViewContainerComponent {
41
42
  // And expose less via ui-bootstrap.js
42
43
  this.state = {
43
44
  dispatchObject: this.dispatchObject,
44
- // PCore is defined in pxBootstrapShell - eventually will be exported in place of constellationCore
45
45
  visible: !PCore.checkIfSemanticURL()
46
46
  };
47
- // here, to match Nebula/Constellation, the constructor of ViewContainer is only called once, and thus init/add container is only
48
- // called once. Because of Angular creating and destroy components if the parent changes a lot, this component will be
49
- // created and destroyed more than once. So the sessionStore "hasViewContainer" is set to false in rootContainer and then
50
- // after first round is true here. Subsequent ViewContainer creation will not init/add more containers.
51
47
  if (sessionStorage.getItem('hasViewContainer') == 'false') {
52
- // unlike Nebula/Constellation, have to initializeContainer after we create a dispatcObject and state, otherwise, when calling
53
- // initializeContainer before, code will get executed that needs state that wasn't defined.
54
48
  containerMgr.initializeContainers({
55
49
  type: mode === CONTAINER_TYPE.MULTIPLE ? CONTAINER_TYPE.MULTIPLE : CONTAINER_TYPE.SINGLE
56
50
  });
@@ -58,12 +52,10 @@ export class ViewContainerComponent {
58
52
  /* NOTE: setContainerLimit use is temporary. It is a non-public, unsupported API. */
59
53
  PCore.getContainerUtils().setContainerLimit(`${APP.APP}/${name}`, limit);
60
54
  }
61
- }
62
- if (sessionStorage.getItem('hasViewContainer') == 'false') {
63
- // @ts-ignore - Property 'getMetadata' is private and only accessible within class
64
- if (this.pConn$.getMetadata().children) {
65
- containerMgr.addContainerItem(this.dispatchObject);
66
- }
55
+ if (!PCore.checkIfSemanticURL())
56
+ containerMgr.addContainerItem(this.pConn$);
57
+ if (!this.displayOnlyFA$)
58
+ configureBrowserBookmark(this.pConn$);
67
59
  sessionStorage.setItem('hasViewContainer', 'true');
68
60
  }
69
61
  // cannot call checkAndUpdate becasue first time through, will call updateSelf and that is incorrect (causes issues).
@@ -203,17 +195,17 @@ export class ViewContainerComponent {
203
195
  const sName = this.pConn$.getContainerName();
204
196
  return `${sContext.toUpperCase()}/${sName.toUpperCase()}`;
205
197
  }
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewContainerComponent, isStandalone: true, selector: "app-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<div class=\"psdk-view-container-top\" id=\"{{ buildName$ }}\">\n <div *ngIf=\"isViewContainer$; else isReference\">\n <h3 *ngIf=\"title$ !== ''\">{{ title$ }}</h3>\n <div *ngIf=\"templateName$; else showChildren\">\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{\n pConn$: createdViewPConn$,\n formGroup$: formGroup$,\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"View Container missing Template {{ templateName$ }}\"\n ></component-mapper>\n </div>\n <ng-template #showChildren>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"ViewContainer Missing (no template): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </div>\n <ng-template #isReference>\n <component-mapper name=\"View\" [props]=\"{ pConn$: viewPConn$, displayOnlyFA$ }\"></component-mapper>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ViewContainerComponent, isStandalone: true, selector: "app-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<div class=\"psdk-view-container-top\" id=\"{{ buildName$ }}\">\n <div *ngIf=\"isViewContainer$; else isReference\">\n <h3 *ngIf=\"title$ !== ''\">{{ title$ }}</h3>\n <div *ngIf=\"templateName$; else showChildren\">\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{\n pConn$: createdViewPConn$,\n formGroup$: formGroup$,\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"View Container missing Template {{ templateName$ }}\"\n ></component-mapper>\n </div>\n <ng-template #showChildren>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"ViewContainer Missing (no template): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </div>\n <ng-template #isReference>\n <component-mapper name=\"View\" [props]=\"{ pConn$: viewPConn$, displayOnlyFA$ }\"></component-mapper>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
208
200
  }
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewContainerComponent, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ViewContainerComponent, decorators: [{
210
202
  type: Component,
211
203
  args: [{ selector: 'app-view-container', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-view-container-top\" id=\"{{ buildName$ }}\">\n <div *ngIf=\"isViewContainer$; else isReference\">\n <h3 *ngIf=\"title$ !== ''\">{{ title$ }}</h3>\n <div *ngIf=\"templateName$; else showChildren\">\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{\n pConn$: createdViewPConn$,\n formGroup$: formGroup$,\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"View Container missing Template {{ templateName$ }}\"\n ></component-mapper>\n </div>\n <ng-template #showChildren>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"ViewContainer Missing (no template): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </div>\n <ng-template #isReference>\n <component-mapper name=\"View\" [props]=\"{ pConn$: viewPConn$, displayOnlyFA$ }\"></component-mapper>\n </ng-template>\n</div>\n" }]
212
- }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
204
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }], propDecorators: { pConn$: [{
213
205
  type: Input
214
206
  }], formGroup$: [{
215
207
  type: Input
216
208
  }], displayOnlyFA$: [{
217
209
  type: Input
218
210
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7Ozs7QUEwQjNHLE1BQU0sT0FBTyxzQkFBc0I7SUF5QmpDLFlBQ1UsZUFBdUMsRUFDdkMsU0FBaUMsRUFDakMsTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBdkJ4Qix1Q0FBdUM7UUFDdkMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU85QyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBSVoscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0lBWXJCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtRQUVELFlBQVk7UUFFWiw4RkFBOEY7UUFDOUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4Ryw4Q0FBOEM7UUFFOUMsdURBQXVEO1FBQ3ZELGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVyRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBdUIsQ0FBQztRQUN2RyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM1QyxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyRCxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQXVCLENBQUM7UUFFakgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUU3QixNQUFNLFlBQVksR0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFNUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUVuRCwrRUFBK0U7UUFDL0UseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsbUdBQW1HO1lBRW5HLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtTQUNyQyxDQUFDO1FBRUYsaUlBQWlJO1FBQ2pJLHVIQUF1SDtRQUN2SCwwSEFBMEg7UUFDMUgsd0dBQXdHO1FBRXhHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE9BQU8sRUFBRTtZQUN6RCw4SEFBOEg7WUFDOUgsMkZBQTJGO1lBRTNGLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTTthQUN6RixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksS0FBSyxjQUFjLENBQUMsUUFBUSxJQUFJLEtBQUssRUFBRTtnQkFDN0Msb0ZBQW9GO2dCQUNwRixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDMUU7U0FDRjtRQUVELElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE9BQU8sRUFBRTtZQUN6RCxrRkFBa0Y7WUFDbEYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRTtnQkFDdEMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwRDtZQUVELGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDcEQ7UUFFRCxxSEFBcUg7UUFDckgsa0lBQWtJO1FBQ2xJLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztRQUNaLGdFQUFnRTtRQUNoRSw0QkFBNEI7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSx3REFBd0Q7UUFDeEQsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLCtDQUErQztRQUUvQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO1lBQzVCLGtFQUFrRTtZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUN0RjtRQUVELHFFQUFxRTtRQUNyRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUvRSxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJO1lBQ0YsaUdBQWlHO1lBQ2pHLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDekM7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLFdBQVc7U0FDWjtRQUVELHNDQUFzQztRQUN0QyxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxHQUFHLFdBQVcsQ0FBQztZQUM3QyxJQUFJLGFBQWEsSUFBSSxLQUFLLEVBQUU7Z0JBQzFCLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsNkRBQTZEO2dCQUM3RCxnQkFBZ0IsR0FBRyxPQUFPLElBQUksZ0JBQWdCLENBQUM7Z0JBQy9DLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDNUUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO29CQUNqQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUNwRCxNQUFNLE1BQU0sR0FBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLE9BQU8sR0FBRzt3QkFDZixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87d0JBQzNCLGFBQWEsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDeEQsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7d0JBQzdDLGlCQUFpQixFQUFFLEdBQUc7d0JBQ3RCLE9BQU8sRUFBRSxRQUFRLEtBQUssd0JBQXdCO3FCQUMvQyxDQUFDO29CQUNGLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRWxELGlEQUFpRDtvQkFDakQsOENBQThDO29CQUM5QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzNDLGtEQUFrRDtvQkFDbEQsMEVBQTBFO29CQUMxRSx5RUFBeUU7b0JBQ3pFLHNFQUFzRTtvQkFDdEUsc0VBQXNFO29CQUN0RSx1RUFBdUU7b0JBQ3ZFLDhDQUE4QztvQkFFOUMsaUVBQWlFO29CQUNqRSxxQ0FBcUM7b0JBQ3JDLHNFQUFzRTtvQkFDdEUsd0VBQXdFO29CQUN4RSwwREFBMEQ7b0JBRTFELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDbkIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxXQUFXLEVBQUU7NEJBQzlDLG1EQUFtRDs0QkFDbkQsc0RBQXNEOzRCQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDOzRCQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQzs0QkFFMUI7OzsrQkFHRzs0QkFFSCx1REFBdUQ7NEJBQ3ZELDBEQUEwRDs0QkFDMUQsbUNBQW1DOzRCQUVuQzs7Ozs7Ozs7Ozs7OzhCQVlFO3lCQUNIOzZCQUFNOzRCQUNMLDhDQUE4Qzs0QkFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzs0QkFFN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDOzRCQUV0RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDOzRCQUNqQyxNQUFNLGNBQWMsR0FBUSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsY0FBYyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7NEJBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ3pDLDJDQUEyQzs0QkFDM0Msa0VBQWtFOzRCQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO3lCQUNsRjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsNkZBQTZGO1FBQzdGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxTQUFTLENBQUM7UUFFM0QsT0FBTztZQUNMLFdBQVcsRUFBRSxFQUFFO1lBQ2YsT0FBTyxFQUFFLFdBQVc7WUFDcEIsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTdDLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7SUFDNUQsQ0FBQzsrR0EvUFUsc0JBQXNCO21HQUF0QixzQkFBc0Isd0tDaENuQywwcENBK0JBLDRGRERZLFlBQVkscVhBQW1CLHdCQUF3Qjs7NEZBRXRELHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3VLQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuaW50ZXJmYWNlIFZpZXdDb250YWluZXJQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgbW9kZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHRlbXBsYXRlPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgcm91dGluZ0luZm86IG9iamVjdDtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdmlldy1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGRpc3BsYXlPbmx5RkEkOiBib29sZWFuO1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogVmlld0NvbnRhaW5lclByb3BzO1xuXG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgdGVtcGxhdGVOYW1lJDogc3RyaW5nO1xuICBidWlsZE5hbWUkOiBzdHJpbmc7XG4gIGNvbnRleHQkOiBzdHJpbmc7XG4gIHRpdGxlJCA9ICcnO1xuXG4gIHZpZXdQQ29ubiQ6IGFueTtcblxuICBpc1ZpZXdDb250YWluZXIkID0gdHJ1ZTtcblxuICAvLyBKQSAtIGNyZWF0ZWQgb2JqZWN0IGlzIG5vdyBhIFZpZXcgd2l0aCBhIFRlbXBsYXRlXG4gIC8vICBVc2UgaXRzIFBDb25uZWN0IHRvIHJlbmRlciB0aGUgQ2FzZVZpZXc7IERPTidUIHJlcGxhY2UgdGhpcy5wQ29ubiRcbiAgY3JlYXRlZFZpZXdQQ29ubiQ6IGFueTtcbiAgc3RhdGU6IGFueTtcbiAgZGlzcGF0Y2hPYmplY3Q6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5T25seUZBJCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmRpc3BsYXlPbmx5RkEkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZGVidWdnZXI7XG5cbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKTtcbiAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYXlcbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG5cbiAgICB0aGlzLmJ1aWxkTmFtZSQgPSB0aGlzLmJ1aWxkTmFtZSgpO1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFZpZXdDb250YWluZXJQcm9wcztcbiAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50ZW1wbGF0ZSB8fCAnJztcbiAgICB0aGlzLnRpdGxlJCA9IHRoaXMuY29uZmlnUHJvcHMkLnRpdGxlIHx8ICcnO1xuICAgIGNvbnN0IHsgQ09OVEFJTkVSX1RZUEUsIEFQUCB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgY29uc3QgeyBuYW1lLCBtb2RlLCBsaW1pdCB9ID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFZpZXdDb250YWluZXJQcm9wcztcblxuICAgIHRoaXMucENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG5cbiAgICBjb25zdCBjb250YWluZXJNZ3I6IGFueSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcblxuICAgIHRoaXMucHJlcGFyZURpc3BhdGNoT2JqZWN0ID0gdGhpcy5wcmVwYXJlRGlzcGF0Y2hPYmplY3QuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuZGlzcGF0Y2hPYmplY3QgPSB0aGlzLnByZXBhcmVEaXNwYXRjaE9iamVjdCgpO1xuXG4gICAgLy8gVE9ETzogUGxhbiBpcyB0byByZW5hbWUgd2luZG93LmNvbnN0ZWxsYXRpb25Db3JlIHRvIHdpbmRvdy5wZWdhIChvciBzaW1pbGFyKVxuICAgIC8vICAgIEFuZCBleHBvc2UgbGVzcyB2aWEgdWktYm9vdHN0cmFwLmpzXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRpc3BhdGNoT2JqZWN0OiB0aGlzLmRpc3BhdGNoT2JqZWN0LFxuICAgICAgLy8gUENvcmUgaXMgZGVmaW5lZCBpbiBweEJvb3RzdHJhcFNoZWxsIC0gZXZlbnR1YWxseSB3aWxsIGJlIGV4cG9ydGVkIGluIHBsYWNlIG9mIGNvbnN0ZWxsYXRpb25Db3JlXG5cbiAgICAgIHZpc2libGU6ICFQQ29yZS5jaGVja0lmU2VtYW50aWNVUkwoKVxuICAgIH07XG5cbiAgICAvLyBoZXJlLCB0byBtYXRjaCBOZWJ1bGEvQ29uc3RlbGxhdGlvbiwgdGhlIGNvbnN0cnVjdG9yIG9mIFZpZXdDb250YWluZXIgaXMgb25seSBjYWxsZWQgb25jZSwgYW5kIHRodXMgaW5pdC9hZGQgY29udGFpbmVyIGlzIG9ubHlcbiAgICAvLyBjYWxsZWQgb25jZS4gIEJlY2F1c2Ugb2YgQW5ndWxhciBjcmVhdGluZyBhbmQgZGVzdHJveSBjb21wb25lbnRzIGlmIHRoZSBwYXJlbnQgY2hhbmdlcyBhIGxvdCwgdGhpcyBjb21wb25lbnQgd2lsbCBiZVxuICAgIC8vIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBtb3JlIHRoYW4gb25jZS4gIFNvIHRoZSBzZXNzaW9uU3RvcmUgXCJoYXNWaWV3Q29udGFpbmVyXCIgaXMgc2V0IHRvIGZhbHNlIGluIHJvb3RDb250YWluZXIgYW5kIHRoZW5cbiAgICAvLyBhZnRlciBmaXJzdCByb3VuZCBpcyB0cnVlIGhlcmUuICBTdWJzZXF1ZW50IFZpZXdDb250YWluZXIgY3JlYXRpb24gd2lsbCBub3QgaW5pdC9hZGQgbW9yZSBjb250YWluZXJzLlxuXG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInKSA9PSAnZmFsc2UnKSB7XG4gICAgICAvLyB1bmxpa2UgTmVidWxhL0NvbnN0ZWxsYXRpb24sIGhhdmUgdG8gaW5pdGlhbGl6ZUNvbnRhaW5lciBhZnRlciB3ZSBjcmVhdGUgYSBkaXNwYXRjT2JqZWN0IGFuZCBzdGF0ZSwgb3RoZXJ3aXNlLCB3aGVuIGNhbGxpbmdcbiAgICAgIC8vIGluaXRpYWxpemVDb250YWluZXIgYmVmb3JlLCBjb2RlIHdpbGwgZ2V0IGV4ZWN1dGVkIHRoYXQgbmVlZHMgc3RhdGUgdGhhdCB3YXNuJ3QgZGVmaW5lZC5cblxuICAgICAgY29udGFpbmVyTWdyLmluaXRpYWxpemVDb250YWluZXJzKHtcbiAgICAgICAgdHlwZTogbW9kZSA9PT0gQ09OVEFJTkVSX1RZUEUuTVVMVElQTEUgPyBDT05UQUlORVJfVFlQRS5NVUxUSVBMRSA6IENPTlRBSU5FUl9UWVBFLlNJTkdMRVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtb2RlID09PSBDT05UQUlORVJfVFlQRS5NVUxUSVBMRSAmJiBsaW1pdCkge1xuICAgICAgICAvKiBOT1RFOiBzZXRDb250YWluZXJMaW1pdCB1c2UgaXMgdGVtcG9yYXJ5LiBJdCBpcyBhIG5vbi1wdWJsaWMsIHVuc3VwcG9ydGVkIEFQSS4gKi9cbiAgICAgICAgUENvcmUuZ2V0Q29udGFpbmVyVXRpbHMoKS5zZXRDb250YWluZXJMaW1pdChgJHtBUFAuQVBQfS8ke25hbWV9YCwgbGltaXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdoYXNWaWV3Q29udGFpbmVyJykgPT0gJ2ZhbHNlJykge1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRNZXRhZGF0YScgaXMgcHJpdmF0ZSBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiBjbGFzc1xuICAgICAgaWYgKHRoaXMucENvbm4kLmdldE1ldGFkYXRhKCkuY2hpbGRyZW4pIHtcbiAgICAgICAgY29udGFpbmVyTWdyLmFkZENvbnRhaW5lckl0ZW0odGhpcy5kaXNwYXRjaE9iamVjdCk7XG4gICAgICB9XG5cbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8vIGNhbm5vdCBjYWxsIGNoZWNrQW5kVXBkYXRlIGJlY2FzdWUgZmlyc3QgdGltZSB0aHJvdWdoLCB3aWxsIGNhbGwgdXBkYXRlU2VsZiBhbmQgdGhhdCBpcyBpbmNvcnJlY3QgKGNhdXNlcyBpc3N1ZXMpLlxuICAgIC8vIGhvd2V2ZXIsIG5lZWQgYW5ndWxhclBDb25uZWN0IHRvIGJlIGluaXRpYWxpemVkIHdpdGggY3VycmVudFByb3BzIGZvciBmdXR1cmUgdXBkYXRlcywgc28gY2FsbGluZyBzaG91bGRDb21wb25lbnRVcGRhdGUgZGlyZWN0bHlcbiAgICAvLyB3aXRob3V0IGNoZWNraW5nIHRvIHVwZGF0ZSBoZXJlIGluIGluaXQsIHdpbGwgaW5pdGlhbGl6ZSBhbmQgdGhpcyBpcyBjb3JyZWN0XG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICAvLyAgICoqKiBET04nVCBjYWxsIHVwZGF0ZVNlbGYgaW4gbmdJbml0ISEgICoqKlxuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQgPT0gbnVsbCkge1xuICAgICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmF5XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgfVxuXG4gICAgLy8gcm91dGluZ0luZm8gd2FzIGFkZGVkIGFzIGNvbXBvbmVudCBwcm9wIGluIHBvcHVsYXRlQWRkaXRpb25hbFByb3BzXG4gICAgY29uc3Qgcm91dGluZ0luZm8gPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdyb3V0aW5nSW5mbycpO1xuXG4gICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UobG9hZGluZ0luZm8pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cblxuICAgIC8vIGNvbnN0IGJ1aWxkTmFtZSA9IHRoaXMuYnVpbGROYW1lKCk7XG4gICAgY29uc3QgeyBDUkVBVEVfREVUQUlMU19WSUVXX05BTUUgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGlmIChyb3V0aW5nSW5mbykge1xuICAgICAgY29uc3QgeyBhY2Nlc3NlZE9yZGVyLCBpdGVtcyB9ID0gcm91dGluZ0luZm87XG4gICAgICBpZiAoYWNjZXNzZWRPcmRlciAmJiBpdGVtcykge1xuICAgICAgICBjb25zdCBrZXkgPSBhY2Nlc3NlZE9yZGVyW2FjY2Vzc2VkT3JkZXIubGVuZ3RoIC0gMV07XG4gICAgICAgIGxldCBjb21wb25lbnRWaXNpYmxlID0gYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCB7IHZpc2libGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29tcG9uZW50VmlzaWJsZSA9IHZpc2libGUgfHwgY29tcG9uZW50VmlzaWJsZTtcbiAgICAgICAgaWYgKGl0ZW1zW2tleV0gJiYgaXRlbXNba2V5XS52aWV3ICYmIE9iamVjdC5rZXlzKGl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgICAgIGNvbnN0IHJvb3RWaWV3ID0gbGF0ZXN0SXRlbS52aWV3O1xuICAgICAgICAgIGNvbnN0IHsgY29udGV4dCwgbmFtZTogdmlld05hbWUgfSA9IHJvb3RWaWV3LmNvbmZpZztcbiAgICAgICAgICBjb25zdCBjb25maWc6IGFueSA9IHsgbWV0YTogcm9vdFZpZXcgfTtcbiAgICAgICAgICBjb25maWcub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGxhdGVzdEl0ZW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpLFxuICAgICAgICAgICAgY29udGFpbmVySXRlbU5hbWU6IGtleSxcbiAgICAgICAgICAgIGhhc0Zvcm06IHZpZXdOYW1lID09PSBDUkVBVEVfREVUQUlMU19WSUVXX05BTUVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG5cbiAgICAgICAgICAvLyBUSElTIGlzIHdoZXJlIHRoZSBWaWV3Q29udGFpbmVyIGNyZWF0ZXMgYSBWaWV3XG4gICAgICAgICAgLy8gICAgVGhlIGNvbmZpZyBoYXMgbWV0YS5jb25maWcudHlwZSA9IFwidmlld1wiXG4gICAgICAgICAgY29uc3QgbmV3Q29tcCA9IGNvbmZpZ09iamVjdC5nZXRQQ29ubmVjdCgpO1xuICAgICAgICAgIC8vIGNvbnN0IG5ld0NvbXBOYW1lID0gbmV3Q29tcC5nZXRDb21wb25lbnROYW1lKCk7XG4gICAgICAgICAgLy8gVGhlIG1ldGFkYXRhIGZvciBweURldGFpbHMgY2hhbmdlZCBzdWNoIHRoYXQgdGhlIFwidGVtcGxhdGVcIjogXCJDYXNlVmlld1wiXG4gICAgICAgICAgLy8gIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIHRoZSBjcmVhdGVkIFZpZXcgYnV0IGlzIGluIHRoZSBjcmVhdGVkIFZpZXcnc1xuICAgICAgICAgIC8vICBjb25maWcuIFNvLCB3ZSBET04nVCB3YW50IHRvIHJlcGxhY2UgdGhpcy5wQ29ubiQgc2luY2UgdGhlIGNyZWF0ZWRcbiAgICAgICAgICAvLyAgY29tcG9uZW50IGlzIGEgVmlldyAoYW5kIG5vdCBhIFZpZXdDb250YWluZXIpLiBXZSBub3cgbG9vayBmb3IgdGhlXG4gICAgICAgICAgLy8gIFwidGVtcGxhdGVcIiB0eXBlIGRpcmVjdGx5IGluIHRoZSBjcmVhdGVkIGNvbXBvbmVudCAobmV3Q29tcCkgYW5kIE5PVFxuICAgICAgICAgIC8vICBhcyBhIGNoaWxkIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudC5cblxuICAgICAgICAgIC8vIFVzZSB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQgKFZpZXcpIGluZm8gYnV0IERPIE5PVCByZXBsYWNlXG4gICAgICAgICAgLy8gIHRoaXMgVmlld0NvbnRhaW5lcidzIHBDb25uJCwgZXRjLlxuICAgICAgICAgIC8vICBOb3RlIHRoYXQgd2UncmUgbm93IHVzaW5nIHRoZSBuZXdseSBjcmVhdGVkIFZpZXcncyBQQ29ubmVjdCBpbiB0aGVcbiAgICAgICAgICAvLyAgVmlld0NvbnRhaW5lciBIVE1MIHRlbXBsYXRlIHRvIGd1aWRlIHdoYXQncyByZW5kZXJlZCBzaW1pbGFyIHRvIHdoYXRcbiAgICAgICAgICAvLyAgdGhlIE5lYnVsYS9Db25zdGVsbGF0aW9uIHJldHVybiBvZiBSZWFjdC5GcmFnbWVudCBkb2VzXG5cbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5ld0NvbXAuZ2V0Q29tcG9uZW50TmFtZSgpID09PSAncmVmZXJlbmNlJykge1xuICAgICAgICAgICAgICAvLyBpZiBhIHJlZmVybmVjZSwgaXQgd2lsbCBkZSByZWZlcmVuY2UgdG8gYSBcInZpZXdcIlxuICAgICAgICAgICAgICAvLyBzbyBoYW5kIHRoaXMgb2ZmIHRvIHRoZSBcIlZpZXdcIiBjb21wb25lbnQgdG8gZG8gdGhhdFxuICAgICAgICAgICAgICB0aGlzLmlzVmlld0NvbnRhaW5lciQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy52aWV3UENvbm4kID0gbmV3Q29tcDtcblxuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKioqICB0aGlzIGNvbW1tZW50ZWQgb3V0IGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQsIG9uY2Ugd2UgdGVzdCBvdXQgdGhhdFxuICAgICAgICAgICAgICAgKioqICBoYW5kaW5nIG9mZiByZWZlcm5jZSB0byBWaWV3IGNvbXBvbmVudCBhbHdheXMgd29ya3NcbiAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgLy8gV2hlbiBuZXdDb21wIGlzIGEgcmVmZXJlbmNlLCB3ZSB3YW50IHRvIGRlLXJlZmVyZW5jZVxuICAgICAgICAgICAgICAvLyAgaXQgKHRvIGdldCB0aGUgVmlldykgYW5kIHRoZW4gdXNlIHRoYXQgVmlldyB0byBnZXQgdGhlXG4gICAgICAgICAgICAgIC8vICB0ZW1wbGF0ZSwgdGl0bGUsIGNoaWxkcmVuLCBldGMuXG5cbiAgICAgICAgICAgICAgLypcblxuICAgICAgICAgICAgICBjb25zdCB0aGVEZXJlZmVyZW5jZWRWaWV3ID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKG5ld0NvbXApO1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWdQcm9wcyA9IHRoZURlcmVmZXJlbmNlZFZpZXcuZ2V0Q29uZmlnUHJvcHMoKTtcblxuICAgICAgICAgICAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRoZURlcmVmZXJlbmNlZFZpZXdDaGlsZHJlbiA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoZURlcmVmZXJlbmNlZFZpZXcuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9ICgndGVtcGxhdGUnIGluIG5ld0NvbmZpZ1Byb3BzKSA/IG5ld0NvbmZpZ1Byb3BzW1widGVtcGxhdGVcIl0gOiBcIlwiO1xuICAgICAgICAgICAgICB0aGlzLnRpdGxlJCA9ICgndGl0bGUnIGluIG5ld0NvbmZpZ1Byb3BzKSA/IG5ld0NvbmZpZ1Byb3BzW1widGl0bGVcIl0gOiBcIlwiO1xuICAgICAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhlRGVyZWZlcmVuY2VkVmlld0NoaWxkcmVuO1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZWRWaWV3UENvbm4kID0gdGhlRGVyZWZlcmVuY2VkVmlldztcbiAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9sZCBzdHlsZSB3aGVuIG5ld0NvbXAgaXMgTk9UIGEgJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgICAgdGhpcy5pc1ZpZXdDb250YWluZXIkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBWaWV3Q29udGFpbmVyIGhhcyBhIG5ld0NvbXAgdGhhdCBpcyBOT1QgYSByZWZlcmVuY2UhYCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVkVmlld1BDb25uJCA9IG5ld0NvbXA7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZ1Byb3BzOiBhbnkgPSBuZXdDb21wLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9IG5ld0NvbmZpZ1Byb3BzLnRlbXBsYXRlIHx8ICcnO1xuICAgICAgICAgICAgICB0aGlzLnRpdGxlJCA9IG5ld0NvbmZpZ1Byb3BzLnRpdGxlIHx8ICcnO1xuICAgICAgICAgICAgICAvLyB1cGRhdGUgY2hpbGRyZW4gd2l0aCBuZXcgdmlldydzIGNoaWxkcmVuXG4gICAgICAgICAgICAgIC8vIGNoaWxkcmVuIG1heSBoYXZlIGEgJ3JlZmVyZW5jZScgc28gbm9ybWFsaXplIHRoZSBjaGlsZHJlbiBhcnJheVxuICAgICAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkobmV3Q29tcC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVEaXNwYXRjaE9iamVjdCgpOiBhbnkge1xuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAvLyBjb25zdCB7IGFjTmFtZSA9IFwicHJpbWFyeVwiIH0gPSBwQ29ubi5nZXRDb250YWluZXJOYW1lKCk7IC8vIGRvZXNuJ3Qgd29yayB3aXRoIDguMjMgdHlwaW5nc1xuICAgIGNvbnN0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKSB8fCAncHJpbWFyeSc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VtYW50aWNVUkw6ICcnLFxuICAgICAgY29udGV4dDogYmFzZUNvbnRleHQsXG4gICAgICBhY05hbWVcbiAgICB9O1xuICB9XG5cbiAgYnVpbGROYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc0NvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IHNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuXG4gICAgcmV0dXJuIGAke3NDb250ZXh0LnRvVXBwZXJDYXNlKCl9LyR7c05hbWUudG9VcHBlckNhc2UoKX1gO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHNkay12aWV3LWNvbnRhaW5lci10b3BcIiBpZD1cInt7IGJ1aWxkTmFtZSQgfX1cIj5cbiAgPGRpdiAqbmdJZj1cImlzVmlld0NvbnRhaW5lciQ7IGVsc2UgaXNSZWZlcmVuY2VcIj5cbiAgICA8aDMgKm5nSWY9XCJ0aXRsZSQgIT09ICcnXCI+e3sgdGl0bGUkIH19PC9oMz5cbiAgICA8ZGl2ICpuZ0lmPVwidGVtcGxhdGVOYW1lJDsgZWxzZSBzaG93Q2hpbGRyZW5cIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgIFtuYW1lXT1cInRlbXBsYXRlTmFtZSRcIlxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsXG4gICAgICAgICAgZm9ybUdyb3VwJDogZm9ybUdyb3VwJCxcbiAgICAgICAgICBkaXNwbGF5T25seUZBJDogZGlzcGxheU9ubHlGQSRcbiAgICAgICAgfVwiXG4gICAgICAgIGVycm9yTXNnPVwiVmlldyBDb250YWluZXIgbWlzc2luZyBUZW1wbGF0ZSB7eyB0ZW1wbGF0ZU5hbWUkIH19XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNzaG93Q2hpbGRyZW4+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgICBbbmFtZV09XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKClcIlxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLFxuICAgICAgICAgICAgZGlzcGxheU9ubHlGQSQ6IGRpc3BsYXlPbmx5RkEkXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgZXJyb3JNc2c9XCJWaWV3Q29udGFpbmVyIE1pc3NpbmcgKG5vIHRlbXBsYXRlKToge3sga2lkLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpIH19XCJcbiAgICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2lzUmVmZXJlbmNlPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJWaWV3XCIgW3Byb3BzXT1cInsgcENvbm4kOiB2aWV3UENvbm4kLCBkaXNwbGF5T25seUZBJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBMEJwRCxNQUFNLE9BQU8sc0JBQXNCO0lBeUJqQyxZQUNVLGVBQXVDLEVBQ3ZDLFNBQWlDLEVBQ2pDLE1BQWM7UUFGZCxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXZCeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFPOUMsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUlaLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQVlyQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFD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LFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztxSkFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb25maWd1cmVCcm93c2VyQm9va21hcmsgfSBmcm9tICcuL2hlbHBlcic7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbmludGVyZmFjZSBWaWV3Q29udGFpbmVyUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHJvdXRpbmdJbmZvOiBvYmplY3Q7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkaXNwbGF5T25seUZBJDogYm9vbGVhbjtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IFZpZXdDb250YWluZXJQcm9wcztcblxuICBhckNoaWxkcmVuJDogYW55W107XG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuICBjb250ZXh0JDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcblxuICB2aWV3UENvbm4kOiBhbnk7XG5cbiAgaXNWaWV3Q29udGFpbmVyJCA9IHRydWU7XG5cbiAgLy8gSkEgLSBjcmVhdGVkIG9iamVjdCBpcyBub3cgYSBWaWV3IHdpdGggYSBUZW1wbGF0ZVxuICAvLyAgVXNlIGl0cyBQQ29ubmVjdCB0byByZW5kZXIgdGhlIENhc2VWaWV3OyBET04nVCByZXBsYWNlIHRoaXMucENvbm4kXG4gIGNyZWF0ZWRWaWV3UENvbm4kOiBhbnk7XG4gIHN0YXRlOiBhbnk7XG4gIGRpc3BhdGNoT2JqZWN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheU9ubHlGQSQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5kaXNwbGF5T25seUZBJCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmF5XG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkpO1xuXG4gICAgdGhpcy5idWlsZE5hbWUkID0gdGhpcy5idWlsZE5hbWUoKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBWaWV3Q29udGFpbmVyUHJvcHM7XG4gICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQudGVtcGxhdGUgfHwgJyc7XG4gICAgdGhpcy50aXRsZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50aXRsZSB8fCAnJztcbiAgICBjb25zdCB7IENPTlRBSU5FUl9UWVBFLCBBUFAgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgbmFtZSwgbW9kZSwgbGltaXQgfSA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBWaWV3Q29udGFpbmVyUHJvcHM7XG5cbiAgICB0aGlzLnBDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuXG4gICAgY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuXG4gICAgdGhpcy5wcmVwYXJlRGlzcGF0Y2hPYmplY3QgPSB0aGlzLnByZXBhcmVEaXNwYXRjaE9iamVjdC5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5kaXNwYXRjaE9iamVjdCA9IHRoaXMucHJlcGFyZURpc3BhdGNoT2JqZWN0KCk7XG5cbiAgICAvLyBUT0RPOiBQbGFuIGlzIHRvIHJlbmFtZSB3aW5kb3cuY29uc3RlbGxhdGlvbkNvcmUgdG8gd2luZG93LnBlZ2EgKG9yIHNpbWlsYXIpXG4gICAgLy8gICAgQW5kIGV4cG9zZSBsZXNzIHZpYSB1aS1ib290c3RyYXAuanNcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZGlzcGF0Y2hPYmplY3Q6IHRoaXMuZGlzcGF0Y2hPYmplY3QsXG4gICAgICB2aXNpYmxlOiAhUENvcmUuY2hlY2tJZlNlbWFudGljVVJMKClcbiAgICB9O1xuXG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInKSA9PSAnZmFsc2UnKSB7XG4gICAgICBjb250YWluZXJNZ3IuaW5pdGlhbGl6ZUNvbnRhaW5lcnMoe1xuICAgICAgICB0eXBlOiBtb2RlID09PSBDT05UQUlORVJfVFlQRS5NVUxUSVBMRSA/IENPTlRBSU5FUl9UWVBFLk1VTFRJUExFIDogQ09OVEFJTkVSX1RZUEUuU0lOR0xFXG4gICAgICB9KTtcblxuICAgICAgaWYgKG1vZGUgPT09IENPTlRBSU5FUl9UWVBFLk1VTFRJUExFICYmIGxpbWl0KSB7XG4gICAgICAgIC8qIE5PVEU6IHNldENvbnRhaW5lckxpbWl0IHVzZSBpcyB0ZW1wb3JhcnkuIEl0IGlzIGEgbm9uLXB1YmxpYywgdW5zdXBwb3J0ZWQgQVBJLiAqL1xuICAgICAgICBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLnNldENvbnRhaW5lckxpbWl0KGAke0FQUC5BUFB9LyR7bmFtZX1gLCBsaW1pdCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghUENvcmUuY2hlY2tJZlNlbWFudGljVVJMKCkpIGNvbnRhaW5lck1nci5hZGRDb250YWluZXJJdGVtKHRoaXMucENvbm4kIGFzIGFueSk7XG4gICAgICBpZiAoIXRoaXMuZGlzcGxheU9ubHlGQSQpIGNvbmZpZ3VyZUJyb3dzZXJCb29rbWFyayh0aGlzLnBDb25uJCk7XG5cbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8vIGNhbm5vdCBjYWxsIGNoZWNrQW5kVXBkYXRlIGJlY2FzdWUgZmlyc3QgdGltZSB0aHJvdWdoLCB3aWxsIGNhbGwgdXBkYXRlU2VsZiBhbmQgdGhhdCBpcyBpbmNvcnJlY3QgKGNhdXNlcyBpc3N1ZXMpLlxuICAgIC8vIGhvd2V2ZXIsIG5lZWQgYW5ndWxhclBDb25uZWN0IHRvIGJlIGluaXRpYWxpemVkIHdpdGggY3VycmVudFByb3BzIGZvciBmdXR1cmUgdXBkYXRlcywgc28gY2FsbGluZyBzaG91bGRDb21wb25lbnRVcGRhdGUgZGlyZWN0bHlcbiAgICAvLyB3aXRob3V0IGNoZWNraW5nIHRvIHVwZGF0ZSBoZXJlIGluIGluaXQsIHdpbGwgaW5pdGlhbGl6ZSBhbmQgdGhpcyBpcyBjb3JyZWN0XG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICAvLyAgICoqKiBET04nVCBjYWxsIHVwZGF0ZVNlbGYgaW4gbmdJbml0ISEgICoqKlxuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQgPT0gbnVsbCkge1xuICAgICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmF5XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgfVxuXG4gICAgLy8gcm91dGluZ0luZm8gd2FzIGFkZGVkIGFzIGNvbXBvbmVudCBwcm9wIGluIHBvcHVsYXRlQWRkaXRpb25hbFByb3BzXG4gICAgY29uc3Qgcm91dGluZ0luZm8gPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdyb3V0aW5nSW5mbycpO1xuXG4gICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UobG9hZGluZ0luZm8pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cblxuICAgIC8vIGNvbnN0IGJ1aWxkTmFtZSA9IHRoaXMuYnVpbGROYW1lKCk7XG4gICAgY29uc3QgeyBDUkVBVEVfREVUQUlMU19WSUVXX05BTUUgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGlmIChyb3V0aW5nSW5mbykge1xuICAgICAgY29uc3QgeyBhY2Nlc3NlZE9yZGVyLCBpdGVtcyB9ID0gcm91dGluZ0luZm87XG4gICAgICBpZiAoYWNjZXNzZWRPcmRlciAmJiBpdGVtcykge1xuICAgICAgICBjb25zdCBrZXkgPSBhY2Nlc3NlZE9yZGVyW2FjY2Vzc2VkT3JkZXIubGVuZ3RoIC0gMV07XG4gICAgICAgIGxldCBjb21wb25lbnRWaXNpYmxlID0gYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCB7IHZpc2libGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29tcG9uZW50VmlzaWJsZSA9IHZpc2libGUgfHwgY29tcG9uZW50VmlzaWJsZTtcbiAgICAgICAgaWYgKGl0ZW1zW2tleV0gJiYgaXRlbXNba2V5XS52aWV3ICYmIE9iamVjdC5rZXlzKGl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgICAgIGNvbnN0IHJvb3RWaWV3ID0gbGF0ZXN0SXRlbS52aWV3O1xuICAgICAgICAgIGNvbnN0IHsgY29udGV4dCwgbmFtZTogdmlld05hbWUgfSA9IHJvb3RWaWV3LmNvbmZpZztcbiAgICAgICAgICBjb25zdCBjb25maWc6IGFueSA9IHsgbWV0YTogcm9vdFZpZXcgfTtcbiAgICAgICAgICBjb25maWcub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGxhdGVzdEl0ZW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpLFxuICAgICAgICAgICAgY29udGFpbmVySXRlbU5hbWU6IGtleSxcbiAgICAgICAgICAgIGhhc0Zvcm06IHZpZXdOYW1lID09PSBDUkVBVEVfREVUQUlMU19WSUVXX05BTUVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG5cbiAgICAgICAgICAvLyBUSElTIGlzIHdoZXJlIHRoZSBWaWV3Q29udGFpbmVyIGNyZWF0ZXMgYSBWaWV3XG4gICAgICAgICAgLy8gICAgVGhlIGNvbmZpZyBoYXMgbWV0YS5jb25maWcudHlwZSA9IFwidmlld1wiXG4gICAgICAgICAgY29uc3QgbmV3Q29tcCA9IGNvbmZpZ09iamVjdC5nZXRQQ29ubmVjdCgpO1xuICAgICAgICAgIC8vIGNvbnN0IG5ld0NvbXBOYW1lID0gbmV3Q29tcC5nZXRDb21wb25lbnROYW1lKCk7XG4gICAgICAgICAgLy8gVGhlIG1ldGFkYXRhIGZvciBweURldGFpbHMgY2hhbmdlZCBzdWNoIHRoYXQgdGhlIFwidGVtcGxhdGVcIjogXCJDYXNlVmlld1wiXG4gICAgICAgICAgLy8gIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIHRoZSBjcmVhdGVkIFZpZXcgYnV0IGlzIGluIHRoZSBjcmVhdGVkIFZpZXcnc1xuICAgICAgICAgIC8vICBjb25maWcuIFNvLCB3ZSBET04nVCB3YW50IHRvIHJlcGxhY2UgdGhpcy5wQ29ubiQgc2luY2UgdGhlIGNyZWF0ZWRcbiAgICAgICAgICAvLyAgY29tcG9uZW50IGlzIGEgVmlldyAoYW5kIG5vdCBhIFZpZXdDb250YWluZXIpLiBXZSBub3cgbG9vayBmb3IgdGhlXG4gICAgICAgICAgLy8gIFwidGVtcGxhdGVcIiB0eXBlIGRpcmVjdGx5IGluIHRoZSBjcmVhdGVkIGNvbXBvbmVudCAobmV3Q29tcCkgYW5kIE5PVFxuICAgICAgICAgIC8vICBhcyBhIGNoaWxkIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudC5cblxuICAgICAgICAgIC8vIFVzZSB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQgKFZpZXcpIGluZm8gYnV0IERPIE5PVCByZXBsYWNlXG4gICAgICAgICAgLy8gIHRoaXMgVmlld0NvbnRhaW5lcidzIHBDb25uJCwgZXRjLlxuICAgICAgICAgIC8vICBOb3RlIHRoYXQgd2UncmUgbm93IHVzaW5nIHRoZSBuZXdseSBjcmVhdGVkIFZpZXcncyBQQ29ubmVjdCBpbiB0aGVcbiAgICAgICAgICAvLyAgVmlld0NvbnRhaW5lciBIVE1MIHRlbXBsYXRlIHRvIGd1aWRlIHdoYXQncyByZW5kZXJlZCBzaW1pbGFyIHRvIHdoYXRcbiAgICAgICAgICAvLyAgdGhlIE5lYnVsYS9Db25zdGVsbGF0aW9uIHJldHVybiBvZiBSZWFjdC5GcmFnbWVudCBkb2VzXG5cbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5ld0NvbXAuZ2V0Q29tcG9uZW50TmFtZSgpID09PSAncmVmZXJlbmNlJykge1xuICAgICAgICAgICAgICAvLyBpZiBhIHJlZmVybmVjZSwgaXQgd2lsbCBkZSByZWZlcmVuY2UgdG8gYSBcInZpZXdcIlxuICAgICAgICAgICAgICAvLyBzbyBoYW5kIHRoaXMgb2ZmIHRvIHRoZSBcIlZpZXdcIiBjb21wb25lbnQgdG8gZG8gdGhhdFxuICAgICAgICAgICAgICB0aGlzLmlzVmlld0NvbnRhaW5lciQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy52aWV3UENvbm4kID0gbmV3Q29tcDtcblxuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKioqICB0aGlzIGNvbW1tZW50ZWQgb3V0IGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQsIG9uY2Ugd2UgdGVzdCBvdXQgdGhhdFxuICAgICAgICAgICAgICAgKioqICBoYW5kaW5nIG9mZiByZWZlcm5jZSB0byBWaWV3IGNvbXBvbmVudCBhbHdheXMgd29ya3NcbiAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgLy8gV2hlbiBuZXdDb21wIGlzIGEgcmVmZXJlbmNlLCB3ZSB3YW50IHRvIGRlLXJlZmVyZW5jZVxuICAgICAgICAgICAgICAvLyAgaXQgKHRvIGdldCB0aGUgVmlldykgYW5kIHRoZW4gdXNlIHRoYXQgVmlldyB0byBnZXQgdGhlXG4gICAgICAgICAgICAgIC8vICB0ZW1wbGF0ZSwgdGl0bGUsIGNoaWxkcmVuLCBldGMuXG5cbiAgICAgICAgICAgICAgLypcblxuICAgICAgICAgICAgICBjb25zdCB0aGVEZXJlZmVyZW5jZWRWaWV3ID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKG5ld0NvbXApO1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWdQcm9wcyA9IHRoZURlcmVmZXJlbmNlZFZpZXcuZ2V0Q29uZmlnUHJvcHMoKTtcblxuICAgICAgICAgICAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRoZURlcmVmZXJlbmNlZFZpZXdDaGlsZHJlbiA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoZURlcmVmZXJlbmNlZFZpZXcuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9ICgndGVtcGxhdGUnIGluIG5ld0NvbmZpZ1Byb3BzKSA/IG5ld0NvbmZpZ1Byb3BzW1widGVtcGxhdGVcIl0gOiBcIlwiO1xuICAgICAgICAgICAgICB0aGlzLnRpdGxlJCA9ICgndGl0bGUnIGluIG5ld0NvbmZpZ1Byb3BzKSA/IG5ld0NvbmZpZ1Byb3BzW1widGl0bGVcIl0gOiBcIlwiO1xuICAgICAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhlRGVyZWZlcmVuY2VkVmlld0NoaWxkcmVuO1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZWRWaWV3UENvbm4kID0gdGhlRGVyZWZlcmVuY2VkVmlldztcbiAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9sZCBzdHlsZSB3aGVuIG5ld0NvbXAgaXMgTk9UIGEgJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgICAgdGhpcy5pc1ZpZXdDb250YWluZXIkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBWaWV3Q29udGFpbmVyIGhhcyBhIG5ld0NvbXAgdGhhdCBpcyBOT1QgYSByZWZlcmVuY2UhYCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVkVmlld1BDb25uJCA9IG5ld0NvbXA7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZ1Byb3BzID0gbmV3Q29tcC5nZXRDb25maWdQcm9wcygpO1xuICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSBuZXdDb25maWdQcm9wcy50ZW1wbGF0ZSB8fCAnJztcbiAgICAgICAgICAgICAgdGhpcy50aXRsZSQgPSBuZXdDb25maWdQcm9wcy50aXRsZSB8fCAnJztcbiAgICAgICAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICAgICAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYXlcbiAgICAgICAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KG5ld0NvbXAuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmVwYXJlRGlzcGF0Y2hPYmplY3QoKTogYW55IHtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgLy8gY29uc3QgeyBhY05hbWUgPSBcInByaW1hcnlcIiB9ID0gcENvbm4uZ2V0Q29udGFpbmVyTmFtZSgpOyAvLyBkb2Vzbid0IHdvcmsgd2l0aCA4LjIzIHR5cGluZ3NcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCkgfHwgJ3ByaW1hcnknO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbWFudGljVVJMOiAnJyxcbiAgICAgIGNvbnRleHQ6IGJhc2VDb250ZXh0LFxuICAgICAgYWNOYW1lXG4gICAgfTtcbiAgfVxuXG4gIGJ1aWxkTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBzTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIHJldHVybiBgJHtzQ29udGV4dC50b1VwcGVyQ2FzZSgpfS8ke3NOYW1lLnRvVXBwZXJDYXNlKCl9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstdmlldy1jb250YWluZXItdG9wXCIgaWQ9XCJ7eyBidWlsZE5hbWUkIH19XCI+XG4gIDxkaXYgKm5nSWY9XCJpc1ZpZXdDb250YWluZXIkOyBlbHNlIGlzUmVmZXJlbmNlXCI+XG4gICAgPGgzICpuZ0lmPVwidGl0bGUkICE9PSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlTmFtZSQ7IGVsc2Ugc2hvd0NoaWxkcmVuXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBbbmFtZV09XCJ0ZW1wbGF0ZU5hbWUkXCJcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICBwQ29ubiQ6IGNyZWF0ZWRWaWV3UENvbm4kLFxuICAgICAgICAgIGZvcm1Hcm91cCQ6IGZvcm1Hcm91cCQsXG4gICAgICAgICAgZGlzcGxheU9ubHlGQSQ6IGRpc3BsYXlPbmx5RkEkXG4gICAgICAgIH1cIlxuICAgICAgICBlcnJvck1zZz1cIlZpZXcgQ29udGFpbmVyIG1pc3NpbmcgVGVtcGxhdGUge3sgdGVtcGxhdGVOYW1lJCB9fVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0NoaWxkcmVuPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgW25hbWVdPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpXCJcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSxcbiAgICAgICAgICAgIGRpc3BsYXlPbmx5RkEkOiBkaXNwbGF5T25seUZBJFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIGVycm9yTXNnPVwiVmlld0NvbnRhaW5lciBNaXNzaW5nIChubyB0ZW1wbGF0ZSk6IHt7IGtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fVwiXG4gICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNpc1JlZmVyZW5jZT5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiVmlld1wiIFtwcm9wc109XCJ7IHBDb25uJDogdmlld1BDb25uJCwgZGlzcGxheU9ubHlGQSQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -15,10 +15,10 @@ export class ActionButtonsComponent {
15
15
  buttonClick(sAction, sButtonType) {
16
16
  this.actionButtonClick.emit({ action: sAction, buttonType: sButtonType });
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionButtonsComponent, isStandalone: true, selector: "app-action-buttons", inputs: { arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$" }, outputs: { actionButtonClick: "actionButtonClick" }, ngImport: i0, template: "<mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arSecondaryButtons$\" mat-raised-button color=\"secondary\" (click)=\"buttonClick(aButton.jsAction, 'secondary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arMainButtons$\" mat-raised-button color=\"primary\" (click)=\"buttonClick(aButton.jsAction, 'primary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n</mat-grid-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatGridListModule }, { kind: "component", type: i2.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i2.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ActionButtonsComponent, isStandalone: true, selector: "app-action-buttons", inputs: { arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$" }, outputs: { actionButtonClick: "actionButtonClick" }, ngImport: i0, template: "<mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arSecondaryButtons$\" mat-raised-button color=\"secondary\" (click)=\"buttonClick(aButton.jsAction, 'secondary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arMainButtons$\" mat-raised-button color=\"primary\" (click)=\"buttonClick(aButton.jsAction, 'primary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n</mat-grid-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatGridListModule }, { kind: "component", type: i2.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i2.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionButtonsComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionButtonsComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'app-action-buttons', standalone: true, imports: [CommonModule, MatGridListModule, MatButtonModule], template: "<mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arSecondaryButtons$\" mat-raised-button color=\"secondary\" (click)=\"buttonClick(aButton.jsAction, 'secondary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arMainButtons$\" mat-raised-button color=\"primary\" (click)=\"buttonClick(aButton.jsAction, 'primary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n</mat-grid-list>\n" }]
24
24
  }], propDecorators: { arMainButtons$: [{