@alauda-fe/common 1.4.28-beta.6 → 1.4.28
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.
- package/array-form-table/form/component.d.ts +1 -1
- package/code/code-editor-configs.d.ts +2 -0
- package/code/managed-fields-folder.util.d.ts +35 -0
- package/code/public-api.d.ts +4 -0
- package/code/resource-yaml-display/component.d.ts +64 -6
- package/code/resource-yaml-editor/component.d.ts +95 -0
- package/code/yaml-examples.d.ts +8 -0
- package/code/yaml-sidebar/component.d.ts +57 -0
- package/code/yaml-sidebar/types.d.ts +21 -0
- package/core/abstract/base-nested-form-control.d.ts +1 -1
- package/core/services/kubernetes-schema.service.d.ts +44 -0
- package/core/services/public-api.d.ts +1 -0
- package/core/types/openapi.d.ts +37 -0
- package/core/types/public-api.d.ts +1 -0
- package/esm2022/abnormal-page/abnormal-page.component.mjs +1 -1
- package/esm2022/array-form-table/form/component.mjs +1 -1
- package/esm2022/array-form-table/key-value-form/component.mjs +1 -1
- package/esm2022/array-form-table/key-value-table/component.mjs +1 -1
- package/esm2022/array-form-table/string-array-form/component.mjs +1 -1
- package/esm2022/async-data/error-page/component.mjs +1 -1
- package/esm2022/async-data/page-state/component.mjs +1 -1
- package/esm2022/business/notification-disabled-container/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/cluster-list/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/icon/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/namespace-list/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/namespace-page/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/project-list/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/project-page/component.mjs +1 -1
- package/esm2022/business/resource-select/exports/project-selector/component.mjs +1 -1
- package/esm2022/business/resource-select/internals/data-grid/component.mjs +1 -1
- package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +1 -1
- package/esm2022/business/resource-select/internals/no-data/component.mjs +1 -1
- package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +1 -1
- package/esm2022/business/resource-select/internals/selector-popup/component.mjs +1 -1
- package/esm2022/chart/common/axis/axis-label.component.mjs +1 -1
- package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +1 -1
- package/esm2022/chart/common/axis/x-axis.component.mjs +1 -1
- package/esm2022/chart/common/axis/x-plot-lines.component.mjs +1 -1
- package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +1 -1
- package/esm2022/chart/common/axis/y-axis.component.mjs +1 -1
- package/esm2022/chart/common/axis/y-plot-lines.component.mjs +1 -1
- package/esm2022/chart/common/chart/chart.component.mjs +1 -1
- package/esm2022/chart/common/legend/legend.component.mjs +1 -1
- package/esm2022/chart/common/range-area/range-area.component.mjs +1 -1
- package/esm2022/chart/common/reference-area/reference-area.component.mjs +1 -1
- package/esm2022/chart/common/series/area-series.component.mjs +1 -1
- package/esm2022/chart/common/series/bar-path.component.mjs +1 -1
- package/esm2022/chart/common/series/bar-series.component.mjs +1 -1
- package/esm2022/chart/common/series/line-series.component.mjs +1 -1
- package/esm2022/chart/common/tooltip/tooltip.component.mjs +1 -1
- package/esm2022/chart/custom-template/dropdown-legend.mjs +1 -1
- package/esm2022/code/code-display-dialog/component.mjs +1 -1
- package/esm2022/code/code-editor-configs.mjs +12 -2
- package/esm2022/code/k8s-yaml-display-dialog/component.mjs +1 -1
- package/esm2022/code/managed-fields-folder.util.mjs +147 -0
- package/esm2022/code/public-api.mjs +5 -1
- package/esm2022/code/resource-yaml-display/component.mjs +257 -43
- package/esm2022/code/resource-yaml-editor/component.mjs +392 -0
- package/esm2022/code/yaml-examples.mjs +337 -0
- package/esm2022/code/yaml-sidebar/component.mjs +482 -0
- package/esm2022/code/yaml-sidebar/types.mjs +2 -0
- package/esm2022/core/components/tree/node/component.mjs +1 -1
- package/esm2022/core/components/tree/tree/component.mjs +1 -1
- package/esm2022/core/directives/readonly-field.directive.mjs +1 -1
- package/esm2022/core/services/kubernetes-schema.service.mjs +129 -0
- package/esm2022/core/services/public-api.mjs +2 -1
- package/esm2022/core/services/workspace-helper.service.mjs +4 -3
- package/esm2022/core/types/openapi.mjs +2 -0
- package/esm2022/core/types/public-api.mjs +2 -1
- package/esm2022/custom-columns-setting/component.mjs +1 -1
- package/esm2022/disabled-container/disabled-container.component.mjs +1 -1
- package/esm2022/editable/editable.component.mjs +1 -1
- package/esm2022/editable-text/component.mjs +1 -1
- package/esm2022/exec/placeholder/component.mjs +1 -1
- package/esm2022/exec/terminal/component.mjs +1 -1
- package/esm2022/exec/terminal-group/component.mjs +3 -3
- package/esm2022/feature-gate-forbidden/component/component.mjs +1 -1
- package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +1 -1
- package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +1 -1
- package/esm2022/form/labels-editor/component.mjs +1 -1
- package/esm2022/form/taints-editor/component.mjs +1 -1
- package/esm2022/form/upload-file/component.mjs +1 -1
- package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +1 -1
- package/esm2022/graph-canvas/components/graph-actions.component.mjs +1 -1
- package/esm2022/graph-canvas/components/graph-canvas.component.mjs +1 -1
- package/esm2022/graph-canvas/components/graph-link.component.mjs +1 -1
- package/esm2022/graph-canvas/components/graph-links.component.mjs +1 -1
- package/esm2022/grid-layout/components/grid/component.mjs +1 -1
- package/esm2022/grid-layout/components/grid-items/component.mjs +1 -1
- package/esm2022/help-document/component.mjs +1 -1
- package/esm2022/k8s-resource-list/footer/component.mjs +1 -1
- package/esm2022/k8s-shared/resource-mark/k8s-resource-mark.component.mjs +1 -1
- package/esm2022/k8s-shared/update-description-dialog/component.mjs +1 -1
- package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +1 -1
- package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +1 -1
- package/esm2022/lazy-component/lazy-load-component.mjs +1 -1
- package/esm2022/license/license-error/component.mjs +1 -1
- package/esm2022/list-display/component.mjs +1 -1
- package/esm2022/metric-chart/metric-chart.component.mjs +1 -1
- package/esm2022/metric-chart/metric-time-pick.mjs +1 -1
- package/esm2022/multi-search/action-input/component.mjs +1 -1
- package/esm2022/multi-search/form/component.mjs +1 -1
- package/esm2022/multi-search/multi-search-tags/component.mjs +1 -1
- package/esm2022/mutable/mosaic/mosaic.component.mjs +1 -1
- package/esm2022/notification/feedback-notification/component.mjs +1 -1
- package/esm2022/overview-banner/overview-banner.component.mjs +1 -1
- package/esm2022/page-guard/component/component.mjs +1 -1
- package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +1 -1
- package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +1 -1
- package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +1 -1
- package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +1 -1
- package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +1 -1
- package/esm2022/page-scaffold/page/notices/notice.component.mjs +1 -1
- package/esm2022/page-scaffold/page/page.component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +1 -1
- package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +1 -1
- package/esm2022/pie-derivative-chart/donut-status/component.mjs +1 -1
- package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +1 -1
- package/esm2022/pod-status/component.mjs +1 -1
- package/esm2022/searchable-selector/component.mjs +1 -1
- package/esm2022/skeleton/item/component.mjs +1 -1
- package/esm2022/skeleton/nav-skeleton/component.mjs +1 -1
- package/esm2022/table/component.mjs +1 -1
- package/esm2022/view-chart/custom-template/dropdown-legend.mjs +1 -1
- package/esm2022/view-chart/legend/legend.component.mjs +1 -1
- package/esm2022/view-chart/view-chart.component.mjs +1 -1
- package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +1 -1
- package/esm2022/view-zchart/legend/legend.component.mjs +1 -1
- package/esm2022/view-zchart/view-zchart.component.mjs +1 -1
- package/esm2022/widget/card-section/card-section.component.mjs +1 -1
- package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +1 -1
- package/esm2022/widget/current-time/component.mjs +1 -1
- package/esm2022/widget/date-range-picker/component.mjs +1 -1
- package/esm2022/widget/field-set/column/component.mjs +2 -2
- package/esm2022/widget/field-set/group/component.mjs +1 -1
- package/esm2022/widget/field-set/item/component.mjs +1 -1
- package/esm2022/widget/foldable-block/component.mjs +1 -1
- package/esm2022/widget/foldable-item-in-table/component.mjs +1 -1
- package/esm2022/widget/loading-mask/loading-mask.component.mjs +1 -1
- package/esm2022/widget/password-input/component.mjs +1 -1
- package/esm2022/widget/relative-time/component.mjs +1 -1
- package/esm2022/widget/resource-label/component.mjs +1 -1
- package/esm2022/widget/resource-multi-select/component.mjs +1 -1
- package/esm2022/widget/search-panel/component.mjs +1 -1
- package/esm2022/widget/search-panel/search-item/component.mjs +1 -1
- package/esm2022/widget/status-icon/status-icon.component.mjs +1 -1
- package/esm2022/widget/tags-label/component.mjs +1 -1
- package/esm2022/widget/terminating-tag/component.mjs +1 -1
- package/esm2022/widget/text-ellipsis/component.mjs +1 -1
- package/esm2022/widget/text-with-url/component.mjs +1 -1
- package/esm2022/widget/zero-state/zero-state.component.mjs +1 -1
- package/esm2022/workload-status-icon/component.mjs +1 -1
- package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +1 -1
- package/esm2022/xterm/xterm.component.mjs +1 -1
- package/package.json +1 -1
- package/styles/global.scss +4 -0
|
@@ -83,7 +83,7 @@ export declare class ArrayFormTableComponent implements OnDestroy {
|
|
|
83
83
|
addDisabled: boolean | '';
|
|
84
84
|
actionColumnDivider: boolean | '';
|
|
85
85
|
showZeroState: boolean;
|
|
86
|
-
get formDirective():
|
|
86
|
+
get formDirective(): NgForm | FormGroupDirective;
|
|
87
87
|
/**
|
|
88
88
|
* 自定义是否展示错误内容
|
|
89
89
|
* 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容
|
|
@@ -15,5 +15,7 @@ export declare const commonOptions: IEditorConstructionOptions;
|
|
|
15
15
|
export declare const readonlyOptions: IEditorConstructionOptions;
|
|
16
16
|
export declare const yamlReadOptions: IEditorConstructionOptions;
|
|
17
17
|
export declare const yamlWriteOptions: IEditorConstructionOptions;
|
|
18
|
+
export declare const yamlWriteMinimapOptions: IEditorConstructionOptions;
|
|
19
|
+
export declare const yamlReadMinimapOptions: IEditorConstructionOptions;
|
|
18
20
|
export declare const textWriteOptions: IEditorConstructionOptions;
|
|
19
21
|
export declare const logsReadOptions: IEditorConstructionOptions;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { editor } from 'monaco-editor/esm/vs/editor/editor.api';
|
|
2
|
+
/**
|
|
3
|
+
* 自动折叠 managedFields 字段
|
|
4
|
+
* @param monacoEditor Monaco 编辑器实例
|
|
5
|
+
*/
|
|
6
|
+
export declare function foldManagedFields(monacoEditor: editor.IStandaloneCodeEditor): void;
|
|
7
|
+
/**
|
|
8
|
+
* 编辑器实例获取器接口
|
|
9
|
+
*/
|
|
10
|
+
export interface EditorInstanceProvider {
|
|
11
|
+
getEditorInstance(): editor.IStandaloneCodeEditor | null;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* ManagedFields 自动折叠器
|
|
15
|
+
* 用于在内容变化时自动折叠 managedFields 字段
|
|
16
|
+
*/
|
|
17
|
+
export declare class ManagedFieldsAutoFolder {
|
|
18
|
+
private subscription?;
|
|
19
|
+
private lastFoldedContent;
|
|
20
|
+
/**
|
|
21
|
+
* 开始监听内容变化并自动折叠
|
|
22
|
+
* @param editorProvider 编辑器实例提供者
|
|
23
|
+
* @param contentObservable 内容变化的 Observable
|
|
24
|
+
*/
|
|
25
|
+
startAutoFold(editorProvider: EditorInstanceProvider, contentObservable: any): void;
|
|
26
|
+
/**
|
|
27
|
+
* 停止自动折叠
|
|
28
|
+
*/
|
|
29
|
+
stopAutoFold(): void;
|
|
30
|
+
/**
|
|
31
|
+
* 手动执行一次折叠
|
|
32
|
+
* @param editorProvider 编辑器实例提供者
|
|
33
|
+
*/
|
|
34
|
+
foldOnce(editorProvider: EditorInstanceProvider): void;
|
|
35
|
+
}
|
package/code/public-api.d.ts
CHANGED
|
@@ -9,3 +9,7 @@ export * from './code-display-dialog/component';
|
|
|
9
9
|
export * from './code-editor-configs';
|
|
10
10
|
export * from './k8s-yaml-display-dialog/component';
|
|
11
11
|
export * from './resource-yaml-display/component';
|
|
12
|
+
export * from './resource-yaml-editor/component';
|
|
13
|
+
export * from './yaml-sidebar/component';
|
|
14
|
+
export * from './yaml-sidebar/types';
|
|
15
|
+
export * from './yaml-examples';
|
|
@@ -1,20 +1,78 @@
|
|
|
1
|
+
import { MonacoLanguageService } from '@alauda/code-editor';
|
|
2
|
+
import { OnDestroy, AfterViewInit } from '@angular/core';
|
|
3
|
+
import { editor } from 'monaco-editor/esm/vs/editor/editor.api';
|
|
1
4
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
2
|
-
import {
|
|
5
|
+
import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
|
|
6
|
+
import { YamlUtilService } from '../../core/services/yaml-util.service';
|
|
7
|
+
import { Arrayable } from '../../core/types/helpers';
|
|
8
|
+
import { KubernetesResource } from '../../core/types/k8s/core';
|
|
9
|
+
import { OpenAPIV3SchemaObject } from '../../core/types/schema';
|
|
10
|
+
import { EditorInstanceProvider } from '../managed-fields-folder.util';
|
|
3
11
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class ResourceYamlDisplayComponent<T extends KubernetesResource> {
|
|
5
|
-
|
|
12
|
+
export declare class ResourceYamlDisplayComponent<T extends KubernetesResource> implements OnDestroy, AfterViewInit, EditorInstanceProvider {
|
|
13
|
+
readonly yamlUtil: YamlUtilService;
|
|
14
|
+
readonly schemaService: KubernetesSchemaService;
|
|
15
|
+
private readonly monacoLanguageService;
|
|
16
|
+
private destroy$;
|
|
6
17
|
concise$$: BehaviorSubject<boolean>;
|
|
7
18
|
reduce$$: BehaviorSubject<boolean>;
|
|
19
|
+
showSidebar$$: BehaviorSubject<boolean>;
|
|
20
|
+
showDebugPanel$$: BehaviorSubject<boolean>;
|
|
21
|
+
modelUri: string;
|
|
22
|
+
private yamlSchemaService;
|
|
23
|
+
private monacoEditor;
|
|
24
|
+
private registeredSchemas;
|
|
25
|
+
codeEditorRef: {
|
|
26
|
+
editor: editor.IStandaloneCodeEditor;
|
|
27
|
+
};
|
|
8
28
|
hasWrapper: boolean;
|
|
29
|
+
showDebugInfo: boolean;
|
|
9
30
|
conciseEnable: boolean;
|
|
10
31
|
manageFieldActionEnable: boolean;
|
|
32
|
+
sidebarEnable: boolean;
|
|
33
|
+
schemaEnable: boolean;
|
|
34
|
+
exampleEnable: boolean;
|
|
35
|
+
autoFoldManagedFields: boolean;
|
|
36
|
+
schema: OpenAPIV3SchemaObject;
|
|
11
37
|
resource: Arrayable<T>;
|
|
12
38
|
readonly resource$: Observable<Arrayable<T>>;
|
|
13
|
-
|
|
39
|
+
readonly schema$: Observable<OpenAPIV3SchemaObject>;
|
|
40
|
+
minimap: boolean;
|
|
41
|
+
yamlReadMinimapOptions: import("../code-editor-configs").IEditorConstructionOptions;
|
|
42
|
+
yamlReadOptions: import("../code-editor-configs").IEditorConstructionOptions;
|
|
43
|
+
hasFolded: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* 自动获取的 schema,当没有手动提供 schema 时使用
|
|
46
|
+
*/
|
|
47
|
+
autoSchema$: Observable<OpenAPIV3SchemaObject>;
|
|
48
|
+
/**
|
|
49
|
+
* 最终使用的 schema,优先使用手动提供的,否则使用自动获取的
|
|
50
|
+
*/
|
|
51
|
+
finalSchema$: Observable<OpenAPIV3SchemaObject>;
|
|
52
|
+
constructor(yamlUtil: YamlUtilService, schemaService: KubernetesSchemaService, monacoLanguageService: MonacoLanguageService);
|
|
14
53
|
yaml$: Observable<string>;
|
|
15
|
-
editorOptions: import("../code-editor-configs").IEditorConstructionOptions;
|
|
54
|
+
get editorOptions(): import("../code-editor-configs").IEditorConstructionOptions;
|
|
16
55
|
viewActions: import("@alauda/code-editor").CodeEditorActionsConfig;
|
|
17
56
|
conciseChange(value: boolean): void;
|
|
57
|
+
toggleSidebar(): void;
|
|
58
|
+
toggleDebugInfo(): void;
|
|
59
|
+
getCurrentResource(): T | null;
|
|
60
|
+
getCurrentSchema(): OpenAPIV3SchemaObject | null;
|
|
61
|
+
selfFoldManagedFields(): void;
|
|
62
|
+
/**
|
|
63
|
+
* 设置 YAML schema 以提供 hover 提示和自动完成
|
|
64
|
+
*/
|
|
65
|
+
setYamlSchema(resource: T, schema: OpenAPIV3SchemaObject): void;
|
|
66
|
+
ngAfterViewInit(): void;
|
|
67
|
+
/**
|
|
68
|
+
* 获取 Monaco Editor 实例
|
|
69
|
+
*/
|
|
70
|
+
getEditorInstance(): editor.IStandaloneCodeEditor | null;
|
|
71
|
+
/**
|
|
72
|
+
* 自动折叠 managedFields 字段
|
|
73
|
+
*/
|
|
74
|
+
foldManagedFields(): void;
|
|
75
|
+
ngOnDestroy(): void;
|
|
18
76
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlDisplayComponent<any>, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlDisplayComponent<any>, "acl-resource-yaml-display", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "conciseEnable": { "alias": "conciseEnable"; "required": false; }; "manageFieldActionEnable": { "alias": "manageFieldActionEnable"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; }, {}, never, never, true, never>;
|
|
77
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlDisplayComponent<any>, "acl-resource-yaml-display", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "showDebugInfo": { "alias": "showDebugInfo"; "required": false; }; "conciseEnable": { "alias": "conciseEnable"; "required": false; }; "manageFieldActionEnable": { "alias": "manageFieldActionEnable"; "required": false; }; "sidebarEnable": { "alias": "sidebarEnable"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "autoFoldManagedFields": { "alias": "autoFoldManagedFields"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; "minimap": { "alias": "minimap"; "required": false; }; }, {}, never, never, true, never>;
|
|
20
78
|
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { MonacoLanguageService } from '@alauda/code-editor';
|
|
2
|
+
import { EventEmitter, OnDestroy, AfterViewInit } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
4
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
5
|
+
import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
|
|
6
|
+
import { YamlUtilService } from '../../core/services/yaml-util.service';
|
|
7
|
+
import { Arrayable } from '../../core/types/helpers';
|
|
8
|
+
import { KubernetesResource } from '../../core/types/k8s/core';
|
|
9
|
+
import { OpenAPIV3SchemaObject } from '../../core/types/schema';
|
|
10
|
+
import { EditorInstanceProvider } from '../managed-fields-folder.util';
|
|
11
|
+
import { YamlExample } from '../yaml-sidebar/types';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export declare class ResourceYamlEditorComponent<T extends KubernetesResource> implements ControlValueAccessor, OnDestroy, EditorInstanceProvider, AfterViewInit {
|
|
14
|
+
readonly yamlUtil: YamlUtilService;
|
|
15
|
+
readonly schemaService: KubernetesSchemaService;
|
|
16
|
+
private readonly monacoLanguageService;
|
|
17
|
+
private destroy$;
|
|
18
|
+
private _value;
|
|
19
|
+
private _originalValue;
|
|
20
|
+
private onChange;
|
|
21
|
+
private onTouched;
|
|
22
|
+
showSidebar$$: BehaviorSubject<boolean>;
|
|
23
|
+
showDebugPanel$$: BehaviorSubject<boolean>;
|
|
24
|
+
modelUri: string;
|
|
25
|
+
private yamlSchemaService;
|
|
26
|
+
private monacoEditor;
|
|
27
|
+
private registeredSchemas;
|
|
28
|
+
private codeEditorRef;
|
|
29
|
+
hasWrapper: boolean;
|
|
30
|
+
showDebugInfo: boolean;
|
|
31
|
+
sidebarEnable: boolean;
|
|
32
|
+
schema: OpenAPIV3SchemaObject;
|
|
33
|
+
schemaEnable: boolean;
|
|
34
|
+
exampleEnable: boolean;
|
|
35
|
+
resource: Arrayable<T>;
|
|
36
|
+
autoFoldManagedFields: boolean;
|
|
37
|
+
set originalValue(value: string);
|
|
38
|
+
get originalValue(): string;
|
|
39
|
+
options: import("../code-editor-configs").IEditorConstructionOptions;
|
|
40
|
+
actionsConfig: import("@alauda/code-editor").CodeEditorActionsConfig;
|
|
41
|
+
tryYaml: EventEmitter<string>;
|
|
42
|
+
readonly resource$: Observable<Arrayable<T>>;
|
|
43
|
+
readonly schema$: Observable<OpenAPIV3SchemaObject>;
|
|
44
|
+
autoFillNamespace: boolean;
|
|
45
|
+
extraExamples: YamlExample[];
|
|
46
|
+
hasFolded: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 自动获取的 schema,当没有手动提供 schema 时使用
|
|
49
|
+
*/
|
|
50
|
+
autoSchema$: Observable<OpenAPIV3SchemaObject>;
|
|
51
|
+
/**
|
|
52
|
+
* 最终使用的 schema,优先使用手动提供的,否则使用自动获取的
|
|
53
|
+
*/
|
|
54
|
+
finalSchema$: Observable<OpenAPIV3SchemaObject>;
|
|
55
|
+
constructor(yamlUtil: YamlUtilService, schemaService: KubernetesSchemaService, monacoLanguageService: MonacoLanguageService);
|
|
56
|
+
ngAfterViewInit(): void;
|
|
57
|
+
selfFoldManagedFields(): void;
|
|
58
|
+
get value(): string;
|
|
59
|
+
set value(val: string);
|
|
60
|
+
writeValue(value: string): void;
|
|
61
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
62
|
+
registerOnTouched(fn: () => void): void;
|
|
63
|
+
toggleSidebar(): void;
|
|
64
|
+
toggleDebugInfo(): void;
|
|
65
|
+
getCurrentResource(): T | null;
|
|
66
|
+
getCurrentSchema(): OpenAPIV3SchemaObject | null;
|
|
67
|
+
getDebugInfo(): {
|
|
68
|
+
hasResource: boolean;
|
|
69
|
+
resourceApiVersion: string;
|
|
70
|
+
resourceKind: string;
|
|
71
|
+
hasManualSchema: boolean;
|
|
72
|
+
workspaceHelperAvailable: boolean;
|
|
73
|
+
currentWorkspace: Readonly<{
|
|
74
|
+
project: string;
|
|
75
|
+
cluster: string;
|
|
76
|
+
namespace: string;
|
|
77
|
+
}>;
|
|
78
|
+
};
|
|
79
|
+
onTryYaml(yamlContent: string): void;
|
|
80
|
+
/**
|
|
81
|
+
* 设置 YAML schema 以提供 hover 提示和自动完成
|
|
82
|
+
*/
|
|
83
|
+
setYamlSchema(resource: T, schema: OpenAPIV3SchemaObject): void;
|
|
84
|
+
/**
|
|
85
|
+
* 获取 Monaco 编辑器实例
|
|
86
|
+
*/
|
|
87
|
+
getEditorInstance(): import('monaco-editor').editor.IStandaloneCodeEditor | null;
|
|
88
|
+
/**
|
|
89
|
+
* 手动折叠 managedFields
|
|
90
|
+
*/
|
|
91
|
+
foldManagedFields(): void;
|
|
92
|
+
ngOnDestroy(): void;
|
|
93
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlEditorComponent<any>, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlEditorComponent<any>, "acl-resource-yaml-editor", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "showDebugInfo": { "alias": "showDebugInfo"; "required": false; }; "sidebarEnable": { "alias": "sidebarEnable"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; "autoFoldManagedFields": { "alias": "autoFoldManagedFields"; "required": false; }; "originalValue": { "alias": "originalValue"; "required": false; }; "options": { "alias": "options"; "required": false; }; "actionsConfig": { "alias": "actionsConfig"; "required": false; }; "autoFillNamespace": { "alias": "autoFillNamespace"; "required": false; }; "extraExamples": { "alias": "extraExamples"; "required": false; }; }, { "tryYaml": "tryYaml"; }, never, never, true, never>;
|
|
95
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { OnInit, OnChanges, SimpleChanges, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
3
|
+
import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
|
|
4
|
+
import { KubernetesResource } from '../../core/types/k8s/core';
|
|
5
|
+
import { OpenAPIV3SchemaObject } from '../../core/types/schema';
|
|
6
|
+
import { YamlExample } from './types';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class ResourceYamlSidebarComponent implements OnInit, OnChanges {
|
|
9
|
+
private schemaService;
|
|
10
|
+
private http;
|
|
11
|
+
private cdr;
|
|
12
|
+
resource: KubernetesResource;
|
|
13
|
+
schema: OpenAPIV3SchemaObject;
|
|
14
|
+
close: EventEmitter<void>;
|
|
15
|
+
tryYaml: EventEmitter<string>;
|
|
16
|
+
schemaEnable: boolean;
|
|
17
|
+
exampleEnable: boolean;
|
|
18
|
+
extraExamples: YamlExample[];
|
|
19
|
+
private readonly DEFINITIONS_PREFIX;
|
|
20
|
+
currentSchema: OpenAPIV3SchemaObject;
|
|
21
|
+
properties: {
|
|
22
|
+
[key: string]: OpenAPIV3SchemaObject;
|
|
23
|
+
};
|
|
24
|
+
path: string[];
|
|
25
|
+
resourceKind: string;
|
|
26
|
+
examples: YamlExample[];
|
|
27
|
+
hasSchema: boolean;
|
|
28
|
+
hasExamples: boolean;
|
|
29
|
+
constructor(schemaService: KubernetesSchemaService, http: HttpClient, cdr: ChangeDetectorRef);
|
|
30
|
+
ngOnInit(): void;
|
|
31
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
32
|
+
refresh(): void;
|
|
33
|
+
private loadExamples;
|
|
34
|
+
private loadConsoleYAMLSamples;
|
|
35
|
+
drillDownToProperty(name: string): void;
|
|
36
|
+
navigateToPath(index: number): void;
|
|
37
|
+
hasNestedProperties(property: OpenAPIV3SchemaObject): boolean;
|
|
38
|
+
getPropertyType(property: OpenAPIV3SchemaObject): string;
|
|
39
|
+
isRequired(propertyName: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* 检查属性是否有 $ref 引用或嵌套属性
|
|
42
|
+
*/
|
|
43
|
+
hasViewableContent(property: OpenAPIV3SchemaObject): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* 检查属性是否有 $ref 引用
|
|
46
|
+
*/
|
|
47
|
+
hasRefProperty(property: OpenAPIV3SchemaObject): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* 获取 $ref 引用的定义名称
|
|
50
|
+
*/
|
|
51
|
+
getRefDefinitionName(property: OpenAPIV3SchemaObject): string;
|
|
52
|
+
tryExample(example: YamlExample): void;
|
|
53
|
+
downloadYaml(example: YamlExample): void;
|
|
54
|
+
processDescription(description: string): string;
|
|
55
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlSidebarComponent, never>;
|
|
56
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlSidebarComponent, "acl-resource-yaml-sidebar", never, { "resource": { "alias": "resource"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "extraExamples": { "alias": "extraExamples"; "required": false; }; }, { "close": "close"; "tryYaml": "tryYaml"; }, never, never, true, never>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface YamlExample {
|
|
2
|
+
title: string;
|
|
3
|
+
description: string;
|
|
4
|
+
yaml: string;
|
|
5
|
+
snippet?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ConsoleYAMLSample {
|
|
8
|
+
metadata: {
|
|
9
|
+
name: string;
|
|
10
|
+
};
|
|
11
|
+
spec: {
|
|
12
|
+
title: string;
|
|
13
|
+
description: string;
|
|
14
|
+
yaml: string;
|
|
15
|
+
snippet?: boolean;
|
|
16
|
+
targetResource: {
|
|
17
|
+
apiVersion: string;
|
|
18
|
+
kind: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -21,7 +21,7 @@ export declare class BaseNestedFormControl<V, M = V> implements AfterViewInit, O
|
|
|
21
21
|
protected asyncValidator: boolean;
|
|
22
22
|
protected cdr: ChangeDetectorRef;
|
|
23
23
|
protected destroy$$: Subject<void>;
|
|
24
|
-
protected hostForm:
|
|
24
|
+
protected hostForm: NgForm | FormGroupDirective;
|
|
25
25
|
constructor();
|
|
26
26
|
ngAfterViewInit(): void;
|
|
27
27
|
ngOnDestroy(): void;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { OpenAPIV2Document } from '../types/openapi';
|
|
3
|
+
import { OpenAPIV3SchemaObject } from '../types/schema';
|
|
4
|
+
import { WorkspaceHelperService } from './workspace-helper.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class KubernetesSchemaService {
|
|
7
|
+
private readonly http;
|
|
8
|
+
readonly workspaceHelper: WorkspaceHelperService;
|
|
9
|
+
private initialized;
|
|
10
|
+
private readonly schemaCache;
|
|
11
|
+
private readonly schemaCache$$;
|
|
12
|
+
get definitions(): Record<string, OpenAPIV3SchemaObject>;
|
|
13
|
+
private ensureInitialized;
|
|
14
|
+
/**
|
|
15
|
+
* 获取当前集群的 OpenAPI schema
|
|
16
|
+
*/
|
|
17
|
+
getOpenAPISchema(): Observable<OpenAPIV2Document | null>;
|
|
18
|
+
/**
|
|
19
|
+
* 根据 Kubernetes 资源类型获取对应的 schema
|
|
20
|
+
*/
|
|
21
|
+
getResourceSchema(apiVersion: string, kind: string): Observable<OpenAPIV3SchemaObject | null>;
|
|
22
|
+
/**
|
|
23
|
+
* 获取所有可用的资源定义
|
|
24
|
+
*/
|
|
25
|
+
getAllResourceDefinitions(): Observable<Record<string, OpenAPIV3SchemaObject> | null>;
|
|
26
|
+
/**
|
|
27
|
+
* 清理缓存
|
|
28
|
+
*/
|
|
29
|
+
clearCache(): void;
|
|
30
|
+
/**
|
|
31
|
+
* 获取缓存状态
|
|
32
|
+
*/
|
|
33
|
+
getCacheStatus(): Observable<Map<string, OpenAPIV2Document>>;
|
|
34
|
+
/**
|
|
35
|
+
* 检查 WorkspaceHelperService 是否可用
|
|
36
|
+
*/
|
|
37
|
+
isWorkspaceHelperAvailable(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 从 Kubernetes API 获取 OpenAPI schema
|
|
40
|
+
*/
|
|
41
|
+
private fetchOpenAPISchema;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<KubernetesSchemaService, never>;
|
|
43
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<KubernetesSchemaService>;
|
|
44
|
+
}
|
|
@@ -4,6 +4,7 @@ export * from './custom-code-editor-intl.service';
|
|
|
4
4
|
export * from './feature-gate.service';
|
|
5
5
|
export * from './intercept-deactivate.service';
|
|
6
6
|
export * from './k8s-util.service';
|
|
7
|
+
export * from './kubernetes-schema.service';
|
|
7
8
|
export * from './silently-navigate.service';
|
|
8
9
|
export * from './time.service';
|
|
9
10
|
export * from './ui-state.service';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { OpenAPIV3SchemaObject } from './schema';
|
|
2
|
+
export interface OpenAPIV2Document {
|
|
3
|
+
swagger: string;
|
|
4
|
+
info: {
|
|
5
|
+
title: string;
|
|
6
|
+
version: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
};
|
|
9
|
+
host?: string;
|
|
10
|
+
basePath?: string;
|
|
11
|
+
schemes?: string[];
|
|
12
|
+
consumes?: string[];
|
|
13
|
+
produces?: string[];
|
|
14
|
+
paths: Record<string, any>;
|
|
15
|
+
definitions: Record<string, OpenAPIV3SchemaObject>;
|
|
16
|
+
parameters?: Record<string, any>;
|
|
17
|
+
responses?: Record<string, any>;
|
|
18
|
+
securityDefinitions?: Record<string, any>;
|
|
19
|
+
security?: any[];
|
|
20
|
+
tags?: any[];
|
|
21
|
+
externalDocs?: any;
|
|
22
|
+
}
|
|
23
|
+
export interface SchemaProperty {
|
|
24
|
+
name: string;
|
|
25
|
+
type: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
required: boolean;
|
|
28
|
+
properties?: {
|
|
29
|
+
[key: string]: OpenAPIV3SchemaObject;
|
|
30
|
+
};
|
|
31
|
+
items?: OpenAPIV3SchemaObject;
|
|
32
|
+
}
|
|
33
|
+
export interface SchemaBreadcrumb {
|
|
34
|
+
name: string;
|
|
35
|
+
path: string[];
|
|
36
|
+
schema: OpenAPIV3SchemaObject;
|
|
37
|
+
}
|
|
@@ -63,5 +63,5 @@ export class AbnormalPageComponent {
|
|
|
63
63
|
</acl-page-guard>
|
|
64
64
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".description{color:rgb(var(--aui-color-secondary-text))}\n"] }]
|
|
65
65
|
}], null, null); })();
|
|
66
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AbnormalPageComponent, { className: "AbnormalPageComponent" }); })();
|
|
66
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AbnormalPageComponent, { className: "AbnormalPageComponent", filePath: "abnormal-page/abnormal-page.component.ts", lineNumber: 33 }); })();
|
|
67
67
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJub3JtYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYWJub3JtYWwtcGFnZS9hYm5vcm1hbC1wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztJQVU1Qyw2QkFBdUM7SUFFbkMsQUFERiw0QkFBdUIsV0FFbEI7SUFBQSxZQUN1Qjs7O0lBQUEsaUJBQ3pCO0lBQ0QsaUNBSUM7SUFEQywwTEFBUyxjQUFPLEtBQUM7SUFFakIsWUFDRjs7SUFDRixBQURFLGlCQUFTLEVBQ1A7OztJQVZDLGVBQ3VCO0lBRHZCLGtIQUN1QjtJQU94QixlQUNGO0lBREUsOERBQ0Y7O0FBUVYsTUFBTSxPQUFPLHFCQUFxQjtJQTVCbEM7UUE2QkUsV0FBTSxHQUFHLE1BQU0sQ0FBQztLQUtqQjtJQUhDLEtBQUs7UUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7c0ZBTFUscUJBQXFCO29FQUFyQixxQkFBcUI7WUF6QjlCLHlDQUlDO1lBQ0Msd0ZBQXVDO1lBZXpDLGlCQUFpQjs7WUFqQmYsQUFEQSxBQURBLCtCQUFpQiwrQkFDUyxnQkFDWDs7O2lGQXNCUixxQkFBcUI7Y0E1QmpDLFNBQVM7MkJBQ0UsbUJBQW1CLFlBQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNOztrRkFFcEMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWFzb24gfSBmcm9tICcuLi9wYWdlLWd1YXJkL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtYWJub3JtYWwtcGFnZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGFjbC1wYWdlLWd1YXJkXG4gICAgICBbYWxsb3dlZF09XCJmYWxzZVwiXG4gICAgICBbcmVhc29uXT1cInJlYXNvbi5BYm5vcm1hbFwiXG4gICAgICBbaXNGdWxsXT1cInRydWVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKmFjbFBhZ2VHdWFyZERlc2NyaXB0aW9uPlxuICAgICAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgID57eyAnc3lzdGVtX2Fibm9ybWFsX2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX17eyAnb3InIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmV0cnkoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3JldHJ5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FjbC1wYWdlLWd1YXJkPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hYm5vcm1hbC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBYm5vcm1hbFBhZ2VDb21wb25lbnQge1xuICByZWFzb24gPSBSZWFzb247XG5cbiAgcmV0cnkoKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -531,5 +531,5 @@ export class ArrayFormTableComponent {
|
|
|
531
531
|
}], rowDrop: [{
|
|
532
532
|
type: Output
|
|
533
533
|
}] }); })();
|
|
534
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArrayFormTableComponent, { className: "ArrayFormTableComponent" }); })();
|
|
534
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArrayFormTableComponent, { className: "ArrayFormTableComponent", filePath: "array-form-table/form/component.ts", lineNumber: 130 }); })();
|
|
535
535
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYXJyYXktZm9ybS10YWJsZS9mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsU0FBUyxFQUNULGtCQUFrQixFQUNsQixNQUFNLEdBQ1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUs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SztZQUlOLGFBQWE7a0JBRFosS0FBSztZQUdHLFVBQVU7a0JBQWxCLEtBQUs7WUFFSSxPQUFPO2tCQUFoQixNQUFNOztrRkE1SUksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCByZ2JDb2xvciwgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUdyb3VwLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nRm9ybSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBFTVBUWSwgbWFwLCBtZXJnZSwgc3RhcnRXaXRoLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFB1cmVQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9wdXJlLnBpcGUnO1xuaW1wb3J0IHsgRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUgfSBmcm9tICcuLi8uLi9lZmZlY3QtZGlyZWN0aXZlL21vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBaZXJvU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXQvemVyby1zdGF0ZS96ZXJvLXN0YXRlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHID0gcmdiQ29sb3IoJ3ItNicpO1xuXG5leHBvcnQgY29uc3Qgcm93QmFja2dyb3VuZENvbG9yRm4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oe1xuICBpbnZhbGlkLFxufTogVCk6IHN0cmluZyA9PiAoaW52YWxpZCA/IEFSUkFZX1RBQkxFX0ZPUk1fRVJST1JfQkcgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBub1Nob3dSb3dFcnJvciA9ICgpID0+IGZhbHNlO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVIZWFkZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd0Vycm9yXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93RXJyb3JEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVJvd0RpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVSb3dDb250cm9sXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVGb290ZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVGb290ZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8vIOmAkuW9kumqjOivgSBjb250cm9sIOaYr+WQpuaciemXrumimO+8jGdyb3VwIOWGhemDqOWPr+iDveS8muacieW1jOWll+eahOaDheWGtVxuZnVuY3Rpb24gX2lzRm9ybUNvbnRyb2xJbnZhbGlkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb250cm9sLmRpcnR5ICYmICEhY29udHJvbC5lcnJvcnMpIHx8XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpLnNvbWUoX2lzRm9ybUNvbnRyb2xJbnZhbGlkKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC5pbnZhbGlkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtYXJyYXktZm9ybS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgLy8gU2luY2Ugcm93cyBtYXliZSB1cGRhdGVkIHdpdGhvdXQgY2hhbmdpbmcgcmVmZXJlbmNlLCB3ZSB1c2UgRGVmYXVsdCBoZXJlOlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3ByZWZlci1vbi1wdXNoLWNvbXBvbmVudC1jaGFuZ2UtZGV0ZWN0aW9uXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBaZXJvU3RhdGVDb21wb25lbnQsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIFB1cmVQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgLi4uRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZUhlYWRlckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8g55So5oi35Y+v5Lul5o+Q5L6b5aSa6KGM5qih5p2/LCDkvYblj6rmnInnrKzkuIDooYzmnInmjqfliLbmjInplK4uXG4gIEBDb250ZW50Q2hpbGRyZW4oQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcm93VGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHJvd0Vycm9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihqOWNlem7mOiupOaPkOS+m+WIoOmZpOaMiemUrjsg5YGH5aaC55So5oi35o+Q5L6b5qih5p2/LCDlsIbkvb/nlKjnlKjmiLfnmoTmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICByb3dDb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihqOWNlem7mOiupOaPkOS+m+a3u+WKoOaMiemUrjsg5YGH5aaC55So5oi35o+Q5L6b5qih5p2/LCDlsIbkvb/nlKjnlKjmiLfnmoTmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVGb290ZXJEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooajljZXpu5jorqTkuLrnqbrmlbDmja7mj5Dkvpvml6B4eHjnmoTmqKHmnb87IOWBh+WmgueUqOaIt+aPkOS+m+aooeadvywg5bCG5L2/55So55So5oi355qE5qih5p2/XG4gICAqL1xuICBAQ29udGVudENoaWxkKEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgemVyb1N0YXRlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihjOS5i+mXtOeahOWIhumalOWMuuWfn+iHquWumuS5ieaooeadv1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVJvd1NlcGFyYXRvckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHNlcGFyYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooYzkuYvpl7TnmoTliIbpmpTljLrln5/vvIzpu5jorqTlhbPpl61cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd1NlcGFyYXRvciA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoRm9ybUdyb3VwRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbmdGb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZTtcblxuICAvLyBEYXRhIGNvbnRleHQgZm9yIHJvd3MuXG4gIEBJbnB1dCgpXG4gIHJvd3M6IGFueVtdO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZSA9IG51bGwgYXMgc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZVRyYW5zbGF0ZWQ6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy8gUmV0dXJucyB0aGUgaW5kZXggdG8gYmUgcmVtb3ZlZFxuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5OiBib29sZWFuIHwgJycgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBhZGREaXNhYmxlZDogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWN0aW9uQ29sdW1uRGl2aWRlcjogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2hvd1plcm9TdGF0ZSA9IHRydWU7XG5cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEZvcm1Hcm91cERpcmVjdGl2ZSwgbnVsbCkgfHxcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KE5nRm9ybSwgbnVsbClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOiHquWumuS5ieaYr+WQpuWxleekuumUmeivr+WGheWuuVxuICAgKiDkvovlpoIgY29udHJvbCDmmK8gRm9ybUdyb3Vw77yM5Y+q5pyJ5Zyo5YaF6YOo5a2QIGNvbnRyb2wg6ZSZ6K+v5pe25omN6ZyA6KaB5bGV56S66ZSZ6K+v5YaF5a65XG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93Um93RXJyb3I8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gICAgY29udHJvbDogVCxcbiAgICBmb3JtRGlyZWN0aXZlPzogTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybURpcmVjdGl2ZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29udHJvbC5pbnZhbGlkICYmXG4gICAgICAgIChmb3JtRGlyZWN0aXZlLnN1Ym1pdHRlZCB8fCBfaXNGb3JtQ29udHJvbEludmFsaWQoY29udHJvbCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIHNob3dSb3dFcnJvcn0gaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KClcbiAgcm93QmFja2dyb3VuZENvbG9yRm48VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gICAgY29udHJvbDogVCxcbiAgICBmb3JtRGlyZWN0aXZlPzogTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNob3dSb3dFcnJvcihjb250cm9sLCBmb3JtRGlyZWN0aXZlKVxuICAgICAgPyBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBtaW5Sb3cgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG1pblJvd1Rvb2x0aXAgPSAnJztcblxuICBASW5wdXQoKVxuICBtYXhSb3cgPSBJbmZpbml0eTtcblxuICBASW5wdXQoKVxuICBtYXhSb3dUb29sdGlwID0gJyc7XG5cbiAgQElucHV0KCkgZW5hYmxlRHJvcCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByb3dEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxDZGtEcmFnRHJvcDxGb3JtR3JvdXBbXT4+KCk7XG5cbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjZHIgPSB0aGlzLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEZvcm1Hcm91cFtdPikge1xuICAgIHRoaXMucm93RHJvcC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHNob3VsZFNob3dSb3dFcnJvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICBjb25zdCB7IHN0YXR1c0NoYW5nZXMgPSBFTVBUWSwgc3RhdHVzIH0gPSBjb250cm9sO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZm9ybURpcmVjdGl2ZVxuICAgICAgICA/IG1lcmdlKHN0YXR1c0NoYW5nZXMsIHRoaXMuZm9ybURpcmVjdGl2ZS5uZ1N1Ym1pdClcbiAgICAgICAgOiBzdGF0dXNDaGFuZ2VzXG4gICAgKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKHN0YXR1cyksXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5zaG93Um93RXJyb3IoY29udHJvbCwgdGhpcy5mb3JtRGlyZWN0aXZlKSksXG4gICAgKTtcbiAgfTtcbn1cbiIsIjx0YWJsZVxuICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlXCJcbiAgW2NsYXNzLmFjbC1hcnJheS1mb3JtLXRhYmxlX19yZWFkb25seS1tb2RlXT1cInJlYWRvbmx5XCJcbj5cbiAgPHRoZWFkICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8dHI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0aFxuICAgICAgICAqbmdJZj1cIiFyZWFkb25seSAmJiBtaW5Sb3cgIT09IG1heFJvd1wiXG4gICAgICAgIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2xcIlxuICAgICAgPjwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5XG4gICAgY2RrRHJvcExpc3RcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgIDx0clxuICAgICAgICAqbmdGb3I9XCJsZXQgcm93VGVtcGxhdGUgb2Ygcm93VGVtcGxhdGVzOyBsZXQgdGVtcGxhdGVJbmRleCA9IGluZGV4XCJcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2xhc3MuYWNsLWFycmF5LWZvcm0tdGFibGVfX3Jvdy1lcnJvcl09XCJcbiAgICAgICAgICByb3cgfCBwdXJlOiBzaG91bGRTaG93Um93RXJyb3IgfCBhc3luY1xuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5yb3d0ZW1wbGF0ZWluZGV4XT1cInRlbXBsYXRlSW5kZXhcIlxuICAgICAgPlxuICAgICAgICA8dGQgW2hpZGRlbl09XCIhZW5hYmxlRHJvcFwiPlxuICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1tbC04XCJcbiAgICAgICAgICAgIGljb249XCJtb3ZlXCJcbiAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpbmRleCB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGRcbiAgICAgICAgICAqbmdJZj1cInRlbXBsYXRlSW5kZXggPT09IDAgJiYgIXJlYWRvbmx5ICYmIG1pblJvdyAhPT0gbWF4Um93XCJcbiAgICAgICAgICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19hY3Rpb24tY29sXCJcbiAgICAgICAgICBbY2xhc3MuYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2wtZGl2aWRlcl09XCJhY3Rpb25Db2x1bW5EaXZpZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dDb250cm9sVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByb3dDb250cm9sVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGluZGV4IH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbYXVpVG9vbHRpcF09XCJtaW5Sb3dUb29sdGlwXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwicm93cz8ubGVuZ3RoID4gbWluUm93IHx8ICFtaW5Sb3dUb29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXJvd0NvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPD0gbWluUm93XCJcbiAgICAgICAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlLmVtaXQoaW5kZXgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJtaW51c19jaXJjbGVcIj48L2F1aS1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuXG4gICAgICA8dHJcbiAgICAgICAgKm5nSWY9XCJyb3dFcnJvclRlbXBsYXRlICYmICFyZWFkb25seVwiXG4gICAgICAgIFtjbGFzcy5hY2wtYXJyYXktZm9ybS10YWJsZV9fcm93LWVycm9yXT1cIlxuICAgICAgICAgIHJvdyB8IHB1cmU6IHNob3VsZFNob3dSb3dFcnJvciB8IGFzeW5jXG4gICAgICAgIFwiXG4gICAgICAgIFtoaWRkZW5dPVwiIShyb3cgfCBwdXJlOiBzaG91bGRTaG93Um93RXJyb3IgfCBhc3luYylcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHJvd0Vycm9yVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaW5kZXggfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKHJvd1NlcGFyYXRvciB8fCBzZXBhcmF0b3JUZW1wbGF0ZSkgJiZcbiAgICAgICAgICByb3dzPy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgaW5kZXggIT09IHJvd3M/Lmxlbmd0aCAtIDFcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHRyIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX3NlcGFyYXRvclwiPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgICAgICBAaWYgKHNlcGFyYXRvclRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlcGFyYXRvclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1oLVs4cHhdXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyICpuZ0lmPVwiKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSAmJiBzaG93WmVyb1N0YXRlXCI+XG4gICAgICA8dGRcbiAgICAgICAgY29sc3Bhbj1cIjEwMFwiXG4gICAgICAgIHN0eWxlPVwicGFkZGluZzogdW5zZXRcIlxuICAgICAgPlxuICAgICAgICA8YWNsLXplcm8tc3RhdGVcbiAgICAgICAgICAqbmdJZj1cIiF6ZXJvU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgW3Nob3dFbXB0eUljb25dPVwiZmFsc2VcIlxuICAgICAgICAgIFt6ZXJvU3RhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Jlc291cmNlTmFtZV09XCJyZXNvdXJjZU5hbWVcIlxuICAgICAgICAgIFtyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXT1cInJlc291cmNlTmFtZVRyYW5zbGF0ZWRcIlxuICAgICAgICAgIFttaW5IZWlnaHRdPVwiNDhcIlxuICAgICAgICA+PC9hY2wtemVyby1zdGF0ZT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiemVyb1N0YXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiemVyb1N0YXRlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG5cbiAgICA8dHJcbiAgICAgICpuZ0lmPVwiIXJlYWRvbmx5ICYmIG1pblJvdyAhPT0gbWF4Um93XCJcbiAgICAgIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGUtLXJvdy1hY3Rpb25cIlxuICAgID5cbiAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY2wtYXJyYXktZm9ybS10YWJsZV9fYm90dG9tLWNvbnRyb2wtYnV0dG9uc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbFwiXG4gICAgICAgICAgICBbYXVpVG9vbHRpcF09XCJtYXhSb3dUb29sdGlwXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwicm93cz8ubGVuZ3RoIDwgbWF4Um93IHx8ICFtYXhSb3dUb29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGF1aS1idXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkLmVtaXQoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPj0gbWF4Um93IHx8IGFkZERpc2FibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJwbHVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgICAgICAgICAgIHt7ICdhZGQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuIl19
|
|
@@ -293,5 +293,5 @@ __decorate([
|
|
|
293
293
|
}], zeroStateTemplate: [{
|
|
294
294
|
type: Input
|
|
295
295
|
}] }); })();
|
|
296
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueFormTableComponent, { className: "KeyValueFormTableComponent" }); })();
|
|
296
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueFormTableComponent, { className: "KeyValueFormTableComponent", filePath: "array-form-table/key-value-form/component.ts", lineNumber: 44 }); })();
|
|
297
297
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsbUJBQW1CLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNoSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztJ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Z0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQzs7NkRBUUE7QUErQkY7SUFGQyxTQUFTLENBQTZDLE9BQU8sQ0FBQzs4QkFFakQsS0FBSztnRUFBdUI7aUZBMUQvQiwwQkFBMEI7Y0F0QnRDLFNBQVM7MkJBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO29CQUNQLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQix1QkFBdUI7b0JBQ3ZCLFdBQVc7b0JBQ1gsSUFBSTtvQkFDSixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsVUFBVTtvQkFDVixxQkFBcUI7aUJBQ3RCLGNBQ1csSUFBSSxhQUNMLENBQUMsMkJBQTJCLENBQUM7Z0JBT3hDLFlBQVk7a0JBRFgsS0FBSztZQUlOLHNCQUFzQjtrQkFEckIsS0FBSztZQUlOLGNBQWM7a0JBRGIsS0FBSztZQVdOLFNBQVM7a0JBRFIsS0FBSztZQVVOLFdBQVc7a0JBRFYsS0FBSztZQVVOLFdBQVc7a0JBRFYsS0FBSztZQU9OLFFBQVE7a0JBRFAsS0FBSztZQUlOLE9BQU87a0JBRE4sS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSztZQUtOLFlBQVk7a0JBRFgsS0FBSztZQUlOLGlCQUFpQjtrQkFEaEIsS0FBSzs7a0ZBNURLLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbk1vZHVsZSwgRm9ybU1vZHVsZSwgSWNvbk1vZHVsZSwgSW5wdXRNb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IFN0cmluZ01hcCwgVmFsdWVIb29rIH0gZnJvbSAnLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZm9ybS1yb3ctZHVwbGljYXRlL2Zvcm0tcm93LWR1cGxpY2F0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVmZmVjdERpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJy4uLy4uL2VmZmVjdC1kaXJlY3RpdmUvbW9kdWxlJztcbmltcG9ydCB7IEVycm9yc01hcHBlck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBCYXNlU3RyaW5nTWFwRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RyaW5nLW1hcC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcnJheUZvcm1UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vY29tcG9uZW50JztcbmltcG9ydCB7IEFycmF5Rm9ybVRhYmxlTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS9tb2R1bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wta2V5LXZhbHVlLWZvcm0tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc3R5bGVzLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBcnJheUZvcm1UYWJsZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIElucHV0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRXJyb3JzTWFwcGVyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtWYWxpZGF0ZVJvd0R1cGxpY2F0ZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VTdHJpbmdNYXBGb3JtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZVRyYW5zbGF0ZWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtdWx0aUxpbmVWYWx1ZTogYm9vbGVhbjtcblxuICBAVmFsdWVIb29rKG51bGwsIG51bGwsIGZ1bmN0aW9uICh0aGlzOiBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCkge1xuICAgIHRoaXMuZm9ybT8uY29udHJvbHMuZm9yRWFjaCgoZm9ybUFycmF5OiBGb3JtQXJyYXkpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGZvcm1BcnJheS5jb250cm9scztcbiAgICAgIGtleS5zZXRWYWxpZGF0b3JzKHRoaXMuZ2V0S2V5VmFsaWRhdG9ycygpKTtcbiAgICAgIHZhbHVlLnNldFZhbGlkYXRvcnModGhpcy5nZXRWYWx1ZVZhbGlkYXRvcnMoKSk7XG4gICAgfSk7XG4gIH0pXG4gIEBJbnB1dCgpXG4gIHZhbGlkYXRvcjoge1xuICAgIGtleT86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcbiAgICB2YWx1ZT86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcbiAgfSA9IHtcbiAgICBrZXk6IFtdLFxuICAgIHZhbHVlOiBbXSxcbiAgfTtcblxuICBASW5wdXQoKVxuICBlcnJvck1hcHBlcjoge1xuICAgIGtleT86IFN0cmluZ01hcDtcbiAgICB2YWx1ZT86IFN0cmluZ01hcDtcbiAgfSA9IHtcbiAgICBrZXk6IHt9LFxuICAgIHZhbHVlOiB7fSxcbiAgfTtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjoge1xuICAgIGtleT86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBASW5wdXQoKVxuICByZWFkb25seTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICB0ZXh0S2V5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIG1heFJvdyA9IEluZmluaXR5O1xuXG4gIEBJbnB1dCgpXG4gIG1pblJvdyA9IDA7XG5cbiAgQFZhbHVlSG9vazxLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCwgJ3JlYWRvbmx5S2V5cyc+KEJvb2xlYW4pXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5S2V5czogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPiA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHplcm9TdGF0ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGlzUmVhZG9ubHkoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seUtleXMuc29tZSh0b0NoZWNrS2V5ID0+IHtcbiAgICAgIGlmICghdG9DaGVja0tleSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHRvQ2hlY2tLZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0b0NoZWNrS2V5ID09PSBrZXk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b0NoZWNrS2V5LnRlc3Qoa2V5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGFWYWx1ZUJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmF0KGluZGV4KSBhcyBGb3JtQXJyYXkpLmF0KDEpLnZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRSZXNvdXJjZU1vZGVsKHJlc291cmNlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgbGV0IG5ld0Zvcm1Nb2RlbCA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlIHx8IHt9KTtcbiAgICAvLyDmjpLluo/vvIzlhYjmjInlrZfmr43mjpLluo/vvIzlho3mioogcmVhZG9ubHkg55qE5pS+5YmN6Z2iXG4gICAgbmV3Rm9ybU1vZGVsID0gc29ydEJ5KG5ld0Zvcm1Nb2RlbCwgKGFycjogW3N0cmluZywgc3RyaW5nXSkgPT4gYXJyWzBdKTtcbiAgICBuZXdGb3JtTW9kZWwuc29ydCgoYXJyMTogW3N0cmluZywgc3RyaW5nXSwgYXJyMjogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xuICAgICAgY29uc3QgZmxhZzEgPSB0aGlzLmlzUmVhZG9ubHkoYXJyMVswXSk7XG4gICAgICBjb25zdCBmbGFnMiA9IHRoaXMuaXNSZWFkb25seShhcnIyWzBdKTtcbiAgICAgIGlmICgoZmxhZzEgJiYgZmxhZzIpIHx8ICghZmxhZzEgJiYgIWZsYWcyKSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmbGFnMSA/IC0xIDogMTtcbiAgICB9KTtcbiAgICBpZiAobmV3Rm9ybU1vZGVsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbmV3Rm9ybU1vZGVsID0gdGhpcy5nZXREZWZhdWx0Rm9ybU1vZGVsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0Zvcm1Nb2RlbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEtleVZhbGlkYXRvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yPy5rZXk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRWYWx1ZVZhbGlkYXRvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yPy52YWx1ZTtcbiAgfVxuXG4gIGlzTGFiZWxSZWFkb25seShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmNvbnRyb2xzW2luZGV4XSBhcyBGb3JtQXJyYXk7XG4gICAgcmV0dXJuIGZvcm1BcnJheS52YWxpZCAmJiB0aGlzLmlzUmVhZG9ubHkoZm9ybUFycmF5LmNvbnRyb2xzWzBdLnZhbHVlKTtcbiAgfVxufVxuIiwiPGFjbC1hcnJheS1mb3JtLXRhYmxlXG4gIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbiAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwicmVzb3VyY2VOYW1lVHJhbnNsYXRlZFwiXG4gIChhZGQpPVwiYWRkKGZvcm0ubGVuZ3RoKVwiXG4gIChyZW1vdmUpPVwicmVtb3ZlKCRldmVudClcIlxuICBbcm93c109XCJmb3JtLmNvbnRyb2xzXCJcbiAgW2Zvcm1Hcm91cF09XCIkYW55KGZvcm0pXCJcbiAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgW21heFJvd109XCJtYXhSb3dcIlxuICBbbWluUm93XT1cIm1pblJvd1wiXG4+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlSGVhZGVyPlxuICAgIDx0aCBzdHlsZT1cIndpZHRoOiAzMyVcIj57eyAna2V5JyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgPHRoIHN0eWxlPVwid2lkdGg6IDY2JVwiPnt7ICd2YWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cE5hbWVdPVwiaW5kZXhcIlxuICA+XG4gICAgPHRkPlxuICAgICAgPGlucHV0XG4gICAgICAgIFtoaWRkZW5dPVwidGV4dEtleVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSB8fCBpc0xhYmVsUmVhZG9ubHkoaW5kZXgpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcj8ua2V5IHx8ICgna2V5JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgLz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZXh0S2V5XCI+XG4gICAgICAgIHt7IGNvbnRyb2wuZ2V0KCcwJykudmFsdWUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG5cbiAgICA8dGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgKm5nSWY9XCIhbXVsdGlMaW5lVmFsdWVcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIjFcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXI/LnZhbHVlIHx8ICgndmFsdWUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAvPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm11bHRpTGluZVZhbHVlXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYS13cmFwcGVyXCJcbiAgICAgICAgW2F0dHIuZGF0YS12YWx1ZV09XCJnZXREYXRhVmFsdWVCeUluZGV4KGluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMVwiXG4gICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcj8udmFsdWUgfHwgKCd2YWx1ZScgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IGVycm9yIHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiXG4gICAgICBjb2xzcGFuPVwiM1wiXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8ua2V5SXNNaXNzaW5nXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3JcIj5cbiAgICAgICAge3sgJ2s4c19yZXNvdXJjZV9sYWJlbF9rZXlfZHVwbGljYXRlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzPy5rZXlcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cImVycm9yTWFwcGVyPy5rZXlcIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzPy52YWx1ZVwiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwiZXJyb3JNYXBwZXI/LnZhbHVlXCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbD1cImxldCBpdGVtOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxidXR0b25cbiAgICAgIFtoaWRkZW5dPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAoY2xpY2spPVwicmVtb3ZlKGluZGV4KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJtaW51c19jaXJjbGVcIj48L2F1aS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiemVyb1N0YXRlVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVplcm9TdGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cbiJdfQ==
|
|
@@ -70,5 +70,5 @@ export class KeyValueTableComponent {
|
|
|
70
70
|
}], resourceNameTranslated: [{
|
|
71
71
|
type: Input
|
|
72
72
|
}] }); })();
|
|
73
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueTableComponent, { className: "KeyValueTableComponent" }); })();
|
|
73
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueTableComponent, { className: "KeyValueTableComponent", filePath: "array-form-table/key-value-table/component.ts", lineNumber: 27 }); })();
|
|
74
74
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLXRhYmxlL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcnJheS1mb3JtLXRhYmxlL2tleS12YWx1ZS10YWJsZS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0lDQ3BELDZCQUF1QztJQUNyQywwQkFBSTtJQUFBLFlBQXVCOztJQUFBLGlCQUFLO0lBQ2hDLDBCQUFJO0lBQUEsWUFBeUI7O0lBQUEsaUJBQUs7OztJQUQ5QixlQUF1QjtJQUF2QixpREFBdUI7SUFDdkIsZUFBeUI7SUFBekIsbURBQXlCOzs7SUFFL0IsNkJBQStDO0lBQzdDLDBCQUFJO0lBQUEsWUFBYTtJQUFBLGlCQUFLO0lBQ3RCLDBCQUFJO0lBQUEsWUFBYTtJQUFBLGlCQUFLOzs7O0lBRGxCLGVBQWE7SUFBYixnQ0FBYTtJQUNiLGVBQWE7SUFBYixnQ0FBYTs7QURjckIsTUFBTSxPQUFPLHNCQUFzQjtJQW5CbkM7UUE2QkUsWUFBTyxHQUFHLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEU7dUZBWFksc0JBQXNCO29FQUF0QixzQkFBc0I7WUMxQm5DLCtDQUtDOztZQUtDLEFBSkEseUZBQXVDLDRFQUlRO1lBSWpELGlCQUF1Qjs7WUFWckIsQUFEQSxBQURBLEFBREEsbUVBQThCLGtDQUNELHNEQUNvQixrQkFDaEM7NEJEZWYsdUJBQXVCO1lBQ3ZCLG9CQUFvQixtRUFDcEIsUUFBUTtZQUNSLGVBQWU7O2lGQUlOLHNCQUFzQjtjQW5CbEMsU0FBUzsyQkFDRSxxQkFBcUIsY0FTbkIsSUFBSSxXQUNQO29CQUNQLHVCQUF1QjtvQkFDdkIsb0JBQW9CO29CQUNwQixRQUFRO29CQUNSLGVBQWU7aUJBQ2hCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO2dCQUkvQyxLQUFLO2tCQURKLEtBQUs7WUFJTixZQUFZO2tCQURYLEtBQUs7WUFJTixzQkFBc0I7a0JBRHJCLEtBQUs7O2tGQVBLLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFB1cmVQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9wdXJlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQXJyYXlGb3JtVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBBcnJheUZvcm1UYWJsZU1vZHVsZSB9IGZyb20gJy4uL2Zvcm0vbW9kdWxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWtleS12YWx1ZS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICAgIFB1cmVQaXBlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEtleVZhbHVlVGFibGVDb21wb25lbnQ8VD4ge1xuICBASW5wdXQoKVxuICB2YWx1ZTogVDtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG5cbiAgZW50cmllcyA9ICh2YWx1ZTogVCkgPT4gdmFsdWUgIT0gbnVsbCAmJiBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG59XG4iLCI8YWNsLWFycmF5LWZvcm0tdGFibGVcbiAgW3Jvd3NdPVwidmFsdWUgfCBwdXJlOiBlbnRyaWVzXCJcbiAgW3Jlc291cmNlTmFtZV09XCJyZXNvdXJjZU5hbWVcIlxuICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCJyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXCJcbiAgW3JlYWRvbmx5XT1cInRydWVcIlxuPlxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZUhlYWRlcj5cbiAgICA8dGg+e3sgJ2tleScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgIDx0aD57eyAndmFsdWUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGl0ZW1cIj5cbiAgICA8dGQ+e3sgaXRlbVswXSB9fTwvdGQ+XG4gICAgPHRkPnt7IGl0ZW1bMV0gfX08L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLWFycmF5LWZvcm0tdGFibGU+XG4iXX0=
|