@gipisistemas/ng-core 1.1.2 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- package/assets/styles/colors.scss +5 -1
- package/bundles/gipisistemas-ng-core.umd.js +8416 -7886
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +10 -9
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
- package/core/gipi-components/models/sort.model.d.ts +3 -3
- package/core/utils/array.util.d.ts +2 -2
- package/core/utils/object.util.d.ts +3 -5
- package/esm2015/core/gipi-components/models/sort.model.js +1 -1
- package/esm2015/core/gipi-components/services/abstract-crud.service.js +18 -24
- package/esm2015/core/utils/array.util.js +4 -2
- package/esm2015/core/utils/object.util.js +5 -9
- package/esm2015/gipi-components.js +10 -1
- package/esm2015/shared/components/input/input.component.js +46 -23
- package/esm2015/shared/components/table/table.component.js +1 -1
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +1 -1
- package/esm2015/shared/gipi-components/button/button.component.js +2 -2
- package/esm2015/shared/gipi-components/card/card.component.js +113 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +8 -3
- package/esm2015/shared/gipi-components/empty-state/empty-state.component.js +30 -0
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +7 -4
- package/esm2015/shared/gipi-components/layout-grid/col.directive.js +4 -4
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +2 -2
- package/esm2015/shared/gipi-components/notification/notification.component.js +8 -3
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +35 -3
- package/esm2015/shared/gipi-components/slide-toggle/slide-toggle.component.js +113 -0
- package/esm2015/shared/gipi-components/tabs/shared/dynamic-tab.directive.js +18 -0
- package/esm2015/shared/gipi-components/tabs/shared/tab.model.js +8 -0
- package/esm2015/shared/gipi-components/tabs/tab/tab.component.js +66 -0
- package/esm2015/shared/gipi-components/tabs/tab-group/tab-group.component.js +123 -0
- package/esm2015/shared/gipi-components/textarea/textarea.component.js +298 -0
- package/esm2015/shared/shared.module.js +20 -16
- package/esm2015/shared.js +1 -5
- package/esm5/core/gipi-components/models/sort.model.js +1 -1
- package/esm5/core/gipi-components/services/abstract-crud.service.js +18 -24
- package/esm5/core/utils/array.util.js +4 -3
- package/esm5/core/utils/object.util.js +5 -9
- package/esm5/gipi-components.js +10 -1
- package/esm5/shared/components/input/input.component.js +46 -23
- package/esm5/shared/components/table/table.component.js +1 -1
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +1 -1
- package/esm5/shared/gipi-components/button/button.component.js +2 -2
- package/esm5/shared/gipi-components/card/card.component.js +135 -0
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +8 -3
- package/esm5/shared/gipi-components/empty-state/empty-state.component.js +33 -0
- package/esm5/shared/gipi-components/input-select/input-select.component.js +11 -4
- package/esm5/shared/gipi-components/layout-grid/col.directive.js +4 -4
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +2 -2
- package/esm5/shared/gipi-components/notification/notification.component.js +8 -3
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +35 -3
- package/esm5/shared/gipi-components/slide-toggle/slide-toggle.component.js +127 -0
- package/esm5/shared/gipi-components/tabs/shared/dynamic-tab.directive.js +19 -0
- package/esm5/shared/gipi-components/tabs/shared/tab.model.js +10 -0
- package/esm5/shared/gipi-components/tabs/tab/tab.component.js +67 -0
- package/esm5/shared/gipi-components/tabs/tab-group/tab-group.component.js +131 -0
- package/esm5/shared/gipi-components/textarea/textarea.component.js +352 -0
- package/esm5/shared/shared.module.js +20 -16
- package/esm5/shared.js +1 -5
- package/fesm2015/gipisistemas-ng-core.js +1746 -1305
- package/fesm2015/gipisistemas-ng-core.js.map +1 -1
- package/fesm5/gipisistemas-ng-core.js +8406 -7881
- package/fesm5/gipisistemas-ng-core.js.map +1 -1
- package/gipi-components.d.ts +8 -0
- package/gipisistemas-ng-core.metadata.json +1 -1
- package/package.json +1 -2
- package/shared/components/input/input.component.d.ts +13 -11
- package/shared/components/table/table.component.d.ts +3 -3
- package/shared/gipi-components/card/card.component.d.ts +23 -0
- package/shared/gipi-components/empty-state/empty-state.component.d.ts +5 -0
- package/shared/gipi-components/input-select/input-select.component.d.ts +1 -0
- package/shared/gipi-components/notification/notification.component.d.ts +1 -0
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +7 -0
- package/shared/gipi-components/slide-toggle/slide-toggle.component.d.ts +27 -0
- package/shared/{directives → gipi-components/tabs/shared}/dynamic-tab.directive.d.ts +1 -1
- package/shared/gipi-components/tabs/shared/tab.model.d.ts +12 -0
- package/shared/{components → gipi-components/tabs}/tab/tab.component.d.ts +4 -2
- package/shared/gipi-components/tabs/tab-group/tab-group.component.d.ts +22 -0
- package/shared/gipi-components/textarea/textarea.component.d.ts +68 -0
- package/shared.d.ts +0 -4
- package/esm2015/shared/components/select-button/select-button.component.js +0 -181
- package/esm2015/shared/components/tab/tab.component.js +0 -57
- package/esm2015/shared/components/tab-group/tab-group.component.js +0 -117
- package/esm2015/shared/directives/dynamic-tab.directive.js +0 -18
- package/esm5/shared/components/select-button/select-button.component.js +0 -195
- package/esm5/shared/components/tab/tab.component.js +0 -58
- package/esm5/shared/components/tab-group/tab-group.component.js +0 -125
- package/esm5/shared/directives/dynamic-tab.directive.js +0 -19
- package/shared/components/select-button/select-button.component.d.ts +0 -35
- package/shared/components/tab-group/tab-group.component.d.ts +0 -22
@@ -0,0 +1,135 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnInit } from '@angular/core';
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
+
var nextUniqueId = 0;
|
5
|
+
var GIPICardComponent = /** @class */ (function () {
|
6
|
+
function GIPICardComponent(elementRef, _changeDetectorRef) {
|
7
|
+
this.elementRef = elementRef;
|
8
|
+
this._changeDetectorRef = _changeDetectorRef;
|
9
|
+
this._uniqueId = "gipi-card-" + ++nextUniqueId;
|
10
|
+
this._id = '';
|
11
|
+
this._name = '';
|
12
|
+
this._loading = false;
|
13
|
+
this._shadow = true;
|
14
|
+
this._padding = true;
|
15
|
+
}
|
16
|
+
GIPICardComponent_1 = GIPICardComponent;
|
17
|
+
Object.defineProperty(GIPICardComponent.prototype, "id", {
|
18
|
+
get: function () {
|
19
|
+
return this._id;
|
20
|
+
},
|
21
|
+
set: function (value) {
|
22
|
+
this._id = value || this._uniqueId;
|
23
|
+
},
|
24
|
+
enumerable: false,
|
25
|
+
configurable: true
|
26
|
+
});
|
27
|
+
Object.defineProperty(GIPICardComponent.prototype, "name", {
|
28
|
+
get: function () {
|
29
|
+
return this._name;
|
30
|
+
},
|
31
|
+
set: function (value) {
|
32
|
+
this._name = value || this._uniqueId;
|
33
|
+
},
|
34
|
+
enumerable: false,
|
35
|
+
configurable: true
|
36
|
+
});
|
37
|
+
Object.defineProperty(GIPICardComponent.prototype, "loading", {
|
38
|
+
get: function () {
|
39
|
+
return this._loading;
|
40
|
+
},
|
41
|
+
set: function (value) {
|
42
|
+
if (value !== this.loading) {
|
43
|
+
this._loading = value;
|
44
|
+
this._changeDetectorRef.markForCheck();
|
45
|
+
}
|
46
|
+
},
|
47
|
+
enumerable: false,
|
48
|
+
configurable: true
|
49
|
+
});
|
50
|
+
Object.defineProperty(GIPICardComponent.prototype, "shadow", {
|
51
|
+
get: function () {
|
52
|
+
return this._shadow;
|
53
|
+
},
|
54
|
+
set: function (value) {
|
55
|
+
if (value !== this.shadow) {
|
56
|
+
this._shadow = value;
|
57
|
+
this._changeDetectorRef.markForCheck();
|
58
|
+
}
|
59
|
+
},
|
60
|
+
enumerable: false,
|
61
|
+
configurable: true
|
62
|
+
});
|
63
|
+
Object.defineProperty(GIPICardComponent.prototype, "padding", {
|
64
|
+
get: function () {
|
65
|
+
return this._padding;
|
66
|
+
},
|
67
|
+
set: function (value) {
|
68
|
+
if (value !== this.padding) {
|
69
|
+
this._padding = value;
|
70
|
+
this._changeDetectorRef.markForCheck();
|
71
|
+
}
|
72
|
+
},
|
73
|
+
enumerable: false,
|
74
|
+
configurable: true
|
75
|
+
});
|
76
|
+
GIPICardComponent.prototype.ngOnInit = function () { };
|
77
|
+
var GIPICardComponent_1;
|
78
|
+
GIPICardComponent.ctorParameters = function () { return [
|
79
|
+
{ type: ElementRef },
|
80
|
+
{ type: ChangeDetectorRef }
|
81
|
+
]; };
|
82
|
+
__decorate([
|
83
|
+
Input(),
|
84
|
+
__metadata("design:type", String),
|
85
|
+
__metadata("design:paramtypes", [String])
|
86
|
+
], GIPICardComponent.prototype, "id", null);
|
87
|
+
__decorate([
|
88
|
+
Input(),
|
89
|
+
__metadata("design:type", String),
|
90
|
+
__metadata("design:paramtypes", [String])
|
91
|
+
], GIPICardComponent.prototype, "name", null);
|
92
|
+
__decorate([
|
93
|
+
Input(),
|
94
|
+
__metadata("design:type", Boolean),
|
95
|
+
__metadata("design:paramtypes", [Boolean])
|
96
|
+
], GIPICardComponent.prototype, "loading", null);
|
97
|
+
__decorate([
|
98
|
+
Input(),
|
99
|
+
__metadata("design:type", Boolean),
|
100
|
+
__metadata("design:paramtypes", [Boolean])
|
101
|
+
], GIPICardComponent.prototype, "shadow", null);
|
102
|
+
__decorate([
|
103
|
+
Input(),
|
104
|
+
__metadata("design:type", Boolean),
|
105
|
+
__metadata("design:paramtypes", [Boolean])
|
106
|
+
], GIPICardComponent.prototype, "padding", null);
|
107
|
+
GIPICardComponent = GIPICardComponent_1 = __decorate([
|
108
|
+
Component({
|
109
|
+
selector: 'gipi-card',
|
110
|
+
exportAs: 'gipiCard',
|
111
|
+
template: "<ng-content></ng-content>",
|
112
|
+
providers: [
|
113
|
+
{
|
114
|
+
provide: NG_VALUE_ACCESSOR,
|
115
|
+
useExisting: forwardRef(function () { return GIPICardComponent_1; }),
|
116
|
+
multi: true
|
117
|
+
}
|
118
|
+
],
|
119
|
+
host: {
|
120
|
+
'class': 'gipi-card',
|
121
|
+
'[attr.id]': 'id',
|
122
|
+
'[attr.name]': 'name',
|
123
|
+
'[class.shadow-none]': '!shadow',
|
124
|
+
'[class.padding-none]': '!padding',
|
125
|
+
'[class.loading]': 'loading',
|
126
|
+
},
|
127
|
+
styles: [":host{display:block;flex:1;border-radius:.2rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084);padding:1.6rem}.padding-none{padding:0!important}.shadow-none{box-shadow:none!important}"]
|
128
|
+
}),
|
129
|
+
__metadata("design:paramtypes", [ElementRef,
|
130
|
+
ChangeDetectorRef])
|
131
|
+
], GIPICardComponent);
|
132
|
+
return GIPICardComponent;
|
133
|
+
}());
|
134
|
+
export { GIPICardComponent };
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELElBQUksWUFBWSxHQUFXLENBQUMsQ0FBQztBQXVCN0I7SUFxREksMkJBQ1csVUFBc0IsRUFDckIsa0JBQXFDO1FBRHRDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQXJEdkMsY0FBUyxHQUFXLGVBQWEsRUFBRSxZQUFjLENBQUM7UUFFcEQsUUFBRyxHQUFXLEVBQUUsQ0FBQztRQVFqQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBUW5CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFXMUIsWUFBTyxHQUFZLElBQUksQ0FBQztRQVd4QixhQUFRLEdBQVksSUFBSSxDQUFDO0lBYzdCLENBQUM7MEJBeERJLGlCQUFpQjtJQUtqQixzQkFBSSxpQ0FBRTthQUFOO1lBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLENBQUM7YUFDRCxVQUFPLEtBQWE7WUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxDQUFDOzs7T0FIQTtJQU1RLHNCQUFJLG1DQUFJO2FBQVI7WUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQzthQUNELFVBQVMsS0FBYTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3pDLENBQUM7OztPQUhBO0lBTVEsc0JBQUksc0NBQU87YUFBWDtZQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6QixDQUFDO2FBQ0QsVUFBWSxLQUFjO1lBQ3RCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDMUM7UUFDTCxDQUFDOzs7T0FOQTtJQVNRLHNCQUFJLHFDQUFNO2FBQVY7WUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQzthQUNELFVBQVcsS0FBYztZQUNyQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO2FBQzFDO1FBQ0wsQ0FBQzs7O09BTkE7SUFTUSxzQkFBSSxzQ0FBTzthQUFYO1lBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pCLENBQUM7YUFDRCxVQUFZLEtBQWM7WUFDdEIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUMxQztRQUNMLENBQUM7OztPQU5BO0lBYUQsb0NBQVEsR0FBUixjQUFtQixDQUFDOzs7Z0JBSkcsVUFBVTtnQkFDRCxpQkFBaUI7O0lBbER4QztRQUFSLEtBQUssRUFBRTs7OytDQUVQO0lBTVE7UUFBUixLQUFLLEVBQUU7OztpREFFUDtJQU1RO1FBQVIsS0FBSyxFQUFFOzs7b0RBRVA7SUFTUTtRQUFSLEtBQUssRUFBRTs7O21EQUVQO0lBU1E7UUFBUixLQUFLLEVBQUU7OztvREFFUDtJQTdDUSxpQkFBaUI7UUFyQjdCLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLHFDQUFvQztZQUVwQyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsbUJBQWlCLEVBQWpCLENBQWlCLENBQUM7b0JBQ2hELEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsTUFBTTtnQkFDckIscUJBQXFCLEVBQUUsU0FBUztnQkFDaEMsc0JBQXNCLEVBQUUsVUFBVTtnQkFDbEMsaUJBQWlCLEVBQUUsU0FBUzthQUMvQjs7U0FDSixDQUFDO3lDQXVEeUIsVUFBVTtZQUNELGlCQUFpQjtPQXZEeEMsaUJBQWlCLENBNEQ3QjtJQUFELHdCQUFDO0NBQUEsQUE1REQsSUE0REM7U0E1RFksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQ6IG51bWJlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2lwaS1jYXJkJyxcbiAgICBleHBvcnRBczogJ2dpcGlDYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdJUElDYXJkQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktY2FyZCcsXG4gICAgICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIubmFtZV0nOiAnbmFtZScsXG4gICAgICAgICdbY2xhc3Muc2hhZG93LW5vbmVdJzogJyFzaGFkb3cnLFxuICAgICAgICAnW2NsYXNzLnBhZGRpbmctbm9uZV0nOiAnIXBhZGRpbmcnLFxuICAgICAgICAnW2NsYXNzLmxvYWRpbmddJzogJ2xvYWRpbmcnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdJUElDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHByb3RlY3RlZCBfdW5pcXVlSWQ6IHN0cmluZyA9IGBnaXBpLWNhcmQtJHsrK25leHRVbmlxdWVJZH1gO1xuXG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIGdldCBpZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuICAgIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdW5pcXVlSWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuICAgIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbmFtZSA9IHZhbHVlIHx8IHRoaXMuX3VuaXF1ZUlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gICAgfVxuICAgIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NoYWRvdzogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgZ2V0IHNoYWRvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NoYWRvdztcbiAgICB9XG4gICAgc2V0IHNoYWRvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuc2hhZG93KSB7XG4gICAgICAgICAgICB0aGlzLl9zaGFkb3cgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFkZGluZzogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgZ2V0IHBhZGRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWRkaW5nO1xuICAgIH1cbiAgICBzZXQgcGFkZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMucGFkZGluZykge1xuICAgICAgICAgICAgdGhpcy5fcGFkZGluZyA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxufVxuIl19
|
@@ -2,6 +2,7 @@ import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
3
3
|
import { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
5
|
+
import { ObjectUtil } from './../../../../core/utils/object.util';
|
5
6
|
import * as moment_ from 'moment';
|
6
7
|
var moment = moment_;
|
7
8
|
import { BrowserUtil } from '../../../../core/utils/browser.util';
|
@@ -33,7 +34,9 @@ var DatepickerComponent = /** @class */ (function () {
|
|
33
34
|
},
|
34
35
|
set: function (value) {
|
35
36
|
this._minDate = value;
|
36
|
-
|
37
|
+
if (!ObjectUtil.isNull(value)) {
|
38
|
+
this._minDate.setHours(0, 0, 0, 0);
|
39
|
+
}
|
37
40
|
},
|
38
41
|
enumerable: false,
|
39
42
|
configurable: true
|
@@ -44,7 +47,9 @@ var DatepickerComponent = /** @class */ (function () {
|
|
44
47
|
},
|
45
48
|
set: function (value) {
|
46
49
|
this._maxDate = value;
|
47
|
-
|
50
|
+
if (!ObjectUtil.isNull(value)) {
|
51
|
+
this._maxDate.setHours(0, 0, 0, 0);
|
52
|
+
}
|
48
53
|
},
|
49
54
|
enumerable: false,
|
50
55
|
configurable: true
|
@@ -249,4 +254,4 @@ var DatepickerComponent = /** @class */ (function () {
|
|
249
254
|
return DatepickerComponent;
|
250
255
|
}());
|
251
256
|
export { DatepickerComponent };
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFMUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBa0JyQjtJQW9GSSw2QkFDVyxVQUFzQixFQUNyQixrQkFBcUM7UUFEdEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBbEZ6QyxVQUFLLEdBQVcscUJBQW1CLFlBQVksRUFBSSxDQUFDO1FBRW5ELE9BQUUsR0FBYyxJQUFJLENBQUMsS0FBSyxVQUFPLENBQUM7UUFFbEMsU0FBSSxHQUFjLElBQUksQ0FBQyxLQUFLLFVBQU8sQ0FBQztRQUVwQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FB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RUFBRTs7cURBQW1CO0lBR2I7UUFBYixLQUFLLENBQUMsS0FBSyxDQUFDO2tDQUdNLElBQUk7eUNBQUosSUFBSTtzREFEdEI7SUFPYTtRQUFiLEtBQUssQ0FBQyxLQUFLLENBQUM7a0NBR00sSUFBSTt5Q0FBSixJQUFJO3NEQUR0QjtJQU9RO1FBQVIsS0FBSyxFQUFFOzs7dURBRVA7SUFNUTtRQUFSLEtBQUssRUFBRTs7O3VEQUVQO0lBTVE7UUFBUixLQUFLLEVBQUU7Ozt1REFFUDtJQU1RO1FBQVIsS0FBSyxFQUFFOzs7eURBRVA7SUFNUTtRQUFSLEtBQUssRUFBRTtrQ0FHUyxJQUFJO3lDQUFKLElBQUk7b0RBRHBCO0lBckVRLG1CQUFtQjtRQWhCL0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLGs1Q0FBMEM7WUFFMUMsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBa0MsT0FBQSxxQkFBbUIsRUFBbkIsQ0FBbUIsQ0FBQztvQkFDOUUsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtZQUNELElBQUksRUFBRTtnQkFDRixPQUFPLEVBQUUsaUJBQWlCO2FBQzdCOztTQUNKLENBQUM7eUNBc0Z5QixVQUFVO1lBQ0QsaUJBQWlCO09BdEZ4QyxtQkFBbUIsQ0F1Si9CO0lBQUQsMEJBQUM7Q0FBQSxBQXZKRCxJQXVKQztTQXZKWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuaW1wb3J0IHsgQnJvd3NlclV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2Jyb3dzZXIudXRpbCc7XG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvZGF0ZS51dGlsJztcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiB9IGZyb20gJy4uL21hdC1kYXRlcGlja2VyL2RhdGVwaWNrZXItaW5wdXQtYmFzZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyVG9nZ2xlIH0gZnJvbSAnLi4vbWF0LWRhdGVwaWNrZXIvZGF0ZXBpY2tlci10b2dnbGUnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnaXBpLWRhdGVwaWNrZXInLFxuICAgIGV4cG9ydEFzOiAnZ2lwaURhdGVQaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBEYXRlcGlja2VyQ29tcG9uZW50ID0+IERhdGVwaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktZGF0ZXBpY2tlcicsXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBWaWV3Q2hpbGQoTWF0RGF0ZXBpY2tlclRvZ2dsZSwgeyBzdGF0aWM6IHRydWUgfSkgbWF0RGF0ZXBpY2tlclRvZ2dsZVJlZjogTWF0RGF0ZXBpY2tlclRvZ2dsZTxEYXRlPjtcblxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9IGBnaXBpLWRhdGUtcmFuZ2UtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGAke3RoaXMuX25hbWV9LWRhdGVgO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gYCR7dGhpcy5fbmFtZX0tZGF0ZWA7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ19fL19fL19fX18nO1xuXG4gICAgQElucHV0KCkgaGVscDogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIF9taW5EYXRlOiBEYXRlID0gbmV3IERhdGUoJzAxLzAxLzIwMDAnKTtcbiAgICBASW5wdXQoJ21pbicpIGdldCBtaW5EYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgICB9XG4gICAgc2V0IG1pbkRhdGUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9taW5EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gICAgQElucHV0KCdtYXgnKSBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gICAgfVxuICAgIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fbWF4RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gICAgfVxuICAgIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRlRmlsdGVyOiBEYXRlRmlsdGVyRm48RGF0ZT4gPSBudWxsO1xuICAgIEBJbnB1dCgpIGdldCBkYXRlRmlsdGVyKCk6IERhdGVGaWx0ZXJGbjxEYXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlRmlsdGVyO1xuICAgIH1cbiAgICBzZXQgZGF0ZUZpbHRlcih2YWx1ZTogRGF0ZUZpbHRlckZuPERhdGU+KSB7XG4gICAgICAgIHRoaXMuX2RhdGVGaWx0ZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogRGF0ZTtcbiAgICBASW5wdXQoKSBnZXQgdmFsdWUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgc2V0IHZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcblxuICAgIHB1YmxpYyBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7IH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dENvbnRlbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkgfHwgIXRoaXMubWF0RGF0ZXBpY2tlclRvZ2dsZVJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlZERhdGUodmFsdWVEYXRlOiBzdHJpbmcsIGtleVVwOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICgha2V5VXAgJiYgQnJvd3NlclV0aWwuZ2V0QnJvd3NlcigpID09PSAnRmlyZWZveCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtYXRjaCA9IGZhbHNlO1xuICAgICAgICBpZiAodmFsdWVEYXRlLmluY2x1ZGVzKCcvJykgJiYgKCFrZXlVcCB8fCB2YWx1ZURhdGUubGVuZ3RoID09PSAxMCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodmFsdWVEYXRlLCAnREQvTU0vWVlZWScpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZURhdGUuaW5jbHVkZXMoJy8nKSAmJiAoIWtleVVwIHx8IHZhbHVlRGF0ZS5sZW5ndGggPT09IDgpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHZhbHVlRGF0ZSwgJ0RETU1ZWVlZJykudG9EYXRlKCk7XG4gICAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQnJvd3NlclV0aWwuZ2V0QnJvd3NlcigpICE9PSAnRmlyZWZveCcpIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCAmJiAhRGF0ZVV0aWwuaXNWYWxpZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobWF0Y2ggJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlTWluQW5kTWF4RGF0ZSh2YWx1ZURhdGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlSW5wdXQgPSBtb21lbnQodmFsdWVEYXRlLCAnREQvTU0vWVlZWScpLnRvRGF0ZSgpO1xuICAgICAgICBpZiAoRGF0ZVV0aWwuaXNMZXNzVGhhbihkYXRlSW5wdXQsIHRoaXMubWluRGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gKERhdGVVdGlsLmlzR3JlYXRlclRoYW4oZGF0ZUlucHV0LCB0aGlzLm1heERhdGUpID8gdW5kZWZpbmVkIDogZGF0ZUlucHV0KTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWxFLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFFLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQWtCckI7SUF3RkksNkJBQ1csVUFBc0IsRUFDckIsa0JBQXFDO1FBRHRDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQXRGekMsVUFBSyxHQUFXLHFCQUFtQixZQUFZLEVBQUksQ0FBQztRQUVuRCxPQUFFLEdBQWMsSUFBSSxDQUFDLEtBQUssVUFBTyxDQUFDO1FBRWxDLFNBQUksR0FBYyxJQUFJLENBQUMsS0FBSyxVQUFPLENBQUM7UUFFcEMsVUFBSyxH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Q0FBQztrQ0FBeUIsbUJBQW1CO3VFQUFPO0lBSTNGO1FBQVIsS0FBSyxFQUFFOzttREFBbUM7SUFFbEM7UUFBUixLQUFLLEVBQUU7O3FEQUFxQztJQUVwQztRQUFSLEtBQUssRUFBRTs7c0RBQW9CO0lBRW5CO1FBQVIsS0FBSyxFQUFFOzs0REFBb0M7SUFFbkM7UUFBUixLQUFLLEVBQUU7O3FEQUFtQjtJQUdiO1FBQWIsS0FBSyxDQUFDLEtBQUssQ0FBQztrQ0FHTSxJQUFJO3lDQUFKLElBQUk7c0RBRHRCO0lBU2E7UUFBYixLQUFLLENBQUMsS0FBSyxDQUFDO2tDQUdNLElBQUk7eUNBQUosSUFBSTtzREFEdEI7SUFTUTtRQUFSLEtBQUssRUFBRTs7O3VEQUVQO0lBTVE7UUFBUixLQUFLLEVBQUU7Ozt1REFFUDtJQU1RO1FBQVIsS0FBSyxFQUFFOzs7dURBRVA7SUFNUTtRQUFSLEtBQUssRUFBRTs7O3lEQUVQO0lBTVE7UUFBUixLQUFLLEVBQUU7a0NBR1MsSUFBSTt5Q0FBSixJQUFJO29EQURwQjtJQXpFUSxtQkFBbUI7UUFoQi9CLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixrNUNBQTBDO1lBRTFDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQWtDLE9BQUEscUJBQW1CLEVBQW5CLENBQW1CLENBQUM7b0JBQzlFLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFLGlCQUFpQjthQUM3Qjs7U0FDSixDQUFDO3lDQTBGeUIsVUFBVTtZQUNELGlCQUFpQjtPQTFGeEMsbUJBQW1CLENBMkovQjtJQUFELDBCQUFDO0NBQUEsQUEzSkQsSUEySkM7U0EzSlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi9jb3JlL3V0aWxzL29iamVjdC51dGlsJztcblxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuaW1wb3J0IHsgQnJvd3NlclV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2Jyb3dzZXIudXRpbCc7XG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvZGF0ZS51dGlsJztcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiB9IGZyb20gJy4uL21hdC1kYXRlcGlja2VyL2RhdGVwaWNrZXItaW5wdXQtYmFzZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyVG9nZ2xlIH0gZnJvbSAnLi4vbWF0LWRhdGVwaWNrZXIvZGF0ZXBpY2tlci10b2dnbGUnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnaXBpLWRhdGVwaWNrZXInLFxuICAgIGV4cG9ydEFzOiAnZ2lwaURhdGVQaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBEYXRlcGlja2VyQ29tcG9uZW50ID0+IERhdGVwaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktZGF0ZXBpY2tlcicsXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBWaWV3Q2hpbGQoTWF0RGF0ZXBpY2tlclRvZ2dsZSwgeyBzdGF0aWM6IHRydWUgfSkgbWF0RGF0ZXBpY2tlclRvZ2dsZVJlZjogTWF0RGF0ZXBpY2tlclRvZ2dsZTxEYXRlPjtcblxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9IGBnaXBpLWRhdGUtcmFuZ2UtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGAke3RoaXMuX25hbWV9LWRhdGVgO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gYCR7dGhpcy5fbmFtZX0tZGF0ZWA7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ19fL19fL19fX18nO1xuXG4gICAgQElucHV0KCkgaGVscDogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIF9taW5EYXRlOiBEYXRlID0gbmV3IERhdGUoJzAxLzAxLzIwMDAnKTtcbiAgICBASW5wdXQoJ21pbicpIGdldCBtaW5EYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgICB9XG4gICAgc2V0IG1pbkRhdGUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5fbWluRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gICAgQElucHV0KCdtYXgnKSBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gICAgfVxuICAgIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX21heERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gICAgfVxuICAgIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRlRmlsdGVyOiBEYXRlRmlsdGVyRm48RGF0ZT4gPSBudWxsO1xuICAgIEBJbnB1dCgpIGdldCBkYXRlRmlsdGVyKCk6IERhdGVGaWx0ZXJGbjxEYXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlRmlsdGVyO1xuICAgIH1cbiAgICBzZXQgZGF0ZUZpbHRlcih2YWx1ZTogRGF0ZUZpbHRlckZuPERhdGU+KSB7XG4gICAgICAgIHRoaXMuX2RhdGVGaWx0ZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogRGF0ZTtcbiAgICBASW5wdXQoKSBnZXQgdmFsdWUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgc2V0IHZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcblxuICAgIHB1YmxpYyBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7IH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dENvbnRlbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkgfHwgIXRoaXMubWF0RGF0ZXBpY2tlclRvZ2dsZVJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlZERhdGUodmFsdWVEYXRlOiBzdHJpbmcsIGtleVVwOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICgha2V5VXAgJiYgQnJvd3NlclV0aWwuZ2V0QnJvd3NlcigpID09PSAnRmlyZWZveCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtYXRjaCA9IGZhbHNlO1xuICAgICAgICBpZiAodmFsdWVEYXRlLmluY2x1ZGVzKCcvJykgJiYgKCFrZXlVcCB8fCB2YWx1ZURhdGUubGVuZ3RoID09PSAxMCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodmFsdWVEYXRlLCAnREQvTU0vWVlZWScpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZURhdGUuaW5jbHVkZXMoJy8nKSAmJiAoIWtleVVwIHx8IHZhbHVlRGF0ZS5sZW5ndGggPT09IDgpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHZhbHVlRGF0ZSwgJ0RETU1ZWVlZJykudG9EYXRlKCk7XG4gICAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQnJvd3NlclV0aWwuZ2V0QnJvd3NlcigpICE9PSAnRmlyZWZveCcpIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCAmJiAhRGF0ZVV0aWwuaXNWYWxpZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobWF0Y2ggJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlTWluQW5kTWF4RGF0ZSh2YWx1ZURhdGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlSW5wdXQgPSBtb21lbnQodmFsdWVEYXRlLCAnREQvTU0vWVlZWScpLnRvRGF0ZSgpO1xuICAgICAgICBpZiAoRGF0ZVV0aWwuaXNMZXNzVGhhbihkYXRlSW5wdXQsIHRoaXMubWluRGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gKERhdGVVdGlsLmlzR3JlYXRlclRoYW4oZGF0ZUlucHV0LCB0aGlzLm1heERhdGUpID8gdW5kZWZpbmVkIDogZGF0ZUlucHV0KTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
+
var GIPIEmptyStateComponent = /** @class */ (function () {
|
5
|
+
function GIPIEmptyStateComponent() {
|
6
|
+
}
|
7
|
+
GIPIEmptyStateComponent_1 = GIPIEmptyStateComponent;
|
8
|
+
GIPIEmptyStateComponent.prototype.ngOnInit = function () { };
|
9
|
+
var GIPIEmptyStateComponent_1;
|
10
|
+
GIPIEmptyStateComponent = GIPIEmptyStateComponent_1 = __decorate([
|
11
|
+
Component({
|
12
|
+
selector: 'gipi-empty-state',
|
13
|
+
exportAs: 'gipiEmptyState',
|
14
|
+
template: "<mat-icon>sentiment_very_dissatisfied</mat-icon>\nNenhum registro foi encontrado",
|
15
|
+
providers: [
|
16
|
+
{
|
17
|
+
provide: NG_VALUE_ACCESSOR,
|
18
|
+
useExisting: forwardRef(function () { return GIPIEmptyStateComponent_1; }),
|
19
|
+
multi: true
|
20
|
+
}
|
21
|
+
],
|
22
|
+
host: {
|
23
|
+
'class': 'gipi-empty-state',
|
24
|
+
},
|
25
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
26
|
+
styles: [":host{display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:1.4rem;font-weight:600;color:#131313;padding:2.4rem 0}:host>mat-icon{font-size:3.2rem;height:3.2rem;width:3.2rem;margin-bottom:5px}"]
|
27
|
+
}),
|
28
|
+
__metadata("design:paramtypes", [])
|
29
|
+
], GIPIEmptyStateComponent);
|
30
|
+
return GIPIEmptyStateComponent;
|
31
|
+
}());
|
32
|
+
export { GIPIEmptyStateComponent };
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBbUJuRDtJQUVJO0lBQWdCLENBQUM7Z0NBRlIsdUJBQXVCO0lBSWhDLDBDQUFRLEdBQVIsY0FBbUIsQ0FBQzs7SUFKWCx1QkFBdUI7UUFqQm5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQiw0RkFBMkM7WUFFM0MsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHlCQUF1QixFQUF2QixDQUF1QixDQUFDO29CQUN0RCxLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLE9BQU8sRUFBRSxrQkFBa0I7YUFDOUI7WUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDbEQsQ0FBQzs7T0FDVyx1QkFBdUIsQ0FNbkM7SUFBRCw4QkFBQztDQUFBLEFBTkQsSUFNQztTQU5ZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2lwaS1lbXB0eS1zdGF0ZScsXG4gICAgZXhwb3J0QXM6ICdnaXBpRW1wdHlTdGF0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdJUElFbXB0eVN0YXRlQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktZW1wdHktc3RhdGUnLFxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgR0lQSUVtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbn1cbiJdfQ==
|
@@ -9,7 +9,7 @@ import { ObjectUtil } from '../../../core/utils/object.util';
|
|
9
9
|
import { GIPIFormFieldComponent } from '../form-field/form-field.component';
|
10
10
|
import { GIPIOverlayComponent } from '../overlay/overlay.component';
|
11
11
|
/** A altura dos itens selecionados em unidades `px`. */
|
12
|
-
var OPTION_HEIGHT_PX =
|
12
|
+
var OPTION_HEIGHT_PX = 44;
|
13
13
|
var nextUniqueId = 0;
|
14
14
|
var GIPIInputSelectComponent = /** @class */ (function () {
|
15
15
|
function GIPIInputSelectComponent(_changeDetectorRef) {
|
@@ -135,6 +135,13 @@ var GIPIInputSelectComponent = /** @class */ (function () {
|
|
135
135
|
enumerable: false,
|
136
136
|
configurable: true
|
137
137
|
});
|
138
|
+
Object.defineProperty(GIPIInputSelectComponent.prototype, "optionHeight", {
|
139
|
+
get: function () {
|
140
|
+
return OPTION_HEIGHT_PX;
|
141
|
+
},
|
142
|
+
enumerable: false,
|
143
|
+
configurable: true
|
144
|
+
});
|
138
145
|
Object.defineProperty(GIPIInputSelectComponent.prototype, "scrollViewportHeight", {
|
139
146
|
get: function () {
|
140
147
|
var height = 0;
|
@@ -676,7 +683,7 @@ var GIPIInputSelectComponent = /** @class */ (function () {
|
|
676
683
|
Component({
|
677
684
|
selector: "gipi-input-select",
|
678
685
|
exportAs: 'gipiInputSelect',
|
679
|
-
template: "<gipi-form-field #formFieldSelect\n [id]=\"id\"\n [name]=\"name\"\n [type]=\"'select'\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [showClear]=\"inputFieldValue && showClear && !disabled && !loading\"\n [showTrigger]=\"inputFieldValueSelected && (inputFieldValueSelected > 1)\"\n [trigger]=\"inputFieldValueSelected\"\n [ariaLabel]=\"ariaLabel\"\n [(ngModel)]=\"inputFieldValue\"\n (onKeydown)=\"onInputKeydown($event)\"\n (onClear)=\"onClearOptionsClick($event)\"\n (onFocus)=\"onInputFocus($event)\"\n (onBlur)=\"onInputBlur($event)\"\n (onClick)=\"onInputClick()\">\n</gipi-form-field>\n\n<gipi-overlay *ngIf=\"!disabled && !loading\"\n contentStyleClass=\"overlay-select\"\n #overlaySelect\n [(visible)]=\"_overlayVisible\"\n [autoZIndex]=\"true\"\n [appendTo]=\"appendTo ? appendTo : 'body'\"\n (onShow)=\"onOpenedChange.emit(true)\"\n (onHide)=\"onOpenedChange.emit(false)\">\n <div class=\"select-search\"\n *ngIf=\"showSearch\"\n [class.disabled]=\"showSelectAll && (disabled || loading || (isLoading > 0))\">\n <mat-checkbox *ngIf=\"multiple && showSelectAll\"\n class=\"select-search-toggle-all-checkbox\"\n [disabled]=\"disabled || loading || !options || (options && !options.length)\"\n [(ngModel)]=\"toggleAllCheckboxChecked\"\n [indeterminate]=\"toggleAllCheckboxIndeterminate\"\n (change)=\"onChangeToggleAllCheckbox()\">\n </mat-checkbox>\n\n <gipi-form-field #formfieldSelectSearchInput\n placeholder=\"Pesquisar\"\n type=\"search\"\n [style.width]=\"'100%'\"\n [formControl]=\"_formControlSearch\"\n [showClear]=\"valueSearch && !disabled && !loading && isLoading <= 0\"\n (onKeydown)=\"onInputSearchKeydown($event)\">\n </gipi-form-field>\n </div>\n\n <div class=\"select-row select-option-all\"\n [style.height.px]=\"40\"\n [class.disabled]=\"disabled || loading\"\n *ngIf=\"(!showSearch && multiple && showSelectAll)\"\n (click)=\"onClickSelectAllByOption()\">\n <mat-pseudo-checkbox *ngIf=\"multiple\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"toggleAllCheckboxIndeterminate ? 'indeterminate' : toggleAllCheckboxChecked ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ labelSelectAll ? labelSelectAll : 'Selecionar todos' }} </span>\n </div>\n\n <cdk-virtual-scroll-viewport *ngIf=\"(options && options.length) && (!loading || isLoading <= 0)\"\n class=\"select-virtual-scroll-viewport\"\n [style.height.px]=\"scrollViewportHeight\"\n [itemSize]=\"_itemSizeScrollViewport\"\n GIPIInfiniteScroll\n [infiniteScrollDistance]=\"'30%'\"\n [infiniteScrollThrottle]=\"50\"\n [infiniteScrollcomplete]=\"options && _totalOptions && options.length === _totalOptions\"\n (scrolled)=\"onScroll()\">\n <div *cdkVirtualFor=\"let option of options; trackBy: trackByOption\"\n class=\"select-row\"\n [style.height.px]=\"
|
686
|
+
template: "<gipi-form-field #formFieldSelect\n [id]=\"id\"\n [name]=\"name\"\n [type]=\"'select'\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [showClear]=\"inputFieldValue && showClear && !disabled && !loading\"\n [showTrigger]=\"inputFieldValueSelected && (inputFieldValueSelected > 1)\"\n [trigger]=\"inputFieldValueSelected\"\n [ariaLabel]=\"ariaLabel\"\n [(ngModel)]=\"inputFieldValue\"\n (onKeydown)=\"onInputKeydown($event)\"\n (onClear)=\"onClearOptionsClick($event)\"\n (onFocus)=\"onInputFocus($event)\"\n (onBlur)=\"onInputBlur($event)\"\n (onClick)=\"onInputClick()\">\n</gipi-form-field>\n\n<gipi-overlay *ngIf=\"!disabled && !loading\"\n contentStyleClass=\"overlay-select\"\n #overlaySelect\n [(visible)]=\"_overlayVisible\"\n [autoZIndex]=\"true\"\n [appendTo]=\"appendTo ? appendTo : 'body'\"\n (onShow)=\"onOpenedChange.emit(true)\"\n (onHide)=\"onOpenedChange.emit(false)\">\n <div class=\"select-search\"\n *ngIf=\"showSearch\"\n [class.disabled]=\"showSelectAll && (disabled || loading || (isLoading > 0))\">\n <mat-checkbox *ngIf=\"multiple && showSelectAll\"\n class=\"select-search-toggle-all-checkbox\"\n [disabled]=\"disabled || loading || !options || (options && !options.length)\"\n [(ngModel)]=\"toggleAllCheckboxChecked\"\n [indeterminate]=\"toggleAllCheckboxIndeterminate\"\n (change)=\"onChangeToggleAllCheckbox()\">\n </mat-checkbox>\n\n <gipi-form-field #formfieldSelectSearchInput\n placeholder=\"Pesquisar\"\n type=\"search\"\n [style.width]=\"'100%'\"\n [formControl]=\"_formControlSearch\"\n [showClear]=\"valueSearch && !disabled && !loading && isLoading <= 0\"\n (onKeydown)=\"onInputSearchKeydown($event)\">\n </gipi-form-field>\n </div>\n\n <div class=\"select-row select-option-all\"\n [style.height.px]=\"40\"\n [class.disabled]=\"disabled || loading\"\n *ngIf=\"(!showSearch && multiple && showSelectAll)\"\n (click)=\"onClickSelectAllByOption()\">\n <mat-pseudo-checkbox *ngIf=\"multiple\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"toggleAllCheckboxIndeterminate ? 'indeterminate' : toggleAllCheckboxChecked ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ labelSelectAll ? labelSelectAll : 'Selecionar todos' }} </span>\n </div>\n\n <cdk-virtual-scroll-viewport *ngIf=\"(options && options.length) && (!loading || isLoading <= 0)\"\n class=\"select-virtual-scroll-viewport\"\n [style.height.px]=\"scrollViewportHeight\"\n [itemSize]=\"_itemSizeScrollViewport\"\n GIPIInfiniteScroll\n [infiniteScrollDistance]=\"'30%'\"\n [infiniteScrollThrottle]=\"50\"\n [infiniteScrollcomplete]=\"options && _totalOptions && options.length === _totalOptions\"\n (scrolled)=\"onScroll()\">\n <div *cdkVirtualFor=\"let option of options; trackBy: trackByOption\"\n class=\"select-row\"\n [style.height.px]=\"optionHeight\"\n [class.disabled]=\"disabled || loading\"\n (click)=\"onButtonSelectOptionClick(option)\">\n <mat-pseudo-checkbox *ngIf=\"multiple && option\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"optionCheckboxIsChecked(option) ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ option ? getPropertyValue(option) : '' }} </span>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <div *ngIf=\"loading || isLoading > 0\"\n class=\"select-loading\">\n <div class=\"dot-pulse\"> </div>\n </div>\n\n <div *ngIf=\"(!options || (options && options.length <= 0)) && !loading && (isLoading <= 0)\"\n class=\"select-not-found\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n Nenhum registro foi encontrado\n </div>\n\n <div class=\"select-footer\"\n *ngIf=\"multiple && !showSelectAll && showFooter\">\n <gipi-button label=\"Adicionar\"\n gipi-primary\n id=\"btnAddOptions\"\n [style.width]=\"'100%'\"\n [disabled]=\"disabled || loading || (!value || (value && !value.length))\"\n (click)=\"onClickAddOptions()\">\n </gipi-button>\n </div>\n</gipi-overlay>",
|
680
687
|
providers: [
|
681
688
|
{
|
682
689
|
provide: NG_VALUE_ACCESSOR,
|
@@ -688,11 +695,11 @@ var GIPIInputSelectComponent = /** @class */ (function () {
|
|
688
695
|
'class': 'gipi-input-select',
|
689
696
|
},
|
690
697
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
691
|
-
styles: ["::ng-deep .overlay-select{padding:0!important;overflow:hidden!important}::ng-deep .select-virtual-scroll-viewport{width:100%!important;max-height:240px;overflow:auto}::ng-deep .select-virtual-scroll-viewport .cdk-virtual-scroll-content-wrapper{width:100%!important;position:relative!important}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar{width:15px}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar-thumb{background-color:#e0e1e2;border-radius:10px;border:4px solid transparent;background-clip:padding-box}::ng-deep .select-row{display:flex;align-items:center;padding:0 16px;cursor:pointer;font-size:1.
|
698
|
+
styles: ["::ng-deep .overlay-select{padding:0!important;overflow:hidden!important}::ng-deep .select-virtual-scroll-viewport{width:100%!important;max-height:240px;overflow:auto}::ng-deep .select-virtual-scroll-viewport .cdk-virtual-scroll-content-wrapper{width:100%!important;position:relative!important}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar{width:15px}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar-thumb{background-color:#e0e1e2;border-radius:10px;border:4px solid transparent;background-clip:padding-box}::ng-deep .select-row{display:flex;align-items:center;padding:0 16px;cursor:pointer;font-size:1.3rem;line-height:100%;gap:12px}::ng-deep .select-row:hover{background:#f5f5f6}::ng-deep .select-row:active{background:#e0e1e2}::ng-deep .select-row.disabled{background-color:#d1d2d4!important;color:#9a9da2!important;cursor:not-allowed!important;pointer-events:none!important}::ng-deep .select-row>span{display:-webkit-box;line-clamp:2;box-orient:vertical;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis;overflow:hidden}.select-search{display:flex;align-items:center;font-size:1.4rem;line-height:100%;gap:12px;padding:8px 12px}.select-option-all{border-bottom:1px solid rgba(0,0,0,.12)}.select-not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:600;font-size:1.2rem;gap:8px;color:#131313;cursor:default;padding:0 0 16px}.select-not-found>mat-icon{width:2.8rem;height:2.8rem;font-size:2.8rem;line-height:2.8rem;color:#131313}.select-loading{height:4rem;width:100%;background-color:#fff;display:flex;align-items:center;justify-content:center}.select-loading .dot-pulse{position:relative;left:-9999px;width:5px;height:5px;border-radius:50%;background-color:#e0313e;color:#e0313e;box-shadow:9999px 0 0 -5px;-webkit-animation:1.5s linear .25s infinite dot-pulse;animation:1.5s linear .25s infinite dot-pulse}.select-loading .dot-pulse::after,.select-loading .dot-pulse::before{content:\"\";display:inline-block;position:absolute;top:0;width:5px;height:5px;border-radius:50%;background-color:#e0313e;color:#e0313e}.select-loading .dot-pulse::before{box-shadow:9984px 0 0 -5px;-webkit-animation:1.5s linear infinite dot-pulse-before;animation:1.5s linear infinite dot-pulse-before}.select-loading .dot-pulse::after{box-shadow:10014px 0 0 -5px;-webkit-animation:1.5s linear .5s infinite dot-pulse-after;animation:1.5s linear .5s infinite dot-pulse-after}@-webkit-keyframes dot-pulse-before{0%,100%,60%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}}@keyframes dot-pulse-before{0%,100%,60%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}}@-webkit-keyframes dot-pulse{0%,100%,60%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}}@keyframes dot-pulse{0%,100%,60%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}}@-webkit-keyframes dot-pulse-after{0%,100%,60%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}}@keyframes dot-pulse-after{0%,100%,60%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}}.select-footer{display:flex;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid #bfbfbf}::ng-deep .select-mat-option-pseudo-checkbox{margin:0!important}"]
|
692
699
|
}),
|
693
700
|
__metadata("design:paramtypes", [ChangeDetectorRef])
|
694
701
|
], GIPIInputSelectComponent);
|
695
702
|
return GIPIInputSelectComponent;
|
696
703
|
}());
|
697
704
|
export { GIPIInputSelectComponent };
|
698
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSyxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBT3BFLHdEQUF3RDtBQUN4RCxJQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUU1QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCO0lBZ0xJLGtDQUFvQixrQkFBcUM7UUFBekQsaUJBQThEO1FBQTFD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RTtrQ0FBaUIsWUFBWTtvRUFBd0M7SUFDcEU7UUFBVCxNQUFNLEVBQUU7a0NBQWlCLFlBQVk7b0VBQXNDO0lBQ2xFO1FBQVQsTUFBTSxFQUFFO2tDQUFjLFlBQVk7aUVBQWtEO0lBN0o1RSx3QkFBd0I7UUFqQnBDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQiw4cktBQTRDO1lBRTVDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQXVDLE9BQUEsMEJBQXdCLEVBQXhCLENBQXdCLENBQUM7b0JBQ3hGLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFLG1CQUFtQjthQUMvQjtZQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNsRCxDQUFDO3lDQWlMMEMsaUJBQWlCO09BaExoRCx3QkFBd0IsQ0Era0JwQztJQUFELCtCQUFDO0NBQUEsQUEva0JELElBK2tCQztTQS9rQlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQSwgRU5URVIsIEVTQ0FQRSwgTklORSwgU1BBQ0UsIFosIFpFUk8gfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRyYWNrQnlGdW5jdGlvbiwgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBhZ2VEVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vcGFnZS5kdG8nO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgR0lQSUZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR0lQSU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFuZ2U8VD4ge1xuICAgIHZhbHVlczogVCB8IFRbXTtcbiAgICBzZWxlY3RlZEFsbD86IGJvb2xlYW47XG59XG5cbi8qKiBBIGFsdHVyYSBkb3MgaXRlbnMgc2VsZWNpb25hZG9zIGVtIHVuaWRhZGVzIGBweGAuICovXG5jb25zdCBPUFRJT05fSEVJR0hUX1BYID0gNDA7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYGdpcGktaW5wdXQtc2VsZWN0YCxcbiAgICBleHBvcnRBczogJ2dpcGlJbnB1dFNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBHSVBJSW5wdXRTZWxlY3RDb21wb25lbnQgPT4gR0lQSUlucHV0U2VsZWN0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktaW5wdXQtc2VsZWN0JyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdJUElJbnB1dFNlbGVjdENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nID0gYGdpcGktaW5wdXQtc2VsZWN0LSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIHByaXZhdGUgX2NhY2hlOiBhbnk7XG5cbiAgICBwcml2YXRlIF9wYWdlTW9kZWw6IFBhZ2VEVE88VD47XG5cbiAgICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgX2l0ZW1TaXplU2Nyb2xsVmlld3BvcnQ6IG51bWJlciA9IDU7XG5cbiAgICBfdG90YWxPcHRpb25zOiBudW1iZXI7XG5cbiAgICBfb3ZlcmxheVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9mb3JtQ29udHJvbFNlYXJjaDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9KTtcblxuICAgIGlucHV0RmllbGRWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICBpbnB1dEZpZWxkVmFsdWVTZWxlY3RlZDogbnVtYmVyID0gMDtcblxuICAgIHRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaXNMb2FkaW5nOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gQFZpZXdDaGlsZCgnc2VhcmNoU2VsZWN0SW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hTZWxlY3RJbnB1dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdmb3JtZmllbGRTZWxlY3RTZWFyY2hJbnB1dCcsIHsgcmVhZDogR0lQSUZvcm1GaWVsZENvbXBvbmVudCwgc3RhdGljOiB0cnVlIH0pIGZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0OiBHSVBJRm9ybUZpZWxkQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkU2VsZWN0JywgeyByZWFkOiBHSVBJRm9ybUZpZWxkQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pIGZvcm1GaWVsZFNlbGVjdDogR0lQSUZvcm1GaWVsZENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ292ZXJsYXlTZWxlY3QnLCB7IHJlYWQ6IEdJUElPdmVybGF5Q29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pIG92ZXJsYXlTZWxlY3Q6IEdJUElPdmVybGF5Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyB8IG51bWJlciA9IHRoaXMuX25hbWU7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSB0aGlzLl9uYW1lO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY2lvbmFyJztcblxuICAgIEBJbnB1dCgpIGxhYmVsU2VsZWN0QWxsOiBzdHJpbmcgPSAnU2VsZWNpb25hciB0b2Rvcyc7XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gTW9zdHJhci9vY3VsdGFyIG8gYm90w6NvIGxpbXBhciBvcMOnw7VlcyBzZWxlY2lvbmFkYXNcbiAgICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dPbkZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGhpZGVPbkVzY2FwZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93U2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93Rm9vdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpbmZpbml0ZVNjcm9sbDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93U2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcHJvcGVydHk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRyYWNrQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwcm9wZXJ0eUZuOiAob2JqOiBUKSA9PiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBuZXh0QmF0Y2hGbiE6IChyZXNlYXJjaEZpZWxkOiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgcGFyYW1OZXh0QmF0Y2g/OiBhbnkpID0+IFByb21pc2U8UGFnZURUTzxUPj47XG5cbiAgICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gNTtcblxuICAgIC8vIElucHV0IHNlYXJjaCAtLS0tLS0tLVxuICAgIC8vIEF0aXZhciBsaW1wYXIgaW5wdXQgYW8gcHJlc3Npb25hciBlc2NhcGVcbiAgICBASW5wdXQoKSBlbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9kaXNhYmxlSW5wdXRTZWFyY2goKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGlzYWJsZUlucHV0U2VhcmNoKCk7XG4gICAgfVxuICAgIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJhbU5leHRCYXRjaDogYW55O1xuICAgIEBJbnB1dCgpIHNldCBwYXJhbU5leHRCYXRjaCh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLl9wYXJhbU5leHRCYXRjaCA9IHZhbDtcbiAgICB9XG4gICAgZ2V0IHBhcmFtTmV4dEJhdGNoKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbU5leHRCYXRjaDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogVCB8IFRbXTtcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFQgfCBUW10pIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0VmFsdWUgPSB2YWx1ZVswXTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9IHRoaXMucHJvcGVydHkgPyBmaXJzdFZhbHVlW3RoaXMucHJvcGVydHldIDogdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGZpcnN0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWVTZWxlY3RlZCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9IHRoaXMucHJvcGVydHkgPyB2YWx1ZVt0aGlzLnByb3BlcnR5XSA6IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWVTZWxlY3RlZCA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWVTZWxlY3RlZCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogVCB8IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vcHRpb25zOiBUW107XG4gICAgQElucHV0KCkgc2V0IG9wdGlvbnModmFsOiBUW10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbDtcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25TZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUIHwgVFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IFRbXT4oKTtcbiAgICBAT3V0cHV0KCkgb25PcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgb25TZWFyY2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIG9uQWRkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QWRkQ2hhbmdlPFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkQ2hhbmdlPFQ+PigpO1xuXG4gICAgZ2V0IHNjcm9sbFZpZXdwb3J0SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCBoZWlnaHQ6IG51bWJlciA9IDA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgaGVpZ2h0ID0gKHRoaXMub3B0aW9ucy5sZW5ndGggKiBPUFRJT05fSEVJR0hUX1BYKSAtICh0aGlzLnBhZ2VTaXplID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoID8gT1BUSU9OX0hFSUdIVF9QWCA6IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm92ZXJsYXlTZWxlY3QpKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZWxlY3QuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cblxuICAgIGdldCB2YWx1ZVNlYXJjaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2gudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB2YWx1ZSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpOiB2b2lkID0+IHRoaXMuX3NlYXJjaENoYW5nZSh2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlPcHRpb246IFRyYWNrQnlGdW5jdGlvbjxUPiA9IChpbmRleCwgb2JqKSA9PiBvYmogJiYgdGhpcy50cmFja0J5ICYmIG9ialt0aGlzLnRyYWNrQnldID8gb2JqW3RoaXMudHJhY2tCeV0gOiBvYmo7XG5cbiAgICBvbkNoYW5nZTogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xuXG4gICAgb25Ub3VjaDogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY29tcGFyZUZuKGYxOiBULCBmMjogVCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcGVydHkgJiYgIXRoaXMucHJvcGVydHlGbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPIHBhcsOibWV0cm8gcHJvcGVydHkgb3UgcHJvcGVydHlGbiBkZXZlIGNvbnRlciB1bSB2YWxvcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5ICYmIHRoaXMucHJvcGVydHlGbiAmJiBmMSAmJiBmMikge1xuICAgICAgICAgICAgY29uc3QgcHJvcEYxID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGYxKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BGMiA9IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShmMik7XG4gICAgICAgICAgICByZXR1cm4gcHJvcEYxID09PSBwcm9wRjI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZjEgJiYgZjIgJiYgZjFbdGhpcy5wcm9wZXJ0eV0gPT09IGYyW3RoaXMucHJvcGVydHldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcm9wZXJ0eVZhbHVlKGVudGl0eTogVCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwoZW50aXR5KSkge1xuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnByb3BlcnR5Rm4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlGbihlbnRpdHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlKGVudGl0eSwgdGhpcy5wcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFZhbHVlKGVudGl0eTogVCwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IHN0cmluZ1tdID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbnRpdHk7XG5cbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlID0gUmVmbGVjdC5nZXQodmFsdWUsIHByb3BlcnRpZXNbaV0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIGkgPT09IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNob3dPbkZvY3VzICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dENsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUZpZWxkU2VsZWN0LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0S2V5ZG93bihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICgoZXZlbnQuY29kZS50b1VwcGVyQ2FzZSgpID09PSAnRVNDQVBFJykgJiYgdGhpcy5oaWRlT25Fc2NhcGUpIHx8XG4gICAgICAgICAgICAoKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ0VOVEVSJykgfHwgKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ05VTVBBREVOVEVSJykpIHx8XG4gICAgICAgICAgICAoZXZlbnQuY29kZS50b1VwcGVyQ2FzZSgpID09PSAnVEFCJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyT3B0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZS5lbWl0KHRoaXMuX292ZXJsYXlWaXNpYmxlKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2NhY2hlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25TY3JvbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZS5lbWl0KHRoaXMuX292ZXJsYXlWaXNpYmxlKTtcbiAgICAgICAgdGhpcy5fY2FjaGUgPSB7fTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5maW5pdGUgc2Nyb2xsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGFzeW5jIG9uU2Nyb2xsKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5maW5pdGVTY3JvbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5uZXh0QmF0Y2hGbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgZnVuw6fDo28gXCJuZXh0QmF0Y2hGblwiIMOpIG9icmlnYXTDs3JpYSBlIG7Do28gZm9pIGluZm9ybWFkYScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fcGFnZU1vZGVsKSAmJiAodGhpcy5fcGFnZU1vZGVsLnRvdGFsUGFnZXMgPT09IHRoaXMuX3BhZ2VNb2RlbC5udW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWdlTnVtYmVyOiBudW1iZXIgPSAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5fcGFnZU1vZGVsKSA/IHRoaXMuX3BhZ2VNb2RlbC5udW1iZXIgKyAxIDogMDtcblxuICAgICAgICAvLyBNYW50ZW1vcyB1bSDDrW5kaWNlIGRlIHDDoWdpbmFzIGNhcnJlZ2FkYXMgcGVsbyBzZXJ2aWRvciBwYXJhIG7Do28gY2FycmVnYXJtb3Mgb3MgbWVzbW9zIGRhZG9zIGR1YXMgdmV6ZXNcbiAgICAgICAgLy8gSXNzbyDDqSBiYXNlYWRvIG5hIHDDoWdpbmEgZG8gc2Vydmlkb3IsIG7Do28gbmEgaW50ZXJmYWNlIGRvIHVzdcOhcmlvXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9jYWNoZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlW3BhZ2VOdW1iZXJdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2FjaGVbcGFnZU51bWJlcl0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nKys7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5uZXh0QmF0Y2hGbih0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZSwgcGFnZU51bWJlciwgdGhpcy5wYXJhbU5leHRCYXRjaCkudGhlbihwYWdlZERhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcGFnZU1vZGVsID0gcGFnZWREYXRhO1xuICAgICAgICAgICAgdGhpcy5fdG90YWxPcHRpb25zID0gcGFnZWREYXRhLnRvdGFsRWxlbWVudHM7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERlc2xvY2FtZW50byBkYSBsaW5oYSBpbmljaWFsLiBFc3RhIMOpIGEgcG9zacOnw6NvIHBhcmEgaW5zZXJpciBvcyBub3ZvcyBkYWRvc1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9wYWdlTW9kZWwubnVtYmVyICogdGhpcy5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgLy8gQ29waWFyIGRhZG9zIGV4aXN0ZW50ZXNcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcblxuICAgICAgICAgICAgLy8gSW5zZXJpciBub3ZhcyBsaW5oYXMgbmEgcG9zacOnw6NvIGNvcnJldGFcbiAgICAgICAgICAgIG9wdGlvbnMuc3BsaWNlKHN0YXJ0LCB0aGlzLnBhZ2VTaXplLCAuLi5wYWdlZERhdGEuY29udGVudCk7XG5cbiAgICAgICAgICAgIC8vIFZvbHRhIG8gYXJyYXkgZGUgb3DDp8O1ZXMgamEgYXR1YWxpemFkbyBwYXJhIGV4aWJpw6fDo29cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VUb2dnbGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIC8vIERpbWludWlyIG8gY29udGFkb3IgZGUgY2hhbWFkYXMgZGUgQVBJIHBlbmRlbnRlc1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmctLTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0KSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCh0aGlzLm9wdGlvbnMubGVuZ3RoLCAnc21vb3RoJyk7XG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25CdXR0b25TZWxlY3RPcHRpb25DbGljayhvcHRpb246IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleE9wdGlvbjogbnVtYmVyID0gdGhpcy52YWx1ZS5maW5kSW5kZXgobyA9PiBPYmplY3RVdGlsLmVxdWFscyhvLCBvcHRpb24pKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhPcHRpb24gPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBsVmFsdWUuc3BsaWNlKGluZGV4T3B0aW9uLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi5sVmFsdWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgb3B0aW9uXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQWxsQ2hlY2tib3goKTtcblxuICAgICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNob3dTZWxlY3RBbGwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICF0aGlzLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWUgJiYgIXRoaXMudmFsdWUubGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAgICF0aGlzLm9wdGlvbnMgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zICYmICF0aGlzLm9wdGlvbnMubGVuZ3RoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdGhpcy52YWx1ZSAmJiB0aGlzLl9wYWdlTW9kZWwgJiYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCkgJiYgKHRoaXMuX3RvdGFsT3B0aW9ucyA+IDApICYmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gdGhpcy5fdG90YWxPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPCB0aGlzLl90b3RhbE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdGhpcy52YWx1ZSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiB0aGlzLm9wdGlvbnMgJiYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9ICh0aGlzLnZhbHVlLmxlbmd0aCA+IDApICYmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkgJiYgKHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5vcHRpb25zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3B0aW9uQ2hlY2tib3hJc0NoZWNrZWQob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmZpbmRJbmRleChvID0+IE9iamVjdFV0aWwuZXF1YWxzKG8sIG9wdGlvbikpID4gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGlja1NlbGVjdEFsbEJ5T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gIXRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlVG9nZ2xlQWxsQ2hlY2tib3goKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VUb2dnbGVBbGxDaGVja2JveCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tBZGRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5zaG93U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRDaGFuZ2U6IEFkZENoYW5nZTxUPiA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRBbGw6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbkFkZENoYW5nZS5lbWl0KGFkZENoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnB1dCBzZWFyY2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwcml2YXRlIF9kaXNhYmxlSW5wdXRTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWFyY2hDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoQ2hhbmdlLmVtaXQodmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLl9wYWdlTW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IHt9O1xuXG4gICAgICAgICAgICB0aGlzLm9uU2Nyb2xsKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY2FsaXphIG8gaW5wdXQgZGUgcGVzcXVpc2FcbiAgICAgKi9cbiAgICBwdWJsaWMgX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0KSB8fCAhdGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXRhIG8gZm9jb1xuICAgICAgICB0aGlzLmZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgbyB2YWxvciBkbyBpbnB1dCBkZSBwZXNxdWlzYSBhdHVhbFxuICAgICAqIEBwYXJhbSBmb2N1cyBzZSBkZXZlIGZvY2FyIGFww7NzIGEgcmVkZWZpbmnDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyBfc2VhcmNoU2VsZWN0SW5wdXRSZXNldChmb2N1cz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guc2V0VmFsdWUoJycpO1xuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIHRlY2xhIHByZXNzaW9uYWRhLlxuICAgICAqIFBlcm1pdGUsIHBvciBleC4gc2VsZWNpb25hbmRvIGNvbSBhIHRlY2xhIGVudGVyLCBuYXZlZ2FuZG8gY29tIGFzIHRlY2xhcyBkZSBzZXRhLCBldGMuXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG9uSW5wdXRTZWFyY2hLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIEV2aXRlIGEgcHJvcGFnYcOnw6NvIGRlIHRvZG9zIG9zIGNhcmFjdGVyZXMgYWxmYW51bcOpcmljb3MgcGFyYSBldml0YXIgcHJvYmxlbWFzIGRlIHNlbGXDp8Ojb1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBBICYmIGV2ZW50LmtleUNvZGUgPD0gWikgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IFpFUk8gJiYgZXZlbnQua2V5Q29kZSA8PSBOSU5FKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IFNQQUNFKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XG4gICAgICAgICAgICAvLyBSZWN1cGVyZSBvIGZvY28gYXDDs3MgYSBzZWxlw6fDo28gbcO6bHRpcGxhLCBwYXJhIHF1ZSBwb3NzYW1vcyBkaWdpdGFyIGFpbmRhIG1haXNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5fc2VhcmNoU2VsZWN0SW5wdXRGb2N1cygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhc28gZXNwZWNpYWwsIHNlIGNsaWNhciBlbSBFc2NhcGUsIHNlIGEgZW50cmFkYSBlc3RpdmVyIHZhemlhLCBmZWNoZSBvIG1lbnUgc3VzcGVuc28sIGNhc28gY29udHLDoXJpbywgZXN2YXppZSBvIGNhbXBvIGRlIHBlc3F1aXNhXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUNsZWFyT25Fc2NhcGVQcmVzc2VkICYmIChldmVudC5rZXlDb2RlID09PSBFU0NBUEUpICYmIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hTZWxlY3RJbnB1dFJlc2V0KHRydWUpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
705
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSyxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBT3BFLHdEQUF3RDtBQUN4RCxJQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUU1QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCO0lBb0xJLGtDQUFvQixrQkFBcUM7UUFBekQsaUJBQThEO1FBQTFD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QUFvQztJQUN6RDtRQUFULE1BQU0sRUFBRTtrQ0FBaUIsWUFBWTtvRUFBd0M7SUFDcEU7UUFBVCxNQUFNLEVBQUU7a0NBQWlCLFlBQVk7b0VBQXdDO0lBQ3BFO1FBQVQsTUFBTSxFQUFFO2tDQUFpQixZQUFZO29FQUFzQztJQUNsRTtRQUFULE1BQU0sRUFBRTtrQ0FBYyxZQUFZO2lFQUFrRDtJQTdKNUUsd0JBQXdCO1FBakJwQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0Isc3NLQUE0QztZQUU1QyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUF1QyxPQUFBLDBCQUF3QixFQUF4QixDQUF3QixDQUFDO29CQUN4RixLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLE9BQU8sRUFBRSxtQkFBbUI7YUFDL0I7WUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDbEQsQ0FBQzt5Q0FxTDBDLGlCQUFpQjtPQXBMaEQsd0JBQXdCLENBbWxCcEM7SUFBRCwrQkFBQztDQUFBLEFBbmxCRCxJQW1sQkM7U0FubEJZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEEsIEVOVEVSLCBFU0NBUEUsIE5JTkUsIFNQQUNFLCBaLCBaRVJPIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUcmFja0J5RnVuY3Rpb24sIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQYWdlRFRPIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvZHRvL3BhZ2UuZHRvJztcbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL29iamVjdC51dGlsJztcbmltcG9ydCB7IEdJUElGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEdJUElPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhbmdlPFQ+IHtcbiAgICB2YWx1ZXM6IFQgfCBUW107XG4gICAgc2VsZWN0ZWRBbGw/OiBib29sZWFuO1xufVxuXG4vKiogQSBhbHR1cmEgZG9zIGl0ZW5zIHNlbGVjaW9uYWRvcyBlbSB1bmlkYWRlcyBgcHhgLiAqL1xuY29uc3QgT1BUSU9OX0hFSUdIVF9QWCA9IDQ0O1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGBnaXBpLWlucHV0LXNlbGVjdGAsXG4gICAgZXhwb3J0QXM6ICdnaXBpSW5wdXRTZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgR0lQSUlucHV0U2VsZWN0Q29tcG9uZW50ID0+IEdJUElJbnB1dFNlbGVjdENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdnaXBpLWlucHV0LXNlbGVjdCcsXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHSVBJSW5wdXRTZWxlY3RDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9IGBnaXBpLWlucHV0LXNlbGVjdC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICBwcml2YXRlIF9jYWNoZTogYW55O1xuXG4gICAgcHJpdmF0ZSBfcGFnZU1vZGVsOiBQYWdlRFRPPFQ+O1xuXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIF9pdGVtU2l6ZVNjcm9sbFZpZXdwb3J0OiBudW1iZXIgPSA1O1xuXG4gICAgX3RvdGFsT3B0aW9uczogbnVtYmVyO1xuXG4gICAgX292ZXJsYXlWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBfZm9ybUNvbnRyb2xTZWFyY2g6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogZmFsc2UgfSk7XG5cbiAgICBpbnB1dEZpZWxkVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQ6IG51bWJlciA9IDA7XG5cbiAgICB0b2dnbGVBbGxDaGVja2JveENoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICB0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzTG9hZGluZzogbnVtYmVyID0gMDtcblxuICAgIC8vIEBWaWV3Q2hpbGQoJ3NlYXJjaFNlbGVjdElucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgc2VhcmNoU2VsZWN0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZm9ybWZpZWxkU2VsZWN0U2VhcmNoSW5wdXQnLCB7IHJlYWQ6IEdJUElGb3JtRmllbGRDb21wb25lbnQsIHN0YXRpYzogdHJ1ZSB9KSBmb3JtZmllbGRTZWxlY3RTZWFyY2hJbnB1dDogR0lQSUZvcm1GaWVsZENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1GaWVsZFNlbGVjdCcsIHsgcmVhZDogR0lQSUZvcm1GaWVsZENvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KSBmb3JtRmllbGRTZWxlY3Q6IEdJUElGb3JtRmllbGRDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdvdmVybGF5U2VsZWN0JywgeyByZWFkOiBHSVBJT3ZlcmxheUNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KSBvdmVybGF5U2VsZWN0OiBHSVBJT3ZlcmxheUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBjZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLl9uYW1lO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gdGhpcy5fbmFtZTtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWNpb25hcic7XG5cbiAgICBASW5wdXQoKSBsYWJlbFNlbGVjdEFsbDogc3RyaW5nID0gJ1NlbGVjaW9uYXIgdG9kb3MnO1xuXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIE1vc3RyYXIvb2N1bHRhciBvIGJvdMOjbyBsaW1wYXIgb3DDp8O1ZXMgc2VsZWNpb25hZGFzXG4gICAgQElucHV0KCkgc2hvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93T25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBoaWRlT25Fc2NhcGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd1NlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2hvd0Zvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHByb3BlcnR5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0cmFja0J5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgcHJvcGVydHlGbjogKG9iajogVCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmV4dEJhdGNoRm4hOiAocmVzZWFyY2hGaWVsZDogc3RyaW5nLCBwYWdlOiBudW1iZXIsIHBhcmFtTmV4dEJhdGNoPzogYW55KSA9PiBQcm9taXNlPFBhZ2VEVE88VD4+O1xuXG4gICAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDU7XG5cbiAgICAvLyBJbnB1dCBzZWFyY2ggLS0tLS0tLS1cbiAgICAvLyBBdGl2YXIgbGltcGFyIGlucHV0IGFvIHByZXNzaW9uYXIgZXNjYXBlXG4gICAgQElucHV0KCkgZW5hYmxlQ2xlYXJPbkVzY2FwZVByZXNzZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGlzYWJsZUlucHV0U2VhcmNoKCk7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb2FkaW5nID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVJbnB1dFNlYXJjaCgpO1xuICAgIH1cbiAgICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyYW1OZXh0QmF0Y2g6IGFueTtcbiAgICBASW5wdXQoKSBzZXQgcGFyYW1OZXh0QmF0Y2godmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1OZXh0QmF0Y2ggPSB2YWw7XG4gICAgfVxuICAgIGdldCBwYXJhbU5leHRCYXRjaCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1OZXh0QmF0Y2g7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsdWU6IFQgfCBUW107XG4gICAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBUIHwgVFtdKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWUgPSB0aGlzLnByb3BlcnR5ID8gZmlyc3RWYWx1ZVt0aGlzLnByb3BlcnR5XSA6IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShmaXJzdFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZVNlbGVjdGVkID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWUgPSB0aGlzLnByb3BlcnR5ID8gdmFsdWVbdGhpcy5wcm9wZXJ0eV0gOiB0aGlzLmdldFByb3BlcnR5VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IFQgfCBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogVFtdO1xuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbDogVFtdKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gICAgfVxuICAgIGdldCBvcHRpb25zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9uU2VsZWN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VCB8IFRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBUW10+KCk7XG4gICAgQE91dHB1dCgpIG9uT3BlbmVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIG9uU2VhcmNoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBvbkFkZENoYW5nZTogRXZlbnRFbWl0dGVyPEFkZENoYW5nZTxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZENoYW5nZTxUPj4oKTtcblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBPUFRJT05fSEVJR0hUX1BYO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2Nyb2xsVmlld3BvcnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGhlaWdodDogbnVtYmVyID0gMDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBoZWlnaHQgPSAodGhpcy5vcHRpb25zLmxlbmd0aCAqIE9QVElPTl9IRUlHSFRfUFgpIC0gKHRoaXMucGFnZVNpemUgPT09IHRoaXMub3B0aW9ucy5sZW5ndGggPyBPUFRJT05fSEVJR0hUX1BYIDogMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMub3ZlcmxheVNlbGVjdCkpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVNlbGVjdC5hbGlnbk92ZXJsYXkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWx1ZVNlYXJjaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2gudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB2YWx1ZSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpOiB2b2lkID0+IHRoaXMuX3NlYXJjaENoYW5nZSh2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlPcHRpb246IFRyYWNrQnlGdW5jdGlvbjxUPiA9IChpbmRleCwgb2JqKSA9PiBvYmogJiYgdGhpcy50cmFja0J5ICYmIG9ialt0aGlzLnRyYWNrQnldID8gb2JqW3RoaXMudHJhY2tCeV0gOiBvYmo7XG5cbiAgICBvbkNoYW5nZTogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xuXG4gICAgb25Ub3VjaDogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY29tcGFyZUZuKGYxOiBULCBmMjogVCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcGVydHkgJiYgIXRoaXMucHJvcGVydHlGbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPIHBhcsOibWV0cm8gcHJvcGVydHkgb3UgcHJvcGVydHlGbiBkZXZlIGNvbnRlciB1bSB2YWxvcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5ICYmIHRoaXMucHJvcGVydHlGbiAmJiBmMSAmJiBmMikge1xuICAgICAgICAgICAgY29uc3QgcHJvcEYxID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGYxKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BGMiA9IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShmMik7XG4gICAgICAgICAgICByZXR1cm4gcHJvcEYxID09PSBwcm9wRjI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZjEgJiYgZjIgJiYgZjFbdGhpcy5wcm9wZXJ0eV0gPT09IGYyW3RoaXMucHJvcGVydHldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcm9wZXJ0eVZhbHVlKGVudGl0eTogVCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwoZW50aXR5KSkge1xuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnByb3BlcnR5Rm4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlGbihlbnRpdHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlKGVudGl0eSwgdGhpcy5wcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFZhbHVlKGVudGl0eTogVCwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IHN0cmluZ1tdID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbnRpdHk7XG5cbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlID0gUmVmbGVjdC5nZXQodmFsdWUsIHByb3BlcnRpZXNbaV0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIGkgPT09IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNob3dPbkZvY3VzICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dENsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUZpZWxkU2VsZWN0LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0S2V5ZG93bihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICgoZXZlbnQuY29kZS50b1VwcGVyQ2FzZSgpID09PSAnRVNDQVBFJykgJiYgdGhpcy5oaWRlT25Fc2NhcGUpIHx8XG4gICAgICAgICAgICAoKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ0VOVEVSJykgfHwgKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ05VTVBBREVOVEVSJykpIHx8XG4gICAgICAgICAgICAoZXZlbnQuY29kZS50b1VwcGVyQ2FzZSgpID09PSAnVEFCJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyT3B0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZS5lbWl0KHRoaXMuX292ZXJsYXlWaXNpYmxlKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2NhY2hlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25TY3JvbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZS5lbWl0KHRoaXMuX292ZXJsYXlWaXNpYmxlKTtcbiAgICAgICAgdGhpcy5fY2FjaGUgPSB7fTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5maW5pdGUgc2Nyb2xsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGFzeW5jIG9uU2Nyb2xsKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5maW5pdGVTY3JvbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5uZXh0QmF0Y2hGbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgZnVuw6fDo28gXCJuZXh0QmF0Y2hGblwiIMOpIG9icmlnYXTDs3JpYSBlIG7Do28gZm9pIGluZm9ybWFkYScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fcGFnZU1vZGVsKSAmJiAodGhpcy5fcGFnZU1vZGVsLnRvdGFsUGFnZXMgPT09IHRoaXMuX3BhZ2VNb2RlbC5udW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWdlTnVtYmVyOiBudW1iZXIgPSAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5fcGFnZU1vZGVsKSA/IHRoaXMuX3BhZ2VNb2RlbC5udW1iZXIgKyAxIDogMDtcblxuICAgICAgICAvLyBNYW50ZW1vcyB1bSDDrW5kaWNlIGRlIHDDoWdpbmFzIGNhcnJlZ2FkYXMgcGVsbyBzZXJ2aWRvciBwYXJhIG7Do28gY2FycmVnYXJtb3Mgb3MgbWVzbW9zIGRhZG9zIGR1YXMgdmV6ZXNcbiAgICAgICAgLy8gSXNzbyDDqSBiYXNlYWRvIG5hIHDDoWdpbmEgZG8gc2Vydmlkb3IsIG7Do28gbmEgaW50ZXJmYWNlIGRvIHVzdcOhcmlvXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9jYWNoZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlW3BhZ2VOdW1iZXJdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2FjaGVbcGFnZU51bWJlcl0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nKys7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5uZXh0QmF0Y2hGbih0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZSwgcGFnZU51bWJlciwgdGhpcy5wYXJhbU5leHRCYXRjaCkudGhlbihwYWdlZERhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcGFnZU1vZGVsID0gcGFnZWREYXRhO1xuICAgICAgICAgICAgdGhpcy5fdG90YWxPcHRpb25zID0gcGFnZWREYXRhLnRvdGFsRWxlbWVudHM7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERlc2xvY2FtZW50byBkYSBsaW5oYSBpbmljaWFsLiBFc3RhIMOpIGEgcG9zacOnw6NvIHBhcmEgaW5zZXJpciBvcyBub3ZvcyBkYWRvc1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9wYWdlTW9kZWwubnVtYmVyICogdGhpcy5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgLy8gQ29waWFyIGRhZG9zIGV4aXN0ZW50ZXNcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcblxuICAgICAgICAgICAgLy8gSW5zZXJpciBub3ZhcyBsaW5oYXMgbmEgcG9zacOnw6NvIGNvcnJldGFcbiAgICAgICAgICAgIG9wdGlvbnMuc3BsaWNlKHN0YXJ0LCB0aGlzLnBhZ2VTaXplLCAuLi5wYWdlZERhdGEuY29udGVudCk7XG5cbiAgICAgICAgICAgIC8vIFZvbHRhIG8gYXJyYXkgZGUgb3DDp8O1ZXMgamEgYXR1YWxpemFkbyBwYXJhIGV4aWJpw6fDo29cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VUb2dnbGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIC8vIERpbWludWlyIG8gY29udGFkb3IgZGUgY2hhbWFkYXMgZGUgQVBJIHBlbmRlbnRlc1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmctLTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0KSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCh0aGlzLm9wdGlvbnMubGVuZ3RoLCAnc21vb3RoJyk7XG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25CdXR0b25TZWxlY3RPcHRpb25DbGljayhvcHRpb246IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleE9wdGlvbjogbnVtYmVyID0gdGhpcy52YWx1ZS5maW5kSW5kZXgobyA9PiBPYmplY3RVdGlsLmVxdWFscyhvLCBvcHRpb24pKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhPcHRpb24gPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBsVmFsdWUuc3BsaWNlKGluZGV4T3B0aW9uLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi5sVmFsdWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgb3B0aW9uXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQWxsQ2hlY2tib3goKTtcblxuICAgICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNob3dTZWxlY3RBbGwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICF0aGlzLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWUgJiYgIXRoaXMudmFsdWUubGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAgICF0aGlzLm9wdGlvbnMgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zICYmICF0aGlzLm9wdGlvbnMubGVuZ3RoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdGhpcy52YWx1ZSAmJiB0aGlzLl9wYWdlTW9kZWwgJiYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCkgJiYgKHRoaXMuX3RvdGFsT3B0aW9ucyA+IDApICYmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gdGhpcy5fdG90YWxPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPCB0aGlzLl90b3RhbE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdGhpcy52YWx1ZSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiB0aGlzLm9wdGlvbnMgJiYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9ICh0aGlzLnZhbHVlLmxlbmd0aCA+IDApICYmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkgJiYgKHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5vcHRpb25zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3B0aW9uQ2hlY2tib3hJc0NoZWNrZWQob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmZpbmRJbmRleChvID0+IE9iamVjdFV0aWwuZXF1YWxzKG8sIG9wdGlvbikpID4gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGlja1NlbGVjdEFsbEJ5T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gIXRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlVG9nZ2xlQWxsQ2hlY2tib3goKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VUb2dnbGVBbGxDaGVja2JveCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tBZGRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5zaG93U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRDaGFuZ2U6IEFkZENoYW5nZTxUPiA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRBbGw6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbkFkZENoYW5nZS5lbWl0KGFkZENoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnB1dCBzZWFyY2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwcml2YXRlIF9kaXNhYmxlSW5wdXRTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWFyY2hDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoQ2hhbmdlLmVtaXQodmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLl9wYWdlTW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IHt9O1xuXG4gICAgICAgICAgICB0aGlzLm9uU2Nyb2xsKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY2FsaXphIG8gaW5wdXQgZGUgcGVzcXVpc2FcbiAgICAgKi9cbiAgICBwdWJsaWMgX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0KSB8fCAhdGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXRhIG8gZm9jb1xuICAgICAgICB0aGlzLmZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgbyB2YWxvciBkbyBpbnB1dCBkZSBwZXNxdWlzYSBhdHVhbFxuICAgICAqIEBwYXJhbSBmb2N1cyBzZSBkZXZlIGZvY2FyIGFww7NzIGEgcmVkZWZpbmnDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyBfc2VhcmNoU2VsZWN0SW5wdXRSZXNldChmb2N1cz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guc2V0VmFsdWUoJycpO1xuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIHRlY2xhIHByZXNzaW9uYWRhLlxuICAgICAqIFBlcm1pdGUsIHBvciBleC4gc2VsZWNpb25hbmRvIGNvbSBhIHRlY2xhIGVudGVyLCBuYXZlZ2FuZG8gY29tIGFzIHRlY2xhcyBkZSBzZXRhLCBldGMuXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG9uSW5wdXRTZWFyY2hLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIEV2aXRlIGEgcHJvcGFnYcOnw6NvIGRlIHRvZG9zIG9zIGNhcmFjdGVyZXMgYWxmYW51bcOpcmljb3MgcGFyYSBldml0YXIgcHJvYmxlbWFzIGRlIHNlbGXDp8Ojb1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBBICYmIGV2ZW50LmtleUNvZGUgPD0gWikgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IFpFUk8gJiYgZXZlbnQua2V5Q29kZSA8PSBOSU5FKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IFNQQUNFKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XG4gICAgICAgICAgICAvLyBSZWN1cGVyZSBvIGZvY28gYXDDs3MgYSBzZWxlw6fDo28gbcO6bHRpcGxhLCBwYXJhIHF1ZSBwb3NzYW1vcyBkaWdpdGFyIGFpbmRhIG1haXNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5fc2VhcmNoU2VsZWN0SW5wdXRGb2N1cygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhc28gZXNwZWNpYWwsIHNlIGNsaWNhciBlbSBFc2NhcGUsIHNlIGEgZW50cmFkYSBlc3RpdmVyIHZhemlhLCBmZWNoZSBvIG1lbnUgc3VzcGVuc28sIGNhc28gY29udHLDoXJpbywgZXN2YXppZSBvIGNhbXBvIGRlIHBlc3F1aXNhXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUNsZWFyT25Fc2NhcGVQcmVzc2VkICYmIChldmVudC5rZXlDb2RlID09PSBFU0NBUEUpICYmIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hTZWxlY3RJbnB1dFJlc2V0KHRydWUpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|