@matechat/ng 0.0.1-alpha.0 → 0.0.1-alpha.1

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 (39) hide show
  1. package/Bubble/bubble.component.d.ts +5 -3
  2. package/Input/input.component.d.ts +10 -1
  3. package/MarkdownCard/code-block.component.d.ts +46 -0
  4. package/MarkdownCard/index.d.ts +3 -0
  5. package/MarkdownCard/markdown-card.component.d.ts +198 -0
  6. package/MarkdownCard/markdown-card.module.d.ts +13 -0
  7. package/README.md +117 -13
  8. package/components-common/Base/foundation.d.ts +2 -0
  9. package/components-common/MarkdownCard/codeblock-foundation.d.ts +20 -0
  10. package/components-common/MarkdownCard/common/MDCardService.d.ts +14 -0
  11. package/components-common/MarkdownCard/common/MermaidService.d.ts +23 -0
  12. package/components-common/MarkdownCard/common/mdCard.types.d.ts +56 -0
  13. package/components-common/MarkdownCard/common/parser.d.ts +150 -0
  14. package/components-common/MarkdownCard/foundation.d.ts +38 -0
  15. package/esm2022/Base/base.component.mjs +2 -1
  16. package/esm2022/Bubble/bubble.component.mjs +15 -8
  17. package/esm2022/Input/input.component.mjs +107 -3
  18. package/esm2022/Locale/locale.service.mjs +5 -5
  19. package/esm2022/MarkdownCard/code-block.component.mjs +150 -0
  20. package/esm2022/MarkdownCard/index.mjs +4 -0
  21. package/esm2022/MarkdownCard/markdown-card.component.mjs +406 -0
  22. package/esm2022/MarkdownCard/markdown-card.module.mjs +44 -0
  23. package/esm2022/components-common/Base/foundation.mjs +4 -1
  24. package/esm2022/components-common/Input/foundation.mjs +1 -2
  25. package/esm2022/components-common/MarkdownCard/codeblock-foundation.mjs +132 -0
  26. package/esm2022/components-common/MarkdownCard/common/MDCardService.mjs +69 -0
  27. package/esm2022/components-common/MarkdownCard/common/MermaidService.mjs +222 -0
  28. package/esm2022/components-common/MarkdownCard/common/mdCard.types.mjs +6 -0
  29. package/esm2022/components-common/MarkdownCard/common/parser.mjs +194 -0
  30. package/esm2022/components-common/MarkdownCard/foundation.mjs +84 -0
  31. package/esm2022/public-api.mjs +2 -1
  32. package/fesm2022/matechat-ng.mjs +1460 -16
  33. package/fesm2022/matechat-ng.mjs.map +1 -1
  34. package/package.json +8 -5
  35. package/public-api.d.ts +1 -0
  36. package/fesm2022/matechat-ng-en-us-DsYnUbZd.mjs +0 -28
  37. package/fesm2022/matechat-ng-en-us-DsYnUbZd.mjs.map +0 -1
  38. package/fesm2022/matechat-ng-zh-cn--_YVZHnW.mjs +0 -28
  39. package/fesm2022/matechat-ng-zh-cn--_YVZHnW.mjs.map +0 -1
@@ -10,6 +10,11 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "../Locale/locale.service";
11
11
  import * as i2 from "@angular/common";
12
12
  import * as i3 from "@angular/forms";
13
+ // 默认的autosize配置
14
+ const DEFAULT_AUTOSIZE = {
15
+ minRows: 1,
16
+ maxRows: 5
17
+ };
13
18
  // 创建一个token用于组件间通信
14
19
  export const inputContextToken = 'input-context';
15
20
  export class InputComponent extends BaseComponent {
@@ -27,6 +32,9 @@ export class InputComponent extends BaseComponent {
27
32
  this.maxLength = null;
28
33
  this.submitShortKey = SubmitShortKey.Enter;
29
34
  this.autofocus = false;
35
+ this.autosize = false;
36
+ // textarea样式
37
+ this.textareaStyle = {};
30
38
  this.change = new EventEmitter();
31
39
  this.submit = new EventEmitter();
32
40
  this.cancel = new EventEmitter();
@@ -64,6 +72,12 @@ export class InputComponent extends BaseComponent {
64
72
  ngOnChanges(changes) {
65
73
  if (changes['value']) {
66
74
  this.inputValue = changes['value']?.currentValue || '';
75
+ // 值变化时更新textarea样式
76
+ this.updateTextareaStyle();
77
+ }
78
+ if (changes['autosize']) {
79
+ // autosize配置变化时更新textarea样式
80
+ this.updateTextareaStyle();
67
81
  }
68
82
  }
69
83
  get inputClasses() {
@@ -75,6 +89,8 @@ export class InputComponent extends BaseComponent {
75
89
  onInput() {
76
90
  if (!this.lock) {
77
91
  this.foundation.emitChange();
92
+ // 输入时更新textarea样式
93
+ this.updateTextareaStyle();
78
94
  }
79
95
  }
80
96
  onCompositionStart() {
@@ -111,6 +127,92 @@ export class InputComponent extends BaseComponent {
111
127
  this.textareaElement.nativeElement.focus();
112
128
  });
113
129
  }
130
+ // 初始化时更新textarea样式
131
+ this.updateTextareaStyle();
132
+ }
133
+ // 更新textarea样式
134
+ updateTextareaStyle() {
135
+ if (!this.textareaElement || this.autosize === false) {
136
+ this.textareaStyle = {};
137
+ return;
138
+ }
139
+ const config = this.getAutosizeConfig();
140
+ const result = this.computeTextareaHeight(this.textareaElement.nativeElement, config.minRows, config.maxRows);
141
+ this.textareaStyle = {
142
+ ...result,
143
+ resize: 'none'
144
+ };
145
+ }
146
+ // 获取autosize配置
147
+ getAutosizeConfig() {
148
+ return typeof this.autosize === 'boolean'
149
+ ? DEFAULT_AUTOSIZE
150
+ : this.autosize;
151
+ }
152
+ // 计算textarea高度
153
+ computeTextareaHeight(targetElement, minRows = 1, maxRows) {
154
+ const style = window.getComputedStyle(targetElement);
155
+ const boxSizing = style.getPropertyValue('box-sizing');
156
+ const paddingSize = Number.parseFloat(style.getPropertyValue('padding-top')) +
157
+ Number.parseFloat(style.getPropertyValue('padding-bottom'));
158
+ const borderSize = Number.parseFloat(style.getPropertyValue('border-top-width')) +
159
+ Number.parseFloat(style.getPropertyValue('border-bottom-width'));
160
+ // 创建临时textarea元素
161
+ const tempTextarea = document.createElement('textarea');
162
+ const sizingStyle = [
163
+ 'letter-spacing', 'line-height', 'padding-top', 'padding-bottom',
164
+ 'font-family', 'font-weight', 'font-size', 'font-variant',
165
+ 'text-rendering', 'text-transform', 'width', 'text-indent',
166
+ 'padding-left', 'padding-right', 'border-width', 'box-sizing',
167
+ 'word-break', 'white-space'
168
+ ];
169
+ const contextStyle = sizingStyle
170
+ .map(name => `${name}:${style.getPropertyValue(name)}`)
171
+ .join(';');
172
+ const hiddenStyle = `
173
+ min-height:0 !important;
174
+ max-height:none !important;
175
+ height:0 !important;
176
+ visibility:hidden !important;
177
+ overflow:hidden !important;
178
+ position:absolute !important;
179
+ z-index:-1000 !important;
180
+ top:0 !important;
181
+ right:0 !important;
182
+ pointer-events:none !important;
183
+ `;
184
+ tempTextarea.setAttribute('style', `${contextStyle};${hiddenStyle}`);
185
+ tempTextarea.value = targetElement.value || targetElement.placeholder || '';
186
+ document.body.appendChild(tempTextarea);
187
+ let height = tempTextarea.scrollHeight;
188
+ const result = {
189
+ height: `${height}px`
190
+ };
191
+ if (minRows !== undefined || maxRows !== undefined) {
192
+ tempTextarea.value = ' ';
193
+ const singleRowHeight = tempTextarea.scrollHeight - paddingSize;
194
+ if (minRows !== undefined) {
195
+ let minHeight = singleRowHeight * minRows;
196
+ if (boxSizing === 'border-box') {
197
+ minHeight = minHeight + paddingSize + borderSize;
198
+ }
199
+ height = Math.max(minHeight, height);
200
+ result['minHeight'] = `${minHeight}px`;
201
+ }
202
+ if (maxRows !== undefined) {
203
+ let maxHeight = singleRowHeight * maxRows;
204
+ if (boxSizing === 'border-box') {
205
+ maxHeight = maxHeight + paddingSize + borderSize;
206
+ }
207
+ if (height > maxHeight) {
208
+ height = maxHeight;
209
+ result['overflowY'] = 'auto';
210
+ }
211
+ }
212
+ }
213
+ document.body.removeChild(tempTextarea);
214
+ result['height'] = `${height}px`;
215
+ return result;
114
216
  }
115
217
  get placeholderText() {
116
218
  return this.foundation.getPlaceholderText();
@@ -122,11 +224,11 @@ export class InputComponent extends BaseComponent {
122
224
  this.blur.emit(event);
123
225
  }
124
226
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputComponent, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Component }); }
125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: InputComponent, isStandalone: true, selector: "mc-input", inputs: { value: "value", placeholder: "placeholder", disabled: "disabled", displayType: "displayType", variant: "variant", sendBtnVariant: "sendBtnVariant", loading: "loading", showCount: "showCount", maxLength: "maxLength", submitShortKey: "submitShortKey", autofocus: "autofocus" }, outputs: { change: "change", submit: "submit", cancel: "cancel", focus: "focus", blur: "blur" }, providers: [{ provide: inputContextToken, useExisting: InputComponent }], queries: [{ propertyName: "headTemplate", first: true, predicate: ["head"], descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: ["prefix"], descendants: true }, { propertyName: "suffixTemplate", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "buttonTemplate", first: true, predicate: ["button"], descendants: true }, { propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "textareaElement", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "mc-button", inputs: ["disabled", "loading", "inputValue", "sendBtnVariant"], outputs: ["submit", "cancel", "change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: InputComponent, isStandalone: true, selector: "mc-input", inputs: { value: "value", placeholder: "placeholder", disabled: "disabled", displayType: "displayType", variant: "variant", sendBtnVariant: "sendBtnVariant", loading: "loading", showCount: "showCount", maxLength: "maxLength", submitShortKey: "submitShortKey", autofocus: "autofocus", autosize: "autosize" }, outputs: { change: "change", submit: "submit", cancel: "cancel", focus: "focus", blur: "blur" }, providers: [{ provide: inputContextToken, useExisting: InputComponent }], queries: [{ propertyName: "headTemplate", first: true, predicate: ["head"], descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: ["prefix"], descendants: true }, { propertyName: "suffixTemplate", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "buttonTemplate", first: true, predicate: ["button"], descendants: true }, { propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "textareaElement", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [ngStyle]=\"textareaStyle\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "mc-button", inputs: ["disabled", "loading", "inputValue", "sendBtnVariant"], outputs: ["submit", "cancel", "change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
126
228
  }
127
229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputComponent, decorators: [{
128
230
  type: Component,
129
- args: [{ selector: 'mc-input', standalone: true, imports: [CommonModule, FormsModule, ButtonComponent, TranslatePipe], providers: [{ provide: inputContextToken, useExisting: InputComponent }], template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"] }]
231
+ args: [{ selector: 'mc-input', standalone: true, imports: [CommonModule, FormsModule, ButtonComponent, TranslatePipe], providers: [{ provide: inputContextToken, useExisting: InputComponent }], template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [ngStyle]=\"textareaStyle\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"] }]
130
232
  }], ctorParameters: () => [{ type: i1.LocaleService }], propDecorators: { value: [{
131
233
  type: Input
132
234
  }], placeholder: [{
@@ -149,6 +251,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
149
251
  type: Input
150
252
  }], autofocus: [{
151
253
  type: Input
254
+ }], autosize: [{
255
+ type: Input
152
256
  }], change: [{
153
257
  type: Output
154
258
  }], submit: [{
@@ -178,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
178
282
  type: ContentChild,
179
283
  args: ['extra']
180
284
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBRVQsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBRUwsZUFBZSxHQUNoQixNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFFekQsbUJBQW1CO0FBQ25CLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztBQVVqRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUErQi9DLFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE5QnZDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzVDLFlBQU8sR0FBaUIsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5QyxtQkFBYyxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ3JELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxtQkFBYyxHQUNyQixjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ2QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUxQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN2QyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUkxQixpQkFBWSxHQUE0QixJQUFJLENBQUM7UUFDM0MsbUJBQWMsR0FBNEIsSUFBSSxDQUFDO1FBQy9DLG1CQUFjLEdBQTRCLElBQUksQ0FBQztRQUMvQyxtQkFBYyxHQUE0QixJQUFJLENBQUM7UUFDaEQsa0JBQWEsR0FBNEIsSUFBSSxDQUFDO1FBRXJFLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFZLEtBQUssQ0FBQztJQUl0QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFhLE9BQU87UUFDbEIsT0FBTztZQUNMLEdBQUcsS0FBSyxDQUFDLE9BQU87WUFDaEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztZQUNsRSxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGNBQWMsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdELDZCQUE2QjtZQUM3QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7OEdBcklVLGNBQWM7a0dBQWQsY0FBYyxzYkFGZCxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQywrbkJDdEMxRSx3cEZBeUVBLHlyRER0Q1ksWUFBWSxnT0FBRSxXQUFXLGt4QkFBRSxlQUFlLDJKQUFFLGFBQWE7OzJGQUt4RCxjQUFjO2tCQVIxQixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsYUFHekQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLGdCQUFnQixFQUFFLENBQUM7a0ZBRy9ELEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUVnQixlQUFlO3NCQUFyQyxTQUFTO3VCQUFDLFVBQVU7Z0JBRUMsWUFBWTtzQkFBakMsWUFBWTt1QkFBQyxNQUFNO2dCQUNJLGNBQWM7c0JBQXJDLFlBQVk7dUJBQUMsUUFBUTtnQkFDRSxjQUFjO3NCQUFyQyxZQUFZO3VCQUFDLFFBQVE7Z0JBQ0UsY0FBYztzQkFBckMsWUFBWTt1QkFBQyxRQUFRO2dCQUNDLGFBQWE7c0JBQW5DLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQ29udGVudENoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERpc3BsYXlUeXBlLFxuICBJbnB1dFZhcmlhbnQsXG4gIFNlbmRCdG5WYXJpYW50LFxuICBTdWJtaXRTaG9ydEtleSxcbn0gZnJvbSAnLi4vY29tcG9uZW50cy1jb21tb24vSW5wdXQvY29tbW9uL3R5cGVzJztcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4uL0Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSW5wdXRBZGFwdGVyLFxuICBJbnB1dEZvdW5kYXRpb24sXG59IGZyb20gJy4uL2NvbXBvbmVudHMtY29tbW9uL0lucHV0L2ZvdW5kYXRpb24nO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4uL0xvY2FsZS9sb2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vTG9jYWxlL3RyYW5zbGF0ZS5waXBlJztcblxuLy8g5Yib5bu65LiA5LiqdG9rZW7nlKjkuo7nu4Tku7bpl7TpgJrkv6FcbmV4cG9ydCBjb25zdCBpbnB1dENvbnRleHRUb2tlbiA9ICdpbnB1dC1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBUcmFuc2xhdGVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBpbnB1dENvbnRleHRUb2tlbiwgdXNlRXhpc3Rpbmc6IElucHV0Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheVR5cGU6IERpc3BsYXlUeXBlID0gRGlzcGxheVR5cGUuRnVsbDtcbiAgQElucHV0KCkgdmFyaWFudDogSW5wdXRWYXJpYW50ID0gSW5wdXRWYXJpYW50LkJvcmRlcmVkO1xuICBASW5wdXQoKSBzZW5kQnRuVmFyaWFudDogU2VuZEJ0blZhcmlhbnQgPSBTZW5kQnRuVmFyaWFudC5GdWxsO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdWJtaXRTaG9ydEtleTogU3VibWl0U2hvcnRLZXkgfCBudWxsIHwgc3RyaW5nID1cbiAgICBTdWJtaXRTaG9ydEtleS5FbnRlcjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGV4dGFyZWEnKSB0ZXh0YXJlYUVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWQnKSBoZWFkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgncHJlZml4JykgcHJlZml4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnc3VmZml4Jykgc3VmZml4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnYnV0dG9uJykgYnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnZXh0cmEnKSBleHRyYVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgaW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIGxvY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3VuZGF0aW9uID0gbmV3IElucHV0Rm91bmRhdGlvbih0aGlzLmFkYXB0ZXIpO1xuICAgIHRoaXMuZm91bmRhdGlvbi5pbml0KCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBhZGFwdGVyKCk6IElucHV0QWRhcHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmFkYXB0ZXIsXG4gICAgICBsb2NhbGU6IChrZXksIHBhcmFtcykgPT4gdGhpcy5sb2NhbGVTZXJ2aWNlLnRyYW5zbGF0ZShrZXksIHBhcmFtcyksXG4gICAgICBlbWl0Q2hhbmdlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5pbnB1dFZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBzdWJtaXQ6IChpbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWl0LmVtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBvbkNoYW5nZShlKTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBjaGFuZ2VzWyd2YWx1ZSddPy5jdXJyZW50VmFsdWUgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlucHV0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvdW5kYXRpb24uZ2V0SW5wdXRDbGFzc2VzKCk7XG4gIH1cblxuICBnZXQgbWF4bGVuZ3RoVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQgPyB0aGlzLm1heExlbmd0aCA6IG51bGw7XG4gIH1cblxuICBvbklucHV0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NrKSB7XG4gICAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2sgPSB0cnVlO1xuICB9XG5cbiAgb25Db21wb3NpdGlvbkVuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2sgPSBmYWxzZTtcbiAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb3VuZGF0aW9uLm9uS2V5ZG93bihldmVudCk7XG4gIH1cblxuICBjbGVhcklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZm91bmRhdGlvbi5jbGVhcklucHV0KCk7XG4gIH1cblxuICBnZXRJbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlucHV0VmFsdWU7XG4gIH1cblxuICAvLyDlpITnkIZidXR0b27nu4Tku7bnmoTkuovku7ZcbiAgb25CdXR0b25TdWJtaXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3VibWl0LmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25CdXR0b25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25CdXR0b25DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZm91bmRhdGlvbi5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMudGV4dGFyZWFFbGVtZW50ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAvLyDlnKjkuIvkuIDkuKrlj5jmm7Tmo4DmtYvlkajmnJ/kuK3ogZrnhKbvvIzku6Xnoa7kv53op4blm77lt7Lnu4/lrozlhajliJ3lp4vljJZcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRhcmVhRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm91bmRhdGlvbi5nZXRQbGFjZWhvbGRlclRleHQoKTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICB0aGlzLmZvY3VzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5ibHVyLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZFRlbXBsYXRlOyB0aGVuIGhlYWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJtYy1pbnB1dC1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZWZpeFRlbXBsYXRlOyB0aGVuIHByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8dGV4dGFyZWFcbiAgICAgICN0ZXh0YXJlYVxuICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgIGNsYXNzPVwibWMtdGV4dGFyZWFcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbWMtdGV4dGFyZWEtc2ltcGxlJzogZGlzcGxheVR5cGUgPT09ICdzaW1wbGUnLFxuICAgICAgICAnbWMtdGV4dGFyZWEtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidJbnB1dC5hcmlhTGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXG4gICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgKGNvbXBvc2l0aW9uc3RhcnQpPVwib25Db21wb3NpdGlvblN0YXJ0KClcIlxuICAgICAgKGNvbXBvc2l0aW9uZW5kKT1cIm9uQ29tcG9zaXRpb25FbmQoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICA+PC90ZXh0YXJlYT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VmZml4VGVtcGxhdGU7IHRoZW4gc3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ3NpbXBsZSdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0QnV0dG9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvblRlbXBsYXRlOyB0aGVuIGJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XG4gICAgICAgIDxtYy1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKCFsb2FkaW5nICYmICFpbnB1dFZhbHVlKVwiXG4gICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgICAgW2lucHV0VmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gICAgICAgICAgW3NlbmRCdG5WYXJpYW50XT1cInNlbmRCdG5WYXJpYW50XCJcbiAgICAgICAgICAoc3VibWl0KT1cIm9uQnV0dG9uU3VibWl0KCRldmVudClcIlxuICAgICAgICAgIChjYW5jZWwpPVwib25CdXR0b25DYW5jZWwoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvbWMtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImRpc3BsYXlUeXBlID09PSAnZnVsbCdcIiBjbGFzcz1cIm1jLWlucHV0LWZvb3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWMtaW5wdXQtZm9vdC1sZWZ0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0cmFUZW1wbGF0ZTsgdGhlbiBleHRyYVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8c3BhbiAqbmdJZj1cInNob3dDb3VudFwiIGlkPVwibWMtaW5wdXQtY291bnRcIiBjbGFzcz1cIm1jLWlucHV0LWZvb3QtY291bnRcIj5cbiAgICAgICAge3sgaW5wdXRWYWx1ZS5sZW5ndGggfX17eyAhbWF4TGVuZ3RoID8gXCJcIiA6IFwiL1wiICsgbWF4TGVuZ3RoIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEZvb3RlckJ1dHRvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvblRlbXBsYXRlOyB0aGVuIGJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rm9vdGVyQnV0dG9uPlxuICAgICAgPG1jLWJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKCFsb2FkaW5nICYmICFpbnB1dFZhbHVlKVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbaW5wdXRWYWx1ZV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgW3NlbmRCdG5WYXJpYW50XT1cInNlbmRCdG5WYXJpYW50XCJcbiAgICAgICAgKHN1Ym1pdCk9XCJvbkJ1dHRvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGNhbmNlbCk9XCJvbkJ1dHRvbkNhbmNlbCgpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L21jLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBRVQsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSx5Q0FBeUMsQ0FBQztBQVdqRCxPQUFPLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBRUwsZUFBZSxHQUNoQixNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFaekQsZ0JBQWdCO0FBQ2hCLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsQ0FBQztDQUNYLENBQUM7QUFVRixtQkFBbUI7QUFDbkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBVWpELE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQW1DL0MsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWxDdkMsVUFBSyxHQUFXLEVB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RyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBRWdCLGVBQWU7c0JBQXJDLFNBQVM7dUJBQUMsVUFBVTtnQkFFQyxZQUFZO3NCQUFqQyxZQUFZO3VCQUFDLE1BQU07Z0JBQ0ksY0FBYztzQkFBckMsWUFBWTt1QkFBQyxRQUFRO2dCQUNFLGNBQWM7c0JBQXJDLFlBQVk7dUJBQUMsUUFBUTtnQkFDRSxjQUFjO3NCQUFyQyxZQUFZO3VCQUFDLFFBQVE7Z0JBQ0MsYUFBYTtzQkFBbkMsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRGlzcGxheVR5cGUsXG4gIElucHV0VmFyaWFudCxcbiAgU2VuZEJ0blZhcmlhbnQsXG4gIFN1Ym1pdFNob3J0S2V5LFxufSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9JbnB1dC9jb21tb24vdHlwZXMnO1xuXG4vLyBUZXh0YXJlYUF1dG9TaXpl57G75Z6L5a6a5LmJXG5leHBvcnQgdHlwZSBUZXh0YXJlYUF1dG9TaXplID0geyBtaW5Sb3dzPzogbnVtYmVyOyBtYXhSb3dzPzogbnVtYmVyIH0gfCBib29sZWFuO1xuXG4vLyDpu5jorqTnmoRhdXRvc2l6ZemFjee9rlxuY29uc3QgREVGQVVMVF9BVVRPU0laRSA9IHtcbiAgbWluUm93czogMSxcbiAgbWF4Um93czogNVxufTtcblxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi4vQmFzZS9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJbnB1dEFkYXB0ZXIsXG4gIElucHV0Rm91bmRhdGlvbixcbn0gZnJvbSAnLi4vY29tcG9uZW50cy1jb21tb24vSW5wdXQvZm91bmRhdGlvbic7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vTG9jYWxlL2xvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9Mb2NhbGUvdHJhbnNsYXRlLnBpcGUnO1xuXG4vLyDliJvlu7rkuIDkuKp0b2tlbueUqOS6jue7hOS7tumXtOmAmuS/oVxuZXhwb3J0IGNvbnN0IGlucHV0Q29udGV4dFRva2VuID0gJ2lucHV0LWNvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYy1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIFRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IGlucHV0Q29udGV4dFRva2VuLCB1c2VFeGlzdGluZzogSW5wdXRDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5VHlwZTogRGlzcGxheVR5cGUgPSBEaXNwbGF5VHlwZS5GdWxsO1xuICBASW5wdXQoKSB2YXJpYW50OiBJbnB1dFZhcmlhbnQgPSBJbnB1dFZhcmlhbnQuQm9yZGVyZWQ7XG4gIEBJbnB1dCgpIHNlbmRCdG5WYXJpYW50OiBTZW5kQnRuVmFyaWFudCA9IFNlbmRCdG5WYXJpYW50LkZ1bGw7XG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NvdW50OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHN1Ym1pdFNob3J0S2V5OiBTdWJtaXRTaG9ydEtleSB8IG51bGwgfCBzdHJpbmcgPVxuICAgIFN1Ym1pdFNob3J0S2V5LkVudGVyO1xuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b3NpemU6IFRleHRhcmVhQXV0b1NpemUgPSBmYWxzZTtcbiAgXG4gIC8vIHRleHRhcmVh5qC35byPXG4gIHRleHRhcmVhU3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCd0ZXh0YXJlYScpIHRleHRhcmVhRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZCgnaGVhZCcpIGhlYWRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdwcmVmaXgnKSBwcmVmaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdzdWZmaXgnKSBzdWZmaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdidXR0b24nKSBidXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdleHRyYScpIGV4dHJhVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgbG9jazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvdW5kYXRpb24gPSBuZXcgSW5wdXRGb3VuZGF0aW9uKHRoaXMuYWRhcHRlcik7XG4gICAgdGhpcy5mb3VuZGF0aW9uLmluaXQoKTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLnZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGFkYXB0ZXIoKTogSW5wdXRBZGFwdGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuYWRhcHRlcixcbiAgICAgIGxvY2FsZTogKGtleSwgcGFyYW1zKSA9PiB0aGlzLmxvY2FsZVNlcnZpY2UudHJhbnNsYXRlKGtleSwgcGFyYW1zKSxcbiAgICAgIGVtaXRDaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHN1Ym1pdDogKGlucHV0VmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXQuZW1pdChpbnB1dFZhbHVlKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGUpOiB2b2lkIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZm91bmRhdGlvbi5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGNoYW5nZXNbJ3ZhbHVlJ10/LmN1cnJlbnRWYWx1ZSB8fCAnJztcbiAgICAgIC8vIOWAvOWPmOWMluaXtuabtOaWsHRleHRhcmVh5qC35byPXG4gICAgICB0aGlzLnVwZGF0ZVRleHRhcmVhU3R5bGUoKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGNoYW5nZXNbJ2F1dG9zaXplJ10pIHtcbiAgICAgIC8vIGF1dG9zaXpl6YWN572u5Y+Y5YyW5pe25pu05pawdGV4dGFyZWHmoLflvI9cbiAgICAgIHRoaXMudXBkYXRlVGV4dGFyZWFTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbnB1dENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3VuZGF0aW9uLmdldElucHV0Q2xhc3NlcygpO1xuICB9XG5cbiAgZ2V0IG1heGxlbmd0aFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkID8gdGhpcy5tYXhMZW5ndGggOiBudWxsO1xuICB9XG5cbiAgb25JbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubG9jaykge1xuICAgICAgdGhpcy5mb3VuZGF0aW9uLmVtaXRDaGFuZ2UoKTtcbiAgICAgIC8vIOi+k+WFpeaXtuabtOaWsHRleHRhcmVh5qC35byPXG4gICAgICB0aGlzLnVwZGF0ZVRleHRhcmVhU3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbXBvc2l0aW9uU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NrID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQ29tcG9zaXRpb25FbmQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NrID0gZmFsc2U7XG4gICAgdGhpcy5mb3VuZGF0aW9uLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm91bmRhdGlvbi5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgY2xlYXJJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvdW5kYXRpb24uY2xlYXJJbnB1dCgpO1xuICB9XG5cbiAgZ2V0SW5wdXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlO1xuICB9XG5cbiAgLy8g5aSE55CGYnV0dG9u57uE5Lu255qE5LqL5Lu2XG4gIG9uQnV0dG9uU3VibWl0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLnRleHRhcmVhRWxlbWVudCAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLy8g5Zyo5LiL5LiA5Liq5Y+Y5pu05qOA5rWL5ZGo5pyf5Lit6IGa54Sm77yM5Lul56Gu5L+d6KeG5Zu+5bey57uP5a6M5YWo5Yid5aeL5YyWXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIC8vIOWIneWni+WMluaXtuabtOaWsHRleHRhcmVh5qC35byPXG4gICAgdGhpcy51cGRhdGVUZXh0YXJlYVN0eWxlKCk7XG4gIH1cbiAgXG4gIC8vIOabtOaWsHRleHRhcmVh5qC35byPXG4gIHVwZGF0ZVRleHRhcmVhU3R5bGUoKSB7XG4gICAgaWYgKCF0aGlzLnRleHRhcmVhRWxlbWVudCB8fCB0aGlzLmF1dG9zaXplID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50ZXh0YXJlYVN0eWxlID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0QXV0b3NpemVDb25maWcoKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbXB1dGVUZXh0YXJlYUhlaWdodChcbiAgICAgIHRoaXMudGV4dGFyZWFFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBjb25maWcubWluUm93cyxcbiAgICAgIGNvbmZpZy5tYXhSb3dzXG4gICAgKTtcbiAgICBcbiAgICB0aGlzLnRleHRhcmVhU3R5bGUgPSB7XG4gICAgICAuLi5yZXN1bHQsXG4gICAgICByZXNpemU6ICdub25lJ1xuICAgIH07XG4gIH1cbiAgXG4gIC8vIOiOt+WPlmF1dG9zaXpl6YWN572uXG4gIHByaXZhdGUgZ2V0QXV0b3NpemVDb25maWcoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmF1dG9zaXplID09PSAnYm9vbGVhbidcbiAgICAgID8gREVGQVVMVF9BVVRPU0laRVxuICAgICAgOiB0aGlzLmF1dG9zaXplO1xuICB9XG4gIFxuICAvLyDorqHnrpd0ZXh0YXJlYemrmOW6plxuICBwcml2YXRlIGNvbXB1dGVUZXh0YXJlYUhlaWdodChcbiAgICB0YXJnZXRFbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50LFxuICAgIG1pblJvd3MgPSAxLFxuICAgIG1heFJvd3M/OiBudW1iZXJcbiAgKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXRFbGVtZW50KTtcbiAgICBjb25zdCBib3hTaXppbmcgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3gtc2l6aW5nJyk7XG4gICAgXG4gICAgY29uc3QgcGFkZGluZ1NpemUgPSBcbiAgICAgIE51bWJlci5wYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJykpICtcbiAgICAgIE51bWJlci5wYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJykpO1xuICAgIFxuICAgIGNvbnN0IGJvcmRlclNpemUgPSBcbiAgICAgIE51bWJlci5wYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSkgK1xuICAgICAgTnVtYmVyLnBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpKTtcbiAgICBcbiAgICAvLyDliJvlu7rkuLTml7Z0ZXh0YXJlYeWFg+e0oFxuICAgIGNvbnN0IHRlbXBUZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgY29uc3Qgc2l6aW5nU3R5bGUgPSBbXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnLCAnbGluZS1oZWlnaHQnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1ib3R0b20nLFxuICAgICAgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtd2VpZ2h0JywgJ2ZvbnQtc2l6ZScsICdmb250LXZhcmlhbnQnLFxuICAgICAgJ3RleHQtcmVuZGVyaW5nJywgJ3RleHQtdHJhbnNmb3JtJywgJ3dpZHRoJywgJ3RleHQtaW5kZW50JyxcbiAgICAgICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy1yaWdodCcsICdib3JkZXItd2lkdGgnLCAnYm94LXNpemluZycsXG4gICAgICAnd29yZC1icmVhaycsICd3aGl0ZS1zcGFjZSdcbiAgICBdO1xuICAgIFxuICAgIGNvbnN0IGNvbnRleHRTdHlsZSA9IHNpemluZ1N0eWxlXG4gICAgICAubWFwKG5hbWUgPT4gYCR7bmFtZX06JHtzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpfWApXG4gICAgICAuam9pbignOycpO1xuICAgIFxuICAgIGNvbnN0IGhpZGRlblN0eWxlID0gYFxuICAgICAgbWluLWhlaWdodDowICFpbXBvcnRhbnQ7XG4gICAgICBtYXgtaGVpZ2h0Om5vbmUgIWltcG9ydGFudDtcbiAgICAgIGhlaWdodDowICFpbXBvcnRhbnQ7XG4gICAgICB2aXNpYmlsaXR5OmhpZGRlbiAhaW1wb3J0YW50O1xuICAgICAgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgICAgei1pbmRleDotMTAwMCAhaW1wb3J0YW50O1xuICAgICAgdG9wOjAgIWltcG9ydGFudDtcbiAgICAgIHJpZ2h0OjAgIWltcG9ydGFudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudDtcbiAgICBgO1xuICAgIFxuICAgIHRlbXBUZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgYCR7Y29udGV4dFN0eWxlfTske2hpZGRlblN0eWxlfWApO1xuICAgIHRlbXBUZXh0YXJlYS52YWx1ZSA9IHRhcmdldEVsZW1lbnQudmFsdWUgfHwgdGFyZ2V0RWxlbWVudC5wbGFjZWhvbGRlciB8fCAnJztcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBUZXh0YXJlYSk7XG4gICAgXG4gICAgbGV0IGhlaWdodCA9IHRlbXBUZXh0YXJlYS5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXG4gICAgfTtcbiAgICBcbiAgICBpZiAobWluUm93cyAhPT0gdW5kZWZpbmVkIHx8IG1heFJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGVtcFRleHRhcmVhLnZhbHVlID0gJyAnO1xuICAgICAgY29uc3Qgc2luZ2xlUm93SGVpZ2h0ID0gdGVtcFRleHRhcmVhLnNjcm9sbEhlaWdodCAtIHBhZGRpbmdTaXplO1xuICAgICAgXG4gICAgICBpZiAobWluUm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBtaW5IZWlnaHQgPSBzaW5nbGVSb3dIZWlnaHQgKiBtaW5Sb3dzO1xuICAgICAgICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgICBtaW5IZWlnaHQgPSBtaW5IZWlnaHQgKyBwYWRkaW5nU2l6ZSArIGJvcmRlclNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBoZWlnaHQpO1xuICAgICAgICByZXN1bHRbJ21pbkhlaWdodCddID0gYCR7bWluSGVpZ2h0fXB4YDtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKG1heFJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gc2luZ2xlUm93SGVpZ2h0ICogbWF4Um93cztcbiAgICAgICAgaWYgKGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgICAgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICsgcGFkZGluZ1NpemUgKyBib3JkZXJTaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgcmVzdWx0WydvdmVyZmxvd1knXSA9ICdhdXRvJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlbXBUZXh0YXJlYSk7XG4gICAgXG4gICAgcmVzdWx0WydoZWlnaHQnXSA9IGAke2hlaWdodH1weGA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlclRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3VuZGF0aW9uLmdldFBsYWNlaG9sZGVyVGV4dCgpO1xuICB9XG5cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgIHRoaXMuZm9jdXMuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkVGVtcGxhdGU7IHRoZW4gaGVhZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cIm1jLWlucHV0LWNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlZml4VGVtcGxhdGU7IHRoZW4gcHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ZXh0YXJlYVxuICAgICAgI3RleHRhcmVhXG4gICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgY2xhc3M9XCJtYy10ZXh0YXJlYVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtYy10ZXh0YXJlYS1zaW1wbGUnOiBkaXNwbGF5VHlwZSA9PT0gJ3NpbXBsZScsXG4gICAgICAgICdtYy10ZXh0YXJlYS1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICB9XCJcbiAgICAgIFtuZ1N0eWxlXT1cInRleHRhcmVhU3R5bGVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSW5wdXQuYXJpYUxhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChjb21wb3NpdGlvbnN0YXJ0KT1cIm9uQ29tcG9zaXRpb25TdGFydCgpXCJcbiAgICAgIChjb21wb3NpdGlvbmVuZCk9XCJvbkNvbXBvc2l0aW9uRW5kKClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgPjwvdGV4dGFyZWE+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1ZmZpeFRlbXBsYXRlOyB0aGVuIHN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGUgPT09ICdzaW1wbGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEJ1dHRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJidXR0b25UZW1wbGF0ZTsgdGhlbiBidXR0b25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uPlxuICAgICAgICA8bWMtYnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICghbG9hZGluZyAmJiAhaW5wdXRWYWx1ZSlcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICAgIFtpbnB1dFZhbHVlXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAgIFtzZW5kQnRuVmFyaWFudF09XCJzZW5kQnRuVmFyaWFudFwiXG4gICAgICAgICAgKHN1Ym1pdCk9XCJvbkJ1dHRvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2FuY2VsKT1cIm9uQnV0dG9uQ2FuY2VsKClcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25CdXR0b25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L21jLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ2Z1bGwnXCIgY2xhc3M9XCJtYy1pbnB1dC1mb290XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1jLWlucHV0LWZvb3QtbGVmdFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dHJhVGVtcGxhdGU7IHRoZW4gZXh0cmFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW4gKm5nSWY9XCJzaG93Q291bnRcIiBpZD1cIm1jLWlucHV0LWNvdW50XCIgY2xhc3M9XCJtYy1pbnB1dC1mb290LWNvdW50XCI+XG4gICAgICAgIHt7IGlucHV0VmFsdWUubGVuZ3RoIH19e3sgIW1heExlbmd0aCA/IFwiXCIgOiBcIi9cIiArIG1heExlbmd0aCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRGb290ZXJCdXR0b25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25UZW1wbGF0ZTsgdGhlbiBidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZvb3RlckJ1dHRvbj5cbiAgICAgIDxtYy1idXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICghbG9hZGluZyAmJiAhaW5wdXRWYWx1ZSlcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgW2lucHV0VmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gICAgICAgIFtzZW5kQnRuVmFyaWFudF09XCJzZW5kQnRuVmFyaWFudFwiXG4gICAgICAgIChzdWJtaXQpPVwib25CdXR0b25TdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgIChjYW5jZWwpPVwib25CdXR0b25DYW5jZWwoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25CdXR0b25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9tYy1idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
+ import zhCN from '../components-common/Locale/lang/zh-cn';
4
+ import enUS from '../components-common/Locale/lang/en-us';
3
5
  import * as i0 from "@angular/core";
4
6
  export class LocaleService {
5
7
  constructor() {
@@ -25,10 +27,8 @@ export class LocaleService {
25
27
  async loadDefaultLocales() {
26
28
  try {
27
29
  // 动态导入默认语言包
28
- const zhCN = await import('../components-common/Locale/lang/zh-cn');
29
- const enUS = await import('../components-common/Locale/lang/en-us');
30
- this._localeData.set('zh-cn', zhCN.default);
31
- this._localeData.set('en-us', enUS.default);
30
+ this._localeData.set('zh-cn', zhCN);
31
+ this._localeData.set('en-us', enUS);
32
32
  }
33
33
  catch (error) {
34
34
  console.error('Failed to load default locales:', error);
@@ -137,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
137
137
  providedIn: 'root'
138
138
  }]
139
139
  }], ctorParameters: () => [] });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvbG9jYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQWEvQixNQUFNLE9BQU8sYUFBYTtJQVV4QjtRQVRBLE9BQU87UUFDQyxxQkFBZ0IsR0FBaUIsT0FBTyxDQUFDO1FBQ2pELFFBQVE7UUFDQSxnQkFBVyxHQUFrQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9ELFNBQVM7UUFDRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3RELG1CQUFtQjtRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHcEQsMEJBQTBCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELFdBQVc7UUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQztZQUNILFlBQVk7WUFDWixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1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bXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8vIOWumuS5ieivreiogOWMheaOpeWPo1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbGVEYXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vLyDlrprkuYnmlK/mjIHnmoTor63oqIDnsbvlnotcbmV4cG9ydCB0eXBlIExhbmd1YWdlQ29kZSA9ICd6aC1jbicgfCAnZW4tdXMnIHwgc3RyaW5nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcbiAgLy8g5b2T5YmN6K+t6KiAXG4gIHByaXZhdGUgX2N1cnJlbnRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlID0gJ3poLWNuJztcbiAgLy8g6K+t6KiA5YyF5a2Y5YKoXG4gIHByaXZhdGUgX2xvY2FsZURhdGE6IE1hcDxMYW5ndWFnZUNvZGUsIExvY2FsZURhdGE+ID0gbmV3IE1hcCgpO1xuICAvLyDor63oqIDlj5jmm7TpgJrnn6VcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDaGFuZ2UgPSBuZXcgU3ViamVjdDxMYW5ndWFnZUNvZGU+KCk7XG4gIC8vIOWFrOW8gOivreiogOWPmOabtE9ic2VydmFibGVcbiAgbGFuZ3VhZ2VDaGFuZ2UkID0gdGhpcy5fbGFuZ3VhZ2VDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g6aaW5YWI5bCd6K+V5LuObG9jYWxTdG9yYWdl6I635Y+W6K+t6KiA6K6+572uXG4gICAgY29uc3Qgc2F2ZWRMYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKTtcbiAgICBpZiAoc2F2ZWRMYW5nKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBzYXZlZExhbmc7XG4gICAgfVxuICAgIFxuICAgIC8vIOWIneWni+WMlum7mOiupOivreiogOWMhVxuICAgIHRoaXMubG9hZERlZmF1bHRMb2NhbGVzKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L296buY6K6k6K+t6KiA5YyFXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGxvYWREZWZhdWx0TG9jYWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8g5Yqo5oCB5a+85YWl6buY6K6k6K+t6KiA5YyFXG4gICAgICBjb25zdCB6aENOID0gYXdhaXQgaW1wb3J0KCcuLi9jb21wb25lbnRzLWNvbW1vbi9Mb2NhbGUvbGFuZy96aC1jbicpO1xuICAgICAgY29uc3QgZW5VUyA9IGF3YWl0IGltcG9ydCgnLi4vY29tcG9uZW50cy1jb21tb24vTG9jYWxlL2xhbmcvZW4tdXMnKTtcbiAgICAgIFxuICAgICAgdGhpcy5fbG9jYWxlRGF0YS5zZXQoJ3poLWNuJywgemhDTi5kZWZhdWx0KTtcbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KCdlbi11cycsIGVuVVMuZGVmYXVsdCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGRlZmF1bHQgbG9jYWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruW9k+WJjeivreiogFxuICAgKi9cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgIT09IGxhbmd1YWdlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgIC8vIOS/neWtmOWIsGxvY2FsU3RvcmFnZVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCBsYW5ndWFnZSk7XG4gICAgICB0aGlzLl9sYW5ndWFnZUNoYW5nZS5uZXh0KGxhbmd1YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN6K+t6KiAXG4gICAqL1xuICBnZXRMYW5ndWFnZSgpOiBMYW5ndWFnZUNvZGUge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TGFuZ3VhZ2U7XG4gIH1cblxuICAvKipcbiAgICog57+76K+R5paH5pysXG4gICAqIEBwYXJhbSBrZXkg57+76K+R6ZSu77yM5pSv5oyB5bWM5aWX6Lev5b6E5aaCICdJbnB1dC5zZW5kJ1xuICAgKiBAcGFyYW0gcGFyYW1zIOabv+aNouWPguaVsFxuICAgKi9cbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9KTogc3RyaW5nIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGtleTtcblxuICAgIC8vIOiOt+WPluW9k+WJjeivreiogOeahOivreiogOWMhVxuICAgIGNvbnN0IGxvY2FsZURhdGEgPSB0aGlzLl9sb2NhbGVEYXRhLmdldCh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UpIHx8IHt9O1xuICAgIFxuICAgIC8vIOino+aekOW1jOWll+mUrlxuICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICBsZXQgdmFsdWU6IGFueSA9IGxvY2FsZURhdGE7XG4gICAgXG4gICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGsgaW4gdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOWmguaenOmUruS4jeWtmOWcqO+8jOi/lOWbnuWOn+Wni+mUrlxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOWkhOeQhuabv+aNouWPguaVsFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcykge1xuICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgZm9yIChjb25zdCBbcGFyYW1LZXksIHBhcmFtVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxceyR7cGFyYW1LZXl9XFxcXH1gLCAnZycpO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWdleCwgU3RyaW5nKHBhcmFtVmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiDmt7vliqDmlrDnmoTor63oqIBcbiAgICovXG4gIGFkZExhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZUNvZGUsIGxvY2FsZURhdGE6IExvY2FsZURhdGEpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2NhbGVEYXRhLnNldChsYW5ndWFnZSwgbG9jYWxlRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICog6KaG55uW546w5pyJ6K+t6KiA55qE6YOo5YiG57+76K+RXG4gICAqL1xuICBvdmVycmlkZUxvY2FsZShsYW5ndWFnZTogTGFuZ3VhZ2VDb2RlLCBsb2NhbGVEYXRhOiBMb2NhbGVEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvY2FsZURhdGEuaGFzKGxhbmd1YWdlKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdMb2NhbGUgPSB0aGlzLl9sb2NhbGVEYXRhLmdldChsYW5ndWFnZSkgfHwge307XG4gICAgICAvLyDmt7HluqblkIjlubbor63oqIDljIVcbiAgICAgIGNvbnN0IG1lcmdlZExvY2FsZSA9IHRoaXMuZGVlcE1lcmdlKGV4aXN0aW5nTG9jYWxlLCBsb2NhbGVEYXRhKTtcbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KGxhbmd1YWdlLCBtZXJnZWRMb2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzor63oqIDkuI3lrZjlnKjvvIzliJnmt7vliqDmlrDor63oqIBcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UobGFuZ3VhZ2UsIGxvY2FsZURhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInmlK/mjIHnmoTor63oqIBcbiAgICovXG4gIGdldFN1cHBvcnRlZExhbmd1YWdlcygpOiBMYW5ndWFnZUNvZGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbG9jYWxlRGF0YS5rZXlzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOa3seW6puWQiOW5tuWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBkZWVwTWVyZ2UodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLnRhcmdldCB9O1xuICAgIFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiBrZXkgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmRlZXBNZXJnZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvbG9jYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sSUFBSSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFELE9BQU8sSUFBSSxNQUFNLHdDQUF3QyxDQUFDOztBQWExRCxNQUFNLE9BQU8sYUFBYTtJQVV4QjtRQVRBLE9BQU87UUFDQyxxQkFBZ0IsR0FBaUIsT0FBTyxDQUFDO1FBQ2pELFFBQVE7UUFDQSxnQkFBVyxHQUFrQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9ELFNBQVM7UUFDRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3RELG1CQUFtQjtRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHcEQsMEJBQTBCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELFdBQVc7UUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQztZQUNILFlBQVk7WUFFWixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FB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QkFBaUI7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQjtRQUNuQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVztRQUN4QyxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0F6SVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgemhDTiBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9Mb2NhbGUvbGFuZy96aC1jbic7XG5pbXBvcnQgZW5VUyBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9Mb2NhbGUvbGFuZy9lbi11cyc7XG5cbi8vIOWumuS5ieivreiogOWMheaOpeWPo1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbGVEYXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vLyDlrprkuYnmlK/mjIHnmoTor63oqIDnsbvlnotcbmV4cG9ydCB0eXBlIExhbmd1YWdlQ29kZSA9ICd6aC1jbicgfCAnZW4tdXMnIHwgc3RyaW5nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcbiAgLy8g5b2T5YmN6K+t6KiAXG4gIHByaXZhdGUgX2N1cnJlbnRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlID0gJ3poLWNuJztcbiAgLy8g6K+t6KiA5YyF5a2Y5YKoXG4gIHByaXZhdGUgX2xvY2FsZURhdGE6IE1hcDxMYW5ndWFnZUNvZGUsIExvY2FsZURhdGE+ID0gbmV3IE1hcCgpO1xuICAvLyDor63oqIDlj5jmm7TpgJrnn6VcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDaGFuZ2UgPSBuZXcgU3ViamVjdDxMYW5ndWFnZUNvZGU+KCk7XG4gIC8vIOWFrOW8gOivreiogOWPmOabtE9ic2VydmFibGVcbiAgbGFuZ3VhZ2VDaGFuZ2UkID0gdGhpcy5fbGFuZ3VhZ2VDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g6aaW5YWI5bCd6K+V5LuObG9jYWxTdG9yYWdl6I635Y+W6K+t6KiA6K6+572uXG4gICAgY29uc3Qgc2F2ZWRMYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKTtcbiAgICBpZiAoc2F2ZWRMYW5nKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBzYXZlZExhbmc7XG4gICAgfVxuICAgIFxuICAgIC8vIOWIneWni+WMlum7mOiupOivreiogOWMhVxuICAgIHRoaXMubG9hZERlZmF1bHRMb2NhbGVzKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L296buY6K6k6K+t6KiA5YyFXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGxvYWREZWZhdWx0TG9jYWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8g5Yqo5oCB5a+85YWl6buY6K6k6K+t6KiA5YyFXG5cbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KCd6aC1jbicsIHpoQ04pO1xuICAgICAgdGhpcy5fbG9jYWxlRGF0YS5zZXQoJ2VuLXVzJywgZW5VUyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGRlZmF1bHQgbG9jYWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruW9k+WJjeivreiogFxuICAgKi9cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgIT09IGxhbmd1YWdlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgIC8vIOS/neWtmOWIsGxvY2FsU3RvcmFnZVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCBsYW5ndWFnZSk7XG4gICAgICB0aGlzLl9sYW5ndWFnZUNoYW5nZS5uZXh0KGxhbmd1YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN6K+t6KiAXG4gICAqL1xuICBnZXRMYW5ndWFnZSgpOiBMYW5ndWFnZUNvZGUge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TGFuZ3VhZ2U7XG4gIH1cblxuICAvKipcbiAgICog57+76K+R5paH5pysXG4gICAqIEBwYXJhbSBrZXkg57+76K+R6ZSu77yM5pSv5oyB5bWM5aWX6Lev5b6E5aaCICdJbnB1dC5zZW5kJ1xuICAgKiBAcGFyYW0gcGFyYW1zIOabv+aNouWPguaVsFxuICAgKi9cbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9KTogc3RyaW5nIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGtleTtcblxuICAgIC8vIOiOt+WPluW9k+WJjeivreiogOeahOivreiogOWMhVxuICAgIGNvbnN0IGxvY2FsZURhdGEgPSB0aGlzLl9sb2NhbGVEYXRhLmdldCh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UpIHx8IHt9O1xuICAgIFxuICAgIC8vIOino+aekOW1jOWll+mUrlxuICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICBsZXQgdmFsdWU6IGFueSA9IGxvY2FsZURhdGE7XG4gICAgXG4gICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGsgaW4gdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOWmguaenOmUruS4jeWtmOWcqO+8jOi/lOWbnuWOn+Wni+mUrlxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOWkhOeQhuabv+aNouWPguaVsFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcykge1xuICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgZm9yIChjb25zdCBbcGFyYW1LZXksIHBhcmFtVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxceyR7cGFyYW1LZXl9XFxcXH1gLCAnZycpO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWdleCwgU3RyaW5nKHBhcmFtVmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiDmt7vliqDmlrDnmoTor63oqIBcbiAgICovXG4gIGFkZExhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZUNvZGUsIGxvY2FsZURhdGE6IExvY2FsZURhdGEpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2NhbGVEYXRhLnNldChsYW5ndWFnZSwgbG9jYWxlRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICog6KaG55uW546w5pyJ6K+t6KiA55qE6YOo5YiG57+76K+RXG4gICAqL1xuICBvdmVycmlkZUxvY2FsZShsYW5ndWFnZTogTGFuZ3VhZ2VDb2RlLCBsb2NhbGVEYXRhOiBMb2NhbGVEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvY2FsZURhdGEuaGFzKGxhbmd1YWdlKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdMb2NhbGUgPSB0aGlzLl9sb2NhbGVEYXRhLmdldChsYW5ndWFnZSkgfHwge307XG4gICAgICAvLyDmt7HluqblkIjlubbor63oqIDljIVcbiAgICAgIGNvbnN0IG1lcmdlZExvY2FsZSA9IHRoaXMuZGVlcE1lcmdlKGV4aXN0aW5nTG9jYWxlLCBsb2NhbGVEYXRhKTtcbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KGxhbmd1YWdlLCBtZXJnZWRMb2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzor63oqIDkuI3lrZjlnKjvvIzliJnmt7vliqDmlrDor63oqIBcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UobGFuZ3VhZ2UsIGxvY2FsZURhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInmlK/mjIHnmoTor63oqIBcbiAgICovXG4gIGdldFN1cHBvcnRlZExhbmd1YWdlcygpOiBMYW5ndWFnZUNvZGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbG9jYWxlRGF0YS5rZXlzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOa3seW6puWQiOW5tuWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBkZWVwTWVyZ2UodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLnRhcmdldCB9O1xuICAgIFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiBrZXkgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmRlZXBNZXJnZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSJdfQ==