@mediusinc/mng-commons 5.0.0-rc.0 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/core/data-list/data-list-params-helpers.d.ts +82 -0
  2. package/core/descriptors/action.descriptor.d.ts +3 -3
  3. package/core/descriptors/column.descriptor.d.ts +1 -1
  4. package/core/descriptors/editor.descriptor.d.ts +6 -6
  5. package/core/descriptors/enum.descriptor.d.ts +6 -0
  6. package/core/descriptors/filter.descriptor.d.ts +1 -1
  7. package/core/descriptors/model.descriptor.d.ts +1 -1
  8. package/core/descriptors/table.descriptor.d.ts +6 -6
  9. package/core/descriptors/tableview.descriptor.d.ts +10 -10
  10. package/core/enum/enum-helpers.d.ts +49 -0
  11. package/core/error/error-helpers.d.ts +114 -0
  12. package/core/helpers/date.d.ts +14 -0
  13. package/core/helpers/object.d.ts +27 -0
  14. package/core/helpers/route.d.ts +35 -0
  15. package/core/helpers/string.d.ts +7 -0
  16. package/core/helpers/templates.d.ts +3 -0
  17. package/core/i18n/i18n-common.d.ts +6 -0
  18. package/core/i18n/i18n-error.d.ts +4 -0
  19. package/core/i18n/i18n-type.d.ts +20 -0
  20. package/core/index.d.ts +15 -9
  21. package/{model → core}/pipes/enum.pipe.d.ts +2 -2
  22. package/core/pipes/enumerate.pipe.d.ts +3 -3
  23. package/{model → core}/pipes/i18n-property.pipe.d.ts +2 -2
  24. package/core/pipes/template.pipe.d.ts +0 -2
  25. package/core/router/route-builder.d.ts +2 -4
  26. package/core/router/routes-builder.d.ts +5 -6
  27. package/core/security/permission-helpers.d.ts +3 -0
  28. package/core/security/permissions.model.d.ts +2 -2
  29. package/esm2022/core/components/notification/notification-wrapper.component.mjs +4 -4
  30. package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
  31. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
  32. package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
  33. package/esm2022/core/data-list/filter-match.model.mjs +1 -1
  34. package/esm2022/core/data-providers/base.data-provider.mjs +1 -1
  35. package/esm2022/core/descriptors/action.descriptor.mjs +1 -1
  36. package/esm2022/core/descriptors/column.descriptor.mjs +1 -1
  37. package/esm2022/core/descriptors/editor.descriptor.mjs +1 -1
  38. package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
  39. package/esm2022/core/descriptors/filter.descriptor.mjs +1 -1
  40. package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
  41. package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
  42. package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
  43. package/esm2022/core/directives/component.directive.mjs +4 -4
  44. package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +4 -4
  45. package/esm2022/core/directives/template.directive.mjs +3 -3
  46. package/esm2022/core/enum/enum-helpers.mjs +81 -0
  47. package/esm2022/core/error/error-handler.mjs +3 -3
  48. package/esm2022/core/error/error-helpers.mjs +247 -0
  49. package/esm2022/core/helpers/coercion.mjs +1 -1
  50. package/esm2022/core/helpers/date.mjs +119 -0
  51. package/esm2022/core/helpers/object.mjs +145 -0
  52. package/esm2022/core/helpers/route.mjs +58 -0
  53. package/esm2022/core/helpers/string.mjs +57 -0
  54. package/esm2022/core/helpers/templates.mjs +4 -0
  55. package/esm2022/core/i18n/i18n-common.mjs +24 -0
  56. package/esm2022/core/i18n/i18n-error.mjs +27 -0
  57. package/esm2022/core/i18n/i18n-type.mjs +79 -0
  58. package/esm2022/core/index.mjs +17 -11
  59. package/esm2022/core/log/log-publisher-console.service.mjs +3 -3
  60. package/esm2022/core/log/logger.service.mjs +3 -3
  61. package/esm2022/core/pipes/boolean.pipe.mjs +4 -4
  62. package/esm2022/core/pipes/class-map.pipe.mjs +4 -4
  63. package/esm2022/core/pipes/enum.pipe.mjs +27 -0
  64. package/esm2022/core/pipes/enumerate-async.pipe.mjs +8 -8
  65. package/esm2022/core/pipes/enumerate.pipe.mjs +10 -10
  66. package/esm2022/core/pipes/getter.pipe.mjs +4 -4
  67. package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
  68. package/esm2022/core/pipes/json-path.pipe.mjs +6 -6
  69. package/esm2022/core/pipes/parametrize.pipe.mjs +6 -6
  70. package/esm2022/core/pipes/template.pipe.mjs +7 -8
  71. package/esm2022/core/provide.mjs +1 -21
  72. package/esm2022/core/reflect/type-enum-metadata.mjs +1 -1
  73. package/esm2022/core/registry/type-registry.mjs +1 -1
  74. package/esm2022/core/router/route-builder.mjs +8 -24
  75. package/esm2022/core/router/routes-builder.mjs +17 -16
  76. package/esm2022/core/security/permission-helpers.mjs +14 -0
  77. package/esm2022/core/security/permission.guard.mjs +1 -1
  78. package/esm2022/core/security/permission.service.mjs +6 -6
  79. package/esm2022/core/security/permissions.model.mjs +1 -1
  80. package/esm2022/core/services/commons-configuration.service.mjs +6 -6
  81. package/esm2022/core/services/commons-init.service.mjs +4 -4
  82. package/esm2022/core/services/commons-router.service.mjs +4 -4
  83. package/esm2022/core/services/commons.service.mjs +4 -4
  84. package/esm2022/core/services/local-storage-config.service.mjs +4 -4
  85. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +9 -10
  86. package/esm2022/filter/descriptors/filter.descriptor.mjs +1 -1
  87. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
  88. package/esm2022/form/api/descriptors/button-style.builder.mjs +1 -1
  89. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +7 -7
  90. package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
  91. package/esm2022/form/components/dropdown/dropdown.component.mjs +7 -7
  92. package/esm2022/form/directives/input-trim.directive.mjs +4 -4
  93. package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
  94. package/esm2022/model/descriptors/model.descriptor.mjs +4 -4
  95. package/esm2022/model/helpers/i18n.mjs +45 -0
  96. package/esm2022/model/helpers/model.mjs +71 -0
  97. package/esm2022/model/index.mjs +4 -7
  98. package/esm2022/table/api/data-providers/table.data-provider.mjs +1 -1
  99. package/esm2022/table/api/descriptors/column.descriptor.mjs +1 -1
  100. package/esm2022/table/api/descriptors/table.descriptor.mjs +36 -8
  101. package/esm2022/table/api/helpers/class-attribute-converter.mjs +1 -1
  102. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +9 -9
  103. package/esm2022/table/components/column-value/column-value.component.mjs +12 -14
  104. package/esm2022/table/components/table/table.component.mjs +20 -37
  105. package/esm2022/table/helpers/notification.mjs +4 -4
  106. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +4 -4
  107. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +4 -4
  108. package/esm2022/table/services/data-list.service.mjs +3 -3
  109. package/esm2022/tableview/action/components/action/action.component.mjs +9 -9
  110. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +4 -4
  111. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +6 -6
  112. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
  113. package/esm2022/tableview/action/components/route/action-route.component.mjs +4 -4
  114. package/esm2022/tableview/action/components/table/action-table.component.mjs +12 -24
  115. package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
  116. package/esm2022/tableview/action/helpers/notification.mjs +8 -8
  117. package/esm2022/tableview/action/helpers/styles.mjs +1 -1
  118. package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
  119. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
  120. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +1 -1
  121. package/esm2022/tableview/action/services/action-executor.service.mjs +9 -8
  122. package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
  123. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
  124. package/esm2022/tableview/action/services/navigation.service.mjs +4 -4
  125. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +1 -1
  126. package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
  127. package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
  128. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +1 -1
  129. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +1 -1
  130. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +1 -1
  131. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +1 -1
  132. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +1 -1
  133. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +4 -4
  134. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +1 -1
  135. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +3 -3
  136. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +1 -1
  137. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +8 -8
  138. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +1 -1
  139. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +4 -4
  140. package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +1 -1
  141. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +1 -1
  142. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  143. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +3 -3
  144. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +1 -1
  145. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +4 -4
  146. package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +1 -1
  147. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +1 -1
  148. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +4 -4
  149. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +1 -1
  150. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +9 -9
  151. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  152. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +4 -4
  153. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
  154. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  155. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
  156. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -4
  157. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
  158. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  159. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  160. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +9 -9
  161. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
  162. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  163. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  164. package/esm2022/tableview/editor/helpers/editor-formly.mjs +335 -0
  165. package/esm2022/tableview/editor/helpers/formly-config.mjs +1 -1
  166. package/esm2022/tableview/editor/services/formly-config.provider.mjs +1 -1
  167. package/esm2022/tableview/index.mjs +3 -5
  168. package/esm2022/tableview/provide.mjs +2 -1
  169. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +3 -3
  170. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +10 -19
  171. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +1 -1
  172. package/fesm2022/mediusinc-mng-commons-core.mjs +1367 -1389
  173. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  174. package/fesm2022/mediusinc-mng-commons-filter.mjs +8 -9
  175. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  176. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  177. package/fesm2022/mediusinc-mng-commons-form.mjs +17 -17
  178. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  179. package/fesm2022/mediusinc-mng-commons-model.mjs +99 -148
  180. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  181. package/fesm2022/mediusinc-mng-commons-table-api.mjs +35 -7
  182. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  183. package/fesm2022/mediusinc-mng-commons-table.mjs +48 -65
  184. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  185. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +19 -19
  186. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  187. package/fesm2022/mediusinc-mng-commons-tableview.mjs +507 -572
  188. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  189. package/filter/descriptors/filter.descriptor.d.ts +2 -2
  190. package/model/descriptors/model.descriptor.d.ts +2 -2
  191. package/model/helpers/i18n.d.ts +10 -0
  192. package/model/helpers/model.d.ts +5 -0
  193. package/model/index.d.ts +2 -4
  194. package/package.json +7 -7
  195. package/table/api/descriptors/table.descriptor.d.ts +10 -0
  196. package/table/components/column-value/column-value.component.d.ts +3 -4
  197. package/table/components/table/table.component.d.ts +13 -13
  198. package/tableview/action/components/table/action-table.component.d.ts +6 -6
  199. package/tableview/action/helpers/i18n.d.ts +22 -0
  200. package/tableview/action/models/execution/action-instance-state.model.d.ts +21 -21
  201. package/tableview/action/services/action-executor.service.d.ts +1 -1
  202. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +1 -1
  203. package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -3
  204. package/tableview/api/action/models/action.type.d.ts +2 -2
  205. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +21 -21
  206. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +2 -2
  207. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +2 -2
  208. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +5 -5
  209. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +4 -4
  210. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +4 -4
  211. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +4 -4
  212. package/tableview/api/editor/descriptors/field.descriptor.d.ts +2 -2
  213. package/tableview/api/editor/models/editor-fields.model.d.ts +3 -3
  214. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +2 -2
  215. package/tableview/editor/helpers/editor-formly.d.ts +10 -0
  216. package/tableview/index.d.ts +2 -2
  217. package/tableview/tableview/components/tableview/tableview.component.d.ts +5 -5
  218. package/core/data-list/data-list-params.util.d.ts +0 -84
  219. package/core/enum/enum.util.d.ts +0 -51
  220. package/core/error/error.util.d.ts +0 -116
  221. package/core/security/permission.util.d.ts +0 -5
  222. package/core/utils/date.util.d.ts +0 -20
  223. package/core/utils/i18n.util.d.ts +0 -36
  224. package/core/utils/object.util.d.ts +0 -31
  225. package/core/utils/route.util.d.ts +0 -37
  226. package/core/utils/string.util.d.ts +0 -9
  227. package/esm2022/core/data-list/data-list-params.util.mjs +0 -417
  228. package/esm2022/core/enum/enum.util.mjs +0 -83
  229. package/esm2022/core/error/error.util.mjs +0 -249
  230. package/esm2022/core/security/permission.util.mjs +0 -16
  231. package/esm2022/core/utils/date.util.mjs +0 -136
  232. package/esm2022/core/utils/i18n.util.mjs +0 -137
  233. package/esm2022/core/utils/object.util.mjs +0 -147
  234. package/esm2022/core/utils/route.util.mjs +0 -60
  235. package/esm2022/core/utils/string.util.mjs +0 -59
  236. package/esm2022/model/pipes/enum.pipe.mjs +0 -26
  237. package/esm2022/model/pipes/i18n-property.pipe.mjs +0 -19
  238. package/esm2022/model/utils/i18n.util.mjs +0 -51
  239. package/esm2022/model/utils/model.util.mjs +0 -73
  240. package/esm2022/tableview/action/utils/i18n.util.mjs +0 -126
  241. package/esm2022/tableview/editor/utils/editor-formly.util.mjs +0 -337
  242. package/model/utils/i18n.util.d.ts +0 -15
  243. package/model/utils/model.util.d.ts +0 -8
  244. package/tableview/action/utils/i18n.util.d.ts +0 -48
  245. package/tableview/editor/utils/editor-formly.util.d.ts +0 -12
@@ -1,5 +1,5 @@
1
1
  import { Pipe } from '@angular/core';
2
- import { StringUtil } from '../utils/string.util';
2
+ import { escapeHtmlAny } from '../helpers/string';
3
3
  import { JsonPathPipe } from './json-path.pipe';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ParametrizePipe {
@@ -17,7 +17,7 @@ export class ParametrizePipe {
17
17
  if (item) {
18
18
  params = {
19
19
  ...params,
20
- item: StringUtil.escapeHtmlAny(item)
20
+ item: escapeHtmlAny(item)
21
21
  };
22
22
  }
23
23
  if (itemId) {
@@ -72,10 +72,10 @@ export class ParametrizePipe {
72
72
  parametrizeString(s, params) {
73
73
  return s.replace(/{{\s?([^{}\s]*)\s?}}/g, (subs, key) => this.jsonPath.transform(params, key) ?? subs);
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ParametrizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
76
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: ParametrizePipe, isStandalone: true, name: "mngParametrize" }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParametrizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
76
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: ParametrizePipe, isStandalone: true, name: "mngParametrize" }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ParametrizePipe, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParametrizePipe, decorators: [{
79
79
  type: Pipe,
80
80
  args: [{
81
81
  standalone: true,
@@ -83,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
83
83
  pure: true
84
84
  }]
85
85
  }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldHJpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3BpcGVzL3BhcmFtZXRyaXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPOUMsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFNWSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQW1FekM7SUFqRUcsU0FBUyxDQUFDLEtBQWMsRUFBRSxNQUFlLEVBQUUsSUFBVSxFQUFFLElBQTBCO1FBQzdFLElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksRUFBRTtZQUNOLE1BQU0sR0FBRztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsR0FBRyxJQUFJO2FBQ1YsQ0FBQztTQUNMO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFDTixNQUFNLEdBQUc7Z0JBQ0wsR0FBRyxNQUFNO2dCQUNULElBQUksRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQzthQUN2QyxDQUFDO1NBQ0w7UUFDRCxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sR0FBRztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQztTQUNMO1FBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM5QzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDakYsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO2FBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDbEMsb0NBQW9DO1lBQ3BDLE1BQU0sR0FBRyxHQUFRLEVBQUMsR0FBRyxLQUFLLEVBQUMsQ0FBQztZQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRTtnQkFDbkIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtvQkFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNwRDthQUNKO1lBQ0QsT0FBTyxHQUFHLENBQUM7U0FDZDthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLENBQVMsRUFBRSxNQUFXO1FBQzFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1SCxzQkFBc0I7WUFDdEIsT0FBTyxDQUFDO2lCQUNILEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO2FBQU07WUFDSCx1QkFBdUI7WUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVPLDZCQUE2QixDQUFDLENBQVMsRUFBRSxNQUFXO1FBQ3hELElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM5RDthQUFNO1lBQ0gsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxDQUFTLEVBQUUsTUFBVztRQUM1QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDM0gsQ0FBQzs4R0FuRVEsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUwzQixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixJQUFJLEVBQUUsSUFBSTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi9oZWxwZXJzL3R5cGUtaGVscGVycyc7XG5pbXBvcnQge1N0cmluZ1V0aWx9IGZyb20gJy4uL3V0aWxzL3N0cmluZy51dGlsJztcbmltcG9ydCB7SnNvblBhdGhQaXBlfSBmcm9tICcuL2pzb24tcGF0aC5waXBlJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ21uZ1BhcmFtZXRyaXplJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtZXRyaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUganNvblBhdGggPSBuZXcgSnNvblBhdGhQaXBlKCk7XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGl0ZW1JZD86IElkVHlwZSwgaXRlbT86IGFueSwgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBhbnkge1xuICAgICAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4uZGF0YVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICBpdGVtOiBTdHJpbmdVdGlsLmVzY2FwZUh0bWxBbnkoaXRlbSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW1JZCkge1xuICAgICAgICAgICAgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICBpdGVtSWQ6IGl0ZW1JZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1TdHJpbmcodmFsdWUsIHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCAmJiB0eXBlb2YgdmFsdWVbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKChzOiBzdHJpbmcpID0+IHRoaXMudHJhbnNmb3JtU3RyaW5nKHMsIHBhcmFtcykpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIC8vIHByb2Nlc3Mgb25seSBmaXJzdCBsZXZlbCBjaXRpemVuc1xuICAgICAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7Li4udmFsdWV9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqUHJvcCA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqUHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSB0aGlzLnRyYW5zZm9ybVN0cmluZyhvYmpQcm9wLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybVN0cmluZyhzOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgICAgIGlmICgocy5pbmRleE9mKCcvJykgPj0gMCAmJiBzLmluZGV4T2YoJzonKSA+PSAwICYmICFzLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJiAhcy5zdGFydHNXaXRoKCdodHRwczovLycpKSB8fCBzLnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyByb3V0ZXIgbGlua1xuICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAgICAgICAgIC5tYXAocyA9PiB0aGlzLnBhcmFtZXRyaXplU3RyaW5nQXNSb3V0ZXJMaW5rKHMsIHBhcmFtcykpXG4gICAgICAgICAgICAgICAgLmpvaW4oJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhcmFtZXRyaXplIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0cml6ZVN0cmluZyhzLCBwYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJhbWV0cml6ZVN0cmluZ0FzUm91dGVyTGluayhzOiBzdHJpbmcsIHBhcmFtczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHMuc3RhcnRzV2l0aCgnOicpKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtUHJvcGVydHkgPSBzLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmpzb25QYXRoLnRyYW5zZm9ybShwYXJhbXMsIGl0ZW1Qcm9wZXJ0eSkgPz8gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFyYW1ldHJpemVTdHJpbmcoczogc3RyaW5nLCBwYXJhbXM6IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL3t7XFxzPyhbXnt9XFxzXSopXFxzP319L2csIChzdWJzOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB0aGlzLmpzb25QYXRoLnRyYW5zZm9ybShwYXJhbXMsIGtleSkgPz8gc3Vicyk7XG4gICAgfVxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldHJpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3BpcGVzL3BhcmFtZXRyaXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPOUMsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFNWSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQW1FekM7SUFqRUcsU0FBUyxDQUFDLEtBQWMsRUFBRSxNQUFlLEVBQUUsSUFBVSxFQUFFLElBQTBCO1FBQzdFLElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHO2dCQUNMLEdBQUcsTUFBTTtnQkFDVCxHQUFHLElBQUk7YUFDVixDQUFDO1FBQ04sQ0FBQztRQUNELElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEdBQUc7Z0JBQ0wsR0FBRyxNQUFNO2dCQUNULElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDO2FBQzVCLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sR0FBRztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsRixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsb0NBQW9DO1lBQ3BDLE1BQU0sR0FBRyxHQUFRLEVBQUMsR0FBRyxLQUFLLEVBQUMsQ0FBQztZQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDckQsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsQ0FBUyxFQUFFLE1BQVc7UUFDMUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0gsc0JBQXNCO1lBQ3RCLE9BQU8sQ0FBQztpQkFDSCxLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ3ZELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNKLHVCQUF1QjtZQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxDQUFTLEVBQUUsTUFBVztRQUN4RCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxDQUFTLEVBQUUsTUFBVztRQUM1QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDM0gsQ0FBQzs4R0FuRVEsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUwzQixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixJQUFJLEVBQUUsSUFBSTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7ZXNjYXBlSHRtbEFueX0gZnJvbSAnLi4vaGVscGVycy9zdHJpbmcnO1xuaW1wb3J0IHtJZFR5cGV9IGZyb20gJy4uL2hlbHBlcnMvdHlwZS1oZWxwZXJzJztcbmltcG9ydCB7SnNvblBhdGhQaXBlfSBmcm9tICcuL2pzb24tcGF0aC5waXBlJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ21uZ1BhcmFtZXRyaXplJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtZXRyaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUganNvblBhdGggPSBuZXcgSnNvblBhdGhQaXBlKCk7XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGl0ZW1JZD86IElkVHlwZSwgaXRlbT86IGFueSwgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBhbnkge1xuICAgICAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4uZGF0YVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICBpdGVtOiBlc2NhcGVIdG1sQW55KGl0ZW0pXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtSWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgaXRlbUlkOiBpdGVtSWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtU3RyaW5nKHZhbHVlLCBwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDAgJiYgdHlwZW9mIHZhbHVlWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoczogc3RyaW5nKSA9PiB0aGlzLnRyYW5zZm9ybVN0cmluZyhzLCBwYXJhbXMpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAvLyBwcm9jZXNzIG9ubHkgZmlyc3QgbGV2ZWwgY2l0aXplbnNcbiAgICAgICAgICAgIGNvbnN0IG9iajogYW55ID0gey4uLnZhbHVlfTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9ialByb3AgPSBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ialByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gdGhpcy50cmFuc2Zvcm1TdHJpbmcob2JqUHJvcCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1TdHJpbmcoczogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xuICAgICAgICBpZiAoKHMuaW5kZXhPZignLycpID49IDAgJiYgcy5pbmRleE9mKCc6JykgPj0gMCAmJiAhcy5zdGFydHNXaXRoKCdodHRwOi8vJykgJiYgIXMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkgfHwgcy5zdGFydHNXaXRoKCc6JykpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgcm91dGVyIGxpbmtcbiAgICAgICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgICAgICAgICAubWFwKHMgPT4gdGhpcy5wYXJhbWV0cml6ZVN0cmluZ0FzUm91dGVyTGluayhzLCBwYXJhbXMpKVxuICAgICAgICAgICAgICAgIC5qb2luKCcvJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXJhbWV0cml6ZSBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldHJpemVTdHJpbmcocywgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFyYW1ldHJpemVTdHJpbmdBc1JvdXRlckxpbmsoczogc3RyaW5nLCBwYXJhbXM6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChzLnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbVByb3BlcnR5ID0gcy5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5qc29uUGF0aC50cmFuc2Zvcm0ocGFyYW1zLCBpdGVtUHJvcGVydHkpID8/ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcmFtZXRyaXplU3RyaW5nKHM6IHN0cmluZywgcGFyYW1zOiBhbnkpOiBhbnkge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC97e1xccz8oW157fVxcc10qKVxccz99fS9nLCAoc3Viczogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4gdGhpcy5qc29uUGF0aC50cmFuc2Zvcm0ocGFyYW1zLCBrZXkpID8/IHN1YnMpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,10 +1,9 @@
1
1
  import { Pipe } from '@angular/core';
2
2
  import { ParametrizePipe } from './parametrize.pipe';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "./parametrize.pipe";
5
4
  export class TemplatePipe {
6
- constructor(parametrizePipe) {
7
- this.parametrizePipe = parametrizePipe;
5
+ constructor() {
6
+ this.parametrizePipe = new ParametrizePipe();
8
7
  }
9
8
  transform(value, template) {
10
9
  if (typeof template === 'string') {
@@ -12,15 +11,15 @@ export class TemplatePipe {
12
11
  }
13
12
  return value;
14
13
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TemplatePipe, deps: [{ token: i1.ParametrizePipe }], target: i0.ɵɵFactoryTarget.Pipe }); }
16
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: TemplatePipe, isStandalone: true, name: "template" }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: TemplatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
15
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: TemplatePipe, isStandalone: true, name: "template" }); }
17
16
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TemplatePipe, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: TemplatePipe, decorators: [{
19
18
  type: Pipe,
20
19
  args: [{
21
20
  standalone: true,
22
21
  name: 'template',
23
22
  pure: true
24
23
  }]
25
- }], ctorParameters: () => [{ type: i1.ParametrizePipe }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3BpcGVzL3RlbXBsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7QUFPbkQsTUFBTSxPQUFPLFlBQVk7SUFDckIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUV4RCxTQUFTLENBQUMsS0FBYyxFQUFFLFFBQWlCO1FBQ3ZDLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyRTtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBVFEsWUFBWTs0R0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUx4QixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLElBQUk7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1BhcmFtZXRyaXplUGlwZX0gZnJvbSAnLi9wYXJhbWV0cml6ZS5waXBlJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RlbXBsYXRlJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1ldHJpemVQaXBlOiBQYXJhbWV0cml6ZVBpcGUpIHt9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIHRlbXBsYXRlPzogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRyaXplUGlwZS50cmFuc2Zvcm0odGVtcGxhdGUsIHVuZGVmaW5lZCwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3BpcGVzL3RlbXBsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDOztBQU9uRCxNQUFNLE9BQU8sWUFBWTtJQUx6QjtRQU1ZLG9CQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztLQVNuRDtJQVBHLFNBQVMsQ0FBQyxLQUFjLEVBQUUsUUFBaUI7UUFDdkMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBVFEsWUFBWTs0R0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUx4QixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLElBQUk7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1BhcmFtZXRyaXplUGlwZX0gZnJvbSAnLi9wYXJhbWV0cml6ZS5waXBlJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RlbXBsYXRlJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUgcGFyYW1ldHJpemVQaXBlID0gbmV3IFBhcmFtZXRyaXplUGlwZSgpO1xuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCB0ZW1wbGF0ZT86IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0cml6ZVBpcGUudHJhbnNmb3JtKHRlbXBsYXRlLCB1bmRlZmluZWQsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
- import { DatePipe } from '@angular/common';
2
1
  import { HttpBackend } from '@angular/common/http';
3
2
  import { APP_INITIALIZER, ErrorHandler } from '@angular/core';
4
3
  import { ConfirmationService, MessageService } from 'primeng/api';
@@ -6,14 +5,6 @@ import { DialogService } from 'primeng/dynamicdialog';
6
5
  import { CommonsErrorHandler } from './error/error-handler';
7
6
  import { LogPublisherConsoleService } from './log/log-publisher-console.service';
8
7
  import { LoggerService } from './log/logger.service';
9
- import { BooleanPipe } from './pipes/boolean.pipe';
10
- import { ClassMapPipe } from './pipes/class-map.pipe';
11
- import { EnumerateAsyncPipe } from './pipes/enumerate-async.pipe';
12
- import { EnumeratePipe } from './pipes/enumerate.pipe';
13
- import { GetterPipe } from './pipes/getter.pipe';
14
- import { JsonPathPipe } from './pipes/json-path.pipe';
15
- import { ParametrizePipe } from './pipes/parametrize.pipe';
16
- import { TemplatePipe } from './pipes/template.pipe';
17
8
  import { TypeRegistry } from './registry/type-registry';
18
9
  import { PermissionService } from './security/permission.service';
19
10
  import { CommonsConfigurationService } from './services/commons-configuration.service';
@@ -37,17 +28,6 @@ export function provideCommons(config, ...features) {
37
28
  DialogService,
38
29
  MessageService,
39
30
  ConfirmationService,
40
- // angular
41
- DatePipe,
42
- // pipes
43
- BooleanPipe,
44
- ClassMapPipe,
45
- EnumeratePipe,
46
- EnumerateAsyncPipe,
47
- GetterPipe,
48
- JsonPathPipe,
49
- ParametrizePipe,
50
- TemplatePipe,
51
31
  // services
52
32
  CommonsInitService,
53
33
  CommonsService,
@@ -95,4 +75,4 @@ export function provideCommons(config, ...features) {
95
75
  });
96
76
  return providers;
97
77
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvcmUvc3JjL3Byb3ZpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDNUUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx3QkFBd0IsRUFBc0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUVwRyxNQUFNLENBQU4sSUFBWSxzQkFJWDtBQUpELFdBQVksc0JBQXNCO0lBQzlCLHVFQUFNLENBQUE7SUFDTiw2RUFBUyxDQUFBO0lBQ1QsMkZBQWdCLENBQUE7QUFDcEIsQ0FBQyxFQUpXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFJakM7QUFPRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQTRCLEVBQUUsR0FBRyxRQUEwQjtJQUN0RixNQUFNLFNBQVMsR0FBZTtRQUMxQixtQkFBbUI7UUFDbkIsYUFBYTtRQUNiLGNBQWM7UUFDZCxtQkFBbUI7UUFFbkIsVUFBVTtRQUNWLFFBQVE7UUFFUixRQUFRO1FBQ1IsV0FBVztRQUNYLFlBQVk7UUFDWixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLFVBQVU7UUFDVixZQUFZO1FBQ1osZUFBZTtRQUNmLFlBQVk7UUFFWixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUVuQjtZQUNJLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsUUFBUSxFQUFFLE1BQU07U0FDbkI7UUFDRDtZQUNJLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1NBQ3ZDO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLEVBQUU7U0FDdEQ7UUFDRDtZQUNJLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSwwQkFBMEI7WUFDdEMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDO1lBQ3ZDLEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNJLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFO1NBQ3hDO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNJLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVk7U0FDakM7UUFDRDtZQUNJLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFFBQVEsRUFBRSxtQkFBbUI7U0FDaEM7S0FDSixDQUFDO0lBRUYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNqQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBCYWNrZW5kfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0FQUF9JTklUSUFMSVpFUiwgRXJyb3JIYW5kbGVyLCBQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcblxuaW1wb3J0IHtDb21tb25zRXJyb3JIYW5kbGVyfSBmcm9tICcuL2Vycm9yL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHtMb2dQdWJsaXNoZXJDb25zb2xlU2VydmljZX0gZnJvbSAnLi9sb2cvbG9nLXB1Ymxpc2hlci1jb25zb2xlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0Jvb2xlYW5QaXBlfSBmcm9tICcuL3BpcGVzL2Jvb2xlYW4ucGlwZSc7XG5pbXBvcnQge0NsYXNzTWFwUGlwZX0gZnJvbSAnLi9waXBlcy9jbGFzcy1tYXAucGlwZSc7XG5pbXBvcnQge0VudW1lcmF0ZUFzeW5jUGlwZX0gZnJvbSAnLi9waXBlcy9lbnVtZXJhdGUtYXN5bmMucGlwZSc7XG5pbXBvcnQge0VudW1lcmF0ZVBpcGV9IGZyb20gJy4vcGlwZXMvZW51bWVyYXRlLnBpcGUnO1xuaW1wb3J0IHtHZXR0ZXJQaXBlfSBmcm9tICcuL3BpcGVzL2dldHRlci5waXBlJztcbmltcG9ydCB7SnNvblBhdGhQaXBlfSBmcm9tICcuL3BpcGVzL2pzb24tcGF0aC5waXBlJztcbmltcG9ydCB7UGFyYW1ldHJpemVQaXBlfSBmcm9tICcuL3BpcGVzL3BhcmFtZXRyaXplLnBpcGUnO1xuaW1wb3J0IHtUZW1wbGF0ZVBpcGV9IGZyb20gJy4vcGlwZXMvdGVtcGxhdGUucGlwZSc7XG5pbXBvcnQge1R5cGVSZWdpc3RyeX0gZnJvbSAnLi9yZWdpc3RyeS90eXBlLXJlZ2lzdHJ5JztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJy4vc2VjdXJpdHkvcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc0luaXRTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtaW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc1JvdXRlclNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge2NvbW1vbnNJbml0aWFsaXplclByb3ZpZGVyfSBmcm9tICcuL3NlcnZpY2VzL3Byb3ZpZGVycy9jb21tb25zLWluaXQucHJvdmlkZXInO1xuaW1wb3J0IHtCUk9XU0VSX1NUT1JBR0VfSVR9IGZyb20gJy4vc2VydmljZXMvdG9rZW5zL2Jyb3dzZXItc3RvcmFnZS50b2tlbic7XG5pbXBvcnQge0xPR19QVUJMSVNIRVJTfSBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9sb2ctcHVibGlzaGVyLnRva2VuJztcbmltcG9ydCB7Q09NTU9OU19NT0RVTEVfQ09ORklHX0lULCBDb21tb25zTW9kdWxlQ29uZmlnfSBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9tb2R1bGUtY29uZmlnLnRva2VuJztcblxuZXhwb3J0IGVudW0gQ29tbW9uc0ZlYXR1cmVUeXBlRW51bSB7XG4gICAgTGF5b3V0LFxuICAgIFRhYmxldmlldyxcbiAgICBEYXRhQXBpQXNDbGFzc1YxXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uc0ZlYXR1cmUge1xuICAgIHR5cGU6IENvbW1vbnNGZWF0dXJlVHlwZUVudW07XG4gICAgcHJvdmlkZXJzOiBQcm92aWRlcltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbW1vbnMoY29uZmlnPzogQ29tbW9uc01vZHVsZUNvbmZpZywgLi4uZmVhdHVyZXM6IENvbW1vbnNGZWF0dXJlW10pOiBQcm92aWRlcltdIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAgICAgIC8vIHByaW1lbmcgc2VydmljZXNcbiAgICAgICAgRGlhbG9nU2VydmljZSxcbiAgICAgICAgTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIENvbmZpcm1hdGlvblNlcnZpY2UsXG5cbiAgICAgICAgLy8gYW5ndWxhclxuICAgICAgICBEYXRlUGlwZSxcblxuICAgICAgICAvLyBwaXBlc1xuICAgICAgICBCb29sZWFuUGlwZSxcbiAgICAgICAgQ2xhc3NNYXBQaXBlLFxuICAgICAgICBFbnVtZXJhdGVQaXBlLFxuICAgICAgICBFbnVtZXJhdGVBc3luY1BpcGUsXG4gICAgICAgIEdldHRlclBpcGUsXG4gICAgICAgIEpzb25QYXRoUGlwZSxcbiAgICAgICAgUGFyYW1ldHJpemVQaXBlLFxuICAgICAgICBUZW1wbGF0ZVBpcGUsXG5cbiAgICAgICAgLy8gc2VydmljZXNcbiAgICAgICAgQ29tbW9uc0luaXRTZXJ2aWNlLFxuICAgICAgICBDb21tb25zU2VydmljZSxcbiAgICAgICAgQ29tbW9uc1JvdXRlclNlcnZpY2UsXG4gICAgICAgIFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCxcbiAgICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVHlwZVJlZ2lzdHJ5LFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gVHlwZVJlZ2lzdHJ5LmdldCgpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZS5nZXQoKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBjb21tb25zSW5pdGlhbGl6ZXJQcm92aWRlcixcbiAgICAgICAgICAgIGRlcHM6IFtIdHRwQmFja2VuZCwgQ29tbW9uc0luaXRTZXJ2aWNlXSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBMb2dnZXJTZXJ2aWNlLmdldCgpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExPR19QVUJMSVNIRVJTLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IExvZ1B1Ymxpc2hlckNvbnNvbGVTZXJ2aWNlLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQlJPV1NFUl9TVE9SQUdFX0lULFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbG9jYWxTdG9yYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEVycm9ySGFuZGxlcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBDb21tb25zRXJyb3JIYW5kbGVyXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgZmVhdHVyZXMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgcHJvdmlkZXJzLnB1c2goLi4uZi5wcm92aWRlcnMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3ZpZGVycztcbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvcmUvc3JjL3Byb3ZpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsd0JBQXdCLEVBQXNCLE1BQU0sdUNBQXVDLENBQUM7QUFFcEcsTUFBTSxDQUFOLElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUM5Qix1RUFBTSxDQUFBO0lBQ04sNkVBQVMsQ0FBQTtJQUNULDJGQUFnQixDQUFBO0FBQ3BCLENBQUMsRUFKVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBSWpDO0FBT0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUE0QixFQUFFLEdBQUcsUUFBMEI7SUFDdEYsTUFBTSxTQUFTLEdBQWU7UUFDMUIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixjQUFjO1FBQ2QsbUJBQW1CO1FBRW5CLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBRW5CO1lBQ0ksT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxRQUFRLEVBQUUsTUFBTTtTQUNuQjtRQUNEO1lBQ0ksT0FBTyxFQUFFLFlBQVk7WUFDckIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7U0FDdkM7UUFDRDtZQUNJLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsRUFBRTtTQUN0RDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLDBCQUEwQjtZQUN0QyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUM7WUFDdkMsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGFBQWE7WUFDdEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUU7U0FDeEM7UUFDRDtZQUNJLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWTtTQUNqQztRQUNEO1lBQ0ksT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLG1CQUFtQjtTQUNoQztLQUNKLENBQUM7SUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQmFja2VuZH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIEVycm9ySGFuZGxlciwgUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5cbmltcG9ydCB7Q29tbW9uc0Vycm9ySGFuZGxlcn0gZnJvbSAnLi9lcnJvci9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7TG9nUHVibGlzaGVyQ29uc29sZVNlcnZpY2V9IGZyb20gJy4vbG9nL2xvZy1wdWJsaXNoZXItY29uc29sZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi9sb2cvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtUeXBlUmVnaXN0cnl9IGZyb20gJy4vcmVnaXN0cnkvdHlwZS1yZWdpc3RyeSc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNJbml0U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLWluaXQuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNSb3V0ZXJTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtjb21tb25zSW5pdGlhbGl6ZXJQcm92aWRlcn0gZnJvbSAnLi9zZXJ2aWNlcy9wcm92aWRlcnMvY29tbW9ucy1pbml0LnByb3ZpZGVyJztcbmltcG9ydCB7QlJPV1NFUl9TVE9SQUdFX0lUfSBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9icm93c2VyLXN0b3JhZ2UudG9rZW4nO1xuaW1wb3J0IHtMT0dfUFVCTElTSEVSU30gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvbG9nLXB1Ymxpc2hlci50b2tlbic7XG5pbXBvcnQge0NPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwgQ29tbW9uc01vZHVsZUNvbmZpZ30gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvbW9kdWxlLWNvbmZpZy50b2tlbic7XG5cbmV4cG9ydCBlbnVtIENvbW1vbnNGZWF0dXJlVHlwZUVudW0ge1xuICAgIExheW91dCxcbiAgICBUYWJsZXZpZXcsXG4gICAgRGF0YUFwaUFzQ2xhc3NWMVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNGZWF0dXJlIHtcbiAgICB0eXBlOiBDb21tb25zRmVhdHVyZVR5cGVFbnVtO1xuICAgIHByb3ZpZGVyczogUHJvdmlkZXJbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVDb21tb25zKGNvbmZpZz86IENvbW1vbnNNb2R1bGVDb25maWcsIC4uLmZlYXR1cmVzOiBDb21tb25zRmVhdHVyZVtdKTogUHJvdmlkZXJbXSB7XG4gICAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICAgICAgICAvLyBwcmltZW5nIHNlcnZpY2VzXG4gICAgICAgIERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBDb25maXJtYXRpb25TZXJ2aWNlLFxuXG4gICAgICAgIC8vIHNlcnZpY2VzXG4gICAgICAgIENvbW1vbnNJbml0U2VydmljZSxcbiAgICAgICAgQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIENvbW1vbnNSb3V0ZXJTZXJ2aWNlLFxuICAgICAgICBQZXJtaXNzaW9uU2VydmljZSxcbiAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDT01NT05TX01PRFVMRV9DT05GSUdfSVQsXG4gICAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFR5cGVSZWdpc3RyeSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IFR5cGVSZWdpc3RyeS5nZXQoKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogY29tbW9uc0luaXRpYWxpemVyUHJvdmlkZXIsXG4gICAgICAgICAgICBkZXBzOiBbSHR0cEJhY2tlbmQsIENvbW1vbnNJbml0U2VydmljZV0sXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gTG9nZ2VyU2VydmljZS5nZXQoKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMT0dfUFVCTElTSEVSUyxcbiAgICAgICAgICAgIHVzZUNsYXNzOiBMb2dQdWJsaXNoZXJDb25zb2xlU2VydmljZSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEJST1dTRVJfU1RPUkFHRV9JVCxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGxvY2FsU3RvcmFnZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFcnJvckhhbmRsZXIsXG4gICAgICAgICAgICB1c2VDbGFzczogQ29tbW9uc0Vycm9ySGFuZGxlclxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGZlYXR1cmVzLmZvckVhY2goZiA9PiB7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKC4uLmYucHJvdmlkZXJzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm92aWRlcnM7XG59XG4iXX0=
@@ -59,4 +59,4 @@ export function findReflectEnumName(enumType) {
59
59
  });
60
60
  return null;
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1lbnVtLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvcmVmbGVjdC90eXBlLWVudW0tbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUcxQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHcEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztBQUU3Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFVBQTBCLEVBQUUsUUFBZ0I7SUFDOUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLEVBQUU7UUFDekQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDcEU7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxVQUFvQixFQUFFLFFBQWdCO0lBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxFQUFFO1FBQ3pELE9BQU8sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3BFO0FBQ0wsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxJQUFtQjtJQUN0RCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1AsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0QsSUFBSSxRQUFRLEVBQUU7UUFDVixPQUFPLFFBQVEsQ0FBQztLQUNuQjtJQUNELGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsOEdBQThHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztBQUNyQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQW9CO0lBQ3RELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFFBQWtCO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkUsSUFBSSxRQUFRLEVBQUU7UUFDVixPQUFPLFFBQVEsQ0FBQztLQUNuQjtJQUNELGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMseURBQXlELE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDbEosSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixRQUFRLEVBQUUsUUFBUTtLQUNyQixDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuaW1wb3J0IHtFbnVtVHlwZX0gZnJvbSAnLi4vaGVscGVycy90eXBlLWhlbHBlcnMnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2cvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL21vZGVscy9jbGFzcy1zZXJ2aWNlLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IHJlZmxlY3RUeXBlTmFtZUtleSA9ICd0eXBlTmFtZSc7XG5leHBvcnQgY29uc3QgcmVmbGVjdEVudW1OYW1lS2V5ID0gJ2VudW1OYW1lJztcblxuLyoqXG4gKiBEZWZpbmVzIHR5cGUgbmFtZSBkZWNvcmF0b3IuXG4gKiBAcGFyYW0gdGFyZ2V0VHlwZSBjbGFzcy5cbiAqIEBwYXJhbSB0eXBlTmFtZSBOYW1lIG9mIHRoZSB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lUmVmbGVjdFR5cGVOYW1lKHRhcmdldFR5cGU6IENsYXNzVHlwZTxhbnk+LCB0eXBlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFSZWZsZWN0Lmhhc093bk1ldGFkYXRhKHJlZmxlY3RUeXBlTmFtZUtleSwgdGFyZ2V0VHlwZSkpIHtcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShyZWZsZWN0VHlwZU5hbWVLZXksIHR5cGVOYW1lLCB0YXJnZXRUeXBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyBlbnVtIG5hbWUgZGVjb3JhdG9yLlxuICogQHBhcmFtIHRhcmdldFR5cGUgZW51bSBvYmplY3QuXG4gKiBAcGFyYW0gZW51bU5hbWUgTmFtZSBvZiB0aGUgZW51bS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVJlZmxlY3RFbnVtTmFtZSh0YXJnZXRUeXBlOiBFbnVtVHlwZSwgZW51bU5hbWU6IHN0cmluZykge1xuICAgIGlmICghUmVmbGVjdC5oYXNPd25NZXRhZGF0YShyZWZsZWN0RW51bU5hbWVLZXksIHRhcmdldFR5cGUpKSB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEocmVmbGVjdEVudW1OYW1lS2V5LCBlbnVtTmFtZSwgdGFyZ2V0VHlwZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEdldHMgdHlwZSBuYW1lIGZyb20gcmVmbGVjdCBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0eXBlIENsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmxlY3RUeXBlTmFtZTxUPih0eXBlPzogQ2xhc3NUeXBlPFQ+KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0eXBlTmFtZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEocmVmbGVjdFR5cGVOYW1lS2V5LCB0eXBlKTtcbiAgICBpZiAodHlwZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgIH1cbiAgICBMb2dnZXJTZXJ2aWNlLmdldCgpLmRlYnVnKCdXQVJOSU5HOiBSZWZsZWN0IG1ldGFkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZCBmb3IgdHlwZSwgeW91IG1pZ2h0IGV4cGVyaWVuY2Ugc29tZSBpc3N1ZXMgaW4gcHJvZHVjdGlvbiBidWlsZC4nLCB0eXBlPy5uYW1lKTtcbiAgICByZXR1cm4gdHlwZS5uYW1lO1xufVxuXG4vKipcbiAqIEdldHMgdHlwZSBuYW1lIGZyb20gZWl0aGVyIGRlY29yYXRvciBvciByZWZsZWN0IG1ldGFkYXRhLlxuICogQHBhcmFtIHR5cGUgQ2xhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZsZWN0VHlwZU5hbWVFeGlzdHModHlwZTogQ2xhc3NUeXBlPGFueT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShyZWZsZWN0VHlwZU5hbWVLZXksIHR5cGUpO1xufVxuXG4vKipcbiAqIEdldHMgZW51bSBuYW1lIGZyb20gZWl0aGVyIGRlY29yYXRvciBvciByZWZsZWN0IG1ldGFkYXRhLlxuICogQHBhcmFtIGVudW1UeXBlIENsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmxlY3RFbnVtTmFtZShlbnVtVHlwZTogRW51bVR5cGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBlbnVtTmFtZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEocmVmbGVjdEVudW1OYW1lS2V5LCBlbnVtVHlwZSk7XG4gICAgaWYgKGVudW1OYW1lKSB7XG4gICAgICAgIHJldHVybiBlbnVtTmFtZTtcbiAgICB9XG4gICAgTG9nZ2VyU2VydmljZS5nZXQoKS5kZWJ1ZyhgV0FSTklORzogUmVmbGVjdCBtZXRhZGF0YSBjb3VsZCBub3QgYmUgZm91bmQgZm9yIGVudW0gJHt0eXBlb2YgZW51bVR5cGUgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXMoZW51bVR5cGUpIDogZW51bVR5cGV9YCwge1xuICAgICAgICBuYW1lOiAnVHlwZVV0aWxzRXJyb3InLFxuICAgICAgICBlbnVtVHlwZTogZW51bVR5cGVcbiAgICB9KTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1lbnVtLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvcmVmbGVjdC90eXBlLWVudW0tbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUcxQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHcEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztBQUU3Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFVBQTBCLEVBQUUsUUFBZ0I7SUFDOUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUMxRCxPQUFPLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRSxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsVUFBb0IsRUFBRSxRQUFnQjtJQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFJLElBQW1CO0lBQ3RELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9ELElBQUksUUFBUSxFQUFFLENBQUM7UUFDWCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBQ0QsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyw4R0FBOEcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBb0I7SUFDdEQsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsUUFBa0I7SUFDbEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ1gsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNELGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMseURBQXlELE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDbEosSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixRQUFRLEVBQUUsUUFBUTtLQUNyQixDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuaW1wb3J0IHtFbnVtVHlwZX0gZnJvbSAnLi4vaGVscGVycy90eXBlLWhlbHBlcnMnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2cvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL21vZGVscy9jbGFzcy1zZXJ2aWNlLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IHJlZmxlY3RUeXBlTmFtZUtleSA9ICd0eXBlTmFtZSc7XG5leHBvcnQgY29uc3QgcmVmbGVjdEVudW1OYW1lS2V5ID0gJ2VudW1OYW1lJztcblxuLyoqXG4gKiBEZWZpbmVzIHR5cGUgbmFtZSBkZWNvcmF0b3IuXG4gKiBAcGFyYW0gdGFyZ2V0VHlwZSBjbGFzcy5cbiAqIEBwYXJhbSB0eXBlTmFtZSBOYW1lIG9mIHRoZSB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lUmVmbGVjdFR5cGVOYW1lKHRhcmdldFR5cGU6IENsYXNzVHlwZTxhbnk+LCB0eXBlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFSZWZsZWN0Lmhhc093bk1ldGFkYXRhKHJlZmxlY3RUeXBlTmFtZUtleSwgdGFyZ2V0VHlwZSkpIHtcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShyZWZsZWN0VHlwZU5hbWVLZXksIHR5cGVOYW1lLCB0YXJnZXRUeXBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyBlbnVtIG5hbWUgZGVjb3JhdG9yLlxuICogQHBhcmFtIHRhcmdldFR5cGUgZW51bSBvYmplY3QuXG4gKiBAcGFyYW0gZW51bU5hbWUgTmFtZSBvZiB0aGUgZW51bS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVJlZmxlY3RFbnVtTmFtZSh0YXJnZXRUeXBlOiBFbnVtVHlwZSwgZW51bU5hbWU6IHN0cmluZykge1xuICAgIGlmICghUmVmbGVjdC5oYXNPd25NZXRhZGF0YShyZWZsZWN0RW51bU5hbWVLZXksIHRhcmdldFR5cGUpKSB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEocmVmbGVjdEVudW1OYW1lS2V5LCBlbnVtTmFtZSwgdGFyZ2V0VHlwZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEdldHMgdHlwZSBuYW1lIGZyb20gcmVmbGVjdCBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0eXBlIENsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmxlY3RUeXBlTmFtZTxUPih0eXBlPzogQ2xhc3NUeXBlPFQ+KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0eXBlTmFtZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEocmVmbGVjdFR5cGVOYW1lS2V5LCB0eXBlKTtcbiAgICBpZiAodHlwZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgIH1cbiAgICBMb2dnZXJTZXJ2aWNlLmdldCgpLmRlYnVnKCdXQVJOSU5HOiBSZWZsZWN0IG1ldGFkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZCBmb3IgdHlwZSwgeW91IG1pZ2h0IGV4cGVyaWVuY2Ugc29tZSBpc3N1ZXMgaW4gcHJvZHVjdGlvbiBidWlsZC4nLCB0eXBlPy5uYW1lKTtcbiAgICByZXR1cm4gdHlwZS5uYW1lO1xufVxuXG4vKipcbiAqIEdldHMgdHlwZSBuYW1lIGZyb20gZWl0aGVyIGRlY29yYXRvciBvciByZWZsZWN0IG1ldGFkYXRhLlxuICogQHBhcmFtIHR5cGUgQ2xhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZsZWN0VHlwZU5hbWVFeGlzdHModHlwZTogQ2xhc3NUeXBlPGFueT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShyZWZsZWN0VHlwZU5hbWVLZXksIHR5cGUpO1xufVxuXG4vKipcbiAqIEdldHMgZW51bSBuYW1lIGZyb20gZWl0aGVyIGRlY29yYXRvciBvciByZWZsZWN0IG1ldGFkYXRhLlxuICogQHBhcmFtIGVudW1UeXBlIENsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmxlY3RFbnVtTmFtZShlbnVtVHlwZTogRW51bVR5cGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBlbnVtTmFtZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEocmVmbGVjdEVudW1OYW1lS2V5LCBlbnVtVHlwZSk7XG4gICAgaWYgKGVudW1OYW1lKSB7XG4gICAgICAgIHJldHVybiBlbnVtTmFtZTtcbiAgICB9XG4gICAgTG9nZ2VyU2VydmljZS5nZXQoKS5kZWJ1ZyhgV0FSTklORzogUmVmbGVjdCBtZXRhZGF0YSBjb3VsZCBub3QgYmUgZm91bmQgZm9yIGVudW0gJHt0eXBlb2YgZW51bVR5cGUgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXMoZW51bVR5cGUpIDogZW51bVR5cGV9YCwge1xuICAgICAgICBuYW1lOiAnVHlwZVV0aWxzRXJyb3InLFxuICAgICAgICBlbnVtVHlwZTogZW51bVR5cGVcbiAgICB9KTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
@@ -103,4 +103,4 @@ export class TypeRegistry {
103
103
  }
104
104
  }
105
105
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3JlZ2lzdHJ5L3R5cGUtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRCxPQUFPLEVBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUd2SSxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUVxQixpQkFBWSxHQUFHLGNBQWMsQ0FBQztRQUM5QixhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQW9CLEVBQUUsQ0FBQztJQW1IcEQsQ0FBQzthQXRIa0IsY0FBUyxHQUFpQixJQUFJLFlBQVksRUFBRSxBQUFuQyxDQUFvQztJQUs1RCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRztRQUNiLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sa0NBQWtDLENBQUMsSUFBb0IsRUFBRSxhQUFxQjtRQUNqRixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25GLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLGFBQXFCO1FBQ2xFLE1BQU0sYUFBYSxHQUFH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QztJQUVNLGFBQWEsQ0FBQyxLQUFzQjtRQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBa0IsRUFBRSxRQUFnQjtRQUNwRCxrQ0FBa0M7UUFDbEMscUJBQXFCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUNoRCxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLG9CQUFvQixRQUFRLHdDQUF3QyxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hJO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUN0QztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VudW1UeXBlfSBmcm9tICcuLi9oZWxwZXJzL3R5cGUtaGVscGVycyc7XG5pbXBvcnQge0xvZ0xldmVsRW51bX0gZnJvbSAnLi4vbG9nL2xvZy5tb2RlbCc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NsYXNzQXR0cmlidXRlRGVmfSBmcm9tICcuLi9tb2RlbHMvY2xhc3MtYXR0cmlidXRlLm1vZGVsJztcbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi9tb2RlbHMvY2xhc3Mtc2VydmljZS5tb2RlbCc7XG5pbXBvcnQge2RlZmluZVJlZmxlY3RFbnVtTmFtZSwgZGVmaW5lUmVmbGVjdFR5cGVOYW1lLCBmaW5kUmVmbGVjdFR5cGVOYW1lLCByZWZsZWN0VHlwZU5hbWVFeGlzdHN9IGZyb20gJy4uL3JlZmxlY3QvdHlwZS1lbnVtLW1ldGFkYXRhJztcbmltcG9ydCB7UmVnaXN0cnlFbnVtTWFwLCBSZWdpc3RyeVR5cGVNYXB9IGZyb20gJy4vcmVnaXN0cnkubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgVHlwZVJlZ2lzdHJ5IHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFR5cGVSZWdpc3RyeSA9IG5ldyBUeXBlUmVnaXN0cnkoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2dDYXRlZ29yeSA9ICdUeXBlUmVnaXN0cnknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3R5cGVNYXA6IFJlZ2lzdHJ5VHlwZU1hcCA9IHt9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1NYXA6IFJlZ2lzdHJ5RW51bU1hcCA9IHt9O1xuXG4gICAgcHVibGljIGdldCB0eXBlTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1NYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtTWFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ubHkgdXNlIG9uZSBpbnN0YW5jZSBvZiBvYmplY3QgKG91dCBvZiBBbmd1bGFyIGNvbnRleHQpXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQoKTogVHlwZVJlZ2lzdHJ5IHtcbiAgICAgICAgcmV0dXJuIFR5cGVSZWdpc3RyeS5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVEZWZpbml0aW9uQnlDbGFzc1R5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyk6IENsYXNzQXR0cmlidXRlRGVmIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lID8gdGhpcy5maW5kQXR0cmlidXRlRGVmaW5pdGlvbih0eXBlTmFtZSwgYXR0cmlidXRlTmFtZSkgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kQXR0cmlidXRlRGVmaW5pdGlvbih0eXBlTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBDbGFzc0F0dHJpYnV0ZURlZiB8IG51bGwge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWZzID0gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24odHlwZU5hbWUpO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSA9PT0gYXR0cmlidXRlTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVzRGVmaW5pdGlvbkJ5Q2xhc3NUeXBlKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogQXJyYXk8Q2xhc3NBdHRyaWJ1dGVEZWY+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lID8gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24odHlwZU5hbWUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZXNEZWZpbml0aW9uKHR5cGVOYW1lOiBzdHJpbmcpOiBBcnJheTxDbGFzc0F0dHJpYnV0ZURlZj4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgdHlwZURlZiA9IHRoaXMuZmluZFR5cGUodHlwZU5hbWUpO1xuICAgICAgICBpZiAoIXR5cGVEZWYgfHwgdHlwZW9mIHR5cGVEZWYuZ2V0QXR0cmlidXRlVHlwZU1hcCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVEZWYuZ2V0QXR0cmlidXRlVHlwZU1hcCgpIGFzIEFycmF5PENsYXNzQXR0cmlidXRlRGVmPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEJ5Q2xhc3NUeXBlKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogYW55IHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKHR5cGUpO1xuICAgICAgICByZXR1cm4gdHlwZU5hbWUgPyB0aGlzLmZpbmRUeXBlKHR5cGVOYW1lKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU1hcFt0eXBlTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRFbnVtKGVudW1OYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bU1hcFtlbnVtTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyVHlwZXModHlwZXM6IFJlZ2lzdHJ5VHlwZU1hcCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0eXBlcykge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlclR5cGUodHlwZXNba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclR5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4sIG9wdFR5cGVOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIC8vIHRyeSB0byBmaW5kIG5hbWUgZnJvbSBtZXRhZGF0YVxuICAgICAgICBsZXQgdHlwZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlZmxlY3RUeXBlTmFtZUV4aXN0cyh0eXBlKSkge1xuICAgICAgICAgICAgLy8gZGVmaW5lZCBuYW1lIGZyb20gb3B0aW9uYWwgdHlwZSBuYW1lXG4gICAgICAgICAgICB0eXBlTmFtZSA9IGZpbmRSZWZsZWN0VHlwZU5hbWUodHlwZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdFR5cGVOYW1lKSB7XG4gICAgICAgICAgICB0eXBlTmFtZSA9IG9wdFR5cGVOYW1lO1xuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbWV0YWRhdGFcbiAgICAgICAgICAgIGRlZmluZVJlZmxlY3RUeXBlTmFtZSh0eXBlLCB0eXBlTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXR5cGVOYW1lKSB7XG4gICAgICAgICAgICAvLyB0aGlzLl9sb2dnZXIuZGVidWcoYFdBUk5JTkc6IHJlZ2lzdGVyaW5nIHR5cGUgJHt0eXBlfSBmYWlsZWQsIGJlY2F1c2UgdHlwZU5hbWUgY291bGQgbm90IGJlIGRldGVybWluZWQgYW5kIG9wdGlvbmFsIG5hbWUgd2FzIG5vdCBwcm92aWRlZC5gKTtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkubG9nKFxuICAgICAgICAgICAgICAgIGBXQVJOSU5HOiByZWdpc3RlcmluZyB0eXBlICR7dHlwZX0gZmFpbGVkLCBiZWNhdXNlIHR5cGVOYW1lIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGFuZCBvcHRpb25hbCBuYW1lIHdhcyBub3QgcHJvdmlkZWQuYCxcbiAgICAgICAgICAgICAgICBMb2dMZXZlbEVudW0uRGVidWcsXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nQ2F0ZWdvcnlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90eXBlTWFwW3R5cGVOYW1lXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX2xvZ2dlci5kZWJ1ZyhgV0FSTklORzogcmVnaXN0ZXJpbmcgdHlwZSAke3R5cGV9IHVuZGVyIGtleSAke3R5cGVOYW1lfSBza2lwcGVkLCBiZWNhdXNlIHR5cGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMga2V5LmApO1xuICAgICAgICAgICAgTG9nZ2VyU2VydmljZS5nZXQoKS5sb2coXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IHJlZ2lzdGVyaW5nIHR5cGUgJHt0eXBlfSB1bmRlciBrZXkgJHt0eXBlTmFtZX0gc2tpcHBlZCwgYmVjYXVzZSB0eXBlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGtleS5gLFxuICAgICAgICAgICAgICAgIExvZ0xldmVsRW51bS5EZWJ1ZyxcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dDYXRlZ29yeVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3R5cGVNYXBbdHlwZU5hbWVdID0gdHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlckVudW1zKGVudW1zOiBSZWdpc3RyeUVudW1NYXApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZW51bXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFbnVtKGVudW1zW2tleV0sIGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJFbnVtKGVudW1UeXBlOiBFbnVtVHlwZSwgZW51bU5hbWU6IHN0cmluZykge1xuICAgICAgICAvLyB0cnkgdG8gZmluZCBuYW1lIGZyb20gZGVjb3JhdG9yXG4gICAgICAgIGRlZmluZVJlZmxlY3RFbnVtTmFtZShlbnVtVHlwZSwgZW51bU5hbWUpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2VudW1NYXBbZW51bU5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgTG9nZ2VyU2VydmljZS5nZXQoKS5sb2coYFJlZ2lzdGVyaW5nIGVudW0gJHtlbnVtTmFtZX0gc2tpcHBlZCwgYmVjYXVzZSBlbnVtIGFscmVhZHkgZXhpc3RzLmAsIExvZ0xldmVsRW51bS5EZWJ1ZywgdGhpcy5fbG9nQ2F0ZWdvcnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW51bU1hcFtlbnVtTmFtZV0gPSBlbnVtVHlwZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3JlZ2lzdHJ5L3R5cGUtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRCxPQUFPLEVBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUd2SSxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUVxQixpQkFBWSxHQUFHLGNBQWMsQ0FBQztRQUM5QixhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQW9CLEVBQUUsQ0FBQztJQW1IcEQsQ0FBQzthQXRIa0IsY0FBUyxHQUFpQixJQUFJLFlBQVksRUFBRSxBQUFuQyxDQUFvQztJQUs1RCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRztRQUNiLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sa0NBQWtDLENBQUMsSUFBb0IsRUFBRSxhQUFxQjtRQUNqRixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25GLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLGFBQXFCO1FBQ2xFLE1BQU0sYUFBYSxHQUFH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WSxDQUNwQixDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFzQjtRQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWtCLEVBQUUsUUFBZ0I7UUFDcEQsa0NBQWtDO1FBQ2xDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNqRCxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLG9CQUFvQixRQUFRLHdDQUF3QyxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pJLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VudW1UeXBlfSBmcm9tICcuLi9oZWxwZXJzL3R5cGUtaGVscGVycyc7XG5pbXBvcnQge0xvZ0xldmVsRW51bX0gZnJvbSAnLi4vbG9nL2xvZy5tb2RlbCc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NsYXNzQXR0cmlidXRlRGVmfSBmcm9tICcuLi9tb2RlbHMvY2xhc3MtYXR0cmlidXRlLm1vZGVsJztcbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi9tb2RlbHMvY2xhc3Mtc2VydmljZS5tb2RlbCc7XG5pbXBvcnQge2RlZmluZVJlZmxlY3RFbnVtTmFtZSwgZGVmaW5lUmVmbGVjdFR5cGVOYW1lLCBmaW5kUmVmbGVjdFR5cGVOYW1lLCByZWZsZWN0VHlwZU5hbWVFeGlzdHN9IGZyb20gJy4uL3JlZmxlY3QvdHlwZS1lbnVtLW1ldGFkYXRhJztcbmltcG9ydCB7UmVnaXN0cnlFbnVtTWFwLCBSZWdpc3RyeVR5cGVNYXB9IGZyb20gJy4vcmVnaXN0cnkubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgVHlwZVJlZ2lzdHJ5IHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFR5cGVSZWdpc3RyeSA9IG5ldyBUeXBlUmVnaXN0cnkoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2dDYXRlZ29yeSA9ICdUeXBlUmVnaXN0cnknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3R5cGVNYXA6IFJlZ2lzdHJ5VHlwZU1hcCA9IHt9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1NYXA6IFJlZ2lzdHJ5RW51bU1hcCA9IHt9O1xuXG4gICAgcHVibGljIGdldCB0eXBlTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1NYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtTWFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ubHkgdXNlIG9uZSBpbnN0YW5jZSBvZiBvYmplY3QgKG91dCBvZiBBbmd1bGFyIGNvbnRleHQpXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQoKTogVHlwZVJlZ2lzdHJ5IHtcbiAgICAgICAgcmV0dXJuIFR5cGVSZWdpc3RyeS5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVEZWZpbml0aW9uQnlDbGFzc1R5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyk6IENsYXNzQXR0cmlidXRlRGVmIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lID8gdGhpcy5maW5kQXR0cmlidXRlRGVmaW5pdGlvbih0eXBlTmFtZSwgYXR0cmlidXRlTmFtZSkgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kQXR0cmlidXRlRGVmaW5pdGlvbih0eXBlTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBDbGFzc0F0dHJpYnV0ZURlZiB8IG51bGwge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWZzID0gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24odHlwZU5hbWUpO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSA9PT0gYXR0cmlidXRlTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVzRGVmaW5pdGlvbkJ5Q2xhc3NUeXBlKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogQXJyYXk8Q2xhc3NBdHRyaWJ1dGVEZWY+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lID8gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24odHlwZU5hbWUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZXNEZWZpbml0aW9uKHR5cGVOYW1lOiBzdHJpbmcpOiBBcnJheTxDbGFzc0F0dHJpYnV0ZURlZj4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgdHlwZURlZiA9IHRoaXMuZmluZFR5cGUodHlwZU5hbWUpO1xuICAgICAgICBpZiAoIXR5cGVEZWYgfHwgdHlwZW9mIHR5cGVEZWYuZ2V0QXR0cmlidXRlVHlwZU1hcCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVEZWYuZ2V0QXR0cmlidXRlVHlwZU1hcCgpIGFzIEFycmF5PENsYXNzQXR0cmlidXRlRGVmPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEJ5Q2xhc3NUeXBlKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogYW55IHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKHR5cGUpO1xuICAgICAgICByZXR1cm4gdHlwZU5hbWUgPyB0aGlzLmZpbmRUeXBlKHR5cGVOYW1lKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU1hcFt0eXBlTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRFbnVtKGVudW1OYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bU1hcFtlbnVtTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyVHlwZXModHlwZXM6IFJlZ2lzdHJ5VHlwZU1hcCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0eXBlcykge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlclR5cGUodHlwZXNba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclR5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4sIG9wdFR5cGVOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIC8vIHRyeSB0byBmaW5kIG5hbWUgZnJvbSBtZXRhZGF0YVxuICAgICAgICBsZXQgdHlwZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlZmxlY3RUeXBlTmFtZUV4aXN0cyh0eXBlKSkge1xuICAgICAgICAgICAgLy8gZGVmaW5lZCBuYW1lIGZyb20gb3B0aW9uYWwgdHlwZSBuYW1lXG4gICAgICAgICAgICB0eXBlTmFtZSA9IGZpbmRSZWZsZWN0VHlwZU5hbWUodHlwZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdFR5cGVOYW1lKSB7XG4gICAgICAgICAgICB0eXBlTmFtZSA9IG9wdFR5cGVOYW1lO1xuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbWV0YWRhdGFcbiAgICAgICAgICAgIGRlZmluZVJlZmxlY3RUeXBlTmFtZSh0eXBlLCB0eXBlTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXR5cGVOYW1lKSB7XG4gICAgICAgICAgICAvLyB0aGlzLl9sb2dnZXIuZGVidWcoYFdBUk5JTkc6IHJlZ2lzdGVyaW5nIHR5cGUgJHt0eXBlfSBmYWlsZWQsIGJlY2F1c2UgdHlwZU5hbWUgY291bGQgbm90IGJlIGRldGVybWluZWQgYW5kIG9wdGlvbmFsIG5hbWUgd2FzIG5vdCBwcm92aWRlZC5gKTtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkubG9nKFxuICAgICAgICAgICAgICAgIGBXQVJOSU5HOiByZWdpc3RlcmluZyB0eXBlICR7dHlwZX0gZmFpbGVkLCBiZWNhdXNlIHR5cGVOYW1lIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGFuZCBvcHRpb25hbCBuYW1lIHdhcyBub3QgcHJvdmlkZWQuYCxcbiAgICAgICAgICAgICAgICBMb2dMZXZlbEVudW0uRGVidWcsXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nQ2F0ZWdvcnlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90eXBlTWFwW3R5cGVOYW1lXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX2xvZ2dlci5kZWJ1ZyhgV0FSTklORzogcmVnaXN0ZXJpbmcgdHlwZSAke3R5cGV9IHVuZGVyIGtleSAke3R5cGVOYW1lfSBza2lwcGVkLCBiZWNhdXNlIHR5cGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMga2V5LmApO1xuICAgICAgICAgICAgTG9nZ2VyU2VydmljZS5nZXQoKS5sb2coXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IHJlZ2lzdGVyaW5nIHR5cGUgJHt0eXBlfSB1bmRlciBrZXkgJHt0eXBlTmFtZX0gc2tpcHBlZCwgYmVjYXVzZSB0eXBlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGtleS5gLFxuICAgICAgICAgICAgICAgIExvZ0xldmVsRW51bS5EZWJ1ZyxcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dDYXRlZ29yeVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3R5cGVNYXBbdHlwZU5hbWVdID0gdHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlckVudW1zKGVudW1zOiBSZWdpc3RyeUVudW1NYXApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZW51bXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFbnVtKGVudW1zW2tleV0sIGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJFbnVtKGVudW1UeXBlOiBFbnVtVHlwZSwgZW51bU5hbWU6IHN0cmluZykge1xuICAgICAgICAvLyB0cnkgdG8gZmluZCBuYW1lIGZyb20gZGVjb3JhdG9yXG4gICAgICAgIGRlZmluZVJlZmxlY3RFbnVtTmFtZShlbnVtVHlwZSwgZW51bU5hbWUpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2VudW1NYXBbZW51bU5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgTG9nZ2VyU2VydmljZS5nZXQoKS5sb2coYFJlZ2lzdGVyaW5nIGVudW0gJHtlbnVtTmFtZX0gc2tpcHBlZCwgYmVjYXVzZSBlbnVtIGFscmVhZHkgZXhpc3RzLmAsIExvZ0xldmVsRW51bS5EZWJ1ZywgdGhpcy5fbG9nQ2F0ZWdvcnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW51bU1hcFtlbnVtTmFtZV0gPSBlbnVtVHlwZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,5 @@
1
- import { CommonsInternalError } from '../error/error.model';
1
+ import { removeRouteEmptyPathSegments } from '../helpers/route';
2
2
  import { permissionGuard } from '../security/permission.guard';
3
- import { RouteUtil } from '../utils/route.util';
4
3
  export class RouteBuilder {
5
4
  constructor(route) {
6
5
  this.routePath = [];
@@ -49,7 +48,7 @@ export class RouteBuilder {
49
48
  }
50
49
  withParent(parent) {
51
50
  this.parent = parent;
52
- this.routePath = RouteUtil.removeEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);
51
+ this.routePath = removeRouteEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);
53
52
  return this;
54
53
  }
55
54
  withBreadcrumb(breadcrumb) {
@@ -165,10 +164,10 @@ export class RouteBuilder {
165
164
  this.withCanActivate(permissionGuard);
166
165
  return this;
167
166
  }
168
- addChild(path, component) {
167
+ addChild(path, component, adjustFn) {
169
168
  const childRouteBuilder = RouteBuilder.create(path, component);
170
- this.addChildBuilder(childRouteBuilder);
171
- return childRouteBuilder;
169
+ adjustFn?.(childRouteBuilder);
170
+ return this.addChildBuilder(childRouteBuilder);
172
171
  }
173
172
  addChildBuilder(builder) {
174
173
  builder.withParent(this);
@@ -178,21 +177,6 @@ export class RouteBuilder {
178
177
  this.children.push(builder);
179
178
  return this;
180
179
  }
181
- toParent() {
182
- if (!this.parent) {
183
- throw new CommonsInternalError('Parent was not provided.', { name: 'RouteBuilder error' });
184
- }
185
- return this.parent;
186
- }
187
- toRoot() {
188
- if (!this.root) {
189
- throw new CommonsInternalError('Root was not provided.', { name: 'RouteBuilderError' });
190
- }
191
- return this.root;
192
- }
193
- finish() {
194
- return this.toRoot();
195
- }
196
180
  build() {
197
181
  const angularRoute = {
198
182
  ...this.route
@@ -260,7 +244,7 @@ export class RouteBuilder {
260
244
  finalChild.routerLink = [finalChild.routerLink];
261
245
  }
262
246
  if (finalChild.routerLink) {
263
- finalChild.routerLink = RouteUtil.removeEmptyPathSegments(finalChild.routerLink);
247
+ finalChild.routerLink = removeRouteEmptyPathSegments(finalChild.routerLink);
264
248
  }
265
249
  return finalChild;
266
250
  };
@@ -274,7 +258,7 @@ export class RouteBuilder {
274
258
  if (typeof menuItemBuild.routerLink === 'string') {
275
259
  menuItemBuild.routerLink = [menuItemBuild.routerLink];
276
260
  }
277
- menuItemBuild.routerLink = RouteUtil.removeEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);
261
+ menuItemBuild.routerLink = removeRouteEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);
278
262
  if (menuItemChildrenBuild.length > 0) {
279
263
  menuItemBuild.items = menuItemChildrenBuild;
280
264
  }
@@ -333,4 +317,4 @@ export class RouteBuilder {
333
317
  return undefined;
334
318
  }
335
319
  }
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3JvdXRlci9yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJOUMsTUFBTSxPQUFPLFlBQVk7SUFpQnJCLFlBQXNCLEtBQVk7UUFmMUIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFxQixFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUduRCxhQUFRLEdBQXdCLEVBQUUsQ0FBQztRQUduQyxxQkFBZ0IsR0FBMkIsRUFBRSxDQUFDO1FBQzlDLDBCQUFxQixHQUEyQixFQUFFLENBQUMsQ0FBQyw4QkFBOEI7UUFRdEYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLFNBQW9CO1FBQ25ELE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUztTQUN2QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO1FBQ2xHLE9BQU8sSUFBSSxZQUFZLENB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QUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO1lBQzVCLHdCQUF3QjtZQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RW52aXJvbm1lbnRQcm92aWRlcnMsIFByb3ZpZGVyLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FuQWN0aXZhdGVGbiwgQ2FuRGVhY3RpdmF0ZUZuLCBEZWZhdWx0RXhwb3J0LCBMb2FkQ2hpbGRyZW4sIFJlc29sdmVGbiwgUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3J9IGZyb20gJy4uL2Vycm9yL2Vycm9yLm1vZGVsJztcbmltcG9ydCB7Q29tbW9uc01lbnVJdGVtfSBmcm9tICcuLi9tb2RlbHMvbWVudS5tb2RlbCc7XG5pbXBvcnQge3Blcm1pc3Npb25HdWFyZH0gZnJvbSAnLi4vc2VjdXJpdHkvcGVybWlzc2lvbi5ndWFyZCc7XG5pbXBvcnQge0FQZXJtaXNzaW9uc30gZnJvbSAnLi4vc2VjdXJpdHkvcGVybWlzc2lvbnMubW9kZWwnO1xuaW1wb3J0IHtSb3V0ZVV0aWx9IGZyb20gJy4uL3V0aWxzL3JvdXRlLnV0aWwnO1xuaW1wb3J0IHtCcmVhZGNydW1iVHlwZSwgQ29tbW9uc1JvdXRlRGF0YX0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHtSb3V0ZXNCdWlsZGVyfSBmcm9tICcuL3JvdXRlcy1idWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFJvdXRlQnVpbGRlciB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlOiBSb3V0ZTtcbiAgICBwcml2YXRlIHJvdXRlUGF0aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByb3RlY3RlZCByb3V0ZURhdGE6IENvbW1vbnNSb3V0ZURhdGEgPSB7YnJlYWRjcnVtYjogbnVsbH07XG4gICAgcHJpdmF0ZSByb290PzogUm91dGVzQnVpbGRlcjtcbiAgICBwcml2YXRlIHBhcmVudD86IFJvdXRlQnVpbGRlcjtcbiAgICBwcml2YXRlIGNoaWxkcmVuOiBBcnJheTxSb3V0ZUJ1aWxkZXI+ID0gW107XG5cbiAgICBwcml2YXRlIG1lbnVJdGVtPzogQ29tbW9uc01lbnVJdGVtO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DaGlsZHJlbjogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IFtdO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DaGlsZHJlbkFmdGVyOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gW107IC8vIGFwcGVuZCBhZnRlciByb3V0ZSBjaGlsZHJlblxuXG4gICAgcHJpdmF0ZSBicmVhZGNydW1iPzogQnJlYWRjcnVtYlR5cGU7XG4gICAgcHJpdmF0ZSBwYWdlVGl0bGU/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHJvdXRlOiBSb3V0ZSkge1xuICAgICAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnBhdGggJiYgdGhpcy5yb3V0ZS5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVQYXRoID0gW3RoaXMucm91dGUucGF0aF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIoe1xuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICByZWRpcmVjdFRvOiByZWRpcmVjdFRvLFxuICAgICAgICAgICAgcGF0aE1hdGNoOiBwYXRoTWF0Y2hcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVMYXp5Um91dGVNb2R1bGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTWF0Y2g/OiBBcnJheTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDaGlsZHJlbjogbG9hZENoaWxkcmVufTtcbiAgICAgICAgaWYgKGNhbk1hdGNoPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJvdXRlLmNhbk1hdGNoID0gY2FuTWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTGF6eVJvdXRlQ29tcG9uZW50KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+LFxuICAgICAgICBjYW5NYXRjaD86IEFycmF5PGFueT5cbiAgICApOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCByb3V0ZTogUm91dGUgPSB7cGF0aDogcGF0aCwgbG9hZENvbXBvbmVudDogbG9hZENvbXBvbmVudH07XG4gICAgICAgIGlmIChjYW5NYXRjaD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByb3V0ZS5jYW5NYXRjaCA9IGNhbk1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21Sb3V0ZShyb3V0ZTogUm91dGUpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcihyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb290KHJvdXRlc0J1aWxkZXI6IFJvdXRlc0J1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb290ID0gcm91dGVzQnVpbGRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQYXJlbnQocGFyZW50OiBSb3V0ZUJ1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucm91dGVQYXRoID0gUm91dGVVdGlsLnJlbW92ZUVtcHR5UGF0aFNlZ21lbnRzKFsuLi50aGlzLnBhcmVudC5yb3V0ZVBhdGgsIHRoaXMucm91dGUucGF0aCA/PyAnJ10pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJyZWFkY3J1bWIoYnJlYWRjcnVtYjogQnJlYWRjcnVtYlR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5icmVhZGNydW1iID0gYnJlYWRjcnVtYjtcbiAgICAgICAgdGhpcy5yb3V0ZURhdGEuYnJlYWRjcnVtYiA9IGJyZWFkY3J1bWI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGFnZVRpdGxlKHBhZ2VUaXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlID0gcGFnZVRpdGxlO1xuICAgICAgICB0aGlzLnJvdXRlRGF0YS5wYWdlVGl0bGUgPSBwYWdlVGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVkaXJlY3RUbyhyZWRpcmVjdFRvOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5yZWRpcmVjdFRvID0gcmVkaXJlY3RUbztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQYXRoTWF0Y2gocGF0aE1hdGNoOiAnZnVsbCcgfCAncHJlZml4Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlLnBhdGhNYXRjaCA9IHBhdGhNYXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMud2l0aFBhZ2VUaXRsZSh0aXRsZSk7XG4gICAgICAgIHRoaXMud2l0aEJyZWFkY3J1bWIodGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENhbkFjdGl2YXRlKGRpVG9rZW46IENhbkFjdGl2YXRlRm4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkFjdGl2YXRlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZS5wdXNoKGRpVG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENhbkRlYWN0aXZhdGUoZGlUb2tlbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZS5wdXNoKGRpVG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlc29sdmVyKGRpVG9rZW46IFJlc29sdmVGbjxhbnk+LCBuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLnJlc29sdmUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUucmVzb2x2ZSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUucmVzb2x2ZVtuYW1lXSA9IGRpVG9rZW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUHJvdmlkZXIocHJvdmlkZXI6IFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLnByb3ZpZGVycykge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5wcm92aWRlcnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlLnByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhKGRhdGE6IENvbW1vbnNSb3V0ZURhdGEpOiB0aGlzIHtcbiAgICAgICAgaWYgKCFkYXRhLmJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgIGRhdGEuYnJlYWRjcnVtYiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbW1vbnNNZW51SXRlbShtZW51SXRlbTogQ29tbW9uc01lbnVJdGVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNZW51SXRlbShpY29uPzogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4sIGJyZWFkY3J1bWIgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtID0gdGhpcy5jcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluayk7XG4gICAgICAgIGlmIChicmVhZGNydW1iICYmIGxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhCcmVhZGNydW1iKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbWVudSBpdGVtIGNoaWxkIHRvIHRoaXMgaW5zdGFuY2Ugb2YgbWVudSBpdGVtLlxuICAgICAqIEBwYXJhbSBsYWJlbCBMYWJlbC5cbiAgICAgKiBAcGFyYW0gaWNvbiBJY29uLlxuICAgICAqIEBwYXJhbSByb3V0ZXJMaW5rIFJvdXRlciBsaW5rLlxuICAgICAqIEBwYXJhbSBhZnRlclJvdXRlQ2hpbGRyZW4gSWYgZmFsc2UsIG1lbnUgaXRlbSBjaGlsZCB3aWxsIGJlIGFwcGVuZGVkIGJlZm9yZSByb3V0ZSBjaGlsZHJlbiBtZW51IGl0ZW1zLCBhdCB0aGUgZW5kIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtQ2hpbGQobGFiZWw6IHN0cmluZywgaWNvbj86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4sIGFmdGVyUm91dGVDaGlsZHJlbiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmIChhZnRlclJvdXRlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbkFmdGVyLnB1c2godGhpcy5jcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluaykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2godGhpcy5jcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluaykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbWVudSBpdGVtIGNoaWxkIHRvIHRoaXMgaW5zdGFuY2Ugb2YgbWVudSBpdGVtLlxuICAgICAqIEBwYXJhbSBtZW51SXRlbSBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgbWVudSBpdGVtLlxuICAgICAqIEBwYXJhbSBhZnRlclJvdXRlQ2hpbGRyZW4gSWYgZmFsc2UsIG1lbnUgaXRlbSBjaGlsZCB3aWxsIGJlIGFwcGVuZGVkIGJlZm9yZSByb3V0ZSBjaGlsZHJlbiBtZW51IGl0ZW1zLCBhdCB0aGUgZW5kIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbW1vbnNNZW51SXRlbUNoaWxkKG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0sIGFmdGVyUm91dGVDaGlsZHJlbiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmIChhZnRlclJvdXRlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbkFmdGVyLnB1c2gobWVudUl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2gobWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1MYXp5Q2hpbGRyZW4oKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5tZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVudUl0ZW0ubGF6eUNoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgdGhpcy53aXRoQ2FuQWN0aXZhdGUocGVybWlzc2lvbkd1YXJkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENoaWxkKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCBjaGlsZFJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGUocGF0aCwgY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIoY2hpbGRSb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gY2hpbGRSb3V0ZUJ1aWxkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENoaWxkQnVpbGRlcihidWlsZGVyOiBSb3V0ZUJ1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgYnVpbGRlci53aXRoUGFyZW50KHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICBidWlsZGVyLndpdGhSb290KHRoaXMucm9vdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9QYXJlbnQoKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKCdQYXJlbnQgd2FzIG5vdCBwcm92aWRlZC4nLCB7bmFtZTogJ1JvdXRlQnVpbGRlciBlcnJvcid9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUm9vdCgpOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignUm9vdCB3YXMgbm90IHByb3ZpZGVkLicsIHtuYW1lOiAnUm91dGVCdWlsZGVyRXJyb3InfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluaXNoKCk6IFJvdXRlc0J1aWxkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b1Jvb3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogUm91dGUge1xuICAgICAgICBjb25zdCBhbmd1bGFyUm91dGU6IFJvdXRlID0ge1xuICAgICAgICAgICAgLi4udGhpcy5yb3V0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChhbmd1bGFyUm91dGUuZGF0YSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgLi4uYW5ndWxhclJvdXRlLmRhdGEsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5yb3V0ZURhdGFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuZGF0YSA9IHsuLi50aGlzLnJvdXRlRGF0YX07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhcHBlbmQgcGVybWlzc2lvbnMgaWYgbm90IGFscmVhZHkgaW4gcm91dGUgZGF0YVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucyAmJiAhKGFuZ3VsYXJSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGEpLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICAoYW5ndWxhclJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YSkucGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVudSA9IHRoaXMuYnVpbGRNZW51KCk7XG4gICAgICAgIGlmIChtZW51Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIChhbmd1bGFyUm91dGUuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhKS5tZW51SXRlbXMgPSBtZW51O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCh0aGlzLnJvdXRlLmNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPiAwIHx8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gcm91dGUgaGFzIGNoaWxkcmVuXG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4ucHVzaCguLi50aGlzLnJvdXRlLmNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGRSb3V0ZSBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jaGlsZHJlbi5wdXNoKGNoaWxkUm91dGUuYnVpbGQoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5BY3RpdmF0ZSA9IFsuLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGVDaGlsZCA9IFsuLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlQ2hpbGRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkxvYWQpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5Mb2FkID0gWy4uLnRoaXMucm91dGUuY2FuTG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5yZXNvbHZlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUucmVzb2x2ZSA9IHsuLi50aGlzLnJvdXRlLnJlc29sdmV9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFuZ3VsYXJSb3V0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWVudSgpOiBBcnJheTxDb21tb25zTWVudUl0ZW0+IHtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1CdWlsZDogQ29tbW9uc01lbnVJdGVtIHwgbnVsbCA9IHRoaXMubWVudUl0ZW0gPyB7Li4udGhpcy5tZW51SXRlbX0gOiBudWxsO1xuICAgICAgICBjb25zdCByb3V0ZUNoaWxkcmVuTWVudUl0ZW1zOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gdGhpcy5jaGlsZHJlbi5mbGF0TWFwKGNoaWxkID0+IGNoaWxkLmJ1aWxkTWVudSgpKTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1DaGlsZHJlbjogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IFtdO1xuICAgICAgICBjb25zdCBtZW51SXRlbUNoaWxkcmVuQnVpbGQ6IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSBbXTtcblxuICAgICAgICBpZiAobWVudUl0ZW1CdWlsZD8uaXRlbXMpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5wdXNoKC4uLm1lbnVJdGVtQnVpbGQuaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc01lbnVJdGVtQ2hpbGQgPSAoY2hpbGQ6IENvbW1vbnNNZW51SXRlbSk6IENvbW1vbnNNZW51SXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbENoaWxkOiBDb21tb25zTWVudUl0ZW0gPSB7Li4uY2hpbGR9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaW5hbENoaWxkLnJvdXRlckxpbmsgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID0gdGhpcy5yb3V0ZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbmFsQ2hpbGQucm91dGVyTGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmaW5hbENoaWxkLnJvdXRlckxpbmsgPSBbZmluYWxDaGlsZC5yb3V0ZXJMaW5rXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaW5hbENoaWxkLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgICAgICBmaW5hbENoaWxkLnJvdXRlckxpbmsgPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMoZmluYWxDaGlsZC5yb3V0ZXJMaW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaW5hbENoaWxkO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IG1lbnVJdGVtQ2hpbGRyZW4ucHVzaChwcm9jZXNzTWVudUl0ZW1DaGlsZChjaGlsZCkpKTtcblxuICAgICAgICBjb25zdCBtZW51SXRlbUNoaWxkcmVuQWZ0ZXJCdWlsZDogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IHRoaXMubWVudUl0ZW1DaGlsZHJlbkFmdGVyLm1hcChjaGlsZCA9PiBwcm9jZXNzTWVudUl0ZW1DaGlsZChjaGlsZCkpO1xuXG4gICAgICAgIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5wdXNoKC4uLm1lbnVJdGVtQ2hpbGRyZW4sIC4uLnJvdXRlQ2hpbGRyZW5NZW51SXRlbXMsIC4uLm1lbnVJdGVtQ2hpbGRyZW5BZnRlckJ1aWxkKTtcblxuICAgICAgICBpZiAoIW1lbnVJdGVtQnVpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBtZW51SXRlbUNoaWxkcmVuQnVpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbUJ1aWxkLmxhYmVsID0gbWVudUl0ZW1CdWlsZC5sYWJlbCA/PyB0aGlzLnBhZ2VUaXRsZTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBbbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rXTtcbiAgICAgICAgfVxuICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMobWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID8/IHRoaXMucm91dGVQYXRoKTtcbiAgICAgICAgaWYgKG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLml0ZW1zID0gbWVudUl0ZW1DaGlsZHJlbkJ1aWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLmd1YXJkcykge1xuICAgICAgICAgICAgY29uc3QgZ3VhcmRzID0gdGhpcy5maW5kTWVudUl0ZW1HdWFyZHMoKTtcbiAgICAgICAgICAgIGlmIChndWFyZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQuZ3VhcmRzID0gZ3VhcmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnBlcm1pc3Npb25zID0gdGhpcy5maW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFttZW51SXRlbUJ1aWxkXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPikge1xuICAgICAgICBjb25zdCBtZW51SXRlbTogQ29tbW9uc01lbnVJdGVtID0ge307XG4gICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICBtZW51SXRlbS5pY29uID0gaWNvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLmxhYmVsID0gbGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLnJvdXRlckxpbmsgPSByb3V0ZXJMaW5rO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW51SXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRNZW51SXRlbUd1YXJkcygpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgY29uc3QgZ3VhcmRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGd1YXJkcy5wdXNoKC4uLnRoaXMucm91dGUuY2FuQWN0aXZhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHBhcmVudCBndWFyZHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGVjaXNpb24gdG8gaGlkZSBtZW51IGl0ZW0hXG4gICAgICAgICAgICAvLyBTb21lIHBhcmVudCByb3V0ZXMgbWlnaHQgaGF2ZSBndWFyZHMsIGJ1dCBubyBtZW51IGl0ZW1zLCBzbyB0aGlzIGd1YXJkcyBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCBoZXJlLFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBubyBwYXJlbnQgbWVudSBpdGVtIHRvIGhpZGUuXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5maW5kTWVudUl0ZW1HdWFyZHMoKS5mb3JFYWNoKGcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChndWFyZHMuaW5kZXhPZihnKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGd1YXJkcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZE1lbnVJdGVtUGVybWlzc2lvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtPy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudUl0ZW0ucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVEYXRhLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGFscmVhZHkgYnVpbHRcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlRGF0YS5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3JvdXRlci9yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU83RCxNQUFNLE9BQU8sWUFBWTtJQWlCckIsWUFBc0IsS0FBWTtRQWYxQixjQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQXFCLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO1FBR25ELGFBQVEsR0FBd0IsRUFBRSxDQUFDO1FBR25DLHFCQUFnQixHQUEyQixFQUFFLENBQUM7UUFDOUMsMEJBQXFCLEdBQTJCLEVBQUUsQ0FBQyxDQUFDLDhCQUE4QjtRQVF0RixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLFNBQW9CO1FBQ25ELE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUztTQUN2QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO1FBQ2xHLE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFV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QUNyQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdCLHdCQUF3QjtZQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RW52aXJvbm1lbnRQcm92aWRlcnMsIFByb3ZpZGVyLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FuQWN0aXZhdGVGbiwgQ2FuRGVhY3RpdmF0ZUZuLCBEZWZhdWx0RXhwb3J0LCBMb2FkQ2hpbGRyZW4sIFJlc29sdmVGbiwgUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7cmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50c30gZnJvbSAnLi4vaGVscGVycy9yb3V0ZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtwZXJtaXNzaW9uR3VhcmR9IGZyb20gJy4uL3NlY3VyaXR5L3Blcm1pc3Npb24uZ3VhcmQnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnN9IGZyb20gJy4uL3NlY3VyaXR5L3Blcm1pc3Npb25zLm1vZGVsJztcbmltcG9ydCB7QnJlYWRjcnVtYlR5cGUsIENvbW1vbnNSb3V0ZURhdGF9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7Um91dGVzQnVpbGRlcn0gZnJvbSAnLi9yb3V0ZXMtYnVpbGRlcic7XG5cbmV4cG9ydCB0eXBlIFJvdXRlQnVpbGRlckFkanVzdEZuVHlwZSA9IChidWlsZGVyOiBSb3V0ZUJ1aWxkZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZUJ1aWxkZXIge1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZTogUm91dGU7XG4gICAgcHJpdmF0ZSByb3V0ZVBhdGg6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBwcm90ZWN0ZWQgcm91dGVEYXRhOiBDb21tb25zUm91dGVEYXRhID0ge2JyZWFkY3J1bWI6IG51bGx9O1xuICAgIHByaXZhdGUgcm9vdD86IFJvdXRlc0J1aWxkZXI7XG4gICAgcHJpdmF0ZSBwYXJlbnQ/OiBSb3V0ZUJ1aWxkZXI7XG4gICAgcHJpdmF0ZSBjaGlsZHJlbjogQXJyYXk8Um91dGVCdWlsZGVyPiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBtZW51SXRlbT86IENvbW1vbnNNZW51SXRlbTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSBbXTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2hpbGRyZW5BZnRlcjogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IFtdOyAvLyBhcHBlbmQgYWZ0ZXIgcm91dGUgY2hpbGRyZW5cblxuICAgIHByaXZhdGUgYnJlYWRjcnVtYj86IEJyZWFkY3J1bWJUeXBlO1xuICAgIHByaXZhdGUgcGFnZVRpdGxlPzogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihyb3V0ZTogUm91dGUpIHtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICBpZiAodGhpcy5yb3V0ZS5wYXRoICYmIHRoaXMucm91dGUucGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlUGF0aCA9IFt0aGlzLnJvdXRlLnBhdGhdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICBjb21wb25lbnQ6IGNvbXBvbmVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVJlZGlyZWN0KHBhdGg6IHN0cmluZywgcmVkaXJlY3RUbzogc3RyaW5nLCBwYXRoTWF0Y2g6ICdmdWxsJyB8ICdwcmVmaXgnID0gJ3ByZWZpeCcpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcih7XG4gICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgcmVkaXJlY3RUbzogcmVkaXJlY3RUbyxcbiAgICAgICAgICAgIHBhdGhNYXRjaDogcGF0aE1hdGNoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTGF6eVJvdXRlTW9kdWxlKHBhdGg6IHN0cmluZywgbG9hZENoaWxkcmVuOiBMb2FkQ2hpbGRyZW4sIGNhbk1hdGNoPzogQXJyYXk8YW55Pik6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBSb3V0ZSA9IHtwYXRoOiBwYXRoLCBsb2FkQ2hpbGRyZW46IGxvYWRDaGlsZHJlbn07XG4gICAgICAgIGlmIChjYW5NYXRjaD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByb3V0ZS5jYW5NYXRjaCA9IGNhbk1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUxhenlSb3V0ZUNvbXBvbmVudChcbiAgICAgICAgcGF0aDogc3RyaW5nLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBUeXBlPHVua25vd24+IHwgT2JzZXJ2YWJsZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj4gfCBQcm9taXNlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PixcbiAgICAgICAgY2FuTWF0Y2g/OiBBcnJheTxhbnk+XG4gICAgKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDb21wb25lbnQ6IGxvYWRDb21wb25lbnR9O1xuICAgICAgICBpZiAoY2FuTWF0Y2g/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcm91dGUuY2FuTWF0Y2ggPSBjYW5NYXRjaDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcihyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tUm91dGUocm91dGU6IFJvdXRlKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm9vdChyb3V0ZXNCdWlsZGVyOiBSb3V0ZXNCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvdXRlc0J1aWxkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGFyZW50KHBhcmVudDogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnJvdXRlUGF0aCA9IHJlbW92ZVJvdXRlRW1wdHlQYXRoU2VnbWVudHMoWy4uLnRoaXMucGFyZW50LnJvdXRlUGF0aCwgdGhpcy5yb3V0ZS5wYXRoID8/ICcnXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmJyZWFkY3J1bWIgPSBicmVhZGNydW1iO1xuICAgICAgICB0aGlzLnJvdXRlRGF0YS5icmVhZGNydW1iID0gYnJlYWRjcnVtYjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQYWdlVGl0bGUocGFnZVRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGUgPSBwYWdlVGl0bGU7XG4gICAgICAgIHRoaXMucm91dGVEYXRhLnBhZ2VUaXRsZSA9IHBhZ2VUaXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZWRpcmVjdFRvKHJlZGlyZWN0VG86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBhdGhNYXRjaChwYXRoTWF0Y2g6ICdmdWxsJyB8ICdwcmVmaXgnKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGUucGF0aE1hdGNoID0gcGF0aE1hdGNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy53aXRoUGFnZVRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy53aXRoQnJlYWRjcnVtYih0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2FuQWN0aXZhdGUoZGlUb2tlbjogQ2FuQWN0aXZhdGVGbik6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUuY2FuQWN0aXZhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2FuQWN0aXZhdGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlLmNhbkFjdGl2YXRlLnB1c2goZGlUb2tlbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2FuRGVhY3RpdmF0ZShkaVRva2VuOiBDYW5EZWFjdGl2YXRlRm48YW55Pik6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlLnB1c2goZGlUb2tlbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVzb2x2ZXIoZGlUb2tlbjogUmVzb2x2ZUZuPGFueT4sIG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5yZXNvbHZlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5yZXNvbHZlW25hbWVdID0gZGlUb2tlbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQcm92aWRlcihwcm92aWRlcjogUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUucHJvdmlkZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLnByb3ZpZGVycyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUucHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGEoZGF0YTogQ29tbW9uc1JvdXRlRGF0YSk6IHRoaXMge1xuICAgICAgICBpZiAoIWRhdGEuYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgZGF0YS5icmVhZGNydW1iID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlRGF0YSA9IGRhdGE7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tbW9uc01lbnVJdGVtKG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPiwgYnJlYWRjcnVtYiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW0gPSB0aGlzLmNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKTtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWIgJiYgbGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBtZW51IGl0ZW0gY2hpbGQgdG8gdGhpcyBpbnN0YW5jZSBvZiBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIGxhYmVsIExhYmVsLlxuICAgICAqIEBwYXJhbSBpY29uIEljb24uXG4gICAgICogQHBhcmFtIHJvdXRlckxpbmsgUm91dGVyIGxpbmsuXG4gICAgICogQHBhcmFtIGFmdGVyUm91dGVDaGlsZHJlbiBJZiBmYWxzZSwgbWVudSBpdGVtIGNoaWxkIHdpbGwgYmUgYXBwZW5kZWQgYmVmb3JlIHJvdXRlIGNoaWxkcmVuIG1lbnUgaXRlbXMsIGF0IHRoZSBlbmQgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1DaGlsZChsYWJlbDogc3RyaW5nLCBpY29uPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPiwgYWZ0ZXJSb3V0ZUNoaWxkcmVuID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKGFmdGVyUm91dGVDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuQWZ0ZXIucHVzaCh0aGlzLmNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4ucHVzaCh0aGlzLmNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBtZW51IGl0ZW0gY2hpbGQgdG8gdGhpcyBpbnN0YW5jZSBvZiBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIG1lbnVJdGVtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIGFmdGVyUm91dGVDaGlsZHJlbiBJZiBmYWxzZSwgbWVudSBpdGVtIGNoaWxkIHdpbGwgYmUgYXBwZW5kZWQgYmVmb3JlIHJvdXRlIGNoaWxkcmVuIG1lbnUgaXRlbXMsIGF0IHRoZSBlbmQgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29tbW9uc01lbnVJdGVtQ2hpbGQobWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSwgYWZ0ZXJSb3V0ZUNoaWxkcmVuID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKGFmdGVyUm91dGVDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuQWZ0ZXIucHVzaChtZW51SXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4ucHVzaChtZW51SXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNZW51SXRlbUxhenlDaGlsZHJlbigpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLm1lbnVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZW51SXRlbS5sYXp5Q2hpbGRyZW4gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICB0aGlzLndpdGhDYW5BY3RpdmF0ZShwZXJtaXNzaW9uR3VhcmQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ2hpbGQocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55PiwgYWRqdXN0Rm4/OiBSb3V0ZUJ1aWxkZXJBZGp1c3RGblR5cGUpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHBhdGgsIGNvbXBvbmVudCk7XG4gICAgICAgIGFkanVzdEZuPy4oY2hpbGRSb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRDaGlsZEJ1aWxkZXIoY2hpbGRSb3V0ZUJ1aWxkZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDaGlsZEJ1aWxkZXIoYnVpbGRlcjogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIGJ1aWxkZXIud2l0aFBhcmVudCh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgYnVpbGRlci53aXRoUm9vdCh0aGlzLnJvb3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChidWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IFJvdXRlIHtcbiAgICAgICAgY29uc3QgYW5ndWxhclJvdXRlOiBSb3V0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucm91dGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYW5ndWxhclJvdXRlLmRhdGEpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5kYXRhID0ge1xuICAgICAgICAgICAgICAgIC4uLmFuZ3VsYXJSb3V0ZS5kYXRhLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMucm91dGVEYXRhXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmRhdGEgPSB7Li4udGhpcy5yb3V0ZURhdGF9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYXBwZW5kIHBlcm1pc3Npb25zIGlmIG5vdCBhbHJlYWR5IGluIHJvdXRlIGRhdGFcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnMgJiYgIShhbmd1bGFyUm91dGUuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhKS5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgKGFuZ3VsYXJSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGEpLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lbnUgPSB0aGlzLmJ1aWxkTWVudSgpO1xuICAgICAgICBpZiAobWVudS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAoYW5ndWxhclJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YSkubWVudUl0ZW1zID0gbWVudTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoID8/IDApID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIHJvdXRlIGhhcyBjaGlsZHJlblxuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuLnB1c2goLi4udGhpcy5yb3V0ZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkUm91dGUgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4ucHVzaChjaGlsZFJvdXRlLmJ1aWxkKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGVDaGlsZCkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkFjdGl2YXRlQ2hpbGQgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5Mb2FkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuTG9hZCA9IFsuLi50aGlzLnJvdXRlLmNhbkxvYWRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5EZWFjdGl2YXRlID0gWy4uLnRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLnJlc29sdmUgPSB7Li4udGhpcy5yb3V0ZS5yZXNvbHZlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbmd1bGFyUm91dGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZE1lbnUoKTogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiB7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQnVpbGQ6IENvbW1vbnNNZW51SXRlbSB8IG51bGwgPSB0aGlzLm1lbnVJdGVtID8gey4uLnRoaXMubWVudUl0ZW19IDogbnVsbDtcbiAgICAgICAgY29uc3Qgcm91dGVDaGlsZHJlbk1lbnVJdGVtczogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IHRoaXMuY2hpbGRyZW4uZmxhdE1hcChjaGlsZCA9PiBjaGlsZC5idWlsZE1lbnUoKSk7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSBbXTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gW107XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtQnVpbGQ/Lml0ZW1zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUNoaWxkcmVuQnVpbGQucHVzaCguLi5tZW51SXRlbUJ1aWxkLml0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2Nlc3NNZW51SXRlbUNoaWxkID0gKGNoaWxkOiBDb21tb25zTWVudUl0ZW0pOiBDb21tb25zTWVudUl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgZmluYWxDaGlsZDogQ29tbW9uc01lbnVJdGVtID0gey4uLmNoaWxkfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGZpbmFsQ2hpbGQucm91dGVyTGluayA9IHRoaXMucm91dGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaW5hbENoaWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID0gW2ZpbmFsQ2hpbGQucm91dGVyTGlua107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmluYWxDaGlsZC5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICAgICAgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID0gcmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50cyhmaW5hbENoaWxkLnJvdXRlckxpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbmFsQ2hpbGQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gbWVudUl0ZW1DaGlsZHJlbi5wdXNoKHByb2Nlc3NNZW51SXRlbUNoaWxkKGNoaWxkKSkpO1xuXG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW5BZnRlckJ1aWxkOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gdGhpcy5tZW51SXRlbUNoaWxkcmVuQWZ0ZXIubWFwKGNoaWxkID0+IHByb2Nlc3NNZW51SXRlbUNoaWxkKGNoaWxkKSk7XG5cbiAgICAgICAgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkLnB1c2goLi4ubWVudUl0ZW1DaGlsZHJlbiwgLi4ucm91dGVDaGlsZHJlbk1lbnVJdGVtcywgLi4ubWVudUl0ZW1DaGlsZHJlbkFmdGVyQnVpbGQpO1xuXG4gICAgICAgIGlmICghbWVudUl0ZW1CdWlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lbnVJdGVtQnVpbGQubGFiZWwgPSBtZW51SXRlbUJ1aWxkLmxhYmVsID8/IHRoaXMucGFnZVRpdGxlO1xuICAgICAgICBpZiAodHlwZW9mIG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA9IFttZW51SXRlbUJ1aWxkLnJvdXRlckxpbmtdO1xuICAgICAgICB9XG4gICAgICAgIG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA9IHJlbW92ZVJvdXRlRW1wdHlQYXRoU2VnbWVudHMobWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID8/IHRoaXMucm91dGVQYXRoKTtcbiAgICAgICAgaWYgKG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLml0ZW1zID0gbWVudUl0ZW1DaGlsZHJlbkJ1aWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLmd1YXJkcykge1xuICAgICAgICAgICAgY29uc3QgZ3VhcmRzID0gdGhpcy5maW5kTWVudUl0ZW1HdWFyZHMoKTtcbiAgICAgICAgICAgIGlmIChndWFyZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQuZ3VhcmRzID0gZ3VhcmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnBlcm1pc3Npb25zID0gdGhpcy5maW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFttZW51SXRlbUJ1aWxkXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPikge1xuICAgICAgICBjb25zdCBtZW51SXRlbTogQ29tbW9uc01lbnVJdGVtID0ge307XG4gICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICBtZW51SXRlbS5pY29uID0gaWNvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLmxhYmVsID0gbGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLnJvdXRlckxpbmsgPSByb3V0ZXJMaW5rO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW51SXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRNZW51SXRlbUd1YXJkcygpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgY29uc3QgZ3VhcmRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGd1YXJkcy5wdXNoKC4uLnRoaXMucm91dGUuY2FuQWN0aXZhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHBhcmVudCBndWFyZHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGVjaXNpb24gdG8gaGlkZSBtZW51IGl0ZW0hXG4gICAgICAgICAgICAvLyBTb21lIHBhcmVudCByb3V0ZXMgbWlnaHQgaGF2ZSBndWFyZHMsIGJ1dCBubyBtZW51IGl0ZW1zLCBzbyB0aGlzIGd1YXJkcyBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCBoZXJlLFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBubyBwYXJlbnQgbWVudSBpdGVtIHRvIGhpZGUuXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5maW5kTWVudUl0ZW1HdWFyZHMoKS5mb3JFYWNoKGcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChndWFyZHMuaW5kZXhPZihnKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGd1YXJkcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZE1lbnVJdGVtUGVybWlzc2lvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtPy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudUl0ZW0ucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVEYXRhLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGFscmVhZHkgYnVpbHRcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlRGF0YS5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
- import { CommonsInternalError } from '../error/error.model';
2
1
  import { RouteBuilder } from './route-builder';
3
2
  export class RoutesBuilder {
4
3
  constructor(layoutRoute) {
@@ -9,32 +8,34 @@ export class RoutesBuilder {
9
8
  static create() {
10
9
  return new RoutesBuilder();
11
10
  }
12
- addAngularRoute(route) {
13
- return this.addRouteBuilder(RouteBuilder.createFromRoute(route));
11
+ addAngularRoute(route, builderAdjustFn) {
12
+ const builder = RouteBuilder.createFromRoute(route);
13
+ builderAdjustFn?.(builder);
14
+ return this.addRouteBuilder(builder);
14
15
  }
15
16
  addRouteRedirect(path, redirectTo, pathMatch = 'prefix') {
16
17
  return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));
17
18
  }
18
- addLazyRouteComponent(path, loadComponent, canMatch) {
19
- return this.addRouteBuilder(RouteBuilder.createLazyRouteComponent(path, loadComponent, canMatch));
19
+ addLazyRouteComponent(path, loadComponent, canMatch, builderAdjustFn) {
20
+ const builder = RouteBuilder.createLazyRouteComponent(path, loadComponent, canMatch);
21
+ builderAdjustFn?.(builder);
22
+ return this.addRouteBuilder(builder);
20
23
  }
21
- addLazyRouteModule(path, loadChildren, canMatch) {
22
- return this.addRouteBuilder(RouteBuilder.createLazyRouteModule(path, loadChildren, canMatch));
24
+ addLazyRouteModule(path, loadChildren, canMatch, builderAdjustFn) {
25
+ const builder = RouteBuilder.createLazyRouteModule(path, loadChildren, canMatch);
26
+ builderAdjustFn?.(builder);
27
+ return this.addRouteBuilder(builder);
23
28
  }
24
- addRoute(path, component) {
25
- return this.addRouteBuilder(RouteBuilder.create(path, component));
29
+ addRoute(path, component, builderAdjustFn) {
30
+ const builder = RouteBuilder.create(path, component);
31
+ builderAdjustFn?.(builder);
32
+ return this.addRouteBuilder(builder);
26
33
  }
27
34
  addRouteBuilder(routeBuilder) {
28
35
  this.currentRoute = routeBuilder.withRoot(this);
29
36
  this.routes.push(routeBuilder);
30
37
  return this;
31
38
  }
32
- toRoute() {
33
- if (!this.currentRoute) {
34
- throw new CommonsInternalError('No routes were added!', { name: 'RoutesBuilderError' });
35
- }
36
- return this.currentRoute;
37
- }
38
39
  build() {
39
40
  let angularRoutes = [];
40
41
  for (const route of this.routes) {
@@ -50,4 +51,4 @@ export class RoutesBuilder {
50
51
  return angularRoutes;
51
52
  }
52
53
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9yb3V0ZXIvcm91dGVzLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFdBQTBCO1FBSHRDLFdBQU0sR0FBd0IsRUFBRSxDQUFDO1FBSXJDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU07UUFDaEIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO1FBQzdGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU0scUJBQXFCLENBQ3hCLElBQVksRUFDWixhQUFxSixFQUNySixRQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBWSxFQUFFLFlBQTBCLEVBQUUsUUFBcUI7UUFDckYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFZLEVBQUUsU0FBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLGVBQWUsQ0FBQyxZQUEwQjtRQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixNQUFNLElBQUksb0JBQW9CLENBQUMsdUJBQXVCLEVBQUUsRUFBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDO1NBQ3pGO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxhQUFhLEdBQVcsRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3QixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO2FBQy9DO1lBQ0QsYUFBYSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RlZmF1bHRFeHBvcnQsIExvYWRDaGlsZHJlbiwgUm91dGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvcn0gZnJvbSAnLi4vZXJyb3IvZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtSb3V0ZUJ1aWxkZXJ9IGZyb20gJy4vcm91dGUtYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXNCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyO1xuICAgIHByaXZhdGUgcm91dGVzOiBBcnJheTxSb3V0ZUJ1aWxkZXI+ID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50Um91dGU/OiBSb3V0ZUJ1aWxkZXI7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Um91dGUgPSBsYXlvdXRSb3V0ZT8ud2l0aFJvb3QodGhpcyk7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gbGF5b3V0Um91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogUm91dGVzQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVzQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRBbmd1bGFyUm91dGUocm91dGU6IFJvdXRlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJvdXRlQnVpbGRlcihSb3V0ZUJ1aWxkZXIuY3JlYXRlRnJvbVJvdXRlKHJvdXRlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZVJlZGlyZWN0KHBhdGgsIHJlZGlyZWN0VG8sIHBhdGhNYXRjaCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRMYXp5Um91dGVDb21wb25lbnQoXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gVHlwZTx1bmtub3duPiB8IE9ic2VydmFibGU8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+IHwgUHJvbWlzZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj4sXG4gICAgICAgIGNhbk1hdGNoPzogQXJyYXk8YW55PlxuICAgICk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZUxhenlSb3V0ZUNvbXBvbmVudChwYXRoLCBsb2FkQ29tcG9uZW50LCBjYW5NYXRjaCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRMYXp5Um91dGVNb2R1bGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTWF0Y2g/OiBBcnJheTxhbnk+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJvdXRlQnVpbGRlcihSb3V0ZUJ1aWxkZXIuY3JlYXRlTGF6eVJvdXRlTW9kdWxlKHBhdGgsIGxvYWRDaGlsZHJlbiwgY2FuTWF0Y2gpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm91dGUocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBjb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm91dGVCdWlsZGVyKHJvdXRlQnVpbGRlcjogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gcm91dGVCdWlsZGVyLndpdGhSb290KHRoaXMpO1xuICAgICAgICB0aGlzLnJvdXRlcy5wdXNoKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1JvdXRlKCk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Um91dGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignTm8gcm91dGVzIHdlcmUgYWRkZWQhJywge25hbWU6ICdSb3V0ZXNCdWlsZGVyRXJyb3InfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJvdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZCgpOiBSb3V0ZXMge1xuICAgICAgICBsZXQgYW5ndWxhclJvdXRlczogUm91dGVzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZXMucHVzaChyb3V0ZS5idWlsZCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxheW91dFJvdXRlKSB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRBbmd1bGFyUm91dGUgPSB0aGlzLmxheW91dFJvdXRlLmJ1aWxkKCk7XG4gICAgICAgICAgICBpZiAoYW5ndWxhclJvdXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0QW5ndWxhclJvdXRlLmNoaWxkcmVuID0gYW5ndWxhclJvdXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZXMgPSBbbGF5b3V0QW5ndWxhclJvdXRlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbmd1bGFyUm91dGVzO1xuICAgIH1cbn1cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9yb3V0ZXIvcm91dGVzLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLFlBQVksRUFBMkIsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RSxNQUFNLE9BQU8sYUFBYTtJQUt0QixZQUFvQixXQUEwQjtRQUh0QyxXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUlyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDcEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQVksRUFBRSxlQUEwQztRQUMzRSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBWSxFQUFFLFVBQWtCLEVBQUUsWUFBK0IsUUFBUTtRQUM3RixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVNLHFCQUFxQixDQUN4QixJQUFZLEVBQ1osYUFBcUosRUFDckosUUFBcUIsRUFDckIsZUFBMEM7UUFFMUMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckYsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsWUFBMEIsRUFBRSxRQUFxQixFQUFFLGVBQTBDO1FBQ2pJLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pGLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVksRUFBRSxTQUFvQixFQUFFLGVBQTBDO1FBQzFGLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sZUFBZSxDQUFDLFlBQTBCO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksYUFBYSxHQUFXLEVBQUUsQ0FBQztRQUMvQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEQsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzQixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1lBQ2hELENBQUM7WUFDRCxhQUFhLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEZWZhdWx0RXhwb3J0LCBMb2FkQ2hpbGRyZW4sIFJvdXRlLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Um91dGVCdWlsZGVyLCBSb3V0ZUJ1aWxkZXJBZGp1c3RGblR5cGV9IGZyb20gJy4vcm91dGUtYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXNCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyO1xuICAgIHByaXZhdGUgcm91dGVzOiBBcnJheTxSb3V0ZUJ1aWxkZXI+ID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50Um91dGU/OiBSb3V0ZUJ1aWxkZXI7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Um91dGUgPSBsYXlvdXRSb3V0ZT8ud2l0aFJvb3QodGhpcyk7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gbGF5b3V0Um91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogUm91dGVzQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVzQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRBbmd1bGFyUm91dGUocm91dGU6IFJvdXRlLCBidWlsZGVyQWRqdXN0Rm4/OiBSb3V0ZUJ1aWxkZXJBZGp1c3RGblR5cGUpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGVGcm9tUm91dGUocm91dGUpO1xuICAgICAgICBidWlsZGVyQWRqdXN0Rm4/LihidWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKGJ1aWxkZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRSb3V0ZVJlZGlyZWN0KHBhdGg6IHN0cmluZywgcmVkaXJlY3RUbzogc3RyaW5nLCBwYXRoTWF0Y2g6ICdmdWxsJyB8ICdwcmVmaXgnID0gJ3ByZWZpeCcpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVSZWRpcmVjdChwYXRoLCByZWRpcmVjdFRvLCBwYXRoTWF0Y2gpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTGF6eVJvdXRlQ29tcG9uZW50KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+LFxuICAgICAgICBjYW5NYXRjaD86IEFycmF5PGFueT4sXG4gICAgICAgIGJ1aWxkZXJBZGp1c3RGbj86IFJvdXRlQnVpbGRlckFkanVzdEZuVHlwZVxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZUxhenlSb3V0ZUNvbXBvbmVudChwYXRoLCBsb2FkQ29tcG9uZW50LCBjYW5NYXRjaCk7XG4gICAgICAgIGJ1aWxkZXJBZGp1c3RGbj8uKGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoYnVpbGRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZExhenlSb3V0ZU1vZHVsZShwYXRoOiBzdHJpbmcsIGxvYWRDaGlsZHJlbjogTG9hZENoaWxkcmVuLCBjYW5NYXRjaD86IEFycmF5PGFueT4sIGJ1aWxkZXJBZGp1c3RGbj86IFJvdXRlQnVpbGRlckFkanVzdEZuVHlwZSk6IHRoaXMge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZUxhenlSb3V0ZU1vZHVsZShwYXRoLCBsb2FkQ2hpbGRyZW4sIGNhbk1hdGNoKTtcbiAgICAgICAgYnVpbGRlckFkanVzdEZuPy4oYnVpbGRlcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJvdXRlQnVpbGRlcihidWlsZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm91dGUocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55PiwgYnVpbGRlckFkanVzdEZuPzogUm91dGVCdWlsZGVyQWRqdXN0Rm5UeXBlKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHBhdGgsIGNvbXBvbmVudCk7XG4gICAgICAgIGJ1aWxkZXJBZGp1c3RGbj8uKGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoYnVpbGRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlQnVpbGRlcihyb3V0ZUJ1aWxkZXI6IFJvdXRlQnVpbGRlcik6IHRoaXMge1xuICAgICAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9IHJvdXRlQnVpbGRlci53aXRoUm9vdCh0aGlzKTtcbiAgICAgICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogUm91dGVzIHtcbiAgICAgICAgbGV0IGFuZ3VsYXJSb3V0ZXM6IFJvdXRlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGVzLnB1c2gocm91dGUuYnVpbGQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYXlvdXRSb3V0ZSkge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0QW5ndWxhclJvdXRlID0gdGhpcy5sYXlvdXRSb3V0ZS5idWlsZCgpO1xuICAgICAgICAgICAgaWYgKGFuZ3VsYXJSb3V0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxheW91dEFuZ3VsYXJSb3V0ZS5jaGlsZHJlbiA9IGFuZ3VsYXJSb3V0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmd1bGFyUm91dGVzID0gW2xheW91dEFuZ3VsYXJSb3V0ZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5ndWxhclJvdXRlcztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { CommonsInternalError } from '../error/error.model';
2
+ import { PermissionTypeEnum } from './permissions.model';
3
+ export function isPermitted(permissions, userRoles) {
4
+ switch (permissions.authorizationType) {
5
+ case PermissionTypeEnum.Rbac:
6
+ return isRbacPermitted(permissions, userRoles);
7
+ default:
8
+ throw new CommonsInternalError(`Permission type "${permissions.authorizationType}" not implemented`);
9
+ }
10
+ }
11
+ export function isRbacPermitted(permissions, userRoles) {
12
+ return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VjdXJpdHkvcGVybWlzc2lvbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBZSxrQkFBa0IsRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBRWxGLE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBeUIsRUFBRSxTQUF3QjtJQUMzRSxRQUFRLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BDLEtBQUssa0JBQWtCLENBQUMsSUFBSTtZQUN4QixPQUFPLGVBQWUsQ0FBQyxXQUFnQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFO1lBQ0ksTUFBTSxJQUFJLG9CQUFvQixDQUFDLG9CQUFvQixXQUFXLENBQUMsaUJBQWlCLG1CQUFtQixDQUFDLENBQUM7SUFDN0csQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFdBQThCLEVBQUUsU0FBd0I7SUFDcEYsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvcn0gZnJvbSAnLi4vZXJyb3IvZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnMsIFBlcm1pc3Npb25UeXBlRW51bSwgUGVybWlzc2lvbnN9IGZyb20gJy4vcGVybWlzc2lvbnMubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJtaXR0ZWQocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgdXNlclJvbGVzOiBBcnJheTxzdHJpbmc+KTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9ucy5hdXRob3JpemF0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIFBlcm1pc3Npb25UeXBlRW51bS5SYmFjOlxuICAgICAgICAgICAgcmV0dXJuIGlzUmJhY1Blcm1pdHRlZChwZXJtaXNzaW9ucyBhcyBQZXJtaXNzaW9ucy5Sb2xlcywgdXNlclJvbGVzKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUGVybWlzc2lvbiB0eXBlIFwiJHtwZXJtaXNzaW9ucy5hdXRob3JpemF0aW9uVHlwZX1cIiBub3QgaW1wbGVtZW50ZWRgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JiYWNQZXJtaXR0ZWQocGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLlJvbGVzLCB1c2VyUm9sZXM6IEFycmF5PHN0cmluZz4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcGVybWlzc2lvbnMucm9sZXMuc29tZShwcmcgPT4gcHJnLmV2ZXJ5KHByID0+IHVzZXJSb2xlcy5pbmRleE9mKHByKSA+IC0xKSk7XG59XG4iXX0=
@@ -12,4 +12,4 @@ export const permissionGuard = (route) => {
12
12
  return of(true);
13
13
  }
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlY3VyaXR5L3Blcm1pc3Npb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyQyxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWtCLENBQUMsS0FBNkIsRUFBa0YsRUFBRTtJQUM1SixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU3QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBd0IsQ0FBQztJQUU1QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDbEIsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNqRTtTQUFNO1FBQ0gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkI7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0NvbW1vbnNSb3V0ZURhdGF9IGZyb20gJy4uL3JvdXRlci9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnLi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgcGVybWlzc2lvbkd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgICBjb25zdCBwZXJtaXNzaW9uID0gaW5qZWN0KFBlcm1pc3Npb25TZXJ2aWNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSByb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGE7XG5cbiAgICBpZiAoZGF0YS5wZXJtaXNzaW9ucykge1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbi5pc1Blcm1pdHRlZChkYXRhLnBlcm1pc3Npb25zKS5waXBlKGZpcnN0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG59O1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlY3VyaXR5L3Blcm1pc3Npb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyQyxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWtCLENBQUMsS0FBNkIsRUFBa0YsRUFBRTtJQUM1SixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU3QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBd0IsQ0FBQztJQUU1QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVGbiwgVXJsVHJlZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7Q29tbW9uc1JvdXRlRGF0YX0gZnJvbSAnLi4vcm91dGVyL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICcuL3Blcm1pc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBwZXJtaXNzaW9uR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICAgIGNvbnN0IHBlcm1pc3Npb24gPSBpbmplY3QoUGVybWlzc2lvblNlcnZpY2UpO1xuXG4gICAgY29uc3QgZGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcblxuICAgIGlmIChkYXRhLnBlcm1pc3Npb25zKSB7XG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uLmlzUGVybWl0dGVkKGRhdGEucGVybWlzc2lvbnMpLnBpcGUoZmlyc3QoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbn07XG4iXX0=