@decaf-ts/integrations 0.3.12 → 0.4.1-0

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 (196) hide show
  1. package/README.md +11 -3
  2. package/dist/integrations.cjs +445 -7
  3. package/dist/integrations.js +479 -8
  4. package/jest.config.cjs +1 -1
  5. package/lib/cjs/feature-flags/constants.cjs +16 -0
  6. package/lib/cjs/feature-flags/decorators.cjs +65 -0
  7. package/lib/cjs/feature-flags/environment.cjs +26 -0
  8. package/lib/cjs/feature-flags/index.cjs +31 -0
  9. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +81 -0
  10. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +78 -0
  11. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +25 -0
  12. package/lib/cjs/feature-flags/readers/index.cjs +19 -0
  13. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +259 -0
  14. package/lib/cjs/feature-flags/types.cjs +4 -0
  15. package/lib/cjs/feature-flags/utils.cjs +141 -0
  16. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +9 -9
  17. package/lib/cjs/graph/shared/nodes/flow-control.cjs +4 -3
  18. package/lib/cjs/graph/shared/types.cjs +2 -2
  19. package/lib/cjs/index.cjs +6 -5
  20. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +329 -0
  21. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +37 -0
  22. package/lib/cjs/kibana/builders/index.cjs +20 -0
  23. package/lib/cjs/kibana/helpers.cjs +20 -16
  24. package/lib/cjs/kibana/index.cjs +3 -2
  25. package/lib/cjs/kibana/types.cjs +11 -2
  26. package/lib/cjs/loader/ObjectLoader.cjs +154 -0
  27. package/lib/cjs/loader/families.cjs +78 -0
  28. package/lib/cjs/loader/index.cjs +28 -0
  29. package/lib/cjs/loader/types.cjs +4 -0
  30. package/lib/cjs/nest/decorators.cjs +17 -0
  31. package/lib/cjs/nest/index.cjs +3 -3
  32. package/lib/cjs/nest/keycloakAuthHandler.cjs +74 -35
  33. package/lib/cjs/nest/keycloakModule.cjs +7 -10
  34. package/lib/cjs/nest/types.cjs +2 -2
  35. package/lib/cjs/nest/utils.cjs +58 -50
  36. package/lib/cjs/plugins/contract.cjs +76 -0
  37. package/lib/cjs/plugins/index.cjs +35 -0
  38. package/lib/cjs/plugins/kibana/host.cjs +24 -0
  39. package/lib/cjs/plugins/kibana/index.cjs +38 -0
  40. package/lib/cjs/plugins/kibana/installer.cjs +180 -0
  41. package/lib/cjs/plugins/kibana/manifest.cjs +33 -0
  42. package/lib/cjs/plugins/kibana/templates.cjs +503 -0
  43. package/lib/cjs/plugins/kibana/types.cjs +33 -0
  44. package/lib/cjs/plugins/superset/host.cjs +26 -0
  45. package/lib/cjs/plugins/superset/index.cjs +40 -0
  46. package/lib/cjs/plugins/superset/installer.cjs +232 -0
  47. package/lib/cjs/plugins/superset/manifest.cjs +35 -0
  48. package/lib/cjs/plugins/superset/templates.cjs +844 -0
  49. package/lib/cjs/plugins/superset/types.cjs +39 -0
  50. package/lib/esm/feature-flags/constants.js +12 -0
  51. package/lib/esm/feature-flags/decorators.js +49 -0
  52. package/lib/esm/feature-flags/environment.js +18 -0
  53. package/lib/esm/feature-flags/index.js +14 -0
  54. package/lib/esm/feature-flags/models/FeatureFlag.model.js +72 -0
  55. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +69 -0
  56. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +19 -0
  57. package/lib/esm/feature-flags/readers/index.js +2 -0
  58. package/lib/esm/feature-flags/services/FeatureFlag.service.js +250 -0
  59. package/lib/esm/feature-flags/types.js +2 -0
  60. package/lib/esm/feature-flags/utils.js +126 -0
  61. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +8 -8
  62. package/lib/esm/graph/shared/nodes/flow-control.js +3 -2
  63. package/lib/esm/graph/shared/types.js +1 -1
  64. package/lib/esm/index.js +5 -4
  65. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +319 -0
  66. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +32 -0
  67. package/lib/esm/kibana/builders/index.js +3 -0
  68. package/lib/esm/kibana/helpers.js +19 -15
  69. package/lib/esm/kibana/index.js +2 -1
  70. package/lib/esm/kibana/types.js +13 -2
  71. package/lib/esm/loader/ObjectLoader.js +115 -0
  72. package/lib/esm/loader/families.js +66 -0
  73. package/lib/esm/loader/index.js +11 -0
  74. package/lib/esm/loader/types.js +2 -0
  75. package/lib/esm/nest/decorators.js +12 -0
  76. package/lib/esm/nest/index.js +2 -2
  77. package/lib/esm/nest/keycloakAuthHandler.js +67 -35
  78. package/lib/esm/nest/keycloakModule.js +7 -10
  79. package/lib/esm/nest/types.js +1 -1
  80. package/lib/esm/nest/utils.js +55 -46
  81. package/lib/esm/plugins/contract.js +68 -0
  82. package/lib/esm/plugins/index.js +18 -0
  83. package/lib/esm/plugins/kibana/host.js +19 -0
  84. package/lib/esm/plugins/kibana/index.js +14 -0
  85. package/lib/esm/plugins/kibana/installer.js +140 -0
  86. package/lib/esm/plugins/kibana/manifest.js +32 -0
  87. package/lib/esm/plugins/kibana/templates.js +499 -0
  88. package/lib/esm/plugins/kibana/types.js +10 -0
  89. package/lib/esm/plugins/superset/host.js +21 -0
  90. package/lib/esm/plugins/superset/index.js +16 -0
  91. package/lib/esm/plugins/superset/installer.js +192 -0
  92. package/lib/esm/plugins/superset/manifest.js +30 -0
  93. package/lib/esm/plugins/superset/templates.js +840 -0
  94. package/lib/esm/plugins/superset/types.js +11 -0
  95. package/lib/types/feature-flags/constants.d.cts +11 -0
  96. package/lib/types/feature-flags/constants.d.mts +11 -0
  97. package/lib/types/feature-flags/decorators.d.cts +11 -0
  98. package/lib/types/feature-flags/decorators.d.mts +11 -0
  99. package/lib/types/feature-flags/environment.d.cts +11 -0
  100. package/lib/types/feature-flags/environment.d.mts +11 -0
  101. package/lib/types/feature-flags/index.d.cts +13 -0
  102. package/lib/types/feature-flags/index.d.mts +13 -0
  103. package/lib/types/feature-flags/models/FeatureFlag.model.d.cts +16 -0
  104. package/lib/types/feature-flags/models/FeatureFlag.model.d.mts +16 -0
  105. package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.cts +15 -0
  106. package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.mts +15 -0
  107. package/lib/types/feature-flags/readers/FeatureFlagReader.d.cts +10 -0
  108. package/lib/types/feature-flags/readers/FeatureFlagReader.d.mts +10 -0
  109. package/lib/types/feature-flags/readers/index.d.cts +1 -0
  110. package/lib/types/feature-flags/readers/index.d.mts +1 -0
  111. package/lib/types/feature-flags/services/FeatureFlag.service.d.cts +43 -0
  112. package/lib/types/feature-flags/services/FeatureFlag.service.d.mts +43 -0
  113. package/lib/types/feature-flags/types.d.cts +39 -0
  114. package/lib/types/feature-flags/types.d.mts +39 -0
  115. package/lib/types/feature-flags/utils.d.cts +13 -0
  116. package/lib/types/feature-flags/utils.d.mts +13 -0
  117. package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +2 -2
  118. package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +2 -2
  119. package/lib/types/graph/shared/types.d.cts +3 -3
  120. package/lib/types/graph/shared/types.d.mts +3 -3
  121. package/lib/types/index.d.cts +3 -2
  122. package/lib/types/index.d.mts +3 -2
  123. package/lib/types/kibana/builders/KibanaIndexBuilder.d.cts +67 -0
  124. package/lib/types/kibana/builders/KibanaIndexBuilder.d.mts +67 -0
  125. package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.cts +17 -0
  126. package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.mts +17 -0
  127. package/lib/types/kibana/builders/index.d.cts +2 -0
  128. package/lib/types/kibana/builders/index.d.mts +2 -0
  129. package/lib/types/kibana/index.d.cts +1 -0
  130. package/lib/types/kibana/index.d.mts +1 -0
  131. package/lib/types/kibana/types.d.cts +11 -0
  132. package/lib/types/kibana/types.d.mts +11 -0
  133. package/lib/types/loader/ObjectLoader.d.cts +27 -0
  134. package/lib/types/loader/ObjectLoader.d.mts +27 -0
  135. package/lib/types/loader/families.d.cts +34 -0
  136. package/lib/types/loader/families.d.mts +34 -0
  137. package/lib/types/loader/index.d.cts +10 -0
  138. package/lib/types/loader/index.d.mts +10 -0
  139. package/lib/types/loader/types.d.cts +24 -0
  140. package/lib/types/loader/types.d.mts +24 -0
  141. package/lib/types/nest/decorators.d.cts +8 -0
  142. package/lib/types/nest/decorators.d.mts +8 -0
  143. package/lib/types/nest/index.d.cts +1 -1
  144. package/lib/types/nest/index.d.mts +1 -1
  145. package/lib/types/nest/keycloakAuthHandler.d.cts +19 -42
  146. package/lib/types/nest/keycloakAuthHandler.d.mts +19 -42
  147. package/lib/types/nest/keycloakModule.d.cts +3 -5
  148. package/lib/types/nest/keycloakModule.d.mts +3 -5
  149. package/lib/types/nest/types.d.cts +2 -0
  150. package/lib/types/nest/types.d.mts +2 -0
  151. package/lib/types/nest/utils.d.cts +3 -4
  152. package/lib/types/nest/utils.d.mts +3 -4
  153. package/lib/types/plugins/contract.d.cts +180 -0
  154. package/lib/types/plugins/contract.d.mts +180 -0
  155. package/lib/types/plugins/index.d.cts +17 -0
  156. package/lib/types/plugins/index.d.mts +17 -0
  157. package/lib/types/plugins/kibana/host.d.cts +18 -0
  158. package/lib/types/plugins/kibana/host.d.mts +18 -0
  159. package/lib/types/plugins/kibana/index.d.cts +13 -0
  160. package/lib/types/plugins/kibana/index.d.mts +13 -0
  161. package/lib/types/plugins/kibana/installer.d.cts +45 -0
  162. package/lib/types/plugins/kibana/installer.d.mts +45 -0
  163. package/lib/types/plugins/kibana/manifest.d.cts +31 -0
  164. package/lib/types/plugins/kibana/manifest.d.mts +31 -0
  165. package/lib/types/plugins/kibana/templates.d.cts +12 -0
  166. package/lib/types/plugins/kibana/templates.d.mts +12 -0
  167. package/lib/types/plugins/kibana/types.d.cts +9 -0
  168. package/lib/types/plugins/kibana/types.d.mts +9 -0
  169. package/lib/types/plugins/superset/host.d.cts +20 -0
  170. package/lib/types/plugins/superset/host.d.mts +20 -0
  171. package/lib/types/plugins/superset/index.d.cts +15 -0
  172. package/lib/types/plugins/superset/index.d.mts +15 -0
  173. package/lib/types/plugins/superset/installer.d.cts +70 -0
  174. package/lib/types/plugins/superset/installer.d.mts +70 -0
  175. package/lib/types/plugins/superset/manifest.d.cts +28 -0
  176. package/lib/types/plugins/superset/manifest.d.mts +28 -0
  177. package/lib/types/plugins/superset/templates.d.cts +12 -0
  178. package/lib/types/plugins/superset/templates.d.mts +12 -0
  179. package/lib/types/plugins/superset/types.d.cts +10 -0
  180. package/lib/types/plugins/superset/types.d.mts +10 -0
  181. package/package.json +62 -3
  182. package/plugins/kibana/.gitignore +16 -0
  183. package/plugins/kibana/Dockerfile +19 -0
  184. package/plugins/kibana/docker-compose.yml +50 -0
  185. package/plugins/kibana/host/index.html +101 -0
  186. package/plugins/kibana/setup-dashboards.sh +84 -0
  187. package/plugins/superset/.gitignore +17 -0
  188. package/plugins/superset/Dockerfile +79 -0
  189. package/plugins/superset/docker-compose.yml +62 -0
  190. package/plugins/superset/host/index.html +168 -0
  191. package/plugins/superset/setup-dashboards.sh +106 -0
  192. package/plugins/superset/superset_config.py +49 -0
  193. package/lib/cjs/nest/authService.cjs +0 -91
  194. package/lib/esm/nest/authService.js +0 -86
  195. package/lib/types/nest/authService.d.cts +0 -63
  196. package/lib/types/nest/authService.d.mts +0 -63
@@ -86,7 +86,7 @@ let SwitchFlowNode = class SwitchFlowNode extends GraphNode {
86
86
  static applyMetadata(meta) {
87
87
  const definition = graphDefinitionOf(this);
88
88
  const defaultPortName = meta.defaultPort ?? "default";
89
- const hasDefault = meta.hasDefault !== false;
89
+ const hasDefault = meta.hasDefault === true;
90
90
  // Base ports excluding any port that collides with a case output port.
91
91
  const basePorts = definition.ports.filter((p) => !meta.cases.some((c) => c.outputPort === p.property));
92
92
  // Separate the default output port so it can be placed last (or omitted).
@@ -144,6 +144,7 @@ SwitchFlowNode = __decorate([
144
144
  switch: {
145
145
  cases: [],
146
146
  defaultPort: "default",
147
+ hasDefault: false,
147
148
  },
148
149
  },
149
150
  }),
@@ -535,4 +536,4 @@ export const GRAPH_FLOW_CONTROL_NODES = [
535
536
  CodeFlowNode,
536
537
  LogFlowNode,
537
538
  ];
538
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3NoYXJlZC9ub2Rlcy9mbG93LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sYUFBYSxHQUVkLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBZTtBQUVuQzs7O0dBR0c7QUFnQkksSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVyxTQUFRLEtBQUs7Q0FlcEMsQ0FBQTtBQVhDO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDakYsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzt5Q0FDWDtBQUtoQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0lBQ25GLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQzs7d0NBQ1o7QUFLZjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDO0lBQ3BGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFB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SUFDVixTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDNUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzswQ0FDWDtBQUtoQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MkNBQ1o7QUFUTixXQUFXO0lBZHZCLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDckIsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUMzQyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsS0FBSztZQUNaLFdBQVcsRUFBRSx5RUFBeUU7U0FDdkY7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssV0FBVyxDQVV2Qjs7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFVBQVU7SUFDVixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixXQUFXO0lBQ1gsYUFBYTtJQUNiLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsY0FBYztJQUNkLFlBQVk7SUFDWixXQUFXO0NBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbm9kZXMvZmxvdy1jb250cm9sXG4gKiBAc3VtbWFyeSBQcm9kdWN0aW9uIGZsb3ctY29udHJvbCBub2RlIGtpbmQgZGVjbGFyYXRpb25zIChERUNBRi0zMiDCpzIyLjIuMikuXG4gKiBAZGVzY3JpcHRpb24gQ2Fub25pY2FsIGBAbm9kZWAtZGVjb3JhdGVkIGNsYXNzZXMgZm9yIHRoZSB0ZW4gQUxGUkVELTVcbiAqIGZsb3ctY29udHJvbCBraW5kcy4gVGhlc2UgYXJlIGdyYXBoLWxldmVsIG1hY3JvczogdGhlIGVuZ2luZSdzIHBsYW5uZXJcbiAqIHJlY29nbmlzZXMgdGhlbSBhcyBvcmRpbmFyeSBleGVjdXRhYmxlIG5vZGVzICjCpzUuNykgYnV0IHRoZXkgaGF2ZSBub1xuICogYnVpbHQtaW4gZXhlY3V0b3JzIOKAlCBkb3duc3RyZWFtIHByb2plY3RzIChlLmcuIEFMRlJFRCkgcmVnaXN0ZXIgY3VzdG9tXG4gKiBleGVjdXRvcnMgb3IgY29tcGlsZSB0aGVtIGludG8gTWFzdHJhIGNvbXBvc2l0aW9uIEFQSXMgKMKnMjIuMi4yKS5cbiAqXG4gKiBUaGUgdGhyZWUgbG9vcCBraW5kcyAoYGNvcmUubG9vcC5mb3JlYWNoL3doaWxlL3VudGlsYCkgYWxyZWFkeSBoYXZlIGJ1aWx0LWluXG4gKiBleGVjdXRvcnMgKMKnNS45KSBhbmQgYXJlIE5PVCByZWRlY2xhcmVkIGhlcmUuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQsIGhpZGRlbiB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgZ3JhcGhEZWZpbml0aW9uT2YsXG4gIGlucHV0LFxuICBub2RlLFxuICBvdXRwdXQsXG4gIFBvcnREaXJlY3Rpb24sXG4gIHR5cGUgR3JhcGhQb3J0RGVmaW5pdGlvbixcbn0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGVNZXRhZGF0YUNoYW5nZSwgU3dpdGNoTm9kZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaE5vZGUgfSBmcm9tIFwiLi9iYXNlXCI7XG5cbi8qKlxuICogSWYg4oCUIGNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIGEgYENvbmRpdGlvbkV4cHJlc3Npb25gICjCpzIyLjMpIGFuZFxuICogcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgYHRoZW5gIG9yIGBlbHNlYCBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmlmXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuaWZcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNmNTllMGJcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3Mtc3BsaXQtMlwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImNvbmRpdGlvbmFsXCIsIFwiYnJhbmNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIklmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ29uZGl0aW9uYWwgYnJhbmNoLiBFdmFsdWF0ZXMgdGhlIGNvbmZpZ3VyZWQgY29uZGl0aW9uIGFuZCByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBtYXRjaGluZyBvdXRwdXQuXCIsXG4gICAgY29uZGl0aW9uOiB7IG9wOiBcImVxXCIsIGxlZnQ6IHsgY29uc3Q6IHRydWUgfSwgcmlnaHQ6IHsgY29uc3Q6IHRydWUgfSB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSWZGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZXZhbHVhdGVcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiVGhlblwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiBjb25kaXRpb24gaXMgdHJ1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwidGhlblwiIH0pXG4gIHRoZW4hOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkVsc2VcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gY29uZGl0aW9uIGlzIGZhbHNlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJlbHNlXCIgfSlcbiAgZWxzZSE6IHVua25vd247XG59XG5cbi8qKlxuICogU3dpdGNoIOKAlCBtdWx0aS1icmFuY2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gb25lIG9mIHRoZSBjYXNlIG91dHB1dCBwb3J0c1xuICogb3IgYGRlZmF1bHRgIGJhc2VkIG9uIG1hdGNoaW5nIGNvbmRpdGlvbnMuIEVhY2ggY2FzZSBkZWZpbmVzIGFcbiAqIHtAbGluayBTd2l0Y2hDYXNlQ29uZGl0aW9ufSAoZ3JhcGhpY2FsIG9yIGNvZGUgbW9kZSkgYW5kIGEgZGVkaWNhdGVkXG4gKiBvdXRwdXQgcG9ydC4gQ2FzZXMgYXJlIHN0b3JlZCBpbiBgbWV0YWRhdGEuc3dpdGNoLmNhc2VzYCBhbmQgdGhlXG4gKiByZW5kZXJlciBjcmVhdGVzIGR5bmFtaWMgb3V0cHV0IHBvcnRzIGZyb20gdGhlbSAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICpcbiAqIFRoZSBub2RlIGdyb3dzIGluIGhlaWdodCBhcyBjYXNlcyBhcmUgYWRkZWQuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd25cbiAqIG91dHB1dCBwb3J0IG9uIHRoZSByaWdodCBzaWRlLCBsYWJlbGVkIHdpdGggdGhlIGNhc2UgbGFiZWwuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnN3aXRjaFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnN3aXRjaFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Y5NzMxNlwiLFxuICBpY29uOiBcInRpLWFycm93cy1zaHVmZmxlXCIsXG4gIHdpZHRoOiAxMjAsXG4gIGhlaWdodDogMTQwLFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJzd2l0Y2hcIiwgXCJtdWx0aS1icmFuY2hcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiU3dpdGNoXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTXVsdGktYnJhbmNoIHN3aXRjaC4gUm91dGVzIHRoZSBpbnB1dCB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgY2FzZSBvdXRwdXQsIG9yIHRoZSBkZWZhdWx0IG91dHB1dC5cIixcbiAgICBzd2l0Y2g6IHtcbiAgICAgIGNhc2VzOiBbXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBHcmFwaE5vZGUge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBzd2l0Y2ggb25cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRGVmYXVsdFwiLCBwbGFjZWhvbGRlcjogXCJEZWZhdWx0IG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pXG4gIGRlZmF1bHQhOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbm9kZSdzIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaCBmcm9tIHRoZSBnaXZlbiBzd2l0Y2hcbiAgICogbWV0YWRhdGEuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd24gb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGU7IHRoZVxuICAgKiBgZGVmYXVsdGAgcG9ydCBhbHdheXMgcmVuZGVycyAqKmxhc3QqKiAoREVDQUYtMzIgwqcyMSBwb3J0LW9yZGVyaW5nIHJ1bGUsXG4gICAqIERFQ0FGLTM0IMKnNi4yKS4gV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydFxuICAgKiBpcyBvbWl0dGVkIGVudGlyZWx5LiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLlxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGFwcGx5TWV0YWRhdGEobWV0YTogU3dpdGNoTm9kZU1ldGFkYXRhKTogTm9kZU1ldGFkYXRhQ2hhbmdlIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gZ3JhcGhEZWZpbml0aW9uT2YodGhpcyBhcyBuZXZlcik7XG4gICAgY29uc3QgZGVmYXVsdFBvcnROYW1lID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBoYXNEZWZhdWx0ID0gbWV0YS5oYXNEZWZhdWx0ICE9PSBmYWxzZTtcblxuICAgIC8vIEJhc2UgcG9ydHMgZXhjbHVkaW5nIGFueSBwb3J0IHRoYXQgY29sbGlkZXMgd2l0aCBhIGNhc2Ugb3V0cHV0IHBvcnQuXG4gICAgY29uc3QgYmFzZVBvcnRzID0gZGVmaW5pdGlvbi5wb3J0cy5maWx0ZXIoXG4gICAgICAocCkgPT4gIW1ldGEuY2FzZXMuc29tZSgoYykgPT4gYy5vdXRwdXRQb3J0ID09PSBwLnByb3BlcnR5KVxuICAgICk7XG4gICAgLy8gU2VwYXJhdGUgdGhlIGRlZmF1bHQgb3V0cHV0IHBvcnQgc28gaXQgY2FuIGJlIHBsYWNlZCBsYXN0IChvciBvbWl0dGVkKS5cbiAgICBjb25zdCBub25EZWZhdWx0UG9ydHMgPSBiYXNlUG9ydHMuZmlsdGVyKFxuICAgICAgKHApID0+IHAucHJvcGVydHkgIT09IGRlZmF1bHRQb3J0TmFtZVxuICAgICk7XG4gICAgY29uc3QgZGVmYXVsdFBvcnQgPSBiYXNlUG9ydHMuZmluZCgocCkgPT4gcC5wcm9wZXJ0eSA9PT0gZGVmYXVsdFBvcnROYW1lKTtcblxuICAgIGNvbnN0IGNhc2VQb3J0czogR3JhcGhQb3J0RGVmaW5pdGlvbltdID0gbWV0YS5jYXNlcy5tYXAoKGMpID0+ICh7XG4gICAgICBwcm9wZXJ0eTogYy5vdXRwdXRQb3J0LFxuICAgICAgbmFtZTogYy5sYWJlbCxcbiAgICAgIGRpcmVjdGlvbjogUG9ydERpcmVjdGlvbi5PVVRQVVQsXG4gICAgICBsYWJlbDogYy5sYWJlbCxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICBwYXRoOiBjLm91dHB1dFBvcnQsXG4gICAgfSkpO1xuXG4gICAgLy8gUG9ydCBvcmRlcjogaW5wdXRzL25vbi1kZWZhdWx0IG91dHB1dHMgZmlyc3QsIGNhc2Ugb3V0cHV0cyBuZXh0LCBkZWZhdWx0IGxhc3QuXG4gICAgY29uc3QgcG9ydHMgPSBbLi4ubm9uRGVmYXVsdFBvcnRzLCAuLi5jYXNlUG9ydHNdO1xuICAgIGlmIChoYXNEZWZhdWx0ICYmIGRlZmF1bHRQb3J0KSB7XG4gICAgICBwb3J0cy5wdXNoKGRlZmF1bHRQb3J0KTtcbiAgICB9XG5cbiAgICBjb25zdCBjYXNlQ291bnQgPSBtZXRhLmNhc2VzLmxlbmd0aDtcbiAgICByZXR1cm4ge1xuICAgICAgcG9ydHMsXG4gICAgICBzaXplOiB7XG4gICAgICAgIHdpZHRoOiBkZWZpbml0aW9uLndpZHRoID8/IDEyMCxcbiAgICAgICAgaGVpZ2h0OiBjYXNlQ291bnQgPiAwID8gMTQwICsgY2FzZUNvdW50ICogMjQgOiBkZWZpbml0aW9uLmhlaWdodCA/PyAxNDAsXG4gICAgICB9LFxuICAgICAgZGF0YVBhdGNoOiB7IHN3aXRjaE1ldGFkYXRhOiBtZXRhIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcmFsbGVsIOKAlCBzcGxpdHMgZXhlY3V0aW9uIGludG8gY29uY3VycmVudCBicmFuY2hlcy5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cucGFyYWxsZWxcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5wYXJhbGxlbFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiIzA2YjZkNFwiLFxuICBpY29uOiBcInRpLWFycm93cy12ZXJ0aWNhbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcInBhcmFsbGVsXCIsIFwiY29uY3VycmVudFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJQYXJhbGxlbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlNwbGl0cyBleGVjdXRpb24gaW50byBjb25jdXJyZW50IGJyYW5jaGVzLiBBbGwgYnJhbmNoZXMgcnVuIGluIHBhcmFsbGVsIGFuZCBvdXRwdXRzIGFyZSBjb2xsZWN0ZWQuXCIsXG4gICAgYnJhbmNoQ291bnQ6IDIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBQYXJhbGxlbEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBmYW4gb3V0XCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkJyYW5jaGVzXCIsIHBsYWNlaG9sZGVyOiBcIkNvbGxlY3RlZCBicmFuY2ggb3V0cHV0c1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiYnJhbmNoZXNcIiB9KVxuICBicmFuY2hlcyE6IHVua25vd25bXTtcbn1cblxuLyoqXG4gKiBNZXJnZSDigJQgbm9ybWFsaXNlcyBicmFuY2gvcGFyYWxsZWwgb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cubWVyZ2VcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5tZXJnZVwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiMwZDk0ODhcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3MtbWVyZ2VcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtZXJnZVwiLCBcImpvaW5cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWVyZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJNZXJnZXMgbXVsdGlwbGUgYnJhbmNoIG91dHB1dHMgaW50byBhIHNpbmdsZSBub3JtYWxpc2VkIG91dHB1dCBvYmplY3QuXCIsXG4gICAgc3RyYXRlZ3k6IFwiY29uY2F0XCIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBNZXJnZUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJCcmFuY2ggb3V0cHV0c1wiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXRzIHRvIG1lcmdlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlc1wiIH0pXG4gIHZhbHVlcyE6IHVua25vd25bXTtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJNZXJnZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk1lcmdlZCByZXN1bHRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcIm1lcmdlZFwiIH0pXG4gIG1lcmdlZCE6IHVua25vd247XG59XG5cbi8qKlxuICogTWFwIOKAlCB0cmFuc2Zvcm1zIHRoZSBjdXJyZW50IGlucHV0IGludG8gYSBuZXcgb3V0cHV0IG9iamVjdC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cubWFwXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cubWFwXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzg0Y2MxNlwiLFxuICBpY29uOiBcInRpLWFycm93cy1yaWdodC1sZWZ0XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwibWFwXCIsIFwidHJhbnNmb3JtXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIk1hcFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0IHVzaW5nIHRoZSBjb25maWd1cmVkIG1hcHBlci5cIixcbiAgICBtYXBwZXI6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTWFwRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIHRyYW5zZm9ybVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJUcmFuc2Zvcm1lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWFwcGVkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBEZWxheSDigJQgcGF1c2VzIGV4ZWN1dGlvbiBmb3IgYSBjb25maWd1cmVkIGR1cmF0aW9uLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5kZWxheVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmRlbGF5XCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiI2EzYTNhM1wiLFxuICBpY29uOiBcInRpLWNsb2NrLWhvdXItNFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImRlbGF5XCIsIFwid2FpdFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJEZWxheVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBhdXNlcyBleGVjdXRpb24gZm9yIHRoZSBjb25maWd1cmVkIGR1cmF0aW9uIChpbiBtaWxsaXNlY29uZHMpLCB0aGVuIGZvcndhcmRzIHRoZSBpbnB1dCB1bmNoYW5nZWQuXCIsXG4gICAgZHVyYXRpb25NczogMTAwMCxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIERlbGF5Rmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGZvcndhcmQgYWZ0ZXIgZGVsYXlcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiT3V0cHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIkZvcndhcmRlZCB2YWx1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZU91dCE6IHVua25vd247XG59XG5cbi8qKlxuICogRXJyb3IgYm91bmRhcnkg4oCUIHRyeS9jYXRjaC9maW5hbGx5IHdvcmtmbG93IGJlaGF2aW91ci5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmVycm9yQm91bmRhcnlcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNlZjQ0NDRcIixcbiAgaWNvbjogXCJ0aS1zaGllbGQtY2hlY2tcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJlcnJvclwiLCBcInRyeS1jYXRjaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJFcnJvciBib3VuZGFyeVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIldyYXBzIHRoZSBpbnB1dCBpbiBhIHRyeS9jYXRjaC9maW5hbGx5LiBFbWl0cyB0aGUgcmVzdWx0IG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBvbiBmYWlsdXJlLlwiLFxuICAgIGZpbmFsbHk6IGZhbHNlLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRXJyb3JCb3VuZGFyeUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBndWFyZFwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXN1bHRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IG9uIHN1Y2Nlc3NcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRXJyb3JcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IG9uIGZhaWx1cmVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImVycm9yXCIgfSlcbiAgZXJyb3IhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEh1bWFuIGFwcHJvdmFsIOKAlCBzdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBodW1hbiBhcHByb3ZlcyBvciByZWplY3RzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5odW1hbkFwcHJvdmFsXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuaHVtYW5BcHByb3ZhbFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Q5NDZlZlwiLFxuICBpY29uOiBcInRpLXVzZXItY2hlY2tcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJhcHByb3ZhbFwiLCBcInN1c3BlbmRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiSHVtYW4gYXBwcm92YWxcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBodW1hbiBhcHByb3ZlcyBvciByZWplY3RzLiBFbWl0cyB0aGUgYXBwcm92ZWQgdmFsdWUgb3IgYSByZWplY3Rpb24uXCIsXG4gICAgYXBwcm92ZXJzOiBbXSxcbiAgICB0aW1lb3V0TXM6IDg2NDAwMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSHVtYW5BcHByb3ZhbEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSBwZW5kaW5nIGFwcHJvdmFsXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkFwcHJvdmVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGFwcHJvdmVkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJhcHByb3ZlZFwiIH0pXG4gIGFwcHJvdmVkITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZWplY3RlZFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiByZWplY3RlZFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVqZWN0ZWRcIiB9KVxuICByZWplY3RlZCE6IHVua25vd247XG59XG5cbi8qKlxuICogUmV0dXJuIOKAlCBkZWZpbmVzIGFuZCBub3JtYWxpc2VzIHRoZSBmaW5hbCB3b3JrZmxvdyBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnJldHVyblwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnJldHVyblwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiMyMmM1NWVcIixcbiAgaWNvbjogXCJ0aS1hcnJvdy1iYWNrLXVwXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwicmV0dXJuXCIsIFwib3V0cHV0XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlJldHVyblwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk5vcm1hbGlzZXMgdGhlIGlucHV0IGludG8gdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dCBvYmplY3QuXCIsXG4gICAgb3V0cHV0U2NoZW1hOiB7fSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFJldHVybkZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBub3JtYWxpc2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmV0dXJuZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk5vcm1hbGlzZWQgb3V0cHV0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIENvZGUg4oCUIHNhbmRib3hlZCBKUy9UUyBjb2RlIGV4ZWN1dGlvbiAoQUxGUkVELTUgwqc3LCBERUNBRi0zMiDCpzIyLjQpLlxuICpcbiAqIFRoZSBlbmdpbmUncyB7QGxpbmsgQ29kZUdyYXBoTm9kZUV4ZWN1dG9yfSBkZWxlZ2F0ZXMgdG8gdGhlIHBsdWdnYWJsZVxuICoge0BsaW5rIENvZGVTYW5kYm94RXZhbHVhdG9yfS4gVGhlIGRlZmF1bHRcbiAqIGBJc29sYXRlZFZtQ29kZVNhbmRib3hFdmFsdWF0b3JgIChiYWNrZWQgYnkgYGlzb2xhdGVkLXZtYCkgZW5mb3JjZXMgdGhlXG4gKiBDb2RlIE5vZGUgcmVzdHJpY3Rpb25zOiBubyBpbXBvcnRzLCBubyByZXF1aXJlcywgcHVyZSBmdW5jdGlvbnMgb25seS4gVGhlXG4gKiBzYW5kYm94IGNvbnRleHQgZXhwb3NlcyBgJGlucHV0YCwgYCR2YXJzYCwgYCRpdGVtYCwgYCRpbmRleGAsIGAkbm9kZWAsIGFuZFxuICogYCRvdXRwdXRgIGFzIGRhdGEgdmFyaWFibGVzLiBUeXBlU2NyaXB0IGlzIHN1cHBvcnRlZCB2aWEgdHJhbnNwaWxhdGlvbi5cbiAqL1xuXG4vKipcbiAqIElucHV0IHNjaGVtYSBmb3IgdGhlIENvZGUgbm9kZS4gVGhlIGBAaW5wdXRgIG9uIGBDb2RlRmxvd05vZGUuaW5wdXRgIGlzIGFcbiAqIHNjaGVtYSBncm91cCDigJQgdGhlIG5lc3RlZCBtb2RlbCdzIGBAaW5wdXRgIHBvcnRzIGFyZSBzcGxpY2VkIGludG8gdGhlXG4gKiBwYXJlbnQgdW5wcmVmaXhlZC4gYGNvZGVgIGhhcyBgQGlucHV0YCArIGBAdWllbGVtZW50KFwiY29kZS1lZGl0b3JcIilgLCBzbyBpdFxuICogYXBwZWFycyBhcyBhIHBvcnQgQU5EIGluIHRoZSBDUlVEIG1vZGFsICh0aGUgb25seSB2aXNpYmxlIGZpZWxkKS4gYGRhdGFgXG4gKiBoYXMgYEBpbnB1dGAgKyBgQGhpZGRlbigpYCBidXQgbm8gYEB1aWVsZW1lbnRgLCBzbyBpdCBpcyBhIGNhbnZhcy1vbmx5IHBvcnRcbiAqIChmb3IgZWRnZSBjb25uZWN0aW9ucyBmcm9tIHdvcmtmbG93IGlucHV0IGJhZGdlcykgYnV0IG5ldmVyIGFwcGVhcnMgaW4gdGhlXG4gKiBDUlVEIG1vZGFsLiBgbGFuZ3VhZ2VgIGhhcyBubyBgQGlucHV0YCBhbmQgbm8gYEB1aWVsZW1lbnRgLCBzbyBpdCBpc1xuICogbmVpdGhlciBhIHBvcnQgbm9yIHJlbmRlcmVkIOKAlCBpdCBkZWZhdWx0cyB0byBgXCJqYXZhc2NyaXB0XCJgLlxuICovXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIENvZGVJbnB1dFNjaGVtYSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgbGFuZ3VhZ2U6IHN0cmluZyA9IFwiamF2YXNjcmlwdFwiO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJjb2RlLWVkaXRvclwiLCB7IGxhYmVsOiBcIkNvZGVcIiwgcGxhY2Vob2xkZXI6IFwiLy8gVXNlci1hdXRob3JlZCBKUyBjb2RlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcImNvZGVcIiB9KVxuICBjb2RlITogc3RyaW5nO1xuXG4gIEBoaWRkZW4oKVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiZGF0YVwiIH0pXG4gIGRhdGE/OiB1bmtub3duO1xufVxuXG5Abm9kZShcImNvcmUuZmxvdy5jb2RlXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuY29kZVwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM3YzNhZWRcIixcbiAgaWNvbjogXCJ0aS1jb2RlXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiY29kZVwiLCBcInNhbmRib3hcIiwgXCJ0cmFuc2Zvcm1cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiQ29kZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJ1bnMgdXNlci1hdXRob3JlZCBKUy9UUyBpbiBhIHJlc3RyaWN0ZWQgVk0gc2FuZGJveC4gU3VwcG9ydHMgcGxhY2Vob2xkZXIgc3ludGF4IGZvciB3b3JrZmxvdyBkYXRhIHJlZmVyZW5jZXMuXCIsXG4gICAgdGltZW91dE1zOiAxMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgQ29kZUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiaW5wdXRcIiwgbW9kZWw6IENvZGVJbnB1dFNjaGVtYSB9KVxuICBpbnB1dCE6IENvZGVJbnB1dFNjaGVtYTtcblxuICBAcmVxdWlyZWQoKVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG5cbi8qKlxuICogTG9nIOKAlCBsb2dzIHRoZSBpbnB1dCB2YWx1ZSBhbmQgZm9yd2FyZHMgaXQgdW5jaGFuZ2VkIG9uIHRoZSBgbG9nZ2VkYFxuICogb3V0cHV0IHBvcnQuIFVzZWZ1bCBmb3IgZGVidWdnaW5nLCBhdWRpdCB0cmFpbHMsIGFuZCBkaXNjYXJkL3NpZGUtZWZmZWN0XG4gKiBicmFuY2hlcyBpbiBhIHdvcmtmbG93LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5sb2dcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5sb2dcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjNjM2NmYxXCIsXG4gIGljb246IFwidGktdGVybWluYWxcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcInV0aWxpdHlcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTG9nXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTG9ncyB0aGUgaW5wdXQgdmFsdWUgdG8gdGhlIGV4ZWN1dGlvbiBsb2dnZXIgYW5kIGZvcndhcmRzIGl0IHVuY2hhbmdlZC5cIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIExvZ0Zsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBsb2dcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTG9nZ2VkIHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIkZvcndhcmRlZCB2YWx1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwibG9nZ2VkXCIgfSlcbiAgbG9nZ2VkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBbGwgYnVpbHQtaW4gZmxvdy1jb250cm9sIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfRkxPV19DT05UUk9MX05PREVTID0gW1xuICBJZkZsb3dOb2RlLFxuICBTd2l0Y2hGbG93Tm9kZSxcbiAgUGFyYWxsZWxGbG93Tm9kZSxcbiAgTWVyZ2VGbG93Tm9kZSxcbiAgTWFwRmxvd05vZGUsXG4gIERlbGF5Rmxvd05vZGUsXG4gIEVycm9yQm91bmRhcnlGbG93Tm9kZSxcbiAgSHVtYW5BcHByb3ZhbEZsb3dOb2RlLFxuICBSZXR1cm5GbG93Tm9kZSxcbiAgQ29kZUZsb3dOb2RlLFxuICBMb2dGbG93Tm9kZSxcbl0gYXMgY29uc3Q7XG4iXX0=
539
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3NoYXJlZC9ub2Rlcy9mbG93LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sYUFBYSxHQUVkLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBZTtBQUVuQzs7O0dBR0c7QUFnQkksSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVyxTQUFRLEtBQUs7Q0FlcEMsQ0FBQTtBQVhDO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDakYsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzt5Q0FDWDtBQUtoQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0lBQ25GLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQzs7d0NBQ1o7QUFLZjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDO0lBQ3BGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFB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QTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzVFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7MENBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztJQUM3RSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7OzJDQUNaO0FBVE4sV0FBVztJQWR2QixJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ3JCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxhQUFhO1FBQ25CLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFDM0MsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUFFLEtBQUs7WUFDWixXQUFXLEVBQUUseUVBQXlFO1NBQ3ZGO0tBQ0YsQ0FBQztJQUNELEtBQUssRUFBRTtHQUNLLFdBQVcsQ0FVdkI7O0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxVQUFVO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxZQUFZO0lBQ1osV0FBVztDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL25vZGVzL2Zsb3ctY29udHJvbFxuICogQHN1bW1hcnkgUHJvZHVjdGlvbiBmbG93LWNvbnRyb2wgbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICogQGRlc2NyaXB0aW9uIENhbm9uaWNhbCBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIGZvciB0aGUgdGVuIEFMRlJFRC01XG4gKiBmbG93LWNvbnRyb2wga2luZHMuIFRoZXNlIGFyZSBncmFwaC1sZXZlbCBtYWNyb3M6IHRoZSBlbmdpbmUncyBwbGFubmVyXG4gKiByZWNvZ25pc2VzIHRoZW0gYXMgb3JkaW5hcnkgZXhlY3V0YWJsZSBub2RlcyAowqc1LjcpIGJ1dCB0aGV5IGhhdmUgbm9cbiAqIGJ1aWx0LWluIGV4ZWN1dG9ycyDigJQgZG93bnN0cmVhbSBwcm9qZWN0cyAoZS5nLiBBTEZSRUQpIHJlZ2lzdGVyIGN1c3RvbVxuICogZXhlY3V0b3JzIG9yIGNvbXBpbGUgdGhlbSBpbnRvIE1hc3RyYSBjb21wb3NpdGlvbiBBUElzICjCpzIyLjIuMikuXG4gKlxuICogVGhlIHRocmVlIGxvb3Aga2luZHMgKGBjb3JlLmxvb3AuZm9yZWFjaC93aGlsZS91bnRpbGApIGFscmVhZHkgaGF2ZSBidWlsdC1pblxuICogZXhlY3V0b3JzICjCpzUuOSkgYW5kIGFyZSBOT1QgcmVkZWNsYXJlZCBoZXJlLlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50LCBoaWRkZW4gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIGdyYXBoRGVmaW5pdGlvbk9mLFxuICBpbnB1dCxcbiAgbm9kZSxcbiAgb3V0cHV0LFxuICBQb3J0RGlyZWN0aW9uLFxuICB0eXBlIEdyYXBoUG9ydERlZmluaXRpb24sXG59IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlTWV0YWRhdGFDaGFuZ2UsIFN3aXRjaE5vZGVNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgR3JhcGhOb2RlIH0gZnJvbSBcIi4vYmFzZVwiO1xuXG4vKipcbiAqIElmIOKAlCBjb25kaXRpb25hbCBicmFuY2guIEV2YWx1YXRlcyBhIGBDb25kaXRpb25FeHByZXNzaW9uYCAowqcyMi4zKSBhbmRcbiAqIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGB0aGVuYCBvciBgZWxzZWAgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5pZlwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmlmXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZjU5ZTBiXCIsXG4gIGljb246IFwidGktYXJyb3dzLXNwbGl0LTJcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb25kaXRpb25hbFwiLCBcImJyYW5jaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJJZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIHRoZSBjb25maWd1cmVkIGNvbmRpdGlvbiBhbmQgcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgbWF0Y2hpbmcgb3V0cHV0LlwiLFxuICAgIGNvbmRpdGlvbjogeyBvcDogXCJlcVwiLCBsZWZ0OiB7IGNvbnN0OiB0cnVlIH0sIHJpZ2h0OiB7IGNvbnN0OiB0cnVlIH0gfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIElmRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGV2YWx1YXRlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlRoZW5cIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gY29uZGl0aW9uIGlzIHRydWVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInRoZW5cIiB9KVxuICB0aGVuITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFbHNlXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGNvbmRpdGlvbiBpcyBmYWxzZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZWxzZVwiIH0pXG4gIGVsc2UhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFN3aXRjaCDigJQgbXVsdGktYnJhbmNoLiBSb3V0ZXMgdGhlIGlucHV0IHRvIG9uZSBvZiB0aGUgY2FzZSBvdXRwdXQgcG9ydHNcbiAqIG9yIGBkZWZhdWx0YCBiYXNlZCBvbiBtYXRjaGluZyBjb25kaXRpb25zLiBFYWNoIGNhc2UgZGVmaW5lcyBhXG4gKiB7QGxpbmsgU3dpdGNoQ2FzZUNvbmRpdGlvbn0gKGdyYXBoaWNhbCBvciBjb2RlIG1vZGUpIGFuZCBhIGRlZGljYXRlZFxuICogb3V0cHV0IHBvcnQuIENhc2VzIGFyZSBzdG9yZWQgaW4gYG1ldGFkYXRhLnN3aXRjaC5jYXNlc2AgYW5kIHRoZVxuICogcmVuZGVyZXIgY3JlYXRlcyBkeW5hbWljIG91dHB1dCBwb3J0cyBmcm9tIHRoZW0gKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqXG4gKiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLiBFYWNoIGNhc2UgZ2V0cyBpdHMgb3duXG4gKiBvdXRwdXQgcG9ydCBvbiB0aGUgcmlnaHQgc2lkZSwgbGFiZWxlZCB3aXRoIHRoZSBjYXNlIGxhYmVsLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5zd2l0Y2hcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5zd2l0Y2hcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNmOTczMTZcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3Mtc2h1ZmZsZVwiLFxuICB3aWR0aDogMTIwLFxuICBoZWlnaHQ6IDE0MCxcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwic3dpdGNoXCIsIFwibXVsdGktYnJhbmNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlN3aXRjaFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk11bHRpLWJyYW5jaCBzd2l0Y2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIGNhc2Ugb3V0cHV0LCBvciB0aGUgZGVmYXVsdCBvdXRwdXQuXCIsXG4gICAgc3dpdGNoOiB7XG4gICAgICBjYXNlczogW10sXG4gICAgICBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIsXG4gICAgICBoYXNEZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBHcmFwaE5vZGUge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBzd2l0Y2ggb25cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRGVmYXVsdFwiLCBwbGFjZWhvbGRlcjogXCJEZWZhdWx0IG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pXG4gIGRlZmF1bHQhOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbm9kZSdzIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaCBmcm9tIHRoZSBnaXZlbiBzd2l0Y2hcbiAgICogbWV0YWRhdGEuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd24gb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGU7IHRoZVxuICAgKiBgZGVmYXVsdGAgcG9ydCBhbHdheXMgcmVuZGVycyAqKmxhc3QqKiAoREVDQUYtMzIgwqcyMSBwb3J0LW9yZGVyaW5nIHJ1bGUsXG4gICAqIERFQ0FGLTM0IMKnNi4yKS4gV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydFxuICAgKiBpcyBvbWl0dGVkIGVudGlyZWx5LiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLlxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGFwcGx5TWV0YWRhdGEobWV0YTogU3dpdGNoTm9kZU1ldGFkYXRhKTogTm9kZU1ldGFkYXRhQ2hhbmdlIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gZ3JhcGhEZWZpbml0aW9uT2YodGhpcyBhcyBuZXZlcik7XG4gICAgY29uc3QgZGVmYXVsdFBvcnROYW1lID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBoYXNEZWZhdWx0ID0gbWV0YS5oYXNEZWZhdWx0ID09PSB0cnVlO1xuXG4gICAgLy8gQmFzZSBwb3J0cyBleGNsdWRpbmcgYW55IHBvcnQgdGhhdCBjb2xsaWRlcyB3aXRoIGEgY2FzZSBvdXRwdXQgcG9ydC5cbiAgICBjb25zdCBiYXNlUG9ydHMgPSBkZWZpbml0aW9uLnBvcnRzLmZpbHRlcihcbiAgICAgIChwKSA9PiAhbWV0YS5jYXNlcy5zb21lKChjKSA9PiBjLm91dHB1dFBvcnQgPT09IHAucHJvcGVydHkpXG4gICAgKTtcbiAgICAvLyBTZXBhcmF0ZSB0aGUgZGVmYXVsdCBvdXRwdXQgcG9ydCBzbyBpdCBjYW4gYmUgcGxhY2VkIGxhc3QgKG9yIG9taXR0ZWQpLlxuICAgIGNvbnN0IG5vbkRlZmF1bHRQb3J0cyA9IGJhc2VQb3J0cy5maWx0ZXIoXG4gICAgICAocCkgPT4gcC5wcm9wZXJ0eSAhPT0gZGVmYXVsdFBvcnROYW1lXG4gICAgKTtcbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IGJhc2VQb3J0cy5maW5kKChwKSA9PiBwLnByb3BlcnR5ID09PSBkZWZhdWx0UG9ydE5hbWUpO1xuXG4gICAgY29uc3QgY2FzZVBvcnRzOiBHcmFwaFBvcnREZWZpbml0aW9uW10gPSBtZXRhLmNhc2VzLm1hcCgoYykgPT4gKHtcbiAgICAgIHByb3BlcnR5OiBjLm91dHB1dFBvcnQsXG4gICAgICBuYW1lOiBjLmxhYmVsLFxuICAgICAgZGlyZWN0aW9uOiBQb3J0RGlyZWN0aW9uLk9VVFBVVCxcbiAgICAgIGxhYmVsOiBjLmxhYmVsLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIHBhdGg6IGMub3V0cHV0UG9ydCxcbiAgICB9KSk7XG5cbiAgICAvLyBQb3J0IG9yZGVyOiBpbnB1dHMvbm9uLWRlZmF1bHQgb3V0cHV0cyBmaXJzdCwgY2FzZSBvdXRwdXRzIG5leHQsIGRlZmF1bHQgbGFzdC5cbiAgICBjb25zdCBwb3J0cyA9IFsuLi5ub25EZWZhdWx0UG9ydHMsIC4uLmNhc2VQb3J0c107XG4gICAgaWYgKGhhc0RlZmF1bHQgJiYgZGVmYXVsdFBvcnQpIHtcbiAgICAgIHBvcnRzLnB1c2goZGVmYXVsdFBvcnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2VDb3VudCA9IG1ldGEuY2FzZXMubGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICBwb3J0cyxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgd2lkdGg6IGRlZmluaXRpb24ud2lkdGggPz8gMTIwLFxuICAgICAgICBoZWlnaHQ6IGNhc2VDb3VudCA+IDAgPyAxNDAgKyBjYXNlQ291bnQgKiAyNCA6IGRlZmluaXRpb24uaGVpZ2h0ID8/IDE0MCxcbiAgICAgIH0sXG4gICAgICBkYXRhUGF0Y2g6IHsgc3dpdGNoTWV0YWRhdGE6IG1ldGEgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUGFyYWxsZWwg4oCUIHNwbGl0cyBleGVjdXRpb24gaW50byBjb25jdXJyZW50IGJyYW5jaGVzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5wYXJhbGxlbFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnBhcmFsbGVsXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjMDZiNmQ0XCIsXG4gIGljb246IFwidGktYXJyb3dzLXZlcnRpY2FsXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwicGFyYWxsZWxcIiwgXCJjb25jdXJyZW50XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlBhcmFsbGVsXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3BsaXRzIGV4ZWN1dGlvbiBpbnRvIGNvbmN1cnJlbnQgYnJhbmNoZXMuIEFsbCBicmFuY2hlcyBydW4gaW4gcGFyYWxsZWwgYW5kIG91dHB1dHMgYXJlIGNvbGxlY3RlZC5cIixcbiAgICBicmFuY2hDb3VudDogMixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFBhcmFsbGVsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGZhbiBvdXRcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQnJhbmNoZXNcIiwgcGxhY2Vob2xkZXI6IFwiQ29sbGVjdGVkIGJyYW5jaCBvdXRwdXRzXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJicmFuY2hlc1wiIH0pXG4gIGJyYW5jaGVzITogdW5rbm93bltdO1xufVxuXG4vKipcbiAqIE1lcmdlIOKAlCBub3JtYWxpc2VzIGJyYW5jaC9wYXJhbGxlbCBvdXRwdXRzIGludG8gYSBzaW5nbGUgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5tZXJnZVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93Lm1lcmdlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzBkOTQ4OFwiLFxuICBpY29uOiBcInRpLWFycm93cy1tZXJnZVwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcIm1lcmdlXCIsIFwiam9pblwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJNZXJnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk1lcmdlcyBtdWx0aXBsZSBicmFuY2ggb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG5vcm1hbGlzZWQgb3V0cHV0IG9iamVjdC5cIixcbiAgICBzdHJhdGVneTogXCJjb25jYXRcIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE1lcmdlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkJyYW5jaCBvdXRwdXRzXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dHMgdG8gbWVyZ2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVzXCIgfSlcbiAgdmFsdWVzITogdW5rbm93bltdO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIk1lcmdlZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWVyZ2VkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwibWVyZ2VkXCIgfSlcbiAgbWVyZ2VkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBNYXAg4oCUIHRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5tYXBcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5tYXBcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjODRjYzE2XCIsXG4gIGljb246IFwidGktYXJyb3dzLXJpZ2h0LWxlZnRcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtYXBcIiwgXCJ0cmFuc2Zvcm1cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWFwXCIsXG4gICAgZGVzY3JpcHRpb246IFwiVHJhbnNmb3JtcyB0aGUgY3VycmVudCBpbnB1dCBpbnRvIGEgbmV3IG91dHB1dCBvYmplY3QgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgbWFwcGVyLlwiLFxuICAgIG1hcHBlcjoge30sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBNYXBGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gdHJhbnNmb3JtXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlRyYW5zZm9ybWVkIG91dHB1dFwiLCBwbGFjZWhvbGRlcjogXCJNYXBwZWQgcmVzdWx0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIERlbGF5IOKAlCBwYXVzZXMgZXhlY3V0aW9uIGZvciBhIGNvbmZpZ3VyZWQgZHVyYXRpb24uXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmRlbGF5XCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuZGVsYXlcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjYTNhM2EzXCIsXG4gIGljb246IFwidGktY2xvY2staG91ci00XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiZGVsYXlcIiwgXCJ3YWl0XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkRlbGF5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUGF1c2VzIGV4ZWN1dGlvbiBmb3IgdGhlIGNvbmZpZ3VyZWQgZHVyYXRpb24gKGluIG1pbGxpc2Vjb25kcyksIHRoZW4gZm9yd2FyZHMgdGhlIGlucHV0IHVuY2hhbmdlZC5cIixcbiAgICBkdXJhdGlvbk1zOiAxMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRGVsYXlGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZm9yd2FyZCBhZnRlciBkZWxheVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJPdXRwdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlT3V0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBFcnJvciBib3VuZGFyeSDigJQgdHJ5L2NhdGNoL2ZpbmFsbHkgd29ya2Zsb3cgYmVoYXZpb3VyLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5lcnJvckJvdW5kYXJ5XCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2VmNDQ0NFwiLFxuICBpY29uOiBcInRpLXNoaWVsZC1jaGVja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImVycm9yXCIsIFwidHJ5LWNhdGNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkVycm9yIGJvdW5kYXJ5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiV3JhcHMgdGhlIGlucHV0IGluIGEgdHJ5L2NhdGNoL2ZpbmFsbHkuIEVtaXRzIHRoZSByZXN1bHQgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIG9uIGZhaWx1cmUuXCIsXG4gICAgZmluYWxseTogZmFsc2UsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBFcnJvckJvdW5kYXJ5Rmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGd1YXJkXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlc3VsdFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgb24gc3VjY2Vzc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFcnJvclwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgb24gZmFpbHVyZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZXJyb3JcIiB9KVxuICBlcnJvciE6IHVua25vd247XG59XG5cbi8qKlxuICogSHVtYW4gYXBwcm92YWwg4oCUIHN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93Lmh1bWFuQXBwcm92YWxcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5odW1hbkFwcHJvdmFsXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZDk0NmVmXCIsXG4gIGljb246IFwidGktdXNlci1jaGVja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImFwcHJvdmFsXCIsIFwic3VzcGVuZFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJIdW1hbiBhcHByb3ZhbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuIEVtaXRzIHRoZSBhcHByb3ZlZCB2YWx1ZSBvciBhIHJlamVjdGlvbi5cIixcbiAgICBhcHByb3ZlcnM6IFtdLFxuICAgIHRpbWVvdXRNczogODY0MDAwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBIdW1hbkFwcHJvdmFsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHBlbmRpbmcgYXBwcm92YWxcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQXBwcm92ZWRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gYXBwcm92ZWRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImFwcHJvdmVkXCIgfSlcbiAgYXBwcm92ZWQhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlamVjdGVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIHJlamVjdGVkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZWplY3RlZFwiIH0pXG4gIHJlamVjdGVkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBSZXR1cm4g4oCUIGRlZmluZXMgYW5kIG5vcm1hbGlzZXMgdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cucmV0dXJuXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cucmV0dXJuXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzIyYzU1ZVwiLFxuICBpY29uOiBcInRpLWFycm93LWJhY2stdXBcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJyZXR1cm5cIiwgXCJvdXRwdXRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiUmV0dXJuXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTm9ybWFsaXNlcyB0aGUgaW5wdXQgaW50byB0aGUgZmluYWwgd29ya2Zsb3cgb3V0cHV0IG9iamVjdC5cIixcbiAgICBvdXRwdXRTY2hlbWE6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUmV0dXJuRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIG5vcm1hbGlzZVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXR1cm5lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTm9ybWFsaXNlZCBvdXRwdXRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG5cbi8qKlxuICogQ29kZSDigJQgc2FuZGJveGVkIEpTL1RTIGNvZGUgZXhlY3V0aW9uIChBTEZSRUQtNSDCpzcsIERFQ0FGLTMyIMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSdzIHtAbGluayBDb2RlR3JhcGhOb2RlRXhlY3V0b3J9IGRlbGVnYXRlcyB0byB0aGUgcGx1Z2dhYmxlXG4gKiB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9LiBUaGUgZGVmYXVsdFxuICogYElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcmAgKGJhY2tlZCBieSBgaXNvbGF0ZWQtdm1gKSBlbmZvcmNlcyB0aGVcbiAqIENvZGUgTm9kZSByZXN0cmljdGlvbnM6IG5vIGltcG9ydHMsIG5vIHJlcXVpcmVzLCBwdXJlIGZ1bmN0aW9ucyBvbmx5LiBUaGVcbiAqIHNhbmRib3ggY29udGV4dCBleHBvc2VzIGAkaW5wdXRgLCBgJHZhcnNgLCBgJGl0ZW1gLCBgJGluZGV4YCwgYCRub2RlYCwgYW5kXG4gKiBgJG91dHB1dGAgYXMgZGF0YSB2YXJpYWJsZXMuIFR5cGVTY3JpcHQgaXMgc3VwcG9ydGVkIHZpYSB0cmFuc3BpbGF0aW9uLlxuICovXG5cbi8qKlxuICogSW5wdXQgc2NoZW1hIGZvciB0aGUgQ29kZSBub2RlLiBUaGUgYEBpbnB1dGAgb24gYENvZGVGbG93Tm9kZS5pbnB1dGAgaXMgYVxuICogc2NoZW1hIGdyb3VwIOKAlCB0aGUgbmVzdGVkIG1vZGVsJ3MgYEBpbnB1dGAgcG9ydHMgYXJlIHNwbGljZWQgaW50byB0aGVcbiAqIHBhcmVudCB1bnByZWZpeGVkLiBgY29kZWAgaGFzIGBAaW5wdXRgICsgYEB1aWVsZW1lbnQoXCJjb2RlLWVkaXRvclwiKWAsIHNvIGl0XG4gKiBhcHBlYXJzIGFzIGEgcG9ydCBBTkQgaW4gdGhlIENSVUQgbW9kYWwgKHRoZSBvbmx5IHZpc2libGUgZmllbGQpLiBgZGF0YWBcbiAqIGhhcyBgQGlucHV0YCArIGBAaGlkZGVuKClgIGJ1dCBubyBgQHVpZWxlbWVudGAsIHNvIGl0IGlzIGEgY2FudmFzLW9ubHkgcG9ydFxuICogKGZvciBlZGdlIGNvbm5lY3Rpb25zIGZyb20gd29ya2Zsb3cgaW5wdXQgYmFkZ2VzKSBidXQgbmV2ZXIgYXBwZWFycyBpbiB0aGVcbiAqIENSVUQgbW9kYWwuIGBsYW5ndWFnZWAgaGFzIG5vIGBAaW5wdXRgIGFuZCBubyBgQHVpZWxlbWVudGAsIHNvIGl0IGlzXG4gKiBuZWl0aGVyIGEgcG9ydCBub3IgcmVuZGVyZWQg4oCUIGl0IGRlZmF1bHRzIHRvIGBcImphdmFzY3JpcHRcImAuXG4gKi9cbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgQ29kZUlucHV0U2NoZW1hIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBsYW5ndWFnZTogc3RyaW5nID0gXCJqYXZhc2NyaXB0XCI7XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImNvZGUtZWRpdG9yXCIsIHsgbGFiZWw6IFwiQ29kZVwiLCBwbGFjZWhvbGRlcjogXCIvLyBVc2VyLWF1dGhvcmVkIEpTIGNvZGVcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiY29kZVwiIH0pXG4gIGNvZGUhOiBzdHJpbmc7XG5cbiAgQGhpZGRlbigpXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJkYXRhXCIgfSlcbiAgZGF0YT86IHVua25vd247XG59XG5cbkBub2RlKFwiY29yZS5mbG93LmNvZGVcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5jb2RlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzdjM2FlZFwiLFxuICBpY29uOiBcInRpLWNvZGVcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb2RlXCIsIFwic2FuZGJveFwiLCBcInRyYW5zZm9ybVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJDb2RlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUnVucyB1c2VyLWF1dGhvcmVkIEpTL1RTIGluIGEgcmVzdHJpY3RlZCBWTSBzYW5kYm94LiBTdXBwb3J0cyBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cIixcbiAgICB0aW1lb3V0TXM6IDEwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBDb2RlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJpbnB1dFwiLCBtb2RlbDogQ29kZUlucHV0U2NoZW1hIH0pXG4gIGlucHV0ITogQ29kZUlucHV0U2NoZW1hO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBMb2cg4oCUIGxvZ3MgdGhlIGlucHV0IHZhbHVlIGFuZCBmb3J3YXJkcyBpdCB1bmNoYW5nZWQgb24gdGhlIGBsb2dnZWRgXG4gKiBvdXRwdXQgcG9ydC4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcsIGF1ZGl0IHRyYWlscywgYW5kIGRpc2NhcmQvc2lkZS1lZmZlY3RcbiAqIGJyYW5jaGVzIGluIGEgd29ya2Zsb3cuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmxvZ1wiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmxvZ1wiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM2MzY2ZjFcIixcbiAgaWNvbjogXCJ0aS10ZXJtaW5hbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImxvZ1wiLCBcImRlYnVnXCIsIFwidXRpbGl0eVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJMb2dcIixcbiAgICBkZXNjcmlwdGlvbjogXCJMb2dzIHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgZXhlY3V0aW9uIGxvZ2dlciBhbmQgZm9yd2FyZHMgaXQgdW5jaGFuZ2VkLlwiLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTG9nRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGxvZ1wiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJMb2dnZWQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJsb2dnZWRcIiB9KVxuICBsb2dnZWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEFsbCBidWlsdC1pbiBmbG93LWNvbnRyb2wgbm9kZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBHUkFQSF9GTE9XX0NPTlRST0xfTk9ERVMgPSBbXG4gIElmRmxvd05vZGUsXG4gIFN3aXRjaEZsb3dOb2RlLFxuICBQYXJhbGxlbEZsb3dOb2RlLFxuICBNZXJnZUZsb3dOb2RlLFxuICBNYXBGbG93Tm9kZSxcbiAgRGVsYXlGbG93Tm9kZSxcbiAgRXJyb3JCb3VuZGFyeUZsb3dOb2RlLFxuICBIdW1hbkFwcHJvdmFsRmxvd05vZGUsXG4gIFJldHVybkZsb3dOb2RlLFxuICBDb2RlRmxvd05vZGUsXG4gIExvZ0Zsb3dOb2RlLFxuXSBhcyBjb25zdDtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3NoYXJlZC90eXBlc1xuICogQHN1bW1hcnkgRnJvbnRlbmQtc2FmZSBncmFwaCB0eXBlIGRlY2xhcmF0aW9ucy5cbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGFsaWFzZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgc2FmZSB0byBpbXBvcnQgZnJvbSBhXG4gKiBmcm9udGVuZCBidW5kbGUuIFRoZXNlIHR5cGVzIGRlc2NyaWJlIGRlY2xhcmF0aXZlIGdyYXBoIG1ldGFkYXRhIChsb29wXG4gKiBjb25kaXRpb24gRFNMLCBzd2l0Y2ggY2FzZXMsIG5vZGUgbWV0YWRhdGEgcGF0Y2hlcykgYW5kIHRoZSBleGVjdXRpb24tZXZlbnRcbiAqIGRhdGEgY29udHJhY3QgY29uc3VtZWQgYnkgdGhlIGZyb250ZW5kIHZpYSBTU0Ug4oCUIG5vIGVuZ2luZSBydW50aW1lXG4gKiBkZXBlbmRlbmN5LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoUG9ydERlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSwgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBBIHZhbHVlIHJlZmVyZW5jZSBpbnNpZGUgYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0uXG4gKlxuICogLSBgeyBjb25zdDogeCB9YCDigJQgYSBsaXRlcmFsIGNvbnN0YW50LlxuICogLSBgeyBwYXRoOiBcImEuYlwiIH1gIOKAlCBhIGRvdHRlZCBwYXRoIHJlc29sdmVkIGFnYWluc3QgdGhlIGN1cnJlbnQgbG9vcCBzdGF0ZS5cbiAqIC0gYHsgc3RlcDogXCJub2RlSWRcIiwgcGF0aDogXCJvdXRcIiB9YCDigJQgYSBjcm9zcy1ub2RlIHJlZmVyZW5jZSAocmVzb2x2ZWQgZnJvbVxuICogICB0aGUgZXhlY3V0aW9uIHN0YXRlIGluIHYxOyByZXNlcnZlZCBmb3IgZnV0dXJlIG11bHRpLXN0ZXAgZXZhbHVhdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEV4cHJWYWx1ZSA9XG4gIHwgeyBjb25zdDogdW5rbm93biB9XG4gIHwgeyBwYXRoOiBzdHJpbmcgfVxuICB8IHsgc3RlcDogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGl2ZSwgc2VyaWFsaXphYmxlIGNvbmRpdGlvbiBleHByZXNzaW9uIERTTCAoQUxGUkVELTUgwqc4IC8gREVDQUYtMzIgwqcyMi4zKS5cbiAqXG4gKiBUaGUgZW5naW5lJ3MgYEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yYCByZWNvZ25pc2VzIHRoaXMgRFNMIHdoZW4gdGhlXG4gKiBjb25kaXRpb24gb2JqZWN0IGNhcnJpZXMgYW4gYG9wYCBmaWVsZCBhbmQgZGlzcGF0Y2hlcyB0byB0aGVcbiAqIGBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZGl0aW9uRXhwcmVzc2lvbiA9XG4gIHwgeyBvcDogXCJlcVwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibmVxXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJndFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwiZ3RlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJsdFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibHRlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJhbmRcIjsgY29uZGl0aW9uczogQ29uZGl0aW9uRXhwcmVzc2lvbltdIH1cbiAgfCB7IG9wOiBcIm9yXCI7IGNvbmRpdGlvbnM6IENvbmRpdGlvbkV4cHJlc3Npb25bXSB9XG4gIHwgeyBvcDogXCJub3RcIjsgY29uZGl0aW9uOiBDb25kaXRpb25FeHByZXNzaW9uIH1cbiAgfCB7IG9wOiBcImV4aXN0c1wiOyB2YWx1ZTogRXhwclZhbHVlIH07XG5cbi8qKlxuICogQSBjb2RlLWJhc2VkIGNvbmRpdGlvbiBldmFsdWF0ZWQgaW4gYSByZXN0cmljdGVkIFZNIHNhbmRib3ggKMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSBkb2VzIE5PVCBpbXBsZW1lbnQgdGhlIHNhbmRib3ggZGlyZWN0bHkg4oCUIGEgcGx1Z2dhYmxlXG4gKiBgQ29kZVNhbmRib3hFdmFsdWF0b3JgIG11c3QgYmUgcmVnaXN0ZXJlZCBmb3IgY29kZSBjb25kaXRpb25zIHRvIHdvcmsuXG4gKiBUaGUgY29kZSBtdXN0IGZvbGxvdyB0aGUgc2FtZSByZXN0cmljdGlvbnMgYXMgdGhlIENvZGUgTm9kZSAowqcyMi40KTpcbiAqIG5vIHN5c3RlbSBBUEkgYWNjZXNzLCBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQ29uZGl0aW9uIHtcbiAgdHlwZTogXCJjb2RlXCI7XG4gIGNvZGU6IHN0cmluZztcbiAgbGFuZ3VhZ2U/OiBcImphdmFzY3JpcHRcIiB8IFwidHlwZXNjcmlwdFwiO1xufVxuXG4vKipcbiAqIEEgY29uZGl0aW9uIG9uIGEgU3dpdGNoIGNhc2Ug4oCUIGVpdGhlciBhIGRlY2xhcmF0aXZlXG4gKiB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0gKGdyYXBoaWNhbCBtb2RlKSBvciBhIHtAbGluayBDb2RlQ29uZGl0aW9ufVxuICogKGNvZGUgbW9kZSkuXG4gKi9cbmV4cG9ydCB0eXBlIFN3aXRjaENhc2VDb25kaXRpb24gPSBDb25kaXRpb25FeHByZXNzaW9uIHwgQ29kZUNvbmRpdGlvbjtcblxuLyoqXG4gKiBBIHNpbmdsZSBjYXNlIGluIGEgU3dpdGNoIG5vZGUuXG4gKlxuICogRWFjaCBjYXNlIHBhaXJzIGEgY29uZGl0aW9uIHdpdGggYSBkZWRpY2F0ZWQgb3V0cHV0IHBvcnQuIFdoZW4gdGhlXG4gKiBjb25kaXRpb24gZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIGlucHV0IGlzIHJvdXRlZCB0byBgb3V0cHV0UG9ydGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoQ2FzZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbmRpdGlvbjogU3dpdGNoQ2FzZUNvbmRpdGlvbjtcbiAgb3V0cHV0UG9ydDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIFN3aXRjaCBub2RlLCBzdG9yZWQgaW4gYG1ldGFkYXRhLnN3aXRjaGAuXG4gKlxuICogV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydCBpcyBoaWRkZW4gYW5kIHRoZVxuICogZXhlY3V0b3IgcmV0dXJucyBhbiBlbXB0eSBvdXRwdXQgKG5vIHBvcnQpIHdoZW4gbm8gY2FzZSBtYXRjaGVzLiBXaGVuXG4gKiBgaGFzRGVmYXVsdGAgaXMgYHRydWVgIChvciBvbWl0dGVkKSwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydCBpcyB2aXNpYmxlXG4gKiBhbmQgcmVjZWl2ZXMgdGhlIGlucHV0IHdoZW4gbm8gY2FzZSBtYXRjaGVzIChERUNBRi0zNCDCpzYuMikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoTm9kZU1ldGFkYXRhIHtcbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbiAgZGVmYXVsdFBvcnQ/OiBzdHJpbmc7XG4gIGhhc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgYXBwbHlpbmcgYSBtZXRhZGF0YSBjaGFuZ2UgdG8gYSBub2RlLiBFYWNoIGNvbmNyZXRlIG5vZGVcbiAqIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBHcmFwaE5vZGUuYXBwbHlNZXRhZGF0YSgpYCByZXR1cm5zIHRoaXMgc28gdGhlXG4gKiByZW5kZXJlciBjYW4gdXBkYXRlIHRoZSBkaWFncmFtIG1vZGVsIOKAlCB0aGUgbm9kZSBvd25zIGl0cyBwb3J0cywgaXRzXG4gKiBzaXplLCBhbmQgYW55IGRhdGEgcGF0Y2hlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlTWV0YWRhdGFDaGFuZ2Uge1xuICBwb3J0czogR3JhcGhQb3J0RGVmaW5pdGlvbltdO1xuICBzaXplOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gIGRhdGFQYXRjaDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogU2VyaWFsaXplZCBlcnJvciBwYXlsb2FkIGluY2x1ZGVkIGluIGV4ZWN1dGlvbiBldmVudHMgYW5kIHJlc3VsdHMuXG4gKlxuICogRnJvbnRlbmQtc2FmZTogdGhlIGZyb250ZW5kIHJlY2VpdmVzIHRoaXMgb3ZlciBTU0Ugd2hlbiBhIG5vZGUgb3Igd29ya2Zsb3dcbiAqIGZhaWxzIGFuZCBuZWVkcyB0byByZW5kZXIgdGhlIGVycm9yIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25FcnJvclBheWxvYWQge1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIGRldGFpbHM/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIGV2ZW50IGVtaXR0ZWQgZHVyaW5nIGdyYXBoIGV4ZWN1dGlvbi5cbiAqXG4gKiBGcm9udGVuZC1zYWZlOiB0aGUgZnJvbnRlbmQgY29uc3VtZXMgdGhlc2UgZXZlbnRzIG92ZXIgdGhlIFNTRSBlbmRwb2ludFxuICogKGBHRVQgL2dyYXBoL2V2ZW50c2ApIGFuZCBtYXBzIHRoZW0gdG8gVUkgc3RhdGUgdXBkYXRlcyB2aWFcbiAqIGBHcmFwaEV4ZWN1dGlvblN0YXRlTWFwcGVyYC4gVGhlIGB0aW1lc3RhbXBgIGlzIHNlcmlhbGlzZWQgYXMgYW4gSVNPIHN0cmluZ1xuICogb3ZlciB0aGUgd2lyZTsgdGhlIGZyb250ZW5kIGRlc2VyaWFsaXNlcyBpdCBiYWNrIHRvIGEgYERhdGVgIHdoZW4gbWFwcGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvbkV2ZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgc2VxdWVuY2U6IG51bWJlcjtcbiAgcnVuSWQ6IHN0cmluZztcbiAgcGFyZW50UnVuSWQ/OiBzdHJpbmc7XG4gIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGU7XG4gIHRpbWVzdGFtcDogRGF0ZTtcbiAgbm9kZUlkPzogc3RyaW5nO1xuICBlZGdlSWQ/OiBzdHJpbmc7XG4gIHBvcnQ/OiBzdHJpbmc7XG4gIGl0ZXJhdGlvbj86IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nW107XG4gIHN0YXR1cz86IEdyYXBoRXhlY3V0aW9uU3RhdHVzO1xuICBwYXlsb2FkPzogdW5rbm93bjtcbiAgZXJyb3I/OiBHcmFwaEV4ZWN1dGlvbkVycm9yUGF5bG9hZDtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3NoYXJlZC90eXBlc1xuICogQHN1bW1hcnkgRnJvbnRlbmQtc2FmZSBncmFwaCB0eXBlIGRlY2xhcmF0aW9ucy5cbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGFsaWFzZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgc2FmZSB0byBpbXBvcnQgZnJvbSBhXG4gKiBmcm9udGVuZCBidW5kbGUuIFRoZXNlIHR5cGVzIGRlc2NyaWJlIGRlY2xhcmF0aXZlIGdyYXBoIG1ldGFkYXRhIChsb29wXG4gKiBjb25kaXRpb24gRFNMLCBzd2l0Y2ggY2FzZXMsIG5vZGUgbWV0YWRhdGEgcGF0Y2hlcykgYW5kIHRoZSBleGVjdXRpb24tZXZlbnRcbiAqIGRhdGEgY29udHJhY3QgY29uc3VtZWQgYnkgdGhlIGZyb250ZW5kIHZpYSBTU0Ug4oCUIG5vIGVuZ2luZSBydW50aW1lXG4gKiBkZXBlbmRlbmN5LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoUG9ydERlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSwgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBBIHZhbHVlIHJlZmVyZW5jZSBpbnNpZGUgYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0uXG4gKlxuICogLSBgeyBjb25zdDogeCB9YCDigJQgYSBsaXRlcmFsIGNvbnN0YW50LlxuICogLSBgeyBwYXRoOiBcImEuYlwiIH1gIOKAlCBhIGRvdHRlZCBwYXRoIHJlc29sdmVkIGFnYWluc3QgdGhlIGN1cnJlbnQgbG9vcCBzdGF0ZS5cbiAqIC0gYHsgc3RlcDogXCJub2RlSWRcIiwgcGF0aDogXCJvdXRcIiB9YCDigJQgYSBjcm9zcy1ub2RlIHJlZmVyZW5jZSAocmVzb2x2ZWQgZnJvbVxuICogICB0aGUgZXhlY3V0aW9uIHN0YXRlIGluIHYxOyByZXNlcnZlZCBmb3IgZnV0dXJlIG11bHRpLXN0ZXAgZXZhbHVhdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEV4cHJWYWx1ZSA9XG4gIHwgeyBjb25zdDogdW5rbm93biB9XG4gIHwgeyBwYXRoOiBzdHJpbmcgfVxuICB8IHsgc3RlcDogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGl2ZSwgc2VyaWFsaXphYmxlIGNvbmRpdGlvbiBleHByZXNzaW9uIERTTCAoQUxGUkVELTUgwqc4IC8gREVDQUYtMzIgwqcyMi4zKS5cbiAqXG4gKiBUaGUgZW5naW5lJ3MgYEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yYCByZWNvZ25pc2VzIHRoaXMgRFNMIHdoZW4gdGhlXG4gKiBjb25kaXRpb24gb2JqZWN0IGNhcnJpZXMgYW4gYG9wYCBmaWVsZCBhbmQgZGlzcGF0Y2hlcyB0byB0aGVcbiAqIGBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZGl0aW9uRXhwcmVzc2lvbiA9XG4gIHwgeyBvcDogXCJlcVwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibmVxXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJndFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwiZ3RlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJsdFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibHRlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJhbmRcIjsgY29uZGl0aW9uczogQ29uZGl0aW9uRXhwcmVzc2lvbltdIH1cbiAgfCB7IG9wOiBcIm9yXCI7IGNvbmRpdGlvbnM6IENvbmRpdGlvbkV4cHJlc3Npb25bXSB9XG4gIHwgeyBvcDogXCJub3RcIjsgY29uZGl0aW9uOiBDb25kaXRpb25FeHByZXNzaW9uIH1cbiAgfCB7IG9wOiBcImV4aXN0c1wiOyB2YWx1ZTogRXhwclZhbHVlIH07XG5cbi8qKlxuICogQSBjb2RlLWJhc2VkIGNvbmRpdGlvbiBldmFsdWF0ZWQgaW4gYSByZXN0cmljdGVkIFZNIHNhbmRib3ggKMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSBkb2VzIE5PVCBpbXBsZW1lbnQgdGhlIHNhbmRib3ggZGlyZWN0bHkg4oCUIGEgcGx1Z2dhYmxlXG4gKiBgQ29kZVNhbmRib3hFdmFsdWF0b3JgIG11c3QgYmUgcmVnaXN0ZXJlZCBmb3IgY29kZSBjb25kaXRpb25zIHRvIHdvcmsuXG4gKiBUaGUgY29kZSBtdXN0IGZvbGxvdyB0aGUgc2FtZSByZXN0cmljdGlvbnMgYXMgdGhlIENvZGUgTm9kZSAowqcyMi40KTpcbiAqIG5vIHN5c3RlbSBBUEkgYWNjZXNzLCBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQ29uZGl0aW9uIHtcbiAgdHlwZTogXCJjb2RlXCI7XG4gIGNvZGU6IHN0cmluZztcbiAgbGFuZ3VhZ2U/OiBcImphdmFzY3JpcHRcIiB8IFwidHlwZXNjcmlwdFwiO1xufVxuXG4vKipcbiAqIEEgY29uZGl0aW9uIG9uIGEgU3dpdGNoIGNhc2Ug4oCUIGVpdGhlciBhIGRlY2xhcmF0aXZlXG4gKiB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0gKGdyYXBoaWNhbCBtb2RlKSBvciBhIHtAbGluayBDb2RlQ29uZGl0aW9ufVxuICogKGNvZGUgbW9kZSkuXG4gKi9cbmV4cG9ydCB0eXBlIFN3aXRjaENhc2VDb25kaXRpb24gPSBDb25kaXRpb25FeHByZXNzaW9uIHwgQ29kZUNvbmRpdGlvbjtcblxuLyoqXG4gKiBBIHNpbmdsZSBjYXNlIGluIGEgU3dpdGNoIG5vZGUuXG4gKlxuICogRWFjaCBjYXNlIHBhaXJzIGEgY29uZGl0aW9uIHdpdGggYSBkZWRpY2F0ZWQgb3V0cHV0IHBvcnQuIFdoZW4gdGhlXG4gKiBjb25kaXRpb24gZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIGlucHV0IGlzIHJvdXRlZCB0byBgb3V0cHV0UG9ydGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoQ2FzZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbmRpdGlvbjogU3dpdGNoQ2FzZUNvbmRpdGlvbjtcbiAgb3V0cHV0UG9ydDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIFN3aXRjaCBub2RlLCBzdG9yZWQgaW4gYG1ldGFkYXRhLnN3aXRjaGAuXG4gKlxuICogV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgYGRlZmF1bHRgIG91dHB1dCBwb3J0IGlzXG4gKiBoaWRkZW4gYW5kIHRoZSBleGVjdXRvciB0aHJvd3MgYSBgR3JhcGhFeGVjdXRpb25FcnJvcmAgd2hlbiBubyBjYXNlXG4gKiBtYXRjaGVzLiBXaGVuIGBoYXNEZWZhdWx0YCBpcyBgdHJ1ZWAsIHRoZSBgZGVmYXVsdGAgb3V0cHV0IHBvcnQgaXMgdmlzaWJsZVxuICogYW5kIHJlY2VpdmVzIHRoZSBpbnB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlcyAoREVDQUYtMzQgwqc2LjIpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE5vZGVNZXRhZGF0YSB7XG4gIGNhc2VzOiBTd2l0Y2hDYXNlW107XG4gIGRlZmF1bHRQb3J0Pzogc3RyaW5nO1xuICBoYXNEZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGFwcGx5aW5nIGEgbWV0YWRhdGEgY2hhbmdlIHRvIGEgbm9kZS4gRWFjaCBjb25jcmV0ZSBub2RlXG4gKiBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgR3JhcGhOb2RlLmFwcGx5TWV0YWRhdGEoKWAgcmV0dXJucyB0aGlzIHNvIHRoZVxuICogcmVuZGVyZXIgY2FuIHVwZGF0ZSB0aGUgZGlhZ3JhbSBtb2RlbCDigJQgdGhlIG5vZGUgb3ducyBpdHMgcG9ydHMsIGl0c1xuICogc2l6ZSwgYW5kIGFueSBkYXRhIHBhdGNoZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZU1ldGFkYXRhQ2hhbmdlIHtcbiAgcG9ydHM6IEdyYXBoUG9ydERlZmluaXRpb25bXTtcbiAgc2l6ZTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9O1xuICBkYXRhUGF0Y2g6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgZXJyb3IgcGF5bG9hZCBpbmNsdWRlZCBpbiBleGVjdXRpb24gZXZlbnRzIGFuZCByZXN1bHRzLlxuICpcbiAqIEZyb250ZW5kLXNhZmU6IHRoZSBmcm9udGVuZCByZWNlaXZlcyB0aGlzIG92ZXIgU1NFIHdoZW4gYSBub2RlIG9yIHdvcmtmbG93XG4gKiBmYWlscyBhbmQgbmVlZHMgdG8gcmVuZGVyIHRoZSBlcnJvciBkZXRhaWxzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRXhlY3V0aW9uRXJyb3JQYXlsb2FkIHtcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN0YWNrPzogc3RyaW5nO1xuICBjb2RlPzogc3RyaW5nO1xuICBkZXRhaWxzPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBldmVudCBlbWl0dGVkIGR1cmluZyBncmFwaCBleGVjdXRpb24uXG4gKlxuICogRnJvbnRlbmQtc2FmZTogdGhlIGZyb250ZW5kIGNvbnN1bWVzIHRoZXNlIGV2ZW50cyBvdmVyIHRoZSBTU0UgZW5kcG9pbnRcbiAqIChgR0VUIC9ncmFwaC9ldmVudHNgKSBhbmQgbWFwcyB0aGVtIHRvIFVJIHN0YXRlIHVwZGF0ZXMgdmlhXG4gKiBgR3JhcGhFeGVjdXRpb25TdGF0ZU1hcHBlcmAuIFRoZSBgdGltZXN0YW1wYCBpcyBzZXJpYWxpc2VkIGFzIGFuIElTTyBzdHJpbmdcbiAqIG92ZXIgdGhlIHdpcmU7IHRoZSBmcm9udGVuZCBkZXNlcmlhbGlzZXMgaXQgYmFjayB0byBhIGBEYXRlYCB3aGVuIG1hcHBpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25FdmVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHBhcmVudFJ1bklkPzogc3RyaW5nO1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlO1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIG5vZGVJZD86IHN0cmluZztcbiAgZWRnZUlkPzogc3RyaW5nO1xuICBwb3J0Pzogc3RyaW5nO1xuICBpdGVyYXRpb24/OiBudW1iZXI7XG4gIHBhdGg6IHN0cmluZ1tdO1xuICBzdGF0dXM/OiBHcmFwaEV4ZWN1dGlvblN0YXR1cztcbiAgcGF5bG9hZD86IHVua25vd247XG4gIGVycm9yPzogR3JhcGhFeGVjdXRpb25FcnJvclBheWxvYWQ7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
package/lib/esm/index.js CHANGED
@@ -5,8 +5,9 @@
5
5
  */
6
6
  export * from "./utils.js";
7
7
  export * from "./namespaces/index.js";
8
- export const VERSION = "0.3.11";
9
- export const COMMIT = "e2c4409";
10
- export const FULL_VERSION = "0.3.11-e2c4409";
8
+ export * from "./feature-flags/index.js";
9
+ export const VERSION = "0.4.0";
10
+ export const COMMIT = "7e1a5ac";
11
+ export const FULL_VERSION = "0.4.0-7e1a5ac";
11
12
  export const PACKAGE_NAME = "@decaf-ts/integrations";
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDJCQUF3QjtBQUN4QixzQ0FBNkI7QUFFN0IsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFXLGFBQWEsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQVcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9uc1xuICogQHN1bW1hcnkgUGFja2FnZSBlbnRyeSBwb2ludCBmb3Igc2hhcmVkIGludGVncmF0aW9uIGhlbHBlcnMuXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcGFja2FnZSB1dGlsaXRpZXMgYW5kIGJ1aWxkLXRpbWUgdmVyc2lvbiBtZXRhZGF0YSBmb3IgYEBkZWNhZi10cy9pbnRlZ3JhdGlvbnNgLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmFtZXNwYWNlc1wiO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTjogc3RyaW5nID0gXCIjI1ZFUlNJT04jI1wiO1xuXG5leHBvcnQgY29uc3QgQ09NTUlUID0gXCIjI0NPTU1JVCMjXCI7XG5cbmV4cG9ydCBjb25zdCBGVUxMX1ZFUlNJT04gPSBcIiMjRlVMTF9WRVJTSU9OIyNcIjtcblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRTogc3RyaW5nID0gXCIjI1BBQ0tBR0UjI1wiO1xuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDJCQUF3QjtBQUN4QixzQ0FBNkI7QUFDN0IseUNBQWdDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBVyxhQUFhLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFXLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnNcbiAqIEBzdW1tYXJ5IFBhY2thZ2UgZW50cnkgcG9pbnQgZm9yIHNoYXJlZCBpbnRlZ3JhdGlvbiBoZWxwZXJzLlxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHBhY2thZ2UgdXRpbGl0aWVzIGFuZCBidWlsZC10aW1lIHZlcnNpb24gbWV0YWRhdGEgZm9yIGBAZGVjYWYtdHMvaW50ZWdyYXRpb25zYC5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25hbWVzcGFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZlYXR1cmUtZmxhZ3NcIjtcblxuZXhwb3J0IGNvbnN0IFZFUlNJT046IHN0cmluZyA9IFwiIyNWRVJTSU9OIyNcIjtcblxuZXhwb3J0IGNvbnN0IENPTU1JVCA9IFwiIyNDT01NSVQjI1wiO1xuXG5leHBvcnQgY29uc3QgRlVMTF9WRVJTSU9OID0gXCIjI0ZVTExfVkVSU0lPTiMjXCI7XG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUU6IHN0cmluZyA9IFwiIyNQQUNLQUdFIyNcIjtcbiJdfQ==
@@ -0,0 +1,319 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /**
11
+ * @module integrations/kibana/builders/KibanaIndexBuilder
12
+ * @summary Fluent builder for Kibana index pattern (data view) configurations.
13
+ * @description Implements the project Builder Pattern (constitution §2):
14
+ * extends `Model`, uses `@decaf-ts/decorator-validation` decorators, fluent
15
+ * `setX(): this` methods, and a terminal `build()` that validates via
16
+ * `hasErrors()` and returns a `KibanaDataViewConfig`.
17
+ *
18
+ * Supports three base matching modes:
19
+ * - `EXACT` — single, fully-qualified index name (no wildcards).
20
+ * - `PREFIX` — wildcard pattern (e.g. `filebeat-pla-demo-*`).
21
+ * - `LOGGER_GENERATED` — derives index name segments from a log pattern
22
+ * compiled via `compileLogPattern()` and rendered via
23
+ * `logParameterRegistry.render()`.
24
+ *
25
+ * **Compounding:** Logger-generated segments can be compounded with ANY
26
+ * base matching mode. When `logPattern` + `logPayload` are provided
27
+ * alongside EXACT or PREFIX mode, the rendered segments are appended to
28
+ * the base index name and a trailing `*` is added.
29
+ */
30
+ import { list, Model, option, required, minlength, } from "@decaf-ts/decorator-validation";
31
+ import { InternalError, ValidationError } from "@decaf-ts/db-decorators";
32
+ import { prop } from "@decaf-ts/decoration";
33
+ import { compileLogPattern, logParameterRegistry, } from "@decaf-ts/logging";
34
+ import { KibanaIndexMatchMode } from "./../types.js";
35
+ export class KibanaIndexBuilder extends Model {
36
+ constructor(arg) {
37
+ super(arg);
38
+ // ── Matching strategy ──
39
+ this.matchMode = KibanaIndexMatchMode.PREFIX;
40
+ // ── Separator ──
41
+ this.separator = "-";
42
+ // ── Data View fields (map to KibanaDataViewConfig) ──
43
+ this.id = "";
44
+ this.name = "";
45
+ Model.fromModel(this, arg);
46
+ }
47
+ // ── Fluent setters: matching strategy ──
48
+ setMatchMode(mode) {
49
+ this.matchMode = mode;
50
+ return this;
51
+ }
52
+ setPrefix(prefix) {
53
+ this.prefix = prefix;
54
+ return this;
55
+ }
56
+ setExactIndexName(name) {
57
+ this.exactIndexName = name;
58
+ return this;
59
+ }
60
+ setLogPattern(pattern) {
61
+ this.logPattern = pattern;
62
+ return this;
63
+ }
64
+ setLogPayload(payload) {
65
+ this.logPayload = payload;
66
+ return this;
67
+ }
68
+ setSeparator(sep) {
69
+ this.separator = sep;
70
+ return this;
71
+ }
72
+ // ── Fluent setters: data view fields ──
73
+ setId(id) {
74
+ this.id = id;
75
+ return this;
76
+ }
77
+ setName(name) {
78
+ this.name = name;
79
+ return this;
80
+ }
81
+ setTimeFieldName(field) {
82
+ this.timeFieldName = field;
83
+ return this;
84
+ }
85
+ setNamespaces(ns) {
86
+ this.namespaces = ns;
87
+ return this;
88
+ }
89
+ setSourceFilters(filters) {
90
+ this.sourceFilters = filters;
91
+ return this;
92
+ }
93
+ setRuntimeFieldMap(map) {
94
+ this.runtimeFieldMap = map;
95
+ return this;
96
+ }
97
+ setFieldAttrs(attrs) {
98
+ this.fieldAttrs = attrs;
99
+ return this;
100
+ }
101
+ setAllowNoIndex(allow) {
102
+ this.allowNoIndex = allow;
103
+ return this;
104
+ }
105
+ // ── Build ──
106
+ build() {
107
+ const errs = this.hasErrors();
108
+ if (errs)
109
+ throw new ValidationError(errs);
110
+ const title = this.composeTitle();
111
+ return {
112
+ id: this.id,
113
+ name: this.name,
114
+ title,
115
+ timeFieldName: this.timeFieldName,
116
+ namespaces: this.namespaces,
117
+ sourceFilters: this.sourceFilters,
118
+ runtimeFieldMap: this.runtimeFieldMap,
119
+ fieldAttrs: this.fieldAttrs,
120
+ allowNoIndex: this.allowNoIndex,
121
+ };
122
+ }
123
+ // ── Title composition ──
124
+ composeTitle() {
125
+ const baseSegments = this.composeBaseSegments();
126
+ const loggerSegments = this.composeLoggerGeneratedSegments();
127
+ if (loggerSegments.length > 0) {
128
+ const allSegments = [...baseSegments, ...loggerSegments];
129
+ return allSegments.join(this.separator) + this.separator + "*";
130
+ }
131
+ switch (this.matchMode) {
132
+ case KibanaIndexMatchMode.EXACT:
133
+ return baseSegments[0];
134
+ case KibanaIndexMatchMode.PREFIX: {
135
+ const base = baseSegments[0];
136
+ return base.endsWith(this.separator)
137
+ ? `${base}*`
138
+ : `${base}${this.separator}*`;
139
+ }
140
+ case KibanaIndexMatchMode.LOGGER_GENERATED:
141
+ if (baseSegments.length === 0) {
142
+ throw new ValidationError([
143
+ {
144
+ property: "prefix",
145
+ message: "prefix is required for LOGGER_GENERATED mode when no logPattern is set",
146
+ constraints: {},
147
+ },
148
+ ]);
149
+ }
150
+ return baseSegments.join(this.separator) + this.separator + "*";
151
+ default:
152
+ throw new InternalError(`Unsupported match mode: ${this.matchMode}`);
153
+ }
154
+ }
155
+ composeBaseSegments() {
156
+ switch (this.matchMode) {
157
+ case KibanaIndexMatchMode.EXACT:
158
+ if (!this.exactIndexName ||
159
+ this.exactIndexName.trim().length === 0) {
160
+ throw new ValidationError([
161
+ {
162
+ property: "exactIndexName",
163
+ message: "exactIndexName is required for EXACT match mode",
164
+ constraints: {},
165
+ },
166
+ ]);
167
+ }
168
+ if (this.exactIndexName.includes("*")) {
169
+ throw new ValidationError([
170
+ {
171
+ property: "exactIndexName",
172
+ message: "exactIndexName must not contain wildcards (*) in EXACT match mode",
173
+ constraints: {},
174
+ },
175
+ ]);
176
+ }
177
+ return [this.exactIndexName.trim()];
178
+ case KibanaIndexMatchMode.PREFIX:
179
+ if (!this.prefix || this.prefix.trim().length === 0) {
180
+ throw new ValidationError([
181
+ {
182
+ property: "prefix",
183
+ message: "prefix is required for PREFIX match mode",
184
+ constraints: {},
185
+ },
186
+ ]);
187
+ }
188
+ return [this.prefix.trim()];
189
+ case KibanaIndexMatchMode.LOGGER_GENERATED:
190
+ return this.prefix && this.prefix.trim().length > 0
191
+ ? [this.prefix.trim()]
192
+ : [];
193
+ default:
194
+ throw new InternalError(`Unsupported match mode: ${this.matchMode}`);
195
+ }
196
+ }
197
+ composeLoggerGeneratedSegments() {
198
+ if (!this.logPattern)
199
+ return [];
200
+ if (!this.logPayload) {
201
+ throw new ValidationError([
202
+ {
203
+ property: "logPayload",
204
+ message: "logPayload is required when logPattern is set",
205
+ constraints: {},
206
+ },
207
+ ]);
208
+ }
209
+ const definition = compileLogPattern(this.logPattern);
210
+ const fullPayload = this.buildFullPayload(this.logPayload);
211
+ const rendered = logParameterRegistry.render(fullPayload, definition.keys);
212
+ const segments = [];
213
+ for (const key of definition.keys) {
214
+ const value = rendered[key];
215
+ if (value && value.trim().length > 0) {
216
+ segments.push(value.trim());
217
+ }
218
+ }
219
+ if (segments.length === 0 &&
220
+ this.matchMode === KibanaIndexMatchMode.LOGGER_GENERATED) {
221
+ throw new ValidationError([
222
+ {
223
+ property: "logPattern",
224
+ message: "No segments were rendered from the provided logPattern and payload",
225
+ constraints: {},
226
+ },
227
+ ]);
228
+ }
229
+ return segments;
230
+ }
231
+ /**
232
+ * Fill missing LogParameterPayload fields with sensible defaults
233
+ * so partial payloads can be accepted from the caller.
234
+ */
235
+ buildFullPayload(partial) {
236
+ return {
237
+ config: partial.config ?? {},
238
+ level: partial.level ?? "info",
239
+ context: partial.context ?? [],
240
+ timestamp: partial.timestamp ?? new Date().toISOString(),
241
+ app: partial.app ?? "",
242
+ separator: partial.separator ?? this.separator,
243
+ correlationId: partial.correlationId ?? "",
244
+ rawMessage: partial.rawMessage ?? "",
245
+ filteredMessage: partial.filteredMessage ?? "",
246
+ meta: partial.meta,
247
+ metaString: partial.metaString,
248
+ stack: partial.stack,
249
+ stackLabel: partial.stackLabel,
250
+ applyTheme: partial.applyTheme ??
251
+ ((value) => value),
252
+ };
253
+ }
254
+ }
255
+ __decorate([
256
+ required(),
257
+ option(KibanaIndexMatchMode),
258
+ __metadata("design:type", String)
259
+ ], KibanaIndexBuilder.prototype, "matchMode", void 0);
260
+ __decorate([
261
+ prop(),
262
+ minlength(1),
263
+ __metadata("design:type", String)
264
+ ], KibanaIndexBuilder.prototype, "prefix", void 0);
265
+ __decorate([
266
+ prop(),
267
+ minlength(1),
268
+ __metadata("design:type", String)
269
+ ], KibanaIndexBuilder.prototype, "exactIndexName", void 0);
270
+ __decorate([
271
+ prop(),
272
+ minlength(1),
273
+ __metadata("design:type", String)
274
+ ], KibanaIndexBuilder.prototype, "logPattern", void 0);
275
+ __decorate([
276
+ prop(),
277
+ __metadata("design:type", Object)
278
+ ], KibanaIndexBuilder.prototype, "logPayload", void 0);
279
+ __decorate([
280
+ prop(),
281
+ __metadata("design:type", String)
282
+ ], KibanaIndexBuilder.prototype, "separator", void 0);
283
+ __decorate([
284
+ required(),
285
+ minlength(1),
286
+ __metadata("design:type", String)
287
+ ], KibanaIndexBuilder.prototype, "id", void 0);
288
+ __decorate([
289
+ required(),
290
+ minlength(1),
291
+ __metadata("design:type", String)
292
+ ], KibanaIndexBuilder.prototype, "name", void 0);
293
+ __decorate([
294
+ prop(),
295
+ __metadata("design:type", String)
296
+ ], KibanaIndexBuilder.prototype, "timeFieldName", void 0);
297
+ __decorate([
298
+ prop(),
299
+ list(() => String),
300
+ __metadata("design:type", Array)
301
+ ], KibanaIndexBuilder.prototype, "namespaces", void 0);
302
+ __decorate([
303
+ prop(),
304
+ list(() => Object),
305
+ __metadata("design:type", Array)
306
+ ], KibanaIndexBuilder.prototype, "sourceFilters", void 0);
307
+ __decorate([
308
+ prop(),
309
+ __metadata("design:type", Object)
310
+ ], KibanaIndexBuilder.prototype, "runtimeFieldMap", void 0);
311
+ __decorate([
312
+ prop(),
313
+ __metadata("design:type", Object)
314
+ ], KibanaIndexBuilder.prototype, "fieldAttrs", void 0);
315
+ __decorate([
316
+ prop(),
317
+ __metadata("design:type", Boolean)
318
+ ], KibanaIndexBuilder.prototype, "allowNoIndex", void 0);
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hSW5kZXhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2tpYmFuYS9idWlsZGVycy9LaWJhbmFJbmRleEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxPQUFPLEVBQ0wsSUFBSSxFQUNKLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsb0JBQW9CLEdBRXJCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUF3QixvQkFBb0IsRUFBRSxzQkFBaUI7QUFFdEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUF3RDNDLFlBQVksR0FBa0M7UUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBeERiLDBCQUEwQjtRQUcxQixjQUFTLEdBQXlCLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQW1COUQsa0JBQWtCO1FBRWxCLGNBQVMsR0FBVyxHQUFHLENBQUM7UUFFeEIsdURBQXVEO1FBR3ZELE9BQUUsR0FBVyxFQUFFLENBQUM7UUFJaEIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQXdCaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxZQUFZLENBQUMsSUFBMEI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDdEIsSUFBSSxDQUFD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Q0FBQyxLQUFLLENBQUM7U0FDN0IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRUQztJQUZDLFFBQVEsRUFBRTtJQUNWLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzs7cURBQ2lDO0FBSzlEO0lBRkMsSUFBSSxFQUFFO0lBQ04sU0FBUyxDQUFDLENBQUMsQ0FBQzs7a0RBQ0c7QUFJaEI7SUFGQyxJQUFJLEVBQUU7SUFDTixTQUFTLENBQUMsQ0FBQyxDQUFDOzswREFDVztBQUt4QjtJQUZDLElBQUksRUFBRTtJQUNOLFNBQVMsQ0FBQyxDQUFDLENBQUM7O3NEQUNPO0FBR3BCO0lBREMsSUFBSSxFQUFFOztzREFDbUM7QUFJMUM7SUFEQyxJQUFJLEVBQUU7O3FEQUNpQjtBQUt4QjtJQUZDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxDQUFDLENBQUM7OzhDQUNHO0FBSWhCO0lBRkMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLENBQUMsQ0FBQzs7Z0RBQ0s7QUFHbEI7SUFEQyxJQUFJLEVBQUU7O3lEQUNnQjtBQUl2QjtJQUZDLElBQUksRUFBRTtJQUNOLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7O3NEQUNHO0FBSXRCO0lBRkMsSUFBSSxFQUFFO0lBQ04sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQzs4QkFDSCxLQUFLO3lEQUFvQjtBQUd6QztJQURDLElBQUksRUFBRTs7MkRBQ21DO0FBRzFDO0lBREMsSUFBSSxFQUFFOztzREFDOEI7QUFHckM7SUFEQyxJQUFJLEVBQUU7O3dEQUNnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMva2liYW5hL2J1aWxkZXJzL0tpYmFuYUluZGV4QnVpbGRlclxuICogQHN1bW1hcnkgRmx1ZW50IGJ1aWxkZXIgZm9yIEtpYmFuYSBpbmRleCBwYXR0ZXJuIChkYXRhIHZpZXcpIGNvbmZpZ3VyYXRpb25zLlxuICogQGRlc2NyaXB0aW9uIEltcGxlbWVudHMgdGhlIHByb2plY3QgQnVpbGRlciBQYXR0ZXJuIChjb25zdGl0dXRpb24gwqcyKTpcbiAqIGV4dGVuZHMgYE1vZGVsYCwgdXNlcyBgQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uYCBkZWNvcmF0b3JzLCBmbHVlbnRcbiAqIGBzZXRYKCk6IHRoaXNgIG1ldGhvZHMsIGFuZCBhIHRlcm1pbmFsIGBidWlsZCgpYCB0aGF0IHZhbGlkYXRlcyB2aWFcbiAqIGBoYXNFcnJvcnMoKWAgYW5kIHJldHVybnMgYSBgS2liYW5hRGF0YVZpZXdDb25maWdgLlxuICpcbiAqIFN1cHBvcnRzIHRocmVlIGJhc2UgbWF0Y2hpbmcgbW9kZXM6XG4gKiAtIGBFWEFDVGAg4oCUIHNpbmdsZSwgZnVsbHktcXVhbGlmaWVkIGluZGV4IG5hbWUgKG5vIHdpbGRjYXJkcykuXG4gKiAtIGBQUkVGSVhgIOKAlCB3aWxkY2FyZCBwYXR0ZXJuIChlLmcuIGBmaWxlYmVhdC1wbGEtZGVtby0qYCkuXG4gKiAtIGBMT0dHRVJfR0VORVJBVEVEYCDigJQgZGVyaXZlcyBpbmRleCBuYW1lIHNlZ21lbnRzIGZyb20gYSBsb2cgcGF0dGVyblxuICogICBjb21waWxlZCB2aWEgYGNvbXBpbGVMb2dQYXR0ZXJuKClgIGFuZCByZW5kZXJlZCB2aWFcbiAqICAgYGxvZ1BhcmFtZXRlclJlZ2lzdHJ5LnJlbmRlcigpYC5cbiAqXG4gKiAqKkNvbXBvdW5kaW5nOioqIExvZ2dlci1nZW5lcmF0ZWQgc2VnbWVudHMgY2FuIGJlIGNvbXBvdW5kZWQgd2l0aCBBTllcbiAqIGJhc2UgbWF0Y2hpbmcgbW9kZS4gV2hlbiBgbG9nUGF0dGVybmAgKyBgbG9nUGF5bG9hZGAgYXJlIHByb3ZpZGVkXG4gKiBhbG9uZ3NpZGUgRVhBQ1Qgb3IgUFJFRklYIG1vZGUsIHRoZSByZW5kZXJlZCBzZWdtZW50cyBhcmUgYXBwZW5kZWQgdG9cbiAqIHRoZSBiYXNlIGluZGV4IG5hbWUgYW5kIGEgdHJhaWxpbmcgYCpgIGlzIGFkZGVkLlxuICovXG5pbXBvcnQge1xuICBsaXN0LFxuICBNb2RlbCxcbiAgTW9kZWxBcmcsXG4gIG9wdGlvbixcbiAgcmVxdWlyZWQsXG4gIG1pbmxlbmd0aCxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBwcm9wIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQge1xuICBjb21waWxlTG9nUGF0dGVybixcbiAgbG9nUGFyYW1ldGVyUmVnaXN0cnksXG4gIHR5cGUgTG9nUGFyYW1ldGVyUGF5bG9hZCxcbn0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmltcG9ydCB7IEtpYmFuYURhdGFWaWV3Q29uZmlnLCBLaWJhbmFJbmRleE1hdGNoTW9kZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgS2liYW5hSW5kZXhCdWlsZGVyIGV4dGVuZHMgTW9kZWwge1xuICAvLyDilIDilIAgTWF0Y2hpbmcgc3RyYXRlZ3kg4pSA4pSAXG4gIEByZXF1aXJlZCgpXG4gIEBvcHRpb24oS2liYW5hSW5kZXhNYXRjaE1vZGUpXG4gIG1hdGNoTW9kZTogS2liYW5hSW5kZXhNYXRjaE1vZGUgPSBLaWJhbmFJbmRleE1hdGNoTW9kZS5QUkVGSVg7XG5cbiAgLy8g4pSA4pSAIEluZGV4IG5hbWUgc2VnbWVudHMg4pSA4pSAXG4gIEBwcm9wKClcbiAgQG1pbmxlbmd0aCgxKVxuICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgQHByb3AoKVxuICBAbWlubGVuZ3RoKDEpXG4gIGV4YWN0SW5kZXhOYW1lPzogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBMb2dnZXItZ2VuZXJhdGVkIGNvbXBvdW5kaW5nIOKUgOKUgFxuICBAcHJvcCgpXG4gIEBtaW5sZW5ndGgoMSlcbiAgbG9nUGF0dGVybj86IHN0cmluZztcblxuICBAcHJvcCgpXG4gIGxvZ1BheWxvYWQ/OiBQYXJ0aWFsPExvZ1BhcmFtZXRlclBheWxvYWQ+O1xuXG4gIC8vIOKUgOKUgCBTZXBhcmF0b3Ig4pSA4pSAXG4gIEBwcm9wKClcbiAgc2VwYXJhdG9yOiBzdHJpbmcgPSBcIi1cIjtcblxuICAvLyDilIDilIAgRGF0YSBWaWV3IGZpZWxkcyAobWFwIHRvIEtpYmFuYURhdGFWaWV3Q29uZmlnKSDilIDilIBcbiAgQHJlcXVpcmVkKClcbiAgQG1pbmxlbmd0aCgxKVxuICBpZDogc3RyaW5nID0gXCJcIjtcblxuICBAcmVxdWlyZWQoKVxuICBAbWlubGVuZ3RoKDEpXG4gIG5hbWU6IHN0cmluZyA9IFwiXCI7XG5cbiAgQHByb3AoKVxuICB0aW1lRmllbGROYW1lPzogc3RyaW5nO1xuXG4gIEBwcm9wKClcbiAgQGxpc3QoKCkgPT4gU3RyaW5nKVxuICBuYW1lc3BhY2VzPzogc3RyaW5nW107XG5cbiAgQHByb3AoKVxuICBAbGlzdCgoKSA9PiBPYmplY3QpXG4gIHNvdXJjZUZpbHRlcnM/OiBBcnJheTx7IHZhbHVlOiBzdHJpbmcgfT47XG5cbiAgQHByb3AoKVxuICBydW50aW1lRmllbGRNYXA/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBAcHJvcCgpXG4gIGZpZWxkQXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBAcHJvcCgpXG4gIGFsbG93Tm9JbmRleD86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoYXJnPzogTW9kZWxBcmc8S2liYW5hSW5kZXhCdWlsZGVyPikge1xuICAgIHN1cGVyKGFyZyk7XG4gICAgTW9kZWwuZnJvbU1vZGVsKHRoaXMsIGFyZyk7XG4gIH1cblxuICAvLyDilIDilIAgRmx1ZW50IHNldHRlcnM6IG1hdGNoaW5nIHN0cmF0ZWd5IOKUgOKUgFxuICBzZXRNYXRjaE1vZGUobW9kZTogS2liYW5hSW5kZXhNYXRjaE1vZGUpOiB0aGlzIHtcbiAgICB0aGlzLm1hdGNoTW9kZSA9IG1vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRQcmVmaXgocHJlZml4OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEV4YWN0SW5kZXhOYW1lKG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuZXhhY3RJbmRleE5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TG9nUGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmxvZ1BhdHRlcm4gPSBwYXR0ZXJuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TG9nUGF5bG9hZChwYXlsb2FkOiBQYXJ0aWFsPExvZ1BhcmFtZXRlclBheWxvYWQ+KTogdGhpcyB7XG4gICAgdGhpcy5sb2dQYXlsb2FkID0gcGF5bG9hZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFNlcGFyYXRvcihzZXA6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuc2VwYXJhdG9yID0gc2VwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8g4pSA4pSAIEZsdWVudCBzZXR0ZXJzOiBkYXRhIHZpZXcgZmllbGRzIOKUgOKUgFxuICBzZXRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TmFtZShuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VGltZUZpZWxkTmFtZShmaWVsZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy50aW1lRmllbGROYW1lID0gZmllbGQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXROYW1lc3BhY2VzKG5zOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIHRoaXMubmFtZXNwYWNlcyA9IG5zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0U291cmNlRmlsdGVycyhcbiAgICBmaWx0ZXJzOiBBcnJheTx7IHZhbHVlOiBzdHJpbmcgfT4sXG4gICk6IHRoaXMge1xuICAgIHRoaXMuc291cmNlRmlsdGVycyA9IGZpbHRlcnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRSdW50aW1lRmllbGRNYXAobWFwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHRoaXMge1xuICAgIHRoaXMucnVudGltZUZpZWxkTWFwID0gbWFwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0RmllbGRBdHRycyhhdHRyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzIHtcbiAgICB0aGlzLmZpZWxkQXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEFsbG93Tm9JbmRleChhbGxvdzogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuYWxsb3dOb0luZGV4ID0gYWxsb3c7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyDilIDilIAgQnVpbGQg4pSA4pSAXG4gIGJ1aWxkKCk6IEtpYmFuYURhdGFWaWV3Q29uZmlnIHtcbiAgICBjb25zdCBlcnJzID0gdGhpcy5oYXNFcnJvcnMoKTtcbiAgICBpZiAoZXJycykgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJzKTtcblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5jb21wb3NlVGl0bGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICB0aXRsZSxcbiAgICAgIHRpbWVGaWVsZE5hbWU6IHRoaXMudGltZUZpZWxkTmFtZSxcbiAgICAgIG5hbWVzcGFjZXM6IHRoaXMubmFtZXNwYWNlcyxcbiAgICAgIHNvdXJjZUZpbHRlcnM6IHRoaXMuc291cmNlRmlsdGVycyxcbiAgICAgIHJ1bnRpbWVGaWVsZE1hcDogdGhpcy5ydW50aW1lRmllbGRNYXAsXG4gICAgICBmaWVsZEF0dHJzOiB0aGlzLmZpZWxkQXR0cnMsXG4gICAgICBhbGxvd05vSW5kZXg6IHRoaXMuYWxsb3dOb0luZGV4LFxuICAgIH07XG4gIH1cblxuICAvLyDilIDilIAgVGl0bGUgY29tcG9zaXRpb24g4pSA4pSAXG4gIHByb3RlY3RlZCBjb21wb3NlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlU2VnbWVudHMgPSB0aGlzLmNvbXBvc2VCYXNlU2VnbWVudHMoKTtcbiAgICBjb25zdCBsb2dnZXJTZWdtZW50cyA9IHRoaXMuY29tcG9zZUxvZ2dlckdlbmVyYXRlZFNlZ21lbnRzKCk7XG5cbiAgICBpZiAobG9nZ2VyU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWxsU2VnbWVudHMgPSBbLi4uYmFzZVNlZ21lbnRzLCAuLi5sb2dnZXJTZWdtZW50c107XG4gICAgICByZXR1cm4gYWxsU2VnbWVudHMuam9pbih0aGlzLnNlcGFyYXRvcikgKyB0aGlzLnNlcGFyYXRvciArIFwiKlwiO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5tYXRjaE1vZGUpIHtcbiAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuRVhBQ1Q6XG4gICAgICAgIHJldHVybiBiYXNlU2VnbWVudHNbMF07XG4gICAgICBjYXNlIEtpYmFuYUluZGV4TWF0Y2hNb2RlLlBSRUZJWDoge1xuICAgICAgICBjb25zdCBiYXNlID0gYmFzZVNlZ21lbnRzWzBdO1xuICAgICAgICByZXR1cm4gYmFzZS5lbmRzV2l0aCh0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICA/IGAke2Jhc2V9KmBcbiAgICAgICAgICA6IGAke2Jhc2V9JHt0aGlzLnNlcGFyYXRvcn0qYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuTE9HR0VSX0dFTkVSQVRFRDpcbiAgICAgICAgaWYgKGJhc2VTZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvcGVydHk6IFwicHJlZml4XCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJwcmVmaXggaXMgcmVxdWlyZWQgZm9yIExPR0dFUl9HRU5FUkFURUQgbW9kZSB3aGVuIG5vIGxvZ1BhdHRlcm4gaXMgc2V0XCIsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VTZWdtZW50cy5qb2luKHRoaXMuc2VwYXJhdG9yKSArIHRoaXMuc2VwYXJhdG9yICsgXCIqXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgbWF0Y2ggbW9kZTogJHt0aGlzLm1hdGNoTW9kZX1gLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wb3NlQmFzZVNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMubWF0Y2hNb2RlKSB7XG4gICAgICBjYXNlIEtpYmFuYUluZGV4TWF0Y2hNb2RlLkVYQUNUOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuZXhhY3RJbmRleE5hbWUgfHxcbiAgICAgICAgICB0aGlzLmV4YWN0SW5kZXhOYW1lLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHByb3BlcnR5OiBcImV4YWN0SW5kZXhOYW1lXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJleGFjdEluZGV4TmFtZSBpcyByZXF1aXJlZCBmb3IgRVhBQ1QgbWF0Y2ggbW9kZVwiLFxuICAgICAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmV4YWN0SW5kZXhOYW1lLmluY2x1ZGVzKFwiKlwiKSkge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJleGFjdEluZGV4TmFtZVwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgIFwiZXhhY3RJbmRleE5hbWUgbXVzdCBub3QgY29udGFpbiB3aWxkY2FyZHMgKCopIGluIEVYQUNUIG1hdGNoIG1vZGVcIixcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IHt9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RoaXMuZXhhY3RJbmRleE5hbWUudHJpbSgpXTtcbiAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuUFJFRklYOlxuICAgICAgICBpZiAoIXRoaXMucHJlZml4IHx8IHRoaXMucHJlZml4LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvcGVydHk6IFwicHJlZml4XCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJwcmVmaXggaXMgcmVxdWlyZWQgZm9yIFBSRUZJWCBtYXRjaCBtb2RlXCIsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnByZWZpeC50cmltKCldO1xuICAgICAgY2FzZSBLaWJhbmFJbmRleE1hdGNoTW9kZS5MT0dHRVJfR0VORVJBVEVEOlxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXggJiYgdGhpcy5wcmVmaXgudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IFt0aGlzLnByZWZpeC50cmltKCldXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBtYXRjaCBtb2RlOiAke3RoaXMubWF0Y2hNb2RlfWAsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXBvc2VMb2dnZXJHZW5lcmF0ZWRTZWdtZW50cygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmxvZ1BhdHRlcm4pIHJldHVybiBbXTtcblxuICAgIGlmICghdGhpcy5sb2dQYXlsb2FkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3BlcnR5OiBcImxvZ1BheWxvYWRcIixcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgXCJsb2dQYXlsb2FkIGlzIHJlcXVpcmVkIHdoZW4gbG9nUGF0dGVybiBpcyBzZXRcIixcbiAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbml0aW9uID0gY29tcGlsZUxvZ1BhdHRlcm4odGhpcy5sb2dQYXR0ZXJuKTtcbiAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHRoaXMuYnVpbGRGdWxsUGF5bG9hZCh0aGlzLmxvZ1BheWxvYWQpO1xuICAgIGNvbnN0IHJlbmRlcmVkID0gbG9nUGFyYW1ldGVyUmVnaXN0cnkucmVuZGVyKFxuICAgICAgZnVsbFBheWxvYWQsXG4gICAgICBkZWZpbml0aW9uLmtleXMsXG4gICAgKTtcblxuICAgIGNvbnN0IHNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGRlZmluaXRpb24ua2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSByZW5kZXJlZFtrZXldO1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2godmFsdWUudHJpbSgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzZWdtZW50cy5sZW5ndGggPT09IDAgJiZcbiAgICAgIHRoaXMubWF0Y2hNb2RlID09PSBLaWJhbmFJbmRleE1hdGNoTW9kZS5MT0dHRVJfR0VORVJBVEVEXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3BlcnR5OiBcImxvZ1BhdHRlcm5cIixcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgXCJObyBzZWdtZW50cyB3ZXJlIHJlbmRlcmVkIGZyb20gdGhlIHByb3ZpZGVkIGxvZ1BhdHRlcm4gYW5kIHBheWxvYWRcIixcbiAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogRmlsbCBtaXNzaW5nIExvZ1BhcmFtZXRlclBheWxvYWQgZmllbGRzIHdpdGggc2Vuc2libGUgZGVmYXVsdHNcbiAgICogc28gcGFydGlhbCBwYXlsb2FkcyBjYW4gYmUgYWNjZXB0ZWQgZnJvbSB0aGUgY2FsbGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRnVsbFBheWxvYWQoXG4gICAgcGFydGlhbDogUGFydGlhbDxMb2dQYXJhbWV0ZXJQYXlsb2FkPixcbiAgKTogTG9nUGFyYW1ldGVyUGF5bG9hZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZzogcGFydGlhbC5jb25maWcgPz8gKHt9IGFzIGFueSksXG4gICAgICBsZXZlbDogcGFydGlhbC5sZXZlbCA/PyAoXCJpbmZvXCIgYXMgYW55KSxcbiAgICAgIGNvbnRleHQ6IHBhcnRpYWwuY29udGV4dCA/PyBbXSxcbiAgICAgIHRpbWVzdGFtcDogcGFydGlhbC50aW1lc3RhbXAgPz8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgYXBwOiBwYXJ0aWFsLmFwcCA/PyBcIlwiLFxuICAgICAgc2VwYXJhdG9yOiBwYXJ0aWFsLnNlcGFyYXRvciA/PyB0aGlzLnNlcGFyYXRvcixcbiAgICAgIGNvcnJlbGF0aW9uSWQ6IHBhcnRpYWwuY29ycmVsYXRpb25JZCA/PyBcIlwiLFxuICAgICAgcmF3TWVzc2FnZTogcGFydGlhbC5yYXdNZXNzYWdlID8/IFwiXCIsXG4gICAgICBmaWx0ZXJlZE1lc3NhZ2U6IHBhcnRpYWwuZmlsdGVyZWRNZXNzYWdlID8/IFwiXCIsXG4gICAgICBtZXRhOiBwYXJ0aWFsLm1ldGEsXG4gICAgICBtZXRhU3RyaW5nOiBwYXJ0aWFsLm1ldGFTdHJpbmcsXG4gICAgICBzdGFjazogcGFydGlhbC5zdGFjayxcbiAgICAgIHN0YWNrTGFiZWw6IHBhcnRpYWwuc3RhY2tMYWJlbCxcbiAgICAgIGFwcGx5VGhlbWU6XG4gICAgICAgIHBhcnRpYWwuYXBwbHlUaGVtZSA/P1xuICAgICAgICAoKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlKSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module integrations/kibana/builders/KibanaIndexBuilderCollection
3
+ * @summary Collection builder for multiple Kibana data views.
4
+ * @description Provides a fluent chain for building multiple
5
+ * `KibanaDataViewConfig` objects in one call, directly consumable by
6
+ * `KibanaDataViewService.createDataViews()`.
7
+ */
8
+ import { Model } from "@decaf-ts/decorator-validation";
9
+ import { ValidationError } from "@decaf-ts/db-decorators";
10
+ export class KibanaIndexBuilderCollection extends Model {
11
+ constructor(arg) {
12
+ super(arg);
13
+ this.builders = [];
14
+ Model.fromModel(this, arg);
15
+ }
16
+ static for(...builders) {
17
+ const collection = new KibanaIndexBuilderCollection();
18
+ collection.builders = builders;
19
+ return collection;
20
+ }
21
+ add(builder) {
22
+ this.builders.push(builder);
23
+ return this;
24
+ }
25
+ build() {
26
+ const errs = this.hasErrors();
27
+ if (errs)
28
+ throw new ValidationError(errs);
29
+ return this.builders.map((b) => b.build());
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hSW5kZXhCdWlsZGVyQ29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9raWJhbmEvYnVpbGRlcnMvS2liYW5hSW5kZXhCdWlsZGVyQ29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFZLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzFELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxLQUFLO0lBR3JELFlBQVksR0FBNEM7UUFDdEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSGIsYUFBUSxHQUF5QixFQUFFLENBQUM7UUFJbEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQ1IsR0FBRyxRQUE4QjtRQUVqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7UUFDdEQsVUFBVSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDL0IsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUEyQjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSTtZQUFFLE1BQU0sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9raWJhbmEvYnVpbGRlcnMvS2liYW5hSW5kZXhCdWlsZGVyQ29sbGVjdGlvblxuICogQHN1bW1hcnkgQ29sbGVjdGlvbiBidWlsZGVyIGZvciBtdWx0aXBsZSBLaWJhbmEgZGF0YSB2aWV3cy5cbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBhIGZsdWVudCBjaGFpbiBmb3IgYnVpbGRpbmcgbXVsdGlwbGVcbiAqIGBLaWJhbmFEYXRhVmlld0NvbmZpZ2Agb2JqZWN0cyBpbiBvbmUgY2FsbCwgZGlyZWN0bHkgY29uc3VtYWJsZSBieVxuICogYEtpYmFuYURhdGFWaWV3U2VydmljZS5jcmVhdGVEYXRhVmlld3MoKWAuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5pbXBvcnQgeyBLaWJhbmFEYXRhVmlld0NvbmZpZyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgS2liYW5hSW5kZXhCdWlsZGVyIH0gZnJvbSBcIi4vS2liYW5hSW5kZXhCdWlsZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBLaWJhbmFJbmRleEJ1aWxkZXJDb2xsZWN0aW9uIGV4dGVuZHMgTW9kZWwge1xuICBidWlsZGVyczogS2liYW5hSW5kZXhCdWlsZGVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihhcmc/OiBNb2RlbEFyZzxLaWJhbmFJbmRleEJ1aWxkZXJDb2xsZWN0aW9uPikge1xuICAgIHN1cGVyKGFyZyk7XG4gICAgTW9kZWwuZnJvbU1vZGVsKHRoaXMsIGFyZyk7XG4gIH1cblxuICBzdGF0aWMgZm9yKFxuICAgIC4uLmJ1aWxkZXJzOiBLaWJhbmFJbmRleEJ1aWxkZXJbXVxuICApOiBLaWJhbmFJbmRleEJ1aWxkZXJDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IEtpYmFuYUluZGV4QnVpbGRlckNvbGxlY3Rpb24oKTtcbiAgICBjb2xsZWN0aW9uLmJ1aWxkZXJzID0gYnVpbGRlcnM7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH1cblxuICBhZGQoYnVpbGRlcjogS2liYW5hSW5kZXhCdWlsZGVyKTogdGhpcyB7XG4gICAgdGhpcy5idWlsZGVycy5wdXNoKGJ1aWxkZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYnVpbGQoKTogS2liYW5hRGF0YVZpZXdDb25maWdbXSB7XG4gICAgY29uc3QgZXJycyA9IHRoaXMuaGFzRXJyb3JzKCk7XG4gICAgaWYgKGVycnMpIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJycyk7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRlcnMubWFwKChiKSA9PiBiLmJ1aWxkKCkpO1xuICB9XG59XG4iXX0=