@loxia/mst-viewer 8.1.3-202511132206 → 8.1.3-202511141049

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 (174) hide show
  1. package/esm2022/generated/openapi/api/api.mjs +23 -0
  2. package/esm2022/generated/openapi/api/appConfigController.service.mjs +140 -0
  3. package/esm2022/generated/openapi/api/appConfigController.serviceInterface.mjs +2 -0
  4. package/esm2022/generated/openapi/api/bewegingController.service.mjs +155 -0
  5. package/esm2022/generated/openapi/api/bewegingController.serviceInterface.mjs +2 -0
  6. package/esm2022/generated/openapi/api/class0BuildProperties.service.mjs +140 -0
  7. package/esm2022/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +2 -0
  8. package/esm2022/generated/openapi/api/connectorController.service.mjs +146 -0
  9. package/esm2022/generated/openapi/api/connectorController.serviceInterface.mjs +2 -0
  10. package/esm2022/generated/openapi/api/logController.service.mjs +150 -0
  11. package/esm2022/generated/openapi/api/logController.serviceInterface.mjs +2 -0
  12. package/esm2022/generated/openapi/api/p21Controller.service.mjs +236 -0
  13. package/esm2022/generated/openapi/api/p21Controller.serviceInterface.mjs +2 -0
  14. package/esm2022/generated/openapi/api/sbController.service.mjs +202 -0
  15. package/esm2022/generated/openapi/api/sbController.serviceInterface.mjs +2 -0
  16. package/esm2022/generated/openapi/api.module.mjs +40 -0
  17. package/esm2022/generated/openapi/configuration.mjs +99 -0
  18. package/esm2022/generated/openapi/encoder.mjs +19 -0
  19. package/esm2022/generated/openapi/index.mjs +7 -0
  20. package/esm2022/generated/openapi/model/actieDto.mjs +13 -0
  21. package/esm2022/generated/openapi/model/algemeneRitDto.mjs +13 -0
  22. package/esm2022/generated/openapi/model/bewegingDto.mjs +2 -0
  23. package/esm2022/generated/openapi/model/frontendKeycloakConfig.mjs +13 -0
  24. package/esm2022/generated/openapi/model/frontendProperties.mjs +2 -0
  25. package/esm2022/generated/openapi/model/logDto.mjs +2 -0
  26. package/esm2022/generated/openapi/model/models.mjs +10 -0
  27. package/esm2022/generated/openapi/model/ritRequestDto.mjs +2 -0
  28. package/esm2022/generated/openapi/model/signaleringsbeeldDto.mjs +13 -0
  29. package/esm2022/generated/openapi/model/signaleringsbeeldRequestDto.mjs +13 -0
  30. package/esm2022/generated/openapi/param.mjs +2 -0
  31. package/esm2022/generated/openapi/variables.mjs +9 -0
  32. package/esm2022/lib/atomic-components/message/message.component.mjs +3 -3
  33. package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.entity.mjs +7 -4
  34. package/esm2022/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +17 -7
  35. package/esm2022/lib/components/svg-visualisatie/svg-visualisatie.component.mjs +6 -4
  36. package/esm2022/lib/components/viewer-controls/viewer-controls.component.mjs +2 -1
  37. package/esm2022/lib/model/ritdeel.mjs +4 -4
  38. package/esm2022/lib/mst-viewer.module.mjs +6 -5
  39. package/esm2022/lib/resources/mstlogging.resource.mjs +12 -145
  40. package/esm2022/lib/resources/signaleringsbeeldinfo.resource.mjs +2 -1
  41. package/esm2022/lib/services/editor.service.mjs +3 -1
  42. package/esm2022/lib/services/rit-lezer.service.mjs +4 -4
  43. package/esm2022/lib/services/viewer-control.service.mjs +3 -4
  44. package/esm2022/lib/state/actions/actions.mjs +1 -1
  45. package/esm2022/lib/state/effect/bepaal-ongeplande-acties.effect.mjs +2 -2
  46. package/esm2022/lib/state/effect/bepaal-sb-infos.effect.mjs +2 -2
  47. package/esm2022/lib/state/effect/beweging-invoegen.effect.mjs +1 -1
  48. package/esm2022/lib/state/effect/delete-ongeplande-actie.effect.mjs +1 -1
  49. package/esm2022/lib/state/effect/laad-route-files.effect.mjs +2 -2
  50. package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +10 -10
  51. package/esm2022/lib/state/effect/ritdelen.effect.mjs +22 -22
  52. package/esm2022/lib/state/mst-editor-state.mjs +12 -14
  53. package/esm2022/lib/state/reducer/rit-delen.reducer.mjs +1 -1
  54. package/esm2022/lib/util/actie-helper.mjs +6 -6
  55. package/esm2022/lib/util/actie-popover-bepaler.mjs +2 -2
  56. package/esm2022/lib/util/logging-helper.mjs +9 -12
  57. package/esm2022/lib/util/multi-map.mjs +2 -3
  58. package/esm2022/lib/util/utils.mjs +2 -5
  59. package/esm2022/lib/util/zone-util.mjs +2 -1
  60. package/esm2022/src/generated/openapi/api/api.mjs +23 -0
  61. package/esm2022/src/generated/openapi/api/appConfigController.service.mjs +140 -0
  62. package/esm2022/src/generated/openapi/api/appConfigController.serviceInterface.mjs +2 -0
  63. package/esm2022/src/generated/openapi/api/bewegingController.service.mjs +155 -0
  64. package/esm2022/src/generated/openapi/api/bewegingController.serviceInterface.mjs +2 -0
  65. package/esm2022/src/generated/openapi/api/class0BuildProperties.service.mjs +140 -0
  66. package/esm2022/src/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +2 -0
  67. package/esm2022/src/generated/openapi/api/connectorController.service.mjs +146 -0
  68. package/esm2022/src/generated/openapi/api/connectorController.serviceInterface.mjs +2 -0
  69. package/esm2022/src/generated/openapi/api/logController.service.mjs +150 -0
  70. package/esm2022/src/generated/openapi/api/logController.serviceInterface.mjs +2 -0
  71. package/esm2022/src/generated/openapi/api/p21Controller.service.mjs +236 -0
  72. package/esm2022/src/generated/openapi/api/p21Controller.serviceInterface.mjs +2 -0
  73. package/esm2022/src/generated/openapi/api/sbController.service.mjs +202 -0
  74. package/esm2022/src/generated/openapi/api/sbController.serviceInterface.mjs +2 -0
  75. package/esm2022/src/generated/openapi/api.module.mjs +40 -0
  76. package/esm2022/src/generated/openapi/configuration.mjs +99 -0
  77. package/esm2022/src/generated/openapi/encoder.mjs +19 -0
  78. package/esm2022/src/generated/openapi/index.mjs +7 -0
  79. package/esm2022/src/generated/openapi/loxia-mst-viewer-src-generated-openapi.mjs +5 -0
  80. package/esm2022/src/generated/openapi/model/actieDto.mjs +13 -0
  81. package/esm2022/src/generated/openapi/model/algemeneRitDto.mjs +13 -0
  82. package/esm2022/src/generated/openapi/model/bewegingDto.mjs +2 -0
  83. package/esm2022/src/generated/openapi/model/frontendKeycloakConfig.mjs +13 -0
  84. package/esm2022/src/generated/openapi/model/frontendProperties.mjs +2 -0
  85. package/esm2022/src/generated/openapi/model/logDto.mjs +2 -0
  86. package/esm2022/src/generated/openapi/model/models.mjs +10 -0
  87. package/esm2022/src/generated/openapi/model/ritRequestDto.mjs +2 -0
  88. package/esm2022/src/generated/openapi/model/signaleringsbeeldDto.mjs +13 -0
  89. package/esm2022/src/generated/openapi/model/signaleringsbeeldRequestDto.mjs +13 -0
  90. package/esm2022/src/generated/openapi/param.mjs +2 -0
  91. package/esm2022/src/generated/openapi/variables.mjs +9 -0
  92. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs +1341 -0
  93. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs.map +1 -0
  94. package/fesm2022/loxia-mst-viewer.mjs +1692 -470
  95. package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
  96. package/generated/openapi/api/api.d.ts +22 -0
  97. package/generated/openapi/api/appConfigController.service.d.ts +38 -0
  98. package/generated/openapi/api/appConfigController.serviceInterface.d.ts +24 -0
  99. package/generated/openapi/api/bewegingController.service.d.ts +40 -0
  100. package/generated/openapi/api/bewegingController.serviceInterface.d.ts +27 -0
  101. package/generated/openapi/api/class0BuildProperties.service.d.ts +36 -0
  102. package/generated/openapi/api/class0BuildProperties.serviceInterface.d.ts +23 -0
  103. package/generated/openapi/api/connectorController.service.d.ts +38 -0
  104. package/generated/openapi/api/connectorController.serviceInterface.d.ts +25 -0
  105. package/generated/openapi/api/logController.service.d.ts +38 -0
  106. package/generated/openapi/api/logController.serviceInterface.d.ts +25 -0
  107. package/generated/openapi/api/p21Controller.service.d.ts +62 -0
  108. package/generated/openapi/api/p21Controller.serviceInterface.d.ts +30 -0
  109. package/generated/openapi/api/sbController.service.d.ts +60 -0
  110. package/generated/openapi/api/sbController.serviceInterface.d.ts +32 -0
  111. package/generated/openapi/api.module.d.ts +11 -0
  112. package/generated/openapi/configuration.d.ts +104 -0
  113. package/generated/openapi/encoder.d.ts +11 -0
  114. package/generated/openapi/index.d.ts +6 -0
  115. package/generated/openapi/model/actieDto.d.ts +35 -0
  116. package/generated/openapi/model/algemeneRitDto.d.ts +28 -0
  117. package/generated/openapi/model/bewegingDto.d.ts +37 -0
  118. package/generated/openapi/model/frontendKeycloakConfig.d.ts +16 -0
  119. package/generated/openapi/model/frontendProperties.d.ts +15 -0
  120. package/generated/openapi/model/logDto.d.ts +22 -0
  121. package/generated/openapi/model/models.d.ts +9 -0
  122. package/generated/openapi/model/ritRequestDto.d.ts +17 -0
  123. package/generated/openapi/model/signaleringsbeeldDto.d.ts +16 -0
  124. package/generated/openapi/model/signaleringsbeeldRequestDto.d.ts +16 -0
  125. package/generated/openapi/param.d.ts +37 -0
  126. package/generated/openapi/variables.d.ts +8 -0
  127. package/lib/atomic-components/message/message.component.d.ts +2 -2
  128. package/lib/atomic-components/progress-indicator/progress-indicator.entity.d.ts +1 -1
  129. package/lib/components/ritdelen-lijst/ritdelen-lijst.component.d.ts +2 -2
  130. package/lib/components/svg-visualisatie/svg-visualisatie.component.d.ts +1 -1
  131. package/lib/model/ritdeel.d.ts +7 -6
  132. package/lib/resources/mstlogging.resource.d.ts +6 -95
  133. package/lib/state/actions/actions.d.ts +4 -4
  134. package/lib/state/effect/delete-ongeplande-actie.effect.d.ts +1 -1
  135. package/lib/state/effect/laad-route-files.effect.d.ts +2 -1
  136. package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +9 -9
  137. package/lib/state/effect/ritdelen.effect.d.ts +7 -6
  138. package/lib/state/mst-editor-state.d.ts +23 -84
  139. package/lib/util/actie-helper.d.ts +2 -2
  140. package/lib/util/logging-helper.d.ts +4 -6
  141. package/lib/util/utils.d.ts +0 -1
  142. package/package.json +7 -1
  143. package/src/generated/openapi/README.md +226 -0
  144. package/src/generated/openapi/api/api.d.ts +22 -0
  145. package/src/generated/openapi/api/appConfigController.service.d.ts +38 -0
  146. package/src/generated/openapi/api/appConfigController.serviceInterface.d.ts +24 -0
  147. package/src/generated/openapi/api/bewegingController.service.d.ts +40 -0
  148. package/src/generated/openapi/api/bewegingController.serviceInterface.d.ts +27 -0
  149. package/src/generated/openapi/api/class0BuildProperties.service.d.ts +36 -0
  150. package/src/generated/openapi/api/class0BuildProperties.serviceInterface.d.ts +23 -0
  151. package/src/generated/openapi/api/connectorController.service.d.ts +38 -0
  152. package/src/generated/openapi/api/connectorController.serviceInterface.d.ts +25 -0
  153. package/src/generated/openapi/api/logController.service.d.ts +38 -0
  154. package/src/generated/openapi/api/logController.serviceInterface.d.ts +25 -0
  155. package/src/generated/openapi/api/p21Controller.service.d.ts +62 -0
  156. package/src/generated/openapi/api/p21Controller.serviceInterface.d.ts +30 -0
  157. package/src/generated/openapi/api/sbController.service.d.ts +60 -0
  158. package/src/generated/openapi/api/sbController.serviceInterface.d.ts +32 -0
  159. package/src/generated/openapi/api.module.d.ts +11 -0
  160. package/src/generated/openapi/configuration.d.ts +104 -0
  161. package/src/generated/openapi/encoder.d.ts +11 -0
  162. package/src/generated/openapi/index.d.ts +6 -0
  163. package/src/generated/openapi/model/actieDto.d.ts +35 -0
  164. package/src/generated/openapi/model/algemeneRitDto.d.ts +28 -0
  165. package/src/generated/openapi/model/bewegingDto.d.ts +37 -0
  166. package/src/generated/openapi/model/frontendKeycloakConfig.d.ts +16 -0
  167. package/src/generated/openapi/model/frontendProperties.d.ts +15 -0
  168. package/src/generated/openapi/model/logDto.d.ts +22 -0
  169. package/src/generated/openapi/model/models.d.ts +9 -0
  170. package/src/generated/openapi/model/ritRequestDto.d.ts +17 -0
  171. package/src/generated/openapi/model/signaleringsbeeldDto.d.ts +16 -0
  172. package/src/generated/openapi/model/signaleringsbeeldRequestDto.d.ts +16 -0
  173. package/src/generated/openapi/param.d.ts +37 -0
  174. package/src/generated/openapi/variables.d.ts +8 -0
@@ -1,13 +1,13 @@
1
1
  import { createReducer, on } from '@ngrx/store';
2
+ import { ProgressIndicator } from '../atomic-components/progress-indicator/progress-indicator.entity';
2
3
  import { NieuweRoute } from '../model/nieuwe-route';
3
- import { AlgemeneRitInfoDto } from '../resources/mstlogging.resource';
4
4
  import { ArrayMultimap } from '../util/multi-map';
5
5
  import * as MstActions from './actions/actions';
6
6
  import { ritdelenReducer } from './reducer/rit-delen.reducer';
7
7
  const onIdsActionHandler = (action) => on(action, (_, { ids }) => ids);
8
8
  const createIdsReducer = (action) => createReducer([], onIdsActionHandler(action));
9
9
  export const editableReducer = createReducer(true, on(MstActions.setEditable, (_, { editable }) => editable));
10
- export const progressIndicatorReducer = createReducer(undefined, on(MstActions.ShowProgress, () => ({ progressIndicator: {} })), on(MstActions.ClearProgress, () => undefined));
10
+ export const progressIndicatorReducer = createReducer({}, on(MstActions.ShowProgress, () => ({ progressIndicator: new ProgressIndicator() })), on(MstActions.ClearProgress, () => ({})));
11
11
  export const svgInfoReducer = createReducer([], on(MstActions.SetSvgInfos, (_, { svgInfos }) => svgInfos));
12
12
  export const debugReducer = createReducer(false, on(MstActions.SetDebug, (_, { debug }) => debug));
13
13
  export const ritSelectieIdsReducer = createIdsReducer(MstActions.SetRitSelectieIds);
@@ -33,12 +33,10 @@ export const ongeplandeActieReducer = createReducer(new ArrayMultimap(), on(MstA
33
33
  ongeplandeActie.puics.forEach(puic => ongeplandeActies.delete(puic, ongeplandeActie));
34
34
  return new ArrayMultimap(ongeplandeActies);
35
35
  }));
36
- export const ongeplandeActieSelectieIdsReducer = createReducer([],
37
- // on(MstActions.SetOngeplandeActieSelectieIds, (_, { ids }) => ids),
38
- onIdsActionHandler(MstActions.SetOngeplandeActieSelectieIds), on(MstActions.AddOngeplandeActie, (ids, { ongeplandeActie }) => {
36
+ export const ongeplandeActieSelectieIdsReducer = createReducer([], onIdsActionHandler(MstActions.SetOngeplandeActieSelectieIds), on(MstActions.AddOngeplandeActie, (ids, { ongeplandeActie }) => {
39
37
  ongeplandeActie.puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));
40
38
  return [...ids];
41
- }), on(MstActions.DeleteOngeplandeActieSelectieId, (ids, { id }) => [].concat(ids.includes(id) ? ids.filter(_id => _id !== id) : ids)));
39
+ }), on(MstActions.DeleteOngeplandeActieSelectieId, (ids, { id }) => ids.includes(id) ? ids.filter(_id => _id !== id) : ids));
42
40
  export const gebrokenRitSelectieIdsReducer = createIdsReducer(MstActions.SetGebrokenRitSelectieIds);
43
41
  export const alternatievenSelectieIdsReducer = createIdsReducer(MstActions.SetAlternatievenSelectieIds);
44
42
  export const beginSeinSelectieIdsReducer = createIdsReducer(MstActions.SetBeginSeinSelectieIds);
@@ -47,16 +45,16 @@ export const alternatievenClickableIdsReducer = createIdsReducer(MstActions.SetA
47
45
  export const eindSeinenClickableIdsReducer = createIdsReducer(MstActions.SetEindSeinenClickableIds);
48
46
  export const connectorClickableIdsReducer = createIdsReducer(MstActions.SetConnectorenClickableIds);
49
47
  export const beginSeinRightClickableIdsReducer = createIdsReducer(MstActions.SetBeginSeinRightClickableIds);
50
- export const nieuweRouteReducer = createReducer(new NieuweRoute(null, null), on(MstActions.SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, null)), on(MstActions.SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein)), on(MstActions.ResetNieuweRoute, () => new NieuweRoute(null, null)));
48
+ export const nieuweRouteReducer = createReducer(undefined, on(MstActions.SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, null)), on(MstActions.SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein)), on(MstActions.ResetNieuweRoute, () => undefined));
51
49
  export const signaleringsbeeldInfoDtosReducer = createReducer([], on(MstActions.SetSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(MstActions.UpdateSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
52
50
  export const visibleSbInfoDtosReducer = createReducer([], on(MstActions.SetVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
53
- export const iaVersieReducer = createReducer({}, on(MstActions.SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
54
- export const algemeneRitInfoDtoReducer = createReducer(new AlgemeneRitInfoDto(), on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));
51
+ export const iaVersieReducer = createReducer({ versie: 'unknown', ingangsDatum: new Date() }, on(MstActions.SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
52
+ export const algemeneRitInfoDtoReducer = createReducer({}, on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));
55
53
  export const ongeplandeActiesBepaaldReducer = createReducer(false, on(MstActions.SetOngeplandeActiesBepaald, (_, { bepaald }) => bepaald));
56
- export const nieuweBewegingReducer = createReducer({}, on(MstActions.UpdateRit, (_, { bewegingen }) => bewegingen));
57
- export const baseUrlReducer = createReducer(undefined, on(MstActions.SetBaseUrl, (_, { baseUrl }) => baseUrl));
58
- export const focusIdsReducer = createReducer({}, on(MstActions.focusOpIds, (_, { puics }) => puics));
59
- export const selectedRitdeelIdReducer = createReducer({}, on(MstActions.SetSelectedRitdeel, (_, { id }) => id));
54
+ export const nieuweBewegingReducer = createReducer([], on(MstActions.UpdateRit, (_, { bewegingen }) => bewegingen));
55
+ export const baseUrlReducer = createReducer('', on(MstActions.SetBaseUrl, (_, { baseUrl }) => baseUrl));
56
+ export const focusIdsReducer = createReducer([], on(MstActions.focusOpIds, (_, { puics }) => puics));
57
+ export const selectedRitdeelIdReducer = createReducer(-1, on(MstActions.SetSelectedRitdeel, (_, { id }) => id));
60
58
  export const storeReducers = {
61
59
  ritDelen: ritdelenReducer,
62
60
  ritSelectieIds: ritSelectieIdsReducer,
@@ -87,4 +85,4 @@ export const storeReducers = {
87
85
  focusIds: focusIdsReducer,
88
86
  selectedRitdeelId: selectedRitdeelIdReducer
89
87
  };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LWVkaXRvci1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUE2QzlELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQWMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFOUcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUNqRCxTQUFTLEVBQ1QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMs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QUF5QjtJQUM3QyxRQUFRLEVBQUUsY0FBYztJQUN4QixLQUFLLEVBQUUsWUFBWTtJQUNuQixRQUFRLEVBQUUsZUFBZTtJQUN6Qix1QkFBdUIsRUFBRSw4QkFBOEI7SUFDdkQsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxnQkFBZ0IsRUFBRSxxQkFBcUI7SUFDdkMsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFLGVBQWU7SUFDekIsaUJBQWlCLEVBQUUsd0JBQXdCO0NBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdmdJbmZvIH0gZnJvbSAnQGxveGlhL2lteC12aWV3ZXInO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0luZGljYXRvciB9IGZyb20gJy4uL2F0b21pYy1jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuZW50aXR5JztcbmltcG9ydCB7IE5pZXV3ZVJvdXRlIH0gZnJvbSAnLi4vbW9kZWwvbmlldXdlLXJvdXRlJztcbmltcG9ydCB7IE9uZ2VwbGFuZGVBY3RpZSB9IGZyb20gJy4uL21vZGVsL29uZ2VwbGFuZGUtYWN0aWUnO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgQWN0aWUsIEJld2VnaW5nLCBJbmZyYU1vZGVsIH0gZnJvbSAnLi4vb3B0aW1vJztcbmltcG9ydCB7IEFsZ2VtZW5lUml0SW5mb0R0byB9IGZyb20gJy4uL3Jlc291cmNlcy9tc3Rsb2dnaW5nLnJlc291cmNlJztcbmltcG9ydCB7IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG8gfSBmcm9tICcuLi9yZXNvdXJjZXMvc2lnbmFsZXJpbmdzYmVlbGRpbmZvLnJlc291cmNlJztcbmltcG9ydCB7IEFycmF5TXVsdGltYXAgfSBmcm9tICcuLi91dGlsL211bHRpLW1hcCc7XG5pbXBvcnQgKiBhcyBNc3RBY3Rpb25zIGZyb20gJy4vYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7IHJpdGRlbGVuUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9yaXQtZGVsZW4ucmVkdWNlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXN0RWRpdG9yU3RhdGUge1xuICAgIHJpdERlbGVuOiBSaXRkZWVsW107IC8vIG9ucyBtb2RlbCB2YW4gdHJlaW5wYWRcblxuICAgIC8vIHB1aWNzIHZvb3IgU2VsZWN0aWVJbmZvc1xuICAgIHJpdFNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBhY3RpZU9wUml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGdlYnJva2VuUml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgYmVnaW5TZWluU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGVpbmRTZWluU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPjtcbiAgICBnZXBsYW5kZUFjdGllczogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPjtcblxuICAgIC8vIHB1aWNzIHZvb3IgY2xpY2tzXG4gICAgYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkczogc3RyaW5nW107XG4gICAgZWluZFNlaW5lbkNsaWNrYWJsZUlkczogc3RyaW5nW107XG4gICAgY29ubmVjdG9yQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcblxuICAgIC8vIHB1aWNzIHZvb3IgcmlnaHRjbGlja3NcbiAgICBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkczogc3RyaW5nW107XG5cbiAgICBuaWV1d2VSb3V0ZTogTmlldXdlUm91dGU7XG5cbiAgICBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgdmlzaWJsZVNiSW5mb0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IEFsZ2VtZW5lUml0SW5mb0R0bztcbiAgICBpYVZlcnNpZTogSW5mcmFNb2RlbDtcbiAgICBzdmdJbmZvczogU3ZnSW5mb1tdO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGVkaXRhYmxlOiBib29sZWFuO1xuICAgIG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkOiBib29sZWFuO1xuICAgIHByb2dyZXNzU3RhdGU6IFByb2dyZXNzU3RhdGU7XG4gICAgbmlldXdlQmV3ZWdpbmdlbjogQmV3ZWdpbmdbXTtcbiAgICBiYXNlVXJsOiBzdHJpbmc7XG4gICAgZm9jdXNJZHM6IHN0cmluZ1tdO1xuICAgIHNlbGVjdGVkUml0ZGVlbElkOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBQcm9ncmVzc1N0YXRlIHtcbiAgICBwcm9ncmVzc0luZGljYXRvcj86IFByb2dyZXNzSW5kaWNhdG9yO1xufVxuXG5jb25zdCBvbklkc0FjdGlvbkhhbmRsZXIgPSAoYWN0aW9uKSA9PiBvbihhY3Rpb24sIChfOiBzdHJpbmdbXSwgeyBpZHMgfSkgPT4gaWRzKTtcbmNvbnN0IGNyZWF0ZUlkc1JlZHVjZXIgPSAoYWN0aW9uKSA9PiBjcmVhdGVSZWR1Y2VyKFtdIGFzIHN0cmluZ1tdLCBvbklkc0FjdGlvbkhhbmRsZXIoYWN0aW9uKSk7XG5cbmV4cG9ydCBjb25zdCBlZGl0YWJsZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHRydWUsIG9uKE1zdEFjdGlvbnMuc2V0RWRpdGFibGUsIChfLCB7IGVkaXRhYmxlIH0pID0+IGVkaXRhYmxlKSk7XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0luZGljYXRvclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIHVuZGVmaW5lZCxcbiAgICBvbihNc3RBY3Rpb25zLlNob3dQcm9ncmVzcywgKCkgPT4gKHsgcHJvZ3Jlc3NJbmRpY2F0b3I6IHt9IH0pKSxcbiAgICBvbihNc3RBY3Rpb25zLkNsZWFyUHJvZ3Jlc3MsICgpID0+IHVuZGVmaW5lZClcbik7XG5cbmV4cG9ydCBjb25zdCBzdmdJbmZvUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoW10gYXMgU3ZnSW5mb1tdLCBvbihNc3RBY3Rpb25zLlNldFN2Z0luZm9zLCAoXywgeyBzdmdJbmZvcyB9KSA9PiBzdmdJbmZvcykpO1xuZXhwb3J0IGNvbnN0IGRlYnVnUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoZmFsc2UsIG9uKE1zdEFjdGlvbnMuU2V0RGVidWcsIChfLCB7IGRlYnVnIH0pID0+IGRlYnVnKSk7XG5leHBvcnQgY29uc3Qgcml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldFJpdFNlbGVjdGllSWRzKTtcblxuZXhwb3J0IGNvbnN0IGFjdGllT3BSaXRSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBuZXcgQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPigpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0R2VwbGFuZGVBY3RpZXMsIChfLCB7IGdlcGxhbmRlQWN0aWVzTWFwIH0pID0+IGdlcGxhbmRlQWN0aWVzTWFwKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUsIChnZXBsYW5kZUFjdGllcywgeyBhY3RpZSwgcHVpY3MgfSkgPT4ge1xuICAgICAgICBnZXBsYW5kZUFjdGllcy5wdXRBbGwoYWN0aWUsIHB1aWNzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKGdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZUdlcGxhbmRlQWN0aWUsIChnZXBsYW5kZUFjdGllcywgeyBhY3RpZSB9KSA9PiB7XG4gICAgICAgIGdlcGxhbmRlQWN0aWVzLmRlbGV0ZShhY3RpZSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChnZXBsYW5kZUFjdGllcyk7XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICBvbklkc0FjdGlvbkhhbmRsZXIoTXN0QWN0aW9ucy5TZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMpLFxuICAgIG9uKE1zdEFjdGlvbnMuQWRkR2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgcHVpY3MgfSkgPT4ge1xuICAgICAgICBwdWljcy5maWx0ZXIocHVpYyA9PiAhaWRzLmluY2x1ZGVzKHB1aWMpKS5mb3JFYWNoKHB1aWMgPT4gaWRzLnB1c2gocHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllLCAoaWRzOiBzdHJpbmdbXSwgeyBwdWljcyB9KSA9PiB7XG4gICAgICAgIHB1aWNzLmZpbHRlcihwdWljID0+IGlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcyA9IGlkcy5maWx0ZXIocCA9PiBwICE9PSBwdWljKSk7XG4gICAgICAgIHJldHVybiBbLi4uaWRzXTtcbiAgICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IG9uZ2VwbGFuZGVBY3RpZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPigpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllcywgKF8sIHsgb25nZXBsYW5kZUFjdGllc01hcCB9KSA9PiBvbmdlcGxhbmRlQWN0aWVzTWFwKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZSwgKG9uZ2VwbGFuZGVBY3RpZXMsIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZpbHRlcihwdWljID0+ICFvbmdlcGxhbmRlQWN0aWVzLmNvbnRhaW5zRW50cnkocHVpYywgb25nZXBsYW5kZUFjdGllKSlcbiAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocHVpYyA9PiBvbmdlcGxhbmRlQWN0aWVzLnB1dChwdWljLCBvbmdlcGxhbmRlQWN0aWUpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlT25nZXBsYW5kZUFjdGllLCAob25nZXBsYW5kZUFjdGllcywgeyBvbmdlcGxhbmRlQWN0aWUgfSkgPT4ge1xuICAgICAgICBvbmdlcGxhbmRlQWN0aWUucHVpY3MuZm9yRWFjaChwdWljID0+IG9uZ2VwbGFuZGVBY3RpZXMuZGVsZXRlKHB1aWMsIG9uZ2VwbGFuZGVBY3RpZSkpO1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGltYXAob25nZXBsYW5kZUFjdGllcyk7XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIHN0cmluZ1tdLFxuICAgIC8vIG9uKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHMsIChfLCB7IGlkcyB9KSA9PiBpZHMpLFxuICAgIG9uSWRzQWN0aW9uSGFuZGxlcihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZpbHRlcihwdWljID0+ICFpZHMuaW5jbHVkZXMocHVpYykpLmZvckVhY2gocHVpYyA9PiBpZHMucHVzaChwdWljKSk7XG4gICAgICAgIHJldHVybiBbLi4uaWRzXTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZU9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWQsIChpZHM6IHN0cmluZ1tdLCB7IGlkIH0pID0+IFtdLmNvbmNhdChpZHMuaW5jbHVkZXMoaWQpID8gaWRzLmZpbHRlcihfaWQgPT4gX2lkICE9PSBpZCkgOiBpZHMpKVxuKTtcblxuZXhwb3J0IGNvbnN0IGdlYnJva2VuUml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBiZWdpblNlaW5TZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGVpbmRTZWluU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEVpbmRTZWluU2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGVpbmRTZWluZW5DbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEVpbmRTZWluZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGNvbm5lY3RvckNsaWNrYWJsZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0Q29ubmVjdG9yZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRCZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcyk7XG5cbmV4cG9ydCBjb25zdCBuaWV1d2VSb3V0ZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIG5ldyBOaWV1d2VSb3V0ZShudWxsLCBudWxsKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldE5pZXV3Um91dGVCZWdpblNlaW4sIChfLCB7IHN0YXJ0U2Vpbk9wUml0ZGVlbCB9KSA9PiBuZXcgTmlldXdlUm91dGUoc3RhcnRTZWluT3BSaXRkZWVsLCBudWxsKSksXG4gICAgb24oTXN0QWN0aW9ucy5TZXROaWV1d1JvdXRlRWluZFNlaW4sIChuaWV1d2VSb3V0ZSwgeyBjb21iaW5hdGllVm9vckVpbmRzZWluIH0pID0+IG5ldyBOaWV1d2VSb3V0ZShuaWV1d2VSb3V0ZS5iZWdpblNlaW5PcFJpdGRlZWwsIGNvbWJpbmF0aWVWb29yRWluZHNlaW4pKSxcbiAgICBvbihNc3RBY3Rpb25zLlJlc2V0TmlldXdlUm91dGUsICgpID0+IG5ldyBOaWV1d2VSb3V0ZShudWxsLCBudWxsKSlcbik7XG5cbmV4cG9ydCBjb25zdCBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgW10gYXMgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0U2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBkdG9zKSxcbiAgICBvbihNc3RBY3Rpb25zLlVwZGF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gWy4uLmR0b3NdKVxuKTtcblxuZXhwb3J0IGNvbnN0IHZpc2libGVTYkluZm9EdG9zUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgW10gYXMgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0VmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gZHRvcyksXG4gICAgb24oTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBbLi4uZHRvc10pXG4pO1xuXG5leHBvcnQgY29uc3QgaWFWZXJzaWVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7fSxcbiAgICBvbihNc3RBY3Rpb25zLlNldElhVmVyc2llLFxuICAgICAgICAoXywgeyBpYVZlcnNpZSB9KSA9PiBPYmplY3QuYXNzaWduKHt9LCBpYVZlcnNpZSwgeyB2ZXJzaWU6IGlhVmVyc2llLnZlcnNpZS50b1VwcGVyQ2FzZSgpIH0pKSk7XG5leHBvcnQgY29uc3QgYWxnZW1lbmVSaXRJbmZvRHRvUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIobmV3IEFsZ2VtZW5lUml0SW5mb0R0bygpLCBvbihNc3RBY3Rpb25zLlNldEFsZ2VtZW5lUml0SW5mbywgKF8sIHsgYWxnZW1lbmVSaXRJbmZvRHRvIH0pID0+IGFsZ2VtZW5lUml0SW5mb0R0bykpO1xuZXhwb3J0IGNvbnN0IG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoZmFsc2UsIG9uKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllc0JlcGFhbGQsIChfLCB7IGJlcGFhbGQgfSkgPT4gYmVwYWFsZCkpO1xuXG5leHBvcnQgY29uc3QgbmlldXdlQmV3ZWdpbmdSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7IH0sIG9uKE1zdEFjdGlvbnMuVXBkYXRlUml0LCAoXywgeyBiZXdlZ2luZ2VuIH0pID0+IGJld2VnaW5nZW4pKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VVcmxSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih1bmRlZmluZWQsIG9uKE1zdEFjdGlvbnMuU2V0QmFzZVVybCwgKF8sIHsgYmFzZVVybCB9KSA9PiBiYXNlVXJsKSk7XG5cbmV4cG9ydCBjb25zdCBmb2N1c0lkc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHsgfSwgb24oTXN0QWN0aW9ucy5mb2N1c09wSWRzLCAoXywgeyBwdWljcyB9KSA9PiBwdWljcykpO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0ZWRSaXRkZWVsSWRSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7fSwgb24oTXN0QWN0aW9ucy5TZXRTZWxlY3RlZFJpdGRlZWwsIChfLCB7IGlkIH0pID0+IGlkKSk7XG5cbmV4cG9ydCBjb25zdCBzdG9yZVJlZHVjZXJzID0ge1xuICAgIHJpdERlbGVuOiByaXRkZWxlblJlZHVjZXIsXG4gICAgcml0U2VsZWN0aWVJZHM6IHJpdFNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhY3RpZU9wUml0U2VsZWN0aWVJZHM6IGFjdGllT3BSaXRTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVzOiBvbmdlcGxhbmRlQWN0aWVSZWR1Y2VyLFxuICAgIGdlYnJva2VuUml0U2VsZWN0aWVJZHM6IGdlYnJva2VuUml0U2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkczogYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogYmVnaW5TZWluU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGVpbmRTZWluU2VsZWN0aWVJZHM6IGVpbmRTZWluU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHM6IGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGVpbmRTZWluZW5DbGlja2FibGVJZHM6IGVpbmRTZWluZW5DbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGNvbm5lY3RvckNsaWNrYWJsZUlkczogY29ubmVjdG9yQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkczogYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIG5pZXV3ZVJvdXRlOiBuaWV1d2VSb3V0ZVJlZHVjZXIsXG4gICAgZ2VwbGFuZGVBY3RpZXM6IGFjdGllT3BSaXRSZWR1Y2VyLFxuICAgIHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3M6IHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3NSZWR1Y2VyLFxuICAgIHZpc2libGVTYkluZm9EdG9zOiB2aXNpYmxlU2JJbmZvRHRvc1JlZHVjZXIsXG4gICAgaWFWZXJzaWU6IGlhVmVyc2llUmVkdWNlcixcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IGFsZ2VtZW5lUml0SW5mb0R0b1JlZHVjZXIsXG4gICAgc3ZnSW5mb3M6IHN2Z0luZm9SZWR1Y2VyLFxuICAgIGRlYnVnOiBkZWJ1Z1JlZHVjZXIsXG4gICAgZWRpdGFibGU6IGVkaXRhYmxlUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZDogb25nZXBsYW5kZUFjdGllc0JlcGFhbGRSZWR1Y2VyLFxuICAgIHByb2dyZXNzU3RhdGU6IHByb2dyZXNzSW5kaWNhdG9yUmVkdWNlcixcbiAgICBuaWV1d2VCZXdlZ2luZ2VuOiBuaWV1d2VCZXdlZ2luZ1JlZHVjZXIsXG4gICAgYmFzZVVybDogYmFzZVVybFJlZHVjZXIsXG4gICAgZm9jdXNJZHM6IGZvY3VzSWRzUmVkdWNlcixcbiAgICBzZWxlY3RlZFJpdGRlZWxJZDogc2VsZWN0ZWRSaXRkZWVsSWRSZWR1Y2VyXG59O1xuXG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LWVkaXRvci1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0MsYUFBYSxFQUFFLEVBQUUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBaUQ5RCxNQUFNLGtCQUFrQixHQUFHLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRyxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFXLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFdkgsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUNqRCxFQUFvQixFQUNwQixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUs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QixLQUFLLEVBQUUsWUFBWTtJQUNuQixRQUFRLEVBQUUsZUFBZTtJQUN6Qix1QkFBdUIsRUFBRSw4QkFBOEI7SUFDdkQsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxnQkFBZ0IsRUFBRSxxQkFBcUI7SUFDdkMsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFLGVBQWU7SUFDekIsaUJBQWlCLEVBQUUsd0JBQXdCO0NBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN2Z0luZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQge0FjdGlvbkNyZWF0b3IsIEFjdGlvblJlZHVjZXJNYXAsIGNyZWF0ZVJlZHVjZXIsIG9ufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBbGdlbWVuZVJpdER0byB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9vcGVuYXBpJztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5lbnRpdHknO1xuaW1wb3J0IHsgTmlldXdlUm91dGUgfSBmcm9tICcuLi9tb2RlbC9uaWV1d2Utcm91dGUnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcsIEluZnJhTW9kZWwgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0byB9IGZyb20gJy4uL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQXJyYXlNdWx0aW1hcCB9IGZyb20gJy4uL3V0aWwvbXVsdGktbWFwJztcbmltcG9ydCAqIGFzIE1zdEFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHsgcml0ZGVsZW5SZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3JpdC1kZWxlbi5yZWR1Y2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBNc3RFZGl0b3JTdGF0ZSB7XG4gICAgcml0RGVsZW46IFJpdGRlZWxbXTsgLy8gb25zIG1vZGVsIHZhbiB0cmVpbnBhZFxuXG4gICAgLy8gcHVpY3Mgdm9vciBTZWxlY3RpZUluZm9zXG4gICAgcml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGFjdGllT3BSaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZ2Vicm9rZW5SaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZWluZFNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIG9uZ2VwbGFuZGVBY3RpZXM6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+O1xuICAgIGdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+O1xuXG4gICAgLy8gcHVpY3Mgdm9vciBjbGlja3NcbiAgICBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBjb25uZWN0b3JDbGlja2FibGVJZHM6IHN0cmluZ1tdO1xuXG4gICAgLy8gcHVpY3Mgdm9vciByaWdodGNsaWNrc1xuICAgIGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcblxuICAgIG5pZXV3ZVJvdXRlPzogTmlldXdlUm91dGU7XG5cbiAgICBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgdmlzaWJsZVNiSW5mb0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IEFsZ2VtZW5lUml0RHRvO1xuICAgIGlhVmVyc2llOiBJbmZyYU1vZGVsO1xuICAgIHN2Z0luZm9zOiBTdmdJbmZvW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgZWRpdGFibGU6IGJvb2xlYW47XG4gICAgb25nZXBsYW5kZUFjdGllc0JlcGFhbGQ6IGJvb2xlYW47XG4gICAgcHJvZ3Jlc3NTdGF0ZTogUHJvZ3Jlc3NTdGF0ZTtcbiAgICBuaWV1d2VCZXdlZ2luZ2VuOiBCZXdlZ2luZ1tdO1xuICAgIGJhc2VVcmw6IHN0cmluZztcbiAgICBmb2N1c0lkczogc3RyaW5nW107XG4gICAgc2VsZWN0ZWRSaXRkZWVsSWQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFByb2dyZXNzU3RhdGUge1xuICAgIHByb2dyZXNzSW5kaWNhdG9yPzogUHJvZ3Jlc3NJbmRpY2F0b3I7XG59XG5cbnR5cGUgSWRzQWN0aW9uQ3JlYXRvciA9IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChpZHM6IHN0cmluZ1tdKSA9PiB7IGlkczogc3RyaW5nW10gfSAmIHsgdHlwZTogc3RyaW5nIH0+O1xuXG5jb25zdCBvbklkc0FjdGlvbkhhbmRsZXIgPSAoYWN0aW9uOiBJZHNBY3Rpb25DcmVhdG9yKSA9PiBvbihhY3Rpb24sIChfOiBzdHJpbmdbXSwgeyBpZHMgfSkgPT4gaWRzKTtcbmNvbnN0IGNyZWF0ZUlkc1JlZHVjZXIgPSAoYWN0aW9uOiBJZHNBY3Rpb25DcmVhdG9yKSA9PiBjcmVhdGVSZWR1Y2VyPHN0cmluZ1tdPihbXSwgb25JZHNBY3Rpb25IYW5kbGVyKGFjdGlvbikpO1xuXG5leHBvcnQgY29uc3QgZWRpdGFibGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxib29sZWFuPih0cnVlLCBvbihNc3RBY3Rpb25zLnNldEVkaXRhYmxlLCAoXywgeyBlZGl0YWJsZSB9KSA9PiBlZGl0YWJsZSkpO1xuXG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NJbmRpY2F0b3JSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxQcm9ncmVzc1N0YXRlPihcbiAgICB7IH0gYXMgUHJvZ3Jlc3NTdGF0ZSxcbiAgICBvbihNc3RBY3Rpb25zLlNob3dQcm9ncmVzcywgKCkgPT4gKHsgcHJvZ3Jlc3NJbmRpY2F0b3I6IG5ldyBQcm9ncmVzc0luZGljYXRvcigpIH0gYXMgUHJvZ3Jlc3NTdGF0ZSkpLFxuICAgIG9uKE1zdEFjdGlvbnMuQ2xlYXJQcm9ncmVzcywgKCkgPT4gKHsgfSkpXG4pO1xuXG5leHBvcnQgY29uc3Qgc3ZnSW5mb1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPFN2Z0luZm9bXT4oW10sIG9uKE1zdEFjdGlvbnMuU2V0U3ZnSW5mb3MsIChfLCB7IHN2Z0luZm9zIH0pID0+IHN2Z0luZm9zKSk7XG5leHBvcnQgY29uc3QgZGVidWdSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxib29sZWFuPihmYWxzZSwgb24oTXN0QWN0aW9ucy5TZXREZWJ1ZywgKF8sIHsgZGVidWcgfSkgPT4gZGVidWcpKTtcbmV4cG9ydCBjb25zdCByaXRTZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0Uml0U2VsZWN0aWVJZHMpO1xuXG5leHBvcnQgY29uc3QgYWN0aWVPcFJpdFJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4+KFxuICAgIG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCksXG4gICAgb24oTXN0QWN0aW9ucy5TZXRHZXBsYW5kZUFjdGllcywgKF8sIHsgZ2VwbGFuZGVBY3RpZXNNYXAgfSkgPT4gZ2VwbGFuZGVBY3RpZXNNYXApLFxuICAgIG9uKE1zdEFjdGlvbnMuQWRkR2VwbGFuZGVBY3RpZSwgKGdlcGxhbmRlQWN0aWVzLCB7IGFjdGllLCBwdWljcyB9KSA9PiB7XG4gICAgICAgIGdlcGxhbmRlQWN0aWVzLnB1dEFsbChhY3RpZSwgcHVpY3MpO1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGltYXAoZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlR2VwbGFuZGVBY3RpZSwgKGdlcGxhbmRlQWN0aWVzLCB7IGFjdGllIH0pID0+IHtcbiAgICAgICAgZ2VwbGFuZGVBY3RpZXMuZGVsZXRlKGFjdGllKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKGdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IGFjdGllT3BSaXRTZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPHN0cmluZ1tdPihcbiAgICBbXSxcbiAgICBvbklkc0FjdGlvbkhhbmRsZXIoTXN0QWN0aW9ucy5TZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMpLFxuICAgIG9uKE1zdEFjdGlvbnMuQWRkR2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgcHVpY3MgfSkgPT4ge1xuICAgICAgICBwdWljcy5maWx0ZXIocHVpYyA9PiAhaWRzLmluY2x1ZGVzKHB1aWMpKS5mb3JFYWNoKHB1aWMgPT4gaWRzLnB1c2gocHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllLCAoaWRzOiBzdHJpbmdbXSwgeyBwdWljcyB9KSA9PiB7XG4gICAgICAgIHB1aWNzLmZpbHRlcihwdWljID0+IGlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcyA9IGlkcy5maWx0ZXIocCA9PiBwICE9PSBwdWljKSk7XG4gICAgICAgIHJldHVybiBbLi4uaWRzXTtcbiAgICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IG9uZ2VwbGFuZGVBY3RpZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+PihcbiAgICBuZXcgQXJyYXlNdWx0aW1hcDxzdHJpbmcsIE9uZ2VwbGFuZGVBY3RpZT4oKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXMsIChfLCB7IG9uZ2VwbGFuZGVBY3RpZXNNYXAgfSkgPT4gb25nZXBsYW5kZUFjdGllc01hcCksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRPbmdlcGxhbmRlQWN0aWUsIChvbmdlcGxhbmRlQWN0aWVzLCB7IG9uZ2VwbGFuZGVBY3RpZSB9KSA9PiB7XG4gICAgICAgIG9uZ2VwbGFuZGVBY3RpZS5wdWljcy5maWx0ZXIocHVpYyA9PiAhb25nZXBsYW5kZUFjdGllcy5jb250YWluc0VudHJ5KHB1aWMsIG9uZ2VwbGFuZGVBY3RpZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKHB1aWMgPT4gb25nZXBsYW5kZUFjdGllcy5wdXQocHVpYywgb25nZXBsYW5kZUFjdGllKSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChvbmdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZU9uZ2VwbGFuZGVBY3RpZSwgKG9uZ2VwbGFuZGVBY3RpZXMsIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZvckVhY2gocHVpYyA9PiBvbmdlcGxhbmRlQWN0aWVzLmRlbGV0ZShwdWljLCBvbmdlcGxhbmRlQWN0aWUpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pXG4pO1xuXG5leHBvcnQgY29uc3Qgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxzdHJpbmdbXT4oXG4gICAgW10sXG4gICAgb25JZHNBY3Rpb25IYW5kbGVyKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHMpLFxuICAgIG9uKE1zdEFjdGlvbnMuQWRkT25nZXBsYW5kZUFjdGllLCAoaWRzOiBzdHJpbmdbXSwgeyBvbmdlcGxhbmRlQWN0aWUgfSkgPT4ge1xuICAgICAgICBvbmdlcGxhbmRlQWN0aWUucHVpY3MuZmlsdGVyKHB1aWMgPT4gIWlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcy5wdXNoKHB1aWMpKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pZHNdO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlT25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZCwgKGlkczogc3RyaW5nW10sIHsgaWQgfSkgPT4gaWRzLmluY2x1ZGVzKGlkKSA/IGlkcy5maWx0ZXIoX2lkID0+IF9pZCAhPT0gaWQpIDogaWRzKVxuKTtcblxuZXhwb3J0IGNvbnN0IGdlYnJva2VuUml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBiZWdpblNlaW5TZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGVpbmRTZWluU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEVpbmRTZWluU2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGVpbmRTZWluZW5DbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEVpbmRTZWluZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGNvbm5lY3RvckNsaWNrYWJsZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0Q29ubmVjdG9yZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRCZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcyk7XG5cbmV4cG9ydCBjb25zdCBuaWV1d2VSb3V0ZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPE5pZXV3ZVJvdXRlIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICAgb24oTXN0QWN0aW9ucy5TZXROaWV1d1JvdXRlQmVnaW5TZWluLCAoXywgeyBzdGFydFNlaW5PcFJpdGRlZWwgfSkgPT4gbmV3IE5pZXV3ZVJvdXRlKHN0YXJ0U2Vpbk9wUml0ZGVlbCwgbnVsbCkpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0TmlldXdSb3V0ZUVpbmRTZWluLCAobmlldXdlUm91dGUsIHsgY29tYmluYXRpZVZvb3JFaW5kc2VpbiB9KSA9PiBuZXcgTmlldXdlUm91dGUobmlldXdlUm91dGUuYmVnaW5TZWluT3BSaXRkZWVsLCBjb21iaW5hdGllVm9vckVpbmRzZWluKSksXG4gICAgb24oTXN0QWN0aW9ucy5SZXNldE5pZXV3ZVJvdXRlLCAoKSA9PiB1bmRlZmluZWQpXG4pO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXT4oXG4gICAgW10sXG4gICAgb24oTXN0QWN0aW9ucy5TZXRTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCAoXywgeyBkdG9zIH0pID0+IGR0b3MpLFxuICAgIG9uKE1zdEFjdGlvbnMuVXBkYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBbLi4uZHRvc10pXG4pO1xuXG5leHBvcnQgY29uc3QgdmlzaWJsZVNiSW5mb0R0b3NSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10+KFxuICAgIFtdLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0VmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gZHRvcyksXG4gICAgb24oTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBbLi4uZHRvc10pXG4pO1xuXG5leHBvcnQgY29uc3QgaWFWZXJzaWVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxJbmZyYU1vZGVsPih7dmVyc2llOiAndW5rbm93bicsIGluZ2FuZ3NEYXR1bTogbmV3IERhdGUoKX0gYXMgSW5mcmFNb2RlbCxcbiAgICBvbihNc3RBY3Rpb25zLlNldElhVmVyc2llLFxuICAgICAgICAoXywgeyBpYVZlcnNpZSB9KSA9PiBPYmplY3QuYXNzaWduKHt9LCBpYVZlcnNpZSwgeyB2ZXJzaWU6IGlhVmVyc2llLnZlcnNpZS50b1VwcGVyQ2FzZSgpIH0pKSk7XG5leHBvcnQgY29uc3QgYWxnZW1lbmVSaXRJbmZvRHRvUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8QWxnZW1lbmVSaXREdG8+KHsgfSBhcyBBbGdlbWVuZVJpdER0bywgb24oTXN0QWN0aW9ucy5TZXRBbGdlbWVuZVJpdEluZm8sIChfLCB7IGFsZ2VtZW5lUml0SW5mb0R0byB9KSA9PiBhbGdlbWVuZVJpdEluZm9EdG8pKTtcbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZFJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPGJvb2xlYW4+KGZhbHNlLCBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkLCAoXywgeyBiZXBhYWxkIH0pID0+IGJlcGFhbGQpKTtcblxuZXhwb3J0IGNvbnN0IG5pZXV3ZUJld2VnaW5nUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8QmV3ZWdpbmdbXT4oW10sIG9uKE1zdEFjdGlvbnMuVXBkYXRlUml0LCAoXywgeyBiZXdlZ2luZ2VuIH0pID0+IGJld2VnaW5nZW4pKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VVcmxSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxzdHJpbmc+KCcnLCBvbihNc3RBY3Rpb25zLlNldEJhc2VVcmwsIChfLCB7IGJhc2VVcmwgfSkgPT4gYmFzZVVybCkpO1xuXG5leHBvcnQgY29uc3QgZm9jdXNJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxzdHJpbmdbXT4oW10sIG9uKE1zdEFjdGlvbnMuZm9jdXNPcElkcywgKF8sIHsgcHVpY3MgfSkgPT4gcHVpY3MpKTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkUml0ZGVlbElkUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8bnVtYmVyPigtMSwgb24oTXN0QWN0aW9ucy5TZXRTZWxlY3RlZFJpdGRlZWwsIChfLCB7IGlkIH0pID0+IGlkKSk7XG5cbmV4cG9ydCBjb25zdCBzdG9yZVJlZHVjZXJzID0ge1xuICAgIHJpdERlbGVuOiByaXRkZWxlblJlZHVjZXIsXG4gICAgcml0U2VsZWN0aWVJZHM6IHJpdFNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhY3RpZU9wUml0U2VsZWN0aWVJZHM6IGFjdGllT3BSaXRTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVzOiBvbmdlcGxhbmRlQWN0aWVSZWR1Y2VyLFxuICAgIGdlYnJva2VuUml0U2VsZWN0aWVJZHM6IGdlYnJva2VuUml0U2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkczogYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogYmVnaW5TZWluU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGVpbmRTZWluU2VsZWN0aWVJZHM6IGVpbmRTZWluU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHM6IGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGVpbmRTZWluZW5DbGlja2FibGVJZHM6IGVpbmRTZWluZW5DbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGNvbm5lY3RvckNsaWNrYWJsZUlkczogY29ubmVjdG9yQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkczogYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIG5pZXV3ZVJvdXRlOiBuaWV1d2VSb3V0ZVJlZHVjZXIsXG4gICAgZ2VwbGFuZGVBY3RpZXM6IGFjdGllT3BSaXRSZWR1Y2VyLFxuICAgIHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3M6IHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3NSZWR1Y2VyLFxuICAgIHZpc2libGVTYkluZm9EdG9zOiB2aXNpYmxlU2JJbmZvRHRvc1JlZHVjZXIsXG4gICAgaWFWZXJzaWU6IGlhVmVyc2llUmVkdWNlcixcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IGFsZ2VtZW5lUml0SW5mb0R0b1JlZHVjZXIsXG4gICAgc3ZnSW5mb3M6IHN2Z0luZm9SZWR1Y2VyLFxuICAgIGRlYnVnOiBkZWJ1Z1JlZHVjZXIsXG4gICAgZWRpdGFibGU6IGVkaXRhYmxlUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZDogb25nZXBsYW5kZUFjdGllc0JlcGFhbGRSZWR1Y2VyLFxuICAgIHByb2dyZXNzU3RhdGU6IHByb2dyZXNzSW5kaWNhdG9yUmVkdWNlcixcbiAgICBuaWV1d2VCZXdlZ2luZ2VuOiBuaWV1d2VCZXdlZ2luZ1JlZHVjZXIsXG4gICAgYmFzZVVybDogYmFzZVVybFJlZHVjZXIsXG4gICAgZm9jdXNJZHM6IGZvY3VzSWRzUmVkdWNlcixcbiAgICBzZWxlY3RlZFJpdGRlZWxJZDogc2VsZWN0ZWRSaXRkZWVsSWRSZWR1Y2VyXG59IGFzIEFjdGlvblJlZHVjZXJNYXA8TXN0RWRpdG9yU3RhdGU+O1xuIl19
@@ -59,4 +59,4 @@ function addRitdeelActieFunc(ritDelen, { ritDeel, actie }) {
59
59
  ritDeel.acties.push(actie);
60
60
  return [...ritDelen];
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0LWRlbGVuLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc3RhdGUvcmVkdWNlci9yaXQtZGVsZW4ucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLEdBQUcsb0JBQW9CLENBQUM7QUFFakcsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrRSxhQUFhLENBQ3ZHLEVBQWUsRUFDZixFQUFFLENBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFLDBCQUEwQixDQUFDLEVBQ3RFLEVBQUUsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsRUFDaEUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSwwQkFBMEIsQ0FBQyxFQUN0RSxFQUFFLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLGdDQUFnQyxDQUFDLEVBQ2xGLEVBQUUsQ0FBQyxlQUFlLENBQUMsaUNBQWlDLEVBQUUscUNBQXFDLENBQUMsRUFDNUYsRUFBRSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsRUFDcEQsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQyxFQUM5RCxFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUMzRCxDQUFDO0FBRUYsU0FBUywwQkFBMEIsQ0FBQyxDQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUU7SUFDMUQsT0FBTyxDQUFDLEdBQUcs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QUUsT0FBTyxFQUFFLEtBQUssRUFBRTtJQUNuRSxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFCLDRGQUE0RjtRQUM1RixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsTUFBTTtRQUNWLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsUUFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7SUFDaEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvblJlZHVjZXIsIGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUml0ZGVlbCwgUml0ZGVlbFppY2h0YmFhcmhlaWQgfSBmcm9tICcuLi8uLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCAqIGFzIFJpdGRlbGVuQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL3JpdGRlbGVuLmFjdGlvbnMnO1xuXG5jb25zdCB7IFpJQ0hUQkFBUiwgT05aSUNIVEJBQVJfRE9PUl9HRUJSVUlLRVIsIE9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSB9ID0gUml0ZGVlbFppY2h0YmFhcmhlaWQ7XG5cbmV4cG9ydCBjb25zdCByaXRkZWxlblJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uml0ZGVlbFtdLCBSaXRkZWxlbkFjdGlvbnMuUml0RGVlbEFjdGlvbnNVbmlvbj4gPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIFJpdGRlZWxbXSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMuc2V0Uml0ZGVsZW5BZnRlclVwZGF0ZSwgc2V0Uml0RGVsZW5BZnRlclVwZGF0ZUZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy5zZXRSaXRkZWVsWmljaHRiYWFyLCBzZXRSaXRkZWVsWmljaHRiYWFyRnVuYyksXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLnRvZ2dsZVJpdGRlZWxaaWNodGJhYXIsIHRvZ2dsZVJpdGRlZWxaaWNodGJhYXJGdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMuc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbiwgc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbkZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy50b2dnbGVaaWNodGJhYXJoZWlkVm9vckJld2VnaW5nZW4sIHRvZ2dsZVppY2h0YmFhcmhlaWRWb29yQmV3ZWdpbmdlbkZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy5kZWxldGVSaXRkZWVsLCBkZWxldGVSaXRkZWVsRnVuYyksXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLmRlbGV0ZVJpdGRlZWxBY3RpZSwgZGVsZXRlUml0ZGVlbEFjdGllRnVuYyksXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLmFkZFJpdGRlZWxBY3RpZSwgYWRkUml0ZGVlbEFjdGllRnVuYylcbik7XG5cbmZ1bmN0aW9uIHNldFJpdERlbGVuQWZ0ZXJVcGRhdGVGdW5jKF86IFJpdGRlZWxbXSwgeyByaXREZWxlbiB9KTogUml0ZGVlbFtdIHtcbiAgICByZXR1cm4gWy4uLnJpdERlbGVuXTtcbn1cblxuZnVuY3Rpb24gc2V0Uml0ZGVlbFppY2h0YmFhckZ1bmMocml0RGVsZW46IFJpdGRlZWxbXSwgeyByaXREZWVsLCB6aWNodGJhYXIgfSk6IFJpdGRlZWxbXSB7XG4gICAgY29uc3QgZ2V6ZXRSaXRkZWVsID0gcml0RGVlbC5jb3B5TWV0WmljaHRiYWFyaGVpZCh6aWNodGJhYXIgPyBaSUNIVEJBQVIgOiBPTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUik7XG4gICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIGdlemV0Uml0ZGVlbCk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZVJpdGRlZWxaaWNodGJhYXJGdW5jKHJpdERlbGVuOiBSaXRkZWVsW10sIHsgcml0RGVlbCB9KTogUml0ZGVlbFtdIHtcbiAgICBjb25zdCBnZXRvZ2dlbGRlUml0ZGVlbCA9IHJpdERlZWwuY29weU1ldFppY2h0YmFhcmhlaWQocml0RGVlbC5pc1ppY2h0YmFhcigpID8gT05aSUNIVEJBQVJfRE9PUl9HRUJSVUlLRVIgOiBaSUNIVEJBQVIpO1xuICAgIHZlcnZhbmdSaXRkZWVsKHJpdERlbGVuLCByaXREZWVsLCBnZXRvZ2dlbGRlUml0ZGVlbCk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHNldFppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW5GdW5jKHJpdERlbGVuOiBSaXRkZWVsW10sIHsgemljaHRiYWFyaGVpZCB9KTogUml0ZGVlbFtdIHtcbiAgICByaXREZWxlbi5maWx0ZXIociA9PiByLmdldFppY2h0YmFhcmhlaWQoKSAhPT0gT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNKS5mb3JFYWNoKHJpdERlZWwgPT4ge1xuICAgICAgICB2ZXJ2YW5nUml0ZGVlbChyaXREZWxlbiwgcml0RGVlbCwgcml0RGVlbC5jb3B5TWV0WmljaHRiYWFyaGVpZCh6aWNodGJhYXJoZWlkID8gWklDSFRCQUFSIDogT05aSUNIVEJBQVJfRE9PUl9HRUJSVUlLRVIpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gWy4uLnJpdERlbGVuXTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlWmljaHRiYWFyaGVpZFZvb3JCZXdlZ2luZ2VuRnVuYyhyaXREZWxlbjogUml0ZGVlbFtdLCB7IGJld2VnaW5nSWRzIH0pOiBSaXRkZWVsW10ge1xuICAgIHJpdERlbGVuLmZpbHRlcihyID0+IHIuYmV3ZWdpbmcgJiYgYmV3ZWdpbmdJZHMuaW5jbHVkZXMoTnVtYmVyKHIuZ2V0QmV3ZWdpbmdJZCgpKSkpLmZvckVhY2gocml0RGVlbCA9PiB7XG4gICAgICAgIHZlcnZhbmdSaXRkZWVsKHJpdERlbGVuLCByaXREZWVsLCByaXREZWVsLmNvcHlNZXRaaWNodGJhYXJoZWlkKFpJQ0hUQkFBUikpO1xuICAgIH0pO1xuICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xufVxuXG5mdW5jdGlvbiB2ZXJ2YW5nUml0ZGVlbChyaXRkZWxlbjogUml0ZGVlbFtdLCBvcmdSaXRkZWVsOiBSaXRkZWVsLCBuZXdSaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaXRkZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocml0ZGVsZW5baV0gPT09IG9yZ1JpdGRlZWwpIHtcbiAgICAgICAgICAgIHJpdGRlbGVuW2ldID0gbmV3Uml0ZGVlbDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkZWxldGVSaXRkZWVsRnVuYyhyaXREZWxlbjogUml0ZGVlbFtdLCB7IHJpdERlZWwgfSk6IFJpdGRlZWxbXSB7XG4gICAgY29uc3QgaWR4ID0gcml0RGVsZW4uaW5kZXhPZihyaXREZWVsKTtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgcml0RGVsZW4uc3BsaWNlKGlkeCwgMSk7XG4gICAgfVxuICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xufVxuXG5mdW5jdGlvbiBkZWxldGVSaXRkZWVsQWN0aWVGdW5jKHJpdERlbGVuOiBSaXRkZWVsW10sIHsgcml0RGVlbCwgYWN0aWUgfSk6IFJpdGRlZWxbXSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHJpdERlbGVuKSB7XG4gICAgICAgIC8vIFdlIGdlYnJ1aWtlbiBlcXVhbHMgb21kYXQgaGV0IHdlbCBvZiBuaWV0IHppY2h0YmFhciB6aWpuIHZhbiBlZW4gcml0ZGVlbCBuaWV0IHJlbGV2YW50IGlzXG4gICAgICAgIGlmIChpdGVtLmVxdWFscyhyaXREZWVsKSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aWVzID0gcml0RGVlbC5hY3RpZXM7XG4gICAgICAgICAgICBjb25zdCBhaWR4ID0gYWN0aWVzLmluZGV4T2YoYWN0aWUpO1xuICAgICAgICAgICAgYWN0aWVzLnNwbGljZShhaWR4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xufVxuXG5mdW5jdGlvbiBhZGRSaXRkZWVsQWN0aWVGdW5jKHJpdERlbGVuOiBSaXRkZWVsW10sIHsgcml0RGVlbCwgYWN0aWUgfSk6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVlbC5hY3RpZXMucHVzaChhY3RpZSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0LWRlbGVuLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc3RhdGUvcmVkdWNlci9yaXQtZGVsZW4ucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEUsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLEdBQUcsb0JBQW9CLENBQUM7QUFFakcsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrRSxhQUFhLENBQ3ZHLEVBQWUsRUFDZixFQUFFLENBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFLDBCQUEwQixDQUFDLEVBQ3RFLEVBQUUsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsRUFDaEUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSwwQkFBMEIsQ0FBQyxFQUN0RSxFQUFFLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLGdDQUFnQyxDQUFDLEVBQ2xGLEVBQUUsQ0FBQyxlQUFlLENBQUMsaUNBQWlDLEVBQUUscUNBQXFDLENBQUMsRUFDNUYsRUFBRSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsRUFDcEQsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQyxFQUM5RCxFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUMzRCxDQUFDO0FBRUYsU0FBUywwQkFBMEIsQ0FBQyxDQUFZLEVBQUUsRUFBRSxRQUFRLEVBQTJCO0lBQ25GLE9BQU8sQ0FBQyxHQUFH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QzNCLFFBQW1CLEVBQ25CLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBc0M7SUFFdEQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQiw0RkFBNEY7UUFDNUYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU07UUFDVixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUN4QixRQUFtQixFQUNuQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQXNDO0lBRXRELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25SZWR1Y2VyLCBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFJpdGRlZWwsIFJpdGRlZWxaaWNodGJhYXJoZWlkIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgKiBhcyBSaXRkZWxlbkFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcblxuY29uc3QgeyBaSUNIVEJBQVIsIE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSLCBPTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0gfSA9IFJpdGRlZWxaaWNodGJhYXJoZWlkO1xuXG5leHBvcnQgY29uc3Qgcml0ZGVsZW5SZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFJpdGRlZWxbXSwgUml0ZGVsZW5BY3Rpb25zLlJpdERlZWxBY3Rpb25zVW5pb24+ID0gY3JlYXRlUmVkdWNlcihcbiAgICBbXSBhcyBSaXRkZWVsW10sXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLnNldFJpdGRlbGVuQWZ0ZXJVcGRhdGUsIHNldFJpdERlbGVuQWZ0ZXJVcGRhdGVGdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMuc2V0Uml0ZGVlbFppY2h0YmFhciwgc2V0Uml0ZGVlbFppY2h0YmFhckZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy50b2dnbGVSaXRkZWVsWmljaHRiYWFyLCB0b2dnbGVSaXRkZWVsWmljaHRiYWFyRnVuYyksXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLnNldFppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW4sIHNldFppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW5GdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMudG9nZ2xlWmljaHRiYWFyaGVpZFZvb3JCZXdlZ2luZ2VuLCB0b2dnbGVaaWNodGJhYXJoZWlkVm9vckJld2VnaW5nZW5GdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMuZGVsZXRlUml0ZGVlbCwgZGVsZXRlUml0ZGVlbEZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy5kZWxldGVSaXRkZWVsQWN0aWUsIGRlbGV0ZVJpdGRlZWxBY3RpZUZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy5hZGRSaXRkZWVsQWN0aWUsIGFkZFJpdGRlZWxBY3RpZUZ1bmMpXG4pO1xuXG5mdW5jdGlvbiBzZXRSaXREZWxlbkFmdGVyVXBkYXRlRnVuYyhfOiBSaXRkZWVsW10sIHsgcml0RGVsZW4gfTogeyByaXREZWxlbjogUml0ZGVlbFtdIH0pOiBSaXRkZWVsW10ge1xuICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xufVxuXG5mdW5jdGlvbiBzZXRSaXRkZWVsWmljaHRiYWFyRnVuYyhcbiAgICByaXREZWxlbjogUml0ZGVlbFtdLFxuICAgIHsgcml0RGVlbCwgemljaHRiYWFyIH06IHsgcml0RGVlbDogUml0ZGVlbDsgemljaHRiYWFyOiBib29sZWFuIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgY29uc3QgZ2V6ZXRSaXRkZWVsID0gcml0RGVlbC5jb3B5TWV0WmljaHRiYWFyaGVpZCh6aWNodGJhYXIgPyBaSUNIVEJBQVIgOiBPTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUik7XG4gICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIGdlemV0Uml0ZGVlbCk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZVJpdGRlZWxaaWNodGJhYXJGdW5jKFxuICAgIHJpdERlbGVuOiBSaXRkZWVsW10sXG4gICAgeyByaXREZWVsIH06IHsgcml0RGVlbDogUml0ZGVlbCB9XG4pOiBSaXRkZWVsW10ge1xuICAgIGNvbnN0IGdldG9nZ2VsZGVSaXRkZWVsID0gcml0RGVlbC5jb3B5TWV0WmljaHRiYWFyaGVpZChyaXREZWVsLmlzWmljaHRiYWFyKCkgPyBPTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUiA6IFpJQ0hUQkFBUik7XG4gICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIGdldG9nZ2VsZGVSaXRkZWVsKTtcbiAgICByZXR1cm4gWy4uLnJpdERlbGVuXTtcbn1cblxuZnVuY3Rpb24gc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbkZ1bmMoXG4gICAgcml0RGVsZW46IFJpdGRlZWxbXSxcbiAgICB7IHppY2h0YmFhcmhlaWQgfTogeyB6aWNodGJhYXJoZWlkOiBib29sZWFuIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVsZW4uZmlsdGVyKHIgPT4gci5nZXRaaWNodGJhYXJoZWlkKCkgIT09IE9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIHJpdERlZWwuY29weU1ldFppY2h0YmFhcmhlaWQoemljaHRiYWFyaGVpZCA/IFpJQ0hUQkFBUiA6IE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZVppY2h0YmFhcmhlaWRWb29yQmV3ZWdpbmdlbkZ1bmMoXG4gICAgcml0RGVsZW46IFJpdGRlZWxbXSxcbiAgICB7IGJld2VnaW5nSWRzIH06IHsgYmV3ZWdpbmdJZHM6IG51bWJlcltdIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVsZW4uZmlsdGVyKHIgPT4gci5iZXdlZ2luZyAmJiBiZXdlZ2luZ0lkcy5pbmNsdWRlcyhOdW1iZXIoci5nZXRCZXdlZ2luZ0lkKCkpKSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIHJpdERlZWwuY29weU1ldFppY2h0YmFhcmhlaWQoWklDSFRCQUFSKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHZlcnZhbmdSaXRkZWVsKHJpdGRlbGVuOiBSaXRkZWVsW10sIG9yZ1JpdGRlZWw6IFJpdGRlZWwsIG5ld1JpdGRlZWw6IFJpdGRlZWwpOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJpdGRlbGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChyaXRkZWxlbltpXSA9PT0gb3JnUml0ZGVlbCkge1xuICAgICAgICAgICAgcml0ZGVsZW5baV0gPSBuZXdSaXRkZWVsO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRlbGV0ZVJpdGRlZWxGdW5jKFxuICAgIHJpdERlbGVuOiBSaXRkZWVsW10sXG4gICAgeyByaXREZWVsIH06IHsgcml0RGVlbDogUml0ZGVlbCB9XG4pOiBSaXRkZWVsW10ge1xuICAgIGNvbnN0IGlkeCA9IHJpdERlbGVuLmluZGV4T2Yocml0RGVlbCk7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJpdERlbGVuLnNwbGljZShpZHgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnJpdERlbGVuXTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlUml0ZGVlbEFjdGllRnVuYyhcbiAgICByaXREZWxlbjogUml0ZGVlbFtdLFxuICAgIHsgcml0RGVlbCwgYWN0aWUgfTogeyByaXREZWVsOiBSaXRkZWVsOyBhY3RpZTogQWN0aWUgfVxuKTogUml0ZGVlbFtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygcml0RGVsZW4pIHtcbiAgICAgICAgLy8gV2UgZ2VicnVpa2VuIGVxdWFscyBvbWRhdCBoZXQgd2VsIG9mIG5pZXQgemljaHRiYWFyIHppam4gdmFuIGVlbiByaXRkZWVsIG5pZXQgcmVsZXZhbnQgaXNcbiAgICAgICAgaWYgKGl0ZW0uZXF1YWxzKHJpdERlZWwpKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpZXMgPSByaXREZWVsLmFjdGllcztcbiAgICAgICAgICAgIGNvbnN0IGFpZHggPSBhY3RpZXMuaW5kZXhPZihhY3RpZSk7XG4gICAgICAgICAgICBhY3RpZXMuc3BsaWNlKGFpZHgsIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIGFkZFJpdGRlZWxBY3RpZUZ1bmMoXG4gICAgcml0RGVsZW46IFJpdGRlZWxbXSxcbiAgICB7IHJpdERlZWwsIGFjdGllIH06IHsgcml0RGVlbDogUml0ZGVlbDsgYWN0aWU6IEFjdGllIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVlbC5hY3RpZXMucHVzaChhY3RpZSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG4iXX0=
@@ -332,9 +332,9 @@ export class ActieHelper {
332
332
  this.logLegeMeldingDto(logMeldingDTOs);
333
333
  return retval;
334
334
  }
335
- logLegeMeldingDto(logMeldingDTOs) {
336
- if (logMeldingDTOs.length > 0) {
337
- this.mstLogResource.logErrorMessages(logMeldingDTOs);
335
+ logLegeMeldingDto(logDto) {
336
+ if (logDto.length > 0) {
337
+ return this.mstLogResource.logMessages(logDto);
338
338
  }
339
339
  }
340
340
  verwerkTopoElementen(topoElementen) {
@@ -417,14 +417,14 @@ export class ActieHelper {
417
417
  if (ActieHelper.isKantCodeLinks(kantcode)) {
418
418
  return wissel.getLeft();
419
419
  }
420
- return null;
420
+ return undefined;
421
421
  }
422
422
  bepaalPuicVoorWisselSlijpenActie(actie) {
423
423
  const storingsSymboolPuic = this.sbmService.getSBWissel(actie.wisselNaam, actie.pplgNaam)?.getStoringSymboolPuic();
424
424
  if (!storingsSymboolPuic && this.debug) {
425
425
  const melding = MeldingBuilder.actieHighlightError([actie.id]);
426
426
  this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));
427
- this.mstLogResource.logErrorMessages([this.loggingHelper.maakLogDTO(melding, actie)]);
427
+ this.mstLogResource.logMessages([this.loggingHelper.maakLogDTO(melding, actie)]);
428
428
  }
429
429
  return storingsSymboolPuic ? [storingsSymboolPuic] : [];
430
430
  }
@@ -434,4 +434,4 @@ export class ActieHelper {
434
434
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActieHelper, decorators: [{
435
435
  type: Injectable
436
436
  }], ctorParameters: () => [{ type: i1.SignaleringsBeeldManagerService }, { type: i2.MstLoggingResource }, { type: i3.MessagesService }, { type: i4.Store }, { type: i5.LoggingHelper }] });
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBR3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7O0FBSTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNoQzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEVBQUUsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUcsRUFBRSxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEVBQUUsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxFQUFFLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsRUFBRSxDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEVBQUUsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUM7QUFDbEQsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsRUFBRSxDQUFDO0FBQzFELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEVBQUUsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxFQUFFLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsRUFBRSxDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEVBQUUsQ0FBQztBQUUzRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQTZCLE1BQWMsRUFBbUIsUUFBZ0I7UUFBakQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFtQixhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQzlFLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7Q0FDSjtBQUdELE1BQU0sT0FBTyxXQUFXO2FBQ0osdUJBQWtCLEdBQUcsb0JBQW9CLEFBQXZCLENBQXdCO2FBQzFDLGtCQUFhLEdBQUcsZUFBZSxBQUFsQixDQUFtQjthQUNoQywwQkFBcUIsR0FBRztRQUNwQyw4QkFBOEI7UUFDOUIsOEJBQThCO1FBQzlCLHVDQUF1QztRQUN2QyxnQ0FBZ0M7UUFDaEMsZ0NBQWdDO1FBQ2hDLHdDQUF3QztRQUN4QyxnQ0FBZ0M7UUFDaEMsZ0NBQWdDO1FBQ2hDLGdDQUFnQztRQUNoQyxnQ0FBZ0M7UUFDaEMsd0NBQXdDO1FBQ3hDLCtCQUErQjtRQUMvQix1Q0FBdUM7UUFDdkMsK0JBQStCO1FBQy9CLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsdUNBQXVDO1FBQ3ZDLCtCQUErQjtRQUMvQix1Q0FBdUM7UUFDdkMsK0JBQStCO1FBQy9CLHdDQUF3QztLQUFDLEFBckJSLENBcUJTO0lBSTlDLFlBQTZCLFVBQTJDLEVBQzNDLGNBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLEtBQTRCLEVBQzVCLGFBQTRCO1FBSjVCLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQWdCLEVBQUUsVUFBMkM7UUFDNUYsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsRSxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEYsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSztRQUNuQixPQUFPLEtBQUssQ0FBQyxjQUFjLEtBQUssYUFBYSxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBSztRQUM3QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUNoRixDQUFDO0lBRUQsTUFBTSxDQUFDLDZCQUE2QixDQUFDLEtBQVk7UUFDN0MsT0FBTyxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDN0csQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFZO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFELE9BQU8sT0FBUSxXQUFXLENBQUMsQ0FBQyxDQUFFLElBQUssU0FBUyxDQUFDLENBQUMsQ0FBRSxNQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUUsSUFBSyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztRQUMvRixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sT0FBUSxLQUFLLENBQUMsVUFBVyxJQUFLLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFFLEVBQUUsQ0FBQztRQUMvRixDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBYSxFQUFFLE1BQWE7UUFDdEQsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEtBQUssTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsS0FBSyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN0RSxPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUMsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEQsT0FBTyxNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFZO1FBQ2xDLE1BQU0sZUFBZSxHQUFxQixFQUFFLENBQUM7UUFFN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQjtRQUNwQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBaUI7UUFDakMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxNQUFNLENBQUMseUJBQXlCLENBQUMsT0FBZ0IsRUFBRSxVQUEyQztRQUNsRywrSEFBK0g7UUFDL0gsZ0lBQWdJO1FBQ2hJLHdDQUF3QztRQUN4QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVMLG9EQUFvRDtJQUN4QyxNQUFNLENBQUMsb0JBQW9CLENBQUMsU0FBbUM7UUFDbkUsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRWxCLEtBQUssTUFBTSxXQUFXLElBQUksYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBRTNCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsZUFBZSxHQUFHLEdBQUcsQ0FBQztZQUMxQixDQUFDO1lBRUQsSUFBSSxlQUFlLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxDQUFDO2lCQUFNLElBQUksZUFBZSxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNMLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzlCLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztnQkFDcEMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRU8sTUFBTSxDQUFDLCtCQUErQixDQUFDLHNCQUFzQixFQUFFLGtCQUEwQyxFQUNsRSxrQkFBMEMsRUFBRSxRQUFtQjtRQUMxRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDNUYsQ0FBQztZQUNELElBQUksQ0FBQyxrQkFBa0IsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUM1QyxrQkFBa0IsR0FBRyxDQUFDLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFILENBQUM7aUJBQU0sQ0FBQztnQkFDSixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFILENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQW9CLEVBQUUsTUFBYztRQUNyRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWdCO1FBQzVDLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDbkQsQ0FBQztJQUVPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxVQUFvQztRQUN2RSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDbEUsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLE1BQU07WUFDVixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsUUFBeUI7UUFDN0QsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxNQUFNLENBQUMsNkJBQTZCLENBQUMsVUFBb0M7UUFDN0UsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBWTtRQUN2QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQWdCO1FBQzVDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDNUMsT0FBTyxRQUFRLEtBQUssR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQWdCO1FBQzNDLE9BQU8sUUFBUSxLQUFLLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBWTtRQUM3QixJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLElBQUksV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakQsS0FBSyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxPQUFPO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBYSxFQUFpQixDQUFDO1FBQy9DLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWUsRUFBRSxRQUEyQjtRQUMxRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFlLEVBQUUsUUFBbUI7UUFDdEQsTUFBTSxvQkFBb0IsR0FBYSxFQUFFLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUUzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBaUIsQ0FBQztRQUNsRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDdkIsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDNUYsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQ2xELE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUM5RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO3dCQUM1QixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUNoQyxDQUFDO29CQUNELElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7d0JBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDckIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxPQUFPLEdBQWlCLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUN2RixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8saUJBQWlCLENBQUMsY0FBK0I7UUFDckQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxhQUF1QztRQUNoRSxNQUFNLFFBQVEsR0FBYyxFQUFFLENBQUM7UUFFL0IsSUFBSSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxjQUFjLEdBQW9CLElBQUksQ0FBQztRQUMzQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFvQixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDL0UsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQixXQUFXLENBQUMsK0JBQStCLENBQUMsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDbkcsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3RELFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRU8sNEJBQTRCLENBQUMsS0FBWTtRQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFL0UsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxJQUFJLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLEdBQUcsV0FBVyxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBWTtRQUN4QyxJQUFJLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUcsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsNkNBQTZDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNySCxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDZDQUE2QyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckgsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUM7WUFDbEMsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQzVFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFMUQsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUFnQixFQUFFLE1BQXFCO1FBQzdELElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sZ0NBQWdDLENBQUMsS0FBWTtRQUNqRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFDbkgsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBaUIsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQzs4R0F2WVEsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnNKYXZhVXRpbCwgc2JibGFkIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBLbVJhbmdlIH0gZnJvbSAnLi4vbW9kZWwva20tcmFuZ2UnO1xuaW1wb3J0IHsgTWVsZGluZ0V2ZW50IH0gZnJvbSAnLi4vbW9kZWwvbWVsZGluZy1ldmVudCc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBXaXNzZWxLYW50Q29kZSB9IGZyb20gJy4uL21vZGVsL3dpc3NlbC1rYW50LWNvZGUnO1xuaW1wb3J0IHsgQWN0aWUgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgTXN0TG9nZ2luZ0R0bywgTXN0TG9nZ2luZ1Jlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2VzL21zdGxvZ2dpbmcucmVzb3VyY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcbmltcG9ydCB7IExvZ2dpbmdIZWxwZXIgfSBmcm9tICcuL2xvZ2dpbmctaGVscGVyJztcbmltcG9ydCB7IE1lbGRpbmdCdWlsZGVyIH0gZnJvbSAnLi9tZWxkaW5nLWJ1aWxkZXInO1xuaW1wb3J0IHsgTWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuL21lc3NhZ2UtYnVpbGRlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi9tdWx0aS1tYXAnO1xuaW1wb3J0IEtpbG9tZXRyZXJpbmcgPSBzYmJsYWQuS2lsb21ldHJlcmluZztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfMSA9IDE7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fVklBRFVDVF9LTEVJTiA9IDI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fQk9PRyA9IDM7XG4gKi9cbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfS0xFSU4gPSA0O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF9HUk9PVCA9IDU7XG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9PVkVSV0VHID0gNjtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CUlVHX0dST09UID0gNztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CUlVHX0tMRUlOID0gODtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9TUE9PUlRBSyA9IDk7XG4gKi9cbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfVlNUID0gMTA7XG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfQlZMQkxEX1QgPSAxMTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9WSUFEVUNUX0dST09UID0gMTI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1BBTlRDT05UX1QgPSAxMztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfUklKRFJMSUdfVCA9IDE0O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUTEFQUl9UID0gMTU7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1RPUFBERUZfVCA9IDE2O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUT1BQQkxEX1QgPSAxNztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU1BTVERFRl9UID0gMTg7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1REV1BSX1QgPSAxOTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfQkFBTkJMRF9UID0gMjA7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQR0VPTV9UID0gMjE7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFXzIyID0gMjI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFXzIzID0gMjM7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1JJSkRSRElLX1QgPSAyNDtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9UVU5ORUwgPSAyNTtcbiAqL1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzJfS09NTUFfNSA9IDI2O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzI5ID0gMjc7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjAgPSAyODtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOF9LT01NQV81ID0gMjk7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTggPSAzMDtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xNSA9IDMxO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEyID0gMzI7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTAgPSAzMztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zNF9LT01NQV83ID0gMzQ7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOSA9IDM1O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzdfS09NTUFfNSA9IDM2O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzcgPSAzNztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF82ID0gMzg7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNSA9IDM5O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzRfS09NTUFfNSA9IDQwO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzQgPSA0MTtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zX0tPTU1BXzUgPSA0MjtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF84ID0gNDM7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzlfS09NTUFfMSA9IDQ0O1xuXG5leHBvcnQgY2xhc3MgTXN0S2lsb21ldHJlcmluZyBpbXBsZW1lbnRzIHNiYmxhZC5LaWxvbWV0cmVyaW5nIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGttTGludDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IGttV2FhcmRlOiBudW1iZXIpIHtcbiAgICB9XG5cbiAgICBnZXRLbUxpbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua21MaW50O1xuICAgIH1cblxuICAgIGdldEttV2FhcmRlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmttV2FhcmRlO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFjdGllSGVscGVyIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgSEFMRl9FTkdFTFNfV0lTU0VMID0gJ0hhbHZlRW5nZWxzZVdpc3NlbCc7XG4gICAgc3RhdGljIHJlYWRvbmx5IEVOR0VMU19XSVNTRUwgPSAnRW5nZWxzZVdpc3NlbCc7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNMSUpQRU5fV0lTU0VMX0FDVElFUyA9IFtcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMX0tMRUlOLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfR1JPT1QsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzJfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjksXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzIwLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOF9LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEyLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xMCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzRfS09NTUFfNyxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfN19LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF83LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF82LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF80X0tPTU1BXzUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzQsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzNfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzlfS09NTUFfMV07XG5cbiAgICBwcml2YXRlIGRlYnVnOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbXN0TG9nUmVzb3VyY2U6IE1zdExvZ2dpbmdSZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzU2VydmljZTogTWVzc2FnZXNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dpbmdIZWxwZXI6IExvZ2dpbmdIZWxwZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2RlYnVnJykuc3Vic2NyaWJlKGRlYnVnID0+IHRoaXMuZGVidWcgPSBkZWJ1Zyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3RpZVRvcG9FbGVtZW50cyhyaXREZWVsOiBSaXRkZWVsLCBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTogVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICBjb25zdCBhY3RpZVRvcG9FbGVtZW50cyA9IHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgZXh0cmFUb3BvRWxlbWVudCA9IEFjdGllSGVscGVyLmdldFZvb3JTZWN0aWVWYW5CZWdpblNlaW4ocml0RGVlbCwgc2JtU2VydmljZSk7XG4gICAgICAgIGlmIChleHRyYVRvcG9FbGVtZW50KSB7XG4gICAgICAgICAgICBhY3RpZVRvcG9FbGVtZW50cy5zcGxpY2UoMCwgMCwgZXh0cmFUb3BvRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGllVG9wb0VsZW1lbnRzO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1ZTVEFjdGllKGFjdGllKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhY3RpZS5yaXRBY3RpZVR5cGVJZCA9PT0gUklUX0FDVElFX1ZTVDtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU0xJSlBFTl9XSVNTRUxfQUNUSUVTLmluZGV4T2YoYWN0aWUucml0QWN0aWVUeXBlSWQpID49IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGJlcGFhbFRha0lkKGFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLnBwbGdOYWFtICsgJy0nICsgYWN0aWUud2lzc2VsTmFhbSArICctJyArIGFjdGllLndpc3NlbEthbnRDb2RlO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0hlZWxPZkhhbGZFbmdlbHNXaXNzZWxBY3RpZShhY3RpZTogQWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLmluZnJhT2JqZWN0VHlwZSA9PT0gdGhpcy5IQUxGX0VOR0VMU19XSVNTRUwgfHwgYWN0aWUuaW5mcmFPYmplY3RUeXBlID09PSB0aGlzLkVOR0VMU19XSVNTRUw7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFZTVEFjdGllT21zY2hyaWp2aW5nKGFjdGllOiBBY3RpZSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5nZWxzZVdpc3NlbChhY3RpZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpc3NlbE5hbWVuID0gdGhpcy5nZXRXaXNzZWxEZWxlbihhY3RpZS53aXNzZWxOYWFtKTtcbiAgICAgICAgICAgIGNvbnN0IGthbnRDb2RlcyA9IHRoaXMuZ2V0S2FudENvZGVzKGFjdGllLndpc3NlbEthbnRDb2RlKTtcbiAgICAgICAgICAgIHJldHVybiBgVlNUICR7IHdpc3NlbE5hbWVuWzBdIH0gJHsga2FudENvZGVzWzBdIH0gLSAkeyB3aXNzZWxOYW1lblsxXSB9ICR7IGthbnRDb2Rlc1sxXSB9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgVlNUICR7IGFjdGllLndpc3NlbE5hYW0gfSAkeyBBY3RpZUhlbHBlci5nZXRLYW50Y29kZVRla3N0KGFjdGllLndpc3NlbEthbnRDb2RlKSB9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aWVDb21wYXJhdG9yKGFjdGllMTogQWN0aWUsIGFjdGllMjogQWN0aWUpOiBudW1iZXIge1xuICAgICAgICBpZiAoYWN0aWUxLnZhbktpbG9tZXRyZXJpbmcgIT09IGFjdGllMi52YW5LaWxvbWV0cmVyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aWUxLnZhbktpbG9tZXRyZXJpbmcgPiBhY3RpZTIudmFuS2lsb21ldHJlcmluZyA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aWUxLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyAhPT0gYWN0aWUyLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgPiBhY3RpZTIucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3RpZTEud2lzc2VsTmFhbSAhPT0gYWN0aWUyLndpc3NlbE5hYW0pIHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpZTEud2lzc2VsTmFhbSA+IGFjdGllMi53aXNzZWxOYWFtID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3RpZTEud2lzc2VsS2FudENvZGUgIT09IGFjdGllMi53aXNzZWxLYW50Q29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS53aXNzZWxLYW50Q29kZSA+IGFjdGllMi53aXNzZWxLYW50Q29kZSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0V2lzc2VsS2FudENvZGVzKGFjdGllOiBBY3RpZSk6IFdpc3NlbEthbnRDb2RlW10ge1xuICAgICAgICBjb25zdCB3aXNzZWxLYW50Q29kZXM6IFdpc3NlbEthbnRDb2RlW10gPSBbXTtcblxuICAgICAgICBjb25zdCBuYW1lbiA9IHRoaXMuZ2V0V2lzc2VsRGVsZW4oYWN0aWUud2lzc2VsTmFhbSk7XG4gICAgICAgIGNvbnN0IGthbnRDb2RlcyA9IHRoaXMuZ2V0S2FudENvZGVzKGFjdGllLndpc3NlbEthbnRDb2RlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2lzc2VsS2FudENvZGVzLnB1c2gobmV3IFdpc3NlbEthbnRDb2RlKG5hbWVuW2ldLCBrYW50Q29kZXNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3aXNzZWxLYW50Q29kZXM7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFdpc3NlbERlbGVuKHdpc3NlbE5hYW06IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHdpc3NlbE5hYW0uc3BsaXQoJ3wnKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0S2FudENvZGVzKGthbnRDb2Rlczogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoa2FudENvZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuIFtrYW50Q29kZXMuY2hhckF0KDApLCBrYW50Q29kZXMuY2hhckF0KDEpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2thbnRDb2Rlc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Vm9vclNlY3RpZVZhbkJlZ2luU2VpbihyaXREZWVsOiBSaXRkZWVsLCBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTogVG9wb2xvZ3lFbGVtZW50IHtcbiAgICAgICAgLy8gUlBFIHRvb250IGVlbiByaWp3ZWcgdmFuYWYgZGUgc2VjdGllc2NoZWlkaW5nIGJlaG9yZW5kIGJpaiBoZXQgYmVnaW5zZWluLiBNU1QgbGV2ZXJ0IGJld2VnaW5nZW4gd2FhcmJpaiBhY3RpZXMgZ2VkYWFuIG1vZXRlblxuICAgICAgICAvLyB3b3JkZW4gdHVzc2VuIGhldCBiZWdpbnNlaW4gZW4gZGUgZ2Vub2VtZGUgc2VjdGllc2NoZWlkaW5nLiBPbSBkZXplIHRlIGt1bm5lbiB0b25lbiB2b2VnZW4gd2UgZGUgdm9vcnNlY3RpZSB2YW4gaGV0IGJlZ2luc2VpblxuICAgICAgICAvLyB0b2UgYWFuIGRlIGxpanN0IG1ldCByb3V0ZSBlbGVtZW50ZW4uXG4gICAgICAgIGNvbnN0IGJlZ2luUm91dGVTZWluID0gcml0RGVlbC5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpO1xuICAgICAgICBjb25zdCBzYlNlaW4gPSBzYm1TZXJ2aWNlLmdldFNCU2VpbihiZWdpblJvdXRlU2Vpbik7XG4gICAgICAgIHJldHVybiBzYlNlaW4gPyBzYlNlaW4uZ2V0Vm9vclNlY3RpZSgpIDogbnVsbDtcbiAgICB9XG5cbi8vIG1ha2Ugc3VyZSB0aGUgZWxlbXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICBwcml2YXRlIHN0YXRpYyBzb3J0ZWVyVG9wb0VsZW1lbnRlbih0b3BvRWxlbXM6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSB0b3BvRWxlbXMuc2xpY2UoKTtcbiAgICAgICAgbGV0IGxpbnQgPSBudWxsO1xuICAgICAgICBsZXQgZmlyc3QgPSBudWxsO1xuICAgICAgICBsZXQgc2Vjb25kID0gbnVsbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRvcG9FbGVtZW50IG9mIHRvcG9FbGVtZW50ZW4pIHtcbiAgICAgICAgICAgIGxldCBraWxvbWV0cmVyaW5nZW4gPSBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBrbXMgPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRvcG9FbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBraWxvbWV0cmVyaW5nZW4gPSBrbXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraWxvbWV0cmVyaW5nZW4gJiYgIWZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBraWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgICAgICAgICBsaW50ID0ga2lsb21ldHJlcmluZ2VuWzBdLmdldEttTGludCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChraWxvbWV0cmVyaW5nZW4gJiYgZmlyc3QgJiYgIXNlY29uZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGttID0gS21SYW5nZS5nZXRLaWxvbWV0cmVyaW5nKGxpbnQsIGtpbG9tZXRyZXJpbmdlbik7XG4gICAgICAgICAgICAgICAgaWYgKGttKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZCA9IGttLmdldEttV2FhcmRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIHNlY29uZCAmJiBmaXJzdCA+IHNlY29uZCkge1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW4ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3BvRWxlbWVudGVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttcywgdmFuS2lsb21ldHJlcmluZ2VuOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdLCBrbVJhbmdlczogS21SYW5nZVtdKTogdm9pZCB7XG4gICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGlmICghdmFuS2lsb21ldHJlcmluZ2VuICYmIHRvdEtpbG9tZXRyZXJpbmdlbikge1xuICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmdlbiA9IFtuZXcgTXN0S2lsb21ldHJlcmluZyh0b3RLaWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21MaW50KCksIC0xMDAwMDApXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdG90S2lsb21ldHJlcmluZ2VuICYmIHZhbktpbG9tZXRyZXJpbmdlbikge1xuICAgICAgICAgICAgICAgIHRvdEtpbG9tZXRyZXJpbmdlbiA9IFtuZXcgTXN0S2lsb21ldHJlcmluZyh2YW5LaWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21MaW50KCksIDEwMDAwMCldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFuS2lsb21ldHJlcmluZ2VuWzBdID4gdG90S2lsb21ldHJlcmluZ2VuWzBdKSB7XG4gICAgICAgICAgICAgICAga21SYW5nZXMucHVzaChLbVJhbmdlLnJhbmdlVm9vclN0cmVrT2JqZWN0KGUsIHRoaXMuYWRkS20odmFuS2lsb21ldHJlcmluZ2VuLCAtMSksIHRoaXMuYWRkS20odG90S2lsb21ldHJlcmluZ2VuLCAxKSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5wdXNoKEttUmFuZ2UucmFuZ2VWb29yU3RyZWtPYmplY3QoZSwgdGhpcy5hZGRLbSh2YW5LaWxvbWV0cmVyaW5nZW4sIDEpLCB0aGlzLmFkZEttKHRvdEtpbG9tZXRyZXJpbmdlbiwgLTEpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFkZEttKGttczogS2lsb21ldHJlcmluZ1tdLCBhYW50YWw6IG51bWJlcik6IEtpbG9tZXRyZXJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHJldHZhbCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGttIG9mIGttcykge1xuICAgICAgICAgICAgcmV0dmFsLnB1c2gobmV3IE1zdEtpbG9tZXRyZXJpbmcoa20uZ2V0S21MaW50KCksIGttLmdldEttV2FhcmRlKCkgKyBhYW50YWwpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGthbkFjdGllc0JlcGFsZW4ocml0ZGVlbDogUml0ZGVlbCk6IEFjdGllW10ge1xuICAgICAgICByZXR1cm4gcml0ZGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdGRlZWwuYWN0aWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzS2lsb21ldHJlcmluZ0FhbndlemlnKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgYWFud2V6aWcgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudGVuKSB7XG4gICAgICAgICAgICBjb25zdCBrbXMgPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KGZyYWdtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhYW53ZXppZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFhbndlemlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlbihzcG9vcnRhazogc2JibGFkLlNwb29ydGFrKTogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkoc3Bvb3J0YWsuZ2V0VGFrRWxlbWVudGVuKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlblB1aWNzKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHVpY3MgPSBbXTtcbiAgICAgICAgZnJhZ21lbnRlbi5mb3JFYWNoKGRlZWwgPT4gcHVpY3MucHVzaChkZWVsLmdldFB1aWMoKSkpO1xuICAgICAgICByZXR1cm4gcHVpY3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNFbmdlbHNlV2lzc2VsKGFjdGllOiBBY3RpZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYWN0aWUud2lzc2VsTmFhbS5pbmNsdWRlcygnfCcpICYmIGFjdGllLndpc3NlbEthbnRDb2RlLmxlbmd0aCA9PT0gMjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRLYW50Y29kZVRla3N0KGthbnRjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgdGVrc3QgPSAnVm9vcic7XG4gICAgICAgIGlmICh0aGlzLmlzS2FudENvZGVMaW5rcyhrYW50Y29kZSkpIHtcbiAgICAgICAgICAgIHRla3N0ID0gJ0xpbmtzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzS2FudENvZGVSZWNodHMoa2FudGNvZGUpKSB7XG4gICAgICAgICAgICB0ZWtzdCA9ICdSZWNodHMnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZWtzdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBpc0thbnRDb2RlUmVjaHRzKGthbnRjb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGthbnRjb2RlID09PSAnUic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNLYW50Q29kZUxpbmtzKGthbnRjb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGthbnRjb2RlID09PSAnTCc7XG4gICAgfVxuXG4gICAgYmVwYWFsUHVpY3NWb29yQWN0aWUoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBsZXQgcHVpY3M7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1ZTVEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgcHVpY3MgPSB0aGlzLmJlcGFhbFB1aWNzVm9vclZTVEFjdGllKGFjdGllKTtcbiAgICAgICAgfSBlbHNlIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIHB1aWNzID0gdGhpcy5iZXBhYWxQdWljVm9vcldpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwdWljcyA9IHRoaXMuYmVwYWFsQWN0aWVQdWljc1Zvb3JTcG9vcnRhayhhY3RpZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIGJlcGFhbEFjdGllUHVpY3NVaXRSaXRkZWVsKHJpdERlZWwpOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+IHsvLyB2b29yIGhpZ2hsaWdodHNcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4oKTtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmthbkFjdGllc0JlcGFsZW4ocml0RGVlbCkpIHtcbiAgICAgICAgICAgIHJpdERlZWwuYWN0aWVzLmZvckVhY2goYSA9PiB7XG4gICAgICAgICAgICAgICAgbWFwLnB1dEFsbChhLCB0aGlzLmJlcGFhbFB1aWNzVm9vckFjdGllKGEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuXG4gICAgYmVwYWFsQWN0aWVzUHVpY3MoYWN0aWVzOiBBY3RpZVtdLCB0b3BvRWxlbTogVG9wb2xvZ3lFbGVtZW50W10pOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdG9wb0VsZW1lbnRlbiA9IEFjdGllSGVscGVyLnNvcnRlZXJUb3BvRWxlbWVudGVuKHRvcG9FbGVtKTtcblxuICAgICAgICBjb25zdCBrbVJhbmdlcyA9IHRoaXMudmVyd2Vya1RvcG9FbGVtZW50ZW4odG9wb0VsZW1lbnRlbik7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcndlcmtBY3RpZXMoYWN0aWVzLCBrbVJhbmdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ3ZXJrQWN0aWVzKGFjdGllczogQWN0aWVbXSwga21SYW5nZXM6IEttUmFuZ2VbXSk6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBhY3RpZVpvbmRlckVsZW1lbnRlbjogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgbG9nTWVsZGluZ0RUT3M6IE1zdExvZ2dpbmdEdG9bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHJldHZhbCA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGFjdGllcy5mb3JFYWNoKGFjdGllID0+IHtcbiAgICAgICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljQXJyYXkgPSB0aGlzLmJlcGFhbFB1aWNWb29yV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKTtcbiAgICAgICAgICAgICAgICByZXR2YWwucHV0QWxsKGFjdGllLCBwdWljQXJyYXkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IFtdO1xuICAgICAgICAgICAgICAgIGttUmFuZ2VzLmZvckVhY2goa21SYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YW5LaWxvbWV0cmVyaW5nID0gbmV3IE1zdEtpbG9tZXRyZXJpbmcoYWN0aWUudmFuS2lsb21ldGVybGludCwgYWN0aWUudmFuS2lsb21ldHJlcmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3RLaWxvbWV0cmVyaW5nID0gbmV3IE1zdEtpbG9tZXRyZXJpbmcoYWN0aWUudG90S2lsb21ldGVybGludCwgYWN0aWUudG90S2lsb21ldHJlcmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpZS52YW5LaWxvbWV0cmVyaW5nID4gYWN0aWUudG90S2lsb21ldHJlcmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcCA9IHsgdmFuOiB2YW5LaWxvbWV0cmVyaW5nLCB0b3Q6IHRvdEtpbG9tZXRyZXJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmcgPSB0ZW1wLnRvdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdEtpbG9tZXRyZXJpbmcgPSB0ZW1wLnZhbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoa21SYW5nZS5oZWVmdE92ZXJsYXAodmFuS2lsb21ldHJlcmluZywgdG90S2lsb21ldHJlcmluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1aWNzLnB1c2goa21SYW5nZS50b3BvbG9neUVsZW1lbnQuZ2V0UHVpYygpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwdWljcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aWVab25kZXJFbGVtZW50ZW4ucHVzaChhY3RpZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbGRpbmc6IE1lbGRpbmdFdmVudCA9IE1lbGRpbmdCdWlsZGVyLmFjdGllSGlnaGxpZ2h0RXJyb3IoYWN0aWVab25kZXJFbGVtZW50ZW4pO1xuICAgICAgICAgICAgICAgICAgICBsb2dNZWxkaW5nRFRPcy5wdXNoKHRoaXMubG9nZ2luZ0hlbHBlci5tYWFrTG9nRFRPKG1lbGRpbmcsIGFjdGllKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHZhbC5wdXRBbGwoYWN0aWUsIHB1aWNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nTGVnZU1lbGRpbmdEdG8obG9nTWVsZGluZ0RUT3MpO1xuICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9nTGVnZU1lbGRpbmdEdG8obG9nTWVsZGluZ0RUT3M6IE1zdExvZ2dpbmdEdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAobG9nTWVsZGluZ0RUT3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5tc3RMb2dSZXNvdXJjZS5sb2dFcnJvck1lc3NhZ2VzKGxvZ01lbGRpbmdEVE9zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya1RvcG9FbGVtZW50ZW4odG9wb0VsZW1lbnRlbjogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdKTogS21SYW5nZVtdIHtcbiAgICAgICAgY29uc3Qga21SYW5nZXM6IEttUmFuZ2VbXSA9IFtdO1xuXG4gICAgICAgIGxldCB0b3BvRWxlbWVudGVuWm9uZGVyS21zID0gW107XG4gICAgICAgIGxldCBsYWF0c3RlUHVudEttczogS2lsb21ldHJlcmluZ1tdID0gbnVsbDtcbiAgICAgICAgdG9wb0VsZW1lbnRlbi5mb3JFYWNoKGVsZW0gPT4ge1xuICAgICAgICAgICAgY29uc3Qga21zOiBLaWxvbWV0cmVyaW5nW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KGVsZW0uZ2V0S2lsb21ldHJlcmluZ2VuKCkpO1xuICAgICAgICAgICAgaWYgKGttcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgQWN0aWVIZWxwZXIuY29ycmlnZWVyVG9wb0VsZW1lbnRlblpvbmRlckttcyh0b3BvRWxlbWVudGVuWm9uZGVyS21zLCBsYWF0c3RlUHVudEttcywga21zLCBrbVJhbmdlcyk7XG4gICAgICAgICAgICAgICAgdG9wb0VsZW1lbnRlblpvbmRlckttcyA9IFtdO1xuICAgICAgICAgICAgICAgIGttUmFuZ2VzLnB1c2goS21SYW5nZS5yYW5nZVZvb3JQdW50T2JqZWN0KGVsZW0pKTtcbiAgICAgICAgICAgICAgICBsYWF0c3RlUHVudEttcyA9IGttcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9wb0VsZW1lbnRlblpvbmRlckttcy5wdXNoKGVsZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRvcG9FbGVtZW50ZW5ab25kZXJLbXMubGVuZ3RoID4gMCAmJiBsYWF0c3RlUHVudEttcykge1xuICAgICAgICAgICAgQWN0aWVIZWxwZXIuY29ycmlnZWVyVG9wb0VsZW1lbnRlblpvbmRlckttcyh0b3BvRWxlbWVudGVuWm9uZGVyS21zLCBsYWF0c3RlUHVudEttcywgbnVsbCwga21SYW5nZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrbVJhbmdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbEFjdGllUHVpY3NWb29yU3Bvb3J0YWsoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBzcG9vcnRhayA9IHRoaXMuc2JtU2VydmljZS5nZXRTYlNwb29ydGFrKEFjdGllSGVscGVyLmJlcGFhbFRha0lkKGFjdGllKSk7XG5cbiAgICAgICAgbGV0IHB1aWNzID0gW107XG4gICAgICAgIGlmICghc3Bvb3J0YWspIHtcbiAgICAgICAgICAgIHJldHVybiBwdWljcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcmFnbWVudGVuID0gQWN0aWVIZWxwZXIuYmVwYWFsU3Bvb3J0YWtGcmFnbWVudGVuKHNwb29ydGFrKTtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzS2lsb21ldHJlcmluZ0FhbndlemlnKGZyYWdtZW50ZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXAgPSB0aGlzLmJlcGFhbEFjdGllc1B1aWNzKFthY3RpZV0sIGZyYWdtZW50ZW4pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgQXJyYXkuZnJvbShtYXAua2V5cygpKSkge1xuICAgICAgICAgICAgICAgIG1hcC5nZXQoa2V5KS5mb3JFYWNoKHggPT4gcHVpY3MucHVzaCh4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwdWljcyA9IEFjdGllSGVscGVyLmJlcGFhbFNwb29ydGFrRnJhZ21lbnRlblB1aWNzKGZyYWdtZW50ZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFB1aWNzVm9vclZTVEFjdGllKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzSGVlbE9mSGFsZkVuZ2Vsc1dpc3NlbEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgY29uc3QgcmV0dmFsID0gW107XG4gICAgICAgICAgICBjb25zdCB3aXNzZWxEZWxlbiA9IEFjdGllSGVscGVyLmdldFdpc3NlbERlbGVuKGFjdGllLndpc3NlbE5hYW0pO1xuICAgICAgICAgICAgY29uc3QgcHVpY3NFZXJzdGVXaXNzZWwgPSB0aGlzLmJlcGFhbFdpc3NlbFB1aWNzKHdpc3NlbERlbGVuWzBdLCBhY3RpZS5wcGxnTmFhbSwgYWN0aWUud2lzc2VsS2FudENvZGVbMF0pO1xuICAgICAgICAgICAgY29uc3QgcHVpY3NUd2VlZGVXaXNzZWwgPSB0aGlzLmJlcGFhbFdpc3NlbFB1aWNzKHdpc3NlbERlbGVuWzFdLCBhY3RpZS5wcGxnTmFhbSwgYWN0aWUud2lzc2VsS2FudENvZGVbMV0pO1xuXG4gICAgICAgICAgICBjb25zdCBwdWljMSA9IHRoaXMuc2JtU2VydmljZS5nZXRFZXJzdGVWZXJiaW5kaW5nUHVpY1Zvb3JTcGxpdEVuZ2Vsc2VXaXNzZWwod2lzc2VsRGVsZW5bMF0sIGFjdGllLndpc3NlbEthbnRDb2RlWzBdKTtcbiAgICAgICAgICAgIGlmIChwdWljMSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR2YWwucHVzaChwdWljMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwdWljMiA9IHRoaXMuc2JtU2VydmljZS5nZXRFZXJzdGVWZXJiaW5kaW5nUHVpY1Zvb3JTcGxpdEVuZ2Vsc2VXaXNzZWwod2lzc2VsRGVsZW5bMV0sIGFjdGllLndpc3NlbEthbnRDb2RlWzFdKTtcbiAgICAgICAgICAgIGlmIChwdWljMiAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR2YWwucHVzaChwdWljMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR2YWwucHVzaCguLi5wdWljc0VlcnN0ZVdpc3NlbCk7XG4gICAgICAgICAgICByZXR2YWwucHVzaCguLi5wdWljc1R3ZWVkZVdpc3NlbCk7XG4gICAgICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVwYWFsV2lzc2VsUHVpY3MoYWN0aWUud2lzc2VsTmFhbSwgYWN0aWUucHBsZ05hYW0sIGFjdGllLndpc3NlbEthbnRDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsV2lzc2VsUHVpY3Mod2lzc2VsTmFhbTogc3RyaW5nLCBwcGxnTmFhbTogc3RyaW5nLCBrYW50Y29kZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB3aXNzZWwgPSB0aGlzLnNibVNlcnZpY2UuZ2V0U0JXaXNzZWwod2lzc2VsTmFhbSwgcHBsZ05hYW0pO1xuICAgICAgICBpZiAoIXdpc3NlbCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGthbnRFbGVtZW50ID0gdGhpcy5iZXBhYWxLYW50RWxlbWVudChrYW50Y29kZSwgd2lzc2VsKTtcbiAgICAgICAgaWYgKCFrYW50RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3JpbmdTeW1ib29sUHVpYyA9IHdpc3NlbC5nZXRTdG9yaW5nU3ltYm9vbFB1aWMoKTtcblxuICAgICAgICByZXR1cm4gW3N0b3JpbmdTeW1ib29sUHVpYywga2FudEVsZW1lbnQuZ2V0UHVpYygpXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbEthbnRFbGVtZW50KGthbnRjb2RlOiBzdHJpbmcsIHdpc3NlbDogc2JibGFkLldpc3NlbCk6IHNiYmxhZC5TcG9vcnRha0ZyYWdtZW50IHtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzS2FudENvZGVSZWNodHMoa2FudGNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd2lzc2VsLmdldFJpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzS2FudENvZGVMaW5rcyhrYW50Y29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXNzZWwuZ2V0TGVmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsUHVpY1Zvb3JXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBzdG9yaW5nc1N5bWJvb2xQdWljID0gdGhpcy5zYm1TZXJ2aWNlLmdldFNCV2lzc2VsKGFjdGllLndpc3NlbE5hYW0sIGFjdGllLnBwbGdOYWFtKT8uZ2V0U3RvcmluZ1N5bWJvb2xQdWljKCk7XG4gICAgICAgIGlmICghc3RvcmluZ3NTeW1ib29sUHVpYyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zdCBtZWxkaW5nOiBNZWxkaW5nRXZlbnQgPSBNZWxkaW5nQnVpbGRlci5hY3RpZUhpZ2hsaWdodEVycm9yKFthY3RpZS5pZF0pO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIuYWN0aWVIaWdobGlnaHRFcnJvcihbYWN0aWUuaWRdKSk7XG4gICAgICAgICAgICB0aGlzLm1zdExvZ1Jlc291cmNlLmxvZ0Vycm9yTWVzc2FnZXMoW3RoaXMubG9nZ2luZ0hlbHBlci5tYWFrTG9nRFRPKG1lbGRpbmcsIGFjdGllKV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdG9yaW5nc1N5bWJvb2xQdWljID8gW3N0b3JpbmdzU3ltYm9vbFB1aWNdIDogW107XG4gICAgfVxufVxuXG5cbiJdfQ==
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBSXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7O0FBSTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNoQzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEVBQUUsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25E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Q0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxLQUFZO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUNuSCxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE1BQU0sT0FBTyxHQUFpQixjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQ0QsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQzs4R0F2WVEsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnNKYXZhVXRpbCwgc2JibGFkIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTG9nRHRvIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL29wZW5hcGknO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBLbVJhbmdlIH0gZnJvbSAnLi4vbW9kZWwva20tcmFuZ2UnO1xuaW1wb3J0IHsgTWVsZGluZ0V2ZW50IH0gZnJvbSAnLi4vbW9kZWwvbWVsZGluZy1ldmVudCc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBXaXNzZWxLYW50Q29kZSB9IGZyb20gJy4uL21vZGVsL3dpc3NlbC1rYW50LWNvZGUnO1xuaW1wb3J0IHsgQWN0aWUgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgTXN0TG9nZ2luZ1Jlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2VzL21zdGxvZ2dpbmcucmVzb3VyY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcbmltcG9ydCB7IExvZ2dpbmdIZWxwZXIgfSBmcm9tICcuL2xvZ2dpbmctaGVscGVyJztcbmltcG9ydCB7IE1lbGRpbmdCdWlsZGVyIH0gZnJvbSAnLi9tZWxkaW5nLWJ1aWxkZXInO1xuaW1wb3J0IHsgTWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuL21lc3NhZ2UtYnVpbGRlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi9tdWx0aS1tYXAnO1xuaW1wb3J0IEtpbG9tZXRyZXJpbmcgPSBzYmJsYWQuS2lsb21ldHJlcmluZztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfMSA9IDE7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fVklBRFVDVF9LTEVJTiA9IDI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fQk9PRyA9IDM7XG4gKi9cbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfS0xFSU4gPSA0O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF9HUk9PVCA9IDU7XG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9PVkVSV0VHID0gNjtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CUlVHX0dST09UID0gNztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CUlVHX0tMRUlOID0gODtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9TUE9PUlRBSyA9IDk7XG4gKi9cbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfVlNUID0gMTA7XG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfQlZMQkxEX1QgPSAxMTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9WSUFEVUNUX0dST09UID0gMTI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1BBTlRDT05UX1QgPSAxMztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfUklKRFJMSUdfVCA9IDE0O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUTEFQUl9UID0gMTU7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1RPUFBERUZfVCA9IDE2O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUT1BQQkxEX1QgPSAxNztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU1BTVERFRl9UID0gMTg7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1REV1BSX1QgPSAxOTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfQkFBTkJMRF9UID0gMjA7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQR0VPTV9UID0gMjE7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFXzIyID0gMjI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFXzIzID0gMjM7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1JJSkRSRElLX1QgPSAyNDtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9UVU5ORUwgPSAyNTtcbiAqL1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzJfS09NTUFfNSA9IDI2O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzI5ID0gMjc7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjAgPSAyODtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOF9LT01NQV81ID0gMjk7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTggPSAzMDtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xNSA9IDMxO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEyID0gMzI7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTAgPSAzMztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zNF9LT01NQV83ID0gMzQ7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOSA9IDM1O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzdfS09NTUFfNSA9IDM2O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzcgPSAzNztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF82ID0gMzg7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNSA9IDM5O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzRfS09NTUFfNSA9IDQwO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzQgPSA0MTtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zX0tPTU1BXzUgPSA0MjtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF84ID0gNDM7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzlfS09NTUFfMSA9IDQ0O1xuXG5leHBvcnQgY2xhc3MgTXN0S2lsb21ldHJlcmluZyBpbXBsZW1lbnRzIHNiYmxhZC5LaWxvbWV0cmVyaW5nIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGttTGludDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IGttV2FhcmRlOiBudW1iZXIpIHtcbiAgICB9XG5cbiAgICBnZXRLbUxpbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua21MaW50O1xuICAgIH1cblxuICAgIGdldEttV2FhcmRlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmttV2FhcmRlO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFjdGllSGVscGVyIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgSEFMRl9FTkdFTFNfV0lTU0VMID0gJ0hhbHZlRW5nZWxzZVdpc3NlbCc7XG4gICAgc3RhdGljIHJlYWRvbmx5IEVOR0VMU19XSVNTRUwgPSAnRW5nZWxzZVdpc3NlbCc7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNMSUpQRU5fV0lTU0VMX0FDVElFUyA9IFtcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMX0tMRUlOLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfR1JPT1QsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzJfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjksXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzIwLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOF9LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEyLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xMCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzRfS09NTUFfNyxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfN19LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF83LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF82LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF80X0tPTU1BXzUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzQsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzNfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzlfS09NTUFfMV07XG5cbiAgICBwcml2YXRlIGRlYnVnOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbXN0TG9nUmVzb3VyY2U6IE1zdExvZ2dpbmdSZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzU2VydmljZTogTWVzc2FnZXNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dpbmdIZWxwZXI6IExvZ2dpbmdIZWxwZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2RlYnVnJykuc3Vic2NyaWJlKGRlYnVnID0+IHRoaXMuZGVidWcgPSBkZWJ1Zyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3RpZVRvcG9FbGVtZW50cyhyaXREZWVsOiBSaXRkZWVsLCBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTogVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICBjb25zdCBhY3RpZVRvcG9FbGVtZW50cyA9IHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgZXh0cmFUb3BvRWxlbWVudCA9IEFjdGllSGVscGVyLmdldFZvb3JTZWN0aWVWYW5CZWdpblNlaW4ocml0RGVlbCwgc2JtU2VydmljZSk7XG4gICAgICAgIGlmIChleHRyYVRvcG9FbGVtZW50KSB7XG4gICAgICAgICAgICBhY3RpZVRvcG9FbGVtZW50cy5zcGxpY2UoMCwgMCwgZXh0cmFUb3BvRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGllVG9wb0VsZW1lbnRzO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1ZTVEFjdGllKGFjdGllOiBBY3RpZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYWN0aWUucml0QWN0aWVUeXBlSWQgPT09IFJJVF9BQ1RJRV9WU1Q7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLlNMSUpQRU5fV0lTU0VMX0FDVElFUy5pbmRleE9mKGFjdGllLnJpdEFjdGllVHlwZUlkKSA+PSAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBiZXBhYWxUYWtJZChhY3RpZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBhY3RpZS5wcGxnTmFhbSArICctJyArIGFjdGllLndpc3NlbE5hYW0gKyAnLScgKyBhY3RpZS53aXNzZWxLYW50Q29kZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNIZWVsT2ZIYWxmRW5nZWxzV2lzc2VsQWN0aWUoYWN0aWU6IEFjdGllKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhY3RpZS5pbmZyYU9iamVjdFR5cGUgPT09IHRoaXMuSEFMRl9FTkdFTFNfV0lTU0VMIHx8IGFjdGllLmluZnJhT2JqZWN0VHlwZSA9PT0gdGhpcy5FTkdFTFNfV0lTU0VMO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRWU1RBY3RpZU9tc2NocmlqdmluZyhhY3RpZTogQWN0aWUpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc0VuZ2Vsc2VXaXNzZWwoYWN0aWUpKSB7XG4gICAgICAgICAgICBjb25zdCB3aXNzZWxOYW1lbiA9IHRoaXMuZ2V0V2lzc2VsRGVsZW4oYWN0aWUud2lzc2VsTmFhbSk7XG4gICAgICAgICAgICBjb25zdCBrYW50Q29kZXMgPSB0aGlzLmdldEthbnRDb2RlcyhhY3RpZS53aXNzZWxLYW50Q29kZSk7XG4gICAgICAgICAgICByZXR1cm4gYFZTVCAkeyB3aXNzZWxOYW1lblswXSB9ICR7IGthbnRDb2Rlc1swXSB9IC0gJHsgd2lzc2VsTmFtZW5bMV0gfSAkeyBrYW50Q29kZXNbMV0gfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYFZTVCAkeyBhY3RpZS53aXNzZWxOYWFtIH0gJHsgQWN0aWVIZWxwZXIuZ2V0S2FudGNvZGVUZWtzdChhY3RpZS53aXNzZWxLYW50Q29kZSkgfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFjdGllQ29tcGFyYXRvcihhY3RpZTE6IEFjdGllLCBhY3RpZTI6IEFjdGllKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGFjdGllMS52YW5LaWxvbWV0cmVyaW5nICE9PSBhY3RpZTIudmFuS2lsb21ldHJlcmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS52YW5LaWxvbWV0cmVyaW5nID4gYWN0aWUyLnZhbktpbG9tZXRyZXJpbmcgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGllMS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgIT09IGFjdGllMi5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpZTEucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nID4gYWN0aWUyLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aWUxLndpc3NlbE5hYW0gIT09IGFjdGllMi53aXNzZWxOYWFtKSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aWUxLndpc3NlbE5hYW0gPiBhY3RpZTIud2lzc2VsTmFhbSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aWUxLndpc3NlbEthbnRDb2RlICE9PSBhY3RpZTIud2lzc2VsS2FudENvZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpZTEud2lzc2VsS2FudENvZGUgPiBhY3RpZTIud2lzc2VsS2FudENvZGUgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFdpc3NlbEthbnRDb2RlcyhhY3RpZTogQWN0aWUpOiBXaXNzZWxLYW50Q29kZVtdIHtcbiAgICAgICAgY29uc3Qgd2lzc2VsS2FudENvZGVzOiBXaXNzZWxLYW50Q29kZVtdID0gW107XG5cbiAgICAgICAgY29uc3QgbmFtZW4gPSB0aGlzLmdldFdpc3NlbERlbGVuKGFjdGllLndpc3NlbE5hYW0pO1xuICAgICAgICBjb25zdCBrYW50Q29kZXMgPSB0aGlzLmdldEthbnRDb2RlcyhhY3RpZS53aXNzZWxLYW50Q29kZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHdpc3NlbEthbnRDb2Rlcy5wdXNoKG5ldyBXaXNzZWxLYW50Q29kZShuYW1lbltpXSwga2FudENvZGVzW2ldKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2lzc2VsS2FudENvZGVzO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRXaXNzZWxEZWxlbih3aXNzZWxOYWFtOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB3aXNzZWxOYWFtLnNwbGl0KCd8Jyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldEthbnRDb2RlcyhrYW50Q29kZXM6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKGthbnRDb2Rlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBba2FudENvZGVzLmNoYXJBdCgwKSwga2FudENvZGVzLmNoYXJBdCgxKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtrYW50Q29kZXNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldFZvb3JTZWN0aWVWYW5CZWdpblNlaW4ocml0RGVlbDogUml0ZGVlbCwgc2JtU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk6IFRvcG9sb2d5RWxlbWVudCB7XG4gICAgICAgIC8vIFJQRSB0b29udCBlZW4gcmlqd2VnIHZhbmFmIGRlIHNlY3RpZXNjaGVpZGluZyBiZWhvcmVuZCBiaWogaGV0IGJlZ2luc2Vpbi4gTVNUIGxldmVydCBiZXdlZ2luZ2VuIHdhYXJiaWogYWN0aWVzIGdlZGFhbiBtb2V0ZW5cbiAgICAgICAgLy8gd29yZGVuIHR1c3NlbiBoZXQgYmVnaW5zZWluIGVuIGRlIGdlbm9lbWRlIHNlY3RpZXNjaGVpZGluZy4gT20gZGV6ZSB0ZSBrdW5uZW4gdG9uZW4gdm9lZ2VuIHdlIGRlIHZvb3JzZWN0aWUgdmFuIGhldCBiZWdpbnNlaW5cbiAgICAgICAgLy8gdG9lIGFhbiBkZSBsaWpzdCBtZXQgcm91dGUgZWxlbWVudGVuLlxuICAgICAgICBjb25zdCBiZWdpblJvdXRlU2VpbiA9IHJpdERlZWwuZ2V0Um91dGUoKS5nZXRCZWdpblNlaW4oKTtcbiAgICAgICAgY29uc3Qgc2JTZWluID0gc2JtU2VydmljZS5nZXRTQlNlaW4oYmVnaW5Sb3V0ZVNlaW4pO1xuICAgICAgICByZXR1cm4gc2JTZWluID8gc2JTZWluLmdldFZvb3JTZWN0aWUoKSA6IG51bGw7XG4gICAgfVxuXG4vLyBtYWtlIHN1cmUgdGhlIGVsZW1zIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAgcHJpdmF0ZSBzdGF0aWMgc29ydGVlclRvcG9FbGVtZW50ZW4odG9wb0VsZW1zOiBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50W10pOiBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICBjb25zdCB0b3BvRWxlbWVudGVuID0gdG9wb0VsZW1zLnNsaWNlKCk7XG4gICAgICAgIGxldCBsaW50ID0gbnVsbDtcbiAgICAgICAgbGV0IGZpcnN0ID0gbnVsbDtcbiAgICAgICAgbGV0IHNlY29uZCA9IG51bGw7XG5cbiAgICAgICAgZm9yIChjb25zdCB0b3BvRWxlbWVudCBvZiB0b3BvRWxlbWVudGVuKSB7XG4gICAgICAgICAgICBsZXQga2lsb21ldHJlcmluZ2VuID0gbnVsbDtcblxuICAgICAgICAgICAgY29uc3Qga21zOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdID0gSnNKYXZhVXRpbC5saXN0VG9BcnJheSh0b3BvRWxlbWVudC5nZXRLaWxvbWV0cmVyaW5nZW4oKSk7XG4gICAgICAgICAgICBpZiAoa21zICE9PSBudWxsICYmIGttcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAga2lsb21ldHJlcmluZ2VuID0ga21zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoa2lsb21ldHJlcmluZ2VuICYmICFmaXJzdCkge1xuICAgICAgICAgICAgICAgIGZpcnN0ID0ga2lsb21ldHJlcmluZ2VuWzBdLmdldEttV2FhcmRlKCk7XG4gICAgICAgICAgICAgICAgbGludCA9IGtpbG9tZXRyZXJpbmdlblswXS5nZXRLbUxpbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2lsb21ldHJlcmluZ2VuICYmIGZpcnN0ICYmICFzZWNvbmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrbSA9IEttUmFuZ2UuZ2V0S2lsb21ldHJlcmluZyhsaW50LCBraWxvbWV0cmVyaW5nZW4pO1xuICAgICAgICAgICAgICAgIGlmIChrbSkge1xuICAgICAgICAgICAgICAgICAgICBzZWNvbmQgPSBrbS5nZXRLbVdhYXJkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJzdCAmJiBzZWNvbmQgJiYgZmlyc3QgPiBzZWNvbmQpIHtcbiAgICAgICAgICAgICAgICB0b3BvRWxlbWVudGVuLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9wb0VsZW1lbnRlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjb3JyaWdlZXJUb3BvRWxlbWVudGVuWm9uZGVyS21zKHRvcG9FbGVtZW50ZW5ab25kZXJLbXM6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSwgdmFuS2lsb21ldHJlcmluZ2VuOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdLCBrbVJhbmdlczogS21SYW5nZVtdKTogdm9pZCB7XG4gICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGlmICghdmFuS2lsb21ldHJlcmluZ2VuICYmIHRvdEtpbG9tZXRyZXJpbmdlbikge1xuICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmdlbiA9IFtuZXcgTXN0S2lsb21ldHJlcmluZyh0b3RLaWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21MaW50KCksIC0xMDAwMDApXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdG90S2lsb21ldHJlcmluZ2VuICYmIHZhbktpbG9tZXRyZXJpbmdlbikge1xuICAgICAgICAgICAgICAgIHRvdEtpbG9tZXRyZXJpbmdlbiA9IFtuZXcgTXN0S2lsb21ldHJlcmluZyh2YW5LaWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21MaW50KCksIDEwMDAwMCldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFuS2lsb21ldHJlcmluZ2VuWzBdID4gdG90S2lsb21ldHJlcmluZ2VuWzBdKSB7XG4gICAgICAgICAgICAgICAga21SYW5nZXMucHVzaChLbVJhbmdlLnJhbmdlVm9vclN0cmVrT2JqZWN0KGUsIHRoaXMuYWRkS20odmFuS2lsb21ldHJlcmluZ2VuLCAtMSksIHRoaXMuYWRkS20odG90S2lsb21ldHJlcmluZ2VuLCAxKSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5wdXNoKEttUmFuZ2UucmFuZ2VWb29yU3RyZWtPYmplY3QoZSwgdGhpcy5hZGRLbSh2YW5LaWxvbWV0cmVyaW5nZW4sIDEpLCB0aGlzLmFkZEttKHRvdEtpbG9tZXRyZXJpbmdlbiwgLTEpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFkZEttKGttczogS2lsb21ldHJlcmluZ1tdLCBhYW50YWw6IG51bWJlcik6IEtpbG9tZXRyZXJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHJldHZhbCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGttIG9mIGttcykge1xuICAgICAgICAgICAgcmV0dmFsLnB1c2gobmV3IE1zdEtpbG9tZXRyZXJpbmcoa20uZ2V0S21MaW50KCksIGttLmdldEttV2FhcmRlKCkgKyBhYW50YWwpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGthbkFjdGllc0JlcGFsZW4ocml0ZGVlbDogUml0ZGVlbCk6IEFjdGllW10ge1xuICAgICAgICByZXR1cm4gcml0ZGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdGRlZWwuYWN0aWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzS2lsb21ldHJlcmluZ0FhbndlemlnKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgYWFud2V6aWcgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudGVuKSB7XG4gICAgICAgICAgICBjb25zdCBrbXMgPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KGZyYWdtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhYW53ZXppZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFhbndlemlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlbihzcG9vcnRhazogc2JibGFkLlNwb29ydGFrKTogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkoc3Bvb3J0YWsuZ2V0VGFrRWxlbWVudGVuKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlblB1aWNzKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGZyYWdtZW50ZW4uZm9yRWFjaChkZWVsID0+IHB1aWNzLnB1c2goZGVlbC5nZXRQdWljKCkpKTtcbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzRW5nZWxzZVdpc3NlbChhY3RpZTogQWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLndpc3NlbE5hYW0uaW5jbHVkZXMoJ3wnKSAmJiBhY3RpZS53aXNzZWxLYW50Q29kZS5sZW5ndGggPT09IDI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0S2FudGNvZGVUZWtzdChrYW50Y29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHRla3N0ID0gJ1Zvb3InO1xuICAgICAgICBpZiAodGhpcy5pc0thbnRDb2RlTGlua3Moa2FudGNvZGUpKSB7XG4gICAgICAgICAgICB0ZWtzdCA9ICdMaW5rcyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0thbnRDb2RlUmVjaHRzKGthbnRjb2RlKSkge1xuICAgICAgICAgICAgdGVrc3QgPSAnUmVjaHRzJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGVrc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNLYW50Q29kZVJlY2h0cyhrYW50Y29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBrYW50Y29kZSA9PT0gJ1InO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzS2FudENvZGVMaW5rcyhrYW50Y29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBrYW50Y29kZSA9PT0gJ0wnO1xuICAgIH1cblxuICAgIGJlcGFhbFB1aWNzVm9vckFjdGllKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IHB1aWNzO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIHB1aWNzID0gdGhpcy5iZXBhYWxQdWljc1Zvb3JWU1RBY3RpZShhY3RpZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQWN0aWVIZWxwZXIuaXNXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpKSB7XG4gICAgICAgICAgICBwdWljcyA9IHRoaXMuYmVwYWFsUHVpY1Zvb3JXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHVpY3MgPSB0aGlzLmJlcGFhbEFjdGllUHVpY3NWb29yU3Bvb3J0YWsoYWN0aWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBiZXBhYWxBY3RpZVB1aWNzVWl0Uml0ZGVlbChyaXREZWVsOiBSaXRkZWVsKTogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPiB7Ly8gdm9vciBoaWdobGlnaHRzXG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5rYW5BY3RpZXNCZXBhbGVuKHJpdERlZWwpKSB7XG4gICAgICAgICAgICByaXREZWVsLmFjdGllcy5mb3JFYWNoKGEgPT4ge1xuICAgICAgICAgICAgICAgIG1hcC5wdXRBbGwoYSwgdGhpcy5iZXBhYWxQdWljc1Zvb3JBY3RpZShhKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH1cblxuICAgIGJlcGFhbEFjdGllc1B1aWNzKGFjdGllczogQWN0aWVbXSwgdG9wb0VsZW06IFRvcG9sb2d5RWxlbWVudFtdKTogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSBBY3RpZUhlbHBlci5zb3J0ZWVyVG9wb0VsZW1lbnRlbih0b3BvRWxlbSk7XG5cbiAgICAgICAgY29uc3Qga21SYW5nZXMgPSB0aGlzLnZlcndlcmtUb3BvRWxlbWVudGVuKHRvcG9FbGVtZW50ZW4pO1xuICAgICAgICByZXR1cm4gdGhpcy52ZXJ3ZXJrQWN0aWVzKGFjdGllcywga21SYW5nZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya0FjdGllcyhhY3RpZXM6IEFjdGllW10sIGttUmFuZ2VzOiBLbVJhbmdlW10pOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgYWN0aWVab25kZXJFbGVtZW50ZW46IG51bWJlcltdID0gW107XG4gICAgICAgIGNvbnN0IGxvZ01lbGRpbmdEVE9zOiBMb2dEdG9bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHJldHZhbCA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGFjdGllcy5mb3JFYWNoKGFjdGllID0+IHtcbiAgICAgICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljQXJyYXkgPSB0aGlzLmJlcGFhbFB1aWNWb29yV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKTtcbiAgICAgICAgICAgICAgICByZXR2YWwucHV0QWxsKGFjdGllLCBwdWljQXJyYXkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IFtdO1xuICAgICAgICAgICAgICAgIGttUmFuZ2VzLmZvckVhY2goa21SYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YW5LaWxvbWV0cmVyaW5nID0gbmV3IE1zdEtpbG9tZXRyZXJpbmcoYWN0aWUudmFuS2lsb21ldGVybGludCwgYWN0aWUudmFuS2lsb21ldHJlcmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3RLaWxvbWV0cmVyaW5nID0gbmV3IE1zdEtpbG9tZXRyZXJpbmcoYWN0aWUudG90S2lsb21ldGVybGludCwgYWN0aWUudG90S2lsb21ldHJlcmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpZS52YW5LaWxvbWV0cmVyaW5nID4gYWN0aWUudG90S2lsb21ldHJlcmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcCA9IHsgdmFuOiB2YW5LaWxvbWV0cmVyaW5nLCB0b3Q6IHRvdEtpbG9tZXRyZXJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmcgPSB0ZW1wLnRvdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdEtpbG9tZXRyZXJpbmcgPSB0ZW1wLnZhbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoa21SYW5nZS5oZWVmdE92ZXJsYXAodmFuS2lsb21ldHJlcmluZywgdG90S2lsb21ldHJlcmluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1aWNzLnB1c2goa21SYW5nZS50b3BvbG9neUVsZW1lbnQuZ2V0UHVpYygpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwdWljcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aWVab25kZXJFbGVtZW50ZW4ucHVzaChhY3RpZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbGRpbmc6IE1lbGRpbmdFdmVudCA9IE1lbGRpbmdCdWlsZGVyLmFjdGllSGlnaGxpZ2h0RXJyb3IoYWN0aWVab25kZXJFbGVtZW50ZW4pO1xuICAgICAgICAgICAgICAgICAgICBsb2dNZWxkaW5nRFRPcy5wdXNoKHRoaXMubG9nZ2luZ0hlbHBlci5tYWFrTG9nRFRPKG1lbGRpbmcsIGFjdGllKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHZhbC5wdXRBbGwoYWN0aWUsIHB1aWNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nTGVnZU1lbGRpbmdEdG8obG9nTWVsZGluZ0RUT3MpO1xuICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9nTGVnZU1lbGRpbmdEdG8obG9nRHRvOiBMb2dEdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAobG9nRHRvLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1zdExvZ1Jlc291cmNlLmxvZ01lc3NhZ2VzKGxvZ0R0byk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcndlcmtUb3BvRWxlbWVudGVuKHRvcG9FbGVtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IEttUmFuZ2VbXSB7XG4gICAgICAgIGNvbnN0IGttUmFuZ2VzOiBLbVJhbmdlW10gPSBbXTtcblxuICAgICAgICBsZXQgdG9wb0VsZW1lbnRlblpvbmRlckttcyA9IFtdO1xuICAgICAgICBsZXQgbGFhdHN0ZVB1bnRLbXM6IEtpbG9tZXRyZXJpbmdbXSA9IG51bGw7XG4gICAgICAgIHRvcG9FbGVtZW50ZW4uZm9yRWFjaChlbGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGttczogS2lsb21ldHJlcmluZ1tdID0gSnNKYXZhVXRpbC5saXN0VG9BcnJheShlbGVtLmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIEFjdGllSGVscGVyLmNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttcywgbGFhdHN0ZVB1bnRLbXMsIGttcywga21SYW5nZXMpO1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMgPSBbXTtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5wdXNoKEttUmFuZ2UucmFuZ2VWb29yUHVudE9iamVjdChlbGVtKSk7XG4gICAgICAgICAgICAgICAgbGFhdHN0ZVB1bnRLbXMgPSBrbXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMucHVzaChlbGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0b3BvRWxlbWVudGVuWm9uZGVyS21zLmxlbmd0aCA+IDAgJiYgbGFhdHN0ZVB1bnRLbXMpIHtcbiAgICAgICAgICAgIEFjdGllSGVscGVyLmNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttcywgbGFhdHN0ZVB1bnRLbXMsIG51bGwsIGttUmFuZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga21SYW5nZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxBY3RpZVB1aWNzVm9vclNwb29ydGFrKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3Qgc3Bvb3J0YWsgPSB0aGlzLnNibVNlcnZpY2UuZ2V0U2JTcG9vcnRhayhBY3RpZUhlbHBlci5iZXBhYWxUYWtJZChhY3RpZSkpO1xuXG4gICAgICAgIGxldCBwdWljczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKCFzcG9vcnRhaykge1xuICAgICAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZyYWdtZW50ZW4gPSBBY3RpZUhlbHBlci5iZXBhYWxTcG9vcnRha0ZyYWdtZW50ZW4oc3Bvb3J0YWspO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNLaWxvbWV0cmVyaW5nQWFud2V6aWcoZnJhZ21lbnRlbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcCA9IHRoaXMuYmVwYWFsQWN0aWVzUHVpY3MoW2FjdGllXSwgZnJhZ21lbnRlbik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBBcnJheS5mcm9tKG1hcC5rZXlzKCkpKSB7XG4gICAgICAgICAgICAgICAgbWFwLmdldChrZXkpLmZvckVhY2goeCA9PiBwdWljcy5wdXNoKHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHB1aWNzID0gQWN0aWVIZWxwZXIuYmVwYWFsU3Bvb3J0YWtGcmFnbWVudGVuUHVpY3MoZnJhZ21lbnRlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsUHVpY3NWb29yVlNUQWN0aWUoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNIZWVsT2ZIYWxmRW5nZWxzV2lzc2VsQWN0aWUoYWN0aWUpKSB7XG4gICAgICAgICAgICBjb25zdCByZXR2YWwgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHdpc3NlbERlbGVuID0gQWN0aWVIZWxwZXIuZ2V0V2lzc2VsRGVsZW4oYWN0aWUud2lzc2VsTmFhbSk7XG4gICAgICAgICAgICBjb25zdCBwdWljc0VlcnN0ZVdpc3NlbCA9IHRoaXMuYmVwYWFsV2lzc2VsUHVpY3Mod2lzc2VsRGVsZW5bMF0sIGFjdGllLnBwbGdOYWFtLCBhY3RpZS53aXNzZWxLYW50Q29kZVswXSk7XG4gICAgICAgICAgICBjb25zdCBwdWljc1R3ZWVkZVdpc3NlbCA9IHRoaXMuYmVwYWFsV2lzc2VsUHVpY3Mod2lzc2VsRGVsZW5bMV0sIGFjdGllLnBwbGdOYWFtLCBhY3RpZS53aXNzZWxLYW50Q29kZVsxXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHB1aWMxID0gdGhpcy5zYm1TZXJ2aWNlLmdldEVlcnN0ZVZlcmJpbmRpbmdQdWljVm9vclNwbGl0RW5nZWxzZVdpc3NlbCh3aXNzZWxEZWxlblswXSwgYWN0aWUud2lzc2VsS2FudENvZGVbMF0pO1xuICAgICAgICAgICAgaWYgKHB1aWMxICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHZhbC5wdXNoKHB1aWMxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHB1aWMyID0gdGhpcy5zYm1TZXJ2aWNlLmdldEVlcnN0ZVZlcmJpbmRpbmdQdWljVm9vclNwbGl0RW5nZWxzZVdpc3NlbCh3aXNzZWxEZWxlblsxXSwgYWN0aWUud2lzc2VsS2FudENvZGVbMV0pO1xuICAgICAgICAgICAgaWYgKHB1aWMyICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHZhbC5wdXNoKHB1aWMyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHZhbC5wdXNoKC4uLnB1aWNzRWVyc3RlV2lzc2VsKTtcbiAgICAgICAgICAgIHJldHZhbC5wdXNoKC4uLnB1aWNzVHdlZWRlV2lzc2VsKTtcbiAgICAgICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iZXBhYWxXaXNzZWxQdWljcyhhY3RpZS53aXNzZWxOYWFtLCBhY3RpZS5wcGxnTmFhbSwgYWN0aWUud2lzc2VsS2FudENvZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxXaXNzZWxQdWljcyh3aXNzZWxOYWFtOiBzdHJpbmcsIHBwbGdOYWFtOiBzdHJpbmcsIGthbnRjb2RlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHdpc3NlbCA9IHRoaXMuc2JtU2VydmljZS5nZXRTQldpc3NlbCh3aXNzZWxOYWFtLCBwcGxnTmFhbSk7XG4gICAgICAgIGlmICghd2lzc2VsKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2FudEVsZW1lbnQgPSB0aGlzLmJlcGFhbEthbnRFbGVtZW50KGthbnRjb2RlLCB3aXNzZWwpO1xuICAgICAgICBpZiAoIWthbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcmluZ1N5bWJvb2xQdWljID0gd2lzc2VsLmdldFN0b3JpbmdTeW1ib29sUHVpYygpO1xuXG4gICAgICAgIHJldHVybiBbc3RvcmluZ1N5bWJvb2xQdWljLCBrYW50RWxlbWVudC5nZXRQdWljKCldO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsS2FudEVsZW1lbnQoa2FudGNvZGU6IHN0cmluZywgd2lzc2VsOiBzYmJsYWQuV2lzc2VsKTogc2JibGFkLlNwb29ydGFrRnJhZ21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNLYW50Q29kZVJlY2h0cyhrYW50Y29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXNzZWwuZ2V0UmlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNLYW50Q29kZUxpbmtzKGthbnRjb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdpc3NlbC5nZXRMZWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFB1aWNWb29yV2lzc2VsU2xpanBlbkFjdGllKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3Qgc3RvcmluZ3NTeW1ib29sUHVpYyA9IHRoaXMuc2JtU2VydmljZS5nZXRTQldpc3NlbChhY3RpZS53aXNzZWxOYWFtLCBhY3RpZS5wcGxnTmFhbSk/LmdldFN0b3JpbmdTeW1ib29sUHVpYygpO1xuICAgICAgICBpZiAoIXN0b3JpbmdzU3ltYm9vbFB1aWMgJiYgdGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc3QgbWVsZGluZzogTWVsZGluZ0V2ZW50ID0gTWVsZGluZ0J1aWxkZXIuYWN0aWVIaWdobGlnaHRFcnJvcihbYWN0aWUuaWRdKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLmFjdGllSGlnaGxpZ2h0RXJyb3IoW2FjdGllLmlkXSkpO1xuICAgICAgICAgICAgdGhpcy5tc3RMb2dSZXNvdXJjZS5sb2dNZXNzYWdlcyhbdGhpcy5sb2dnaW5nSGVscGVyLm1hYWtMb2dEVE8obWVsZGluZywgYWN0aWUpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3JpbmdzU3ltYm9vbFB1aWMgPyBbc3RvcmluZ3NTeW1ib29sUHVpY10gOiBbXTtcbiAgICB9XG59XG5cblxuIl19
@@ -35,7 +35,7 @@ export class ActiePopoverBepaler {
35
35
  ongeplandeActies.entries.forEach(entry => {
36
36
  const treinNummerActieInfos = puicNaarOngeplandeActieMap.get(entry.key);
37
37
  if (!treinNummerActieInfos?.map(({ actie }) => actie).includes(entry.value.actie)) {
38
- puicNaarOngeplandeActieMap.put(entry.key, { treinNummer: undefined, actie: entry.value.actie });
38
+ puicNaarOngeplandeActieMap.put(entry.key, { actie: entry.value.actie });
39
39
  }
40
40
  });
41
41
  }
@@ -87,4 +87,4 @@ export class ActiePopoverBepaler {
87
87
  return retval;
88
88
  }
89
89
  }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtcG9wb3Zlci1iZXBhbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtcG9wb3Zlci1iZXBhbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU81QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFtQixFQUFFLGlCQUErQyxFQUNwRSxnQkFBd0Q7UUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDbEYsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDakIsTUFBTSw0QkFBNEIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFD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Q0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9wb3ZlckluZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQgeyBPbmdlcGxhbmRlQWN0aWUgfSBmcm9tICcuLi9tb2RlbC9vbmdlcGxhbmRlLWFjdGllJztcbmltcG9ydCB7IFJpdGRlZWwgfSBmcm9tICcuLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCB7IEFjdGllIH0gZnJvbSAnLi4vb3B0aW1vJztcbmltcG9ydCB7IEFjdGllSGVscGVyIH0gZnJvbSAnLi9hY3RpZS1oZWxwZXInO1xuaW1wb3J0IHsgQXJyYXlNdWx0aW1hcCB9IGZyb20gJy4vbXVsdGktbWFwJztcblxuaW50ZXJmYWNlIFRyZWluTnVtbWVyQWN0aWVJbmZvIHtcbiAgICB0cmVpbk51bW1lcjogbnVtYmVyO1xuICAgIGFjdGllOiBBY3RpZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFjdGllUG9wb3ZlckJlcGFsZXIge1xuICAgIHN0YXRpYyBiZXBhYWxQb3BvdmVySW5mb3Mocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IFBvcG92ZXJJbmZvW10ge1xuICAgICAgICBjb25zdCBwdWljTmFhckFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhckFjdGllTWFwKHJpdERlbGVuLCByaXRBY3RpZVRvcG9QdWljcyk7XG4gICAgICAgIGNvbnN0IHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzKTtcblxuICAgICAgICBjb25zdCBwdWljcyA9IHB1aWNOYWFyQWN0aWVNYXAua2V5cygpO1xuICAgICAgICBwdWljcy5wdXNoKC4uLnB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwLmtleXMoKS5maWx0ZXIocCA9PiAhcHVpY3MuaW5jbHVkZXMocCkpKTtcblxuICAgICAgICBjb25zdCBpbmZvcyA9IFtdO1xuICAgICAgICBwdWljcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IHRyZWluTnVtbWVyQWN0aWVJbmZvc0dlcGxhbmQgPSBwdWljTmFhckFjdGllTWFwLmdldChwdWljKS5zb3J0KHRoaXMuc29ydFRyZWluTnVtbWVyQWN0aWVJbmZvKCkpO1xuICAgICAgICAgICAgY29uc3QgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kID0gcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAuZ2V0KHB1aWMpLnNvcnQodGhpcy5zb3J0VHJlaW5OdW1tZXJBY3RpZUluZm8oKSk7XG4gICAgICAgICAgICBjb25zdCBzaG93VHJlaW5OdW1tZXIgPSB0cmVpbk51bW1lckFjdGllSW5mb3NHZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpXG4gICAgICAgICAgICAgICAgfHwgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpO1xuICAgICAgICAgICAgdHJlaW5OdW1tZXJBY3RpZUluZm9zR2VwbGFuZC5mb3JFYWNoKGEgPT4gY29udGVudCA9IHRoaXMudnVsUG9wb3ZlckNvbnRlbnQoY29udGVudCwgYSwgJ3BvcG92ZXJ0ZWtzdC1nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG4gICAgICAgICAgICB0cmVpbk51bW1lckFjdGllSW5mb3NPbmdlcGxhbmQuZm9yRWFjaChhID0+IGNvbnRlbnQgPSB0aGlzLnZ1bFBvcG92ZXJDb250ZW50KGNvbnRlbnQsIGEsICdwb3BvdmVydGVrc3Qtb25nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQsIHB1aWMsIHNob3dUcmVpbk51bW1lcik7XG4gICAgICAgICAgICBpbmZvcy5wdXNoKGluZm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGluZm9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQ6IHN0cmluZywgcHVpYzogc3RyaW5nLCBzaG93VHJlaW5OdW1tZXI6IGJvb2xlYW4pOiBQb3BvdmVySW5mbyB7XG4gICAgICAgIGNvbnN0IGluZm8gPSBuZXcgUG9wb3ZlckluZm8oW3B1aWNdLCBjb250ZW50KTtcbiAgICAgICAgaW5mby5wb3BvdmVyVGl0bGVDb250ZW50ID0gc2hvd1RyZWluTnVtbWVyID8gJzxzcGFuIGNsYXNzPVwidHJlaW5udW1tZXJcIj5UcmVpbiAjPC9zcGFuPjxzcGFuPkFjdGllczwvc3Bhbj4nIDogJ0FjdGllcyc7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNvcnRUcmVpbk51bW1lckFjdGllSW5mbygpOiAoYTogVHJlaW5OdW1tZXJBY3RpZUluZm8sIGI6IFRyZWluTnVtbWVyQWN0aWVJbmZvKSA9PiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKGExLCBhMik6IG51bWJlciA9PiBBY3RpZUhlbHBlci5hY3RpZUNvbXBhcmF0b3IoYTEuYWN0aWUsIGEyLmFjdGllKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBiZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBUcmVpbk51bW1lckFjdGllSW5mbz4ge1xuICAgICAgICBjb25zdCBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIGlmIChvbmdlcGxhbmRlQWN0aWVzLnNpemUoKSA+IDApIHtcbiAgICAgICAgICAgIG9uZ2VwbGFuZGVBY3RpZXMuZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmVpbk51bW1lckFjdGllSW5mb3MgPSBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcC5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRyZWluTnVtbWVyQWN0aWVJbmZvcz8ubWFwKCh7IGFjdGllIH0pID0+IGFjdGllKS5pbmNsdWRlcyhlbnRyeS52YWx1ZS5hY3RpZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAucHV0KGVudHJ5LmtleSwgeyB0cmVpbk51bW1lcjogdW5kZWZpbmVkLCBhY3RpZTogZW50cnkudmFsdWUuYWN0aWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFB1aWNOYWFyQWN0aWVNYXAocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4pOiBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+IHtcbiAgICAgICAgY29uc3QgcHVpY05hYXJBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIHJpdERlbGVuLmZvckVhY2gocml0RGVlbCA9PiB7XG4gICAgICAgICAgICBpZiAocml0RGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdERlZWwuYWN0aWVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJpdERlZWwuYWN0aWVzLmZvckVhY2gocml0QWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IHJpdEFjdGllVG9wb1B1aWNzLmdldChyaXRBY3RpZSk7XG4gICAgICAgICAgICAgICAgICAgIHB1aWNzLmZvckVhY2gocHVpYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvUHVpY05hYXJBY3RpZU1hcElmTm90RXhpc3RzKHB1aWNOYWFyQWN0aWVNYXAsIHB1aWMsIHJpdEFjdGllLCByaXREZWVsLmJld2VnaW5nPy50cmVpbk51bW1lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyQWN0aWVNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkVG9QdWljTmFhckFjdGllTWFwSWZOb3RFeGlzdHMocHVpY05hYXJBY3RpZU1hcDogQXJyYXlNdWx0aW1hcDxzdHJpbmcsIFRyZWluTnVtbWVyQWN0aWVJbmZvPiwgcHVpYzogc3RyaW5nLCByaXRBY3RpZTogQWN0aWUsIHRyZWluTnVtbWVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJlaW5OdW1tZXJBY3RpZUluZm9zID0gcHVpY05hYXJBY3RpZU1hcC5nZXQocHVpYyk7XG4gICAgICAgIGlmICghKHRyZWluTnVtbWVyQWN0aWVJbmZvcz8uZmluZCgoeyBhY3RpZSB9KSA9PiBhY3RpZSA9PT0gcml0QWN0aWUpKSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aWVJbmZvOiBUcmVpbk51bW1lckFjdGllSW5mbyA9IHsgdHJlaW5OdW1tZXIsIGFjdGllOiByaXRBY3RpZSB9O1xuICAgICAgICAgICAgcHVpY05hYXJBY3RpZU1hcC5wdXQocHVpYywgYWN0aWVJbmZvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHZ1bFBvcG92ZXJDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgeyB0cmVpbk51bW1lciwgYWN0aWUgfTogVHJlaW5OdW1tZXJBY3RpZUluZm8sIGNsYXp6OiBzdHJpbmcsIHNob3dUcmVpbk51bW1lcjogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXR2YWwgPSBjb250ZW50O1xuICAgICAgICBjb25zdCB0cmVpbm51bW1lckNsYXNzID0gc2hvd1RyZWluTnVtbWVyID8gJ2NsYXNzPVwidHJlaW5udW1tZXJcIicgOiAnY2xhc3M9XCJuby10cmVpbm51bW1lclwiJztcblxuICAgICAgICByZXR2YWwgKz0gJzxkaXYgY2xhc3M9XCJub3dyYXAgJyArIGNsYXp6ICsgJ1wiPic7XG4gICAgICAgIHJldHZhbCArPSBgPHNwYW4gJHsgdHJlaW5udW1tZXJDbGFzcyB9PiR7IHRyZWluTnVtbWVyIHx8ICctJyB9PC9zcGFuPmA7XG5cbiAgICAgICAgbGV0IGFjdGllT21zY2hyaWp2aW5nID0gJyc7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1ZTVEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gQWN0aWVIZWxwZXIuZ2V0VlNUQWN0aWVPbXNjaHJpanZpbmcoYWN0aWUpO1xuICAgICAgICB9IGVsc2UgaWYgKEFjdGllSGVscGVyLmlzV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gYCR7IGFjdGllLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyB9ICR7IGFjdGllLndpc3NlbE5hYW0gfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3RpZU9tc2NocmlqdmluZyArPSBgJHsgYWN0aWUucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nIH0gJHsgYWN0aWUudmFuS2lsb21ldGVybGludCB9ICR7IGFjdGllLnZhbktpbG9tZXRyZXJpbmcgfWA7XG4gICAgICAgICAgICBhY3RpZU9tc2NocmlqdmluZyArPSAnLSc7XG4gICAgICAgICAgICBpZiAoYWN0aWUudG90S2lsb21ldGVybGludCAhPT0gYWN0aWUudmFuS2lsb21ldGVybGludCkge1xuICAgICAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IGFjdGllLnRvdEtpbG9tZXRlcmxpbnQ7XG4gICAgICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gYWN0aWUudG90S2lsb21ldHJlcmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR2YWwgKz0gYDxzcGFuPiR7IGFjdGllT21zY2hyaWp2aW5nIH08L3NwYW4+PC9kaXY+YDtcbiAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICB9XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtcG9wb3Zlci1iZXBhbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtcG9wb3Zlci1iZXBhbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU81QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFtQixFQUFFLGlCQUErQyxFQUNwRSxnQkFBd0Q7UUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDbEYsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRixNQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sNEJBQTRCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FB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Q29udGVudCI6WyJpbXBvcnQgeyBQb3BvdmVySW5mbyB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IE9uZ2VwbGFuZGVBY3RpZSB9IGZyb20gJy4uL21vZGVsL29uZ2VwbGFuZGUtYWN0aWUnO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgQWN0aWUgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgQWN0aWVIZWxwZXIgfSBmcm9tICcuL2FjdGllLWhlbHBlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi9tdWx0aS1tYXAnO1xuXG5pbnRlcmZhY2UgVHJlaW5OdW1tZXJBY3RpZUluZm8ge1xuICAgIHRyZWluTnVtbWVyPzogbnVtYmVyO1xuICAgIGFjdGllOiBBY3RpZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFjdGllUG9wb3ZlckJlcGFsZXIge1xuICAgIHN0YXRpYyBiZXBhYWxQb3BvdmVySW5mb3Mocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IFBvcG92ZXJJbmZvW10ge1xuICAgICAgICBjb25zdCBwdWljTmFhckFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhckFjdGllTWFwKHJpdERlbGVuLCByaXRBY3RpZVRvcG9QdWljcyk7XG4gICAgICAgIGNvbnN0IHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzKTtcblxuICAgICAgICBjb25zdCBwdWljcyA9IHB1aWNOYWFyQWN0aWVNYXAua2V5cygpO1xuICAgICAgICBwdWljcy5wdXNoKC4uLnB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwLmtleXMoKS5maWx0ZXIocCA9PiAhcHVpY3MuaW5jbHVkZXMocCkpKTtcblxuICAgICAgICBjb25zdCBpbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xuICAgICAgICBwdWljcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IHRyZWluTnVtbWVyQWN0aWVJbmZvc0dlcGxhbmQgPSBwdWljTmFhckFjdGllTWFwLmdldChwdWljKS5zb3J0KHRoaXMuc29ydFRyZWluTnVtbWVyQWN0aWVJbmZvKCkpO1xuICAgICAgICAgICAgY29uc3QgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kID0gcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAuZ2V0KHB1aWMpLnNvcnQodGhpcy5zb3J0VHJlaW5OdW1tZXJBY3RpZUluZm8oKSk7XG4gICAgICAgICAgICBjb25zdCBzaG93VHJlaW5OdW1tZXIgPSB0cmVpbk51bW1lckFjdGllSW5mb3NHZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpXG4gICAgICAgICAgICAgICAgfHwgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpO1xuICAgICAgICAgICAgdHJlaW5OdW1tZXJBY3RpZUluZm9zR2VwbGFuZC5mb3JFYWNoKGEgPT4gY29udGVudCA9IHRoaXMudnVsUG9wb3ZlckNvbnRlbnQoY29udGVudCwgYSwgJ3BvcG92ZXJ0ZWtzdC1nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG4gICAgICAgICAgICB0cmVpbk51bW1lckFjdGllSW5mb3NPbmdlcGxhbmQuZm9yRWFjaChhID0+IGNvbnRlbnQgPSB0aGlzLnZ1bFBvcG92ZXJDb250ZW50KGNvbnRlbnQsIGEsICdwb3BvdmVydGVrc3Qtb25nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQsIHB1aWMsIHNob3dUcmVpbk51bW1lcik7XG4gICAgICAgICAgICBpbmZvcy5wdXNoKGluZm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGluZm9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQ6IHN0cmluZywgcHVpYzogc3RyaW5nLCBzaG93VHJlaW5OdW1tZXI6IGJvb2xlYW4pOiBQb3BvdmVySW5mbyB7XG4gICAgICAgIGNvbnN0IGluZm8gPSBuZXcgUG9wb3ZlckluZm8oW3B1aWNdLCBjb250ZW50KTtcbiAgICAgICAgaW5mby5wb3BvdmVyVGl0bGVDb250ZW50ID0gc2hvd1RyZWluTnVtbWVyID8gJzxzcGFuIGNsYXNzPVwidHJlaW5udW1tZXJcIj5UcmVpbiAjPC9zcGFuPjxzcGFuPkFjdGllczwvc3Bhbj4nIDogJ0FjdGllcyc7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNvcnRUcmVpbk51bW1lckFjdGllSW5mbygpOiAoYTogVHJlaW5OdW1tZXJBY3RpZUluZm8sIGI6IFRyZWluTnVtbWVyQWN0aWVJbmZvKSA9PiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKGExLCBhMik6IG51bWJlciA9PiBBY3RpZUhlbHBlci5hY3RpZUNvbXBhcmF0b3IoYTEuYWN0aWUsIGEyLmFjdGllKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBiZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBUcmVpbk51bW1lckFjdGllSW5mbz4ge1xuICAgICAgICBjb25zdCBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIGlmIChvbmdlcGxhbmRlQWN0aWVzLnNpemUoKSA+IDApIHtcbiAgICAgICAgICAgIG9uZ2VwbGFuZGVBY3RpZXMuZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmVpbk51bW1lckFjdGllSW5mb3MgPSBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcC5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRyZWluTnVtbWVyQWN0aWVJbmZvcz8ubWFwKCh7IGFjdGllIH0pID0+IGFjdGllKS5pbmNsdWRlcyhlbnRyeS52YWx1ZS5hY3RpZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAucHV0KGVudHJ5LmtleSwgeyBhY3RpZTogZW50cnkudmFsdWUuYWN0aWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFB1aWNOYWFyQWN0aWVNYXAocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4pOiBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+IHtcbiAgICAgICAgY29uc3QgcHVpY05hYXJBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIHJpdERlbGVuLmZvckVhY2gocml0RGVlbCA9PiB7XG4gICAgICAgICAgICBpZiAocml0RGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdERlZWwuYWN0aWVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJpdERlZWwuYWN0aWVzLmZvckVhY2gocml0QWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IHJpdEFjdGllVG9wb1B1aWNzLmdldChyaXRBY3RpZSk7XG4gICAgICAgICAgICAgICAgICAgIHB1aWNzLmZvckVhY2gocHVpYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvUHVpY05hYXJBY3RpZU1hcElmTm90RXhpc3RzKHB1aWNOYWFyQWN0aWVNYXAsIHB1aWMsIHJpdEFjdGllLCByaXREZWVsLmJld2VnaW5nPy50cmVpbk51bW1lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyQWN0aWVNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkVG9QdWljTmFhckFjdGllTWFwSWZOb3RFeGlzdHMocHVpY05hYXJBY3RpZU1hcDogQXJyYXlNdWx0aW1hcDxzdHJpbmcsIFRyZWluTnVtbWVyQWN0aWVJbmZvPiwgcHVpYzogc3RyaW5nLCByaXRBY3RpZTogQWN0aWUsIHRyZWluTnVtbWVyPzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRyZWluTnVtbWVyQWN0aWVJbmZvcyA9IHB1aWNOYWFyQWN0aWVNYXAuZ2V0KHB1aWMpO1xuICAgICAgICBpZiAoISh0cmVpbk51bW1lckFjdGllSW5mb3M/LmZpbmQoKHsgYWN0aWUgfSkgPT4gYWN0aWUgPT09IHJpdEFjdGllKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGllSW5mbzogVHJlaW5OdW1tZXJBY3RpZUluZm8gPSB7IHRyZWluTnVtbWVyLCBhY3RpZTogcml0QWN0aWUgfTtcbiAgICAgICAgICAgIHB1aWNOYWFyQWN0aWVNYXAucHV0KHB1aWMsIGFjdGllSW5mbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyB2dWxQb3BvdmVyQ29udGVudChjb250ZW50OiBzdHJpbmcsIHsgdHJlaW5OdW1tZXIsIGFjdGllIH06IFRyZWluTnVtbWVyQWN0aWVJbmZvLCBjbGF6ejogc3RyaW5nLCBzaG93VHJlaW5OdW1tZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0dmFsID0gY29udGVudDtcbiAgICAgICAgY29uc3QgdHJlaW5udW1tZXJDbGFzcyA9IHNob3dUcmVpbk51bW1lciA/ICdjbGFzcz1cInRyZWlubnVtbWVyXCInIDogJ2NsYXNzPVwibm8tdHJlaW5udW1tZXJcIic7XG5cbiAgICAgICAgcmV0dmFsICs9ICc8ZGl2IGNsYXNzPVwibm93cmFwICcgKyBjbGF6eiArICdcIj4nO1xuICAgICAgICByZXR2YWwgKz0gYDxzcGFuICR7IHRyZWlubnVtbWVyQ2xhc3MgfT4keyB0cmVpbk51bW1lciB8fCAnLScgfTwvc3Bhbj5gO1xuXG4gICAgICAgIGxldCBhY3RpZU9tc2NocmlqdmluZyA9ICcnO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IEFjdGllSGVscGVyLmdldFZTVEFjdGllT21zY2hyaWp2aW5nKGFjdGllKTtcbiAgICAgICAgfSBlbHNlIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IGAkeyBhY3RpZS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgfSAkeyBhY3RpZS53aXNzZWxOYWFtIH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gYCR7IGFjdGllLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyB9ICR7IGFjdGllLnZhbktpbG9tZXRlcmxpbnQgfSAkeyBhY3RpZS52YW5LaWxvbWV0cmVyaW5nIH1gO1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gJy0nO1xuICAgICAgICAgICAgaWYgKGFjdGllLnRvdEtpbG9tZXRlcmxpbnQgIT09IGFjdGllLnZhbktpbG9tZXRlcmxpbnQpIHtcbiAgICAgICAgICAgICAgICBhY3RpZU9tc2NocmlqdmluZyArPSBhY3RpZS50b3RLaWxvbWV0ZXJsaW50O1xuICAgICAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9ICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IGFjdGllLnRvdEtpbG9tZXRyZXJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dmFsICs9IGA8c3Bhbj4keyBhY3RpZU9tc2NocmlqdmluZyB9PC9zcGFuPjwvZGl2PmA7XG4gICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgfVxufVxuIl19