@delon/abc 12.2.1 → 12.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/abc.umd.js +3 -3
- package/bundles/autoFocus.umd.js +4 -4
- package/bundles/avatarList.umd.js +4 -4
- package/bundles/count-down.umd.js +4 -4
- package/bundles/datePicker.umd.js +5 -5
- package/bundles/downFile.umd.js +4 -4
- package/bundles/edit.umd.js +4 -4
- package/bundles/ellipsis.umd.js +4 -4
- package/bundles/errorCollect.umd.js +4 -4
- package/bundles/exception.umd.js +12 -9
- package/bundles/exception.umd.js.map +1 -1
- package/bundles/footerToolbar.umd.js +4 -4
- package/bundles/fullContent.umd.js +6 -8
- package/bundles/fullContent.umd.js.map +1 -1
- package/bundles/globalFooter.umd.js +4 -4
- package/bundles/grid.umd.js +3 -3
- package/bundles/image.umd.js +3 -3
- package/bundles/let.umd.js +4 -4
- package/bundles/loading.umd.js +6 -8
- package/bundles/loading.umd.js.map +1 -1
- package/bundles/lodop.umd.js +5 -7
- package/bundles/lodop.umd.js.map +1 -1
- package/bundles/media.umd.js +5 -7
- package/bundles/media.umd.js.map +1 -1
- package/bundles/noticeIcon.umd.js +4 -4
- package/bundles/onboarding.umd.js +6 -8
- package/bundles/onboarding.umd.js.map +1 -1
- package/bundles/pageHeader.umd.js +4 -4
- package/bundles/pdf.umd.js +4 -4
- package/bundles/qr.umd.js +3 -3
- package/bundles/quickMenu.umd.js +4 -4
- package/bundles/result.umd.js +4 -4
- package/bundles/reuseTab.umd.js +15 -26
- package/bundles/reuseTab.umd.js.map +1 -1
- package/bundles/table.umd.js +251 -147
- package/bundles/table.umd.js.map +1 -1
- package/bundles/tagSelect.umd.js +4 -4
- package/bundles/view.umd.js +4 -4
- package/bundles/xlsx.umd.js +30 -37
- package/bundles/xlsx.umd.js.map +1 -1
- package/bundles/zip.umd.js +5 -7
- package/bundles/zip.umd.js.map +1 -1
- package/esm2015/exception/exception.component.js +7 -4
- package/esm2015/exception/exception.module.js +3 -2
- package/esm2015/lodop/lodop.service.js +1 -1
- package/esm2015/reuse-tab/reuse-tab-context-menu.component.js +2 -2
- package/esm2015/reuse-tab/reuse-tab-context.service.js +4 -13
- package/esm2015/reuse-tab/reuse-tab.component.js +7 -7
- package/esm2015/st/index.js +2 -0
- package/esm2015/st/st-column-source.js +28 -7
- package/esm2015/st/st-data-source.js +4 -4
- package/esm2015/st/st-export.js +9 -3
- package/esm2015/st/st-filter.component.js +149 -0
- package/esm2015/st/st-td.component.js +232 -0
- package/esm2015/st/st.component.js +28 -118
- package/esm2015/st/st.config.js +1 -2
- package/esm2015/st/st.interfaces.js +1 -1
- package/esm2015/st/st.module.js +9 -3
- package/esm2015/st/st.types.js +1 -1
- package/esm2015/st/table.js +3 -1
- package/esm2015/xlsx/xlsx.service.js +23 -29
- package/esm2015/xlsx/xlsx.types.js +1 -1
- package/esm2015/zip/zip.service.js +1 -1
- package/exception/exception.component.d.ts +3 -2
- package/exception/exception.metadata.json +1 -1
- package/fesm2015/exception.js +8 -4
- package/fesm2015/exception.js.map +1 -1
- package/fesm2015/lodop.js.map +1 -1
- package/fesm2015/reuseTab.js +10 -19
- package/fesm2015/reuseTab.js.map +1 -1
- package/fesm2015/table.js +447 -132
- package/fesm2015/table.js.map +1 -1
- package/fesm2015/xlsx.js +22 -28
- package/fesm2015/xlsx.js.map +1 -1
- package/fesm2015/zip.js.map +1 -1
- package/package.json +4 -4
- package/reuse-tab/reuse-tab.component.d.ts +1 -1
- package/reuse-tab/reuseTab.metadata.json +1 -1
- package/st/index.d.ts +1 -0
- package/st/st-filter.component.d.ts +18 -0
- package/st/st-td.component.d.ts +27 -0
- package/st/st.component.d.ts +8 -23
- package/st/st.interfaces.d.ts +57 -3
- package/st/st.types.d.ts +6 -0
- package/st/style/index.less +28 -12
- package/st/table.d.ts +2 -0
- package/st/table.metadata.json +1 -1
- package/sv/style/index.less +1 -0
- package/theme-default.less +3 -0
- package/xlsx/xlsx.metadata.json +1 -1
- package/xlsx/xlsx.types.d.ts +3 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
export class STFilterComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.visible = false;
|
|
5
|
+
this.locale = {};
|
|
6
|
+
this.n = new EventEmitter();
|
|
7
|
+
this.handle = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
get icon() {
|
|
10
|
+
return this.f.icon;
|
|
11
|
+
}
|
|
12
|
+
show($event) {
|
|
13
|
+
$event.stopPropagation();
|
|
14
|
+
}
|
|
15
|
+
checkboxChange() {
|
|
16
|
+
var _a;
|
|
17
|
+
this.n.emit((_a = this.f.menus) === null || _a === void 0 ? void 0 : _a.filter(w => w.checked));
|
|
18
|
+
}
|
|
19
|
+
radioChange(item) {
|
|
20
|
+
this.f.menus.forEach(i => (i.checked = false));
|
|
21
|
+
item.checked = !item.checked;
|
|
22
|
+
this.n.emit(item);
|
|
23
|
+
}
|
|
24
|
+
confirm() {
|
|
25
|
+
this.handle.emit(true);
|
|
26
|
+
}
|
|
27
|
+
reset() {
|
|
28
|
+
this.handle.emit(false);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
STFilterComponent.decorators = [
|
|
32
|
+
{ type: Component, args: [{
|
|
33
|
+
selector: 'st-filter',
|
|
34
|
+
template: `
|
|
35
|
+
<span
|
|
36
|
+
class="ant-table-filter-trigger"
|
|
37
|
+
[class.active]="visible || f.default"
|
|
38
|
+
nz-dropdown
|
|
39
|
+
[nzDropdownMenu]="filterMenu"
|
|
40
|
+
nzTrigger="click"
|
|
41
|
+
[nzClickHide]="false"
|
|
42
|
+
[(nzVisible)]="visible"
|
|
43
|
+
nzOverlayClassName="st__filter-wrap"
|
|
44
|
+
(click)="show($event)"
|
|
45
|
+
>
|
|
46
|
+
<i nz-icon [nzType]="icon.type" [nzTheme]="icon.theme!"></i>
|
|
47
|
+
</span>
|
|
48
|
+
<nz-dropdown-menu #filterMenu="nzDropdownMenu">
|
|
49
|
+
<div class="ant-table-filter-dropdown">
|
|
50
|
+
<ng-container [ngSwitch]="f.type">
|
|
51
|
+
<div *ngSwitchCase="'keyword'" class="st__filter-keyword">
|
|
52
|
+
<input
|
|
53
|
+
type="text"
|
|
54
|
+
nz-input
|
|
55
|
+
[attr.placeholder]="f.placeholder"
|
|
56
|
+
[(ngModel)]="f.menus![0]!.value"
|
|
57
|
+
(ngModelChange)="n.emit($event)"
|
|
58
|
+
(keyup.enter)="confirm()"
|
|
59
|
+
/>
|
|
60
|
+
</div>
|
|
61
|
+
<div *ngSwitchCase="'number'" class="p-sm st__filter-number">
|
|
62
|
+
<nz-input-number
|
|
63
|
+
[(ngModel)]="f.menus![0]!.value"
|
|
64
|
+
(ngModelChange)="n.emit($event)"
|
|
65
|
+
[nzMin]="f.number!.min!"
|
|
66
|
+
[nzMax]="f.number!.max!"
|
|
67
|
+
[nzStep]="f.number!.step!"
|
|
68
|
+
[nzPrecision]="f.number!.precision"
|
|
69
|
+
[nzPlaceHolder]="f.placeholder!"
|
|
70
|
+
class="width-100"
|
|
71
|
+
></nz-input-number>
|
|
72
|
+
</div>
|
|
73
|
+
<div *ngSwitchCase="'date'" class="p-sm st__filter-date">
|
|
74
|
+
<nz-date-picker
|
|
75
|
+
*ngIf="!f.date!.range"
|
|
76
|
+
nzInline
|
|
77
|
+
[nzMode]="f.date!.mode"
|
|
78
|
+
[(ngModel)]="f.menus![0]!.value"
|
|
79
|
+
(ngModelChange)="n.emit($event)"
|
|
80
|
+
[nzShowNow]="f.date!.showNow"
|
|
81
|
+
[nzShowToday]="f.date!.showToday"
|
|
82
|
+
[nzDisabledDate]="f.date!.disabledDate"
|
|
83
|
+
[nzDisabledTime]="f.date!.disabledTime"
|
|
84
|
+
></nz-date-picker>
|
|
85
|
+
<nz-range-picker
|
|
86
|
+
*ngIf="f.date!.range"
|
|
87
|
+
nzInline
|
|
88
|
+
[nzMode]="f.date!.mode"
|
|
89
|
+
[(ngModel)]="f.menus![0]!.value"
|
|
90
|
+
(ngModelChange)="n.emit($event)"
|
|
91
|
+
[nzShowNow]="f.date!.showNow"
|
|
92
|
+
[nzShowToday]="f.date!.showToday"
|
|
93
|
+
[nzDisabledDate]="f.date!.disabledDate"
|
|
94
|
+
[nzDisabledTime]="f.date!.disabledTime"
|
|
95
|
+
></nz-range-picker>
|
|
96
|
+
</div>
|
|
97
|
+
<div *ngSwitchCase="'time'" class="p-sm st__filter-time"> </div>
|
|
98
|
+
<div *ngSwitchCase="'custom'" class="st__filter-custom">
|
|
99
|
+
<ng-template
|
|
100
|
+
[ngTemplateOutlet]="f.custom!"
|
|
101
|
+
[ngTemplateOutletContext]="{ $implicit: f, col: col }"
|
|
102
|
+
></ng-template>
|
|
103
|
+
</div>
|
|
104
|
+
<ul *ngSwitchDefault nz-menu>
|
|
105
|
+
<ng-container *ngIf="f.multiple">
|
|
106
|
+
<li nz-menu-item *ngFor="let filter of f.menus">
|
|
107
|
+
<label nz-checkbox [(ngModel)]="filter.checked" (ngModelChange)="checkboxChange()">
|
|
108
|
+
{{ filter.text }}
|
|
109
|
+
</label>
|
|
110
|
+
</li>
|
|
111
|
+
</ng-container>
|
|
112
|
+
<ng-container *ngIf="!f.multiple">
|
|
113
|
+
<li nz-menu-item *ngFor="let filter of f.menus">
|
|
114
|
+
<label nz-radio [ngModel]="filter.checked" (ngModelChange)="radioChange(filter)">
|
|
115
|
+
{{ filter.text }}
|
|
116
|
+
</label>
|
|
117
|
+
</li>
|
|
118
|
+
</ng-container>
|
|
119
|
+
</ul>
|
|
120
|
+
</ng-container>
|
|
121
|
+
<div *ngIf="f.showOPArea" class="ant-table-filter-dropdown-btns">
|
|
122
|
+
<a class="ant-table-filter-dropdown-link confirm" (click)="visible = false">
|
|
123
|
+
<span (click)="confirm()">{{ f.confirmText || locale.filterConfirm }}</span>
|
|
124
|
+
</a>
|
|
125
|
+
<a class="ant-table-filter-dropdown-link clear" (click)="visible = false">
|
|
126
|
+
<span (click)="reset()">{{ f.clearText || locale.filterReset }}</span>
|
|
127
|
+
</a>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</nz-dropdown-menu>
|
|
131
|
+
`,
|
|
132
|
+
host: {
|
|
133
|
+
'[class.ant-table-filter-trigger-container]': `true`,
|
|
134
|
+
'[class.st__filter]': `true`,
|
|
135
|
+
'[class.ant-table-filter-trigger-container-open]': `visible`
|
|
136
|
+
},
|
|
137
|
+
preserveWhitespaces: false,
|
|
138
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
139
|
+
encapsulation: ViewEncapsulation.None
|
|
140
|
+
},] }
|
|
141
|
+
];
|
|
142
|
+
STFilterComponent.propDecorators = {
|
|
143
|
+
col: [{ type: Input }],
|
|
144
|
+
locale: [{ type: Input }],
|
|
145
|
+
f: [{ type: Input }],
|
|
146
|
+
n: [{ type: Output }],
|
|
147
|
+
handle: [{ type: Output }]
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FiYy9zdC9zdC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFvSG5ILE1BQU0sT0FBTyxpQkFBaUI7SUE3RzlCO1FBOEdFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFUCxXQUFNLEdBQWUsRUFBRSxDQUFDO1FBRWQsTUFBQyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUEwQjFELENBQUM7SUF6QkMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWtCO1FBQ3JCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYzs7UUFDWixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSywwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXdCO1FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7WUE1SUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpR1Q7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLDRDQUE0QyxFQUFFLE1BQU07b0JBQ3BELG9CQUFvQixFQUFFLE1BQU07b0JBQzVCLGlEQUFpRCxFQUFFLFNBQVM7aUJBQzdEO2dCQUNELG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O2tCQUdFLEtBQUs7cUJBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLE1BQU07cUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTG9jYWxlRGF0YSB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5cbmltcG9ydCB7IFNUQ29sdW1uRmlsdGVyLCBTVENvbHVtbkZpbHRlck1lbnUsIFNUSWNvbiB9IGZyb20gJy4vc3QuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBfU1RDb2x1bW4gfSBmcm9tICcuL3N0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3QtZmlsdGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJhbnQtdGFibGUtZmlsdGVyLXRyaWdnZXJcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ2aXNpYmxlIHx8IGYuZGVmYXVsdFwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgW256RHJvcGRvd25NZW51XT1cImZpbHRlck1lbnVcIlxuICAgICAgbnpUcmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgW256Q2xpY2tIaWRlXT1cImZhbHNlXCJcbiAgICAgIFsobnpWaXNpYmxlKV09XCJ2aXNpYmxlXCJcbiAgICAgIG56T3ZlcmxheUNsYXNzTmFtZT1cInN0X19maWx0ZXItd3JhcFwiXG4gICAgICAoY2xpY2spPVwic2hvdygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aSBuei1pY29uIFtuelR5cGVdPVwiaWNvbi50eXBlXCIgW256VGhlbWVdPVwiaWNvbi50aGVtZSFcIj48L2k+XG4gICAgPC9zcGFuPlxuICAgIDxuei1kcm9wZG93bi1tZW51ICNmaWx0ZXJNZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbnQtdGFibGUtZmlsdGVyLWRyb3Bkb3duXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImYudHlwZVwiPlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidrZXl3b3JkJ1wiIGNsYXNzPVwic3RfX2ZpbHRlci1rZXl3b3JkXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBuei1pbnB1dFxuICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJmLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmLm1lbnVzIVswXSEudmFsdWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJuLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjb25maXJtKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiIGNsYXNzPVwicC1zbSBzdF9fZmlsdGVyLW51bWJlclwiPlxuICAgICAgICAgICAgPG56LWlucHV0LW51bWJlclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImYubWVudXMhWzBdIS52YWx1ZVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm4uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW256TWluXT1cImYubnVtYmVyIS5taW4hXCJcbiAgICAgICAgICAgICAgW256TWF4XT1cImYubnVtYmVyIS5tYXghXCJcbiAgICAgICAgICAgICAgW256U3RlcF09XCJmLm51bWJlciEuc3RlcCFcIlxuICAgICAgICAgICAgICBbbnpQcmVjaXNpb25dPVwiZi5udW1iZXIhLnByZWNpc2lvblwiXG4gICAgICAgICAgICAgIFtuelBsYWNlSG9sZGVyXT1cImYucGxhY2Vob2xkZXIhXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3aWR0aC0xMDBcIlxuICAgICAgICAgICAgPjwvbnotaW5wdXQtbnVtYmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiIGNsYXNzPVwicC1zbSBzdF9fZmlsdGVyLWRhdGVcIj5cbiAgICAgICAgICAgIDxuei1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAqbmdJZj1cIiFmLmRhdGUhLnJhbmdlXCJcbiAgICAgICAgICAgICAgbnpJbmxpbmVcbiAgICAgICAgICAgICAgW256TW9kZV09XCJmLmRhdGUhLm1vZGVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImYubWVudXMhWzBdIS52YWx1ZVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm4uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW256U2hvd05vd109XCJmLmRhdGUhLnNob3dOb3dcIlxuICAgICAgICAgICAgICBbbnpTaG93VG9kYXldPVwiZi5kYXRlIS5zaG93VG9kYXlcIlxuICAgICAgICAgICAgICBbbnpEaXNhYmxlZERhdGVdPVwiZi5kYXRlIS5kaXNhYmxlZERhdGVcIlxuICAgICAgICAgICAgICBbbnpEaXNhYmxlZFRpbWVdPVwiZi5kYXRlIS5kaXNhYmxlZFRpbWVcIlxuICAgICAgICAgICAgPjwvbnotZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8bnotcmFuZ2UtcGlja2VyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZi5kYXRlIS5yYW5nZVwiXG4gICAgICAgICAgICAgIG56SW5saW5lXG4gICAgICAgICAgICAgIFtuek1vZGVdPVwiZi5kYXRlIS5tb2RlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmLm1lbnVzIVswXSEudmFsdWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJuLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtuelNob3dOb3ddPVwiZi5kYXRlIS5zaG93Tm93XCJcbiAgICAgICAgICAgICAgW256U2hvd1RvZGF5XT1cImYuZGF0ZSEuc2hvd1RvZGF5XCJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWREYXRlXT1cImYuZGF0ZSEuZGlzYWJsZWREYXRlXCJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWRUaW1lXT1cImYuZGF0ZSEuZGlzYWJsZWRUaW1lXCJcbiAgICAgICAgICAgID48L256LXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIiBjbGFzcz1cInAtc20gc3RfX2ZpbHRlci10aW1lXCI+IDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidjdXN0b20nXCIgY2xhc3M9XCJzdF9fZmlsdGVyLWN1c3RvbVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImYuY3VzdG9tIVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZiwgY29sOiBjb2wgfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dWwgKm5nU3dpdGNoRGVmYXVsdCBuei1tZW51PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImYubXVsdGlwbGVcIj5cbiAgICAgICAgICAgICAgPGxpIG56LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGYubWVudXNcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgbnotY2hlY2tib3ggWyhuZ01vZGVsKV09XCJmaWx0ZXIuY2hlY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrYm94Q2hhbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZpbHRlci50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmLm11bHRpcGxlXCI+XG4gICAgICAgICAgICAgIDxsaSBuei1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmLm1lbnVzXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIG56LXJhZGlvIFtuZ01vZGVsXT1cImZpbHRlci5jaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwicmFkaW9DaGFuZ2UoZmlsdGVyKVwiPlxuICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLnRleHQgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJmLnNob3dPUEFyZWFcIiBjbGFzcz1cImFudC10YWJsZS1maWx0ZXItZHJvcGRvd24tYnRuc1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiYW50LXRhYmxlLWZpbHRlci1kcm9wZG93bi1saW5rIGNvbmZpcm1cIiAoY2xpY2spPVwidmlzaWJsZSA9IGZhbHNlXCI+XG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiY29uZmlybSgpXCI+e3sgZi5jb25maXJtVGV4dCB8fCBsb2NhbGUuZmlsdGVyQ29uZmlybSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGEgY2xhc3M9XCJhbnQtdGFibGUtZmlsdGVyLWRyb3Bkb3duLWxpbmsgY2xlYXJcIiAoY2xpY2spPVwidmlzaWJsZSA9IGZhbHNlXCI+XG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVzZXQoKVwiPnt7IGYuY2xlYXJUZXh0IHx8IGxvY2FsZS5maWx0ZXJSZXNldCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uei1kcm9wZG93bi1tZW51PlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hbnQtdGFibGUtZmlsdGVyLXRyaWdnZXItY29udGFpbmVyXSc6IGB0cnVlYCxcbiAgICAnW2NsYXNzLnN0X19maWx0ZXJdJzogYHRydWVgLFxuICAgICdbY2xhc3MuYW50LXRhYmxlLWZpbHRlci10cmlnZ2VyLWNvbnRhaW5lci1vcGVuXSc6IGB2aXNpYmxlYFxuICB9LFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU1RGaWx0ZXJDb21wb25lbnQge1xuICB2aXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbDogX1NUQ29sdW1uO1xuICBASW5wdXQoKSBsb2NhbGU6IExvY2FsZURhdGEgPSB7fTtcbiAgQElucHV0KCkgZjogU1RDb2x1bW5GaWx0ZXI7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgaGFuZGxlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBnZXQgaWNvbigpOiBTVEljb24ge1xuICAgIHJldHVybiB0aGlzLmYuaWNvbiBhcyBTVEljb247XG4gIH1cblxuICBzaG93KCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGNoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMubi5lbWl0KHRoaXMuZi5tZW51cz8uZmlsdGVyKHcgPT4gdy5jaGVja2VkKSk7XG4gIH1cblxuICByYWRpb0NoYW5nZShpdGVtOiBTVENvbHVtbkZpbHRlck1lbnUpOiB2b2lkIHtcbiAgICB0aGlzLmYubWVudXMhLmZvckVhY2goaSA9PiAoaS5jaGVja2VkID0gZmFsc2UpKTtcbiAgICBpdGVtLmNoZWNrZWQgPSAhaXRlbS5jaGVja2VkO1xuICAgIHRoaXMubi5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgY29uZmlybSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZS5lbWl0KHRydWUpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGUuZW1pdChmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Host, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { filter } from 'rxjs/operators';
|
|
4
|
+
import { DrawerHelper, ModalHelper } from '@delon/theme';
|
|
5
|
+
import { deepMergeKey } from '@delon/util/other';
|
|
6
|
+
import { STComponent } from '.';
|
|
7
|
+
export class STTdComponent {
|
|
8
|
+
constructor(stComp, router, modalHelper, drawerHelper) {
|
|
9
|
+
this.stComp = stComp;
|
|
10
|
+
this.router = router;
|
|
11
|
+
this.modalHelper = modalHelper;
|
|
12
|
+
this.drawerHelper = drawerHelper;
|
|
13
|
+
this.n = new EventEmitter();
|
|
14
|
+
}
|
|
15
|
+
get routerState() {
|
|
16
|
+
const { pi, ps, total } = this.stComp;
|
|
17
|
+
return { pi, ps, total };
|
|
18
|
+
}
|
|
19
|
+
report(type) {
|
|
20
|
+
this.n.emit({ type, item: this.i, col: this.c });
|
|
21
|
+
}
|
|
22
|
+
_checkbox(value) {
|
|
23
|
+
this.i.checked = value;
|
|
24
|
+
this.report('checkbox');
|
|
25
|
+
}
|
|
26
|
+
_radio(checked) {
|
|
27
|
+
this.data.filter(w => !w.disabled).forEach(i => (i.checked = false));
|
|
28
|
+
this.i.checked = checked;
|
|
29
|
+
this.report('radio');
|
|
30
|
+
}
|
|
31
|
+
_link(e) {
|
|
32
|
+
this._stopPropagation(e);
|
|
33
|
+
const res = this.c.click(this.i, this.stComp);
|
|
34
|
+
if (typeof res === 'string') {
|
|
35
|
+
this.router.navigateByUrl(res, { state: this.routerState });
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
_stopPropagation(ev) {
|
|
40
|
+
ev.preventDefault();
|
|
41
|
+
ev.stopPropagation();
|
|
42
|
+
}
|
|
43
|
+
_btn(btn, ev) {
|
|
44
|
+
if (ev) {
|
|
45
|
+
ev.stopPropagation();
|
|
46
|
+
}
|
|
47
|
+
const record = this.i;
|
|
48
|
+
if (btn.type === 'modal' || btn.type === 'static') {
|
|
49
|
+
const { modal } = btn;
|
|
50
|
+
const obj = { [modal.paramsName]: record };
|
|
51
|
+
this.modalHelper[btn.type === 'modal' ? 'create' : 'createStatic'](modal.component, Object.assign(Object.assign({}, obj), (modal.params && modal.params(record))), deepMergeKey({}, true, this.stComp['cog'].modal, modal))
|
|
52
|
+
.pipe(filter(w => typeof w !== 'undefined'))
|
|
53
|
+
.subscribe((res) => this.btnCallback(record, btn, res));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
else if (btn.type === 'drawer') {
|
|
57
|
+
const { drawer } = btn;
|
|
58
|
+
const obj = { [drawer.paramsName]: record };
|
|
59
|
+
this.drawerHelper
|
|
60
|
+
.create(drawer.title, drawer.component, Object.assign(Object.assign({}, obj), (drawer.params && drawer.params(record))), deepMergeKey({}, true, this.stComp['cog'].drawer, drawer))
|
|
61
|
+
.pipe(filter(w => typeof w !== 'undefined'))
|
|
62
|
+
.subscribe(res => this.btnCallback(record, btn, res));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
else if (btn.type === 'link') {
|
|
66
|
+
const clickRes = this.btnCallback(record, btn);
|
|
67
|
+
if (typeof clickRes === 'string') {
|
|
68
|
+
this.router.navigateByUrl(clickRes, { state: this.routerState });
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.btnCallback(record, btn);
|
|
73
|
+
}
|
|
74
|
+
btnCallback(record, btn, modal) {
|
|
75
|
+
if (!btn.click)
|
|
76
|
+
return;
|
|
77
|
+
if (typeof btn.click === 'string') {
|
|
78
|
+
switch (btn.click) {
|
|
79
|
+
case 'load':
|
|
80
|
+
this.stComp.load();
|
|
81
|
+
break;
|
|
82
|
+
case 'reload':
|
|
83
|
+
this.stComp.reload();
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
return btn.click(record, modal, this.stComp);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
STTdComponent.decorators = [
|
|
93
|
+
{ type: Component, args: [{
|
|
94
|
+
selector: 'st-td',
|
|
95
|
+
template: `
|
|
96
|
+
<ng-template #btnTpl let-i>
|
|
97
|
+
<ng-container *ngIf="!i.tooltip">
|
|
98
|
+
<ng-template [ngTemplateOutlet]="btnItemTpl" [ngTemplateOutletContext]="{ $implicit: i }"></ng-template>
|
|
99
|
+
</ng-container>
|
|
100
|
+
<span *ngIf="i.tooltip" nz-tooltip [nzTooltipTitle]="i.tooltip">
|
|
101
|
+
<ng-template [ngTemplateOutlet]="btnItemTpl" [ngTemplateOutletContext]="{ $implicit: i }"></ng-template>
|
|
102
|
+
</span>
|
|
103
|
+
</ng-template>
|
|
104
|
+
<ng-template #btnItemTpl let-i>
|
|
105
|
+
<a
|
|
106
|
+
*ngIf="i.pop"
|
|
107
|
+
nz-popconfirm
|
|
108
|
+
[nzPopconfirmTitle]="i.pop.title"
|
|
109
|
+
[nzIcon]="i.pop.icon"
|
|
110
|
+
[nzCondition]="i.pop.condition(i)"
|
|
111
|
+
[nzCancelText]="i.pop.cancelText"
|
|
112
|
+
[nzOkText]="i.pop.okText"
|
|
113
|
+
[nzOkType]="i.pop.okType"
|
|
114
|
+
(nzOnConfirm)="_btn(i)"
|
|
115
|
+
class="st__btn-text"
|
|
116
|
+
[ngClass]="i.className"
|
|
117
|
+
(click)="_stopPropagation($event)"
|
|
118
|
+
>
|
|
119
|
+
<ng-template [ngTemplateOutlet]="btnTextTpl" [ngTemplateOutletContext]="{ $implicit: i }"></ng-template>
|
|
120
|
+
</a>
|
|
121
|
+
<a *ngIf="!i.pop" (click)="_btn(i, $event)" class="st__btn-text" [ngClass]="i.className">
|
|
122
|
+
<ng-template [ngTemplateOutlet]="btnTextTpl" [ngTemplateOutletContext]="{ $implicit: i }"></ng-template>
|
|
123
|
+
</a>
|
|
124
|
+
</ng-template>
|
|
125
|
+
<ng-template #btnTextTpl let-i>
|
|
126
|
+
<ng-container *ngIf="i.icon">
|
|
127
|
+
<i
|
|
128
|
+
*ngIf="!i.icon.iconfont"
|
|
129
|
+
nz-icon
|
|
130
|
+
[nzType]="i.icon.type"
|
|
131
|
+
[nzTheme]="i.icon.theme"
|
|
132
|
+
[nzSpin]="i.icon.spin"
|
|
133
|
+
[nzTwotoneColor]="i.icon.twoToneColor"
|
|
134
|
+
></i>
|
|
135
|
+
<i *ngIf="i.icon.iconfont" nz-icon [nzIconfont]="i.icon.iconfont"></i>
|
|
136
|
+
</ng-container>
|
|
137
|
+
<span [innerHTML]="i._text" [ngClass]="{ 'pl-xs': i.icon }"></span>
|
|
138
|
+
</ng-template>
|
|
139
|
+
<ng-template
|
|
140
|
+
#render
|
|
141
|
+
[ngTemplateOutlet]="c.__render!"
|
|
142
|
+
[ngTemplateOutletContext]="{ $implicit: i, index: index, column: c }"
|
|
143
|
+
></ng-template>
|
|
144
|
+
<ng-container *ngIf="!c.__render; else render">
|
|
145
|
+
<ng-container [ngSwitch]="c.type">
|
|
146
|
+
<label
|
|
147
|
+
*ngSwitchCase="'checkbox'"
|
|
148
|
+
nz-checkbox
|
|
149
|
+
[nzDisabled]="i.disabled"
|
|
150
|
+
[ngModel]="i.checked"
|
|
151
|
+
(ngModelChange)="_checkbox($event)"
|
|
152
|
+
></label>
|
|
153
|
+
<label
|
|
154
|
+
*ngSwitchCase="'radio'"
|
|
155
|
+
nz-radio
|
|
156
|
+
[nzDisabled]="i.disabled"
|
|
157
|
+
[ngModel]="i.checked"
|
|
158
|
+
(ngModelChange)="_radio($event)"
|
|
159
|
+
></label>
|
|
160
|
+
<a
|
|
161
|
+
*ngSwitchCase="'link'"
|
|
162
|
+
(click)="_link($event)"
|
|
163
|
+
[innerHTML]="i._values[cIdx]._text"
|
|
164
|
+
[attr.title]="i._values[cIdx].text"
|
|
165
|
+
></a>
|
|
166
|
+
<ng-container *ngIf="i._values[cIdx].text">
|
|
167
|
+
<nz-tag *ngSwitchCase="'tag'" [nzColor]="i._values[cIdx].color">
|
|
168
|
+
<span [innerHTML]="i._values[cIdx]._text"></span>
|
|
169
|
+
</nz-tag>
|
|
170
|
+
<nz-badge
|
|
171
|
+
*ngSwitchCase="'badge'"
|
|
172
|
+
[nzStatus]="i._values[cIdx].color"
|
|
173
|
+
[nzText]="i._values[cIdx].text"
|
|
174
|
+
></nz-badge>
|
|
175
|
+
</ng-container>
|
|
176
|
+
<ng-template *ngSwitchCase="'widget'" st-widget-host [record]="i" [column]="c"></ng-template
|
|
177
|
+
><ng-container *ngSwitchDefault>
|
|
178
|
+
<span
|
|
179
|
+
*ngIf="c.safeType !== 'text'"
|
|
180
|
+
[innerHTML]="i._values[cIdx]._text"
|
|
181
|
+
[attr.title]="c._isTruncate ? i._values[cIdx].text : null"
|
|
182
|
+
></span>
|
|
183
|
+
<span
|
|
184
|
+
*ngIf="c.safeType === 'text'"
|
|
185
|
+
[innerText]="i._values[cIdx]._text"
|
|
186
|
+
[attr.title]="c._isTruncate ? i._values[cIdx].text : null"
|
|
187
|
+
></span>
|
|
188
|
+
</ng-container>
|
|
189
|
+
</ng-container>
|
|
190
|
+
<ng-container *ngFor="let btn of i._values[cIdx].buttons; let last = last">
|
|
191
|
+
<a *ngIf="btn.children!.length > 0" nz-dropdown [nzDropdownMenu]="btnMenu" nzOverlayClassName="st__btn-sub">
|
|
192
|
+
<span [innerHTML]="btn._text"></span>
|
|
193
|
+
<i nz-icon nzType="down"></i>
|
|
194
|
+
</a>
|
|
195
|
+
<nz-dropdown-menu #btnMenu="nzDropdownMenu">
|
|
196
|
+
<ul nz-menu>
|
|
197
|
+
<ng-container *ngFor="let subBtn of btn.children!">
|
|
198
|
+
<li *ngIf="subBtn.type !== 'divider'" nz-menu-item [class.st__btn-disabled]="subBtn._disabled">
|
|
199
|
+
<ng-template [ngTemplateOutlet]="btnTpl" [ngTemplateOutletContext]="{ $implicit: subBtn }">
|
|
200
|
+
</ng-template>
|
|
201
|
+
</li>
|
|
202
|
+
<li *ngIf="subBtn.type === 'divider'" nz-menu-divider></li>
|
|
203
|
+
</ng-container>
|
|
204
|
+
</ul>
|
|
205
|
+
</nz-dropdown-menu>
|
|
206
|
+
<span *ngIf="btn.children!.length === 0" [class.st__btn-disabled]="btn._disabled">
|
|
207
|
+
<ng-template [ngTemplateOutlet]="btnTpl" [ngTemplateOutletContext]="{ $implicit: btn }"> </ng-template>
|
|
208
|
+
</span>
|
|
209
|
+
<nz-divider *ngIf="!last" nzType="vertical"></nz-divider>
|
|
210
|
+
</ng-container>
|
|
211
|
+
</ng-container>
|
|
212
|
+
`,
|
|
213
|
+
preserveWhitespaces: false,
|
|
214
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
215
|
+
encapsulation: ViewEncapsulation.None
|
|
216
|
+
},] }
|
|
217
|
+
];
|
|
218
|
+
STTdComponent.ctorParameters = () => [
|
|
219
|
+
{ type: STComponent, decorators: [{ type: Host }] },
|
|
220
|
+
{ type: Router },
|
|
221
|
+
{ type: ModalHelper },
|
|
222
|
+
{ type: DrawerHelper }
|
|
223
|
+
];
|
|
224
|
+
STTdComponent.propDecorators = {
|
|
225
|
+
c: [{ type: Input }],
|
|
226
|
+
cIdx: [{ type: Input }],
|
|
227
|
+
data: [{ type: Input }],
|
|
228
|
+
i: [{ type: Input }],
|
|
229
|
+
index: [{ type: Input }],
|
|
230
|
+
n: [{ type: Output }]
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtdGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWJjL3N0L3N0LXRkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osSUFBSSxFQUNKLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFnSWhDLE1BQU0sT0FBTyxhQUFhO0lBYXhCLFlBQ2tCLE1BQW1CLEVBQzNCLE1BQWMsRUFDZCxXQUF3QixFQUN4QixZQUEwQjtRQUhsQixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVhqQixNQUFDLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQVlwRCxDQUFDO0lBVkosSUFBWSxXQUFXO1FBQ3JCLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQVNPLE1BQU0sQ0FBQyxJQUFxQjtRQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FB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QUksT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNqQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLEtBQUssTUFBTTtvQkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNuQixNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQixNQUFNO2FBQ1Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQzs7O1lBbE9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxSFQ7Z0JBQ0QsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEvSFEsV0FBVyx1QkE4SWYsSUFBSTtZQXJKQSxNQUFNO1lBR1EsV0FBVztZQUF6QixZQUFZOzs7Z0JBcUlsQixLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSztnQkFDTCxLQUFLO29CQUNMLEtBQUs7Z0JBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEcmF3ZXJIZWxwZXIsIE1vZGFsSGVscGVyIH0gZnJvbSAnQGRlbG9uL3RoZW1lJztcbmltcG9ydCB7IGRlZXBNZXJnZUtleSB9IGZyb20gJ0BkZWxvbi91dGlsL290aGVyJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IFNUQ29tcG9uZW50IH0gZnJvbSAnLic7XG5pbXBvcnQgeyBTVENvbHVtbkJ1dHRvbiwgU1REYXRhIH0gZnJvbSAnLi9zdC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IF9TVENvbHVtbiwgX1NUVGROb3RpZnksIF9TVFRkTm90aWZ5VHlwZSB9IGZyb20gJy4vc3QudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdC10ZCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNidG5UcGwgbGV0LWk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWkudG9vbHRpcFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnRuSXRlbVRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpLnRvb2x0aXBcIiBuei10b29sdGlwIFtuelRvb2x0aXBUaXRsZV09XCJpLnRvb2x0aXBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ0bkl0ZW1UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2J0bkl0ZW1UcGwgbGV0LWk+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cImkucG9wXCJcbiAgICAgICAgbnotcG9wY29uZmlybVxuICAgICAgICBbbnpQb3Bjb25maXJtVGl0bGVdPVwiaS5wb3AudGl0bGVcIlxuICAgICAgICBbbnpJY29uXT1cImkucG9wLmljb25cIlxuICAgICAgICBbbnpDb25kaXRpb25dPVwiaS5wb3AuY29uZGl0aW9uKGkpXCJcbiAgICAgICAgW256Q2FuY2VsVGV4dF09XCJpLnBvcC5jYW5jZWxUZXh0XCJcbiAgICAgICAgW256T2tUZXh0XT1cImkucG9wLm9rVGV4dFwiXG4gICAgICAgIFtuek9rVHlwZV09XCJpLnBvcC5va1R5cGVcIlxuICAgICAgICAobnpPbkNvbmZpcm0pPVwiX2J0bihpKVwiXG4gICAgICAgIGNsYXNzPVwic3RfX2J0bi10ZXh0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaS5jbGFzc05hbWVcIlxuICAgICAgICAoY2xpY2spPVwiX3N0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ0blRleHRUcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2E+XG4gICAgICA8YSAqbmdJZj1cIiFpLnBvcFwiIChjbGljayk9XCJfYnRuKGksICRldmVudClcIiBjbGFzcz1cInN0X19idG4tdGV4dFwiIFtuZ0NsYXNzXT1cImkuY2xhc3NOYW1lXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJidG5UZXh0VHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNidG5UZXh0VHBsIGxldC1pPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkuaWNvblwiPlxuICAgICAgICA8aVxuICAgICAgICAgICpuZ0lmPVwiIWkuaWNvbi5pY29uZm9udFwiXG4gICAgICAgICAgbnotaWNvblxuICAgICAgICAgIFtuelR5cGVdPVwiaS5pY29uLnR5cGVcIlxuICAgICAgICAgIFtuelRoZW1lXT1cImkuaWNvbi50aGVtZVwiXG4gICAgICAgICAgW256U3Bpbl09XCJpLmljb24uc3BpblwiXG4gICAgICAgICAgW256VHdvdG9uZUNvbG9yXT1cImkuaWNvbi50d29Ub25lQ29sb3JcIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8aSAqbmdJZj1cImkuaWNvbi5pY29uZm9udFwiIG56LWljb24gW256SWNvbmZvbnRdPVwiaS5pY29uLmljb25mb250XCI+PC9pPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImkuX3RleHRcIiBbbmdDbGFzc109XCJ7ICdwbC14cyc6IGkuaWNvbiB9XCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAjcmVuZGVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLl9fcmVuZGVyIVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGksIGluZGV4OiBpbmRleCwgY29sdW1uOiBjIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYy5fX3JlbmRlcjsgZWxzZSByZW5kZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImMudHlwZVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiXG4gICAgICAgICAgbnotY2hlY2tib3hcbiAgICAgICAgICBbbnpEaXNhYmxlZF09XCJpLmRpc2FibGVkXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJpLmNoZWNrZWRcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9jaGVja2JveCgkZXZlbnQpXCJcbiAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCJcbiAgICAgICAgICBuei1yYWRpb1xuICAgICAgICAgIFtuekRpc2FibGVkXT1cImkuZGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cImkuY2hlY2tlZFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3JhZGlvKCRldmVudClcIlxuICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAoY2xpY2spPVwiX2xpbmsoJGV2ZW50KVwiXG4gICAgICAgICAgW2lubmVySFRNTF09XCJpLl92YWx1ZXNbY0lkeF0uX3RleHRcIlxuICAgICAgICAgIFthdHRyLnRpdGxlXT1cImkuX3ZhbHVlc1tjSWR4XS50ZXh0XCJcbiAgICAgICAgPjwvYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkuX3ZhbHVlc1tjSWR4XS50ZXh0XCI+XG4gICAgICAgICAgPG56LXRhZyAqbmdTd2l0Y2hDYXNlPVwiJ3RhZydcIiBbbnpDb2xvcl09XCJpLl92YWx1ZXNbY0lkeF0uY29sb3JcIj5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaS5fdmFsdWVzW2NJZHhdLl90ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgIDwvbnotdGFnPlxuICAgICAgICAgIDxuei1iYWRnZVxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidiYWRnZSdcIlxuICAgICAgICAgICAgW256U3RhdHVzXT1cImkuX3ZhbHVlc1tjSWR4XS5jb2xvclwiXG4gICAgICAgICAgICBbbnpUZXh0XT1cImkuX3ZhbHVlc1tjSWR4XS50ZXh0XCJcbiAgICAgICAgICA+PC9uei1iYWRnZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdTd2l0Y2hDYXNlPVwiJ3dpZGdldCdcIiBzdC13aWRnZXQtaG9zdCBbcmVjb3JkXT1cImlcIiBbY29sdW1uXT1cImNcIj48L25nLXRlbXBsYXRlXG4gICAgICAgID48bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiYy5zYWZlVHlwZSAhPT0gJ3RleHQnXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaS5fdmFsdWVzW2NJZHhdLl90ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImMuX2lzVHJ1bmNhdGUgPyBpLl92YWx1ZXNbY0lkeF0udGV4dCA6IG51bGxcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiYy5zYWZlVHlwZSA9PT0gJ3RleHQnXCJcbiAgICAgICAgICAgIFtpbm5lclRleHRdPVwiaS5fdmFsdWVzW2NJZHhdLl90ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImMuX2lzVHJ1bmNhdGUgPyBpLl92YWx1ZXNbY0lkeF0udGV4dCA6IG51bGxcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgaS5fdmFsdWVzW2NJZHhdLmJ1dHRvbnM7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICA8YSAqbmdJZj1cImJ0bi5jaGlsZHJlbiEubGVuZ3RoID4gMFwiIG56LWRyb3Bkb3duIFtuekRyb3Bkb3duTWVudV09XCJidG5NZW51XCIgbnpPdmVybGF5Q2xhc3NOYW1lPVwic3RfX2J0bi1zdWJcIj5cbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImJ0bi5fdGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImRvd25cIj48L2k+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPG56LWRyb3Bkb3duLW1lbnUgI2J0bk1lbnU9XCJuekRyb3Bkb3duTWVudVwiPlxuICAgICAgICAgIDx1bCBuei1tZW51PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViQnRuIG9mIGJ0bi5jaGlsZHJlbiFcIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic3ViQnRuLnR5cGUgIT09ICdkaXZpZGVyJ1wiIG56LW1lbnUtaXRlbSBbY2xhc3Muc3RfX2J0bi1kaXNhYmxlZF09XCJzdWJCdG4uX2Rpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ0blRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogc3ViQnRuIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzdWJCdG4udHlwZSA9PT0gJ2RpdmlkZXInXCIgbnotbWVudS1kaXZpZGVyPjwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYnRuLmNoaWxkcmVuIS5sZW5ndGggPT09IDBcIiBbY2xhc3Muc3RfX2J0bi1kaXNhYmxlZF09XCJidG4uX2Rpc2FibGVkXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ0blRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogYnRuIH1cIj4gPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bnotZGl2aWRlciAqbmdJZj1cIiFsYXN0XCIgbnpUeXBlPVwidmVydGljYWxcIj48L256LWRpdmlkZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNUVGRDb21wb25lbnQge1xuICBASW5wdXQoKSBjOiBfU1RDb2x1bW47XG4gIEBJbnB1dCgpIGNJZHg6IG51bWJlcjtcbiAgQElucHV0KCkgZGF0YTogU1REYXRhW107XG4gIEBJbnB1dCgpIGk6IFNURGF0YTtcbiAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG4gPSBuZXcgRXZlbnRFbWl0dGVyPF9TVFRkTm90aWZ5PigpO1xuXG4gIHByaXZhdGUgZ2V0IHJvdXRlclN0YXRlKCk6IHsgcGk6IG51bWJlcjsgcHM6IG51bWJlcjsgdG90YWw6IG51bWJlciB9IHtcbiAgICBjb25zdCB7IHBpLCBwcywgdG90YWwgfSA9IHRoaXMuc3RDb21wO1xuICAgIHJldHVybiB7IHBpLCBwcywgdG90YWwgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgcHJpdmF0ZSBzdENvbXA6IFNUQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBtb2RhbEhlbHBlcjogTW9kYWxIZWxwZXIsXG4gICAgcHJpdmF0ZSBkcmF3ZXJIZWxwZXI6IERyYXdlckhlbHBlclxuICApIHt9XG5cbiAgcHJpdmF0ZSByZXBvcnQodHlwZTogX1NUVGROb3RpZnlUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5uLmVtaXQoeyB0eXBlLCBpdGVtOiB0aGlzLmksIGNvbDogdGhpcy5jIH0pO1xuICB9XG5cbiAgX2NoZWNrYm94KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnJlcG9ydCgnY2hlY2tib3gnKTtcbiAgfVxuXG4gIF9yYWRpbyhjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhLmZpbHRlcih3ID0+ICF3LmRpc2FibGVkKS5mb3JFYWNoKGkgPT4gKGkuY2hlY2tlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy5pLmNoZWNrZWQgPSBjaGVja2VkO1xuICAgIHRoaXMucmVwb3J0KCdyYWRpbycpO1xuICB9XG5cbiAgX2xpbmsoZTogRXZlbnQpOiBib29sZWFuIHtcbiAgICB0aGlzLl9zdG9wUHJvcGFnYXRpb24oZSk7XG4gICAgY29uc3QgcmVzID0gdGhpcy5jLmNsaWNrISh0aGlzLmksIHRoaXMuc3RDb21wKTtcbiAgICBpZiAodHlwZW9mIHJlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocmVzLCB7IHN0YXRlOiB0aGlzLnJvdXRlclN0YXRlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBfc3RvcFByb3BhZ2F0aW9uKGV2OiBFdmVudCk6IHZvaWQge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBfYnRuKGJ0bjogU1RDb2x1bW5CdXR0b24sIGV2PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXYpIHtcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLmk7XG4gICAgaWYgKGJ0bi50eXBlID09PSAnbW9kYWwnIHx8IGJ0bi50eXBlID09PSAnc3RhdGljJykge1xuICAgICAgY29uc3QgeyBtb2RhbCB9ID0gYnRuO1xuICAgICAgY29uc3Qgb2JqID0geyBbbW9kYWwhLnBhcmFtc05hbWUhXTogcmVjb3JkIH07XG4gICAgICAodGhpcy5tb2RhbEhlbHBlcltidG4udHlwZSA9PT0gJ21vZGFsJyA/ICdjcmVhdGUnIDogJ2NyZWF0ZVN0YXRpYyddIGFzIE56U2FmZUFueSkoXG4gICAgICAgIG1vZGFsIS5jb21wb25lbnQsXG4gICAgICAgIHsgLi4ub2JqLCAuLi4obW9kYWwhLnBhcmFtcyAmJiBtb2RhbCEucGFyYW1zIShyZWNvcmQpKSB9LFxuICAgICAgICBkZWVwTWVyZ2VLZXkoe30sIHRydWUsIHRoaXMuc3RDb21wWydjb2cnXS5tb2RhbCwgbW9kYWwpXG4gICAgICApXG4gICAgICAgIC5waXBlKGZpbHRlcih3ID0+IHR5cGVvZiB3ICE9PSAndW5kZWZpbmVkJykpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogTnpTYWZlQW55KSA9PiB0aGlzLmJ0bkNhbGxiYWNrKHJlY29yZCwgYnRuLCByZXMpKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGJ0bi50eXBlID09PSAnZHJhd2VyJykge1xuICAgICAgY29uc3QgeyBkcmF3ZXIgfSA9IGJ0bjtcbiAgICAgIGNvbnN0IG9iaiA9IHsgW2RyYXdlciEucGFyYW1zTmFtZSFdOiByZWNvcmQgfTtcbiAgICAgIHRoaXMuZHJhd2VySGVscGVyXG4gICAgICAgIC5jcmVhdGUoXG4gICAgICAgICAgZHJhd2VyIS50aXRsZSEsXG4gICAgICAgICAgZHJhd2VyIS5jb21wb25lbnQsXG4gICAgICAgICAgeyAuLi5vYmosIC4uLihkcmF3ZXIhLnBhcmFtcyAmJiBkcmF3ZXIhLnBhcmFtcyEocmVjb3JkKSkgfSxcbiAgICAgICAgICBkZWVwTWVyZ2VLZXkoe30sIHRydWUsIHRoaXMuc3RDb21wWydjb2cnXS5kcmF3ZXIsIGRyYXdlcilcbiAgICAgICAgKVxuICAgICAgICAucGlwZShmaWx0ZXIodyA9PiB0eXBlb2YgdyAhPT0gJ3VuZGVmaW5lZCcpKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmJ0bkNhbGxiYWNrKHJlY29yZCwgYnRuLCByZXMpKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGJ0bi50eXBlID09PSAnbGluaycpIHtcbiAgICAgIGNvbnN0IGNsaWNrUmVzID0gdGhpcy5idG5DYWxsYmFjayhyZWNvcmQsIGJ0bik7XG4gICAgICBpZiAodHlwZW9mIGNsaWNrUmVzID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNsaWNrUmVzLCB7IHN0YXRlOiB0aGlzLnJvdXRlclN0YXRlIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmJ0bkNhbGxiYWNrKHJlY29yZCwgYnRuKTtcbiAgfVxuXG4gIHByaXZhdGUgYnRuQ2FsbGJhY2socmVjb3JkOiBTVERhdGEsIGJ0bjogU1RDb2x1bW5CdXR0b24sIG1vZGFsPzogTnpTYWZlQW55KTogTnpTYWZlQW55IHtcbiAgICBpZiAoIWJ0bi5jbGljaykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2YgYnRuLmNsaWNrID09PSAnc3RyaW5nJykge1xuICAgICAgc3dpdGNoIChidG4uY2xpY2spIHtcbiAgICAgICAgY2FzZSAnbG9hZCc6XG4gICAgICAgICAgdGhpcy5zdENvbXAubG9hZCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWxvYWQnOlxuICAgICAgICAgIHRoaXMuc3RDb21wLnJlbG9hZCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnRuLmNsaWNrKHJlY29yZCwgbW9kYWwsIHRoaXMuc3RDb21wKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|