ngx-tethys 16.1.6 → 16.1.7
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/CHANGELOG.md +10 -0
- package/cascader/cascader-li.component.d.ts +2 -1
- package/cascader/cascader.component.d.ts +13 -3
- package/cascader/types.d.ts +2 -0
- package/esm2022/cascader/cascader-li.component.mjs +15 -6
- package/esm2022/cascader/cascader.component.mjs +92 -35
- package/esm2022/cascader/types.mjs +1 -1
- package/esm2022/select/custom-select/custom-select.component.mjs +13 -4
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-cascader.mjs +97 -32
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +12 -3
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [16.1.7](https://github.com/atinc/ngx-tethys/compare/16.1.6...16.1.7) (2023-11-02)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **cascader:** search and select all nodes when isOnlySelectLeaf is false #INFR-10101 ([#2873](https://github.com/atinc/ngx-tethys/issues/2873)) ([f0d6751](https://github.com/atinc/ngx-tethys/commit/f0d67511309a092e9d7364009c9082d471e58517)), closes [#INFR-10101](https://github.com/atinc/ngx-tethys/issues/INFR-10101)
|
|
11
|
+
* **select:** #INFR-10094 dispatch toggle select panel not close when thyShowSearch is true ([#2872](https://github.com/atinc/ngx-tethys/issues/2872)) ([10c2ec1](https://github.com/atinc/ngx-tethys/commit/10c2ec19d8d6ff0024283d8a4f6c3a243eac717b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
5
15
|
## [16.1.6](https://github.com/atinc/ngx-tethys/compare/16.2.0-next...16.1.6) (2023-10-27)
|
|
6
16
|
|
|
7
17
|
|
|
@@ -11,6 +11,7 @@ export declare class ThyCascaderOptionComponent implements OnInit {
|
|
|
11
11
|
class: string;
|
|
12
12
|
item: boolean;
|
|
13
13
|
active: boolean;
|
|
14
|
+
selected: boolean;
|
|
14
15
|
get disabled(): boolean;
|
|
15
16
|
get expand(): boolean;
|
|
16
17
|
labelProperty: string;
|
|
@@ -19,5 +20,5 @@ export declare class ThyCascaderOptionComponent implements OnInit {
|
|
|
19
20
|
ngOnInit(): void;
|
|
20
21
|
toggleOption(value: boolean): void;
|
|
21
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderOptionComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderOptionComponent, "[thy-cascader-option]", never, { "option": { "alias": "option"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isOnlySelectLeaf": { "alias": "isOnlySelectLeaf"; "required": false; }; "active": { "alias": "active"; "required": false; }; "labelProperty": { "alias": "labelProperty"; "required": false; }; }, { "toggleSelectChange": "toggleSelectChange"; }, never, never, true, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderOptionComponent, "[thy-cascader-option]", never, { "option": { "alias": "option"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isOnlySelectLeaf": { "alias": "isOnlySelectLeaf"; "required": false; }; "active": { "alias": "active"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "labelProperty": { "alias": "labelProperty"; "required": false; }; }, { "toggleSelectChange": "toggleSelectChange"; }, never, never, true, never>;
|
|
23
24
|
}
|
|
@@ -114,7 +114,8 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
|
|
|
114
114
|
*/
|
|
115
115
|
thyMaxTagCount: number;
|
|
116
116
|
/**
|
|
117
|
-
*
|
|
117
|
+
* 是否仅允许选择叶子项
|
|
118
|
+
* @default true
|
|
118
119
|
*/
|
|
119
120
|
thyIsOnlySelectLeaf: boolean;
|
|
120
121
|
/**
|
|
@@ -150,6 +151,10 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
|
|
|
150
151
|
* 清空选项时触发
|
|
151
152
|
*/
|
|
152
153
|
thyClear: EventEmitter<void>;
|
|
154
|
+
/**
|
|
155
|
+
* 下拉选项展开和折叠状态事件
|
|
156
|
+
*/
|
|
157
|
+
thyExpandStatusChange: EventEmitter<boolean>;
|
|
153
158
|
cascaderOptions: QueryList<ElementRef>;
|
|
154
159
|
cascaderOptionContainers: QueryList<ElementRef>;
|
|
155
160
|
cdkConnectedOverlay: CdkConnectedOverlay;
|
|
@@ -196,6 +201,8 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
|
|
|
196
201
|
* 会导致恢复级联状态再变为搜索状态
|
|
197
202
|
*/
|
|
198
203
|
private isSelectingSearchState;
|
|
204
|
+
private flattenOptions;
|
|
205
|
+
private leafNodes;
|
|
199
206
|
ngOnInit(): void;
|
|
200
207
|
private initSelectionModel;
|
|
201
208
|
private initPosition;
|
|
@@ -211,6 +218,7 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
|
|
|
211
218
|
getOptionLabel(option: ThyCascaderOption): any;
|
|
212
219
|
getOptionValue(option: ThyCascaderOption): any;
|
|
213
220
|
isActivatedOption(option: ThyCascaderOption, index: number): boolean;
|
|
221
|
+
isSelectedOption(option: ThyCascaderOption, index: number): boolean;
|
|
214
222
|
attached(): void;
|
|
215
223
|
private scrollActiveElementIntoView;
|
|
216
224
|
private findOption;
|
|
@@ -230,7 +238,7 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
|
|
|
230
238
|
private isHoverExpandTriggerAction;
|
|
231
239
|
toggleClick($event: Event): void;
|
|
232
240
|
toggleHover($event: Event): void;
|
|
233
|
-
clickOption(option: ThyCascaderOption, index: number, event: Event): void;
|
|
241
|
+
clickOption(option: ThyCascaderOption, index: number, event: Event | boolean): void;
|
|
234
242
|
mouseoverOption(option: ThyCascaderOption, index: number, event: Event): void;
|
|
235
243
|
mouseleaveMenu(event: Event): void;
|
|
236
244
|
onBlur(event?: FocusEvent): void;
|
|
@@ -255,10 +263,12 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
|
|
|
255
263
|
trackByFn(index: number, item: ThyCascaderOption): any;
|
|
256
264
|
searchFilter(searchText: string): void;
|
|
257
265
|
private initSearch;
|
|
266
|
+
private forEachColumns;
|
|
267
|
+
private setSearchResultList;
|
|
258
268
|
private searchInLocal;
|
|
259
269
|
private resetSearch;
|
|
260
270
|
selectSearchResult(selectOptionData: ThyCascaderSearchOption): void;
|
|
261
271
|
ngOnDestroy(): void;
|
|
262
272
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderComponent, never>;
|
|
263
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderComponent, "thy-cascader,[thy-cascader]", never, { "thyValueProperty": { "alias": "thyValueProperty"; "required": false; }; "thyLabelProperty": { "alias": "thyLabelProperty"; "required": false; }; "thyPlaceholder": { "alias": "thyPlaceholder"; "required": false; }; "thySize": { "alias": "thySize"; "required": false; }; "thyOptions": { "alias": "thyOptions"; "required": false; }; "thyChangeOn": { "alias": "thyChangeOn"; "required": false; }; "thyChangeOnSelect": { "alias": "thyChangeOnSelect"; "required": false; }; "thyShowInput": { "alias": "thyShowInput"; "required": false; }; "thyLabelRender": { "alias": "thyLabelRender"; "required": false; }; "thyLoadData": { "alias": "thyLoadData"; "required": false; }; "thyTriggerAction": { "alias": "thyTriggerAction"; "required": false; }; "thyExpandTriggerAction": { "alias": "thyExpandTriggerAction"; "required": false; }; "thyMenuStyle": { "alias": "thyMenuStyle"; "required": false; }; "thyMenuClassName": { "alias": "thyMenuClassName"; "required": false; }; "thyColumnClassName": { "alias": "thyColumnClassName"; "required": false; }; "thyDisabled": { "alias": "thyDisabled"; "required": false; }; "thyEmptyStateText": { "alias": "thyEmptyStateText"; "required": false; }; "thyMultiple": { "alias": "thyMultiple"; "required": false; }; "thyMaxTagCount": { "alias": "thyMaxTagCount"; "required": false; }; "thyIsOnlySelectLeaf": { "alias": "thyIsOnlySelectLeaf"; "required": false; }; "thyShowSearch": { "alias": "thyShowSearch"; "required": false; }; }, { "thyChange": "thyChange"; "thySelectionChange": "thySelectionChange"; "thySelect": "thySelect"; "thyDeselect": "thyDeselect"; "thyClear": "thyClear"; }, never, never, true, never>;
|
|
273
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderComponent, "thy-cascader,[thy-cascader]", never, { "thyValueProperty": { "alias": "thyValueProperty"; "required": false; }; "thyLabelProperty": { "alias": "thyLabelProperty"; "required": false; }; "thyPlaceholder": { "alias": "thyPlaceholder"; "required": false; }; "thySize": { "alias": "thySize"; "required": false; }; "thyOptions": { "alias": "thyOptions"; "required": false; }; "thyChangeOn": { "alias": "thyChangeOn"; "required": false; }; "thyChangeOnSelect": { "alias": "thyChangeOnSelect"; "required": false; }; "thyShowInput": { "alias": "thyShowInput"; "required": false; }; "thyLabelRender": { "alias": "thyLabelRender"; "required": false; }; "thyLoadData": { "alias": "thyLoadData"; "required": false; }; "thyTriggerAction": { "alias": "thyTriggerAction"; "required": false; }; "thyExpandTriggerAction": { "alias": "thyExpandTriggerAction"; "required": false; }; "thyMenuStyle": { "alias": "thyMenuStyle"; "required": false; }; "thyMenuClassName": { "alias": "thyMenuClassName"; "required": false; }; "thyColumnClassName": { "alias": "thyColumnClassName"; "required": false; }; "thyDisabled": { "alias": "thyDisabled"; "required": false; }; "thyEmptyStateText": { "alias": "thyEmptyStateText"; "required": false; }; "thyMultiple": { "alias": "thyMultiple"; "required": false; }; "thyMaxTagCount": { "alias": "thyMaxTagCount"; "required": false; }; "thyIsOnlySelectLeaf": { "alias": "thyIsOnlySelectLeaf"; "required": false; }; "thyShowSearch": { "alias": "thyShowSearch"; "required": false; }; }, { "thyChange": "thyChange"; "thySelectionChange": "thySelectionChange"; "thySelect": "thySelect"; "thyDeselect": "thyDeselect"; "thyClear": "thyClear"; "thyExpandStatusChange": "thyExpandStatusChange"; }, never, never, true, never>;
|
|
264
274
|
}
|
package/cascader/types.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { InputBoolean } from 'ngx-tethys/core';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
2
|
import { ThyCheckboxComponent } from 'ngx-tethys/checkbox';
|
|
3
|
+
import { InputBoolean } from 'ngx-tethys/core';
|
|
6
4
|
import { ThyFlexibleTextComponent } from 'ngx-tethys/flexible-text';
|
|
5
|
+
import { ThyRadioComponent } from 'ngx-tethys/radio';
|
|
6
|
+
import { ThyStopPropagationDirective } from 'ngx-tethys/shared';
|
|
7
7
|
import { NgIf } from '@angular/common';
|
|
8
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
9
|
+
import { FormsModule } from '@angular/forms';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "@angular/forms";
|
|
10
12
|
/**
|
|
@@ -23,6 +25,7 @@ export class ThyCascaderOptionComponent {
|
|
|
23
25
|
this.class = 'd-flex';
|
|
24
26
|
this.item = true;
|
|
25
27
|
this.active = false;
|
|
28
|
+
this.selected = false;
|
|
26
29
|
this.labelProperty = 'label';
|
|
27
30
|
this.toggleSelectChange = new EventEmitter();
|
|
28
31
|
}
|
|
@@ -31,7 +34,7 @@ export class ThyCascaderOptionComponent {
|
|
|
31
34
|
this.toggleSelectChange.emit(value);
|
|
32
35
|
}
|
|
33
36
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ThyCascaderOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyCascaderOptionComponent, isStandalone: true, selector: "[thy-cascader-option]", inputs: { option: "option", multiple: "multiple", isOnlySelectLeaf: "isOnlySelectLeaf", active: "active", labelProperty: "labelProperty" }, outputs: { toggleSelectChange: "toggleSelectChange" }, host: { properties: { "class": "this.class", "class.thy-cascader-menu-item": "this.item", "class.thy-cascader-menu-item-active": "this.active", "class.thy-cascader-menu-item-disabled": "this.disabled", "class.thy-cascader-menu-item-expand": "this.expand" } }, ngImport: i0, template: "<
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyCascaderOptionComponent, isStandalone: true, selector: "[thy-cascader-option]", inputs: { option: "option", multiple: "multiple", isOnlySelectLeaf: "isOnlySelectLeaf", active: "active", selected: "selected", labelProperty: "labelProperty" }, outputs: { toggleSelectChange: "toggleSelectChange" }, host: { properties: { "class": "this.class", "class.thy-cascader-menu-item": "this.item", "class.thy-cascader-menu-item-active": "this.active", "class.thy-cascader-menu-item-disabled": "this.disabled", "class.thy-cascader-menu-item-expand": "this.expand" } }, ngImport: i0, template: "<div thyStopPropagation>\n <label\n *ngIf=\"multiple && (!isOnlySelectLeaf || option.isLeaf)\"\n thyCheckbox\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n <label\n *ngIf=\"!multiple && !isOnlySelectLeaf\"\n thyRadio\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n</div>\n\n<span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\"> {{ option[labelProperty] || '' }}</span>\n\n<span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\">\n</span>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleTextComponent, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "component", type: ThyCheckboxComponent, selector: "thy-checkbox,[thy-checkbox],[thyCheckbox]", inputs: ["thyIndeterminate"] }, { kind: "component", type: ThyRadioComponent, selector: "[thy-radio],[thyRadio]", inputs: ["thyValue"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
35
38
|
}
|
|
36
39
|
__decorate([
|
|
37
40
|
InputBoolean(),
|
|
@@ -45,9 +48,13 @@ __decorate([
|
|
|
45
48
|
InputBoolean(),
|
|
46
49
|
__metadata("design:type", Boolean)
|
|
47
50
|
], ThyCascaderOptionComponent.prototype, "active", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
InputBoolean(),
|
|
53
|
+
__metadata("design:type", Boolean)
|
|
54
|
+
], ThyCascaderOptionComponent.prototype, "selected", void 0);
|
|
48
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ThyCascaderOptionComponent, decorators: [{
|
|
49
56
|
type: Component,
|
|
50
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: '[thy-cascader-option]', standalone: true, imports: [NgIf, ThyFlexibleTextComponent, ThyCheckboxComponent, FormsModule], template: "<
|
|
57
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: '[thy-cascader-option]', standalone: true, imports: [NgIf, ThyFlexibleTextComponent, ThyCheckboxComponent, ThyRadioComponent, FormsModule, ThyStopPropagationDirective], template: "<div thyStopPropagation>\n <label\n *ngIf=\"multiple && (!isOnlySelectLeaf || option.isLeaf)\"\n thyCheckbox\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n <label\n *ngIf=\"!multiple && !isOnlySelectLeaf\"\n thyRadio\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n</div>\n\n<span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\"> {{ option[labelProperty] || '' }}</span>\n\n<span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\">\n</span>\n" }]
|
|
51
58
|
}], ctorParameters: function () { return []; }, propDecorators: { option: [{
|
|
52
59
|
type: Input
|
|
53
60
|
}], multiple: [{
|
|
@@ -65,6 +72,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
65
72
|
args: ['class.thy-cascader-menu-item-active']
|
|
66
73
|
}, {
|
|
67
74
|
type: Input
|
|
75
|
+
}], selected: [{
|
|
76
|
+
type: Input
|
|
68
77
|
}], disabled: [{
|
|
69
78
|
type: HostBinding,
|
|
70
79
|
args: ['class.thy-cascader-menu-item-disabled']
|
|
@@ -76,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
76
85
|
}], toggleSelectChange: [{
|
|
77
86
|
type: Output
|
|
78
87
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXItbGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLWxpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci1saS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUk3Qzs7R0FFRztBQVVILE1BQU0sT0FBTywwQkFBMEI7SUF3Qm5DLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFNRDtRQWpDQSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVGLFVBQUssR0FBRyxRQUFRLENBQUM7UUFFTSxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBS3pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFJeEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVlqQixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUUvQix1QkFBa0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxRCxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRU4sWUFBWSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQTVDUSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw4aUJDeEJ2Qyx3ekJBdUJBLDRDRERjLElBQUksNkZBQUUsd0JBQXdCLG1PQUFFLG9CQUFvQixvSEFBRSxpQkFBaUIsd0ZBQUUsV0FBVywrVkFBRSwyQkFBMkI7O0FBSzNIO0lBQ0MsWUFBWSxFQUFFOzs0REFDRTtBQUVqQjtJQUNDLFlBQVksRUFBRTs7b0VBQ1M7QUFNeEI7SUFFQyxZQUFZLEVBQUU7OzBEQUNTO0FBRXhCO0lBQ0MsWUFBWSxFQUFFOzs0REFDVzsyRkF0QmpCLDBCQUEwQjtrQkFUdEMsU0FBUztzQ0FDVyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBRTNCLHVCQUF1QixjQUVyQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixDQUFDOzBFQUduSCxNQUFNO3NCQUFkLEtBQUs7Z0JBSU4sUUFBUTtzQkFGUCxLQUFLO2dCQU1OLGdCQUFnQjtzQkFGZixLQUFLO2dCQUlnQixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBRXlCLElBQUk7c0JBQWhELFdBQVc7dUJBQUMsOEJBQThCO2dCQUszQyxNQUFNO3NCQUhMLFdBQVc7dUJBQUMscUNBQXFDOztzQkFDakQsS0FBSztnQkFNTixRQUFRO3NCQUZQLEtBQUs7Z0JBS0YsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLHVDQUF1QztnQkFNaEQsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLHFDQUFxQztnQkFLekMsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvY2hlY2tib3gnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUZsZXhpYmxlVGV4dENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZmxleGlibGUtdGV4dCc7XG5pbXBvcnQgeyBUaHlSYWRpb0NvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmFkaW8nO1xuaW1wb3J0IHsgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlDYXNjYWRlck9wdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbdGh5LWNhc2NhZGVyLW9wdGlvbl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXNjYWRlci1saS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5RmxleGlibGVUZXh0Q29tcG9uZW50LCBUaHlDaGVja2JveENvbXBvbmVudCwgVGh5UmFkaW9Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBpc09ubHlTZWxlY3RMZWFmID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdkLWZsZXgnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktY2FzY2FkZXItbWVudS1pdGVtJykgaXRlbSA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0tYWN0aXZlJylcbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktY2FzY2FkZXItbWVudS1pdGVtLWRpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbi5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0tZXhwYW5kJylcbiAgICBnZXQgZXhwYW5kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb24gJiYgIXRoaXMub3B0aW9uLmlzTGVhZjtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsYWJlbFByb3BlcnR5OiBzdHJpbmcgPSAnbGFiZWwnO1xuXG4gICAgQE91dHB1dCgpIHRvZ2dsZVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgcHVibGljIHRvZ2dsZU9wdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG59XG4iLCI8ZGl2IHRoeVN0b3BQcm9wYWdhdGlvbj5cbiAgPGxhYmVsXG4gICAgKm5nSWY9XCJtdWx0aXBsZSAmJiAoIWlzT25seVNlbGVjdExlYWYgfHwgb3B0aW9uLmlzTGVhZilcIlxuICAgIHRoeUNoZWNrYm94XG4gICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgW25hbWVdPVwib3B0aW9uLnZhbHVlIHx8IG9wdGlvbi5faWRcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZU9wdGlvbigkZXZlbnQpXCI+PC9sYWJlbD5cbiAgPGxhYmVsXG4gICAgKm5nSWY9XCIhbXVsdGlwbGUgJiYgIWlzT25seVNlbGVjdExlYWZcIlxuICAgIHRoeVJhZGlvXG4gICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgW25hbWVdPVwib3B0aW9uLnZhbHVlIHx8IG9wdGlvbi5faWRcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZU9wdGlvbigkZXZlbnQpXCI+PC9sYWJlbD5cbjwvZGl2PlxuXG48c3BhbiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cIm9wdGlvbltsYWJlbFByb3BlcnR5XSB8fCAnJ1wiPiB7eyBvcHRpb25bbGFiZWxQcm9wZXJ0eV0gfHwgJycgfX08L3NwYW4+XG5cbjxzcGFuXG4gICpuZ0lmPVwiIW9wdGlvbi5pc0xlYWYgfHwgKG9wdGlvbi5jaGlsZHJlbiAmJiBvcHRpb24uY2hpbGRyZW4ubGVuZ3RoKSB8fCBvcHRpb24ubG9hZGluZ1wiXG4gIGNsYXNzPVwid3RmIHd0Zi1hbmdsZS1yaWdodCB0aHktY2FzY2FkZXItbWVudS1pdGVtLWV4cGFuZC1pY29uXCI+XG48L3NwYW4+XG4iXX0=
|