@acorex/components 3.0.38 → 3.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/acorex-components.metadata.json +1 -1
- package/bundles/acorex-components.umd.js +37 -5
- package/bundles/acorex-components.umd.js.map +1 -1
- package/bundles/acorex-components.umd.min.js +1 -1
- package/bundles/acorex-components.umd.min.js.map +1 -1
- package/esm2015/lib/calendar/calendar-box/calendar-box.component.js +2 -2
- package/esm2015/lib/date-picker/date-picker.component.js +5 -2
- package/esm2015/lib/tree-view/tree-view.component.js +33 -4
- package/esm5/lib/calendar/calendar-box/calendar-box.component.js +2 -2
- package/esm5/lib/date-picker/date-picker.component.js +5 -2
- package/esm5/lib/tree-view/tree-view.component.js +33 -4
- package/fesm2015/acorex-components.js +37 -5
- package/fesm2015/acorex-components.js.map +1 -1
- package/fesm5/acorex-components.js +37 -5
- package/fesm5/acorex-components.js.map +1 -1
- package/package.json +1 -1
|
@@ -104,7 +104,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
|
|
|
104
104
|
if (userChange === void 0) { userChange = true; }
|
|
105
105
|
if (item[this.hasChildField] === false || this.selectionMode === 'single') {
|
|
106
106
|
item.select = !item.select;
|
|
107
|
-
if (item.parentNode && this.selectionMode !== 'single') {
|
|
107
|
+
if (item.parentNode && this.selectionMode !== 'single' && this.checkParents == true) {
|
|
108
108
|
this.changeParentSelect(item.parentNode);
|
|
109
109
|
}
|
|
110
110
|
if (item.select === true) {
|
|
@@ -125,10 +125,10 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
|
|
|
125
125
|
}
|
|
126
126
|
else {
|
|
127
127
|
item.select = !item.select;
|
|
128
|
-
if (item.parentNode && this.selectionMode === 'multiple') {
|
|
128
|
+
if (item.parentNode && this.selectionMode === 'multiple' && this.checkParents == true) {
|
|
129
129
|
this.changeParentSelect(item.parentNode);
|
|
130
130
|
}
|
|
131
|
-
if (this.selectionMode === 'multiple') {
|
|
131
|
+
if (this.selectionMode === 'multiple' && this.checkChilds == true) {
|
|
132
132
|
this.changeChildSelect(item, item.select);
|
|
133
133
|
}
|
|
134
134
|
if (item.select == true) {
|
|
@@ -191,6 +191,34 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
|
|
|
191
191
|
node.itemData.indeterminate = item.select === null ? true : false;
|
|
192
192
|
node.itemData.hasChild = item[this.hasChildField];
|
|
193
193
|
node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);
|
|
194
|
+
if (node.parent != null) {
|
|
195
|
+
node.parent.selectParent = function () {
|
|
196
|
+
if (item.parentNode['select'] != true) {
|
|
197
|
+
_this.internalSelectItem(item.parentNode, true);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
node.parent.unSelectParent = function () {
|
|
201
|
+
if (item.parentNode['select'] == true) {
|
|
202
|
+
_this.internalSelectItem(item.parentNode, true);
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
if (node.children != null && node.children.length > 0) {
|
|
207
|
+
node.children.selectChilds = function () {
|
|
208
|
+
item.childeren.forEach(function (element) {
|
|
209
|
+
if (element['select'] != true) {
|
|
210
|
+
_this.internalSelectItem(element, true);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
node.children.unSelectChilds = function () {
|
|
215
|
+
item.childeren.forEach(function (element) {
|
|
216
|
+
if (element['select'] == true) {
|
|
217
|
+
_this.internalSelectItem(element, true);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
}
|
|
194
222
|
return node;
|
|
195
223
|
};
|
|
196
224
|
AXTreeViewComponent.prototype.changeChildSelect = function (item, s) {
|
|
@@ -264,6 +292,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
|
|
|
264
292
|
this.selectedParents.push(item);
|
|
265
293
|
}
|
|
266
294
|
if (alldeselect === true) {
|
|
295
|
+
this.selectedParents = this.selectedParents.filter(function (c) { return c[_this.keyField] !== item[_this.keyField]; });
|
|
267
296
|
item.select = false;
|
|
268
297
|
}
|
|
269
298
|
if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {
|
|
@@ -786,4 +815,4 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
|
|
|
786
815
|
return AXTreeViewComponent;
|
|
787
816
|
}(AXBaseComponent));
|
|
788
817
|
export { AXTreeViewComponent };
|
|
789
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJeEQ7SUFBQTtRQUVFLGFBQVEsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRTFELENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFKRCxJQUlDOztBQUVEO0lBQUE7SUFRQSxDQUFDO0lBQUQseUJBQUM7QUFBRCxDQUFDLEFBUkQsSUFRQzs7QUFFRDtJQUFBO0lBSUEsQ0FBQztJQUFELCtCQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBRUQ7SUFBcUQsbURBQTRCO0lBQWpGOztJQUVBLENBQUM7SUFBRCxzQ0FBQztBQUFELENBQUMsQUFGRCxDQUFxRCxZQUFZLEdBRWhFOztBQUVEO0lBQTRELDBEQUE0QjtJQUF4Rjs7SUFFQSxDQUFDO0lBQUQsNkNBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBNEQsWUFBWSxHQUV2RTs7QUFFRDtJQUF5Qyx1Q0FBdUI7SUFBaEU7O0lBS0EsQ0FBQztJQUFELDBCQUFDO0FBQUQsQ0FBQyxBQUxELENBQXlDLFdBQVcsR0FLbkQ7O0FBT0Q7SUFBeUMsdUNBQWU7SUErRnRELDZCQUFvQixHQUFlO1FBQW5DLFlB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LE1BQU0sRUFBRTtrQ0FDTSxZQUFZOzhEQUFnQztJQUczRDtRQURDLE1BQU0sRUFBRTtrQ0FDSSxZQUFZOzREQUFnRTtJQUd6RjtRQURDLE1BQU0sRUFBRTtrQ0FDTSxZQUFZOzhEQUFnQztJQUczRDtRQURDLE1BQU0sRUFBRTtrQ0FDRyxZQUFZOzJEQUFnQztJQUd4RDtRQURDLE1BQU0sRUFBRTtrQ0FDSSxZQUFZOzREQUEwRTtJQUduRztRQURDLEtBQUssRUFBRTs7Z0VBQ3FCO0lBRzdCO1FBREMsTUFBTSxFQUFFO2tDQUNlLFlBQVk7dUVBQWdGO0lBbUJwSDtRQURDLEtBQUssRUFBRTs7aUVBQzhFO0lBN0YzRSxtQkFBbUI7UUFML0IsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGNBQWM7WUFDeEIsdWhGQUF5QztZQUN6QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtTQUN0QyxDQUFDO3lDQWdHeUIsVUFBVTtPQS9GeEIsbUJBQW1CLENBdXJCL0I7SUFBRCwwQkFBQztDQUFBLEFBdnJCRCxDQUF5QyxlQUFlLEdBdXJCdkQ7U0F2ckJZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBDb250ZW50Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhEYXRhRXZlbnQsIEFYSHRtbEV2ZW50LCBBWFZhbHVlRXZlbnQgfSBmcm9tICcuLi9iYXNlL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCwgQVhDb250ZXh0TWVudVByb21pc2VGdW5jdGlvbiwgQVhDb250ZXh0TWVudUZ1bmN0aW9uIH0gZnJvbSAnLi4vY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBWE1lbnVJdGVtIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3Tm9kZSB7XHJcbiAgY2hpbGRyZW46IEFYVHJlZVZpZXdOb2RlW107XHJcbiAgaXRlbURhdGE6IEFYVHJlZVZpZXdJdGVtRGF0YSA9IG5ldyBBWFRyZWVWaWV3SXRlbURhdGEoKTtcclxuICBwYXJlbnQ6IEFYVHJlZVZpZXdOb2RlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0l0ZW1EYXRhIHtcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBpbmRldGVybWluYXRlOiBib29sZWFuO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIG9wZW46IGJvb2xlYW47XHJcbiAgaGFzQ2hpbGQ6IGJvb2xlYW47XHJcbiAgaXRlbTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50IHtcclxuICBzb3VyY2U6IEFYVHJlZVZpZXdOb2RlO1xyXG4gIHRhcmdldDogQVhUcmVlVmlld05vZGU7XHJcbiAgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld3NlbGVjdGlvbkNoYW5nZWRFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxBWFRyZWVWaWV3Tm9kZT4ge1xyXG4gIGNvbXBvbmVudDogQVhUcmVlVmlld0NvbXBvbmVudDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdzZWxldGVkS2V5RmllbGRzQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PEFYVHJlZVZpZXdOb2RlPiB7XHJcbiAgY29tcG9uZW50OiBBWFRyZWVWaWV3Q29tcG9uZW50O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0l0ZW1DbGljayBleHRlbmRzIEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+IHtcclxuICBjb21wb25lbnQ6IEFYVHJlZVZpZXdDb21wb25lbnQ7XHJcbiAgaXRlbTogYW55O1xyXG4gIGZsYWc6IGJvb2xlYW47XHJcbiAgY2FuY2VsPzogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC10cmVlLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQge1xyXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbm9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKEFYRGF0YVNvdXJjZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwcml2YXRlIF9jb250ZW50RGF0YVNvdXJjZTogQVhEYXRhU291cmNlQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGlvbkxldmVsOiAnYWxsJyB8ICdub2RlcycgfCAncGFyZW50cycgPSAnYWxsJztcclxuXHJcbiAgLy8gdXNlciBjYW4gc2V0IG9ubHkgb25lIG9mIHRoaXMgL3NlbGVjdGVkRmllbGROYW1lIG9yIC9zZWxldGVkS2V5RmllbGRzXHJcbiAgLy9zZWxldGVkS2V5RmllbGRzIHNldCBpZCBvZiBub2RlcyBhbmQgcGFyZW50c1xyXG4gIC8vc2VsZWN0ZWRGaWVsZE5hbWUgc2V0IG5hbWUgb2YgZmllbGRzIHRoYXQgc2V0IHNlbGVjdGVzXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RlZEZpZWxkTmFtZTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8gQElucHV0KClcclxuICAvLyBzZWxlY3ROb2Rlc1JlY3Vyc2l2ZTogJ2FsbCcgfCAncGFyZW50cycgfCAnY2hpbGRzJyB8ICdub25lJyA9ICdhbGwnOyAvL2xlYWZcclxuXHJcbiAgQElucHV0KClcclxuICBjaGVja1BhcmVudHM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNoZWNrQ2hpbGRzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxldGVkS2V5RmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGtleUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGhhc0NoaWxkRmllbGQ6IHN0cmluZyA9ICdjaGlsZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9yZGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBsYXp5TG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dEcmFnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogJ21kJyB8ICdzbScgPSAnbWQnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld3NlbGVjdGlvbkNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdzZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGV0ZWRLZXlGaWVsZHNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld3NlbGV0ZWRLZXlGaWVsZHNDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFRyZWVWaWV3c2VsZWN0aW9uQ2hhbmdlZEV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkl0ZW1PcGVuaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdJdGVtQ2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFRyZWVWaWV3SXRlbUNsaWNrPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkl0ZW1DbG9zaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkl0ZW1EcmFnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkl0ZW1Nb3ZlZDogRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdJdGVtTW92ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdJdGVtTW92ZWRFdmVudD4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RhYmxlRmllbGQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkNvbnRleHRNZW51SXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PigpO1xyXG5cclxuICBzaG93U2VsZWN0Qm94OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxpc3Q6IGFueVtdID0gW107XHJcbiAgaXRlbVJvdzogYW55O1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRQYXJlbnRzOiBhbnlbXSA9IFtdO1xyXG4gIGxvYWRBbGxDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxpc3RMb2FkOiBhbnlbXSA9IFtdO1xyXG4gIGl0ZW1Ecm9wOiBhbnk7XHJcbiAgaXRlbURyYWc6IGFueTtcclxuICB2YWxpZERyb3A6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGxvY2tlZERyYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlsZEZpZWxkOiBzdHJpbmcgPSAnY2hpbGRlcmVuJztcclxuICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NlbGVjdGVkSXRlbTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvY2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBjb250ZXh0TWVudUl0ZW1zOiBBWE1lbnVJdGVtW10gfCBBWENvbnRleHRNZW51UHJvbWlzZUZ1bmN0aW9uIHwgQVhDb250ZXh0TWVudUZ1bmN0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9uQ29udGV4dE1lbnVJdGVtKGU6IEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCkge1xyXG4gICAgdGhpcy5vbkNvbnRleHRNZW51SXRlbUNsaWNrLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5saXN0ID0gW107XHJcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcclxuICB9XHJcblxyXG4gIGludGVybmFsU2VsZWN0SXRlbShpdGVtLCB1c2VyQ2hhbmdlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcclxuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5zZWxlY3QgPT09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICAgICAgZS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcclxuXHJcbiAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZFNlbGVjdChpdGVtLCBpdGVtLnNlbGVjdCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLnNlbGVjdCA9PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodXNlckNoYW5nZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLm1ha2VOb2RlKGl0ZW0pLFxyXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYWtlTm9kZShpdGVtLCBhZGRDaGlsZHJlbjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IG5vZGU6IEFYVHJlZVZpZXdOb2RlID0gbmV3IEFYVHJlZVZpZXdOb2RlKCk7XHJcbiAgICBpZiAoYWRkQ2hpbGRyZW4pIHtcclxuICAgICAgbm9kZS5jaGlsZHJlbiA9IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSA9PT0gdW5kZWZpbmVkID8gW10gOiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0/Lm1hcCgobSkgPT4gdGhpcy5tYWtlTm9kZShtKSk7XHJcbiAgICB9XHJcbiAgICBub2RlLml0ZW1EYXRhLmRpc2FibGVkID0gaXRlbS5kaXNhYmxlZCA9PT0gdHJ1ZSA/IGl0ZW0uZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgIG5vZGUuaXRlbURhdGEub3BlbiA9IGl0ZW0ub3BlbiA9PT0gdHJ1ZSA/IGl0ZW0ub3BlbiA6IGZhbHNlO1xyXG4gICAgbm9kZS5pdGVtRGF0YS5rZXkgPSBpdGVtW3RoaXMua2V5RmllbGRdO1xyXG5cclxuICAgIGNvbnN0IGMgPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAodmFyIGsgaW4gaXRlbSkge1xyXG4gICAgICBpID0gaSArIDE7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBrICE9ICdzZWxlY3QnICYmXHJcbiAgICAgICAgayAhPSAnaGFzQ2hpbGQnICYmXHJcbiAgICAgICAgayAhPSAnbG9hZGluZycgJiZcclxuICAgICAgICBrICE9ICdyZXF1ZXN0SWQnICYmXHJcbiAgICAgICAgayAhPSAnZGlzYWJsZWQnICYmXHJcbiAgICAgICAgayAhPSAnb3BlbicgJiZcclxuICAgICAgICBrICE9ICdwYXJlbnROb2RlJyAmJlxyXG4gICAgICAgIGsgIT0gJ3RvZ2dsZScgJiZcclxuICAgICAgICBrICE9ICdsb2FkZWQnICYmXHJcbiAgICAgICAgayAhPSAnaW5kZXRlcm1pbmF0ZScgJiZcclxuICAgICAgICBrICE9IHRoaXMuY2hpbGRGaWVsZFxyXG4gICAgICApIHtcclxuICAgICAgICAvL2MucHVzaCh7IGs6IGl0ZW1ba10gfSk7XHJcbiAgICAgICAgY1trXSA9IGl0ZW1ba107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBub2RlLml0ZW1EYXRhLml0ZW0gPSBjOyAvL1RPIERPXHJcbiAgICBub2RlLml0ZW1EYXRhLnNlbGVjdGVkID0gaXRlbS5zZWxlY3QgPT09IHRydWUgPyBpdGVtLnNlbGVjdCA6IGZhbHNlO1xyXG4gICAgbm9kZS5pdGVtRGF0YS5pbmRldGVybWluYXRlID0gaXRlbS5zZWxlY3QgPT09IG51bGwgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBub2RlLml0ZW1EYXRhLmhhc0NoaWxkID0gaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdO1xyXG4gICAgbm9kZS5wYXJlbnQgPSBpdGVtLnBhcmVudE5vZGUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0aGlzLm1ha2VOb2RlKGl0ZW0ucGFyZW50Tm9kZSwgZmFsc2UpO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZUNoaWxkU2VsZWN0KGl0ZW0sIHMpIHtcclxuICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlID09ICdhbGwnIHx8IHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUgPT0gJ2NoaWxkcycpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrQ2hpbGRzID09IHRydWUpIHtcclxuICAgICAgaXRlbS5zZWxlY3QgPSBzO1xyXG4gICAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5mb3JFYWNoKChlbG0pID0+IHtcclxuICAgICAgICAgIGlmIChlbG1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBlbG0uc2VsZWN0ID0gcztcclxuXHJcbiAgICAgICAgICAgIGlmIChzID09PSB0cnVlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGVsbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZFNlbGVjdChlbG0sIHMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XHJcbiAgICAgICAgICAgIGlmIChzID09PSB0cnVlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBlbG1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGVsbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBlbG1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3QgPSBzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZVBhcmVudFNlbGVjdChpdGVtKSB7XHJcbiAgICAvL2lmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlID09ICdhbGwnIHx8IHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUgPT0gJ3BhcmVudHMnKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja1BhcmVudHMpIHtcclxuICAgICAgbGV0IGFsbHNlbGVjdCA9IHRydWU7XHJcbiAgICAgIGxldCBhbGxkZXNlbGVjdCA9IHRydWU7XHJcbiAgICAgIGxldCBvbmVzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgbGV0IGlzaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgYWxsZGVzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgb25lc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gZmFsc2UgfHwgaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBhbGxzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpc2luZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhbGxkZXNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBvbmVzZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgICAgICBhbGxzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvbmVzZWxlY3QgfHwgKGlzaW5kZXRlcm1pbmF0ZSAmJiAhYWxsc2VsZWN0KSkge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYWxsc2VsZWN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzID0gdGhpcy5zZWxlY3RlZFBhcmVudHMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhbGxkZXNlbGVjdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiBpdGVtLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uSXRlbUNsaWNrLnN1YnNjcmliZSgoZGF0YTogQVhUcmVlVmlld0l0ZW1DbGljaykgPT4ge1xyXG4gICAgICBpZiAoIWRhdGEuY2FuY2VsKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGRhdGEuaXRlbSwgZGF0YS5mbGFnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpdGVtZGJDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlT25Ob2RlQ2xpY2soZSwgaXRlbSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPbk5vZGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtLCBmbGFnID0gZmFsc2UpIHtcclxuICAgIC8vICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtKTtcclxuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEV2ZW50OiBlLFxyXG4gICAgICBpdGVtLFxyXG4gICAgICBmbGFnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU5vZGUoaXRlbSwgZmxhZyA9IGZhbHNlKSB7XHJcbiAgICAvL2l0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UgJiZcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnICYmICFmbGFnKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgaXRlbS5oYXNDaGlsZCA9PSB0cnVlKSB7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW0udG9nZ2xlID0gIWl0ZW0udG9nZ2xlO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgaXRlbS5oYXNDaGlsZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJiBpdGVtLmxvYWRlZCAhPT0gdHJ1ZSAmJiB0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gaXRlbTtcclxuICAgICAgICBjb25zdCB1aWQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDApO1xyXG4gICAgICAgIGl0ZW0ucmVxdWVzdElkID0gdWlkO1xyXG4gICAgICAgIHRoaXMubGlzdExvYWQucHVzaChpdGVtKTtcclxuICAgICAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChpdGVtKTtcclxuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbVJvdyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0udG9nZ2xlICYmIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0ub3BlbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1PcGVuaW5nLmVtaXQodGhpcy5tYWtlTm9kZShpdGVtKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWl0ZW0udG9nZ2xlICYmIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0ub3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25JdGVtQ2xvc2luZy5lbWl0KHRoaXMubWFrZU5vZGUoaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcclxuICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkLnN1YnNjcmliZSgoX2RhdGEpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKG51bGwpO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IF9kYXRhLmRhdGEucmVzdWx0O1xyXG5cclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0aGlzLnNlbGVjdGFibGVGaWVsZCAhPSAnJyA/IChlbFt0aGlzLnNlbGVjdGFibGVGaWVsZF0gPyBlbFt0aGlzLnNlbGVjdGFibGVGaWVsZF0gOiBmYWxzZSkgOiBmYWxzZTtcclxuICAgICAgICAgIGVsLnNlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJiBlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG4uaW5jbHVkZXMoZWxbdGhpcy5rZXlGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrUGFyZW50cyA9PSBmYWxzZSAmJiB0aGlzLmNoZWNrQ2hpbGRzID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9zZWxlY3QgcGFyZW50IHdoZW4gY2hlY2sgY2hpbGQgYW5kIGNoZWNrIHBhcmVudCBpcyBmYWxzZSBUT0RPIGNoZWNrIHRoaXMgQWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKGVsKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShlbCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZE5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlICYmIGVsW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja1BhcmVudHMgPT0gZmFsc2UgJiYgdGhpcy5jaGVja0NoaWxkcyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgLy9zZWxlY3QgcGFyZW50IHdoZW4gY2hlY2sgY2hpbGQgYW5kIGNoZWNrIHBhcmVudCBpcyBmYWxzZSBUT0RPIGNoZWNrIHRoaXMgQWN0aW9uXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oZWwpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLm9wZW4oZWwpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oZWwpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gdGhpcy5saXN0TG9hZC5maWx0ZXIoKGMpID0+IGMucmVxdWVzdElkID09PSBfZGF0YS5kYXRhLnJlcXVlc3RJZClbMF07XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZCA9IHRoaXMubGlzdExvYWQuZmlsdGVyKChjKSA9PiBjLnJlcXVlc3RJZCAhPT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWQpO1xyXG4gICAgICAgIHRoaXMuaXRlbVJvdy5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1Sb3cgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Sb3cpO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdICYmIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0aGlzLnNlbGVjdGFibGVGaWVsZCAhPSAnJyA/IChlbFt0aGlzLnNlbGVjdGFibGVGaWVsZF0gPyBlbFt0aGlzLnNlbGVjdGFibGVGaWVsZF0gOiBmYWxzZSkgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIC8vIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0aGlzLnNlbGVjdGFibGVGaWVsZCAhPSAnJyA/IGVsW3RoaXMuc2VsZWN0YWJsZUZpZWxkXSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF1bdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoXSA9IGVsO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdID0gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHJlc3VsdFtpXS5kaXNhYmxlZENoZWNrQm94ID1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUZpZWxkICE9ICcnID8gKHJlc3VsdFtpXVt0aGlzLnNlbGVjdGFibGVGaWVsZF0gPyByZXN1bHRbaV1bdGhpcy5zZWxlY3RhYmxlRmllbGRdIDogZmFsc2UpIDogZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAncGFyZW50cycgJiYgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5kaXNhYmxlZENoZWNrQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScgJiYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUgPT0gJ2FsbCcgfHwgdGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSA9PSAnY2hpbGRzJykpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJyAmJiB0aGlzLmNoZWNrQ2hpbGRzID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5zZWxlY3QgPSB0aGlzLml0ZW1Sb3cuc2VsZWN0ID09PSAodW5kZWZpbmVkIHx8IG51bGwpID8gZmFsc2UgOiB0aGlzLml0ZW1Sb3cuc2VsZWN0O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1Sb3cuc2VsZWN0ID09PSB0cnVlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnbXVsdGlwbGUnICYmIHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSByZXN1bHRbaV1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJlc3VsdFtpXS5wYXJlbnROb2RlID0gdGhpcy5pdGVtUm93O1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxldGVkS2V5RmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZXRlZEtleUZpZWxkcy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG4uaW5jbHVkZXMocmVzdWx0W2ldW3RoaXMua2V5RmllbGRdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja1BhcmVudHMgPT0gZmFsc2UgJiYgdGhpcy5jaGVja0NoaWxkcyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdCBwYXJlbnQgd2hlbiBjaGVjayBjaGlsZCBhbmQgY2hlY2sgcGFyZW50IGlzIGZhbHNlIFRPRE8gY2hlY2sgdGhpcyBBY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkSXRlbSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZE5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUgJiYgcmVzdWx0W2ldW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tQYXJlbnRzID09IGZhbHNlICYmIHRoaXMuY2hlY2tDaGlsZHMgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdCBwYXJlbnQgd2hlbiBjaGVjayBjaGlsZCBhbmQgY2hlY2sgcGFyZW50IGlzIGZhbHNlIFRPRE8gY2hlY2sgdGhpcyBBY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW4ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0W2ldW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLml0ZW1Sb3cubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRJdGVtID09IHRydWUgJiYgIXRoaXMubG9jZWQpIHtcclxuICAgICAgICB0aGlzLmxvY2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHNDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgLy8gdmFsdWU6IHRoaXMubWFrZU5vZGUoaXRlbSksXHJcbiAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NlbGVjdEJveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBvbkl0ZW1DbGljayhlLCB2KSB7XHJcblxyXG4gIC8vIH1cclxuXHJcbiAgb25EcmFnU3RhcnQoZTogRXZlbnQsIHYpIHtcclxuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XHJcbiAgICAgIHRoaXMuaXRlbURyYWcgPSB2O1xyXG4gICAgICB0aGlzLm9uSXRlbURyYWcuZW1pdCh2KTtcclxuICAgIH1cclxuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdFbmQoZSwgdikge1xyXG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcclxuICAgICAgdGhpcy5pdGVtRHJvcCA9IHY7XHJcbiAgICB9XHJcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZHJvcChlKSB7XHJcbiAgICAvLyAgdGhpcy5vbkl0ZW1Ecm9wLmVtaXQodGhpcy5pdGVtRHJvcCk7XHJcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xyXG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2FtZUNoaWxkZSh0aGlzLml0ZW1EcmFnLCB0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgaWYgKHRoaXMudmFsaWREcm9wICYmIHRoaXMuaXRlbURyYWdbdGhpcy5rZXlGaWVsZF0gIT09IHRoaXMuaXRlbURyb3BbdGhpcy5rZXlGaWVsZF0gJiYgdGhpcy5pdGVtRHJhZy5wYXJlbnROb2RlICE9PSB0aGlzLml0ZW1Ecm9wKSB7XHJcbiAgICAgICAgY29uc3QgbW92ZWRFdmVudDogQVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50ID0gbmV3IEFYVHJlZVZpZXdJdGVtTW92ZWRFdmVudCgpO1xyXG4gICAgICAgIG1vdmVkRXZlbnQuc291cmNlID0gdGhpcy5tYWtlTm9kZSh0aGlzLml0ZW1EcmFnKTtcclxuICAgICAgICBtb3ZlZEV2ZW50LnRhcmdldCA9IHRoaXMubWFrZU5vZGUodGhpcy5pdGVtRHJvcCk7XHJcbiAgICAgICAgdGhpcy5sb2NrZWREcmFnID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbURyYWcpO1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJvcCk7XHJcbiAgICAgICAgbW92ZWRFdmVudC5yZXNvbHZlID0gKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKHRoaXMuaXRlbURyYWcpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdEcm9wSXRlbSh0aGlzLml0ZW1EcmFnLCB0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9ja2VkRHJhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1Nb3ZlZC5lbWl0KG1vdmVkRXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHNhbWVDaGlsZGUocGFyZW50LCBjaGlsZCkge1xyXG4gICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGlmIChwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5rZXlGaWVsZF0gPT0gY2hpbGRbdGhpcy5rZXlGaWVsZF0pIHtcclxuICAgICAgICAgIHRoaXMudmFsaWREcm9wID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXSAmJiBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNhbWVDaGlsZGUocGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLCBjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHBhcmVudFt0aGlzLmtleUZpZWxkXSA9PSBjaGlsZFt0aGlzLmtleUZpZWxkXSkge1xyXG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJhZ0Ryb3BJdGVtKGl0ZW1DaGlsZCwgaXRlbVBhcmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJykge1xyXG4gICAgICBpdGVtUGFyZW50LmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtQ2hpbGQucGFyZW50Tm9kZSkge1xyXG4gICAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdID0gaXRlbUNoaWxkLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXS5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1DaGlsZFt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxpc3QgPSB0aGlzLmxpc3QuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtQ2hpbGRbdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgfVxyXG4gICAgaXRlbUNoaWxkLnBhcmVudE5vZGUgPSBpdGVtUGFyZW50O1xyXG4gICAgaWYgKGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aF0gPSBpdGVtQ2hpbGQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0gPSBbXTtcclxuICAgICAgaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdWzBdID0gaXRlbUNoaWxkO1xyXG4gICAgICBpZiAoaXRlbVBhcmVudFt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW1QYXJlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW1QYXJlbnQudG9nZ2xlID0gIWl0ZW1QYXJlbnQudG9nZ2xlO1xyXG4gICAgICAgIGl0ZW1QYXJlbnQubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuaGFzQ2hpbGRGaWVsZF0gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbUNoaWxkLnBhcmVudE5vZGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RDaGFuZ2UoZmllbGQsIHZhbHVlKSB7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5saXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0aGlzLmNoYW5nZUNoaWxlZCh0aGlzLmxpc3RbaW5kZXhdLCBmaWVsZCwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkQWxsQ2hpbGRyZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlQ2hpbGVkKGl0ZW0sIGZpZWxkLCB2YWx1ZSkge1xyXG4gICAgaWYgKGZpZWxkID09PSAndG9nZ2xlJyAmJiAoaXRlbS5sb2FkZWQgPT09IGZhbHNlIHx8IGl0ZW0ubG9hZGVkID09PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvYWRBbGxDaGlsZHJlbiA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlTm9kZShpdGVtKTtcclxuICAgICAgICBpdGVtW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICBpZiAoZmllbGQgPT09ICdzZWxlY3QnICYmIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UgJiYgdmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkID09PSAnc2VsZWN0Jykge1xyXG4gICAgICBpdGVtLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUgJiYgaXRlbVt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZWQoZWxlbWVudCwgZmllbGQsIHZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dMb2FkaW5nKGl0ZW0pOiB2b2lkIHtcclxuICAgIGl0ZW0ubG9hZGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhpZGVMb2FkaW5nKGl0ZW0pOiB2b2lkIHtcclxuICAgIGlmIChpdGVtICE9IG51bGwpIHtcclxuICAgICAgaXRlbS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbkFsbChsb2FkQWxsOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIC8vIGlmIChsb2FkQWxsKSB7XHJcbiAgICAvLyB0aGlzLmxvYWRBbGxDaGlsZHJlbiA9IHRydWU7XHJcbiAgICAvLyB0aGlzLmxpc3RDaGFuZ2UoJ3RvZ2dsZScsIHRydWUpO1xyXG4gICAgLy99IGVsc2Uge1xyXG4gICAgdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCB0cnVlKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RJdGVtKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtWydzZWxlY3QnXSAhPSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0sIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1blNlbGVjdEl0ZW0oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW1bJ3NlbGVjdCddID09IHRydWUpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW1bJ3RvZ2dsZSddICE9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlTm9kZShpdGVtLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzY3JvbEludG9WaWV3KGl0ZW0pIHtcclxuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1pZD0nJHtpdGVtW3RoaXMua2V5RmllbGRdfSddYCk7XHJcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VBbGwoKSB7XHJcbiAgICB0aGlzLmxpc3RDaGFuZ2UoJ3RvZ2dsZScsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLmxpc3RDaGFuZ2UoJ3NlbGVjdCcsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuU2VsZWN0QWxsKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5saXN0Q2hhbmdlKCdzZWxlY3QnLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE5vZGVzKCk6IEFYVHJlZVZpZXdOb2RlW10ge1xyXG4gICAgY29uc3Qgc2VsZWN0SXRlbXNOb2RlID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBzZWxlY3RJdGVtc05vZGUucHVzaCh0aGlzLm1ha2VOb2RlKGUpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNlbGVjdEl0ZW1zTm9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFBhcmVudHMoKTogQVhUcmVlVmlld05vZGVbXSB7XHJcbiAgICBjb25zdCBzZWxlY3RJdGVtc1BhcmVudCA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBzZWxlY3RJdGVtc1BhcmVudC5wdXNoKHRoaXMubWFrZU5vZGUoZSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNQYXJlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnRzSWQoaXRlbSkge1xyXG4gICAgbGV0IGtleUZpZWxkcyA9IFtdO1xyXG4gICAga2V5RmllbGRzLnB1c2goaXRlbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICBpZiAoaXRlbS5wYXJlbnROb2RlKSB7XHJcbiAgICAgIGtleUZpZWxkcy5wdXNoKC4uLnRoaXMuZ2V0UGFyZW50c0lkKGl0ZW0ucGFyZW50Tm9kZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleUZpZWxkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZEtleUZpZWxkcygpIHtcclxuICAgIGxldCBrZXlGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlbG0pID0+IHtcclxuICAgICAgdmFyIElkcyA9IHRoaXMuZ2V0UGFyZW50c0lkKGVsbSk7XHJcbiAgICAgIGlmIChJZHMpIHtcclxuICAgICAgICBrZXlGaWVsZHMucHVzaChJZHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBrZXlGaWVsZHM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
818
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJeEQ7SUFBQTtRQUVFLGFBQVEsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRTFELENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFKRCxJQUlDOztBQUVEO0lBQUE7SUFRQSxDQUFDO0lBQUQseUJBQUM7QUFBRCxDQUFDLEFBUkQsSUFRQzs7QUFFRDtJQUFBO0lBSUEsQ0FBQztJQUFELCtCQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBRUQ7SUFBcUQsbURBQTRCO0lBQWpGOztJQUVBLENBQUM7SUFBRCxzQ0FBQztBQUFELENBQUMsQUFGRCxDQUFxRCxZQUFZLEdBRWhFOztBQUVEO0lBQTRELDBEQUE0QjtJQUF4Rjs7SUFFQSxDQUFDO0lBQUQsNkNBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBNEQsWUFBWSxHQUV2RTs7QUFFRDtJQUF5Qyx1Q0FBdUI7SUFBaEU7O0lBS0EsQ0FBQztJQUFELDBCQUFDO0FBQUQsQ0FBQyxBQUxELENBQXlDLFdBQVcsR0FLbkQ7O0FBT0Q7SUFBeUMsdUNBQWU7SUErRnRELDZCQUFvQixHQUFlO1FBQW5DLFlB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Q29CO0lBRzVCO1FBREMsS0FBSyxFQUFFOztpRUFDcUI7SUFHN0I7UUFEQyxLQUFLLEVBQUU7O3lEQUNnQjtJQUd4QjtRQURDLEtBQUssRUFBRTs7OERBQ3dCO0lBR2hDO1FBREMsS0FBSyxFQUFFOzt5REFDa0I7SUFHMUI7UUFEQyxLQUFLLEVBQUU7OzREQUNvQjtJQUc1QjtRQURDLEtBQUssRUFBRTs7MERBQ21CO0lBRzNCO1FBREMsS0FBSyxFQUFFOztxREFDaUI7SUFHekI7UUFEQyxNQUFNLEVBQUU7a0NBQ1MsWUFBWTtpRUFBd0Y7SUFHdEg7UUFEQyxNQUFNLEVBQUU7a0NBQ2dCLFlBQVk7d0VBQStGO0lBR3BJO1FBREMsTUFBTSxFQUFFO2tDQUNNLFlBQVk7OERBQWdDO0lBRzNEO1FBREMsTUFBTSxFQUFFO2tDQUNJLFlBQVk7NERBQWdFO0lBR3pGO1FBREMsTUFBTSxFQUFFO2tDQUNNLFlBQVk7OERBQWdDO0lBRzNEO1FBREMsTUFBTSxFQUFFO2tDQUNHLFlBQVk7MkRBQWdDO0lBR3hEO1FBREMsTUFBTSxFQUFFO2tDQUNJLFlBQVk7NERBQTBFO0lBR25HO1FBREMsS0FBSyxFQUFFOztnRUFDcUI7SUFHN0I7UUFEQyxNQUFNLEVBQUU7a0NBQ2UsWUFBWTt1RUFBZ0Y7SUFtQnBIO1FBREMsS0FBSyxFQUFFOztpRUFDOEU7SUE3RjNFLG1CQUFtQjtRQUwvQixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsY0FBYztZQUN4Qix1aEZBQXlDO1lBQ3pDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1NBQ3RDLENBQUM7eUNBZ0d5QixVQUFVO09BL0Z4QixtQkFBbUIsQ0FvdEIvQjtJQUFELDBCQUFDO0NBQUEsQUFwdEJELENBQXlDLGVBQWUsR0FvdEJ2RDtTQXB0QlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIENvbnRlbnRDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhEYXRhU291cmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UvZGF0YXNvdXJjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWERhdGFFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVFdmVudCB9IGZyb20gJy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuaW1wb3J0IHsgQVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50LCBBWENvbnRleHRNZW51UHJvbWlzZUZ1bmN0aW9uLCBBWENvbnRleHRNZW51RnVuY3Rpb24gfSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEFYTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdOb2RlIHtcclxuICBjaGlsZHJlbjogQVhUcmVlVmlld05vZGVbXTtcclxuICBpdGVtRGF0YTogQVhUcmVlVmlld0l0ZW1EYXRhID0gbmV3IEFYVHJlZVZpZXdJdGVtRGF0YSgpO1xyXG4gIHBhcmVudDogQVhUcmVlVmlld05vZGU7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3SXRlbURhdGEge1xyXG4gIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW47XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgb3BlbjogYm9vbGVhbjtcclxuICBoYXNDaGlsZDogYm9vbGVhbjtcclxuICBpdGVtOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3SXRlbU1vdmVkRXZlbnQge1xyXG4gIHNvdXJjZTogQVhUcmVlVmlld05vZGU7XHJcbiAgdGFyZ2V0OiBBWFRyZWVWaWV3Tm9kZTtcclxuICByZXNvbHZlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3c2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PEFYVHJlZVZpZXdOb2RlPiB7XHJcbiAgY29tcG9uZW50OiBBWFRyZWVWaWV3Q29tcG9uZW50O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld3NlbGV0ZWRLZXlGaWVsZHNDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8QVhUcmVlVmlld05vZGU+IHtcclxuICBjb21wb25lbnQ6IEFYVHJlZVZpZXdDb21wb25lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3SXRlbUNsaWNrIGV4dGVuZHMgQVhIdG1sRXZlbnQ8TW91c2VFdmVudD4ge1xyXG4gIGNvbXBvbmVudDogQVhUcmVlVmlld0NvbXBvbmVudDtcclxuICBpdGVtOiBhbnk7XHJcbiAgZmxhZzogYm9vbGVhbjtcclxuICBjYW5jZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXRyZWUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0NvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCB7XHJcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBub2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhU291cmNlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0aW9uTGV2ZWw6ICdhbGwnIHwgJ25vZGVzJyB8ICdwYXJlbnRzJyA9ICdhbGwnO1xyXG5cclxuICAvLyB1c2VyIGNhbiBzZXQgb25seSBvbmUgb2YgdGhpcyAvc2VsZWN0ZWRGaWVsZE5hbWUgb3IgL3NlbGV0ZWRLZXlGaWVsZHNcclxuICAvL3NlbGV0ZWRLZXlGaWVsZHMgc2V0IGlkIG9mIG5vZGVzIGFuZCBwYXJlbnRzXHJcbiAgLy9zZWxlY3RlZEZpZWxkTmFtZSBzZXQgbmFtZSBvZiBmaWVsZHMgdGhhdCBzZXQgc2VsZWN0ZXNcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkRmllbGROYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLyBASW5wdXQoKVxyXG4gIC8vIHNlbGVjdE5vZGVzUmVjdXJzaXZlOiAnYWxsJyB8ICdwYXJlbnRzJyB8ICdjaGlsZHMnIHwgJ25vbmUnID0gJ2FsbCc7IC8vbGVhZlxyXG5cclxuICBASW5wdXQoKVxyXG4gIGNoZWNrUGFyZW50czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2hlY2tDaGlsZHM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGV0ZWRLZXlGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAga2V5RmllbGQ6IHN0cmluZyA9ICdpZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGFzQ2hpbGRGaWVsZDogc3RyaW5nID0gJ2NoaWxkJztcclxuXHJcbiAgQElucHV0KClcclxuICBib3JkZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxhenlMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd0RyYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaXplOiAnbWQnIHwgJ3NtJyA9ICdtZCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFRyZWVWaWV3c2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld3NlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZXRlZEtleUZpZWxkc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFRyZWVWaWV3c2VsZXRlZEtleUZpZWxkc0NoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdzZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbU9wZW5pbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1DbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdJdGVtQ2xpY2s+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbUNsb3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbURyYWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbU1vdmVkOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50PigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGFibGVGaWVsZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQ29udGV4dE1lbnVJdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWENvbnRleHRNZW51SXRlbUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENvbnRleHRNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XHJcblxyXG4gIHNob3dTZWxlY3RCb3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGlzdDogYW55W10gPSBbXTtcclxuICBpdGVtUm93OiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZFBhcmVudHM6IGFueVtdID0gW107XHJcbiAgbG9hZEFsbENoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGlzdExvYWQ6IGFueVtdID0gW107XHJcbiAgaXRlbURyb3A6IGFueTtcclxuICBpdGVtRHJhZzogYW55O1xyXG4gIHZhbGlkRHJvcDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbG9ja2VkRHJhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNoaWxkRmllbGQ6IHN0cmluZyA9ICdjaGlsZGVyZW4nO1xyXG4gIHNob3dDb250ZXh0TWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0ZWRJdGVtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9jZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGNvbnRleHRNZW51SXRlbXM6IEFYTWVudUl0ZW1bXSB8IEFYQ29udGV4dE1lbnVQcm9taXNlRnVuY3Rpb24gfCBBWENvbnRleHRNZW51RnVuY3Rpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Db250ZXh0TWVudUl0ZW0oZTogQVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ29udGV4dE1lbnVJdGVtQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLmZldGNoKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0sIHVzZXJDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSB8fCB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ID0gIWl0ZW0uc2VsZWN0O1xyXG4gICAgICBpZiAoaXRlbS5wYXJlbnROb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScgJiYgdGhpcy5jaGVja1BhcmVudHMgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uc2VsZWN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUuc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5zZWxlY3QgPSAhaXRlbS5zZWxlY3Q7XHJcblxyXG4gICAgICBpZiAoaXRlbS5wYXJlbnROb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJyAmJiB0aGlzLmNoZWNrUGFyZW50cyA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnICYmIHRoaXMuY2hlY2tDaGlsZHMgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2hpbGRTZWxlY3QoaXRlbSwgaXRlbS5zZWxlY3QpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbS5zZWxlY3QgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzID0gdGhpcy5zZWxlY3RlZFBhcmVudHMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICAgICAgZS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzID0gdGhpcy5zZWxlY3RlZFBhcmVudHMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHVzZXJDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5tYWtlTm9kZShpdGVtKSxcclxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZU5vZGUoaXRlbSwgYWRkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBub2RlOiBBWFRyZWVWaWV3Tm9kZSA9IG5ldyBBWFRyZWVWaWV3Tm9kZSgpO1xyXG4gICAgaWYgKGFkZENoaWxkcmVuKSB7XHJcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gPT09IHVuZGVmaW5lZCA/IFtdIDogaXRlbVt0aGlzLmNoaWxkRmllbGRdPy5tYXAoKG0pID0+IHRoaXMubWFrZU5vZGUobSkpO1xyXG4gICAgfVxyXG4gICAgbm9kZS5pdGVtRGF0YS5kaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZWQgPT09IHRydWUgPyBpdGVtLmRpc2FibGVkIDogZmFsc2U7XHJcbiAgICBub2RlLml0ZW1EYXRhLm9wZW4gPSBpdGVtLm9wZW4gPT09IHRydWUgPyBpdGVtLm9wZW4gOiBmYWxzZTtcclxuICAgIG5vZGUuaXRlbURhdGEua2V5ID0gaXRlbVt0aGlzLmtleUZpZWxkXTtcclxuXHJcbiAgICBjb25zdCBjID0gW107XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBmb3IgKHZhciBrIGluIGl0ZW0pIHtcclxuICAgICAgaSA9IGkgKyAxO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgayAhPSAnc2VsZWN0JyAmJlxyXG4gICAgICAgIGsgIT0gJ2hhc0NoaWxkJyAmJlxyXG4gICAgICAgIGsgIT0gJ2xvYWRpbmcnICYmXHJcbiAgICAgICAgayAhPSAncmVxdWVzdElkJyAmJlxyXG4gICAgICAgIGsgIT0gJ2Rpc2FibGVkJyAmJlxyXG4gICAgICAgIGsgIT0gJ29wZW4nICYmXHJcbiAgICAgICAgayAhPSAncGFyZW50Tm9kZScgJiZcclxuICAgICAgICBrICE9ICd0b2dnbGUnICYmXHJcbiAgICAgICAgayAhPSAnbG9hZGVkJyAmJlxyXG4gICAgICAgIGsgIT0gJ2luZGV0ZXJtaW5hdGUnICYmXHJcbiAgICAgICAgayAhPSB0aGlzLmNoaWxkRmllbGRcclxuICAgICAgKSB7XHJcbiAgICAgICAgLy9jLnB1c2goeyBrOiBpdGVtW2tdIH0pO1xyXG4gICAgICAgIGNba10gPSBpdGVtW2tdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbm9kZS5pdGVtRGF0YS5pdGVtID0gYzsgLy9UTyBET1xyXG4gICAgbm9kZS5pdGVtRGF0YS5zZWxlY3RlZCA9IGl0ZW0uc2VsZWN0ID09PSB0cnVlID8gaXRlbS5zZWxlY3QgOiBmYWxzZTtcclxuICAgIG5vZGUuaXRlbURhdGEuaW5kZXRlcm1pbmF0ZSA9IGl0ZW0uc2VsZWN0ID09PSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgbm9kZS5pdGVtRGF0YS5oYXNDaGlsZCA9IGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXTtcclxuICAgIG5vZGUucGFyZW50ID0gaXRlbS5wYXJlbnROb2RlID09PSB1bmRlZmluZWQgPyBudWxsIDogdGhpcy5tYWtlTm9kZShpdGVtLnBhcmVudE5vZGUsIGZhbHNlKTtcclxuICAgIGlmIChub2RlLnBhcmVudCAhPSBudWxsKSB7XHJcbiAgICAgIChub2RlLnBhcmVudCBhcyBhbnkpLnNlbGVjdFBhcmVudCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5wYXJlbnROb2RlWydzZWxlY3QnXSAhPSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtLnBhcmVudE5vZGUsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgKG5vZGUucGFyZW50IGFzIGFueSkudW5TZWxlY3RQYXJlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZVsnc2VsZWN0J10gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbS5wYXJlbnROb2RlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS5jaGlsZHJlbiAhPSBudWxsICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAobm9kZS5jaGlsZHJlbiBhcyBhbnkpLnNlbGVjdENoaWxkcyA9ICgpID0+IHtcclxuICAgICAgICBpdGVtLmNoaWxkZXJlbi5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudFsnc2VsZWN0J10gIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShlbGVtZW50LCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgKG5vZGUuY2hpbGRyZW4gYXMgYW55KS51blNlbGVjdENoaWxkcyA9ICgpID0+IHtcclxuICAgICAgICBpdGVtLmNoaWxkZXJlbi5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudFsnc2VsZWN0J10gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShlbGVtZW50LCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VDaGlsZFNlbGVjdChpdGVtLCBzKSB7XHJcbiAgICAvLyBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSA9PSAnYWxsJyB8fCB0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlID09ICdjaGlsZHMnKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja0NoaWxkcyA9PSB0cnVlKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ID0gcztcclxuICAgICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gJiYgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0uZm9yRWFjaCgoZWxtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcclxuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XHJcblxyXG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChlbG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hpbGRTZWxlY3QoZWxtLCBzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVsbS5zZWxlY3QgPSBzO1xyXG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChlbG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbSkge1xyXG4gICAgLy9pZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSA9PSAnYWxsJyB8fCB0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlID09ICdwYXJlbnRzJykge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tQYXJlbnRzKSB7XHJcbiAgICAgIGxldCBhbGxzZWxlY3QgPSB0cnVlO1xyXG4gICAgICBsZXQgYWxsZGVzZWxlY3QgPSB0cnVlO1xyXG4gICAgICBsZXQgb25lc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgIGxldCBpc2luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF0pIHtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGFsbGRlc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9uZXNlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IGZhbHNlIHx8IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgYWxsc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgaXNpbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgYWxsZGVzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgb25lc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgYWxsc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob25lc2VsZWN0IHx8IChpc2luZGV0ZXJtaW5hdGUgJiYgIWFsbHNlbGVjdCkpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFsbHNlbGVjdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYWxsZGVzZWxlY3QgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgaXRlbS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5wYXJlbnROb2RlICYmIGl0ZW0ucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW0ucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtLnBhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25JdGVtQ2xpY2suc3Vic2NyaWJlKChkYXRhOiBBWFRyZWVWaWV3SXRlbUNsaWNrKSA9PiB7XHJcbiAgICAgIGlmICghZGF0YS5jYW5jZWwpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoZGF0YS5pdGVtLCBkYXRhLmZsYWcpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGl0ZW1kYkNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5oYW5kbGVPbk5vZGVDbGljayhlLCBpdGVtLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU9uTm9kZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW0sIGZsYWcgPSBmYWxzZSkge1xyXG4gICAgLy8gIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0pO1xyXG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRXZlbnQ6IGUsXHJcbiAgICAgIGl0ZW0sXHJcbiAgICAgIGZsYWdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTm9kZShpdGVtLCBmbGFnID0gZmFsc2UpIHtcclxuICAgIC8vaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJlxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScgJiYgIWZsYWcpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBpdGVtLmhhc0NoaWxkID09IHRydWUpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS50b2dnbGUgPSAhaXRlbS50b2dnbGU7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBpdGVtLmhhc0NoaWxkID09IHRydWUpIHtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmIGl0ZW0ubG9hZGVkICE9PSB0cnVlICYmIHRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgICB0aGlzLml0ZW1Sb3cgPSBpdGVtO1xyXG4gICAgICAgIGNvbnN0IHVpZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMCk7XHJcbiAgICAgICAgaXRlbS5yZXF1ZXN0SWQgPSB1aWQ7XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLmZldGNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtUm93KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS50b2dnbGUgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9uSXRlbU9wZW5pbmcuZW1pdCh0aGlzLm1ha2VOb2RlKGl0ZW0pKTtcclxuICAgICAgfSBlbHNlIGlmICghaXRlbS50b2dnbGUgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DbG9zaW5nLmVtaXQodGhpcy5tYWtlTm9kZShpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLmZldGNoKG51bGwpO1xyXG4gICAgdGhpcy5fY29udGVudERhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKChfZGF0YSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuaGlkZUxvYWRpbmcobnVsbCk7XHJcbiAgICAgICAgdGhpcy5saXN0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XHJcblxyXG4gICAgICAgIHRoaXMubGlzdC5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkICE9ICcnID8gKGVsW3RoaXMuc2VsZWN0YWJsZUZpZWxkXSA/IGVsW3RoaXMuc2VsZWN0YWJsZUZpZWxkXSA6IGZhbHNlKSA6IGZhbHNlO1xyXG4gICAgICAgICAgZWwuc2VsZWN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcclxuICAgICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ3BhcmVudHMnICYmIGVsW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZXRlZEtleUZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZXRlZEtleUZpZWxkcy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAobi5pbmNsdWRlcyhlbFt0aGlzLmtleUZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tQYXJlbnRzID09IGZhbHNlICYmIHRoaXMuY2hlY2tDaGlsZHMgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdCBwYXJlbnQgd2hlbiBjaGVjayBjaGlsZCBhbmQgY2hlY2sgcGFyZW50IGlzIGZhbHNlIFRPRE8gY2hlY2sgdGhpcyBBY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oZWwpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oZWwpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkSXRlbSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpZWxkTmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUgJiYgZWxbdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrUGFyZW50cyA9PSBmYWxzZSAmJiB0aGlzLmNoZWNrQ2hpbGRzID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAvL3NlbGVjdCBwYXJlbnQgd2hlbiBjaGVjayBjaGlsZCBhbmQgY2hlY2sgcGFyZW50IGlzIGZhbHNlIFRPRE8gY2hlY2sgdGhpcyBBY3Rpb25cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMub3BlbihlbCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxbdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShlbCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkSXRlbSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLml0ZW1Sb3cgPSB0aGlzLmxpc3RMb2FkLmZpbHRlcigoYykgPT4gYy5yZXF1ZXN0SWQgPT09IF9kYXRhLmRhdGEucmVxdWVzdElkKVswXTtcclxuICAgICAgICB0aGlzLmxpc3RMb2FkID0gdGhpcy5saXN0TG9hZC5maWx0ZXIoKGMpID0+IGMucmVxdWVzdElkICE9PSBfZGF0YS5kYXRhLnJlcXVlc3RJZCk7XHJcbiAgICAgICAgdGhpcy5pdGVtUm93LmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbVJvdyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKHRoaXMuaXRlbVJvdyk7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBfZGF0YS5kYXRhLnJlc3VsdDtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0gJiYgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkICE9ICcnID8gKGVsW3RoaXMuc2VsZWN0YWJsZUZpZWxkXSA/IGVsW3RoaXMuc2VsZWN0YWJsZUZpZWxkXSA6IGZhbHNlKSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gZWwuZGlzYWJsZWRDaGVja0JveCA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkICE9ICcnID8gZWxbdGhpcy5zZWxlY3RhYmxlRmllbGRdIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXVt0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGhdID0gZWw7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0W2ldLmRpc2FibGVkQ2hlY2tCb3ggPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRmllbGQgIT0gJycgPyAocmVzdWx0W2ldW3RoaXMuc2VsZWN0YWJsZUZpZWxkXSA/IHJlc3VsdFtpXVt0aGlzLnNlbGVjdGFibGVGaWVsZF0gOiBmYWxzZSkgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJiByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJyAmJiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSA9PSAnYWxsJyB8fCB0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlID09ICdjaGlsZHMnKSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnICYmIHRoaXMuY2hlY2tDaGlsZHMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLnNlbGVjdCA9IHRoaXMuaXRlbVJvdy5zZWxlY3QgPT09ICh1bmRlZmluZWQgfHwgbnVsbCkgPyBmYWxzZSA6IHRoaXMuaXRlbVJvdy5zZWxlY3Q7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbVJvdy5zZWxlY3QgPT09IHRydWUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09ICdtdWx0aXBsZScgJiYgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IHJlc3VsdFtpXVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmVzdWx0W2ldLnBhcmVudE5vZGUgPSB0aGlzLml0ZW1Sb3c7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxldGVkS2V5RmllbGRzLmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAobi5pbmNsdWRlcyhyZXN1bHRbaV1bdGhpcy5rZXlGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrUGFyZW50cyA9PSBmYWxzZSAmJiB0aGlzLmNoZWNrQ2hpbGRzID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2VsZWN0IHBhcmVudCB3aGVuIGNoZWNrIGNoaWxkIGFuZCBjaGVjayBwYXJlbnQgaXMgZmFsc2UgVE9ETyBjaGVjayB0aGlzIEFjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpZWxkTmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSAmJiByZXN1bHRbaV1bdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja1BhcmVudHMgPT0gZmFsc2UgJiYgdGhpcy5jaGVja0NoaWxkcyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc2VsZWN0IHBhcmVudCB3aGVuIGNoZWNrIGNoaWxkIGFuZCBjaGVjayBwYXJlbnQgaXMgZmFsc2UgVE9ETyBjaGVjayB0aGlzIEFjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlbihyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRbaV1bdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkSXRlbSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbVJvdy5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZEl0ZW0gPT0gdHJ1ZSAmJiAhdGhpcy5sb2NlZCkge1xyXG4gICAgICAgIHRoaXMubG9jZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZXRlZEtleUZpZWxkc0NoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAvLyB2YWx1ZTogdGhpcy5tYWtlTm9kZShpdGVtKSxcclxuICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5zaG93U2VsZWN0Qm94ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIG9uSXRlbUNsaWNrKGUsIHYpIHtcclxuXHJcbiAgLy8gfVxyXG5cclxuICBvbkRyYWdTdGFydChlOiBFdmVudCwgdikge1xyXG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcclxuICAgICAgdGhpcy5pdGVtRHJhZyA9IHY7XHJcbiAgICAgIHRoaXMub25JdGVtRHJhZy5lbWl0KHYpO1xyXG4gICAgfVxyXG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0VuZChlLCB2KSB7XHJcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xyXG4gICAgICB0aGlzLml0ZW1Ecm9wID0gdjtcclxuICAgIH1cclxuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBkcm9wKGUpIHtcclxuICAgIC8vICB0aGlzLm9uSXRlbURyb3AuZW1pdCh0aGlzLml0ZW1Ecm9wKTtcclxuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XHJcbiAgICAgIHRoaXMudmFsaWREcm9wID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zYW1lQ2hpbGRlKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xyXG4gICAgICBpZiAodGhpcy52YWxpZERyb3AgJiYgdGhpcy5pdGVtRHJhZ1t0aGlzLmtleUZpZWxkXSAhPT0gdGhpcy5pdGVtRHJvcFt0aGlzLmtleUZpZWxkXSAmJiB0aGlzLml0ZW1EcmFnLnBhcmVudE5vZGUgIT09IHRoaXMuaXRlbURyb3ApIHtcclxuICAgICAgICBjb25zdCBtb3ZlZEV2ZW50OiBBWFRyZWVWaWV3SXRlbU1vdmVkRXZlbnQgPSBuZXcgQVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50KCk7XHJcbiAgICAgICAgbW92ZWRFdmVudC5zb3VyY2UgPSB0aGlzLm1ha2VOb2RlKHRoaXMuaXRlbURyYWcpO1xyXG4gICAgICAgIG1vdmVkRXZlbnQudGFyZ2V0ID0gdGhpcy5tYWtlTm9kZSh0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICB0aGlzLmxvY2tlZERyYWcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJhZyk7XHJcbiAgICAgICAgdGhpcy5zaG93TG9hZGluZyh0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICBtb3ZlZEV2ZW50LnJlc29sdmUgPSAodmFsdWU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcodGhpcy5pdGVtRHJhZyk7XHJcbiAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKHRoaXMuaXRlbURyb3ApO1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uSXRlbU1vdmVkLmVtaXQobW92ZWRFdmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2FtZUNoaWxkZShwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBpZiAocGFyZW50W3RoaXMuY2hpbGRGaWVsZF0gJiYgcGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmtleUZpZWxkXSA9PSBjaGlsZFt0aGlzLmtleUZpZWxkXSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZERyb3AgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmNoaWxkRmllbGRdICYmIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2FtZUNoaWxkZShwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0sIGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAocGFyZW50W3RoaXMua2V5RmllbGRdID09IGNoaWxkW3RoaXMua2V5RmllbGRdKSB7XHJcbiAgICAgIHRoaXMudmFsaWREcm9wID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnRHJvcEl0ZW0oaXRlbUNoaWxkLCBpdGVtUGFyZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnKSB7XHJcbiAgICAgIGl0ZW1QYXJlbnQuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlKSB7XHJcbiAgICAgIGl0ZW1DaGlsZC5wYXJlbnROb2RlW3RoaXMuY2hpbGRGaWVsZF0gPSBpdGVtQ2hpbGQucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbUNoaWxkW3RoaXMua2V5RmllbGRdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGlzdCA9IHRoaXMubGlzdC5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1DaGlsZFt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICB9XHJcbiAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZSA9IGl0ZW1QYXJlbnQ7XHJcbiAgICBpZiAoaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoXSA9IGl0ZW1DaGlsZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSA9IFtdO1xyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF1bMF0gPSBpdGVtQ2hpbGQ7XHJcbiAgICAgIGlmIChpdGVtUGFyZW50W3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbVBhcmVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbVBhcmVudC50b2dnbGUgPSAhaXRlbVBhcmVudC50b2dnbGU7XHJcbiAgICAgICAgaXRlbVBhcmVudC5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5oYXNDaGlsZEZpZWxkXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbUNoaWxkLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtQ2hpbGQucGFyZW50Tm9kZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvY2tlZERyYWcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGlzdENoYW5nZShmaWVsZCwgdmFsdWUpIHtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKHRoaXMubGlzdFtpbmRleF0sIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRBbGxDaGlsZHJlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VDaGlsZWQoaXRlbSwgZmllbGQsIHZhbHVlKSB7XHJcbiAgICBpZiAoZmllbGQgPT09ICd0b2dnbGUnICYmIChpdGVtLmxvYWRlZCA9PT0gZmFsc2UgfHwgaXRlbS5sb2FkZWQgPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgaWYgKHRoaXMubG9hZEFsbENoaWxkcmVuID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW0pO1xyXG4gICAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XHJcbiAgICAgIGlmIChmaWVsZCA9PT0gJ3NlbGVjdCcgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQgPT09ICdzZWxlY3QnKSB7XHJcbiAgICAgIGl0ZW0uaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gJiYgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICB0aGlzLmNoYW5nZUNoaWxlZChlbGVtZW50LCBmaWVsZCwgdmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd0xvYWRpbmcoaXRlbSk6IHZvaWQge1xyXG4gICAgaXRlbS5sb2FkaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZUxvYWRpbmcoaXRlbSk6IHZvaWQge1xyXG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xyXG4gICAgICBpdGVtLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuQWxsKGxvYWRBbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gaWYgKGxvYWRBbGwpIHtcclxuICAgIC8vIHRoaXMubG9hZEFsbENoaWxkcmVuID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgdHJ1ZSk7XHJcbiAgICAvL30gZWxzZSB7XHJcbiAgICB0aGlzLmxpc3RDaGFuZ2UoJ3RvZ2dsZScsIHRydWUpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW1bJ3NlbGVjdCddICE9IHRydWUpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuU2VsZWN0SXRlbShpdGVtKSB7XHJcbiAgICBpZiAoaXRlbVsnc2VsZWN0J10gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbihpdGVtKSB7XHJcbiAgICBpZiAoaXRlbVsndG9nZ2xlJ10gIT09IHRydWUpIHtcclxuICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNjcm9sSW50b1ZpZXcoaXRlbSkge1xyXG4gICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaVtkYXRhLWlkPScke2l0ZW1bdGhpcy5rZXlGaWVsZF19J11gKTtcclxuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUFsbCgpIHtcclxuICAgIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEFsbCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMubGlzdENoYW5nZSgnc2VsZWN0JywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdW5TZWxlY3RBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLmxpc3RDaGFuZ2UoJ3NlbGVjdCcsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkTm9kZXMoKTogQVhUcmVlVmlld05vZGVbXSB7XHJcbiAgICBjb25zdCBzZWxlY3RJdGVtc05vZGUgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgIHNlbGVjdEl0ZW1zTm9kZS5wdXNoKHRoaXMubWFrZU5vZGUoZSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNOb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkUGFyZW50cygpOiBBWFRyZWVWaWV3Tm9kZVtdIHtcclxuICAgIGNvbnN0IHNlbGVjdEl0ZW1zUGFyZW50ID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgIHNlbGVjdEl0ZW1zUGFyZW50LnB1c2godGhpcy5tYWtlTm9kZShlKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzZWxlY3RJdGVtc1BhcmVudDtcclxuICB9XHJcblxyXG4gIGdldFBhcmVudHNJZChpdGVtKSB7XHJcbiAgICBsZXQga2V5RmllbGRzID0gW107XHJcbiAgICBrZXlGaWVsZHMucHVzaChpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuICAgIGlmIChpdGVtLnBhcmVudE5vZGUpIHtcclxuICAgICAga2V5RmllbGRzLnB1c2goLi4udGhpcy5nZXRQYXJlbnRzSWQoaXRlbS5wYXJlbnROb2RlKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5RmllbGRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkS2V5RmllbGRzKCkge1xyXG4gICAgbGV0IGtleUZpZWxkcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGVsbSkgPT4ge1xyXG4gICAgICB2YXIgSWRzID0gdGhpcy5nZXRQYXJlbnRzSWQoZWxtKTtcclxuICAgICAgaWYgKElkcykge1xyXG4gICAgICAgIGtleUZpZWxkcy5wdXNoKElkcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGtleUZpZWxkcztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1388,7 +1388,7 @@ __decorate([
|
|
|
1388
1388
|
AXCalendarBoxComponent = __decorate([
|
|
1389
1389
|
Component({
|
|
1390
1390
|
selector: 'ax-calendar-box',
|
|
1391
|
-
template: "<!-- <div class=\"calendar-body ax {{size}}\" [ngClass]=\"type\">\r\n <div class=\"calendar-selector\">\r\n <div class=\"arrows left-arrow\" (click)=\"prev()\">\r\n <i class=\"far fa-chevron-left\"></i>\r\n </div>\r\n <div class=\"selector-name\" (click)=\"changeView()\" [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n {{viewRange.startTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n </div>\r\n <div class=\"arrows right-arrow\" (click)=\"next()\">\r\n <i class=\"far fa-chevron-right\"></i>\r\n </div>\r\n </div>\r\n <div class=\"view\">\r\n <ng-container [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n <table>\r\n <thead>\r\n <tr class=\"days-name calendar-row\">\r\n <th class=\"calendar-item\" *ngFor='let w of weekdays'>{{w}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <td *ngFor=\"let d of r;trackBy:trackByFn\" class=\"calendar-item \" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\r\n (click)=\"setDayClick($event,d)\">\r\n <div>\r\n {{d.date.dayInMonth}}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <table>\r\n <tbody>\r\n <tr class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <td class=\"calendar-item month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\r\n <div>\r\n {{d.date| dt:\"MMM\"}}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <table>\r\n <tbody>\r\n <tr class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <td class=\"calendar-item year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\r\n <div>\r\n {{d.date | dt:\"YYYY\"}}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div style=\"padding: 5px;\">\r\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" size=\"sm\" type=\"primary\" block=\"'true'\">\r\n {{getTodayName()}}\r\n </ax-button>\r\n </div>\r\n</div> -->\r\n\r\n\r\n\r\n<div class=\"ax-calendar-container {{size}}\" [ngClass]=\"type\">\r\n <div class=\"ax-calendar-header\">\r\n\r\n <div class=\"ax-nav-button\" [ngSwitch]=\"view\">\r\n <ax-button type=\"light blank\" (click)=\"changeView()\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n {{viewRange.startTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n </ax-button>\r\n </div>\r\n\r\n <div class=\"ax-controll-button\">\r\n <ax-button type=\"light blank\" icon=\"fas fa-chevron-down\" (click)=\"next()\"></ax-button>\r\n </div>\r\n <div class=\"ax-controll-button\">\r\n <ax-button type=\"light blank\" icon=\"fas fa-chevron-up\" (click)=\"prev()\"></ax-button>\r\n </div>\r\n </div>\r\n <div class=\"ax-calendar-body\">\r\n <ng-container [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n <div class=\"ax-month-items\">\r\n <ng-container *ngFor='let w of weekdays'>\r\n <div class=\"ax-month-item\"><strong>{{w}}</strong></div>\r\n </ng-container>\r\n </div>\r\n <div class=\"ax-day-items\">\r\n <ng-container *ngFor=\"let r of matrix\">\r\n <div class=\"ax-day-item ax-state-event\" *ngFor=\"let d of r;trackBy:trackByFn\" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\r\n (click)=\"setDayClick($event,d)\">\r\n {{d.date.dayInMonth}}</div>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n <div class=\"ax-month-container\" *ngSwitchCase=\"'month'\">\r\n <ng-container *ngFor=\"let r of matrix\">\r\n <div class=\"ax-month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\r\n <strong>\r\n {{d.date| dt:\"MMM\"}}\r\n </strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"ax-year-container\" *ngSwitchCase=\"'year'\">\r\n <ng-container class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <div class=\"ax-year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\r\n <strong>{{d.date | dt:\"YYYY\"}}</strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"ax-calendar-footer\">\r\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" type=\"dark\">\r\n {{getTodayName()}}\r\n </ax-button>\r\n </div>\r\n</div>",
|
|
1391
|
+
template: "<!-- <div class=\"calendar-body ax {{size}}\" [ngClass]=\"type\">\r\n <div class=\"calendar-selector\">\r\n <div class=\"arrows left-arrow\" (click)=\"prev()\">\r\n <i class=\"far fa-chevron-left\"></i>\r\n </div>\r\n <div class=\"selector-name\" (click)=\"changeView()\" [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n {{viewRange.startTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n </div>\r\n <div class=\"arrows right-arrow\" (click)=\"next()\">\r\n <i class=\"far fa-chevron-right\"></i>\r\n </div>\r\n </div>\r\n <div class=\"view\">\r\n <ng-container [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n <table>\r\n <thead>\r\n <tr class=\"days-name calendar-row\">\r\n <th class=\"calendar-item\" *ngFor='let w of weekdays'>{{w}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <td *ngFor=\"let d of r;trackBy:trackByFn\" class=\"calendar-item \" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\r\n (click)=\"setDayClick($event,d)\">\r\n <div>\r\n {{d.date.dayInMonth}}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <table>\r\n <tbody>\r\n <tr class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <td class=\"calendar-item month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\r\n <div>\r\n {{d.date| dt:\"MMM\"}}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <table>\r\n <tbody>\r\n <tr class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <td class=\"calendar-item year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\r\n <div>\r\n {{d.date | dt:\"YYYY\"}}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div style=\"padding: 5px;\">\r\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" size=\"sm\" type=\"primary\" block=\"'true'\">\r\n {{getTodayName()}}\r\n </ax-button>\r\n </div>\r\n</div> -->\r\n\r\n\r\n\r\n<div class=\"ax-calendar-container {{size}}\" [ngClass]=\"type\">\r\n <div class=\"ax-calendar-header\">\r\n\r\n <div class=\"ax-nav-button\" [ngSwitch]=\"view\">\r\n <ax-button type=\"light blank\" (click)=\"changeView()\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n {{viewRange.startTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\r\n </ng-container>\r\n </ax-button>\r\n </div>\r\n\r\n <div class=\"ax-controll-button\">\r\n <ax-button type=\"light blank\" [block]=\"true\" icon=\"fas fa-chevron-down\" (click)=\"next()\"></ax-button>\r\n </div>\r\n <div class=\"ax-controll-button\">\r\n <ax-button type=\"light blank\" [block]=\"true\" icon=\"fas fa-chevron-up\" (click)=\"prev()\"></ax-button>\r\n </div>\r\n </div>\r\n <div class=\"ax-calendar-body\">\r\n <ng-container [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n <div class=\"ax-month-items\">\r\n <ng-container *ngFor='let w of weekdays'>\r\n <div class=\"ax-month-item\"><strong>{{w}}</strong></div>\r\n </ng-container>\r\n </div>\r\n <div class=\"ax-day-items\">\r\n <ng-container *ngFor=\"let r of matrix\">\r\n <div class=\"ax-day-item ax-state-event\" *ngFor=\"let d of r;trackBy:trackByFn\" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\r\n (click)=\"setDayClick($event,d)\">\r\n {{d.date.dayInMonth}}</div>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n <div class=\"ax-month-container\" *ngSwitchCase=\"'month'\">\r\n <ng-container *ngFor=\"let r of matrix\">\r\n <div class=\"ax-month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\r\n <strong>\r\n {{d.date| dt:\"MMM\"}}\r\n </strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"ax-year-container\" *ngSwitchCase=\"'year'\">\r\n <ng-container class=\"calendar-row\" *ngFor=\"let r of matrix\">\r\n <div class=\"ax-year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\r\n <strong>{{d.date | dt:\"YYYY\"}}</strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"ax-calendar-footer\">\r\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" type=\"dark\">\r\n {{getTodayName()}}\r\n </ax-button>\r\n </div>\r\n</div>",
|
|
1392
1392
|
encapsulation: ViewEncapsulation.None,
|
|
1393
1393
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
1394
1394
|
}),
|
|
@@ -5224,6 +5224,9 @@ let AXDatePickerComponent = AXDatePickerComponent_1 = class AXDatePickerComponen
|
|
|
5224
5224
|
if (this.showToday && !this.value) {
|
|
5225
5225
|
this.selectToday();
|
|
5226
5226
|
}
|
|
5227
|
+
if (this.dropdown.dropdownWidth < 200) {
|
|
5228
|
+
this.dropdown.dropdownWidth = 200;
|
|
5229
|
+
}
|
|
5227
5230
|
this.cdr.markForCheck();
|
|
5228
5231
|
});
|
|
5229
5232
|
}
|
|
@@ -5842,7 +5845,7 @@ __decorate([
|
|
|
5842
5845
|
AXDatePickerComponent = AXDatePickerComponent_1 = __decorate([
|
|
5843
5846
|
Component({
|
|
5844
5847
|
selector: 'ax-date-picker',
|
|
5845
|
-
template: "<ax-drop-down [readonly]=\"readonly\" [size]=\"size\" [showDropDownButton]=\"false\" icon=\"far fa-calendar-alt\" #dropdown
|
|
5848
|
+
template: "<ax-drop-down [readonly]=\"readonly\" [size]=\"size\" [showDropDownButton]=\"false\" icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\" [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\" (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\"\r\n (onBlur)=\"handleInputBlur()\" (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\" (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\"\r\n [dayStyle]=\"dayStyle\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\" (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\" [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>",
|
|
5846
5849
|
encapsulation: ViewEncapsulation.None,
|
|
5847
5850
|
providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent_1 }],
|
|
5848
5851
|
host: { style: 'width: 100%' },
|
|
@@ -12952,7 +12955,7 @@ let AXTreeViewComponent = class AXTreeViewComponent extends AXBaseComponent {
|
|
|
12952
12955
|
internalSelectItem(item, userChange = true) {
|
|
12953
12956
|
if (item[this.hasChildField] === false || this.selectionMode === 'single') {
|
|
12954
12957
|
item.select = !item.select;
|
|
12955
|
-
if (item.parentNode && this.selectionMode !== 'single') {
|
|
12958
|
+
if (item.parentNode && this.selectionMode !== 'single' && this.checkParents == true) {
|
|
12956
12959
|
this.changeParentSelect(item.parentNode);
|
|
12957
12960
|
}
|
|
12958
12961
|
if (item.select === true) {
|
|
@@ -12973,10 +12976,10 @@ let AXTreeViewComponent = class AXTreeViewComponent extends AXBaseComponent {
|
|
|
12973
12976
|
}
|
|
12974
12977
|
else {
|
|
12975
12978
|
item.select = !item.select;
|
|
12976
|
-
if (item.parentNode && this.selectionMode === 'multiple') {
|
|
12979
|
+
if (item.parentNode && this.selectionMode === 'multiple' && this.checkParents == true) {
|
|
12977
12980
|
this.changeParentSelect(item.parentNode);
|
|
12978
12981
|
}
|
|
12979
|
-
if (this.selectionMode === 'multiple') {
|
|
12982
|
+
if (this.selectionMode === 'multiple' && this.checkChilds == true) {
|
|
12980
12983
|
this.changeChildSelect(item, item.select);
|
|
12981
12984
|
}
|
|
12982
12985
|
if (item.select == true) {
|
|
@@ -13037,6 +13040,34 @@ let AXTreeViewComponent = class AXTreeViewComponent extends AXBaseComponent {
|
|
|
13037
13040
|
node.itemData.indeterminate = item.select === null ? true : false;
|
|
13038
13041
|
node.itemData.hasChild = item[this.hasChildField];
|
|
13039
13042
|
node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);
|
|
13043
|
+
if (node.parent != null) {
|
|
13044
|
+
node.parent.selectParent = () => {
|
|
13045
|
+
if (item.parentNode['select'] != true) {
|
|
13046
|
+
this.internalSelectItem(item.parentNode, true);
|
|
13047
|
+
}
|
|
13048
|
+
};
|
|
13049
|
+
node.parent.unSelectParent = () => {
|
|
13050
|
+
if (item.parentNode['select'] == true) {
|
|
13051
|
+
this.internalSelectItem(item.parentNode, true);
|
|
13052
|
+
}
|
|
13053
|
+
};
|
|
13054
|
+
}
|
|
13055
|
+
if (node.children != null && node.children.length > 0) {
|
|
13056
|
+
node.children.selectChilds = () => {
|
|
13057
|
+
item.childeren.forEach((element) => {
|
|
13058
|
+
if (element['select'] != true) {
|
|
13059
|
+
this.internalSelectItem(element, true);
|
|
13060
|
+
}
|
|
13061
|
+
});
|
|
13062
|
+
};
|
|
13063
|
+
node.children.unSelectChilds = () => {
|
|
13064
|
+
item.childeren.forEach((element) => {
|
|
13065
|
+
if (element['select'] == true) {
|
|
13066
|
+
this.internalSelectItem(element, true);
|
|
13067
|
+
}
|
|
13068
|
+
});
|
|
13069
|
+
};
|
|
13070
|
+
}
|
|
13040
13071
|
return node;
|
|
13041
13072
|
}
|
|
13042
13073
|
changeChildSelect(item, s) {
|
|
@@ -13108,6 +13139,7 @@ let AXTreeViewComponent = class AXTreeViewComponent extends AXBaseComponent {
|
|
|
13108
13139
|
this.selectedParents.push(item);
|
|
13109
13140
|
}
|
|
13110
13141
|
if (alldeselect === true) {
|
|
13142
|
+
this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);
|
|
13111
13143
|
item.select = false;
|
|
13112
13144
|
}
|
|
13113
13145
|
if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {
|