@veloceapps/sdk 11.0.0-7 → 11.0.0-70

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 (177) hide show
  1. package/cms/cms.actions.d.ts +92 -29
  2. package/cms/components/element-renderer/element-renderer.component.d.ts +3 -10
  3. package/cms/services/element-context.service.d.ts +0 -1
  4. package/cms/types/common.types.d.ts +2 -0
  5. package/cms/types/index.d.ts +0 -1
  6. package/cms/utils/path.utils.d.ts +1 -2
  7. package/cms/vendor-map.d.ts +17 -40
  8. package/core/index.d.ts +1 -1
  9. package/core/modules/configuration/index.d.ts +3 -4
  10. package/core/modules/configuration/services/configuration-runtime.service.d.ts +8 -19
  11. package/core/modules/configuration/services/configuration-state.service.d.ts +8 -8
  12. package/core/modules/configuration/services/configuration.service.d.ts +23 -47
  13. package/core/modules/configuration/services/test-mode-configuration.service.d.ts +23 -0
  14. package/core/modules/configuration/types/configuration-runtime.types.d.ts +0 -5
  15. package/core/modules/configuration/types/configuration.types.d.ts +4 -2
  16. package/core/modules/configuration/types/index.d.ts +2 -0
  17. package/core/modules/flow-configuration/index.d.ts +0 -3
  18. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +11 -38
  19. package/core/operators/filter-successful-execute.operator.d.ts +3 -0
  20. package/core/operators/index.d.ts +1 -0
  21. package/core/services/catalog-products.service.d.ts +11 -0
  22. package/core/services/flow-info.service.d.ts +27 -12
  23. package/core/services/flow-state-configuration.service.d.ts +2 -8
  24. package/core/services/flow-state.service.d.ts +13 -22
  25. package/core/services/index.d.ts +3 -3
  26. package/core/services/integration.state.d.ts +1 -1
  27. package/core/services/product-images.service.d.ts +3 -3
  28. package/core/services/runtime-settings.service.d.ts +1 -1
  29. package/core/services/sales-transaction.service.d.ts +27 -0
  30. package/core/types/flow-customization.types.d.ts +2 -2
  31. package/core/types/flow-state.types.d.ts +2 -2
  32. package/core/types/index.d.ts +0 -1
  33. package/core/utils/index.d.ts +2 -2
  34. package/core/utils/transaction-item.utils.d.ts +7 -0
  35. package/core/utils/transaction-item.worker.d.ts +8 -0
  36. package/esm2020/cms/cms.actions.mjs +93 -71
  37. package/esm2020/cms/cms.default.mjs +2 -3
  38. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +7 -64
  39. package/esm2020/cms/components/preview/preview.component.mjs +3 -3
  40. package/esm2020/cms/services/element-context.service.mjs +1 -1
  41. package/esm2020/cms/types/common.types.mjs +1 -1
  42. package/esm2020/cms/types/index.mjs +1 -2
  43. package/esm2020/cms/utils/element.utils.mjs +3 -3
  44. package/esm2020/cms/utils/elements-resolver.mjs +16 -5
  45. package/esm2020/cms/utils/path.utils.mjs +1 -10
  46. package/esm2020/cms/vendor-map.mjs +17 -18
  47. package/esm2020/core/core.module.mjs +7 -7
  48. package/esm2020/core/index.mjs +2 -2
  49. package/esm2020/core/modules/configuration/configuration.module.mjs +14 -4
  50. package/esm2020/core/modules/configuration/index.mjs +4 -5
  51. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +16 -101
  52. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +65 -77
  53. package/esm2020/core/modules/configuration/services/configuration.service.mjs +104 -223
  54. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +74 -0
  55. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +1 -1
  56. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  57. package/esm2020/core/modules/configuration/types/index.mjs +3 -0
  58. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +3 -4
  59. package/esm2020/core/modules/flow-configuration/index.mjs +1 -4
  60. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +44 -128
  61. package/esm2020/core/operators/filter-successful-execute.operator.mjs +5 -0
  62. package/esm2020/core/operators/index.mjs +2 -0
  63. package/esm2020/core/services/catalog-products.service.mjs +25 -0
  64. package/esm2020/core/services/flow-info.service.mjs +82 -31
  65. package/esm2020/core/services/flow-state-configuration.service.mjs +10 -25
  66. package/esm2020/core/services/flow-state.service.mjs +60 -172
  67. package/esm2020/core/services/index.mjs +4 -4
  68. package/esm2020/core/services/integration.state.mjs +2 -2
  69. package/esm2020/core/services/product-images.service.mjs +8 -8
  70. package/esm2020/core/services/runtime-settings.service.mjs +3 -3
  71. package/esm2020/core/services/sales-transaction.service.mjs +62 -0
  72. package/esm2020/core/types/flow-customization.types.mjs +1 -1
  73. package/esm2020/core/types/flow-state.types.mjs +1 -1
  74. package/esm2020/core/types/index.mjs +1 -2
  75. package/esm2020/core/utils/index.mjs +3 -3
  76. package/esm2020/core/utils/transaction-item.utils.mjs +60 -0
  77. package/esm2020/core/utils/transaction-item.worker.mjs +16 -0
  78. package/esm2020/src/components/flow-header/flow-header.component.mjs +8 -12
  79. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +8 -12
  80. package/esm2020/src/flow-routing.module.mjs +12 -41
  81. package/esm2020/src/flow.component.mjs +5 -5
  82. package/esm2020/src/guards/flow.guard.mjs +13 -14
  83. package/esm2020/src/guards/product-unload.guard.mjs +7 -9
  84. package/esm2020/src/index.mjs +1 -3
  85. package/esm2020/src/pages/assets/assets.component.mjs +8 -9
  86. package/esm2020/src/pages/catalog/catalog.component.mjs +8 -9
  87. package/esm2020/src/pages/debug/debug.component.mjs +14 -23
  88. package/esm2020/src/pages/product/product.component.mjs +12 -89
  89. package/esm2020/src/pages/product/product.module.mjs +5 -5
  90. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +5 -6
  91. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +8 -9
  92. package/esm2020/src/resolvers/flow.resolver.mjs +10 -18
  93. package/esm2020/src/resolvers/pcm-model.resolver.mjs +12 -0
  94. package/esm2020/src/resolvers/sales-transaction.resolver.mjs +64 -0
  95. package/esm2020/src/resolvers/ui-definition.resolver.mjs +42 -0
  96. package/esm2020/src/services/flow-dialog.service.mjs +8 -8
  97. package/esm2020/src/services/flow-router.service.mjs +16 -33
  98. package/esm2020/src/services/flow.service.mjs +13 -54
  99. package/esm2020/src/types/index.mjs +2 -3
  100. package/esm2020/src/types/route.types.mjs +1 -1
  101. package/fesm2015/veloceapps-sdk-cms.mjs +138 -275
  102. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  103. package/fesm2015/veloceapps-sdk-core.mjs +808 -1658
  104. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  105. package/fesm2015/veloceapps-sdk.mjs +188 -801
  106. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  107. package/fesm2020/veloceapps-sdk-cms.mjs +134 -267
  108. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  109. package/fesm2020/veloceapps-sdk-core.mjs +867 -1738
  110. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  111. package/fesm2020/veloceapps-sdk.mjs +188 -795
  112. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  113. package/package.json +1 -1
  114. package/src/components/flow-header/flow-header.component.d.ts +3 -3
  115. package/src/components/guided-selling/guided-selling.component.d.ts +3 -3
  116. package/src/flow-routing.module.d.ts +1 -2
  117. package/src/flow.component.d.ts +2 -2
  118. package/src/guards/product-unload.guard.d.ts +5 -6
  119. package/src/index.d.ts +0 -2
  120. package/src/pages/assets/assets.component.d.ts +3 -3
  121. package/src/pages/catalog/catalog.component.d.ts +3 -3
  122. package/src/pages/debug/debug.component.d.ts +2 -5
  123. package/src/pages/product/product.component.d.ts +5 -14
  124. package/src/pages/product/product.module.d.ts +1 -1
  125. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -3
  126. package/src/pages/shopping-cart/shopping-cart.component.d.ts +3 -3
  127. package/src/resolvers/flow.resolver.d.ts +5 -6
  128. package/src/resolvers/pcm-model.resolver.d.ts +3 -0
  129. package/src/resolvers/sales-transaction.resolver.d.ts +18 -0
  130. package/src/resolvers/ui-definition.resolver.d.ts +3 -0
  131. package/src/services/flow-dialog.service.d.ts +5 -4
  132. package/src/services/flow-router.service.d.ts +4 -6
  133. package/src/services/flow.service.d.ts +2 -7
  134. package/src/types/index.d.ts +1 -2
  135. package/src/types/route.types.d.ts +0 -5
  136. package/cms/plugins/configuration.plugin.d.ts +0 -23
  137. package/cms/types/configuration.types.d.ts +0 -21
  138. package/core/modules/configuration/helpers.d.ts +0 -6
  139. package/core/modules/configuration/services/runtime-context.service.d.ts +0 -12
  140. package/core/modules/flow-configuration/services/flow-update.service.d.ts +0 -13
  141. package/core/modules/flow-configuration/types/update.types.d.ts +0 -12
  142. package/core/services/context.service.d.ts +0 -23
  143. package/core/services/quote-draft.service.d.ts +0 -50
  144. package/core/types/runtime.types.d.ts +0 -30
  145. package/core/utils/line-item.utils.d.ts +0 -25
  146. package/core/utils/line-item.worker.d.ts +0 -9
  147. package/esm2020/cms/plugins/configuration.plugin.mjs +0 -109
  148. package/esm2020/cms/types/configuration.types.mjs +0 -2
  149. package/esm2020/core/modules/configuration/helpers.mjs +0 -73
  150. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +0 -45
  151. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +0 -138
  152. package/esm2020/core/modules/flow-configuration/types/update.types.mjs +0 -2
  153. package/esm2020/core/services/context.service.mjs +0 -91
  154. package/esm2020/core/services/quote-draft.service.mjs +0 -192
  155. package/esm2020/core/types/runtime.types.mjs +0 -16
  156. package/esm2020/core/utils/line-item.utils.mjs +0 -187
  157. package/esm2020/core/utils/line-item.worker.mjs +0 -19
  158. package/esm2020/src/guards/context.guard.mjs +0 -91
  159. package/esm2020/src/guards/index.mjs +0 -2
  160. package/esm2020/src/pages/remote/remote.component.mjs +0 -342
  161. package/esm2020/src/pages/remote/remote.module.mjs +0 -20
  162. package/esm2020/src/pages/remote/remote.types.mjs +0 -2
  163. package/esm2020/src/resolvers/quote.resolver.mjs +0 -82
  164. package/esm2020/src/types/context-route.types.mjs +0 -2
  165. package/esm2020/src/types/metrics.types.mjs +0 -2
  166. package/esm2020/src/utils/flow.utils.mjs +0 -25
  167. package/esm2020/src/utils/index.mjs +0 -2
  168. package/src/guards/context.guard.d.ts +0 -19
  169. package/src/guards/index.d.ts +0 -1
  170. package/src/pages/remote/remote.component.d.ts +0 -46
  171. package/src/pages/remote/remote.module.d.ts +0 -10
  172. package/src/pages/remote/remote.types.d.ts +0 -4
  173. package/src/resolvers/quote.resolver.d.ts +0 -19
  174. package/src/types/context-route.types.d.ts +0 -5
  175. package/src/types/metrics.types.d.ts +0 -5
  176. package/src/utils/flow.utils.d.ts +0 -8
  177. package/src/utils/index.d.ts +0 -1
@@ -1,50 +1,23 @@
1
- import { ProceduresApiService } from '@veloceapps/api';
2
- import { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';
3
- import { Dictionary } from 'lodash';
1
+ import { OrchestrationsApiService } from '@veloceapps/api/v2';
2
+ import { TransactionContext } from '@veloceapps/core';
4
3
  import { Observable } from 'rxjs';
5
- import { ContextService } from '../../../services/context.service';
6
- import { QuoteDraftService } from '../../../services/quote-draft.service';
7
- import { ExternalConfigurationProps } from '../../configuration';
8
- import { ConfigurationService } from '../../configuration/services/configuration.service';
9
- import { FlowUpdateParams } from '../types/update.types';
10
- import { FlowUpdateService } from './flow-update.service';
11
4
  import { FlowInfoService } from '../../../services';
5
+ import { SalesTransactionService } from '../../../services/sales-transaction.service';
12
6
  import * as i0 from "@angular/core";
13
7
  export declare class FlowConfigurationService {
14
- private proceduresApiService;
15
- private contextService;
16
- private quoteDraftService;
17
- private updateService;
18
- private configurationService;
8
+ private orchestrationsApiService;
9
+ private salesTransactionService;
19
10
  private flowInfoService;
20
- /**
21
- * An event being fired when QuoteDraft was updated
22
- */
23
11
  updated$: Observable<void>;
24
12
  private updatedSubj$;
25
- constructor(proceduresApiService: ProceduresApiService, contextService: ContextService, quoteDraftService: QuoteDraftService, updateService: FlowUpdateService, configurationService: ConfigurationService, flowInfoService: FlowInfoService);
26
- calculate$(quoteDraft: QuoteDraft): Observable<void>;
27
- calculate(quoteDraft: QuoteDraft): void;
28
- update$(updates: FlowUpdateParams[]): Observable<QuoteDraft | null>;
29
- update(updates: FlowUpdateParams[]): void;
30
- revert$(lineItemId: string): Observable<QuoteDraft | null>;
31
- revert(lineItemId: string): void;
32
- delete$(ids: string[]): Observable<QuoteDraft | null>;
13
+ constructor(orchestrationsApiService: OrchestrationsApiService, salesTransactionService: SalesTransactionService, flowInfoService: FlowInfoService);
14
+ calculate$(state: TransactionContext): Observable<void>;
15
+ calculate(state: TransactionContext): void;
16
+ revert$(transactionItemId: string): Observable<TransactionContext | null>;
17
+ revert(transactionItemId: string): void;
18
+ delete$(ids: string[]): Observable<TransactionContext | null>;
33
19
  delete(ids: string[]): void;
34
- addTerm$(term: LineItem): Observable<QuoteDraft | null>;
35
- addToCart$(props: ExternalConfigurationProps): Observable<QuoteDraft | null>;
36
- get(): Observable<LineItem[]>;
37
- getSnapshot(): LineItem[];
38
- get charges$(): Observable<Dictionary<Charge>>;
39
- get pricePlans$(): Observable<Dictionary<CompiledPricePlan>>;
40
- get activeMetrics$(): Observable<MetricRule[]>;
41
- get chargesSnapshot(): Dictionary<Charge>;
42
- get pricePlansSnapshot(): Dictionary<CompiledPricePlan>;
43
- get activeMetricsSnapshot(): MetricRule[];
44
- get contextSnapshot(): ConfigurationContext;
45
- get context$(): Observable<ConfigurationContext>;
46
20
  private handleErrorAndBounceBack;
47
- private extendedApply$;
48
21
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowConfigurationService, never>;
49
22
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowConfigurationService>;
50
23
  }
@@ -0,0 +1,3 @@
1
+ import { FlowStateSelectorResponse } from '@veloceapps/core';
2
+ import { Observable } from 'rxjs';
3
+ export declare function filterSuccessfulExecute<T>(): (source: Observable<FlowStateSelectorResponse<T>>) => Observable<T>;
@@ -0,0 +1 @@
1
+ export * from './filter-successful-execute.operator';
@@ -0,0 +1,11 @@
1
+ import { CatalogProducts } from '@veloceapps/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CatalogProductsService {
4
+ private stateSubj$;
5
+ state$: import("rxjs").Observable<CatalogProducts>;
6
+ get state(): CatalogProducts | null;
7
+ reset(): void;
8
+ setState(state: CatalogProducts): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<CatalogProductsService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<CatalogProductsService>;
11
+ }
@@ -1,29 +1,44 @@
1
1
  import { Params } from '@angular/router';
2
- import { FlowsApiService, UITemplatesApiService } from '@veloceapps/api';
3
- import { Flow, UITemplate, UITemplateType } from '@veloceapps/core';
2
+ import { UITemplatesAdminApiService } from '@veloceapps/api/v2';
3
+ import { Flow, FlowContext, UITemplate, UITemplateType } from '@veloceapps/core';
4
4
  import { Observable } from 'rxjs';
5
- import { FlowCustomization } from '../types';
5
+ import { FlowCustomization } from '../types/flow-customization.types';
6
+ import { RuntimeSettingsService } from './runtime-settings.service';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class FlowInfoService {
8
- private flowsApiService;
9
- private templatesApiService;
9
+ private runtimeSettingsService;
10
+ private templatesAdminApiService;
10
11
  private customizationService?;
11
12
  flow$: Observable<Flow | null>;
12
- params?: Params;
13
- templates: {
13
+ templates$: Observable<{
14
14
  [key in UITemplateType]?: UITemplate;
15
+ }>;
16
+ get flow(): Flow;
17
+ get isFlowInitialized(): boolean;
18
+ get context(): FlowContext;
19
+ get context$(): Observable<FlowContext>;
20
+ get templates(): {
21
+ SHOPPING_CART?: UITemplate | undefined;
22
+ CONFIGURATION_UI?: UITemplate | undefined;
23
+ CATALOG?: UITemplate | undefined;
24
+ GUIDED_SELLING?: UITemplate | undefined;
25
+ FLOW_ENGINE?: UITemplate | undefined;
26
+ FLOW_HEADER?: UITemplate | undefined;
15
27
  };
16
- get flow(): Flow | null;
17
- set flow(value: Flow | null);
18
- get isLegacy(): boolean;
28
+ get isFlowEngineInitialized$(): Observable<boolean>;
19
29
  get isStateful(): boolean;
20
30
  private readonly defaultTemplates;
21
31
  private flowSubj$;
22
- constructor(flowsApiService: FlowsApiService, templatesApiService: UITemplatesApiService, customizationService?: FlowCustomization | undefined);
32
+ private templatesSubj$;
33
+ private contextSubj$;
34
+ constructor(runtimeSettingsService: RuntimeSettingsService, templatesAdminApiService: UITemplatesAdminApiService, customizationService?: FlowCustomization | undefined);
35
+ reset(): void;
23
36
  init$(flowId: string, routeQueryParams: Params): Observable<void>;
24
- cleanup(): void;
37
+ updateContext(update: Partial<FlowContext>): void;
38
+ private initFlow$;
25
39
  private initFlowTemplates$;
26
40
  private remapTemplateName;
41
+ private getFlowContextMode;
27
42
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowInfoService, [null, null, { optional: true; }]>;
28
43
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowInfoService>;
29
44
  }
@@ -1,18 +1,12 @@
1
- import { FlowStateApiService } from '@veloceapps/api';
2
1
  import { Observable } from 'rxjs';
3
- import { NewConfigurationProps } from '../modules/configuration';
4
- import { FlowConfigurationService } from '../modules/flow-configuration';
2
+ import { NewConfigurationProps } from '../modules/configuration/types/configuration.types';
5
3
  import { FlowInfoService } from './flow-info.service';
6
4
  import { FlowStateService } from './flow-state.service';
7
5
  import * as i0 from "@angular/core";
8
6
  export declare class FlowStateConfigurationService {
9
7
  private flowInfoService;
10
- private flowConfigurationService;
11
- private flowStateApiService;
12
8
  private flowStateService;
13
- private configurationStateId$;
14
- constructor(flowInfoService: FlowInfoService, flowConfigurationService: FlowConfigurationService, flowStateApiService: FlowStateApiService, flowStateService: FlowStateService);
15
- get configurationStateId(): string | null;
9
+ constructor(flowInfoService: FlowInfoService, flowStateService: FlowStateService);
16
10
  addToCart$(props: NewConfigurationProps): Observable<void>;
17
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowStateConfigurationService, never>;
18
12
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowStateConfigurationService>;
@@ -1,29 +1,23 @@
1
- import { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';
1
+ import { FlowStateApiService } from '@veloceapps/api';
2
+ import { ConfigurationProcessorsApiService, SalesTransactionApiService } from '@veloceapps/api/v2';
2
3
  import { ToastService } from '@veloceapps/components';
3
- import { Charge, CompiledPricePlan, FlowStateExecutionRequest, FlowStateExecutionRequestDTO, FlowStateExecutionResult, FlowStateSelectorResponse, MetricRule, UITemplateType } from '@veloceapps/core';
4
- import { Dictionary } from 'lodash';
4
+ import { FlowStateExecutionRequest, FlowStateExecutionRequestDTO, FlowStateExecutionResult, FlowStateSelectorResponse, UITemplateType } from '@veloceapps/core';
5
5
  import { Observable } from 'rxjs';
6
6
  import { FlowConfigurationService } from '../modules';
7
7
  import { FlowCustomization } from '../types/flow-customization.types';
8
8
  import { FlowStateSubscriptionOptions } from '../types/flow-state.types';
9
- import { ContextService } from './context.service';
10
9
  import { FlowInfoService } from './flow-info.service';
11
- import { QuoteDraftService } from './quote-draft.service';
10
+ import { SalesTransactionService } from './sales-transaction.service';
12
11
  import * as i0 from "@angular/core";
13
12
  export declare class FlowStateService {
14
- private contextService;
15
- private quoteDraftService;
16
- private flowInfoService;
17
13
  private flowConfiguration;
18
- private processorsApiService;
14
+ private flowInfoService;
19
15
  private flowStateApiService;
20
- private quoteApiService;
16
+ private processorsApiService;
17
+ private salesTransactionApiService;
18
+ private salesTransactionService;
21
19
  private toastService;
22
20
  private customizationService?;
23
- charges$: Observable<Dictionary<Charge>>;
24
- pricePlans$: Observable<Dictionary<CompiledPricePlan>>;
25
- activeMetrics$: Observable<MetricRule[]>;
26
- isPriceListLocked$: Observable<boolean>;
27
21
  private readonly NOT_INITIALIZED;
28
22
  private readonly EXECUTION_BUFFER_TIME;
29
23
  private executedFunctions;
@@ -37,9 +31,9 @@ export declare class FlowStateService {
37
31
  private statefulRequestStream$;
38
32
  private statefulExecutionRequest$;
39
33
  private cleanup$;
40
- constructor(contextService: ContextService, quoteDraftService: QuoteDraftService, flowInfoService: FlowInfoService, flowConfiguration: FlowConfigurationService, processorsApiService: ConfigurationProcessorsApiService, flowStateApiService: FlowStateApiService, quoteApiService: QuoteApiService, toastService: ToastService, customizationService?: FlowCustomization | undefined);
34
+ constructor(flowConfiguration: FlowConfigurationService, flowInfoService: FlowInfoService, flowStateApiService: FlowStateApiService, processorsApiService: ConfigurationProcessorsApiService, salesTransactionApiService: SalesTransactionApiService, salesTransactionService: SalesTransactionService, toastService: ToastService, customizationService?: FlowCustomization | undefined);
41
35
  init$(): Observable<void>;
42
- cleanup(): void;
36
+ reset(): void;
43
37
  get hasUnsavedChanges(): boolean;
44
38
  get stateId(): string | null;
45
39
  get isExecutionInProgress$(): Observable<boolean>;
@@ -50,10 +44,10 @@ export declare class FlowStateService {
50
44
  select$<Response = unknown>(scope: UITemplateType, selectorName: string, inputData?: unknown): Observable<FlowStateSelectorResponse<Response>>;
51
45
  subscribe$<Response = unknown>(scope: UITemplateType, selectorName: string, inputData?: unknown, options?: FlowStateSubscriptionOptions): Observable<FlowStateSelectorResponse<Response>>;
52
46
  save$(): Observable<{
53
- quoteId: string;
47
+ id: string;
54
48
  }>;
55
49
  submit$(): Observable<{
56
- quoteId: string;
50
+ id: string;
57
51
  }>;
58
52
  getFlowStore(): Record<string, unknown>;
59
53
  private getOwnerIdByScope;
@@ -65,18 +59,15 @@ export declare class FlowStateService {
65
59
  private initBufferedRequest$;
66
60
  private executeStateful$;
67
61
  private initStateless$;
68
- private calculate$;
69
62
  private executeStateless$;
70
63
  private executeStatelessActions;
71
64
  private executeStatelessSelectors;
72
- private getFlowSafe;
73
65
  private initProcessors$;
74
66
  private executeActionScript;
75
67
  private executeSelectorScript;
76
68
  private executeProcessorScript;
77
69
  private generateRequestId;
78
- private getDefaultExecutionRequestDTO;
79
70
  private checkStatefulChanges;
80
- static ɵfac: i0.ɵɵFactoryDeclaration<FlowStateService, [null, null, null, null, null, null, null, null, { optional: true; }]>;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowStateService, [null, null, null, null, null, null, null, { optional: true; }]>;
81
72
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowStateService>;
82
73
  }
@@ -1,8 +1,8 @@
1
- export * from './context.service';
2
1
  export * from './flow-info.service';
3
- export * from './flow-state.service';
4
2
  export * from './flow-state-configuration.service';
3
+ export * from './flow-state.service';
5
4
  export * from './integration.state';
6
5
  export * from './product-images.service';
7
- export * from './quote-draft.service';
8
6
  export * from './runtime-settings.service';
7
+ export * from './sales-transaction.service';
8
+ export * from './catalog-products.service';
@@ -10,7 +10,7 @@ export declare class IntegrationState<S = IntegrationStateModel> {
10
10
  dispatch(action: IntegrationAction): void;
11
11
  listen$<P = any>(actionType: string): Observable<P>;
12
12
  listenAll$<T extends IntegrationAction>(): Observable<T>;
13
- clear(): void;
13
+ reset(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<IntegrationState<any>, never>;
15
15
  static ɵprov: i0.ɵɵInjectableDeclaration<IntegrationState<any>>;
16
16
  }
@@ -1,10 +1,10 @@
1
- import { ProductApiService } from '@veloceapps/api';
1
+ import { ProductsAdminApiService } from '@veloceapps/api/v2';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class ProductImagesService {
5
- private productApiService;
5
+ private productsAdminApiService;
6
6
  private imagesMap$;
7
- constructor(productApiService: ProductApiService);
7
+ constructor(productsAdminApiService: ProductsAdminApiService);
8
8
  getImageUrl$(productId: string): Observable<string | null>;
9
9
  private fetchProductImage;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<ProductImagesService, never>;
@@ -1,4 +1,4 @@
1
- import { ConfigurationSettingsApiService } from '@veloceapps/api';
1
+ import { ConfigurationSettingsApiService } from '@veloceapps/api/v2';
2
2
  import { RuntimeConfigurationSettings, RuntimeCurrencySettings, ShoppingCartSetting } from '@veloceapps/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import { FormattingSettings } from '../types';
@@ -0,0 +1,27 @@
1
+ import { SalesTransactionApiService } from '@veloceapps/api/v2';
2
+ import { SalesTransactionItem, TransactionContext } from '@veloceapps/core';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SalesTransactionService {
6
+ private salesTransactionApiService;
7
+ private stateSubj$;
8
+ private isInitializedSubj$;
9
+ private hasUnsavedChangesSubj$;
10
+ private initialState;
11
+ hasUnsavedChanges$: Observable<boolean>;
12
+ state$: Observable<TransactionContext>;
13
+ get isInitialized$(): Observable<boolean>;
14
+ get isInitialized(): boolean;
15
+ set hasUnsavedChanges(value: boolean);
16
+ get hasUnsavedChanges(): boolean;
17
+ get state(): TransactionContext | null;
18
+ get hasProducts(): boolean;
19
+ constructor(salesTransactionApiService: SalesTransactionApiService);
20
+ init(headerId: string, params: Record<string, string>): Observable<TransactionContext>;
21
+ finalizeInit(): void;
22
+ reset(): void;
23
+ getInitialState(): SalesTransactionItem[];
24
+ setState(state: TransactionContext): void;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<SalesTransactionService, never>;
26
+ static ɵprov: i0.ɵɵInjectableDeclaration<SalesTransactionService>;
27
+ }
@@ -1,9 +1,9 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ConfigurationProcessor, TemplateComponentWithAttachments, UIDefinitionContainer, UITemplate } from '@veloceapps/core';
2
+ import { ConfigurationProcessor, FlowContext, TemplateComponentWithAttachments, UIDefinitionContainer, UITemplate } from '@veloceapps/core';
3
3
  import { Observable } from 'rxjs';
4
4
  export declare const FLOW_CUSTOMIZATION: InjectionToken<FlowCustomization>;
5
5
  export interface FlowCustomization {
6
- getUiDefinition?(productId: string): Observable<UIDefinitionContainer | null>;
6
+ getUiDefinition?(flowContext: FlowContext): Observable<UIDefinitionContainer | null>;
7
7
  getTemplates?(): Observable<UITemplate[]>;
8
8
  getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;
9
9
  getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;
@@ -1,4 +1,4 @@
1
- import { AccountAssetsState } from '@veloceapps/core';
1
+ import { SalesTransactionItem } from '@veloceapps/core';
2
2
  export interface FlowStateSubscriptionOptions {
3
3
  /**
4
4
  * When 'true', don't execute action to retrieve current value
@@ -7,6 +7,6 @@ export interface FlowStateSubscriptionOptions {
7
7
  trackedChanges?: boolean;
8
8
  }
9
9
  export interface FlowStore {
10
- assets?: AccountAssetsState;
10
+ assets?: SalesTransactionItem[];
11
11
  [key: string]: unknown;
12
12
  }
@@ -2,5 +2,4 @@ export * from './flow-customization.types';
2
2
  export * from './formatting-settings.types';
3
3
  export * from './integration.types';
4
4
  export * from './pipe.types';
5
- export * from './runtime.types';
6
5
  export * from './ui-definition.types';
@@ -1,3 +1,3 @@
1
- export * from './line-item.utils';
2
- export * from './line-item.worker';
1
+ export * from './transaction-item.utils';
2
+ export * from './transaction-item.worker';
3
3
  export * from './ui-definition.utils';
@@ -0,0 +1,7 @@
1
+ import { SalesTransactionItem } from '@veloceapps/core';
2
+ export declare const findTransactionItem: (id: string, items: SalesTransactionItem[]) => SalesTransactionItem | undefined;
3
+ export declare const findTransactionItemWithComparator: (items: SalesTransactionItem[], comparator: (ti: SalesTransactionItem) => boolean) => SalesTransactionItem | undefined;
4
+ export declare const insertTransactionItem: (item: SalesTransactionItem, parentId: string, toInsert: SalesTransactionItem) => SalesTransactionItem;
5
+ export declare const removeTransactionItem: (item: SalesTransactionItem, idToRemove: string) => SalesTransactionItem;
6
+ export declare const replaceTransactionItem: (item: SalesTransactionItem, replaceTo: SalesTransactionItem) => SalesTransactionItem;
7
+ export declare const generateTransactionItem: (productId: string) => SalesTransactionItem;
@@ -0,0 +1,8 @@
1
+ import { SalesTransactionItem } from '@veloceapps/core';
2
+ export declare class TransactionItemWorker {
3
+ ti: SalesTransactionItem;
4
+ constructor(src: SalesTransactionItem);
5
+ insert(parentId: string, toInsert: SalesTransactionItem): TransactionItemWorker;
6
+ remove(id: string): TransactionItemWorker;
7
+ replace(toReplace: SalesTransactionItem): TransactionItemWorker;
8
+ }
@@ -15,58 +15,79 @@ export var FlowAction;
15
15
  FlowAction.SUBMIT_GUIDED_SELLING = '[FLOW]_SUBMIT_GUIDED_SELLING';
16
16
  FlowAction.CLOSE_GUIDED_SELLING = '[FLOW]_CLOSE_GUIDED_SELLING';
17
17
  FlowAction.OPEN_DIALOG = '[FLOW]_OPEN_DIALOG';
18
- FlowAction.ConfigureProductAction = ({ lineItemId, productId, }) => ({
19
- type: FlowAction.FLOW_CONFIGURE_PRODUCT,
20
- payload: { lineItemId, productId },
21
- });
22
- FlowAction.NavigateBackAction = () => ({
23
- type: FlowAction.FLOW_NAVIGATE_BACK,
24
- });
25
- FlowAction.NavigateToAction = (path, productId, lineItemId) => ({
18
+ FlowAction.ConfigureProductAction = ({ transactionItemId, productId, }) => {
19
+ return {
20
+ type: FlowAction.FLOW_CONFIGURE_PRODUCT,
21
+ payload: { transactionItemId, productId },
22
+ };
23
+ };
24
+ FlowAction.NavigateBackAction = () => {
25
+ return {
26
+ type: FlowAction.FLOW_NAVIGATE_BACK,
27
+ };
28
+ };
29
+ FlowAction.NavigateToAction = (path, productId, transactionItemId) => ({
26
30
  type: FlowAction.FLOW_NAVIGATE_TO,
27
- payload: { path, productId, lineItemId },
31
+ payload: { path, productId, transactionItemId },
28
32
  });
29
33
  FlowAction.NavigateToCatalogAction = () => ({
30
34
  type: FlowAction.FLOW_NAVIGATE_TO_CATALOG,
31
35
  });
32
- FlowAction.NavigateToShoppingCartAction = () => ({
33
- type: FlowAction.FLOW_NAVIGATE_TO_SHOPPING_CART,
34
- });
35
- FlowAction.ApplyProductConfigurationAction = () => ({
36
- type: FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION,
37
- });
38
- FlowAction.RemoteApplyAction = () => ({
39
- type: FlowAction.REMOTE_APPLY,
40
- });
41
- FlowAction.RemoteCancelAction = () => ({
42
- type: FlowAction.REMOTE_CANCEL,
43
- });
44
- FlowAction.SwitchObjectAction = (payload) => ({
45
- type: FlowAction.FLOW_SWITCH_OBJECT,
46
- payload,
47
- });
48
- FlowAction.OpenGuidedSelling = (payload) => ({
49
- type: FlowAction.OPEN_GUIDED_SELLING,
50
- payload,
51
- });
52
- FlowAction.CloseGuidedSelling = (payload) => ({
53
- type: FlowAction.CLOSE_GUIDED_SELLING,
54
- payload,
55
- });
56
- FlowAction.SubmitGuidedSelling = (payload) => ({
57
- type: FlowAction.SUBMIT_GUIDED_SELLING,
58
- payload,
59
- });
60
- FlowAction.OpenDialog = (dialog) => ({
61
- type: FlowAction.OPEN_DIALOG,
62
- payload: { dialog },
63
- });
36
+ FlowAction.NavigateToShoppingCartAction = () => {
37
+ return {
38
+ type: FlowAction.FLOW_NAVIGATE_TO_SHOPPING_CART,
39
+ };
40
+ };
41
+ FlowAction.ApplyProductConfigurationAction = () => {
42
+ return {
43
+ type: FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION,
44
+ };
45
+ };
46
+ FlowAction.RemoteApplyAction = () => {
47
+ return {
48
+ type: FlowAction.REMOTE_APPLY,
49
+ };
50
+ };
51
+ FlowAction.RemoteCancelAction = () => {
52
+ return {
53
+ type: FlowAction.REMOTE_CANCEL,
54
+ };
55
+ };
56
+ FlowAction.SwitchObjectAction = (payload) => {
57
+ return {
58
+ type: FlowAction.FLOW_SWITCH_OBJECT,
59
+ payload,
60
+ };
61
+ };
62
+ FlowAction.OpenGuidedSelling = (payload) => {
63
+ return {
64
+ type: FlowAction.OPEN_GUIDED_SELLING,
65
+ payload,
66
+ };
67
+ };
68
+ FlowAction.CloseGuidedSelling = (payload) => {
69
+ return {
70
+ type: FlowAction.CLOSE_GUIDED_SELLING,
71
+ payload,
72
+ };
73
+ };
74
+ FlowAction.SubmitGuidedSelling = (payload) => {
75
+ return {
76
+ type: FlowAction.SUBMIT_GUIDED_SELLING,
77
+ payload,
78
+ };
79
+ };
80
+ FlowAction.OpenDialog = (dialog) => {
81
+ return {
82
+ type: FlowAction.OPEN_DIALOG,
83
+ payload: { dialog },
84
+ };
85
+ };
64
86
  })(FlowAction || (FlowAction = {}));
65
87
  export var CmsAction;
66
88
  (function (CmsAction) {
67
89
  CmsAction.GO_TO_PAGE = '[CMS]_GO_TO_PAGE';
68
90
  CmsAction.UPDATE_CUSTOMIZATION = '[CMS]_UPDATE_CUSTOMIZATION';
69
- CmsAction.EMIT_CUSTOMIZATION_CHANGES = '[CMS]_EMIT_CUSTOMIZATION_CHANGES';
70
91
  CmsAction.SHOW_OVERLAY = '[CMS]_SHOW_OVERLAY';
71
92
  CmsAction.HIDE_OVERLAY = '[CMS]_HIDE_OVERLAY';
72
93
  CmsAction.HIDE_ALL_OVERLAYS = '[CMS]_HIDE_ALL_OVERLAYS';
@@ -75,55 +96,56 @@ export var CmsAction;
75
96
  *
76
97
  * @param pageName name of the page
77
98
  */
78
- CmsAction.GoToPage = (pageName) => ({
79
- type: CmsAction.GO_TO_PAGE,
80
- payload: { pageName },
81
- });
99
+ CmsAction.GoToPage = (pageName) => {
100
+ return {
101
+ type: CmsAction.GO_TO_PAGE,
102
+ payload: { pageName },
103
+ };
104
+ };
82
105
  /**
83
106
  * Update UI definition customization state
84
107
  *
85
108
  * @param pageName name of the page
86
109
  */
87
- CmsAction.UpdateCustomization = (value) => ({
88
- type: CmsAction.UPDATE_CUSTOMIZATION,
89
- payload: { value },
90
- });
91
- /**
92
- * Emit customization page changes
93
- *
94
- * @param changes - object with customization page changes
95
- */
96
- CmsAction.EmitCustomizationChanges = (changes) => ({
97
- type: CmsAction.EMIT_CUSTOMIZATION_CHANGES,
98
- payload: { changes },
99
- });
110
+ CmsAction.UpdateCustomization = (value) => {
111
+ return {
112
+ type: CmsAction.UPDATE_CUSTOMIZATION,
113
+ payload: { value },
114
+ };
115
+ };
100
116
  /**
101
117
  * Show an Overlay on the selected page
102
118
  *
103
119
  * @param name - name of the overlay
104
120
  * @returns void
105
121
  */
106
- CmsAction.ShowOverlay = (name) => ({
107
- type: CmsAction.SHOW_OVERLAY,
108
- payload: { name },
109
- });
122
+ CmsAction.ShowOverlay = (name) => {
123
+ return {
124
+ type: CmsAction.SHOW_OVERLAY,
125
+ payload: { name },
126
+ };
127
+ };
110
128
  /**
111
129
  * Hide an Overlay on the selected page
112
130
  *
113
131
  * @param name - name of the overlay
114
132
  * @returns void
115
133
  */
116
- CmsAction.HideOverlay = (name) => ({
117
- type: CmsAction.HIDE_OVERLAY,
118
- payload: { name },
119
- });
134
+ CmsAction.HideOverlay = (name) => {
135
+ return {
136
+ type: CmsAction.HIDE_OVERLAY,
137
+ payload: { name },
138
+ };
139
+ };
120
140
  /**
121
141
  * Hide all Overlays on the selected page
122
142
  *
123
143
  * @returns void
124
144
  */
125
- CmsAction.HideAllOverlays = () => ({
126
- type: CmsAction.HIDE_ALL_OVERLAYS,
127
- });
145
+ CmsAction.HideAllOverlays = () => {
146
+ return {
147
+ type: CmsAction.HIDE_ALL_OVERLAYS,
148
+ };
149
+ };
128
150
  })(CmsAction || (CmsAction = {}));
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxLQUFXLFVBQVUsQ0FpRjFCO0FBakZELFdBQWlCLFVBQVU7SUFDWixpQ0FBc0IsR0FBRywwQkFBMEIsQ0FBQztJQUNwRCw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1QywyQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQztJQUN4QyxtQ0FBd0IsR0FBRyw0QkFBNEIsQ0FBQztJQUN4RCx5Q0FBOEIsR0FBRyxrQ0FBa0MsQ0FBQztJQUNwRSwyQ0FBZ0MsR0FBRyxvQ0FBb0MsQ0FBQztJQUN4RSw0QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUMxQyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyx1QkFBWSxHQUFHLHFCQUFxQixDQUFDO0lBQ3JDLHdCQUFhLEdBQUcsc0JBQXNCLENBQUM7SUFDdkMsOEJBQW1CLEdBQUcsNEJBQTRCLENBQUM7SUFDbkQsZ0NBQXFCLEdBQUcsOEJBQThCLENBQUM7SUFDdkQsK0JBQW9CLEdBQUcsNkJBQTZCLENBQUM7SUFDckQsc0JBQVcsR0FBRyxvQkFBb0IsQ0FBQztJQUVuQyxpQ0FBc0IsR0FBRyxDQUFDLEVBQ3JDLFVBQVUsRUFDVixTQUFTLEdBSVYsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0I7UUFDdkMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtLQUNuQyxDQUFDLENBQUM7SUFFVSw2QkFBa0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtLQUNwQyxDQUFDLENBQUM7SUFFVSwyQkFBZ0IsR0FBRyxDQUFDLElBQVksRUFBRSxTQUFrQixFQUFFLFVBQW1CLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLElBQUksRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1FBQ2pDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO0tBQ3pDLENBQUMsQ0FBQztJQUVVLGtDQUF1QixHQUFHLEdBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBRSxVQUFVLENBQUMsd0JBQXdCO0tBQzFDLENBQUMsQ0FBQztJQUVVLHVDQUE0QixHQUFHLEdBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksRUFBRSxVQUFVLENBQUMsOEJBQThCO0tBQ2hELENBQUMsQ0FBQztJQUVVLDBDQUErQixHQUFHLEdBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksRUFBRSxVQUFVLENBQUMsZ0NBQWdDO0tBQ2xELENBQUMsQ0FBQztJQUVVLDRCQUFpQixHQUFHLEdBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksRUFBRSxVQUFVLENBQUMsWUFBWTtLQUM5QixDQUFDLENBQUM7SUFFVSw2QkFBa0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLEVBQUUsVUFBVSxDQUFDLGFBQWE7S0FDL0IsQ0FBQyxDQUFDO0lBRVUsNkJBQWtCLEdBQUcsQ0FBQyxPQUF1QixFQUFxQixFQUFFLENBQUMsQ0FBQztRQUNqRixJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtRQUNuQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0lBRVUsNEJBQWlCLEdBQUcsQ0FBQyxPQUFvQyxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUM3RixJQUFJLEVBQUUsVUFBVSxDQUFDLG1CQUFtQjtRQUNwQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0lBRVUsNkJBQWtCLEdBQUcsQ0FBQyxPQUFpQyxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzRixJQUFJLEVBQUUsVUFBVSxDQUFDLG9CQUFvQjtRQUNyQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0lBRVUsOEJBQW1CLEdBQUcsQ0FBQyxPQUF3QyxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUNuRyxJQUFJLEVBQUUsVUFBVSxDQUFDLHFCQUFxQjtRQUN0QyxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0lBRVUscUJBQVUsR0FBRyxDQUFDLE1BQWMsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxXQUFXO1FBQzVCLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRTtLQUNwQixDQUFDLENBQUM7QUFDTCxDQUFDLEVBakZnQixVQUFVLEtBQVYsVUFBVSxRQWlGMUI7QUFFRCxNQUFNLEtBQVcsU0FBUyxDQW9FekI7QUFwRUQsV0FBaUIsU0FBUztJQUNYLG9CQUFVLEdBQUcsa0JBQWtCLENBQUM7SUFDaEMsOEJBQW9CLEdBQUcsNEJBQTRCLENBQUM7SUFDcEQsb0NBQTBCLEdBQUcsa0NBQWtDLENBQUM7SUFDaEUsc0JBQVksR0FBRyxvQkFBb0IsQ0FBQztJQUNwQyxzQkFBWSxHQUFHLG9CQUFvQixDQUFDO0lBQ3BDLDJCQUFpQixHQUFHLHlCQUF5QixDQUFDO0lBRTNEOzs7O09BSUc7SUFDVSxrQkFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxFQUFFLFVBQUEsVUFBVTtRQUNoQixPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUU7S0FDdEIsQ0FBQyxDQUFDO0lBRUg7Ozs7T0FJRztJQUNVLDZCQUFtQixHQUFHLENBQUMsS0FBVSxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLEVBQUUsVUFBQSxvQkFBb0I7UUFDMUIsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFO0tBQ25CLENBQUMsQ0FBQztJQUVIOzs7O09BSUc7SUFDVSxrQ0FBd0IsR0FBRyxDQUFDLE9BQTZCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLElBQUksRUFBRSxVQUFBLDBCQUEwQjtRQUNoQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUU7S0FDckIsQ0FBQyxDQUFDO0lBRUg7Ozs7O09BS0c7SUFDVSxxQkFBVyxHQUFHLENBQUMsSUFBWSxFQUFxQixFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLEVBQUUsVUFBQSxZQUFZO1FBQ2xCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRTtLQUNsQixDQUFDLENBQUM7SUFFSDs7Ozs7T0FLRztJQUNVLHFCQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBRSxVQUFBLFlBQVk7UUFDbEIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFO0tBQ2xCLENBQUMsQ0FBQztJQUVIOzs7O09BSUc7SUFDVSx5QkFBZSxHQUFHLEdBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksRUFBRSxVQUFBLGlCQUFpQjtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDLEVBcEVnQixTQUFTLEtBQVQsU0FBUyxRQW9FekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlICovXG5pbXBvcnQgeyBDdXN0b21pemF0aW9uQ2hhbmdlcyB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25BY3Rpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgRmxvd0FjdGlvbiB7XG4gIGV4cG9ydCBjb25zdCBGTE9XX0NPTkZJR1VSRV9QUk9EVUNUID0gJ1tGTE9XXV9DT05GSUdVUkVfUFJPRFVDVCc7XG4gIGV4cG9ydCBjb25zdCBGTE9XX05BVklHQVRFX0JBQ0sgPSAnW0ZMT1ddX05BVklHQVRFX0JBQ0snO1xuICBleHBvcnQgY29uc3QgRkxPV19OQVZJR0FURV9UTyA9ICdbRkxPV11fTkFWSUdBVEVfVE8nO1xuICBleHBvcnQgY29uc3QgRkxPV19OQVZJR0FURV9UT19DQVRBTE9HID0gJ1tGTE9XXV9OQVZJR0FURV9UT19DQVRBTE9HJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfTkFWSUdBVEVfVE9fU0hPUFBJTkdfQ0FSVCA9ICdbRkxPV11fTkFWSUdBVEVfVE9fU0hPUFBJTkdfQ0FSVCc7XG4gIGV4cG9ydCBjb25zdCBGTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTiA9ICdbRkxPV11fQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfT1BFTl9ET0NfR0VOID0gJ1tGTE9XXV9PUEVOX0RPQ19HRU4nO1xuICBleHBvcnQgY29uc3QgRkxPV19DTE9TRV9ET0NfR0VOID0gJ1tGTE9XXV9DTE9TRV9ET0NfR0VOJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfU1dJVENIX09CSkVDVCA9ICdbRkxPV11fU1dJVENIX09CSkVDVCc7XG4gIGV4cG9ydCBjb25zdCBSRU1PVEVfQVBQTFkgPSAnW0ZMT1ddX1JFTU9URV9BUFBMWSc7XG4gIGV4cG9ydCBjb25zdCBSRU1PVEVfQ0FOQ0VMID0gJ1tGTE9XXV9SRU1PVEVfQ0FOQ0VMJztcbiAgZXhwb3J0IGNvbnN0IE9QRU5fR1VJREVEX1NFTExJTkcgPSAnW0ZMT1ddX09QRU5fR1VJREVEX1NFTExJTkcnO1xuICBleHBvcnQgY29uc3QgU1VCTUlUX0dVSURFRF9TRUxMSU5HID0gJ1tGTE9XXV9TVUJNSVRfR1VJREVEX1NFTExJTkcnO1xuICBleHBvcnQgY29uc3QgQ0xPU0VfR1VJREVEX1NFTExJTkcgPSAnW0ZMT1ddX0NMT1NFX0dVSURFRF9TRUxMSU5HJztcbiAgZXhwb3J0IGNvbnN0IE9QRU5fRElBTE9HID0gJ1tGTE9XXV9PUEVOX0RJQUxPRyc7XG5cbiAgZXhwb3J0IGNvbnN0IENvbmZpZ3VyZVByb2R1Y3RBY3Rpb24gPSAoe1xuICAgIGxpbmVJdGVtSWQsXG4gICAgcHJvZHVjdElkLFxuICB9OiB7XG4gICAgbGluZUl0ZW1JZD86IHN0cmluZztcbiAgICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG4gIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19DT05GSUdVUkVfUFJPRFVDVCxcbiAgICBwYXlsb2FkOiB7IGxpbmVJdGVtSWQsIHByb2R1Y3RJZCB9LFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgTmF2aWdhdGVCYWNrQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX0JBQ0ssXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvQWN0aW9uID0gKHBhdGg6IHN0cmluZywgcHJvZHVjdElkPzogc3RyaW5nLCBsaW5lSXRlbUlkPzogc3RyaW5nKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE8sXG4gICAgcGF5bG9hZDogeyBwYXRoLCBwcm9kdWN0SWQsIGxpbmVJdGVtSWQgfSxcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IE5hdmlnYXRlVG9DYXRhbG9nQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX0NBVEFMT0csXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0QWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX1NIT1BQSU5HX0NBUlQsXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBBcHBseVByb2R1Y3RDb25maWd1cmF0aW9uQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTixcbiAgfSk7XG5cbiAgZXhwb3J0IGNvbnN0IFJlbW90ZUFwcGx5QWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5SRU1PVEVfQVBQTFksXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBSZW1vdGVDYW5jZWxBY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLlJFTU9URV9DQU5DRUwsXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBTd2l0Y2hPYmplY3RBY3Rpb24gPSAocGF5bG9hZDogeyBpZDogc3RyaW5nIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19TV0lUQ0hfT0JKRUNULFxuICAgIHBheWxvYWQsXG4gIH0pO1xuXG4gIGV4cG9ydCBjb25zdCBPcGVuR3VpZGVkU2VsbGluZyA9IChwYXlsb2FkOiB7IGd1aWRlZFNlbGxpbmdJZDogc3RyaW5nIH0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEZsb3dBY3Rpb24uT1BFTl9HVUlERURfU0VMTElORyxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgQ2xvc2VHdWlkZWRTZWxsaW5nID0gKHBheWxvYWQ/OiB7IGtlZXBTdGF0ZT86IGJvb2xlYW4gfSk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5DTE9TRV9HVUlERURfU0VMTElORyxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgU3VibWl0R3VpZGVkU2VsbGluZyA9IChwYXlsb2FkOiB7IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiB9KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBGbG93QWN0aW9uLlNVQk1JVF9HVUlERURfU0VMTElORyxcbiAgICBwYXlsb2FkLFxuICB9KTtcblxuICBleHBvcnQgY29uc3QgT3BlbkRpYWxvZyA9IChkaWFsb2c6IHN0cmluZyk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogRmxvd0FjdGlvbi5PUEVOX0RJQUxPRyxcbiAgICBwYXlsb2FkOiB7IGRpYWxvZyB9LFxuICB9KTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDbXNBY3Rpb24ge1xuICBleHBvcnQgY29uc3QgR09fVE9fUEFHRSA9ICdbQ01TXV9HT19UT19QQUdFJztcbiAgZXhwb3J0IGNvbnN0IFVQREFURV9DVVNUT01JWkFUSU9OID0gJ1tDTVNdX1VQREFURV9DVVNUT01JWkFUSU9OJztcbiAgZXhwb3J0IGNvbnN0IEVNSVRfQ1VTVE9NSVpBVElPTl9DSEFOR0VTID0gJ1tDTVNdX0VNSVRfQ1VTVE9NSVpBVElPTl9DSEFOR0VTJztcbiAgZXhwb3J0IGNvbnN0IFNIT1dfT1ZFUkxBWSA9ICdbQ01TXV9TSE9XX09WRVJMQVknO1xuICBleHBvcnQgY29uc3QgSElERV9PVkVSTEFZID0gJ1tDTVNdX0hJREVfT1ZFUkxBWSc7XG4gIGV4cG9ydCBjb25zdCBISURFX0FMTF9PVkVSTEFZUyA9ICdbQ01TXV9ISURFX0FMTF9PVkVSTEFZUyc7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIFVJIGRlZmluaXRpb24gdG8gYSBzcGVjaWZpYyBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgR29Ub1BhZ2UgPSAocGFnZU5hbWU6IHN0cmluZyk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogR09fVE9fUEFHRSxcbiAgICBwYXlsb2FkOiB7IHBhZ2VOYW1lIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgVUkgZGVmaW5pdGlvbiBjdXN0b21pemF0aW9uIHN0YXRlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgVXBkYXRlQ3VzdG9taXphdGlvbiA9ICh2YWx1ZTogYW55KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBVUERBVEVfQ1VTVE9NSVpBVElPTixcbiAgICBwYXlsb2FkOiB7IHZhbHVlIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IGN1c3RvbWl6YXRpb24gcGFnZSBjaGFuZ2VzXG4gICAqXG4gICAqIEBwYXJhbSBjaGFuZ2VzIC0gb2JqZWN0IHdpdGggY3VzdG9taXphdGlvbiBwYWdlIGNoYW5nZXNcbiAgICovXG4gIGV4cG9ydCBjb25zdCBFbWl0Q3VzdG9taXphdGlvbkNoYW5nZXMgPSAoY2hhbmdlczogQ3VzdG9taXphdGlvbkNoYW5nZXMpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEVNSVRfQ1VTVE9NSVpBVElPTl9DSEFOR0VTLFxuICAgIHBheWxvYWQ6IHsgY2hhbmdlcyB9LFxuICB9KTtcblxuICAvKipcbiAgICogU2hvdyBhbiBPdmVybGF5IG9uIHRoZSBzZWxlY3RlZCBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gbmFtZSBvZiB0aGUgb3ZlcmxheVxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBleHBvcnQgY29uc3QgU2hvd092ZXJsYXkgPSAobmFtZTogc3RyaW5nKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBTSE9XX09WRVJMQVksXG4gICAgcGF5bG9hZDogeyBuYW1lIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBIaWRlIGFuIE92ZXJsYXkgb24gdGhlIHNlbGVjdGVkIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBuYW1lIG9mIHRoZSBvdmVybGF5XG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBIaWRlT3ZlcmxheSA9IChuYW1lOiBzdHJpbmcpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEhJREVfT1ZFUkxBWSxcbiAgICBwYXlsb2FkOiB7IG5hbWUgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEhpZGUgYWxsIE92ZXJsYXlzIG9uIHRoZSBzZWxlY3RlZCBwYWdlXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBIaWRlQWxsT3ZlcmxheXMgPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBISURFX0FMTF9PVkVSTEFZUyxcbiAgfSk7XG59XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxLQUFXLFVBQVUsQ0F5RzFCO0FBekdELFdBQWlCLFVBQVU7SUFDWixpQ0FBc0IsR0FBRywwQkFBMEIsQ0FBQztJQUNwRCw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1QywyQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQztJQUN4QyxtQ0FBd0IsR0FBRyw0QkFBNEIsQ0FBQztJQUN4RCx5Q0FBOEIsR0FBRyxrQ0FBa0MsQ0FBQztJQUNwRSwyQ0FBZ0MsR0FBRyxvQ0FBb0MsQ0FBQztJQUN4RSw0QkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUMxQyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyw2QkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUM1Qyx1QkFBWSxHQUFHLHFCQUFxQixDQUFDO0lBQ3JDLHdCQUFhLEdBQUcsc0JBQXNCLENBQUM7SUFDdkMsOEJBQW1CLEdBQUcsNEJBQTRCLENBQUM7SUFDbkQsZ0NBQXFCLEdBQUcsOEJBQThCLENBQUM7SUFDdkQsK0JBQW9CLEdBQUcsNkJBQTZCLENBQUM7SUFDckQsc0JBQVcsR0FBRyxvQkFBb0IsQ0FBQztJQUVuQyxpQ0FBc0IsR0FBRyxDQUFDLEVBQ3JDLGlCQUFpQixFQUNqQixTQUFTLEdBSVYsRUFBRSxFQUFFO1FBQ0gsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVLENBQUMsc0JBQXNCO1lBQ3ZDLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRTtTQUNkLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRVcsNkJBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQ3JDLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtTQUNSLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRVcsMkJB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LEVBQUUsRUFBRTtRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFVBQUEsWUFBWTtZQUNsQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUU7U0FDVSxDQUFDO0lBQ2hDLENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ1UscUJBQVcsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQzFDLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBQSxZQUFZO1lBQ2xCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRTtTQUNVLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNVLHlCQUFlLEdBQUcsR0FBRyxFQUFFO1FBQ2xDLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBQSxpQkFBaUI7U0FDSSxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUMsRUFuRWdCLFNBQVMsS0FBVCxTQUFTLFFBbUV6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2UgKi9cbmltcG9ydCB7IEludGVncmF0aW9uQWN0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuXG5leHBvcnQgbmFtZXNwYWNlIEZsb3dBY3Rpb24ge1xuICBleHBvcnQgY29uc3QgRkxPV19DT05GSUdVUkVfUFJPRFVDVCA9ICdbRkxPV11fQ09ORklHVVJFX1BST0RVQ1QnO1xuICBleHBvcnQgY29uc3QgRkxPV19OQVZJR0FURV9CQUNLID0gJ1tGTE9XXV9OQVZJR0FURV9CQUNLJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfTkFWSUdBVEVfVE8gPSAnW0ZMT1ddX05BVklHQVRFX1RPJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfTkFWSUdBVEVfVE9fQ0FUQUxPRyA9ICdbRkxPV11fTkFWSUdBVEVfVE9fQ0FUQUxPRyc7XG4gIGV4cG9ydCBjb25zdCBGTE9XX05BVklHQVRFX1RPX1NIT1BQSU5HX0NBUlQgPSAnW0ZMT1ddX05BVklHQVRFX1RPX1NIT1BQSU5HX0NBUlQnO1xuICBleHBvcnQgY29uc3QgRkxPV19BUFBMWV9QUk9EVUNUX0NPTkZJR1VSQVRJT04gPSAnW0ZMT1ddX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTic7XG4gIGV4cG9ydCBjb25zdCBGTE9XX09QRU5fRE9DX0dFTiA9ICdbRkxPV11fT1BFTl9ET0NfR0VOJztcbiAgZXhwb3J0IGNvbnN0IEZMT1dfQ0xPU0VfRE9DX0dFTiA9ICdbRkxPV11fQ0xPU0VfRE9DX0dFTic7XG4gIGV4cG9ydCBjb25zdCBGTE9XX1NXSVRDSF9PQkpFQ1QgPSAnW0ZMT1ddX1NXSVRDSF9PQkpFQ1QnO1xuICBleHBvcnQgY29uc3QgUkVNT1RFX0FQUExZID0gJ1tGTE9XXV9SRU1PVEVfQVBQTFknO1xuICBleHBvcnQgY29uc3QgUkVNT1RFX0NBTkNFTCA9ICdbRkxPV11fUkVNT1RFX0NBTkNFTCc7XG4gIGV4cG9ydCBjb25zdCBPUEVOX0dVSURFRF9TRUxMSU5HID0gJ1tGTE9XXV9PUEVOX0dVSURFRF9TRUxMSU5HJztcbiAgZXhwb3J0IGNvbnN0IFNVQk1JVF9HVUlERURfU0VMTElORyA9ICdbRkxPV11fU1VCTUlUX0dVSURFRF9TRUxMSU5HJztcbiAgZXhwb3J0IGNvbnN0IENMT1NFX0dVSURFRF9TRUxMSU5HID0gJ1tGTE9XXV9DTE9TRV9HVUlERURfU0VMTElORyc7XG4gIGV4cG9ydCBjb25zdCBPUEVOX0RJQUxPRyA9ICdbRkxPV11fT1BFTl9ESUFMT0cnO1xuXG4gIGV4cG9ydCBjb25zdCBDb25maWd1cmVQcm9kdWN0QWN0aW9uID0gKHtcbiAgICB0cmFuc2FjdGlvbkl0ZW1JZCxcbiAgICBwcm9kdWN0SWQsXG4gIH06IHtcbiAgICB0cmFuc2FjdGlvbkl0ZW1JZD86IHN0cmluZztcbiAgICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG4gIH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX0NPTkZJR1VSRV9QUk9EVUNULFxuICAgICAgcGF5bG9hZDogeyB0cmFuc2FjdGlvbkl0ZW1JZCwgcHJvZHVjdElkIH0sXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IE5hdmlnYXRlQmFja0FjdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX0JBQ0ssXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IE5hdmlnYXRlVG9BY3Rpb24gPSAocGF0aDogc3RyaW5nLCBwcm9kdWN0SWQ/OiBzdHJpbmcsIHRyYW5zYWN0aW9uSXRlbUlkPzogc3RyaW5nKSA9PlxuICAgICh7XG4gICAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE8sXG4gICAgICBwYXlsb2FkOiB7IHBhdGgsIHByb2R1Y3RJZCwgdHJhbnNhY3Rpb25JdGVtSWQgfSxcbiAgICB9IHNhdGlzZmllcyBJbnRlZ3JhdGlvbkFjdGlvbik7XG5cbiAgZXhwb3J0IGNvbnN0IE5hdmlnYXRlVG9DYXRhbG9nQWN0aW9uID0gKCkgPT5cbiAgICAoe1xuICAgICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX0NBVEFMT0csXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb24pO1xuXG4gIGV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0QWN0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE9fU0hPUFBJTkdfQ0FSVCxcbiAgICB9IHNhdGlzZmllcyBJbnRlZ3JhdGlvbkFjdGlvbjtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgQXBwbHlQcm9kdWN0Q29uZmlndXJhdGlvbkFjdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTixcbiAgICB9IHNhdGlzZmllcyBJbnRlZ3JhdGlvbkFjdGlvbjtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgUmVtb3RlQXBwbHlBY3Rpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IEZsb3dBY3Rpb24uUkVNT1RFX0FQUExZLFxuICAgIH0gc2F0aXNmaWVzIEludGVncmF0aW9uQWN0aW9uO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBSZW1vdGVDYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IEZsb3dBY3Rpb24uUkVNT1RFX0NBTkNFTCxcbiAgICB9IHNhdGlzZmllcyBJbnRlZ3JhdGlvbkFjdGlvbjtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgU3dpdGNoT2JqZWN0QWN0aW9uID0gKHBheWxvYWQ6IHsgaWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19TV0lUQ0hfT0JKRUNULFxuICAgICAgcGF5bG9hZCxcbiAgICB9IHNhdGlzZmllcyBJbnRlZ3JhdGlvbkFjdGlvbjtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgT3Blbkd1aWRlZFNlbGxpbmcgPSAocGF5bG9hZDogeyBndWlkZWRTZWxsaW5nSWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IEZsb3dBY3Rpb24uT1BFTl9HVUlERURfU0VMTElORyxcbiAgICAgIHBheWxvYWQsXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IENsb3NlR3VpZGVkU2VsbGluZyA9IChwYXlsb2FkPzogeyBrZWVwU3RhdGU/OiBib29sZWFuIH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogRmxvd0FjdGlvbi5DTE9TRV9HVUlERURfU0VMTElORyxcbiAgICAgIHBheWxvYWQsXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IFN1Ym1pdEd1aWRlZFNlbGxpbmcgPSAocGF5bG9hZDogeyByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBGbG93QWN0aW9uLlNVQk1JVF9HVUlERURfU0VMTElORyxcbiAgICAgIHBheWxvYWQsXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IE9wZW5EaWFsb2cgPSAoZGlhbG9nOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogRmxvd0FjdGlvbi5PUEVOX0RJQUxPRyxcbiAgICAgIHBheWxvYWQ6IHsgZGlhbG9nIH0sXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG59XG5cbnR5cGUgQSA9IFJldHVyblR5cGU8dHlwZW9mIEZsb3dBY3Rpb24uT3BlbkRpYWxvZz5bJ3BheWxvYWQnXTtcblxuZXhwb3J0IG5hbWVzcGFjZSBDbXNBY3Rpb24ge1xuICBleHBvcnQgY29uc3QgR09fVE9fUEFHRSA9ICdbQ01TXV9HT19UT19QQUdFJztcbiAgZXhwb3J0IGNvbnN0IFVQREFURV9DVVNUT01JWkFUSU9OID0gJ1tDTVNdX1VQREFURV9DVVNUT01JWkFUSU9OJztcbiAgZXhwb3J0IGNvbnN0IFNIT1dfT1ZFUkxBWSA9ICdbQ01TXV9TSE9XX09WRVJMQVknO1xuICBleHBvcnQgY29uc3QgSElERV9PVkVSTEFZID0gJ1tDTVNdX0hJREVfT1ZFUkxBWSc7XG4gIGV4cG9ydCBjb25zdCBISURFX0FMTF9PVkVSTEFZUyA9ICdbQ01TXV9ISURFX0FMTF9PVkVSTEFZUyc7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIFVJIGRlZmluaXRpb24gdG8gYSBzcGVjaWZpYyBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgR29Ub1BhZ2UgPSAocGFnZU5hbWU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBHT19UT19QQUdFLFxuICAgICAgcGF5bG9hZDogeyBwYWdlTmFtZSB9LFxuICAgIH0gc2F0aXNmaWVzIEludGVncmF0aW9uQWN0aW9uO1xuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgVUkgZGVmaW5pdGlvbiBjdXN0b21pemF0aW9uIHN0YXRlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgVXBkYXRlQ3VzdG9taXphdGlvbiA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFVQREFURV9DVVNUT01JWkFUSU9OLFxuICAgICAgcGF5bG9hZDogeyB2YWx1ZSB9LFxuICAgIH0gc2F0aXNmaWVzIEludGVncmF0aW9uQWN0aW9uO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTaG93IGFuIE92ZXJsYXkgb24gdGhlIHNlbGVjdGVkIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBuYW1lIG9mIHRoZSBvdmVybGF5XG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGV4cG9ydCBjb25zdCBTaG93T3ZlcmxheSA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogU0hPV19PVkVSTEFZLFxuICAgICAgcGF5bG9hZDogeyBuYW1lIH0sXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG5cbiAgLyoqXG4gICAqIEhpZGUgYW4gT3ZlcmxheSBvbiB0aGUgc2VsZWN0ZWQgcGFnZVxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIG5hbWUgb2YgdGhlIG92ZXJsYXlcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IEhpZGVPdmVybGF5ID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBISURFX09WRVJMQVksXG4gICAgICBwYXlsb2FkOiB7IG5hbWUgfSxcbiAgICB9IHNhdGlzZmllcyBJbnRlZ3JhdGlvbkFjdGlvbjtcbiAgfTtcblxuICAvKipcbiAgICogSGlkZSBhbGwgT3ZlcmxheXMgb24gdGhlIHNlbGVjdGVkIHBhZ2VcbiAgICpcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IEhpZGVBbGxPdmVybGF5cyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogSElERV9BTExfT1ZFUkxBWVMsXG4gICAgfSBzYXRpc2ZpZXMgSW50ZWdyYXRpb25BY3Rpb247XG4gIH07XG59XG4iXX0=