@lenne.tech/ng-base 14.2.4 → 14.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/base-cms/pages/base-cms/base-cms.component.d.ts +16 -2
  2. package/base-components/base-components.module.d.ts +4 -3
  3. package/base-components/components/model-form/model-form.component.d.ts +9 -3
  4. package/base-components/components/model-table/model-table.component.d.ts +5 -0
  5. package/base-components/components/refence-input/refence-input.component.d.ts +2 -1
  6. package/base-components/components/upload-image/upload-image.component.d.ts +3 -1
  7. package/{src → base-components}/pipes/ellipses.pipe.d.ts +1 -1
  8. package/base-components/public-api.d.ts +1 -0
  9. package/esm2020/base-cms/pages/base-cms/base-cms.component.mjs +43 -11
  10. package/esm2020/base-components/base-components.module.mjs +10 -3
  11. package/esm2020/base-components/components/model-form/model-form.component.mjs +65 -13
  12. package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +3 -3
  13. package/esm2020/base-components/components/model-table/model-table.component.mjs +26 -7
  14. package/esm2020/base-components/components/refence-input/refence-input.component.mjs +6 -3
  15. package/esm2020/base-components/components/select/select.component.mjs +3 -3
  16. package/esm2020/base-components/components/upload-image/upload-image.component.mjs +9 -3
  17. package/esm2020/base-components/pipes/ellipses.pipe.mjs +22 -0
  18. package/esm2020/base-components/public-api.mjs +3 -1
  19. package/esm2020/base-prototype/pages/register/register.component.mjs +3 -3
  20. package/esm2020/public-api.mjs +1 -2
  21. package/esm2020/shared/services/cms.service.mjs +7 -1
  22. package/esm2020/shared/services/toast.service.mjs +2 -2
  23. package/esm2020/src/base.module.mjs +1 -5
  24. package/fesm2015/lenne.tech-ng-base-base-cms.mjs +43 -10
  25. package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  26. package/fesm2015/lenne.tech-ng-base-base-components.mjs +136 -31
  27. package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
  28. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +2 -2
  29. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  30. package/fesm2015/lenne.tech-ng-base-shared.mjs +7 -1
  31. package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
  32. package/fesm2015/lenne.tech-ng-base.mjs +1 -24
  33. package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
  34. package/fesm2020/lenne.tech-ng-base-base-cms.mjs +41 -9
  35. package/fesm2020/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  36. package/fesm2020/lenne.tech-ng-base-base-components.mjs +135 -30
  37. package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
  38. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +2 -2
  39. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  40. package/fesm2020/lenne.tech-ng-base-shared.mjs +7 -1
  41. package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
  42. package/fesm2020/lenne.tech-ng-base.mjs +1 -24
  43. package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
  44. package/package.json +1 -1
  45. package/public-api.d.ts +0 -1
  46. package/shared/services/cms.service.d.ts +4 -0
  47. package/src/base.module.d.ts +5 -6
  48. package/esm2020/src/pipes/ellipses.pipe.mjs +0 -22
@@ -1,5 +1,5 @@
1
1
  import { OnDestroy, OnInit } from '@angular/core';
2
- import { AuthService, GraphqlCrudType, GraphQLMeta, GraphQLMetaService } from '@lenne.tech/ng-base/shared';
2
+ import { AuthService, CmsService, GraphqlCrudType, GraphQLMeta, GraphQLMetaService } from '@lenne.tech/ng-base/shared';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { BaseCMSModuleConfig } from '../../interfaces/base-cms-module-config.interface';
5
5
  import { Subscription } from 'rxjs';
@@ -10,12 +10,14 @@ export declare class BaseCmsComponent implements OnInit, OnDestroy {
10
10
  private route;
11
11
  private router;
12
12
  private authService;
13
+ private cmsService;
13
14
  meta: GraphQLMeta;
14
15
  modelName: string;
16
+ camelModelName: string;
15
17
  id: string;
16
18
  types: GraphqlCrudType[];
17
19
  subscription: Subscription;
18
- constructor(moduleConfig: BaseCMSModuleConfig, graphQLMetaService: GraphQLMetaService, route: ActivatedRoute, router: Router, authService: AuthService);
20
+ constructor(moduleConfig: BaseCMSModuleConfig, graphQLMetaService: GraphQLMetaService, route: ActivatedRoute, router: Router, authService: AuthService, cmsService: CmsService);
19
21
  ngOnInit(): Promise<void>;
20
22
  ngOnDestroy(): void;
21
23
  /**
@@ -65,6 +67,18 @@ export declare class BaseCmsComponent implements OnInit, OnDestroy {
65
67
  * If the id is truthy, navigate to the id, otherwise navigate to the parent route
66
68
  */
67
69
  idSelected(id: string): void;
70
+ /**
71
+ * Transform string to kebab case
72
+ */
73
+ toKebabCase(str: string): string;
74
+ /**
75
+ * Transform string to camel case
76
+ */
77
+ toCamelCase(str: string): string;
78
+ /**
79
+ * Transform first letter to lower case
80
+ */
81
+ lowerCaseFirstLetter(value: string): string;
68
82
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseCmsComponent, never>;
69
83
  static ɵcmp: i0.ɵɵComponentDeclaration<BaseCmsComponent, "app-base-cms", never, {}, {}, never, never, false>;
70
84
  }
@@ -16,10 +16,11 @@ import * as i14 from "./components/model-table/model-table.component";
16
16
  import * as i15 from "./components/model-form-sub/model-form-sub.component";
17
17
  import * as i16 from "./components/upload-image/upload-image.component";
18
18
  import * as i17 from "./components/refence-input/refence-input.component";
19
- import * as i18 from "@angular/forms";
20
- import * as i19 from "@angular/common";
19
+ import * as i18 from "./pipes/ellipses.pipe";
20
+ import * as i19 from "@angular/forms";
21
+ import * as i20 from "@angular/common";
21
22
  export declare class BaseComponentsModule {
22
23
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseComponentsModule, never>;
23
- static ɵmod: i0.ɵɵNgModuleDeclaration<BaseComponentsModule, [typeof i1.SortDirective, typeof i2.BackButtonDirective, typeof i3.ContextMenuDirective, typeof i4.InputComponent, typeof i5.SelectComponent, typeof i6.CheckboxComponent, typeof i7.TextareaComponent, typeof i8.ToastComponent, typeof i9.TagsComponent, typeof i10.LoadingBarComponent, typeof i11.SkeletonLoaderComponent, typeof i12.BreadcrumbComponent, typeof i13.ModelFormComponent, typeof i14.ModelTableComponent, typeof i15.ModelFormSubComponent, typeof i16.UploadImageComponent, typeof i17.RefenceInputComponent], [typeof i18.FormsModule, typeof i18.ReactiveFormsModule, typeof i19.CommonModule], [typeof i1.SortDirective, typeof i2.BackButtonDirective, typeof i3.ContextMenuDirective, typeof i4.InputComponent, typeof i5.SelectComponent, typeof i6.CheckboxComponent, typeof i7.TextareaComponent, typeof i8.ToastComponent, typeof i9.TagsComponent, typeof i10.LoadingBarComponent, typeof i11.SkeletonLoaderComponent, typeof i12.BreadcrumbComponent, typeof i13.ModelFormComponent, typeof i14.ModelTableComponent, typeof i15.ModelFormSubComponent, typeof i16.UploadImageComponent, typeof i17.RefenceInputComponent]>;
24
+ static ɵmod: i0.ɵɵNgModuleDeclaration<BaseComponentsModule, [typeof i1.SortDirective, typeof i2.BackButtonDirective, typeof i3.ContextMenuDirective, typeof i4.InputComponent, typeof i5.SelectComponent, typeof i6.CheckboxComponent, typeof i7.TextareaComponent, typeof i8.ToastComponent, typeof i9.TagsComponent, typeof i10.LoadingBarComponent, typeof i11.SkeletonLoaderComponent, typeof i12.BreadcrumbComponent, typeof i13.ModelFormComponent, typeof i14.ModelTableComponent, typeof i15.ModelFormSubComponent, typeof i16.UploadImageComponent, typeof i17.RefenceInputComponent, typeof i18.EllipsesPipe], [typeof i19.FormsModule, typeof i19.ReactiveFormsModule, typeof i20.CommonModule], [typeof i1.SortDirective, typeof i2.BackButtonDirective, typeof i3.ContextMenuDirective, typeof i4.InputComponent, typeof i5.SelectComponent, typeof i6.CheckboxComponent, typeof i7.TextareaComponent, typeof i8.ToastComponent, typeof i9.TagsComponent, typeof i10.LoadingBarComponent, typeof i11.SkeletonLoaderComponent, typeof i12.BreadcrumbComponent, typeof i13.ModelFormComponent, typeof i14.ModelTableComponent, typeof i15.ModelFormSubComponent, typeof i16.UploadImageComponent, typeof i17.RefenceInputComponent, typeof i18.EllipsesPipe]>;
24
25
  static ɵinj: i0.ɵɵInjectorDeclaration<BaseComponentsModule>;
25
26
  }
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
- import { AuthService, BasicUser, FormsService, GraphQLMeta, GraphQLMetaService, GraphQLService, GraphQLType, CmsService, IGraphQLTypeCollection } from '@lenne.tech/ng-base/shared';
2
+ import { AuthService, BasicUser, FormsService, GraphQLMeta, GraphQLMetaService, GraphQLService, GraphQLType, CmsService, IGraphQLTypeCollection, ToastService } from '@lenne.tech/ng-base/shared';
3
3
  import { AbstractControl, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
4
4
  import { ActivatedRoute, Router } from '@angular/router';
5
5
  import * as i0 from "@angular/core";
@@ -11,6 +11,7 @@ export declare class ModelFormComponent implements OnInit, OnChanges {
11
11
  private router;
12
12
  private route;
13
13
  private cmsService;
14
+ private toastService;
14
15
  modelName: string;
15
16
  label: string;
16
17
  id: string | null;
@@ -22,12 +23,13 @@ export declare class ModelFormComponent implements OnInit, OnChanges {
22
23
  finished: EventEmitter<any>;
23
24
  meta: GraphQLMeta;
24
25
  form: UntypedFormGroup;
25
- loading: boolean;
26
+ _loading: boolean;
26
27
  fields: Record<string, GraphQLType>;
27
28
  operation: string;
28
29
  keys: string[];
29
30
  user: BasicUser;
30
- constructor(graphQLMetaService: GraphQLMetaService, graphQLService: GraphQLService, formsService: FormsService, authService: AuthService, router: Router, route: ActivatedRoute, cmsService: CmsService);
31
+ set loading(value: boolean);
32
+ constructor(graphQLMetaService: GraphQLMetaService, graphQLService: GraphQLService, formsService: FormsService, authService: AuthService, router: Router, route: ActivatedRoute, cmsService: CmsService, toastService: ToastService);
31
33
  ngOnInit(): void;
32
34
  ngOnChanges(changes: SimpleChanges): void;
33
35
  /**
@@ -59,6 +61,10 @@ export declare class ModelFormComponent implements OnInit, OnChanges {
59
61
  * @param fields - IGraphQLTypeCollection
60
62
  */
61
63
  createForm(fields: IGraphQLTypeCollection): UntypedFormGroup;
64
+ /**
65
+ * Process form validators for control
66
+ */
67
+ processValidators(config: any, value: IGraphQLTypeCollection | GraphQLType): any[];
62
68
  /**
63
69
  * It calls the graphQLService to delete the object with the id of the object that is currently being edited
64
70
  */
@@ -48,6 +48,7 @@ export declare class ModelTableComponent implements OnInit, OnChanges {
48
48
  availableFields: string[];
49
49
  selectedId: string;
50
50
  queryName: any;
51
+ camelModelName: string;
51
52
  constructor(graphQLMetaService: GraphQLMetaService, graphQLService: GraphQLService, cmsService: CmsService);
52
53
  ngOnInit(): void;
53
54
  ngOnChanges(changes: SimpleChanges): void;
@@ -86,6 +87,10 @@ export declare class ModelTableComponent implements OnInit, OnChanges {
86
87
  * It takes a string, capitalizes the first letter, and returns the modified string
87
88
  */
88
89
  capitalizeFirstLetter(value: string): string;
90
+ /**
91
+ * Kebab to camel case string
92
+ */
93
+ kebabToCamelCase(str: string): string;
89
94
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelTableComponent, never>;
90
95
  static ɵcmp: i0.ɵɵComponentDeclaration<ModelTableComponent, "base-model-table", never, { "modelName": "modelName"; "objectId": "objectId"; "createMode": "createMode"; "logging": "logging"; "create": "create"; "update": "update"; "delete": "delete"; "duplicate": "duplicate"; "config": "config"; "fieldConfig": "fieldConfig"; }, { "idSelected": "idSelected"; "createModeChanged": "createModeChanged"; }, never, never, false>;
91
96
  }
@@ -8,6 +8,7 @@ export declare class RefenceInputComponent implements OnInit, OnDestroy {
8
8
  name: string;
9
9
  label?: string;
10
10
  isList: boolean;
11
+ search: boolean;
11
12
  placeholder?: string;
12
13
  autocomplete?: string;
13
14
  tabIndex?: number;
@@ -60,5 +61,5 @@ export declare class RefenceInputComponent implements OnInit, OnDestroy {
60
61
  */
61
62
  onFocus(event?: any): void;
62
63
  static ɵfac: i0.ɵɵFactoryDeclaration<RefenceInputComponent, never>;
63
- static ɵcmp: i0.ɵɵComponentDeclaration<RefenceInputComponent, "base-refence-input", never, { "id": "id"; "name": "name"; "label": "label"; "isList": "isList"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "required": "required"; "method": "method"; "fields": "fields"; "valueField": "valueField"; "textField": "textField"; }, {}, never, never, false>;
64
+ static ɵcmp: i0.ɵɵComponentDeclaration<RefenceInputComponent, "base-refence-input", never, { "id": "id"; "name": "name"; "label": "label"; "isList": "isList"; "search": "search"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "required": "required"; "method": "method"; "fields": "fields"; "valueField": "valueField"; "textField": "textField"; }, {}, never, never, false>;
64
65
  }
@@ -11,6 +11,8 @@ export declare class UploadImageComponent {
11
11
  supportText: string;
12
12
  required: boolean;
13
13
  dragText: string;
14
+ preButtonText: string;
15
+ buttonText: string;
14
16
  validExtensions: string[];
15
17
  control: any;
16
18
  url: string;
@@ -72,5 +74,5 @@ export declare class UploadImageComponent {
72
74
  */
73
75
  deleteFile(id?: string): void;
74
76
  static ɵfac: i0.ɵɵFactoryDeclaration<UploadImageComponent, never>;
75
- static ɵcmp: i0.ɵɵComponentDeclaration<UploadImageComponent, "base-upload-image", never, { "id": "id"; "name": "name"; "label": "label"; "supportText": "supportText"; "required": "required"; "dragText": "dragText"; "validExtensions": "validExtensions"; "control": "control"; "url": "url"; "uploadPath": "uploadPath"; "deletePath": "deletePath"; "path": "path"; }, { "imageUploaded": "imageUploaded"; "imageDeleted": "imageDeleted"; }, never, never, false>;
77
+ static ɵcmp: i0.ɵɵComponentDeclaration<UploadImageComponent, "base-upload-image", never, { "id": "id"; "name": "name"; "label": "label"; "supportText": "supportText"; "required": "required"; "dragText": "dragText"; "preButtonText": "preButtonText"; "buttonText": "buttonText"; "validExtensions": "validExtensions"; "control": "control"; "url": "url"; "uploadPath": "uploadPath"; "deletePath": "deletePath"; "path": "path"; }, { "imageUploaded": "imageUploaded"; "imageDeleted": "imageDeleted"; }, never, never, false>;
76
78
  }
@@ -6,5 +6,5 @@ import * as i0 from "@angular/core";
6
6
  export declare class EllipsesPipe implements PipeTransform {
7
7
  transform(value: string, limit: number): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<EllipsesPipe, never>;
9
- static ɵpipe: i0.ɵɵPipeDeclaration<EllipsesPipe, "ltEllipses", false>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<EllipsesPipe, "baseEllipses", false>;
10
10
  }
@@ -5,6 +5,7 @@ export * from './base-components.module';
5
5
  export * from './directives/sort.directive';
6
6
  export * from './directives/back-button.directive';
7
7
  export * from './directives/context-menu.directive';
8
+ export * from './pipes/ellipses.pipe';
8
9
  export * from './components/input/input.component';
9
10
  export * from './components/select/select.component';
10
11
  export * from './components/checkbox/checkbox.component';
@@ -1,5 +1,5 @@
1
1
  import { Component, Inject } from '@angular/core';
2
- import { BasicUser } from '@lenne.tech/ng-base/shared';
2
+ import { BasicUser, } from '@lenne.tech/ng-base/shared';
3
3
  import { BASE_CMS_MODULE_CONFIG } from '../../interfaces/base-cms-module-config.interface';
4
4
  import { Subscription } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
@@ -8,12 +8,13 @@ import * as i2 from "@angular/router";
8
8
  import * as i3 from "@angular/common";
9
9
  import * as i4 from "@lenne.tech/ng-base/base-components";
10
10
  export class BaseCmsComponent {
11
- constructor(moduleConfig, graphQLMetaService, route, router, authService) {
11
+ constructor(moduleConfig, graphQLMetaService, route, router, authService, cmsService) {
12
12
  this.moduleConfig = moduleConfig;
13
13
  this.graphQLMetaService = graphQLMetaService;
14
14
  this.route = route;
15
15
  this.router = router;
16
16
  this.authService = authService;
17
+ this.cmsService = cmsService;
17
18
  this.types = [];
18
19
  this.subscription = new Subscription();
19
20
  this.subscription.add(this.route.params.subscribe((value) => {
@@ -21,10 +22,11 @@ export class BaseCmsComponent {
21
22
  const exclude = this.moduleConfig.modelConfig[value['modelName']]?.exclude;
22
23
  if (exclude !== null && !exclude) {
23
24
  this.modelName = value['modelName'];
25
+ this.camelModelName = this.toCamelCase(this.modelName);
24
26
  }
25
27
  else {
26
28
  this.init().then((types) => {
27
- this.router.navigate(['../' + types[0].name.toLowerCase()], { relativeTo: this.route });
29
+ this.router.navigate(['../' + this.toKebabCase(types[0].name)], { relativeTo: this.route });
28
30
  });
29
31
  }
30
32
  }
@@ -50,13 +52,23 @@ export class BaseCmsComponent {
50
52
  this.meta = meta;
51
53
  if (this.route.snapshot?.params?.['modelName']) {
52
54
  this.modelName = this.route.snapshot?.params?.['modelName'];
55
+ this.camelModelName = this.toCamelCase(this.modelName);
53
56
  }
54
57
  if (this.route.snapshot?.params?.['id']) {
55
58
  this.id = this.route.snapshot?.params?.['id'];
56
59
  }
57
60
  const types = meta.getTypes();
58
61
  // Check for excluded types
59
- const filteredTypes = types.filter((e) => !this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.exclude);
62
+ let filteredTypes = types.filter((e) => !this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.exclude);
63
+ // Sort types
64
+ filteredTypes = filteredTypes.sort((a, b) => {
65
+ return ((this.moduleConfig?.modelConfig[a.name.toLowerCase()]?.order
66
+ ? this.moduleConfig?.modelConfig[a.name.toLowerCase()]?.order
67
+ : 99) -
68
+ (this.moduleConfig?.modelConfig[b.name.toLowerCase()]?.order
69
+ ? this.moduleConfig?.modelConfig[b.name.toLowerCase()]?.order
70
+ : 99));
71
+ });
60
72
  // Check for restricted types
61
73
  this.types = filteredTypes.filter((e) => {
62
74
  if (this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.restricted) {
@@ -73,10 +85,12 @@ export class BaseCmsComponent {
73
85
  });
74
86
  if (this.moduleConfig?.logging) {
75
87
  console.log('BaseCmsComponent::init->types', this.types);
88
+ console.log('BaseCmsComponent::init->camelModelName', this.camelModelName);
89
+ console.log('BaseCmsComponent::init->fieldConfig', this.moduleConfig?.fieldConfig);
76
90
  }
77
91
  resolve(this.types);
78
92
  if (!this.modelName && this.types) {
79
- this.router.navigate(['./' + this.types[0].name.toLowerCase()], { relativeTo: this.route });
93
+ this.router.navigate(['./' + this.toKebabCase(this.types[0].name)], { relativeTo: this.route });
80
94
  }
81
95
  });
82
96
  });
@@ -88,7 +102,7 @@ export class BaseCmsComponent {
88
102
  */
89
103
  getTypeByModelName() {
90
104
  if (this.modelName && this.types) {
91
- return this.types.find((e) => e.name.toLowerCase() === this.modelName.toLowerCase());
105
+ return this.types.find((e) => this.toKebabCase(e.name) === this.toKebabCase(this.modelName));
92
106
  }
93
107
  else {
94
108
  return null;
@@ -152,14 +166,32 @@ export class BaseCmsComponent {
152
166
  this.router.navigate(['..'], { relativeTo: this.route });
153
167
  }
154
168
  }
169
+ /**
170
+ * Transform string to kebab case
171
+ */
172
+ toKebabCase(str) {
173
+ return str?.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
174
+ }
175
+ /**
176
+ * Transform string to camel case
177
+ */
178
+ toCamelCase(str) {
179
+ return str?.replace(/-./g, (match) => match[1].toUpperCase());
180
+ }
181
+ /**
182
+ * Transform first letter to lower case
183
+ */
184
+ lowerCaseFirstLetter(value) {
185
+ return this.cmsService.lowerCaseFirstLetter(value);
186
+ }
155
187
  }
156
- BaseCmsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseCmsComponent, deps: [{ token: BASE_CMS_MODULE_CONFIG }, { token: i1.GraphQLMetaService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
157
- BaseCmsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: BaseCmsComponent, selector: "app-base-cms", ngImport: i0, template: "<div class=\"main\">\n <div class=\"sidebar\">\n <div class=\"d-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + type?.name?.toLowerCase()\"\n [ngClass]=\"{ active: type?.name?.toLowerCase() === this.modelName?.toLowerCase() }\"\n >\n {{\n moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.plural\n ? moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.plural\n : moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.label\n ? moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\">\n <div class=\"p-5 mb-3\">\n <base-model-table\n [config]=\"moduleConfig?.modelConfig[modelName?.toLowerCase()]\"\n [fieldConfig]=\"moduleConfig?.fieldConfig[modelName?.toLowerCase()] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex:1 0 22%;max-width:300px}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe}.nav-flush .nav-link{border-radius:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "component", type: i4.ModelTableComponent, selector: "base-model-table", inputs: ["modelName", "objectId", "createMode", "logging", "create", "update", "delete", "duplicate", "config", "fieldConfig"], outputs: ["idSelected", "createModeChanged"] }] });
188
+ BaseCmsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseCmsComponent, deps: [{ token: BASE_CMS_MODULE_CONFIG }, { token: i1.GraphQLMetaService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1.AuthService }, { token: i1.CmsService }], target: i0.ɵɵFactoryTarget.Component });
189
+ BaseCmsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: BaseCmsComponent, selector: "app-base-cms", ngImport: i0, template: "<div class=\"main\">\n <div class=\"sidebar\">\n <div class=\"d-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\">\n <div class=\"p-5 mb-3\">\n <base-model-table\n [config]=\"moduleConfig?.modelConfig[camelModelName]\"\n [fieldConfig]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex:1 0 22%;max-width:300px}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe}.nav-flush .nav-link{border-radius:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "component", type: i4.ModelTableComponent, selector: "base-model-table", inputs: ["modelName", "objectId", "createMode", "logging", "create", "update", "delete", "duplicate", "config", "fieldConfig"], outputs: ["idSelected", "createModeChanged"] }] });
158
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseCmsComponent, decorators: [{
159
191
  type: Component,
160
- args: [{ selector: 'app-base-cms', template: "<div class=\"main\">\n <div class=\"sidebar\">\n <div class=\"d-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + type?.name?.toLowerCase()\"\n [ngClass]=\"{ active: type?.name?.toLowerCase() === this.modelName?.toLowerCase() }\"\n >\n {{\n moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.plural\n ? moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.plural\n : moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.label\n ? moduleConfig?.modelConfig[type?.name?.toLowerCase()]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\">\n <div class=\"p-5 mb-3\">\n <base-model-table\n [config]=\"moduleConfig?.modelConfig[modelName?.toLowerCase()]\"\n [fieldConfig]=\"moduleConfig?.fieldConfig[modelName?.toLowerCase()] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex:1 0 22%;max-width:300px}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe}.nav-flush .nav-link{border-radius:0}\n"] }]
192
+ args: [{ selector: 'app-base-cms', template: "<div class=\"main\">\n <div class=\"sidebar\">\n <div class=\"d-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\">\n <div class=\"p-5 mb-3\">\n <base-model-table\n [config]=\"moduleConfig?.modelConfig[camelModelName]\"\n [fieldConfig]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex:1 0 22%;max-width:300px}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe}.nav-flush .nav-link{border-radius:0}\n"] }]
161
193
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
162
194
  type: Inject,
163
195
  args: [BASE_CMS_MODULE_CONFIG]
164
- }] }, { type: i1.GraphQLMetaService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1.AuthService }]; } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9wYWdlcy9iYXNlLWNtcy9iYXNlLWNtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQWUsU0FBUyxFQUFvRCxNQUFNLDRCQUE0QixDQUFDO0FBRXRILE9BQU8sRUFBRSxzQkFBc0IsRUFBdUIsTUFBTSxtREFBbUQsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFPcEMsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUN5QyxZQUFpQyxFQUNoRSxrQkFBc0MsRUFDdEMsS0FBcUIsRUFDckIsTUFBYyxFQUNkLFdBQXdCO1FBSk8saUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2hFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUmxDLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUks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QUM7U0FDL0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDOzs2R0F4S1UsZ0JBQWdCLGtCQVFqQixzQkFBc0I7aUdBUnJCLGdCQUFnQixvRENYN0IseThFQThEQTsyRkRuRGEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7OzBCQVlyQixNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJhc2ljVXNlciwgR3JhcGhxbENydWRUeXBlLCBHcmFwaFFMTWV0YSwgR3JhcGhRTE1ldGFTZXJ2aWNlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCQVNFX0NNU19NT0RVTEVfQ09ORklHLCBCYXNlQ01TTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYXNlLWNtcy1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtY21zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS1jbXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNtc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbWV0YTogR3JhcGhRTE1ldGE7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICB0eXBlczogR3JhcGhxbENydWRUeXBlW10gPSBbXTtcbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQkFTRV9DTVNfTU9EVUxFX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQmFzZUNNU01vZHVsZUNvbmZpZyxcbiAgICBwcml2YXRlIGdyYXBoUUxNZXRhU2VydmljZTogR3JhcGhRTE1ldGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWVbJ21vZGVsTmFtZSddKSB7XG4gICAgICAgICAgY29uc3QgZXhjbHVkZSA9IHRoaXMubW9kdWxlQ29uZmlnLm1vZGVsQ29uZmlnW3ZhbHVlWydtb2RlbE5hbWUnXV0/LmV4Y2x1ZGU7XG5cbiAgICAgICAgICBpZiAoZXhjbHVkZSAhPT0gbnVsbCAmJiAhZXhjbHVkZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbE5hbWUgPSB2YWx1ZVsnbW9kZWxOYW1lJ107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpLnRoZW4oKHR5cGVzOiBHcmFwaHFsQ3J1ZFR5cGVbXSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycgKyB0eXBlc1swXS5uYW1lLnRvTG93ZXJDYXNlKCldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVbJ2lkJ10pIHtcbiAgICAgICAgICB0aGlzLmlkID0gdmFsdWVbJ2lkJ107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIEdyYXBocWxDcnVkVHlwZSBvYmplY3RzXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0eXBlcyB0aGF0IGFyZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBpbml0KCk6IFByb21pc2U8R3JhcGhxbENydWRUeXBlW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5ncmFwaFFMTWV0YVNlcnZpY2UuZ2V0TWV0YSgpLnN1YnNjcmliZSgobWV0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnbW9kZWxOYW1lJ10pIHtcbiAgICAgICAgICB0aGlzLm1vZGVsTmFtZSA9IHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydtb2RlbE5hbWUnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnaWQnXSkge1xuICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnaWQnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGVzID0gbWV0YS5nZXRUeXBlcygpO1xuXG4gICAgICAgIC8vIENoZWNrIGZvciBleGNsdWRlZCB0eXBlc1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFR5cGVzID0gdHlwZXMuZmlsdGVyKChlKSA9PiAhdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2UubmFtZS50b0xvd2VyQ2FzZSgpXT8uZXhjbHVkZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIHJlc3RyaWN0ZWQgdHlwZXNcbiAgICAgICAgdGhpcy50eXBlcyA9IGZpbHRlcmVkVHlwZXMuZmlsdGVyKChlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tlLm5hbWUudG9Mb3dlckNhc2UoKV0/LnJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZT8uY3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2U/LmN1cnJlbnRVc2VyO1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkVXNlciA9IEJhc2ljVXNlci5tYXAodXNlcik7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRVc2VyPy5oYXNBbGxSb2xlcyh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbZS5uYW1lLnRvTG93ZXJDYXNlKCldPy5yb2xlcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5sb2dnaW5nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPnR5cGVzJywgdGhpcy50eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKHRoaXMudHlwZXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5tb2RlbE5hbWUgJiYgdGhpcy50eXBlcykge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nICsgdGhpcy50eXBlc1swXS5uYW1lLnRvTG93ZXJDYXNlKCldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIHNldCBhbmQgdGhlIHR5cGVzIGFyZSBzZXQsIHRoZW4gcmV0dXJuIHRoZSB0eXBlIHRoYXQgbWF0Y2hlcyB0aGUgbW9kZWwgbmFtZVxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdHlwZSBvYmplY3QgdGhhdCBtYXRjaGVzIHRoZSBtb2RlbCBuYW1lLlxuICAgKi9cbiAgZ2V0VHlwZUJ5TW9kZWxOYW1lKCkge1xuICAgIGlmICh0aGlzLm1vZGVsTmFtZSAmJiB0aGlzLnR5cGVzKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlcy5maW5kKChlKSA9PiBlLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5tb2RlbE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBjcmVhdGVNb2RlQ2hhbmdlZCBldmVudCBpcyBlbWl0dGVkLCBpZiB0aGUgY3JlYXRlTW9kZSBpcyB0cnVlLCBuYXZpZ2F0ZSB0byB0aGUgbmV3IHJvdXRlXG4gICAqXG4gICAqIEBwYXJhbSBjcmVhdGVNb2RlIC0gYm9vbGVhbiAtIFRoaXMgaXMgYSBib29sZWFuIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHVzZXIgaXMgaW4gY3JlYXRlIG1vZGUgb3JcbiAgICogbm90LlxuICAgKi9cbiAgb25DcmVhdGVNb2RlQ2hhbmdlZChjcmVhdGVNb2RlOiBib29sZWFuKSB7XG4gICAgaWYgKGNyZWF0ZU1vZGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nICsgJ25ldSddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSB0eXBlIGV4aXN0cywgcmV0dXJuIHRoZSBjcmVhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzQ3JlYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmNyZWF0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIGZvdW5kIGluIHRoZSB0eXBlIG1hcCwgcmV0dXJuIHRoZSB1cGRhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzVXBkYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLnVwZGF0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSB0eXBlIGlzIGRlZmluZWQsIHJldHVybiB0aGUgZGVsZXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlXG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzRGVsZXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmRlbGV0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIGZvdW5kIGluIHRoZSB0eXBlIGFycmF5LCByZXR1cm4gdGhlIGR1cGxpY2F0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSBvYmplY3RcbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgaXNEdXBsaWNhdGVQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlQnlNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gdHlwZSA/IHR5cGUuZHVwbGljYXRlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlkIGlzIHRydXRoeSwgbmF2aWdhdGUgdG8gdGhlIGlkLCBvdGhlcndpc2UgbmF2aWdhdGUgdG8gdGhlIHBhcmVudCByb3V0ZVxuICAgKi9cbiAgaWRTZWxlY3RlZChpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJyArIGlkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJzaWRlYmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNocmluay0wIHAtMyBoLTEwMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZHVsZUNvbmZpZy5icmFuZGluZ1wiPlxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydCBtYi0zIG10LTMgbWUtbWQtYXV0byBsaW5rLWRhcmsgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgICAgICAgICpuZ0lmPVwiIW1vZHVsZUNvbmZpZz8ubG9nb1VybFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgZnMtNFwiPjxiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+QmFzZTwvYj5DTVM8L3NwYW4+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZnctbGlnaHRlclwiPlRoZSBhdXRvIGdlbmVyYXRlZCBHcmFwaFFMIENNUzwvc21hbGw+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydCBtYi0zIG10LTMgbWUtbWQtYXV0byBsaW5rLWRhcmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgdy0xMDBcIlxuICAgICAgICAgICpuZ0lmPVwibW9kdWxlQ29uZmlnPy5sb2dvVXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJtb2R1bGVDb25maWcubG9nb1VybFwiIGNsYXNzPVwiaW1nLXJlc3BvbnNpdmUgdy0xMDBcIiBhbHQ9XCJMb2dvXCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgICA8aHIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1waWxscyBmbGV4LWNvbHVtbiBtYi1hdXRvXCIgKm5nSWY9XCJ0eXBlc1wiPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVzXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCIoaWQgPyAnLi4vLi4vJyA6ICcuLi8nKSArIHR5cGU/Lm5hbWU/LnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHR5cGU/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMubW9kZWxOYW1lPy50b0xvd2VyQ2FzZSgpIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbdHlwZT8ubmFtZT8udG9Mb3dlckNhc2UoKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1t0eXBlPy5uYW1lPy50b0xvd2VyQ2FzZSgpXT8ucGx1cmFsXG4gICAgICAgICAgICAgICAgOiBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW3R5cGU/Lm5hbWU/LnRvTG93ZXJDYXNlKCldPy5sYWJlbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1t0eXBlPy5uYW1lPy50b0xvd2VyQ2FzZSgpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA6IHR5cGUubmFtZSArICdzJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2lkZWJhci1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInAtNSBtYi0zXCI+XG4gICAgICA8YmFzZS1tb2RlbC10YWJsZVxuICAgICAgICBbY29uZmlnXT1cIm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbW9kZWxOYW1lPy50b0xvd2VyQ2FzZSgpXVwiXG4gICAgICAgIFtmaWVsZENvbmZpZ109XCJtb2R1bGVDb25maWc/LmZpZWxkQ29uZmlnW21vZGVsTmFtZT8udG9Mb3dlckNhc2UoKV0gfHwge31cIlxuICAgICAgICBbbW9kZWxOYW1lXT1cIm1vZGVsTmFtZVwiXG4gICAgICAgIFtsb2dnaW5nXT1cIm1vZHVsZUNvbmZpZz8ubG9nZ2luZ1wiXG4gICAgICAgIFtvYmplY3RJZF09XCJpZCAhPT0gJ25ldScgPyBpZCA6ICcnXCJcbiAgICAgICAgW2NyZWF0ZU1vZGVdPVwiaWQgPT09ICduZXUnXCJcbiAgICAgICAgKGNyZWF0ZU1vZGVDaGFuZ2VkKT1cIm9uQ3JlYXRlTW9kZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChpZFNlbGVjdGVkKT1cImlkU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtjcmVhdGVdPVwiaXNDcmVhdGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW3VwZGF0ZV09XCJpc1VwZGF0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbZGVsZXRlXT1cImlzRGVsZXRlUG9zc2libGUoKVwiXG4gICAgICAgIFtkdXBsaWNhdGVdPVwiaXNEdXBsaWNhdGVQb3NzaWJsZSgpXCJcbiAgICAgID48L2Jhc2UtbW9kZWwtdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
196
+ }] }, { type: i1.GraphQLMetaService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1.AuthService }, { type: i1.CmsService }]; } });
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9wYWdlcy9iYXNlLWNtcy9iYXNlLWNtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBRUwsU0FBUyxHQUtWLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLG1EQUFtRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU9wQyxNQUFNLE9BQU8sZ0JBQWdCO0lBUTNCLFlBQ3lDLFlBQWlDLEVBQ2hFLGtCQUFzQyxFQUN0QyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsVUFBc0I7UUFMUyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDaEUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVRoQyxVQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFVaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLElBQUksS0FBSyxDQUFDLFdBQVcs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TTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNyQixPQUFPLEdBQUcsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7NkdBL01VLGdCQUFnQixrQkFTakIsc0JBQXNCO2lHQVRyQixnQkFBZ0Isb0RDbEI3QiwyOEVBOERBOzJGRDVDYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzs7MEJBYXJCLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBdXRoU2VydmljZSxcbiAgQmFzaWNVc2VyLFxuICBDbXNTZXJ2aWNlLFxuICBHcmFwaHFsQ3J1ZFR5cGUsXG4gIEdyYXBoUUxNZXRhLFxuICBHcmFwaFFMTWV0YVNlcnZpY2UsXG59IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQkFTRV9DTVNfTU9EVUxFX0NPTkZJRywgQmFzZUNNU01vZHVsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFzZS1jbXMtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1iYXNlLWNtcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLWNtcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhc2UtY21zLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VDbXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG1ldGE6IEdyYXBoUUxNZXRhO1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgY2FtZWxNb2RlbE5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdHlwZXM6IEdyYXBocWxDcnVkVHlwZVtdID0gW107XG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEJBU0VfQ01TX01PRFVMRV9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEJhc2VDTVNNb2R1bGVDb25maWcsXG4gICAgcHJpdmF0ZSBncmFwaFFMTWV0YVNlcnZpY2U6IEdyYXBoUUxNZXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY21zU2VydmljZTogQ21zU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZVsnbW9kZWxOYW1lJ10pIHtcbiAgICAgICAgICBjb25zdCBleGNsdWRlID0gdGhpcy5tb2R1bGVDb25maWcubW9kZWxDb25maWdbdmFsdWVbJ21vZGVsTmFtZSddXT8uZXhjbHVkZTtcblxuICAgICAgICAgIGlmIChleGNsdWRlICE9PSBudWxsICYmICFleGNsdWRlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsTmFtZSA9IHZhbHVlWydtb2RlbE5hbWUnXTtcbiAgICAgICAgICAgIHRoaXMuY2FtZWxNb2RlbE5hbWUgPSB0aGlzLnRvQ2FtZWxDYXNlKHRoaXMubW9kZWxOYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0KCkudGhlbigodHlwZXM6IEdyYXBocWxDcnVkVHlwZVtdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJyArIHRoaXMudG9LZWJhYkNhc2UodHlwZXNbMF0ubmFtZSldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVbJ2lkJ10pIHtcbiAgICAgICAgICB0aGlzLmlkID0gdmFsdWVbJ2lkJ107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIEdyYXBocWxDcnVkVHlwZSBvYmplY3RzXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0eXBlcyB0aGF0IGFyZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBpbml0KCk6IFByb21pc2U8R3JhcGhxbENydWRUeXBlW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5ncmFwaFFMTWV0YVNlcnZpY2UuZ2V0TWV0YSgpLnN1YnNjcmliZSgobWV0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnbW9kZWxOYW1lJ10pIHtcbiAgICAgICAgICB0aGlzLm1vZGVsTmFtZSA9IHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydtb2RlbE5hbWUnXTtcbiAgICAgICAgICB0aGlzLmNhbWVsTW9kZWxOYW1lID0gdGhpcy50b0NhbWVsQ2FzZSh0aGlzLm1vZGVsTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ2lkJ10pIHtcbiAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ2lkJ107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0eXBlcyA9IG1ldGEuZ2V0VHlwZXMoKTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgZXhjbHVkZWQgdHlwZXNcbiAgICAgICAgbGV0IGZpbHRlcmVkVHlwZXMgPSB0eXBlcy5maWx0ZXIoKGUpID0+ICF0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbZS5uYW1lLnRvTG93ZXJDYXNlKCldPy5leGNsdWRlKTtcblxuICAgICAgICAvLyBTb3J0IHR5cGVzXG4gICAgICAgIGZpbHRlcmVkVHlwZXMgPSBmaWx0ZXJlZFR5cGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1thLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgID8gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2EubmFtZS50b0xvd2VyQ2FzZSgpXT8ub3JkZXJcbiAgICAgICAgICAgICAgOiA5OSkgLVxuICAgICAgICAgICAgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tiLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgID8gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2IubmFtZS50b0xvd2VyQ2FzZSgpXT8ub3JkZXJcbiAgICAgICAgICAgICAgOiA5OSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgcmVzdHJpY3RlZCB0eXBlc1xuICAgICAgICB0aGlzLnR5cGVzID0gZmlsdGVyZWRUeXBlcy5maWx0ZXIoKGUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2UubmFtZS50b0xvd2VyQ2FzZSgpXT8ucmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlPy5jdXJyZW50VXNlcikge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZT8uY3VycmVudFVzZXI7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRVc2VyID0gQmFzaWNVc2VyLm1hcCh1c2VyKTtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZFVzZXI/Lmhhc0FsbFJvbGVzKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tlLm5hbWUudG9Mb3dlckNhc2UoKV0/LnJvbGVzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/LmxvZ2dpbmcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQmFzZUNtc0NvbXBvbmVudDo6aW5pdC0+dHlwZXMnLCB0aGlzLnR5cGVzKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQmFzZUNtc0NvbXBvbmVudDo6aW5pdC0+Y2FtZWxNb2RlbE5hbWUnLCB0aGlzLmNhbWVsTW9kZWxOYW1lKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQmFzZUNtc0NvbXBvbmVudDo6aW5pdC0+ZmllbGRDb25maWcnLCB0aGlzLm1vZHVsZUNvbmZpZz8uZmllbGRDb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZSh0aGlzLnR5cGVzKTtcblxuICAgICAgICBpZiAoIXRoaXMubW9kZWxOYW1lICYmIHRoaXMudHlwZXMpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJyArIHRoaXMudG9LZWJhYkNhc2UodGhpcy50eXBlc1swXS5uYW1lKV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGVsIG5hbWUgaXMgc2V0IGFuZCB0aGUgdHlwZXMgYXJlIHNldCwgdGhlbiByZXR1cm4gdGhlIHR5cGUgdGhhdCBtYXRjaGVzIHRoZSBtb2RlbCBuYW1lXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0eXBlIG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIG1vZGVsIG5hbWUuXG4gICAqL1xuICBnZXRUeXBlQnlNb2RlbE5hbWUoKSB7XG4gICAgaWYgKHRoaXMubW9kZWxOYW1lICYmIHRoaXMudHlwZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnR5cGVzLmZpbmQoKGUpID0+IHRoaXMudG9LZWJhYkNhc2UoZS5uYW1lKSA9PT0gdGhpcy50b0tlYmFiQ2FzZSh0aGlzLm1vZGVsTmFtZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgY3JlYXRlTW9kZUNoYW5nZWQgZXZlbnQgaXMgZW1pdHRlZCwgaWYgdGhlIGNyZWF0ZU1vZGUgaXMgdHJ1ZSwgbmF2aWdhdGUgdG8gdGhlIG5ldyByb3V0ZVxuICAgKlxuICAgKiBAcGFyYW0gY3JlYXRlTW9kZSAtIGJvb2xlYW4gLSBUaGlzIGlzIGEgYm9vbGVhbiB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSB1c2VyIGlzIGluIGNyZWF0ZSBtb2RlIG9yXG4gICAqIG5vdC5cbiAgICovXG4gIG9uQ3JlYXRlTW9kZUNoYW5nZWQoY3JlYXRlTW9kZTogYm9vbGVhbikge1xuICAgIGlmIChjcmVhdGVNb2RlKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJyArICduZXUnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdHlwZSBleGlzdHMsIHJldHVybiB0aGUgY3JlYXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc0NyZWF0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS5jcmVhdGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBmb3VuZCBpbiB0aGUgdHlwZSBtYXAsIHJldHVybiB0aGUgdXBkYXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc1VwZGF0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS51cGRhdGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdHlwZSBpcyBkZWZpbmVkLCByZXR1cm4gdGhlIGRlbGV0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc0RlbGV0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS5kZWxldGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBmb3VuZCBpbiB0aGUgdHlwZSBhcnJheSwgcmV0dXJuIHRoZSBkdXBsaWNhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzRHVwbGljYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmR1cGxpY2F0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBpZCBpcyB0cnV0aHksIG5hdmlnYXRlIHRvIHRoZSBpZCwgb3RoZXJ3aXNlIG5hdmlnYXRlIHRvIHRoZSBwYXJlbnQgcm91dGVcbiAgICovXG4gIGlkU2VsZWN0ZWQoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyBpZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICAgKi9cbiAgdG9LZWJhYkNhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyPy5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICAgKi9cbiAgdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyPy5yZXBsYWNlKC8tLi9nLCAobWF0Y2gpID0+IG1hdGNoWzFdLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBmaXJzdCBsZXR0ZXIgdG8gbG93ZXIgY2FzZVxuICAgKi9cbiAgbG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNtc1NlcnZpY2UubG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxuICA8ZGl2IGNsYXNzPVwic2lkZWJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1zaHJpbmstMCBwLTMgaC0xMDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2R1bGVDb25maWcuYnJhbmRpbmdcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnQgbWItMyBtdC0zIG1lLW1kLWF1dG8gbGluay1kYXJrIHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICAgICAgICAqbmdJZj1cIiFtb2R1bGVDb25maWc/LmxvZ29VcmxcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGZzLTRcIj48YiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPkJhc2U8L2I+Q01TPC9zcGFuPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZ3LWxpZ2h0ZXJcIj5UaGUgYXV0byBnZW5lcmF0ZWQgR3JhcGhRTCBDTVM8L3NtYWxsPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnQgbWItMyBtdC0zIG1lLW1kLWF1dG8gbGluay1kYXJrIHRleHQtZGVjb3JhdGlvbi1ub25lIHctMTAwXCJcbiAgICAgICAgICAqbmdJZj1cIm1vZHVsZUNvbmZpZz8ubG9nb1VybFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwibW9kdWxlQ29uZmlnLmxvZ29VcmxcIiBjbGFzcz1cImltZy1yZXNwb25zaXZlIHctMTAwXCIgYWx0PVwiTG9nb1wiIC8+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGhyIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtcGlsbHMgZmxleC1jb2x1bW4gbWItYXV0b1wiICpuZ0lmPVwidHlwZXNcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdHlwZSBvZiB0eXBlc1wiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rXCJcbiAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInBhZ2VcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiKGlkID8gJy4uLy4uLycgOiAnLi4vJykgKyB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdG9LZWJhYkNhc2UodHlwZT8ubmFtZSkgPT09IHRvS2ViYWJDYXNlKHRoaXMubW9kZWxOYW1lKSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ucGx1cmFsXG4gICAgICAgICAgICAgICAgPyBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ucGx1cmFsXG4gICAgICAgICAgICAgICAgOiBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA/IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5sYWJlbFxuICAgICAgICAgICAgICAgIDogdHlwZS5uYW1lICsgJ3MnXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC01IG1iLTNcIj5cbiAgICAgIDxiYXNlLW1vZGVsLXRhYmxlXG4gICAgICAgIFtjb25maWddPVwibW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tjYW1lbE1vZGVsTmFtZV1cIlxuICAgICAgICBbZmllbGRDb25maWddPVwibW9kdWxlQ29uZmlnPy5maWVsZENvbmZpZ1tjYW1lbE1vZGVsTmFtZV0gfHwge31cIlxuICAgICAgICBbbW9kZWxOYW1lXT1cIm1vZGVsTmFtZVwiXG4gICAgICAgIFtsb2dnaW5nXT1cIm1vZHVsZUNvbmZpZz8ubG9nZ2luZ1wiXG4gICAgICAgIFtvYmplY3RJZF09XCJpZCAhPT0gJ25ldScgPyBpZCA6ICcnXCJcbiAgICAgICAgW2NyZWF0ZU1vZGVdPVwiaWQgPT09ICduZXUnXCJcbiAgICAgICAgKGNyZWF0ZU1vZGVDaGFuZ2VkKT1cIm9uQ3JlYXRlTW9kZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChpZFNlbGVjdGVkKT1cImlkU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtjcmVhdGVdPVwiaXNDcmVhdGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW3VwZGF0ZV09XCJpc1VwZGF0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbZGVsZXRlXT1cImlzRGVsZXRlUG9zc2libGUoKVwiXG4gICAgICAgIFtkdXBsaWNhdGVdPVwiaXNEdXBsaWNhdGVQb3NzaWJsZSgpXCJcbiAgICAgID48L2Jhc2UtbW9kZWwtdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -18,6 +18,7 @@ import { RefenceInputComponent } from './components/refence-input/refence-input.
18
18
  import { BackButtonDirective } from './directives/back-button.directive';
19
19
  import { SortDirective } from './directives/sort.directive';
20
20
  import { ContextMenuDirective } from './directives/context-menu.directive';
21
+ import { EllipsesPipe } from './pipes/ellipses.pipe';
21
22
  import * as i0 from "@angular/core";
22
23
  // Modules
23
24
  const imports = [FormsModule, ReactiveFormsModule, CommonModule];
@@ -42,6 +43,8 @@ const elements = [
42
43
  ModelFormSubComponent,
43
44
  UploadImageComponent,
44
45
  RefenceInputComponent,
46
+ // Pipes
47
+ EllipsesPipe,
45
48
  ];
46
49
  export class BaseComponentsModule {
47
50
  }
@@ -65,7 +68,9 @@ BaseComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ve
65
68
  ModelTableComponent,
66
69
  ModelFormSubComponent,
67
70
  UploadImageComponent,
68
- RefenceInputComponent], imports: [FormsModule, ReactiveFormsModule, CommonModule], exports: [
71
+ RefenceInputComponent,
72
+ // Pipes
73
+ EllipsesPipe], imports: [FormsModule, ReactiveFormsModule, CommonModule], exports: [
69
74
  // Directives
70
75
  SortDirective,
71
76
  BackButtonDirective,
@@ -84,7 +89,9 @@ BaseComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ve
84
89
  ModelTableComponent,
85
90
  ModelFormSubComponent,
86
91
  UploadImageComponent,
87
- RefenceInputComponent] });
92
+ RefenceInputComponent,
93
+ // Pipes
94
+ EllipsesPipe] });
88
95
  BaseComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseComponentsModule, imports: [imports] });
89
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BaseComponentsModule, decorators: [{
90
97
  type: NgModule,
@@ -94,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
94
101
  exports: elements,
95
102
  }]
96
103
  }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRTNFLFVBQVU7QUFDVixNQUFNLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUVqRSxpQ0FBaUM7QUFDakMsTUFBTSxRQUFRLEdBQUc7SUFDZixhQUFhO0lBQ2IsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFFcEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7Q0FDdEIsQ0FBQztBQU9GLE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQjtRQTNCL0IsYUFBYTtRQUNiLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBRXBCLGFBQWE7UUFDYixjQUFjO1FBQ2QsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIscUJBQXFCLGFBdkJOLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxZQUFZO1FBSTdELGFBQWE7UUFDYixhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLG9CQUFvQjtRQUVwQixhQUFhO1FBQ2IsY0FBYztRQUNkLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtrSEFRVixvQkFBb0IsWUFIL0IsT0FBTzsyRkFHSSxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLFFBQVE7b0JBQ3RCLE9BQU87b0JBQ1AsT0FBTyxFQUFFLFFBQVE7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0JhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2FkaW5nLWJhci9sb2FkaW5nLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25Mb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2tlbGV0b24tbG9hZGVyL3NrZWxldG9uLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kZWwtdGFibGUvbW9kZWwtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RlbC1mb3JtL21vZGVsLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsRm9ybVN1YkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RlbC1mb3JtLXN1Yi9tb2RlbC1mb3JtLXN1Yi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVmZW5jZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JlZmVuY2UtaW5wdXQvcmVmZW5jZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFja0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYWNrLWJ1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU29ydERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zb3J0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZXh0TWVudURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jb250ZXh0LW1lbnUuZGlyZWN0aXZlJztcblxuLy8gTW9kdWxlc1xuY29uc3QgaW1wb3J0cyA9IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlXTtcblxuLy8gSW1wb3J0ZWQgYW5kIGV4cG9ydGVkIGVsZW1lbnRzXG5jb25zdCBlbGVtZW50cyA9IFtcbiAgLy8gRGlyZWN0aXZlc1xuICBTb3J0RGlyZWN0aXZlLFxuICBCYWNrQnV0dG9uRGlyZWN0aXZlLFxuICBDb250ZXh0TWVudURpcmVjdGl2ZSxcblxuICAvLyBDb21wb25lbnRzXG4gIElucHV0Q29tcG9uZW50LFxuICBTZWxlY3RDb21wb25lbnQsXG4gIENoZWNrYm94Q29tcG9uZW50LFxuICBUZXh0YXJlYUNvbXBvbmVudCxcbiAgVG9hc3RDb21wb25lbnQsXG4gIFRhZ3NDb21wb25lbnQsXG4gIExvYWRpbmdCYXJDb21wb25lbnQsXG4gIFNrZWxldG9uTG9hZGVyQ29tcG9uZW50LFxuICBCcmVhZGNydW1iQ29tcG9uZW50LFxuICBNb2RlbEZvcm1Db21wb25lbnQsXG4gIE1vZGVsVGFibGVDb21wb25lbnQsXG4gIE1vZGVsRm9ybVN1YkNvbXBvbmVudCxcbiAgVXBsb2FkSW1hZ2VDb21wb25lbnQsXG4gIFJlZmVuY2VJbnB1dENvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogZWxlbWVudHMsXG4gIGltcG9ydHMsXG4gIGV4cG9ydHM6IGVsZW1lbnRzLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUUzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVyRCxVQUFVO0FBQ1YsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFakUsaUNBQWlDO0FBQ2pDLE1BQU0sUUFBUSxHQUFHO0lBQ2YsYUFBYTtJQUNiLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBRXBCLGFBQWE7SUFDYixjQUFjO0lBQ2QsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsY0FBYztJQUNkLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIscUJBQXFCO0lBRXJCLFFBQVE7SUFDUixZQUFZO0NBQ2IsQ0FBQztBQU9GLE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQjtRQTlCL0IsYUFBYTtRQUNiLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBRXBCLGFBQWE7UUFDYixjQUFjO1FBQ2QsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBRXJCLFFBQVE7UUFDUixZQUFZLGFBMUJHLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxZQUFZO1FBSTdELGFBQWE7UUFDYixhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLG9CQUFvQjtRQUVwQixhQUFhO1FBQ2IsY0FBYztRQUNkLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUVyQixRQUFRO1FBQ1IsWUFBWTtrSEFRRCxvQkFBb0IsWUFIL0IsT0FBTzsyRkFHSSxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLFFBQVE7b0JBQ3RCLE9BQU87b0JBQ1AsT0FBTyxFQUFFLFFBQVE7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0JhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2FkaW5nLWJhci9sb2FkaW5nLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25Mb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2tlbGV0b24tbG9hZGVyL3NrZWxldG9uLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kZWwtdGFibGUvbW9kZWwtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RlbC1mb3JtL21vZGVsLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsRm9ybVN1YkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RlbC1mb3JtLXN1Yi9tb2RlbC1mb3JtLXN1Yi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVmZW5jZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JlZmVuY2UtaW5wdXQvcmVmZW5jZS1pbnB1dC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBCYWNrQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2JhY2stYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbnRleHRNZW51RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbnRleHQtbWVudS5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBFbGxpcHNlc1BpcGUgfSBmcm9tICcuL3BpcGVzL2VsbGlwc2VzLnBpcGUnO1xuXG4vLyBNb2R1bGVzXG5jb25zdCBpbXBvcnRzID0gW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGVdO1xuXG4vLyBJbXBvcnRlZCBhbmQgZXhwb3J0ZWQgZWxlbWVudHNcbmNvbnN0IGVsZW1lbnRzID0gW1xuICAvLyBEaXJlY3RpdmVzXG4gIFNvcnREaXJlY3RpdmUsXG4gIEJhY2tCdXR0b25EaXJlY3RpdmUsXG4gIENvbnRleHRNZW51RGlyZWN0aXZlLFxuXG4gIC8vIENvbXBvbmVudHNcbiAgSW5wdXRDb21wb25lbnQsXG4gIFNlbGVjdENvbXBvbmVudCxcbiAgQ2hlY2tib3hDb21wb25lbnQsXG4gIFRleHRhcmVhQ29tcG9uZW50LFxuICBUb2FzdENvbXBvbmVudCxcbiAgVGFnc0NvbXBvbmVudCxcbiAgTG9hZGluZ0JhckNvbXBvbmVudCxcbiAgU2tlbGV0b25Mb2FkZXJDb21wb25lbnQsXG4gIEJyZWFkY3J1bWJDb21wb25lbnQsXG4gIE1vZGVsRm9ybUNvbXBvbmVudCxcbiAgTW9kZWxUYWJsZUNvbXBvbmVudCxcbiAgTW9kZWxGb3JtU3ViQ29tcG9uZW50LFxuICBVcGxvYWRJbWFnZUNvbXBvbmVudCxcbiAgUmVmZW5jZUlucHV0Q29tcG9uZW50LFxuXG4gIC8vIFBpcGVzXG4gIEVsbGlwc2VzUGlwZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogZWxlbWVudHMsXG4gIGltcG9ydHMsXG4gIGV4cG9ydHM6IGVsZW1lbnRzLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ29tcG9uZW50c01vZHVsZSB7fVxuIl19