@hestia-earth/ui-components 0.0.4 → 0.0.5

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 (33) hide show
  1. package/bundles/hestia-earth-ui-components.umd.js +392 -506
  2. package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
  3. package/common/common.service.d.ts +1 -2
  4. package/common/public-api.d.ts +1 -0
  5. package/common/toast/toast.component.d.ts +2 -2
  6. package/common/toast.service.d.ts +3 -3
  7. package/common/utils.d.ts +3 -11
  8. package/cycles/public-api.d.ts +1 -0
  9. package/engine/aggregation-engine.service.d.ts +8 -20
  10. package/engine/engine.service.d.ts +2 -6
  11. package/esm2015/common/common.service.js +1 -7
  12. package/esm2015/common/public-api.js +2 -1
  13. package/esm2015/common/toast/toast.component.js +3 -3
  14. package/esm2015/common/toast.service.js +5 -5
  15. package/esm2015/common/utils.js +3 -61
  16. package/esm2015/cycles/public-api.js +2 -1
  17. package/esm2015/engine/aggregation-engine.service.js +11 -47
  18. package/esm2015/engine/engine.service.js +9 -15
  19. package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +3 -3
  20. package/esm2015/mendeley/mendeley.service.js +1 -1
  21. package/esm2015/node/node-csv.service.js +1 -1
  22. package/esm2015/node/node.service.js +26 -16
  23. package/esm2015/schema/schema.service.js +1 -1
  24. package/esm2015/search/search.service.js +1 -1
  25. package/fesm2015/hestia-earth-ui-components.js +281 -372
  26. package/fesm2015/hestia-earth-ui-components.js.map +1 -1
  27. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +2 -2
  28. package/mendeley/mendeley.service.d.ts +2 -2
  29. package/node/node-csv.service.d.ts +1 -1
  30. package/node/node.service.d.ts +16 -7
  31. package/package.json +1 -1
  32. package/schema/schema.service.d.ts +1 -1
  33. package/search/search.service.d.ts +2 -2
@@ -2,10 +2,9 @@ import { InjectionToken } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare const HE_API_BASE_URL: InjectionToken<string>;
4
4
  export declare class HeCommonService {
5
- _apiBaseUrl: string;
5
+ private _apiBaseUrl;
6
6
  constructor(_apiBaseUrl: string);
7
7
  get apiBaseUrl(): string;
8
- get gitBranch(): "develop" | "master";
9
8
  static ɵfac: i0.ɵɵFactoryDeclaration<HeCommonService, never>;
10
9
  static ɵprov: i0.ɵɵInjectableDeclaration<HeCommonService>;
11
10
  }
@@ -2,6 +2,7 @@ export * from './common.module';
2
2
  export * from './common.service';
3
3
  export * from './toast.service';
4
4
  export * from './logs-utils';
5
+ export * from './maps-utils';
5
6
  export * from './utils';
6
7
  export { BlankNodeDiffsComponent } from './blank-node-diffs/blank-node-diffs.component';
7
8
  export { BlankNodeStateComponent } from './blank-node-state/blank-node-state.component';
@@ -1,5 +1,5 @@
1
1
  import { OnInit, OnDestroy } from '@angular/core';
2
- import { ToastService, IToast } from '../toast.service';
2
+ import { HeToastService, IToast } from '../toast.service';
3
3
  import * as i0 from "@angular/core";
4
4
  interface IToastTimeout extends IToast {
5
5
  timeout?: any;
@@ -8,7 +8,7 @@ export declare class ToastComponent implements OnInit, OnDestroy {
8
8
  private toastService;
9
9
  private subscriptions;
10
10
  toasts: IToastTimeout[];
11
- constructor(toastService: ToastService);
11
+ constructor(toastService: HeToastService);
12
12
  ngOnInit(): void;
13
13
  ngOnDestroy(): void;
14
14
  private add;
@@ -7,10 +7,10 @@ export interface IToast {
7
7
  color: 'success' | 'danger';
8
8
  showRawMessage?: boolean;
9
9
  }
10
- export declare class ToastService {
10
+ export declare class HeToastService {
11
11
  toasts: ReplaySubject<IToast>;
12
12
  success(message: string, duration?: number): void;
13
13
  error(message: string, showRawMessage?: boolean, duration?: number): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
15
- static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeToastService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<HeToastService>;
16
16
  }
package/common/utils.d.ts CHANGED
@@ -1,23 +1,20 @@
1
- import { NodeType, Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD } from '@hestia-earth/schema';
1
+ import { Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD } from '@hestia-earth/schema';
2
2
  export declare const gitHome = "https://gitlab.com/hestia-earth";
3
3
  export declare const gitRawBaseUrl = "https://glcdn.githack.com/hestia-earth";
4
+ export declare const gitBranch: () => "develop" | "master";
4
5
  export declare const isChrome: () => boolean;
5
6
  export declare const baseUrl: () => string;
6
7
  export declare const isExternal: () => boolean;
7
- export declare const loadScript: (src?: string | undefined) => Promise<any>;
8
8
  export declare const handleAPIError: (error: any) => never;
9
9
  export declare const errorText: (error: any) => string;
10
- export declare const toFormData: (data: any, formData?: FormData) => FormData;
11
10
  export declare const filterParams: (obj: any) => {
12
11
  [x: string]: string;
13
12
  };
14
- export declare const toSearchParams: (params?: any) => URLSearchParams;
15
13
  export declare const waitFor: (variable: string, callback: () => void) => void;
16
14
  export declare const bottom: (element: HTMLElement) => number;
17
15
  export declare const isScrolledBelow: (element: HTMLElement) => boolean;
18
16
  export declare const scrollToEl: (id: string, retries?: number) => void;
19
17
  export declare const scrollTop: () => void;
20
- export declare const animateCounter: (total: number, callback: (count: number) => void) => void;
21
18
  export declare const safeJSONParse: <T>(value: string, defaultValue?: any) => any;
22
19
  export declare const safeJSONStringify: (value: string) => string;
23
20
  export declare const arrayValue: (values: any[], isAverage: boolean) => number;
@@ -63,7 +60,6 @@ export interface IGroupedKeys<T> {
63
60
  export declare const grouppedKeys: <T>(value: IGroupedNodes<T>) => IGroupedKeys<T>[];
64
61
  export declare const grouppedValueKeys: string[];
65
62
  export declare const groupNodesByTerm: <T extends IImpactAssessmentJSONLD | ISiteJSONLD | ICycleJSONLD, R>(nodes: T[] | undefined, key: 'impacts' | 'emissionsResourceUse' | 'inputs' | 'products' | 'emissions' | 'measurements', originalValues?: T[], filterMethod?: Term | undefined) => IGroupedNodes<R>;
66
- export declare const sortByFn: (key: string, asc: boolean) => <T>(a: T, b: T) => number;
67
63
  export declare const ellipsis: (text?: string, maxlength?: number) => string;
68
64
  export declare const mapsUrl: (location?: {
69
65
  lat?: number | undefined;
@@ -72,14 +68,9 @@ export declare const mapsUrl: (location?: {
72
68
  } | undefined) => string | undefined;
73
69
  export declare const keyToLabel: (key: string) => string;
74
70
  export declare const toDashCase: (value?: string | undefined) => string | null;
75
- export declare const nodeTypeToString: (type: NodeType) => string;
76
- export declare const parseNodeType: (type: string) => NodeType | undefined;
77
71
  export declare const defaultLabel: (node?: any) => any;
78
72
  export declare const itemColor: (index: number) => any;
79
73
  export declare const listColor: <T>(_v: T, index: number) => string;
80
- export declare const minutesBefore: (date: Date, minutes?: number) => Date;
81
- export declare const hoursBefore: (date: Date, hours?: number) => Date;
82
- export declare const repeat: (times?: number) => number[];
83
74
  export declare enum DeltaDisplayType {
84
75
  absolute = "absolute",
85
76
  percent = "percent"
@@ -95,5 +86,6 @@ export declare enum DeltaColour {
95
86
  Danger = "danger"
96
87
  }
97
88
  export declare const emptyValue: (value: any) => boolean;
89
+ export declare const repeat: (times?: number) => number[];
98
90
  export declare const filenameWithoutExt: (filename?: string) => string;
99
91
  export {};
@@ -1,3 +1,4 @@
1
+ export * from './cycles.model';
1
2
  export * from './cycles.module';
2
3
  export { CyclesActivityComponent } from './cycles-activity/cycles-activity.component';
3
4
  export { CyclesActivityLogsComponent } from './cycles-activity-logs/cycles-activity-logs.component';
@@ -1,8 +1,11 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
- import { ICycleJSONLD, NodeType, Product, Term } from '@hestia-earth/schema';
2
+ import { NodeType, Product, Term } from '@hestia-earth/schema';
3
3
  import { HeNodeService } from '../node/node.service';
4
- import { HeCommonService } from '../common/common.service';
5
4
  import * as i0 from "@angular/core";
5
+ export declare const lookups: Readonly<{
6
+ cropYield: string;
7
+ cropGroupingColumn: string;
8
+ }>;
6
9
  export interface IModel {
7
10
  type: NodeType;
8
11
  /**
@@ -20,37 +23,22 @@ export interface ILookups {
20
23
  crop: any[];
21
24
  cropYield: any[];
22
25
  }
23
- export interface ICycle {
24
- cycle: ICycleJSONLD;
25
- name?: string;
26
- startDate?: string;
27
- endDate?: string;
28
- country: string;
29
- observations?: number;
30
- yield?: number;
31
- faoYield?: number;
32
- diff?: number;
33
- }
34
- export declare const extendCycle: ({ crop, cropYield }: ILookups) => (cycle: ICycleJSONLD) => ICycle;
35
26
  export interface ITriggerCountryParams {
36
27
  country: Term;
37
28
  product: Product;
38
29
  '@type'?: NodeType;
39
30
  }
40
31
  export declare class HeAggregationEngineService {
41
- private http;
42
- private commonService;
43
- private nodeService;
32
+ protected http: HttpClient;
33
+ protected nodeService: HeNodeService;
44
34
  private modelsLoading;
45
35
  private modelsLoaded;
46
36
  private _models;
47
37
  private lookupsLoading;
48
38
  private lookupsLoaded;
49
39
  private _lookups;
50
- constructor(http: HttpClient, commonService: HeCommonService, nodeService: HeNodeService);
40
+ constructor(http: HttpClient, nodeService: HeNodeService);
51
41
  private init;
52
- private get gitUrl();
53
- private get rawUrl();
54
42
  private loadModels;
55
43
  get models$(): import("rxjs").Observable<IModel[]>;
56
44
  models(): Promise<IModel[]>;
@@ -1,7 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { HttpClient } from '@angular/common/http';
3
3
  import { NodeType } from '@hestia-earth/schema';
4
- import { HeCommonService } from '../common/common.service';
5
4
  import * as i0 from "@angular/core";
6
5
  export declare const HE_ORCHESTRATOR_BASE_URL: InjectionToken<string>;
7
6
  export declare const findConfigModels: ({ models }: IOrchestratorConfig, modelId: string, modelKey: string) => IOrchestratorModelConfig[];
@@ -41,15 +40,12 @@ export interface IOrchestratorConfig {
41
40
  models: IOrchestratorModelConfig[];
42
41
  }
43
42
  export declare class HeEngineService {
44
- private http;
45
- private commonService;
43
+ protected http: HttpClient;
46
44
  private modelsLoading;
47
45
  private modelsLoaded;
48
46
  private _models;
49
- constructor(http: HttpClient, commonService: HeCommonService);
47
+ constructor(http: HttpClient);
50
48
  private init;
51
- private get gitUrl();
52
- private get rawUrl();
53
49
  private loadModels;
54
50
  get models$(): import("rxjs").Observable<IModel[]>;
55
51
  models(): Promise<IModel[]>;
@@ -1,5 +1,4 @@
1
1
  import { Inject, Injectable, InjectionToken } from '@angular/core';
2
- import { baseUrl } from './utils';
3
2
  import * as i0 from "@angular/core";
4
3
  export const HE_API_BASE_URL = new InjectionToken('HE_API_BASE_URL');
5
4
  export class HeCommonService {
@@ -9,11 +8,6 @@ export class HeCommonService {
9
8
  get apiBaseUrl() {
10
9
  return this._apiBaseUrl || '/api';
11
10
  }
12
- get gitBranch() {
13
- return ['dev', 'staging'].some((env) => baseUrl().includes(env))
14
- ? 'develop'
15
- : 'master';
16
- }
17
11
  }
18
12
  HeCommonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonService, deps: [{ token: HE_API_BASE_URL }], target: i0.ɵɵFactoryTarget.Injectable });
19
13
  HeCommonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonService, providedIn: 'root' });
@@ -26,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
26
20
  type: Inject,
27
21
  args: [HE_API_BASE_URL]
28
22
  }] }]; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUVsQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUs3RSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUNrQyxXQUFtQjtRQUFuQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUNsRCxDQUFDO0lBRUosSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlELENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNmLENBQUM7OzZHQWJVLGVBQWUsa0JBRWhCLGVBQWU7aUhBRmQsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgSEVfQVBJX0JBU0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0hFX0FQSV9CQVNFX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZUNvbW1vblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEhFX0FQSV9CQVNFX1VSTCkgcHVibGljIF9hcGlCYXNlVXJsOiBzdHJpbmdcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgYXBpQmFzZVVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXBpQmFzZVVybCB8fCAnL2FwaSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdpdEJyYW5jaCgpIHtcbiAgICByZXR1cm4gWydkZXYnLCAnc3RhZ2luZyddLnNvbWUoKGVudikgPT4gYmFzZVVybCgpLmluY2x1ZGVzKGVudikpXG4gICAgICA/ICdkZXZlbG9wJ1xuICAgICAgOiAnbWFzdGVyJztcbiAgfVxufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFbkUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFTLGlCQUFpQixDQUFDLENBQUM7QUFLN0UsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUMsV0FBbUI7UUFBbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFDbkQsQ0FBQztJQUVKLElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO0lBQ3BDLENBQUM7OzZHQVBVLGVBQWUsa0JBRWhCLGVBQWU7aUhBRmQsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEhFX0FQSV9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdIRV9BUElfQkFTRV9VUkwnKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVDb21tb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChIRV9BUElfQkFTRV9VUkwpIHByaXZhdGUgX2FwaUJhc2VVcmw6IHN0cmluZ1xuICApIHt9XG5cbiAgcHVibGljIGdldCBhcGlCYXNlVXJsKCkge1xuICAgIHJldHVybiB0aGlzLl9hcGlCYXNlVXJsIHx8ICcvYXBpJztcbiAgfVxufVxuIl19
@@ -2,6 +2,7 @@ export * from './common.module';
2
2
  export * from './common.service';
3
3
  export * from './toast.service';
4
4
  export * from './logs-utils';
5
+ export * from './maps-utils';
5
6
  export * from './utils';
6
7
  export { BlankNodeDiffsComponent } from './blank-node-diffs/blank-node-diffs.component';
7
8
  export { BlankNodeStateComponent } from './blank-node-state/blank-node-state.component';
@@ -28,4 +29,4 @@ export { PluralizePipe } from './pluralize.pipe';
28
29
  export { PrecisionPipe } from './precision.pipe';
29
30
  export { TagsInputDirective } from './tags-input.directive';
30
31
  export { TimesPipe } from './times.pipe';
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ3MtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7IEJsYW5rTm9kZURpZmZzQ29tcG9uZW50IH0gZnJvbSAnLi9ibGFuay1ub2RlLWRpZmZzL2JsYW5rLW5vZGUtZGlmZnMuY29tcG9uZW50JztcbmV4cG9ydCB7IEJsYW5rTm9kZVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9ibGFuay1ub2RlLXN0YXRlL2JsYW5rLW5vZGUtc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCB7IEJsYW5rTm9kZVN0YXRlTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9ibGFuay1ub2RlLXN0YXRlLW5vdGljZS9ibGFuay1ub2RlLXN0YXRlLW5vdGljZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQmxhbmtOb2RlVmFsdWVEZWx0YUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS12YWx1ZS1kZWx0YS9ibGFuay1ub2RlLXZhbHVlLWRlbHRhLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDbGlwYm9hcmRDb21wb25lbnQgfSBmcm9tICcuL2NsaXBib2FyZC9jbGlwYm9hcmQuY29tcG9uZW50JztcbmV4cG9ydCB7IExpbmtLZXlWYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4vbGluay1rZXktdmFsdWUvbGluay1rZXktdmFsdWUuY29tcG9uZW50JztcbmV4cG9ydCB7IE1hcHNEcmF3aW5nQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vbWFwcy1kcmF3aW5nLWNvbmZpcm0vbWFwcy1kcmF3aW5nLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUG9wb3ZlckNvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29uZmlybS9wb3BvdmVyLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFNjaGVtYVZlcnNpb25MaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlbWEtdmVyc2lvbi1saW5rL3NjaGVtYS12ZXJzaW9uLWxpbmsuY29tcG9uZW50JztcbmV4cG9ydCB7IFNrZWxldG9uVGV4dENvbXBvbmVudCB9IGZyb20gJy4vc2tlbGV0b24tdGV4dC9za2VsZXRvbi10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBTb2NpYWxUYWdzQ29tcG9uZW50IH0gZnJvbSAnLi9zb2NpYWwtdGFncy9zb2NpYWwtdGFncy5jb21wb25lbnQnO1xuZXhwb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBVbml0Q29udmVydGVyQ29tcG9uZW50IH0gZnJvbSAnLi91bml0LWNvbnZlcnRlci91bml0LWNvbnZlcnRlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQmluZE9uY2VEaXJlY3RpdmUgfSBmcm9tICcuL2JpbmQtb25jZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZWZhdWx0UGlwZSB9IGZyb20gJy4vZGVmYXVsdC5waXBlJztcbmV4cG9ydCB7IEVsbGlwc2lzUGlwZSB9IGZyb20gJy4vZWxsaXBzaXMucGlwZSc7XG5leHBvcnQgeyBHZXRQaXBlIH0gZnJvbSAnLi9nZXQucGlwZSc7XG5leHBvcnQgeyBLZXlUb0xhYmVsUGlwZSB9IGZyb20gJy4va2V5LXRvLWxhYmVsLnBpcGUnO1xuZXhwb3J0IHsgS2V5c1BpcGUgfSBmcm9tICcuL2tleXMucGlwZSc7XG5leHBvcnQgeyBQbHVyYWxpemVQaXBlIH0gZnJvbSAnLi9wbHVyYWxpemUucGlwZSc7XG5leHBvcnQgeyBQcmVjaXNpb25QaXBlIH0gZnJvbSAnLi9wcmVjaXNpb24ucGlwZSc7XG5leHBvcnQgeyBUYWdzSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL3RhZ3MtaW5wdXQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFRpbWVzUGlwZSB9IGZyb20gJy4vdGltZXMucGlwZSc7XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ3MtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBCbGFua05vZGVEaWZmc0NvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1kaWZmcy9ibGFuay1ub2RlLWRpZmZzLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UvYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UuY29tcG9uZW50JztcbmV4cG9ydCB7IEJsYW5rTm9kZVZhbHVlRGVsdGFDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtdmFsdWUtZGVsdGEvYmxhbmstbm9kZS12YWx1ZS1kZWx0YS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2xpcGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgeyBMaW5rS2V5VmFsdWVDb21wb25lbnQgfSBmcm9tICcuL2xpbmsta2V5LXZhbHVlL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBNYXBzRHJhd2luZ0NvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL21hcHMtZHJhd2luZy1jb25maXJtL21hcHMtZHJhd2luZy1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNvbmZpcm0vcG9wb3Zlci1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTY2hlbWFWZXJzaW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4vc2NoZW1hLXZlcnNpb24tbGluay9zY2hlbWEtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa2VsZXRvblRleHRDb21wb25lbnQgfSBmcm9tICcuL3NrZWxldG9uLXRleHQvc2tlbGV0b24tdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU29jaWFsVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vc29jaWFsLXRhZ3Mvc29jaWFsLXRhZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi90b2FzdC90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgVW5pdENvbnZlcnRlckNvbXBvbmVudCB9IGZyb20gJy4vdW5pdC1jb252ZXJ0ZXIvdW5pdC1jb252ZXJ0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IEJpbmRPbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9iaW5kLW9uY2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4vY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGVmYXVsdFBpcGUgfSBmcm9tICcuL2RlZmF1bHQucGlwZSc7XG5leHBvcnQgeyBFbGxpcHNpc1BpcGUgfSBmcm9tICcuL2VsbGlwc2lzLnBpcGUnO1xuZXhwb3J0IHsgR2V0UGlwZSB9IGZyb20gJy4vZ2V0LnBpcGUnO1xuZXhwb3J0IHsgS2V5VG9MYWJlbFBpcGUgfSBmcm9tICcuL2tleS10by1sYWJlbC5waXBlJztcbmV4cG9ydCB7IEtleXNQaXBlIH0gZnJvbSAnLi9rZXlzLnBpcGUnO1xuZXhwb3J0IHsgUGx1cmFsaXplUGlwZSB9IGZyb20gJy4vcGx1cmFsaXplLnBpcGUnO1xuZXhwb3J0IHsgUHJlY2lzaW9uUGlwZSB9IGZyb20gJy4vcHJlY2lzaW9uLnBpcGUnO1xuZXhwb3J0IHsgVGFnc0lucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi90YWdzLWlucHV0LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBUaW1lc1BpcGUgfSBmcm9tICcuL3RpbWVzLnBpcGUnO1xuIl19
@@ -24,7 +24,7 @@ export class ToastComponent {
24
24
  this.toasts.splice(this.toasts.findIndex(val => val.id === toast.id), 1);
25
25
  }
26
26
  }
27
- ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, deps: [{ token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Component });
27
+ ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, deps: [{ token: i1.HeToastService }], target: i0.ɵɵFactoryTarget.Component });
28
28
  ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToastComponent, selector: "he-toast", ngImport: i0, template: "<div class=\"mb-3 columns is-centered is-vcentered\">\n <div class=\"notification is-{{toast.color}}\" role=\"alert\" *ngFor=\"let toast of toasts\">\n <button class=\"delete\" aria-label=\"delete\" (click)=\"dismiss(toast)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <strong [ngSwitch]=\"toast.color\">\n <ng-container *ngSwitchCase=\"'danger'\">\n <ng-container [ngSwitch]=\"toast.message\">\n <span *ngSwitchCase=\"'Unauthorized'\">You are not allowed to perform this action.</span>\n <span *ngSwitchCase=\"'form-invalid'\">Please fix all the errors on this page.</span>\n <span *ngSwitchCase=\"'users-email-already-taken'\">Email already taken.</span>\n <span *ngSwitchCase=\"'users-auth-already-taken'\">Account already connected.</span>\n <span *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </ng-container>\n </strong>\n </div>\n</div>\n", styles: [":host{bottom:0;position:fixed;width:100%}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, decorators: [{
30
30
  type: Component,
@@ -33,5 +33,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
33
33
  templateUrl: './toast.component.html',
34
34
  styleUrls: ['./toast.component.scss']
35
35
  }]
36
- }], ctorParameters: function () { return [{ type: i1.ToastService }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi90b2FzdC90b2FzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3RvYXN0L3RvYXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBYzdELE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQ1UsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFMNUIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBb0IsRUFBRSxDQUFDO0lBSWpDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxHQUFHLENBQUMsS0FBb0I7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZFO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFvQjtRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7OzRHQTFCVSxjQUFjO2dHQUFkLGNBQWMsZ0RDZDNCLDYzQ0F5QkE7NEZEWGEsY0FBYztrQkFMMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsU0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRvYXN0U2VydmljZSwgSVRvYXN0IH0gZnJvbSAnLi4vdG9hc3Quc2VydmljZSc7XG5cbmludGVyZmFjZSBJVG9hc3RUaW1lb3V0IGV4dGVuZHMgSVRvYXN0IHtcbiAgdGltZW91dD86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtdG9hc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2FzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHVibGljIHRvYXN0czogSVRvYXN0VGltZW91dFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b2FzdFNlcnZpY2UudG9hc3RzLnN1YnNjcmliZSh0b2FzdCA9PiB0aGlzLmFkZCh0b2FzdCkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZCh0b2FzdDogSVRvYXN0VGltZW91dCkge1xuICAgIHRoaXMudG9hc3RzLnB1c2godG9hc3QpO1xuICAgIGlmICh0b2FzdC5kdXJhdGlvbikge1xuICAgICAgdG9hc3QudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kaXNtaXNzKHRvYXN0KSwgdG9hc3QuZHVyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNtaXNzKHRvYXN0OiBJVG9hc3RUaW1lb3V0KSB7XG4gICAgdGhpcy50b2FzdHMuc3BsaWNlKHRoaXMudG9hc3RzLmZpbmRJbmRleCh2YWwgPT4gdmFsLmlkID09PSB0b2FzdC5pZCksIDEpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWItMyBjb2x1bW5zIGlzLWNlbnRlcmVkIGlzLXZjZW50ZXJlZFwiPlxuICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uIGlzLXt7dG9hc3QuY29sb3J9fVwiIHJvbGU9XCJhbGVydFwiICpuZ0Zvcj1cImxldCB0b2FzdCBvZiB0b2FzdHNcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZGVsZXRlXCIgYXJpYS1sYWJlbD1cImRlbGV0ZVwiIChjbGljayk9XCJkaXNtaXNzKHRvYXN0KVwiPlxuICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8c3Ryb25nIFtuZ1N3aXRjaF09XCJ0b2FzdC5jb2xvclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhbmdlcidcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidG9hc3QubWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInVW5hdXRob3JpemVkJ1wiPllvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmb3JtLWludmFsaWQnXCI+UGxlYXNlIGZpeCBhbGwgdGhlIGVycm9ycyBvbiB0aGlzIHBhZ2UuPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndXNlcnMtZW1haWwtYWxyZWFkeS10YWtlbidcIj5FbWFpbCBhbHJlYWR5IHRha2VuLjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXJzLWF1dGgtYWxyZWFkeS10YWtlbidcIj5BY2NvdW50IGFscmVhZHkgY29ubmVjdGVkLjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2FzdC5zaG93UmF3TWVzc2FnZVwiPnt7dG9hc3QubWVzc2FnZX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmlzLWhpZGRlbl09XCJ0b2FzdC5zaG93UmF3TWVzc2FnZVwiPkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2FzdC5zaG93UmF3TWVzc2FnZVwiPnt7dG9hc3QubWVzc2FnZX19PC9zcGFuPlxuICAgICAgICA8c3BhbiBbY2xhc3MuaXMtaGlkZGVuXT1cInRvYXN0LnNob3dSYXdNZXNzYWdlXCI+QW4gdW5rbm93biBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci48L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3N0cm9uZz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
36
+ }], ctorParameters: function () { return [{ type: i1.HeToastService }]; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi90b2FzdC90b2FzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3RvYXN0L3RvYXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBYzdELE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQ1UsWUFBNEI7UUFBNUIsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBTDlCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxXQUFNLEdBQW9CLEVBQUUsQ0FBQztJQUlqQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sR0FBRyxDQUFDLEtBQW9CO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNsQixLQUFLLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2RTtJQUNILENBQUM7SUFFTSxPQUFPLENBQUMsS0FBb0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDOzs0R0ExQlUsY0FBYztnR0FBZCxjQUFjLGdEQ2QzQiw2M0NBeUJBOzRGRFhhLGNBQWM7a0JBTDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBIZVRvYXN0U2VydmljZSwgSVRvYXN0IH0gZnJvbSAnLi4vdG9hc3Quc2VydmljZSc7XG5cbmludGVyZmFjZSBJVG9hc3RUaW1lb3V0IGV4dGVuZHMgSVRvYXN0IHtcbiAgdGltZW91dD86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtdG9hc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2FzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHVibGljIHRvYXN0czogSVRvYXN0VGltZW91dFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IEhlVG9hc3RTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvYXN0U2VydmljZS50b2FzdHMuc3Vic2NyaWJlKHRvYXN0ID0+IHRoaXMuYWRkKHRvYXN0KSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkKHRvYXN0OiBJVG9hc3RUaW1lb3V0KSB7XG4gICAgdGhpcy50b2FzdHMucHVzaCh0b2FzdCk7XG4gICAgaWYgKHRvYXN0LmR1cmF0aW9uKSB7XG4gICAgICB0b2FzdC50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmRpc21pc3ModG9hc3QpLCB0b2FzdC5kdXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc21pc3ModG9hc3Q6IElUb2FzdFRpbWVvdXQpIHtcbiAgICB0aGlzLnRvYXN0cy5zcGxpY2UodGhpcy50b2FzdHMuZmluZEluZGV4KHZhbCA9PiB2YWwuaWQgPT09IHRvYXN0LmlkKSwgMSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi0zIGNvbHVtbnMgaXMtY2VudGVyZWQgaXMtdmNlbnRlcmVkXCI+XG4gIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24gaXMte3t0b2FzdC5jb2xvcn19XCIgcm9sZT1cImFsZXJ0XCIgKm5nRm9yPVwibGV0IHRvYXN0IG9mIHRvYXN0c1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBhcmlhLWxhYmVsPVwiZGVsZXRlXCIgKGNsaWNrKT1cImRpc21pc3ModG9hc3QpXCI+XG4gICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxzdHJvbmcgW25nU3dpdGNoXT1cInRvYXN0LmNvbG9yXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGFuZ2VyJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0b2FzdC5tZXNzYWdlXCI+XG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidVbmF1dGhvcml6ZWQnXCI+WW91IGFyZSBub3QgYWxsb3dlZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm0taW52YWxpZCdcIj5QbGVhc2UgZml4IGFsbCB0aGUgZXJyb3JzIG9uIHRoaXMgcGFnZS48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid1c2Vycy1lbWFpbC1hbHJlYWR5LXRha2VuJ1wiPkVtYWlsIGFscmVhZHkgdGFrZW4uPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndXNlcnMtYXV0aC1hbHJlYWR5LXRha2VuJ1wiPkFjY291bnQgYWxyZWFkeSBjb25uZWN0ZWQuPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvYXN0LnNob3dSYXdNZXNzYWdlXCI+e3t0b2FzdC5tZXNzYWdlfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtaGlkZGVuXT1cInRvYXN0LnNob3dSYXdNZXNzYWdlXCI+QW4gdW5rbm93biBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8c3BhbiAqbmdJZj1cInRvYXN0LnNob3dSYXdNZXNzYWdlXCI+e3t0b2FzdC5tZXNzYWdlfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIFtjbGFzcy5pcy1oaWRkZW5dPVwidG9hc3Quc2hvd1Jhd01lc3NhZ2VcIj5BbiB1bmtub3duIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc3Ryb25nPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
2
2
  import { ReplaySubject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  let toastId = 0;
5
- export class ToastService {
5
+ export class HeToastService {
6
6
  constructor() {
7
7
  this.toasts = new ReplaySubject(1);
8
8
  }
@@ -25,12 +25,12 @@ export class ToastService {
25
25
  });
26
26
  }
27
27
  }
28
- ToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
- ToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastService, providedIn: 'root' });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastService, decorators: [{
28
+ HeToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ HeToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, providedIn: 'root' });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, decorators: [{
31
31
  type: Injectable,
32
32
  args: [{
33
33
  providedIn: 'root'
34
34
  }]
35
35
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBVXJDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUtoQixNQUFNLE9BQU8sWUFBWTtJQUh6QjtRQUlFLFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztLQXFCdkM7SUFuQkMsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLEVBQUUsRUFBRSxFQUFFLE9BQU87WUFDYixPQUFPO1lBQ1AsUUFBUTtZQUNSLEtBQUssRUFBRSxTQUFTO1lBQ2hCLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLGNBQWMsR0FBRyxJQUFJLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZixFQUFFLEVBQUUsRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDcEMsUUFBUTtZQUNSLEtBQUssRUFBRSxRQUFRO1lBQ2YsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7OzBHQXJCVSxZQUFZOzhHQUFaLFlBQVksY0FGWCxNQUFNOzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdCB7XG4gIGlkOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgY29sb3I6ICdzdWNjZXNzJ3wnZGFuZ2VyJztcbiAgc2hvd1Jhd01lc3NhZ2U/OiBib29sZWFuO1xufVxuXG5sZXQgdG9hc3RJZCA9IDA7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0U2VydmljZSB7XG4gIHRvYXN0cyA9IG5ldyBSZXBsYXlTdWJqZWN0PElUb2FzdD4oMSk7XG5cbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gMzAwMCkge1xuICAgIHRoaXMudG9hc3RzLm5leHQoe1xuICAgICAgaWQ6ICsrdG9hc3RJZCxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkdXJhdGlvbixcbiAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICBzaG93UmF3TWVzc2FnZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBzaG93UmF3TWVzc2FnZSA9IHRydWUsIGR1cmF0aW9uID0gMzAwMCkge1xuICAgIHRoaXMudG9hc3RzLm5leHQoe1xuICAgICAgaWQ6ICsrdG9hc3RJZCxcbiAgICAgIG1lc3NhZ2U6IChgJHttZXNzYWdlfWAgfHwgJycpLnRyaW0oKSxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgc2hvd1Jhd01lc3NhZ2VcbiAgICB9KTtcbiAgfVxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBVXJDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUtoQixNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUlFLFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztLQXFCdkM7SUFuQkMsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLEVBQUUsRUFBRSxFQUFFLE9BQU87WUFDYixPQUFPO1lBQ1AsUUFBUTtZQUNSLEtBQUssRUFBRSxTQUFTO1lBQ2hCLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLGNBQWMsR0FBRyxJQUFJLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZixFQUFFLEVBQUUsRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDcEMsUUFBUTtZQUNSLEtBQUssRUFBRSxRQUFRO1lBQ2YsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQXJCVSxjQUFjO2dIQUFkLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdCB7XG4gIGlkOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgY29sb3I6ICdzdWNjZXNzJ3wnZGFuZ2VyJztcbiAgc2hvd1Jhd01lc3NhZ2U/OiBib29sZWFuO1xufVxuXG5sZXQgdG9hc3RJZCA9IDA7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlVG9hc3RTZXJ2aWNlIHtcbiAgdG9hc3RzID0gbmV3IFJlcGxheVN1YmplY3Q8SVRvYXN0PigxKTtcblxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24gPSAzMDAwKSB7XG4gICAgdGhpcy50b2FzdHMubmV4dCh7XG4gICAgICBpZDogKyt0b2FzdElkLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgIHNob3dSYXdNZXNzYWdlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHNob3dSYXdNZXNzYWdlID0gdHJ1ZSwgZHVyYXRpb24gPSAzMDAwKSB7XG4gICAgdGhpcy50b2FzdHMubmV4dCh7XG4gICAgICBpZDogKyt0b2FzdElkLFxuICAgICAgbWVzc2FnZTogKGAke21lc3NhZ2V9YCB8fCAnJykudHJpbSgpLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICBzaG93UmF3TWVzc2FnZVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -5,6 +5,7 @@ import { fileToExt } from '@hestia-earth/api';
5
5
  import { isEmpty } from '@hestia-earth/utils';
6
6
  export const gitHome = 'https://gitlab.com/hestia-earth';
7
7
  export const gitRawBaseUrl = 'https://glcdn.githack.com/hestia-earth';
8
+ export const gitBranch = () => ['dev', 'staging'].some(env => baseUrl().includes(env)) ? 'develop' : 'master';
8
9
  export const isChrome = () => window.navigator.userAgent.includes('Chrome');
9
10
  export const baseUrl = () => window.location.origin.includes('localhost') ?
10
11
  'https://www-dev.hestia.earth' :
@@ -13,16 +14,6 @@ export const baseUrl = () => window.location.origin.includes('localhost') ?
13
14
  'https://www.hestia.earth';
14
15
  export const isExternal = () => baseUrl() !== window.location.origin;
15
16
  ;
16
- export const loadScript = (src) => new Promise((resolve, reject) => {
17
- if (!src || document.body.querySelectorAll('script[src="' + src + '"]').length > 0) {
18
- return resolve({});
19
- }
20
- const script = document.createElement('script');
21
- script.onload = resolve;
22
- script.onerror = reject;
23
- script.src = src;
24
- document.body.appendChild(script);
25
- });
26
17
  const parseErrorStatus = (error) => ((error === null || error === void 0 ? void 0 : error.statusText) || '').toLowerCase().replace(/\s/g, '-');
27
18
  const parseErrorMessage = (error) => get(error, 'error.error', get(error, 'error.message', get(error, 'error', get(error, 'message', error))));
28
19
  export const handleAPIError = (error) => {
@@ -39,20 +30,6 @@ export const errorText = (error) => {
39
30
  const err = parseErrorMessage(error);
40
31
  return parseErrorStatus(err) || err;
41
32
  };
42
- export const toFormData = (data, formData = new FormData()) => {
43
- for (const key in data) {
44
- if (data.hasOwnProperty(key)) {
45
- const value = data[key];
46
- if (typeof value === 'object') {
47
- formData.append(key, JSON.stringify(value));
48
- }
49
- else {
50
- formData.append(key, value);
51
- }
52
- }
53
- }
54
- return formData;
55
- };
56
33
  export const filterParams = (obj) => {
57
34
  const res = {};
58
35
  Object.keys(obj).sort().forEach(key => {
@@ -63,13 +40,6 @@ export const filterParams = (obj) => {
63
40
  });
64
41
  return res;
65
42
  };
66
- export const toSearchParams = (params = {}) => {
67
- const searchParams = new URLSearchParams();
68
- Object.keys(params)
69
- .filter(key => typeof params[key] !== 'undefined')
70
- .forEach(key => searchParams.append(key, `${params[key]}`));
71
- return searchParams;
72
- };
73
43
  export const waitFor = (variable, callback) => {
74
44
  if (variable in window) {
75
45
  return callback();
@@ -83,23 +53,6 @@ export const scrollToEl = (id, retries = 0) => {
83
53
  setTimeout(() => el ? el.scrollIntoView() : (retries < 10 ? scrollToEl(id, retries + 1) : null), 100);
84
54
  };
85
55
  export const scrollTop = () => window.scrollTo(0, 0);
86
- export const animateCounter = (total, callback) => {
87
- let animationDuration = 10;
88
- const step = Math.pow(10, `${total}`.length - 1);
89
- const maxSteps = parseInt(`${total / step}`, 10);
90
- let current = 0;
91
- const interval = setInterval(() => {
92
- callback(current);
93
- current += (step / animationDuration);
94
- if (current > maxSteps * step) {
95
- animationDuration = 100;
96
- }
97
- if (current > total) {
98
- callback(total);
99
- clearInterval(interval);
100
- }
101
- }, animationDuration);
102
- };
103
56
  export const safeJSONParse = (value, defaultValue) => {
104
57
  try {
105
58
  return typeof value === 'string' ? JSON.parse(value) : value;
@@ -180,7 +133,6 @@ export const groupNodesByTerm = (nodes = [], key, originalValues = [], filterMet
180
133
  });
181
134
  return groups;
182
135
  };
183
- export const sortByFn = (key, asc) => (a, b) => asc ? get(a, key, '').localeCompare(get(b, key, '')) : get(b, key, '').localeCompare(get(a, key, ''));
184
136
  export const ellipsis = (text = '', maxlength = 20) => text.length > maxlength ? `${text.substring(0, maxlength)}...` : text;
185
137
  const mapsQuery = 'https://www.google.com/maps/search/?api=1&query=';
186
138
  export const mapsUrl = (location) => location ? (location.lat && location.lng ?
@@ -200,8 +152,6 @@ export const toDashCase = (value) => value ?
200
152
  // handle years
201
153
  .replace(/([0-9]{4})/g, g => `-${g}`) :
202
154
  null;
203
- export const nodeTypeToString = (type) => `${type.charAt(0).toLowerCase()}${type.substring(1)}`;
204
- export const parseNodeType = (type) => Object.values(NodeType).find(v => v.toString().toLowerCase() === (type || '').toLowerCase());
205
155
  const nodeDefaultLabel = {
206
156
  [NodeType.ImpactAssessment]: ({ name, country, endDate, product }) => name ? name.replace(`${product === null || product === void 0 ? void 0 : product.name}, `, '') : [
207
157
  product === null || product === void 0 ? void 0 : product.name,
@@ -213,15 +163,6 @@ const nodeDefaultLabel = {
213
163
  export const defaultLabel = (node) => node ? (node['@type'] in nodeDefaultLabel ? nodeDefaultLabel[node['@type']](node) : node.name) || node['@id'] || node.id : '';
214
164
  export const itemColor = (index) => getColor({ text: `${index}` });
215
165
  export const listColor = (_v, index) => itemColor(index);
216
- export const minutesBefore = (date, minutes = 1) => {
217
- date.setMinutes(date.getMinutes() - minutes);
218
- return date;
219
- };
220
- export const hoursBefore = (date, hours = 1) => {
221
- date.setHours(date.getHours() - hours);
222
- return date;
223
- };
224
- export const repeat = (times = 0) => (Array.from(Array(times), Math.random));
225
166
  export var DeltaDisplayType;
226
167
  (function (DeltaDisplayType) {
227
168
  DeltaDisplayType["absolute"] = "absolute";
@@ -246,9 +187,10 @@ export var DeltaColour;
246
187
  DeltaColour["Danger"] = "danger";
247
188
  })(DeltaColour || (DeltaColour = {}));
248
189
  export const emptyValue = (value) => isEmpty(value) || isNaN(propertyValue(value));
190
+ export const repeat = (times = 0) => (Array.from(Array(times), Math.random));
249
191
  export const filenameWithoutExt = (filename = '') => {
250
192
  const file = fileToExt(filename, '');
251
193
  // remove last .
252
194
  return file.endsWith('.') ? file.substring(0, file.length - 1) : file;
253
195
  };
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUNMLFFBQVEsRUFBb0Usa0JBQWtCLEVBQy9GLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsaUNBQWlDLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLHdDQUF3QyxDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1Qyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsMEJBQTBCLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQUEsQ0FBQztBQUV0RSxNQUFNLENB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QUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLGdCQUFnQjtJQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN4RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXQgPSByZXF1aXJlKCdsb2Rhc2guZ2V0Jyk7XG5pbXBvcnQgeyBnZXRDb2xvciB9IGZyb20gJ3JhbmRvbS1tYXRlcmlhbC1jb2xvcic7XG5pbXBvcnQge1xuICBOb2RlVHlwZSwgVGVybSwgSlNPTkxELCBJQ3ljbGVKU09OTEQsIElTaXRlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgRW1pc3Npb25NZXRob2RUaWVyXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGZpbGVUb0V4dCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGdpdEhvbWUgPSAnaHR0cHM6Ly9naXRsYWIuY29tL2hlc3RpYS1lYXJ0aCc7XG5leHBvcnQgY29uc3QgZ2l0UmF3QmFzZVVybCA9ICdodHRwczovL2dsY2RuLmdpdGhhY2suY29tL2hlc3RpYS1lYXJ0aCc7XG5cbmV4cG9ydCBjb25zdCBpc0Nocm9tZSA9ICgpID0+IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdDaHJvbWUnKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VVcmwgPSAoKSA9PlxuICB3aW5kb3cubG9jYXRpb24ub3JpZ2luLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSA/XG4gICAgJ2h0dHBzOi8vd3d3LWRldi5oZXN0aWEuZWFydGgnIDpcbiAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luLmluY2x1ZGVzKCdoZXN0aWEuZWFydGgnKSA/XG4gICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luIDpcbiAgICAgICdodHRwczovL3d3dy5oZXN0aWEuZWFydGgnO1xuXG5leHBvcnQgY29uc3QgaXNFeHRlcm5hbCA9ICgpID0+IGJhc2VVcmwoKSAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjs7XG5cbmV4cG9ydCBjb25zdCBsb2FkU2NyaXB0ID0gKHNyYz86IHN0cmluZykgPT4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGlmICghc3JjIHx8IGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0W3NyYz1cIicgKyBzcmMgKyAnXCJdJykubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgfVxuXG4gIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICBzY3JpcHQub25sb2FkID0gcmVzb2x2ZTtcbiAgc2NyaXB0Lm9uZXJyb3IgPSByZWplY3Q7XG4gIHNjcmlwdC5zcmMgPSBzcmM7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbn0pO1xuXG5jb25zdCBwYXJzZUVycm9yU3RhdHVzID0gKGVycm9yOiBhbnkpID0+IChlcnJvcj8uc3RhdHVzVGV4dCB8fCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMvZywgJy0nKTtcblxuY29uc3QgcGFyc2VFcnJvck1lc3NhZ2UgPSAoZXJyb3I6IGFueSkgPT5cbiAgZ2V0KGVycm9yLCAnZXJyb3IuZXJyb3InLCBnZXQoZXJyb3IsICdlcnJvci5tZXNzYWdlJywgZ2V0KGVycm9yLCAnZXJyb3InLCBnZXQoZXJyb3IsICdtZXNzYWdlJywgZXJyb3IpKSkpO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQVBJRXJyb3IgPSAoZXJyb3I6IGFueSkgPT4ge1xuICB0cnkge1xuICAgIGVycm9yID0gcGFyc2VFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICB9XG4gIGNhdGNoIChfKSB7IH1cbiAgdGhyb3cgZXJyb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JUZXh0ID0gKGVycm9yOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICBjb25zdCBlcnIgPSBwYXJzZUVycm9yTWVzc2FnZShlcnJvcik7XG4gIHJldHVybiBwYXJzZUVycm9yU3RhdHVzKGVycikgfHwgZXJyO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvRm9ybURhdGEgPSAoZGF0YTogYW55LCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybURhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyUGFyYW1zID0gKG9iajogYW55KSA9PiB7XG4gIGNvbnN0IHJlczoge1xuICAgIFt4OiBzdHJpbmddOiBzdHJpbmc7XG4gIH0gPSB7fTtcbiAgT2JqZWN0LmtleXMob2JqKS5zb3J0KCkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmVzW2tleV0gPSBgJHt2YWx1ZX1gO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TZWFyY2hQYXJhbXMgPSAocGFyYW1zOiBhbnkgPSB7fSkgPT4ge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIE9iamVjdC5rZXlzKHBhcmFtcylcbiAgICAuZmlsdGVyKGtleSA9PiB0eXBlb2YgcGFyYW1zW2tleV0gIT09ICd1bmRlZmluZWQnKVxuICAgIC5mb3JFYWNoKGtleSA9PiBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgYCR7cGFyYW1zW2tleV19YCkpO1xuICByZXR1cm4gc2VhcmNoUGFyYW1zO1xufTtcblxuZXhwb3J0IGNvbnN0IHdhaXRGb3IgPSAodmFyaWFibGU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHtcbiAgaWYgKHZhcmlhYmxlIGluIHdpbmRvdykge1xuICAgIHJldHVybiBjYWxsYmFjaygpO1xuICB9XG4gIHNldFRpbWVvdXQoKCkgPT4gd2FpdEZvcih2YXJpYWJsZSwgY2FsbGJhY2spLCAxMDApO1xufTtcblxuZXhwb3J0IGNvbnN0IGJvdHRvbSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuZXhwb3J0IGNvbnN0IGlzU2Nyb2xsZWRCZWxvdyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gZWxlbWVudCA/IHdpbmRvdy5zY3JvbGxZID4gYm90dG9tKGVsZW1lbnQpIDogZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb0VsID0gKGlkOiBzdHJpbmcsIHJldHJpZXMgPSAwKSA9PiB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICBzZXRUaW1lb3V0KCgpID0+IGVsID8gZWwuc2Nyb2xsSW50b1ZpZXcoKSA6IChyZXRyaWVzIDwgMTAgPyBzY3JvbGxUb0VsKGlkLCByZXRyaWVzICsgMSkgOiBudWxsKSwgMTAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbmV4cG9ydCBjb25zdCBhbmltYXRlQ291bnRlciA9ICh0b3RhbDogbnVtYmVyLCBjYWxsYmFjazogKGNvdW50OiBudW1iZXIpID0+IHZvaWQpID0+IHtcbiAgbGV0IGFuaW1hdGlvbkR1cmF0aW9uID0gMTA7XG4gIGNvbnN0IHN0ZXAgPSBNYXRoLnBvdygxMCwgYCR7dG90YWx9YC5sZW5ndGggLSAxKTtcbiAgY29uc3QgbWF4U3RlcHMgPSBwYXJzZUludChgJHt0b3RhbCAvIHN0ZXB9YCwgMTApO1xuICBsZXQgY3VycmVudCA9IDA7XG4gIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgIGNhbGxiYWNrKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgKz0gKHN0ZXAgLyBhbmltYXRpb25EdXJhdGlvbik7XG4gICAgaWYgKGN1cnJlbnQgPiBtYXhTdGVwcyAqIHN0ZXApIHtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gMTAwO1xuICAgIH1cbiAgICBpZiAoY3VycmVudCA+IHRvdGFsKSB7XG4gICAgICBjYWxsYmFjayh0b3RhbCk7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICB9XG4gIH0sIGFuaW1hdGlvbkR1cmF0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYWZlSlNPTlBhcnNlID0gPFQ+KHZhbHVlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IGFueSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgVCA6IHZhbHVlO1xuICB9XG4gIGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05TdHJpbmdpZnkgPSAodmFsdWU6IHN0cmluZykgPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXG5leHBvcnQgY29uc3QgYXJyYXlWYWx1ZSA9ICh2YWx1ZXM6IGFueVtdLCBpc0F2ZXJhZ2U6IGJvb2xlYW4pID0+XG4gICh2YWx1ZXMgfHwgW10pLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyKSA9PiBwcmV2ICsgcGFyc2VGbG9hdChgJHtjdXJyfWApLCAwKSAvIChpc0F2ZXJhZ2UgPyB2YWx1ZXMubGVuZ3RoIDogMSk7XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0eVZhbHVlID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCAoKHN0cmluZyB8IG51bWJlcilbXSksIGlzQXZlcmFnZSA9IGZhbHNlKTogbnVtYmVyID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwgP1xuICAgIG51bGwgYXMgYW55IDpcbiAgICAoXG4gICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IGFycmF5VmFsdWUodmFsdWUsIGlzQXZlcmFnZSkgOiBwYXJzZUZsb2F0KGAke3ZhbHVlfWApXG4gICAgKTtcblxuZXhwb3J0IGNvbnN0IGRhdGFWYWx1ZSA9IChkYXRhOiBhbnksIGluZGV4OiBudW1iZXIsIHByb3BlcnR5OiBzdHJpbmcpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJvcGVydHlWYWx1ZShkYXRhW3Byb3BlcnR5XVtpbmRleF0udmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGU8VD4ge1xuICBub2RlczogVFtdO1xuICBpbmRleDogbnVtYmVyO1xuICB2YWx1ZTogbnVtYmVyW107XG4gIGRhdGVzPzogYW55W107XG4gIHNkPzogbnVtYmVyW107XG4gIG1pbj86IG51bWJlcltdO1xuICBtYXg/OiBudW1iZXJbXTtcbiAgaW5wdXRzPzogYW55W107XG4gIGRlcHRoVXBwZXI/OiBudW1iZXJbXTtcbiAgZGVwdGhMb3dlcj86IG51bWJlcltdO1xuICBzdGFydERhdGU/OiBzdHJpbmdbXTtcbiAgZW5kRGF0ZT86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGVzVmFsdWVzPFQ+IHtcbiAgW25vZGVJZDogc3RyaW5nXTogSUdyb3VwZWROb2RlPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXNWYWx1ZTxUPiB7XG4gIHRlcm06IFRlcm07XG4gIC8qKlxuICAgKiBFbmFibGUgb3JkZXJpbmcgbnkgbWV0aG9kVGllclxuICAgKi9cbiAgbWV0aG9kVGllck9yZGVyOiBudW1iZXI7XG4gIHZhbHVlczogSUdyb3VwZWROb2Rlc1ZhbHVlczxUPjtcbiAgb3JpZ2luYWxWYWx1ZXM6IHtcbiAgICBbbm9kZUlkOiBzdHJpbmddOiB7XG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXM8VD4ge1xuICBbdGVybUlkOiBzdHJpbmddOiBJR3JvdXBlZE5vZGVzVmFsdWU8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWRLZXlzPFQ+IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBJR3JvdXBlZE5vZGVzVmFsdWU8VD47XG59XG5cbmV4cG9ydCBjb25zdCBncm91cHBlZEtleXMgPSA8VD4odmFsdWU6IElHcm91cGVkTm9kZXM8VD4pOiBJR3JvdXBlZEtleXM8VD5bXSA9PlxuICBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKGtleSA9PiAoeyBrZXksIHZhbHVlOiB2YWx1ZVtrZXldIH0pKTtcblxuY29uc3QgY29uY2F0QmxhbmtOb2RlVmFsdWUgPSAodmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gIGNvbnN0IG5ld1ZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSA/IG5ld1ZhbHVlIDogW25ld1ZhbHVlXTtcbiAgcmV0dXJuIFsuLi52YWx1ZUFycmF5LCAuLi5uZXdWYWx1ZUFycmF5XTtcbn07XG5cbmNvbnN0IG1ldGhvZFRpZXJPcmRlciA9IChtZXRob2RUaWVyOiBFbWlzc2lvbk1ldGhvZFRpZXIpID0+IFtcbiAgRW1pc3Npb25NZXRob2RUaWVyLm1lYXN1cmVkLFxuICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMyddLFxuICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMiddLFxuICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMSddLFxuICBFbWlzc2lvbk1ldGhvZFRpZXIuYmFja2dyb3VuZFxuXS5pbmRleE9mKG1ldGhvZFRpZXIpO1xuXG5jb25zdCBpc01ldGhvZE1vZGVsQWxsb3dlZCA9IChub2RlOiBhbnksIGZpbHRlck1ldGhvZD86IFRlcm0pID0+XG4gICFmaWx0ZXJNZXRob2QgfHwgIW5vZGVbJ21ldGhvZE1vZGVsJ10gfHwgbm9kZVsnbWV0aG9kTW9kZWwnXVsnQGlkJ10gPT09IGZpbHRlck1ldGhvZFsnQGlkJ107XG5cbmV4cG9ydCBjb25zdCBncm91cHBlZFZhbHVlS2V5cyA9IFtcbiAgJ2RhdGVzJywgJ3NkJywgJ21pbicsICdtYXgnLCAnaW5wdXRzJywgJ2RlcHRoVXBwZXInLCAnZGVwdGhMb3dlcicsICdzdGFydERhdGUnLCAnZW5kRGF0ZScsXG4gICdtZXRob2RUaWVyJywgJ21ldGhvZE1vZGVsJ1xuXTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwTm9kZXNCeVRlcm0gPSA8VCBleHRlbmRzIElDeWNsZUpTT05MRCB8IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEIHwgSVNpdGVKU09OTEQsIFI+KFxuICBub2RlczogVFtdID0gW10sXG4gIGtleTogJ2ltcGFjdHMnIHwgJ2VtaXNzaW9uc1Jlc291cmNlVXNlJyB8ICdpbnB1dHMnIHwgJ3Byb2R1Y3RzJyB8ICdlbWlzc2lvbnMnIHwgJ21lYXN1cmVtZW50cycsXG4gIG9yaWdpbmFsVmFsdWVzOiBUW10gPSBbXSxcbiAgZmlsdGVyTWV0aG9kPzogVGVybVxuKTogSUdyb3VwZWROb2RlczxSPiA9PiB7XG4gIGNvbnN0IGdyb3VwczogSUdyb3VwZWROb2RlczxSPiA9IG5vZGVzLnJlZHVjZSgocHJldiwgbm9kZSwgaW5kZXgpID0+IChub2RlW2tleV0gfHwgW10pLnJlZHVjZSgoZ3JvdXAsIGJsYW5rTm9kZSkgPT4ge1xuICAgIGlmICghaXNNZXRob2RNb2RlbEFsbG93ZWQoYmxhbmtOb2RlLCBmaWx0ZXJNZXRob2QpKSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZUlkID0gbm9kZVsnQGlkJ107XG4gICAgY29uc3QgdGVybUlkID0gYmxhbmtOb2RlLnRlcm1bJ0BpZCddO1xuICAgIGdyb3VwW3Rlcm1JZF0gPSBncm91cFt0ZXJtSWRdIHx8IHtcbiAgICAgIHRlcm06IGJsYW5rTm9kZS50ZXJtLFxuICAgICAgbWV0aG9kVGllck9yZGVyOiBtZXRob2RUaWVyT3JkZXIoYmxhbmtOb2RlLm1ldGhvZFRpZXIpLFxuICAgICAgdmFsdWVzOiB7fSxcbiAgICAgIG9yaWdpbmFsVmFsdWVzOiB7fVxuICAgIH07XG4gICAgZ3JvdXBbdGVybUlkXS52YWx1ZXNbbm9kZUlkXSA9IGdyb3VwW3Rlcm1JZF0udmFsdWVzW25vZGVJZF0gfHwgeyBpbmRleCwgbm9kZXM6IFtdLCB2YWx1ZTogW10gfTtcbiAgICBncm91cFt0ZXJtSWRdLnZhbHVlc1tub2RlSWRdLm5vZGVzLnB1c2goYmxhbmtOb2RlKTtcbiAgICBncm91cFt0ZXJtSWRdLnZhbHVlc1tub2RlSWRdLnZhbHVlID0gY29uY2F0QmxhbmtOb2RlVmFsdWUoXG4gICAgICBncm91cFt0ZXJtSWRdLnZhbHVlc1tub2RlSWRdLnZhbHVlLFxuICAgICAgYmxhbmtOb2RlLnZhbHVlXG4gICAgKTtcbiAgICBncm91cHBlZFZhbHVlS2V5cy5mb3JFYWNoKGFycmF5S2V5ID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0KGJsYW5rTm9kZSwgYXJyYXlLZXksIFtdKTtcbiAgICAgIGdyb3VwW3Rlcm1JZF0udmFsdWVzW25vZGVJZF1bYXJyYXlLZXldID0gW1xuICAgICAgICAuLi4oZ3JvdXBbdGVybUlkXS52YWx1ZXNbbm9kZUlkXVthcnJheUtleV0gfHwgW10pLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkgPyBuZXdWYWx1ZSA6IFtuZXdWYWx1ZV0pXG4gICAgICBdO1xuICAgIH0pO1xuICAgIHJldHVybiBncm91cDtcbiAgfSwgcHJldiksIHt9IGFzIElHcm91cGVkTm9kZXM8Uj4pO1xuXG4gIC8vIGNvbXBpbGUgb3JpZ2luYWwgdmFsdWVzXG4gIE9iamVjdC52YWx1ZXMoZ3JvdXBzKS5tYXAoZ3JvdXAgPT4ge1xuICAgIE9iamVjdC5rZXlzKGdyb3VwLnZhbHVlcykubWFwKG5vZGVJZCA9PiB7XG4gICAgICBjb25zdCB7IGluZGV4IH0gPSBncm91cC52YWx1ZXNbbm9kZUlkXTtcbiAgICAgIGNvbnN0IHRlcm1JZCA9IGdyb3VwLnRlcm1bJ0BpZCddO1xuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGdldChvcmlnaW5hbFZhbHVlcywgYFske2luZGV4fV0uJHtrZXl9YCwgW10pLmZpbHRlcigodmFsOiBhbnkpID0+IHZhbC50ZXJtWydAaWQnXSA9PT0gdGVybUlkKTtcbiAgICAgIGlmIChvcmlnaW5hbFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvcmlnaW5hbFZhbHVlLnJlZHVjZSgoYXJyYXk6IGFueVtdLCBjdXJyOiBhbnkpID0+IGNvbmNhdEJsYW5rTm9kZVZhbHVlKFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGN1cnIudmFsdWVcbiAgICAgICAgKSwgW10pO1xuICAgICAgICBncm91cC5vcmlnaW5hbFZhbHVlc1tub2RlSWRdID0geyB2YWx1ZTogcHJvcGVydHlWYWx1ZSh2YWx1ZSkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0QnlGbiA9IChrZXk6IHN0cmluZywgYXNjOiBib29sZWFuKSA9PiA8VD4oYTogVCwgYjogVCk6IG51bWJlciA9PlxuICBhc2MgPyBnZXQoYSwga2V5LCAnJykubG9jYWxlQ29tcGFyZShnZXQoYiwga2V5LCAnJykpIDogZ2V0KGIsIGtleSwgJycpLmxvY2FsZUNvbXBhcmUoZ2V0KGEsIGtleSwgJycpKTtcblxuZXhwb3J0IGNvbnN0IGVsbGlwc2lzID0gKHRleHQgPSAnJywgbWF4bGVuZ3RoID0gMjApID0+XG4gIHRleHQubGVuZ3RoID4gbWF4bGVuZ3RoID8gYCR7dGV4dC5zdWJzdHJpbmcoMCwgbWF4bGVuZ3RoKX0uLi5gIDogdGV4dDtcblxuY29uc3QgbWFwc1F1ZXJ5ID0gJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9zZWFyY2gvP2FwaT0xJnF1ZXJ5PSc7XG5cbmV4cG9ydCBjb25zdCBtYXBzVXJsID0gKGxvY2F0aW9uPzogeyBsYXQ/OiBudW1iZXI7IGxuZz86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9KSA9PlxuICBsb2NhdGlvbiA/IChcbiAgICBsb2NhdGlvbi5sYXQgJiYgbG9jYXRpb24ubG5nID9cbiAgICAgIGAke21hcHNRdWVyeX0ke2xvY2F0aW9uLmxhdH0sJHtsb2NhdGlvbi5sbmd9YCA6XG4gICAgICAobG9jYXRpb24ubmFtZSA/IGAke21hcHNRdWVyeX0ke2VuY29kZVVSSShsb2NhdGlvbi5uYW1lKX1gIDogdW5kZWZpbmVkKVxuICApIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3Qga2V5VG9MYWJlbCA9IChrZXk6IHN0cmluZykgPT5cbiAgYCR7a2V5WzBdLnRvVXBwZXJDYXNlKCl9JHtcbiAgICBrZXkucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC5yZXBsYWNlKC8oW19dKShbYS16QS1aXSkvZywgZyA9PiBgICR7Z1sxXS50b1VwcGVyQ2FzZSgpfWApXG4gICAgICAuc3Vic3RyaW5nKDEpXG4gIH1gO1xuXG5leHBvcnQgY29uc3QgdG9EYXNoQ2FzZSA9ICh2YWx1ZT86IHN0cmluZykgPT5cbiAgdmFsdWUgP1xuICAgIHZhbHVlXG4gICAgICAvLyBoYW5kbGUgZGF0ZXMgZm9sbG93ZWQgYnkgY2FwaXRhbCBsZXR0ZXJcbiAgICAgIC5yZXBsYWNlKC8oW1xcZF17NH0pKFtBLVpdezF9KS9nLCBnID0+IGAke2cuc3Vic3RyaW5nKDAsIDQpfS0ke2dbNF0udG9Mb3dlckNhc2UoKX1gKVxuICAgICAgLy8gaGFuZGxlIG1vbGVjdWxlc1xuICAgICAgLnJlcGxhY2UoLyhbXFxkXXsxfVtBLVpdezF9KS9nLCBnID0+IGcudG9Mb3dlckNhc2UoKSlcbiAgICAgIC8vIGhhbmRsZSBhbGwgY2FwaXRhbCBsZXR0ZXJzXG4gICAgICAucmVwbGFjZSgvKFtBLVpdKS9nLCBnID0+IGAtJHtnWzBdLnRvTG93ZXJDYXNlKCl9YClcbiAgICAgIC8vIGhhbmRsZSB5ZWFyc1xuICAgICAgLnJlcGxhY2UoLyhbMC05XXs0fSkvZywgZyA9PiBgLSR7Z31gKSA6XG4gICAgbnVsbDtcblxuZXhwb3J0IGNvbnN0IG5vZGVUeXBlVG9TdHJpbmcgPSAodHlwZTogTm9kZVR5cGUpID0+IGAke3R5cGUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCl9JHt0eXBlLnN1YnN0cmluZygxKX1gO1xuXG5leHBvcnQgY29uc3QgcGFyc2VOb2RlVHlwZSA9ICh0eXBlOiBzdHJpbmcpID0+XG4gIE9iamVjdC52YWx1ZXMoTm9kZVR5cGUpLmZpbmQodiA9PiB2LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gKHR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkpO1xuXG5jb25zdCBub2RlRGVmYXVsdExhYmVsOiB7XG4gIFt0eXBlIGluIE5vZGVUeXBlXT86IChkYXRhOiBKU09OTEQ8YW55PikgPT4gc3RyaW5nO1xufSA9IHtcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiAoeyBuYW1lLCBjb3VudHJ5LCBlbmREYXRlLCBwcm9kdWN0IH06IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSA9PlxuICAgIG5hbWUgPyBuYW1lLnJlcGxhY2UoYCR7cHJvZHVjdD8ubmFtZX0sIGAsICcnKSA6IFtcbiAgICAgIHByb2R1Y3Q/Lm5hbWUsXG4gICAgICBjb3VudHJ5Py5uYW1lLFxuICAgICAgZW5kRGF0ZVxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyksXG4gIFtOb2RlVHlwZS5TaXRlXTogKHsgbmFtZSwgZGVzY3JpcHRpb24gfTogSVNpdGVKU09OTEQpID0+IG5hbWUgfHwgZGVzY3JpcHRpb24hXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdExhYmVsID0gKG5vZGU/OiBhbnkpID0+XG4gIG5vZGUgPyAoXG4gICAgbm9kZVsnQHR5cGUnXSBpbiBub2RlRGVmYXVsdExhYmVsID8gbm9kZURlZmF1bHRMYWJlbFtub2RlWydAdHlwZSddXShub2RlKSA6IG5vZGUubmFtZVxuICApIHx8IG5vZGVbJ0BpZCddIHx8IG5vZGUuaWQgOiAnJztcblxuZXhwb3J0IGNvbnN0IGl0ZW1Db2xvciA9IChpbmRleDogbnVtYmVyKSA9PiBnZXRDb2xvcih7IHRleHQ6IGAke2luZGV4fWAgfSk7XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29sb3IgPSA8VD4oX3Y6IFQsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgPT4gaXRlbUNvbG9yKGluZGV4KTtcblxuZXhwb3J0IGNvbnN0IG1pbnV0ZXNCZWZvcmUgPSAoZGF0ZTogRGF0ZSwgbWludXRlcyA9IDEpID0+IHtcbiAgZGF0ZS5zZXRNaW51dGVzKGRhdGUuZ2V0TWludXRlcygpIC0gbWludXRlcyk7XG4gIHJldHVybiBkYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGhvdXJzQmVmb3JlID0gKGRhdGU6IERhdGUsIGhvdXJzID0gMSkgPT4ge1xuICBkYXRlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSAtIGhvdXJzKTtcbiAgcmV0dXJuIGRhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgcmVwZWF0ID0gKHRpbWVzID0gMCkgPT4gKEFycmF5LmZyb20oQXJyYXkodGltZXMpLCBNYXRoLnJhbmRvbSkpO1xuXG5leHBvcnQgZW51bSBEZWx0YURpc3BsYXlUeXBlIHtcbiAgYWJzb2x1dGUgPSAnYWJzb2x1dGUnLFxuICBwZXJjZW50ID0gJ3BlcmNlbnQnXG59XG5cbnR5cGUgZGVsdGFUeXBlTWFwcGluZyA9IHtcbiAgW3R5cGUgaW4gRGVsdGFEaXNwbGF5VHlwZV0/OiAodmFsdWU6IG51bWJlciwgb3JpZ2luYWw6IG51bWJlcikgPT4gbnVtYmVyO1xufTtcblxuY29uc3QgZGVsdGFQZXJUeXBlOiBkZWx0YVR5cGVNYXBwaW5nID0ge1xuICBbRGVsdGFEaXNwbGF5VHlwZS5hYnNvbHV0ZV06ICh2YWx1ZSwgb3JpZ2luYWwpID0+IHZhbHVlIC0gb3JpZ2luYWwsXG4gIFtEZWx0YURpc3BsYXlUeXBlLnBlcmNlbnRdOiAodmFsdWUsIG9yaWdpbmFsKSA9PiAoKHZhbHVlIC0gb3JpZ2luYWwpIC8gb3JpZ2luYWwpICogMTAwXG59O1xuXG5leHBvcnQgY29uc3Qgcm91bmRWYWx1ZSA9ICh2YWx1ZTogYW55KSA9PiArYCR7dmFsdWV9YC5zdWJzdHJpbmcoMCwgMTApO1xuXG5leHBvcnQgY29uc3QgZGVsdGEgPSAoXG4gIHZhbHVlOiBhbnksXG4gIG9yaWdpbmFsVmFsdWU6IGFueSxcbiAgZGlzcGxheVR5cGUgPSBEZWx0YURpc3BsYXlUeXBlLnBlcmNlbnQsXG4gIGN1c3RvbURlbHRhRnVuY3M/OiBkZWx0YVR5cGVNYXBwaW5nXG4pID0+IHtcbiAgY29uc3QgdnZhbHVlID0gcm91bmRWYWx1ZShwcm9wZXJ0eVZhbHVlKHZhbHVlKSk7XG4gIGNvbnN0IHZvcmlnaW5hbFZhbHVlID0gcm91bmRWYWx1ZShwcm9wZXJ0eVZhbHVlKG9yaWdpbmFsVmFsdWUpKTtcbiAgY29uc3QgZGVsdGFGdW5jcyA9IHsgLi4uZGVsdGFQZXJUeXBlLCAuLi5jdXN0b21EZWx0YUZ1bmNzIH07XG4gIGNvbnN0IGRpZmYgPSB2dmFsdWUgPT09IHZvcmlnaW5hbFZhbHVlID8gMCA6IGRlbHRhRnVuY3NbZGlzcGxheVR5cGVdISh2dmFsdWUsIHZvcmlnaW5hbFZhbHVlKTtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShkaWZmKSA/IChkaWZmID09PSAtMCA/IDAgOiBkaWZmKSA6IDA7XG59O1xuXG5leHBvcnQgZW51bSBEZWx0YUNvbG91ciB7XG4gIFN1Y2Nlc3MgPSAnc3VjY2VzcycsXG4gIFdhcm5pbmcgPSAnd2FybmluZycsXG4gIERhbmdlciA9ICdkYW5nZXInXG59XG5cbmV4cG9ydCBjb25zdCBlbXB0eVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IGlzRW1wdHkodmFsdWUpIHx8IGlzTmFOKHByb3BlcnR5VmFsdWUodmFsdWUpKTtcblxuZXhwb3J0IGNvbnN0IGZpbGVuYW1lV2l0aG91dEV4dCA9IChmaWxlbmFtZSA9ICcnKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBmaWxlVG9FeHQoZmlsZW5hbWUsICcnKTtcbiAgLy8gcmVtb3ZlIGxhc3QgLlxuICByZXR1cm4gZmlsZS5lbmRzV2l0aCgnLicpID8gZmlsZS5zdWJzdHJpbmcoMCwgZmlsZS5sZW5ndGggLSAxKSA6IGZpbGU7XG59O1xuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUNMLFFBQVEsRUFBb0Usa0JBQWtCLEVBQy9GLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsaUNBQWlDLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLHdDQUF3QyxDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFFOUcsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzVDLDhCQUE4QixDQUFDLENBQUM7SUFDaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNB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QUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZ2V0ID0gcmVxdWlyZSgnbG9kYXNoLmdldCcpO1xuaW1wb3J0IHsgZ2V0Q29sb3IgfSBmcm9tICdyYW5kb20tbWF0ZXJpYWwtY29sb3InO1xuaW1wb3J0IHtcbiAgTm9kZVR5cGUsIFRlcm0sIEpTT05MRCwgSUN5Y2xlSlNPTkxELCBJU2l0ZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEVtaXNzaW9uTWV0aG9kVGllclxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBmaWxlVG9FeHQgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBnaXRIb21lID0gJ2h0dHBzOi8vZ2l0bGFiLmNvbS9oZXN0aWEtZWFydGgnO1xuZXhwb3J0IGNvbnN0IGdpdFJhd0Jhc2VVcmwgPSAnaHR0cHM6Ly9nbGNkbi5naXRoYWNrLmNvbS9oZXN0aWEtZWFydGgnO1xuZXhwb3J0IGNvbnN0IGdpdEJyYW5jaCA9ICgpID0+IFsnZGV2JywgJ3N0YWdpbmcnXS5zb21lKGVudiA9PiBiYXNlVXJsKCkuaW5jbHVkZXMoZW52KSkgPyAnZGV2ZWxvcCcgOiAnbWFzdGVyJztcblxuZXhwb3J0IGNvbnN0IGlzQ2hyb21lID0gKCkgPT4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0Nocm9tZScpO1xuXG5leHBvcnQgY29uc3QgYmFzZVVybCA9ICgpID0+XG4gIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4uaW5jbHVkZXMoJ2xvY2FsaG9zdCcpID9cbiAgICAnaHR0cHM6Ly93d3ctZGV2Lmhlc3RpYS5lYXJ0aCcgOlxuICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4uaW5jbHVkZXMoJ2hlc3RpYS5lYXJ0aCcpID9cbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gOlxuICAgICAgJ2h0dHBzOi8vd3d3Lmhlc3RpYS5lYXJ0aCc7XG5cbmV4cG9ydCBjb25zdCBpc0V4dGVybmFsID0gKCkgPT4gYmFzZVVybCgpICE9PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luOztcblxuY29uc3QgcGFyc2VFcnJvclN0YXR1cyA9IChlcnJvcjogYW55KSA9PiAoZXJyb3I/LnN0YXR1c1RleHQgfHwgJycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICctJyk7XG5cbmNvbnN0IHBhcnNlRXJyb3JNZXNzYWdlID0gKGVycm9yOiBhbnkpID0+XG4gIGdldChlcnJvciwgJ2Vycm9yLmVycm9yJywgZ2V0KGVycm9yLCAnZXJyb3IubWVzc2FnZScsIGdldChlcnJvciwgJ2Vycm9yJywgZ2V0KGVycm9yLCAnbWVzc2FnZScsIGVycm9yKSkpKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFQSUVycm9yID0gKGVycm9yOiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBlcnJvciA9IHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgfVxuICBjYXRjaCAoXykgeyB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGVycm9yVGV4dCA9IChlcnJvcjogYW55KTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgY29uc3QgZXJyID0gcGFyc2VFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICByZXR1cm4gcGFyc2VFcnJvclN0YXR1cyhlcnIpIHx8IGVycjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJQYXJhbXMgPSAob2JqOiBhbnkpID0+IHtcbiAgY29uc3QgcmVzOiB7XG4gICAgW3g6IHN0cmluZ106IHN0cmluZztcbiAgfSA9IHt9O1xuICBPYmplY3Qua2V5cyhvYmopLnNvcnQoKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXNba2V5XSA9IGAke3ZhbHVlfWA7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yID0gKHZhcmlhYmxlOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gIGlmICh2YXJpYWJsZSBpbiB3aW5kb3cpIHtcbiAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgfVxuICBzZXRUaW1lb3V0KCgpID0+IHdhaXRGb3IodmFyaWFibGUsIGNhbGxiYWNrKSwgMTAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBib3R0b20gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG5cbmV4cG9ydCBjb25zdCBpc1Njcm9sbGVkQmVsb3cgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IGVsZW1lbnQgPyB3aW5kb3cuc2Nyb2xsWSA+IGJvdHRvbShlbGVtZW50KSA6IGZhbHNlO1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9FbCA9IChpZDogc3RyaW5nLCByZXRyaWVzID0gMCkgPT4ge1xuICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgc2V0VGltZW91dCgoKSA9PiBlbCA/IGVsLnNjcm9sbEludG9WaWV3KCkgOiAocmV0cmllcyA8IDEwID8gc2Nyb2xsVG9FbChpZCwgcmV0cmllcyArIDEpIDogbnVsbCksIDEwMCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9wID0gKCkgPT4gd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05QYXJzZSA9IDxUPih2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UodmFsdWUpIGFzIFQgOiB2YWx1ZTtcbiAgfVxuICBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNhZmVKU09OU3RyaW5naWZ5ID0gKHZhbHVlOiBzdHJpbmcpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuZXhwb3J0IGNvbnN0IGFycmF5VmFsdWUgPSAodmFsdWVzOiBhbnlbXSwgaXNBdmVyYWdlOiBib29sZWFuKSA9PlxuICAodmFsdWVzIHx8IFtdKS5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycikgPT4gcHJldiArIHBhcnNlRmxvYXQoYCR7Y3Vycn1gKSwgMCkgLyAoaXNBdmVyYWdlID8gdmFsdWVzLmxlbmd0aCA6IDEpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgKChzdHJpbmcgfCBudW1iZXIpW10pLCBpc0F2ZXJhZ2UgPSBmYWxzZSk6IG51bWJlciA9PlxuICB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09PSBudWxsID9cbiAgICBudWxsIGFzIGFueSA6XG4gICAgKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBhcnJheVZhbHVlKHZhbHVlLCBpc0F2ZXJhZ2UpIDogcGFyc2VGbG9hdChgJHt2YWx1ZX1gKVxuICAgICk7XG5cbmV4cG9ydCBjb25zdCBkYXRhVmFsdWUgPSAoZGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHByb3BlcnR5VmFsdWUoZGF0YVtwcm9wZXJ0eV1baW5kZXhdLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2RlPFQ+IHtcbiAgbm9kZXM6IFRbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcltdO1xuICBkYXRlcz86IGFueVtdO1xuICBzZD86IG51bWJlcltdO1xuICBtaW4/OiBudW1iZXJbXTtcbiAgbWF4PzogbnVtYmVyW107XG4gIGlucHV0cz86IGFueVtdO1xuICBkZXB0aFVwcGVyPzogbnVtYmVyW107XG4gIGRlcHRoTG93ZXI/OiBudW1iZXJbXTtcbiAgc3RhcnREYXRlPzogc3RyaW5nW107XG4gIGVuZERhdGU/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2Rlc1ZhbHVlczxUPiB7XG4gIFtub2RlSWQ6IHN0cmluZ106IElHcm91cGVkTm9kZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGVzVmFsdWU8VD4ge1xuICB0ZXJtOiBUZXJtO1xuICAvKipcbiAgICogRW5hYmxlIG9yZGVyaW5nIG55IG1ldGhvZFRpZXJcbiAgICovXG4gIG1ldGhvZFRpZXJPcmRlcjogbnVtYmVyO1xuICB2YWx1ZXM6IElHcm91cGVkTm9kZXNWYWx1ZXM8VD47XG4gIG9yaWdpbmFsVmFsdWVzOiB7XG4gICAgW25vZGVJZDogc3RyaW5nXToge1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9O1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGVzPFQ+IHtcbiAgW3Rlcm1JZDogc3RyaW5nXTogSUdyb3VwZWROb2Rlc1ZhbHVlPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkS2V5czxUPiB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogSUdyb3VwZWROb2Rlc1ZhbHVlPFQ+O1xufVxuXG5leHBvcnQgY29uc3QgZ3JvdXBwZWRLZXlzID0gPFQ+KHZhbHVlOiBJR3JvdXBlZE5vZGVzPFQ+KTogSUdyb3VwZWRLZXlzPFQ+W10gPT5cbiAgT2JqZWN0LmtleXModmFsdWUpLm1hcChrZXkgPT4gKHsga2V5LCB2YWx1ZTogdmFsdWVba2V5XSB9KSk7XG5cbmNvbnN0IGNvbmNhdEJsYW5rTm9kZVZhbHVlID0gKHZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgY29uc3QgdmFsdWVBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICBjb25zdCBuZXdWYWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkgPyBuZXdWYWx1ZSA6IFtuZXdWYWx1ZV07XG4gIHJldHVybiBbLi4udmFsdWVBcnJheSwgLi4ubmV3VmFsdWVBcnJheV07XG59O1xuXG5jb25zdCBtZXRob2RUaWVyT3JkZXIgPSAobWV0aG9kVGllcjogRW1pc3Npb25NZXRob2RUaWVyKSA9PiBbXG4gIEVtaXNzaW9uTWV0aG9kVGllci5tZWFzdXJlZCxcbiAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDMnXSxcbiAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDInXSxcbiAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDEnXSxcbiAgRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmRcbl0uaW5kZXhPZihtZXRob2RUaWVyKTtcblxuY29uc3QgaXNNZXRob2RNb2RlbEFsbG93ZWQgPSAobm9kZTogYW55LCBmaWx0ZXJNZXRob2Q/OiBUZXJtKSA9PlxuICAhZmlsdGVyTWV0aG9kIHx8ICFub2RlWydtZXRob2RNb2RlbCddIHx8IG5vZGVbJ21ldGhvZE1vZGVsJ11bJ0BpZCddID09PSBmaWx0ZXJNZXRob2RbJ0BpZCddO1xuXG5leHBvcnQgY29uc3QgZ3JvdXBwZWRWYWx1ZUtleXMgPSBbXG4gICdkYXRlcycsICdzZCcsICdtaW4nLCAnbWF4JywgJ2lucHV0cycsICdkZXB0aFVwcGVyJywgJ2RlcHRoTG93ZXInLCAnc3RhcnREYXRlJywgJ2VuZERhdGUnLFxuICAnbWV0aG9kVGllcicsICdtZXRob2RNb2RlbCdcbl07XG5cbmV4cG9ydCBjb25zdCBncm91cE5vZGVzQnlUZXJtID0gPFQgZXh0ZW5kcyBJQ3ljbGVKU09OTEQgfCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCB8IElTaXRlSlNPTkxELCBSPihcbiAgbm9kZXM6IFRbXSA9IFtdLFxuICBrZXk6ICdpbXBhY3RzJyB8ICdlbWlzc2lvbnNSZXNvdXJjZVVzZScgfCAnaW5wdXRzJyB8ICdwcm9kdWN0cycgfCAnZW1pc3Npb25zJyB8ICdtZWFzdXJlbWVudHMnLFxuICBvcmlnaW5hbFZhbHVlczogVFtdID0gW10sXG4gIGZpbHRlck1ldGhvZD86IFRlcm1cbik6IElHcm91cGVkTm9kZXM8Uj4gPT4ge1xuICBjb25zdCBncm91cHM6IElHcm91cGVkTm9kZXM8Uj4gPSBub2Rlcy5yZWR1Y2UoKHByZXYsIG5vZGUsIGluZGV4KSA9PiAobm9kZVtrZXldIHx8IFtdKS5yZWR1Y2UoKGdyb3VwLCBibGFua05vZGUpID0+IHtcbiAgICBpZiAoIWlzTWV0aG9kTW9kZWxBbGxvd2VkKGJsYW5rTm9kZSwgZmlsdGVyTWV0aG9kKSkge1xuICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVJZCA9IG5vZGVbJ0BpZCddO1xuICAgIGNvbnN0IHRlcm1JZCA9IGJsYW5rTm9kZS50ZXJtWydAaWQnXTtcbiAgICBncm91cFt0ZXJtSWRdID0gZ3JvdXBbdGVybUlkXSB8fCB7XG4gICAgICB0ZXJtOiBibGFua05vZGUudGVybSxcbiAgICAgIG1ldGhvZFRpZXJPcmRlcjogbWV0aG9kVGllck9yZGVyKGJsYW5rTm9kZS5tZXRob2RUaWVyKSxcbiAgICAgIHZhbHVlczoge30sXG4gICAgICBvcmlnaW5hbFZhbHVlczoge31cbiAgICB9O1xuICAgIGdyb3VwW3Rlcm1JZF0udmFsdWVzW25vZGVJZF0gPSBncm91cFt0ZXJtSWRdLnZhbHVlc1tub2RlSWRdIHx8IHsgaW5kZXgsIG5vZGVzOiBbXSwgdmFsdWU6IFtdIH07XG4gICAgZ3JvdXBbdGVybUlkXS52YWx1ZXNbbm9kZUlkXS5ub2Rlcy5wdXNoKGJsYW5rTm9kZSk7XG4gICAgZ3JvdXBbdGVybUlkXS52YWx1ZXNbbm9kZUlkXS52YWx1ZSA9IGNvbmNhdEJsYW5rTm9kZVZhbHVlKFxuICAgICAgZ3JvdXBbdGVybUlkXS52YWx1ZXNbbm9kZUlkXS52YWx1ZSxcbiAgICAgIGJsYW5rTm9kZS52YWx1ZVxuICAgICk7XG4gICAgZ3JvdXBwZWRWYWx1ZUtleXMuZm9yRWFjaChhcnJheUtleSA9PiB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGdldChibGFua05vZGUsIGFycmF5S2V5LCBbXSk7XG4gICAgICBncm91cFt0ZXJtSWRdLnZhbHVlc1tub2RlSWRdW2FycmF5S2V5XSA9IFtcbiAgICAgICAgLi4uKGdyb3VwW3Rlcm1JZF0udmFsdWVzW25vZGVJZF1bYXJyYXlLZXldIHx8IFtdKSxcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdKVxuICAgICAgXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZ3JvdXA7XG4gIH0sIHByZXYpLCB7fSBhcyBJR3JvdXBlZE5vZGVzPFI+KTtcblxuICAvLyBjb21waWxlIG9yaWdpbmFsIHZhbHVlc1xuICBPYmplY3QudmFsdWVzKGdyb3VwcykubWFwKGdyb3VwID0+IHtcbiAgICBPYmplY3Qua2V5cyhncm91cC52YWx1ZXMpLm1hcChub2RlSWQgPT4ge1xuICAgICAgY29uc3QgeyBpbmRleCB9ID0gZ3JvdXAudmFsdWVzW25vZGVJZF07XG4gICAgICBjb25zdCB0ZXJtSWQgPSBncm91cC50ZXJtWydAaWQnXTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBnZXQob3JpZ2luYWxWYWx1ZXMsIGBbJHtpbmRleH1dLiR7a2V5fWAsIFtdKS5maWx0ZXIoKHZhbDogYW55KSA9PiB2YWwudGVybVsnQGlkJ10gPT09IHRlcm1JZCk7XG4gICAgICBpZiAob3JpZ2luYWxWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gb3JpZ2luYWxWYWx1ZS5yZWR1Y2UoKGFycmF5OiBhbnlbXSwgY3VycjogYW55KSA9PiBjb25jYXRCbGFua05vZGVWYWx1ZShcbiAgICAgICAgICBhcnJheSxcbiAgICAgICAgICBjdXJyLnZhbHVlXG4gICAgICAgICksIFtdKTtcbiAgICAgICAgZ3JvdXAub3JpZ2luYWxWYWx1ZXNbbm9kZUlkXSA9IHsgdmFsdWU6IHByb3BlcnR5VmFsdWUodmFsdWUpIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBncm91cHM7XG59O1xuXG5leHBvcnQgY29uc3QgZWxsaXBzaXMgPSAodGV4dCA9ICcnLCBtYXhsZW5ndGggPSAyMCkgPT5cbiAgdGV4dC5sZW5ndGggPiBtYXhsZW5ndGggPyBgJHt0ZXh0LnN1YnN0cmluZygwLCBtYXhsZW5ndGgpfS4uLmAgOiB0ZXh0O1xuXG5jb25zdCBtYXBzUXVlcnkgPSAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3NlYXJjaC8/YXBpPTEmcXVlcnk9JztcblxuZXhwb3J0IGNvbnN0IG1hcHNVcmwgPSAobG9jYXRpb24/OiB7IGxhdD86IG51bWJlcjsgbG5nPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gIGxvY2F0aW9uID8gKFxuICAgIGxvY2F0aW9uLmxhdCAmJiBsb2NhdGlvbi5sbmcgP1xuICAgICAgYCR7bWFwc1F1ZXJ5fSR7bG9jYXRpb24ubGF0fSwke2xvY2F0aW9uLmxuZ31gIDpcbiAgICAgIChsb2NhdGlvbi5uYW1lID8gYCR7bWFwc1F1ZXJ5fSR7ZW5jb2RlVVJJKGxvY2F0aW9uLm5hbWUpfWAgOiB1bmRlZmluZWQpXG4gICkgOiB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBrZXlUb0xhYmVsID0gKGtleTogc3RyaW5nKSA9PlxuICBgJHtrZXlbMF0udG9VcHBlckNhc2UoKX0ke1xuICAgIGtleS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgICAgLnJlcGxhY2UoLyhbX10pKFthLXpBLVpdKS9nLCBnID0+IGAgJHtnWzFdLnRvVXBwZXJDYXNlKCl9YClcbiAgICAgIC5zdWJzdHJpbmcoMSlcbiAgfWA7XG5cbmV4cG9ydCBjb25zdCB0b0Rhc2hDYXNlID0gKHZhbHVlPzogc3RyaW5nKSA9PlxuICB2YWx1ZSA/XG4gICAgdmFsdWVcbiAgICAgIC8vIGhhbmRsZSBkYXRlcyBmb2xsb3dlZCBieSBjYXBpdGFsIGxldHRlclxuICAgICAgLnJlcGxhY2UoLyhbXFxkXXs0fSkoW0EtWl17MX0pL2csIGcgPT4gYCR7Zy5zdWJzdHJpbmcoMCwgNCl9LSR7Z1s0XS50b0xvd2VyQ2FzZSgpfWApXG4gICAgICAvLyBoYW5kbGUgbW9sZWN1bGVzXG4gICAgICAucmVwbGFjZSgvKFtcXGRdezF9W0EtWl17MX0pL2csIGcgPT4gZy50b0xvd2VyQ2FzZSgpKVxuICAgICAgLy8gaGFuZGxlIGFsbCBjYXBpdGFsIGxldHRlcnNcbiAgICAgIC5yZXBsYWNlKC8oW0EtWl0pL2csIGcgPT4gYC0ke2dbMF0udG9Mb3dlckNhc2UoKX1gKVxuICAgICAgLy8gaGFuZGxlIHllYXJzXG4gICAgICAucmVwbGFjZSgvKFswLTldezR9KS9nLCBnID0+IGAtJHtnfWApIDpcbiAgICBudWxsO1xuXG5jb25zdCBub2RlRGVmYXVsdExhYmVsOiB7XG4gIFt0eXBlIGluIE5vZGVUeXBlXT86IChkYXRhOiBKU09OTEQ8YW55PikgPT4gc3RyaW5nO1xufSA9IHtcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiAoeyBuYW1lLCBjb3VudHJ5LCBlbmREYXRlLCBwcm9kdWN0IH06IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSA9PlxuICAgIG5hbWUgPyBuYW1lLnJlcGxhY2UoYCR7cHJvZHVjdD8ubmFtZX0sIGAsICcnKSA6IFtcbiAgICAgIHByb2R1Y3Q/Lm5hbWUsXG4gICAgICBjb3VudHJ5Py5uYW1lLFxuICAgICAgZW5kRGF0ZVxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyksXG4gIFtOb2RlVHlwZS5TaXRlXTogKHsgbmFtZSwgZGVzY3JpcHRpb24gfTogSVNpdGVKU09OTEQpID0+IG5hbWUgfHwgZGVzY3JpcHRpb24hXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdExhYmVsID0gKG5vZGU/OiBhbnkpID0+XG4gIG5vZGUgPyAoXG4gICAgbm9kZVsnQHR5cGUnXSBpbiBub2RlRGVmYXVsdExhYmVsID8gbm9kZURlZmF1bHRMYWJlbFtub2RlWydAdHlwZSddXShub2RlKSA6IG5vZGUubmFtZVxuICApIHx8IG5vZGVbJ0BpZCddIHx8IG5vZGUuaWQgOiAnJztcblxuZXhwb3J0IGNvbnN0IGl0ZW1Db2xvciA9IChpbmRleDogbnVtYmVyKSA9PiBnZXRDb2xvcih7IHRleHQ6IGAke2luZGV4fWAgfSk7XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29sb3IgPSA8VD4oX3Y6IFQsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgPT4gaXRlbUNvbG9yKGluZGV4KTtcblxuZXhwb3J0IGVudW0gRGVsdGFEaXNwbGF5VHlwZSB7XG4gIGFic29sdXRlID0gJ2Fic29sdXRlJyxcbiAgcGVyY2VudCA9ICdwZXJjZW50J1xufVxuXG50eXBlIGRlbHRhVHlwZU1hcHBpbmcgPSB7XG4gIFt0eXBlIGluIERlbHRhRGlzcGxheVR5cGVdPzogKHZhbHVlOiBudW1iZXIsIG9yaWdpbmFsOiBudW1iZXIpID0+IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlbHRhUGVyVHlwZTogZGVsdGFUeXBlTWFwcGluZyA9IHtcbiAgW0RlbHRhRGlzcGxheVR5cGUuYWJzb2x1dGVdOiAodmFsdWUsIG9yaWdpbmFsKSA9PiB2YWx1ZSAtIG9yaWdpbmFsLFxuICBbRGVsdGFEaXNwbGF5VHlwZS5wZXJjZW50XTogKHZhbHVlLCBvcmlnaW5hbCkgPT4gKCh2YWx1ZSAtIG9yaWdpbmFsKSAvIG9yaWdpbmFsKSAqIDEwMFxufTtcblxuZXhwb3J0IGNvbnN0IHJvdW5kVmFsdWUgPSAodmFsdWU6IGFueSkgPT4gK2Ake3ZhbHVlfWAuc3Vic3RyaW5nKDAsIDEwKTtcblxuZXhwb3J0IGNvbnN0IGRlbHRhID0gKFxuICB2YWx1ZTogYW55LFxuICBvcmlnaW5hbFZhbHVlOiBhbnksXG4gIGRpc3BsYXlUeXBlID0gRGVsdGFEaXNwbGF5VHlwZS5wZXJjZW50LFxuICBjdXN0b21EZWx0YUZ1bmNzPzogZGVsdGFUeXBlTWFwcGluZ1xuKSA9PiB7XG4gIGNvbnN0IHZ2YWx1ZSA9IHJvdW5kVmFsdWUocHJvcGVydHlWYWx1ZSh2YWx1ZSkpO1xuICBjb25zdCB2b3JpZ2luYWxWYWx1ZSA9IHJvdW5kVmFsdWUocHJvcGVydHlWYWx1ZShvcmlnaW5hbFZhbHVlKSk7XG4gIGNvbnN0IGRlbHRhRnVuY3MgPSB7IC4uLmRlbHRhUGVyVHlwZSwgLi4uY3VzdG9tRGVsdGFGdW5jcyB9O1xuICBjb25zdCBkaWZmID0gdnZhbHVlID09PSB2b3JpZ2luYWxWYWx1ZSA/IDAgOiBkZWx0YUZ1bmNzW2Rpc3BsYXlUeXBlXSEodnZhbHVlLCB2b3JpZ2luYWxWYWx1ZSk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUoZGlmZikgPyAoZGlmZiA9PT0gLTAgPyAwIDogZGlmZikgOiAwO1xufTtcblxuZXhwb3J0IGVudW0gRGVsdGFDb2xvdXIge1xuICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxuICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICBEYW5nZXIgPSAnZGFuZ2VyJ1xufVxuXG5leHBvcnQgY29uc3QgZW1wdHlWYWx1ZSA9ICh2YWx1ZTogYW55KSA9PiBpc0VtcHR5KHZhbHVlKSB8fCBpc05hTihwcm9wZXJ0eVZhbHVlKHZhbHVlKSk7XG5cbmV4cG9ydCBjb25zdCByZXBlYXQgPSAodGltZXMgPSAwKSA9PiAoQXJyYXkuZnJvbShBcnJheSh0aW1lcyksIE1hdGgucmFuZG9tKSk7XG5cbmV4cG9ydCBjb25zdCBmaWxlbmFtZVdpdGhvdXRFeHQgPSAoZmlsZW5hbWUgPSAnJykgPT4ge1xuICBjb25zdCBmaWxlID0gZmlsZVRvRXh0KGZpbGVuYW1lLCAnJyk7XG4gIC8vIHJlbW92ZSBsYXN0IC5cbiAgcmV0dXJuIGZpbGUuZW5kc1dpdGgoJy4nKSA/IGZpbGUuc3Vic3RyaW5nKDAsIGZpbGUubGVuZ3RoIC0gMSkgOiBmaWxlO1xufTtcbiJdfQ==