@simpleangularcontrols/sac-common 10.0.0-rc.13 → 10.0.0-rc.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/simpleangularcontrols-sac-common.umd.js +167 -68
- package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
- package/common/baseuploadcontrol.d.ts +69 -53
- package/controls/treeview/treeview.d.ts +34 -0
- package/esm2015/common/baseuploadcontrol.js +81 -58
- package/esm2015/controls/contextmenu/contextmenu.js +3 -3
- package/esm2015/controls/treeview/treeview.js +62 -2
- package/fesm2015/simpleangularcontrols-sac-common.js +138 -55
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
- package/package.json +1 -1
- package/simpleangularcontrols-sac-common-10.0.0-rc.15.tgz +0 -0
- package/simpleangularcontrols-sac-common.metadata.json +1 -1
- package/simpleangularcontrols-sac-common-10.0.0-rc.13.tgz +0 -0
|
@@ -197,12 +197,21 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
197
197
|
onActionClicked(action) {
|
|
198
198
|
this.actionclicked.emit(action);
|
|
199
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Method is called when Node in Tree is clicked
|
|
202
|
+
* @param node Selected Node
|
|
203
|
+
*/
|
|
200
204
|
onNodeClicked(node) {
|
|
201
205
|
if (this.isDisabledState(node) || this.isSelectedState(node)) {
|
|
202
206
|
this.invertExpandedState(node);
|
|
203
207
|
}
|
|
204
208
|
this.setSelectedState(node);
|
|
205
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Sets the hover state on a node
|
|
212
|
+
* @param node Node on which the status is set
|
|
213
|
+
* @param state Activate or deactivate HoverState
|
|
214
|
+
*/
|
|
206
215
|
setHoverState(node, state) {
|
|
207
216
|
if (!node || !this.attrhoverstate) {
|
|
208
217
|
return;
|
|
@@ -216,6 +225,10 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
216
225
|
}
|
|
217
226
|
delete node[this.attrhoverstate];
|
|
218
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Sets the selected state on a node
|
|
230
|
+
* @param node Node which is marked as Selected
|
|
231
|
+
*/
|
|
219
232
|
setSelectedState(node) {
|
|
220
233
|
if (!node || !this.attrselected) {
|
|
221
234
|
return;
|
|
@@ -224,8 +237,10 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
224
237
|
this.data.forEach((rootNode) => this.resetSelectedState(rootNode));
|
|
225
238
|
// set selected node as selected
|
|
226
239
|
node[this.attrselected] = true;
|
|
240
|
+
// Extract ID from Node
|
|
241
|
+
const idValue = node[this.attrid];
|
|
227
242
|
// Update ngModel
|
|
228
|
-
this.setValue(
|
|
243
|
+
this.setValue(idValue);
|
|
229
244
|
// Raise Selected Events
|
|
230
245
|
this.selectednode.emit(node);
|
|
231
246
|
if (!this.attrid) {
|
|
@@ -234,6 +249,11 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
234
249
|
let id = this.getStringField(node, this.attrid);
|
|
235
250
|
this.selected.emit(id);
|
|
236
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Validates the model state of the control
|
|
254
|
+
* @param c Control instance
|
|
255
|
+
* @returns Returns a validation error, if present. Otherwise, as Result is NULL
|
|
256
|
+
*/
|
|
237
257
|
validateData(c) {
|
|
238
258
|
let error = null;
|
|
239
259
|
if (this.isrequired) {
|
|
@@ -241,8 +261,47 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
241
261
|
}
|
|
242
262
|
return error;
|
|
243
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Saves the data from the model binding
|
|
266
|
+
* @param value Id of the selected node
|
|
267
|
+
*/
|
|
268
|
+
writeValue(value) {
|
|
269
|
+
super.writeValue(value);
|
|
270
|
+
// Do not preselct item when tree is empty
|
|
271
|
+
if (!this.data) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
this.data.forEach((root) => {
|
|
275
|
+
const result = this.findNodeById(root, value);
|
|
276
|
+
if (result !== null) {
|
|
277
|
+
this.setSelectedState(result);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
244
281
|
// #endregion Public Methods
|
|
245
282
|
// #region Private Methods
|
|
283
|
+
/**
|
|
284
|
+
* Searches for a node based on the value in the ID attribute
|
|
285
|
+
* @param node Node
|
|
286
|
+
* @param value Value of the Id attribute
|
|
287
|
+
* @returns Returns the node if it is found. If not, NULL is returned.
|
|
288
|
+
*/
|
|
289
|
+
findNodeById(node, value) {
|
|
290
|
+
if (!this.attrid || !node) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
if (node[this.attrid] === value) {
|
|
294
|
+
return node;
|
|
295
|
+
}
|
|
296
|
+
const children = this.getChildren(node);
|
|
297
|
+
for (let child of children) {
|
|
298
|
+
const result = this.findNodeById(child, value);
|
|
299
|
+
if (result !== null) {
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
246
305
|
invertExpandedState(node) {
|
|
247
306
|
if (!node || !this.attrexanded) {
|
|
248
307
|
return;
|
|
@@ -300,8 +359,9 @@ SacTreeviewCommon.propDecorators = {
|
|
|
300
359
|
selectednode: [{ type: Output }],
|
|
301
360
|
showactionalways: [{ type: Input }],
|
|
302
361
|
templateaction: [{ type: Input }],
|
|
362
|
+
templateicon: [{ type: Input }],
|
|
303
363
|
templatelabel: [{ type: Input }],
|
|
304
364
|
validationmessagerequired: [{ type: Input }],
|
|
305
365
|
validationmessagesummaryrequired: [{ type: Input }]
|
|
306
366
|
};
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvdHJlZXZpZXcvdHJlZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEc7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQXdCO0lBaUozRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQW9CLFVBQStCLEVBQUUsUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQXpKaEMscUJBQXFCO1FBRXJCOztXQUVHO1FBRUksa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFeEY7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUVqQzs7V0FFRztRQUNhLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUUvQzs7V0FFRztRQUVJLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBRWhDOztXQUVHO1FBRUksbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFckM7O1dBRUc7UUFFSSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV0Qzs7V0FFRztRQUVJLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FBRUksY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUUzQjs7V0FFRztRQUVJLGlCQUFZLEdBQUcsVUFBVSxDQUFDO1FBRWpDOztXQUVHO1FBRUksY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTlEOztXQUVHO1FBRUksU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUV4Qjs7V0FFRztRQUVJLHFCQUFnQixHQUFxQixLQUFLLENBQUM7UUFFbEQ7O1dBRUc7UUFFSSxtQkFBYyxHQUFHLElBQUksQ0FBQztRQUU3Qjs7V0FFRztRQUVJLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU3RDs7V0FFRztRQUVJLGtCQUFhLEdBQXFCLElBQUksQ0FBQztRQUU5Qzs7V0FFRztRQUVJLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbkM7O1dBRUc7UUFFSSxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRXpCOztXQUVHO1FBRUksYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdEOztXQUVHO1FBRUksaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQW9CakU7O1dBRUc7UUFDYSw4QkFBeUIsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUM7UUFFdEc7O1dBRUc7UUFFSSxxQ0FBZ0MsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsOEJBQThCLENBQUM7SUFZM0csQ0FBQztJQUVELDBCQUEwQjtJQUUxQixxQ0FBcUM7SUFFckMsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxtQkFBbUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDO0lBQ2pELENBQUM7SUFFRCx3Q0FBd0M7SUFFeEMseUJBQXlCO0lBRXpCOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM3QixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFTLEVBQUUsU0FBaUI7UUFDOUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBUztRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQVM7UUFDNUIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNsQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6QyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQVM7UUFDNUIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDNUIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBUztRQUN6QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMvQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFTO1FBQzVCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZSxDQUFDLE1BQXNCO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBUztRQUMxQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFTLEVBQUUsS0FBYztRQUMxQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVM7UUFDN0IsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVuRSxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFL0IsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsT0FBTztTQUNWO1FBRUQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxZQUFZLENBQUMsQ0FBa0I7UUFDbEMsSUFBSSxLQUFLLEdBQTRCLElBQUksQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pHO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELDRCQUE0QjtJQUU1QiwwQkFBMEI7SUFFbEIsbUJBQW1CLENBQUMsSUFBUztRQUNqQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUM1QixPQUFPO1NBQ1Y7UUFFRCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE1BQU0sQ0FBQyxFQUFFO1lBQ2xHLE9BQU87U0FDVjtRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDbEM7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVM7UUFDaEMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUExWEosU0FBUzs7O1lBUEQsbUJBQW1CLHVCQWlLWCxJQUFJO1lBaEttQixRQUFROzs7NEJBYTNDLE1BQU07MkJBTU4sS0FBSztnQ0FNTCxLQUFLOzBCQUtMLEtBQUs7NkJBTUwsS0FBSzt1QkFNTCxLQUFLO3FCQU1MLEtBQUs7d0JBTUwsS0FBSzsyQkFNTCxLQUFLO3dCQU1MLE1BQU07bUJBTU4sS0FBSzsrQkFNTCxLQUFLOzZCQU1MLEtBQUs7dUJBTUwsTUFBTTs0QkFNTixLQUFLO3lCQU1MLEtBQUs7bUJBTUwsS0FBSzt1QkFNTCxNQUFNOzJCQU1OLE1BQU07K0JBTU4sS0FBSzs2QkFNTCxLQUFLOzRCQU1MLEtBQUs7d0NBTUwsS0FBSzsrQ0FLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4uLy4uL2NvbW1vbi9iYXNlbW9kZWxjb250cm9sJztcclxuaW1wb3J0IHsgVHJlZXZpZXdBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RyZWV2aWV3YWN0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0JztcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3QsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKipcclxuICogQmFzaXMgS29tcG9uZW50ZSBmw7xyIFNhY1RyZWVWaWV3XHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY1RyZWV2aWV3Q29tbW9uIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxhbnk+IHtcclxuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBBY3Rpb24gaXMgY2xpY2tlZCBvbiBOb2RlLiAgQW4gb2JqZWN0IG9mIHRoZSB0eXBlICdUcmVldmlld0FjdGlvbicgaXMgcmV0dXJuZWQuIEluIHRoZSBkZWZhdWx0IGNhc2UsICdhY3Rpb24nIGluIHRoaXMgb2JqZWN0IGlzIGFsd2F5cyB0aGUgdmFsdWUgJ2RlZmF1bHQnLiBUaGUgdmFsdWUgY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSAndGVtcGxhdGVhY3Rpb24nLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhY3Rpb25jbGlja2VkOiBFdmVudEVtaXR0ZXI8VHJlZXZpZXdBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVldmlld0FjdGlvbj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IG9uIHRoZSBkYXRhIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBjaGlsZHJlbiBvZiB0aGUgc3RydWN0dXJlIGVsZW1lbnQuIE11c3QgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ2NoaWxkcmVuJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJjaGlsZHJlbiA9ICdjaGlsZHJlbic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHRoZSBwcm9wZXJ0eSBvbiB0aGUgJ2RhdGEnIG9iamVjdCB3aXRoIHdoaWNoIHRoZSBhY3Rpb25zIGZvciBhIG5vZGUgY2FuIGJlIGRlYWN0aXZhdGVkLiBBICdkaXNhYmxlZCcgcHJvcGVydHkgaXMgdXNlZCBieSBkZWZhdWx0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXR0cmRpc2FibGVhY3Rpb24gPSAnZGlzYWJsZWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3QgdGhhdCBzdG9yZXMgdGhlIGV4cGFuZGVkIHN0YXRlLiBQcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4gRGVmYXVsdCBpcyAnZXhwYW5kZWQnXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmV4YW5kZWQgPSAnZXhwYW5kZWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgZm9yIHNhdmluZyB0aGUgSG92ZXJTdGF0ZSBvbiB0aGUgZmllbGQuIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCBvbiB0aGUgbm9kZSwgaXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCByZW1vdmVkIGFnYWluLiBUaGUgdmFsdWUgY2FuIHVzdWFsbHkgYmUgbGVmdCBhdCB0aGUgZGVmYXVsdCB2YWx1ZSB1bmxlc3MgdGhlcmUgaXMgYSBjb25mbGljdCB3aXRoIGEgcHJvcGVydHkgb24gdGhlIG5vZGUgdGhhdCBpcyByZXF1aXJlZCBmb3Igb3RoZXIgcHVycG9zZXMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmhvdmVyc3RhdGUgPSAnaG92ZXJzdGF0ZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiAnZGF0YScgb2JqZWN0LCB3aGljaCBjb250YWlucyB0aGUgaWNvbiBmb3IgdGhlIG5vZGUuIEJ5IGRlZmF1bHQsIHRoZSBwcm9wZXJ0eSBpcyBub3Qgc2V0LCB3aGljaCBoaWRlcyB0aGUgaWNvbiBpbiB0aGUgbm9kZS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRyaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBwcm9wZXJ0eSBvbiB0aGUgJ2RhdGEnIG9iamVjdCBjb250YWlucyBhbiBJRCBvZiB0aGUgbm9kZS4gVGhlIGRlZmF1bHQgaXMgJ2lkJy4gSWYgdGhlIHByb3BlcnR5IGlzIHNldCB0byBOVUxMLCB0aGUgc2VsZWN0ZWRJZCBldmVudCBpcyBubyBsb25nZXIgdHJpZ2dlcmVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJpZDogc3RyaW5nIHwgbnVsbCA9ICdpZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiAnZGF0YScgb2JqZWN0LCB3aGljaCBjb250YWlucyB0aGUgbGFiZWwgZm9yIHRoZSBub2RlLiBEZWZhdWx0IGlzICdsYWJlbCdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRybGFiZWwgPSAnbGFiZWwnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgb24gJ2RhdGEnIG9iamVjdCwgd2hpY2ggZGVmaW5lcyB3aGV0aGVyIHRoZSBub2RlIGlzIHNlbGVjdGVkIG9yIG5vdC4gSXQgc2hvdWxkIGJlIGVuc3VyZWQgdGhhdCBvbmx5IDEgbm9kZSBoYXMgdGhlIHZhbHVlIGZvciBTZWxlY3RlZCBzZXQgdG8gdHJ1ZS4gRGVmYXVsdCBpcyAnc2VsZWN0ZWQnLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJzZWxlY3RlZCA9ICdzZWxlY3RlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBjb2xsYXBzZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlclxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjb2xsYWJzZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcHJvcGVydHkgY29udGFpbnMgYW4gYXJyYXkgb2Ygbm9kZXMuIFRoZSBkYXRhIG11c3QgYWxyZWFkeSBtYXAgdGhlIHRyZWUgdmlhIGNoaWxkIHByb3BlcnRpZXMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdGl2YXRlcyB0aGUgJ2V4cGFuZCcgYW5kICdjb2xsYWJzZScgZXZlbnQgZXZlbiBpZiBhIG5vZGUgaGFzIG5vIGNoaWxkcmVuLiBUaGlzIGlzIGhlbHBmdWwgaWYgbm9kZSBlbGVtZW50cyBhcmUgdG8gYmUgcmVsb2FkZWQgYXQgcnVudGltZS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBlbmFibGVhc3luY2hsb2FkOiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBY3RpdmF0ZXMgRWxsaXBzaXMgb24gdGhlIG5vZGUgbGFiZWxzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZW5hYmxlZWxsaXBzaXMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgZXhwYW5kZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlclxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBleHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgd2hldGhlciBhbiBpY29uIGZvciB0aGUgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXR1cyBzaG91bGQgYmUgZGlzcGxheWVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGV4cGFuZGVkc3RhdGU6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBub2RlIG11c3QgYmUgc2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBUcmVlVmlldyBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC4gUmV0dXJucyB0aGUgaWQgYXR0cmlidXRlIGFzIGEgcGFyYW1ldGVyLiBUaGUgZXZlbnQgaXMgbm90IHRyaWdnZXJlZCBpZiAnYXR0cmlkJyBpcyBub3Qgc2V0LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIHNlbGVjdGVkLiBSZXR1cm5zIHRoZSBub2RlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXIuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkbm9kZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhhdCB0aGUgYWN0aW9uIHRlbXBsYXRlIGlzIGRpc3BsYXllZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBzZWxlY3RlZCBzdGF0ZS4gSWYgdGhlIHZhbHVlIGlzICd0cnVlJywgdGhlIGFjdGlvbiB0ZW1wbGF0ZSBpcyBkaXNwbGF5ZWQgZm9yIGV2ZXJ5IGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd2FjdGlvbmFsd2F5cztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgYWN0aW9ucyBwZXIgbm9kZS4gVGVtcGxhdGUgcGFyYW1ldGVycyBhcmU6ICdub2RlJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRlbXBsYXRlYWN0aW9uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgbGFiZWwgYXJlYSBwZXIgbm9kZS4gVGVtcGxhdGUgcGFyYW1ldGVycyBhcmU6ICdub2RlJyBhbmQgJ2xhYmVsJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRlbXBsYXRlbGFiZWw6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluamVjdG9yIFNlcnZpY2UgSW5qZWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgcHVibGljIGdldCBpY29uQWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlQWN0aW9uSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENTUyBpY29uIGZvciBmb2xkZXJzIGluIHRyZWUgdGhlcmUgYXJlIGNvbGxhYnNlZFxyXG4gICAgICogQHJldHVybnMgY3NzIGNsYXNzIHdpdGggaWNvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGljb25Gb2xkZXJDb2xsYWJzZWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVDbG9zZWRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGljb24gY2xhc3MgZm9yIGZvbGRlcnMgd2l0aG91dCBzdWJmb2xkZXJzXHJcbiAgICAgKiBAcmV0dXJucyBjc3MgY2xhc3Mgd2l0aCBpY29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaWNvbkZvbGRlckVtcHR5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlRW1wdHlJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGljb24gZm9yIGZvbGRlcnMgaW4gdHJlZSB0aGVyZSBhcmUgZXhwYW5kZWRcclxuICAgICAqIEByZXR1cm5zIGNzcyBjbGFzcyB3aXRoIGljb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpY29uRm9sZGVyT3BlbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlRyZWV2aWV3Tm9kZU9wZW5JY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGEgY2VydGFpbiBzaXplLiBJcyByZXF1aXJlZCBmb3IgYSBGb3IgaW4gdGhlIFVJLCBhcyBBbmd1bGFyIGRvZXMgbm90IHN1cHBvcnQgY291bnRpbmcgbG9vcHNcclxuICAgICAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGFycmF5XHJcbiAgICAgKiBAcmV0dXJucyBBcnJheVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY291bnQoc2l6ZTogbnVtYmVyKTogQXJyYXk8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENoaWxkcmVuKG5vZGU6IGFueSk6IGFueVtdIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IG5vZGVbdGhpcy5hdHRyY2hpbGRyZW5dO1xyXG5cclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U3RyaW5nRmllbGQobm9kZTogYW55LCBmaWVsZG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZmllbGRuYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVtmaWVsZG5hbWVdO1xyXG5cclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzQ2hpbGRyZW4obm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSkubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZFN0YXRlKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyZGlzYWJsZWFjdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmRpc2FibGVhY3Rpb25dO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0V4cGFuZGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJleGFuZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZXhhbmRlZF07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzSG92ZXJTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmhvdmVyc3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNTZWxlY3RlZFN0YXRlKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJzZWxlY3RlZF07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgaXMgY2FsbGVkIGJ5IGNsaWNraW5nIGFuIGFjdGlvblxyXG4gICAgICogQHBhcmFtIGFjdGlvbiBhY3Rpb24gYW5kIG5vZGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQWN0aW9uQ2xpY2tlZChhY3Rpb246IFRyZWV2aWV3QWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25jbGlja2VkLmVtaXQoYWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Ob2RlQ2xpY2tlZChub2RlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkU3RhdGUobm9kZSkgfHwgdGhpcy5pc1NlbGVjdGVkU3RhdGUobm9kZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZlcnRFeHBhbmRlZFN0YXRlKG5vZGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRIb3ZlclN0YXRlKG5vZGU6IGFueSwgc3RhdGU6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmhvdmVyc3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyaG92ZXJzdGF0ZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW5vZGUuaGFzT3duUHJvcGVydHkodGhpcy5hdHRyaG92ZXJzdGF0ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVsZXRlIG5vZGVbdGhpcy5hdHRyaG92ZXJzdGF0ZV07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZXNldCBzZWxlY3RlZCBzdGF0ZSBvZiBhbnkgbm9kZVxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb290Tm9kZSkgPT4gdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUocm9vdE5vZGUpKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHNlbGVjdGVkIG5vZGUgYXMgc2VsZWN0ZWRcclxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSBuZ01vZGVsXHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShub2RlKTtcclxuXHJcbiAgICAgICAgLy8gUmFpc2UgU2VsZWN0ZWQgRXZlbnRzXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZG5vZGUuZW1pdChub2RlKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmF0dHJpZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaWQgPSB0aGlzLmdldFN0cmluZ0ZpZWxkKG5vZGUsIHRoaXMuYXR0cmlkKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIHByaXZhdGUgaW52ZXJ0RXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmV4YW5kZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSXRlbXMgd2l0aCBubyBjaGlsZHJlbiBjYW5ub3QgYmUgY29sbGFic2VkXHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKG5vZGUpICYmICEodGhpcy5lbmFibGVhc3luY2hsb2FkID09PSB0cnVlIHx8IHRoaXMuZW5hYmxlYXN5bmNobG9hZCA9PT0gJ3RydWUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmV4YW5kZWRdO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbGxhYnNlZC5lbWl0KG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlW3RoaXMuYXR0cmV4YW5kZWRdID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZC5lbWl0KG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlW3RoaXMuYXR0cmV4YW5kZWRdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLmdldENoaWxkcmVuKG5vZGUpLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZFN0YXRlKGNoaWxkKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvdHJlZXZpZXcvdHJlZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEc7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQXdCO0lBdUozRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQW9CLFVBQStCLEVBQUUsUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQS9KaEMscUJBQXFCO1FBRXJCOztXQUVHO1FBRUksa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFeEY7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUVqQzs7V0FFRztRQUNhLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUUvQzs7V0FFRztRQUVJLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBRWhDOztXQUVHO1FBRUksbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFckM7O1dBRUc7UUFFSSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV0Qzs7V0FFRztRQUVJLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FB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QUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVM7UUFDaEMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUFwY0osU0FBUzs7O1lBUEQsbUJBQW1CLHVCQXVLWCxJQUFJO1lBdEttQixRQUFROzs7NEJBYTNDLE1BQU07MkJBTU4sS0FBSztnQ0FNTCxLQUFLOzBCQUtMLEtBQUs7NkJBTUwsS0FBSzt1QkFNTCxLQUFLO3FCQU1MLEtBQUs7d0JBTUwsS0FBSzsyQkFNTCxLQUFLO3dCQU1MLE1BQU07bUJBTU4sS0FBSzsrQkFNTCxLQUFLOzZCQU1MLEtBQUs7dUJBTUwsTUFBTTs0QkFNTixLQUFLO3lCQU1MLEtBQUs7bUJBTUwsS0FBSzt1QkFNTCxNQUFNOzJCQU1OLE1BQU07K0JBTU4sS0FBSzs2QkFNTCxLQUFLOzJCQU1MLEtBQUs7NEJBTUwsS0FBSzt3Q0FNTCxLQUFLOytDQUtMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2Vtb2RlbGNvbnRyb2wnO1xyXG5pbXBvcnQgeyBUcmVldmlld0FjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHJlZXZpZXdhY3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vbGF5b3V0L2Zvcm1sYXlvdXQnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdCwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKlxyXG4gKiBCYXNpcyBLb21wb25lbnRlIGbDvHIgU2FjVHJlZVZpZXdcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjVHJlZXZpZXdDb21tb24gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPGFueT4ge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIEFjdGlvbiBpcyBjbGlja2VkIG9uIE5vZGUuICBBbiBvYmplY3Qgb2YgdGhlIHR5cGUgJ1RyZWV2aWV3QWN0aW9uJyBpcyByZXR1cm5lZC4gSW4gdGhlIGRlZmF1bHQgY2FzZSwgJ2FjdGlvbicgaW4gdGhpcyBvYmplY3QgaXMgYWx3YXlzIHRoZSB2YWx1ZSAnZGVmYXVsdCcuIFRoZSB2YWx1ZSBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlICd0ZW1wbGF0ZWFjdGlvbicuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFjdGlvbmNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxUcmVldmlld0FjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyZWV2aWV3QWN0aW9uPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgb24gdGhlIGRhdGEgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGNoaWxkcmVuIG9mIHRoZSBzdHJ1Y3R1cmUgZWxlbWVudC4gTXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3RzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnY2hpbGRyZW4nXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmNoaWxkcmVuID0gJ2NoaWxkcmVuJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhlIHByb3BlcnR5IG9uIHRoZSAnZGF0YScgb2JqZWN0IHdpdGggd2hpY2ggdGhlIGFjdGlvbnMgZm9yIGEgbm9kZSBjYW4gYmUgZGVhY3RpdmF0ZWQuIEEgJ2Rpc2FibGVkJyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGRlZmF1bHQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdHRyZGlzYWJsZWFjdGlvbiA9ICdkaXNhYmxlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiB0aGUgJ2RhdGEnIG9iamVjdCB0aGF0IHN0b3JlcyB0aGUgZXhwYW5kZWQgc3RhdGUuIFByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLiBEZWZhdWx0IGlzICdleHBhbmRlZCdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRyZXhhbmRlZCA9ICdleHBhbmRlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBmb3Igc2F2aW5nIHRoZSBIb3ZlclN0YXRlIG9uIHRoZSBmaWVsZC4gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50IG9uIHRoZSBub2RlLCBpdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHJlbW92ZWQgYWdhaW4uIFRoZSB2YWx1ZSBjYW4gdXN1YWxseSBiZSBsZWZ0IGF0IHRoZSBkZWZhdWx0IHZhbHVlIHVubGVzcyB0aGVyZSBpcyBhIGNvbmZsaWN0IHdpdGggYSBwcm9wZXJ0eSBvbiB0aGUgbm9kZSB0aGF0IGlzIHJlcXVpcmVkIGZvciBvdGhlciBwdXJwb3Nlcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRyaG92ZXJzdGF0ZSA9ICdob3ZlcnN0YXRlJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IG9uICdkYXRhJyBvYmplY3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBpY29uIGZvciB0aGUgbm9kZS4gQnkgZGVmYXVsdCwgdGhlIHByb3BlcnR5IGlzIG5vdCBzZXQsIHdoaWNoIGhpZGVzIHRoZSBpY29uIGluIHRoZSBub2RlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHByb3BlcnR5IG9uIHRoZSAnZGF0YScgb2JqZWN0IGNvbnRhaW5zIGFuIElEIG9mIHRoZSBub2RlLiBUaGUgZGVmYXVsdCBpcyAnaWQnLiBJZiB0aGUgcHJvcGVydHkgaXMgc2V0IHRvIE5VTEwsIHRoZSBzZWxlY3RlZElkIGV2ZW50IGlzIG5vIGxvbmdlciB0cmlnZ2VyZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmlkOiBzdHJpbmcgfCBudWxsID0gJ2lkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IG9uICdkYXRhJyBvYmplY3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBsYWJlbCBmb3IgdGhlIG5vZGUuIERlZmF1bHQgaXMgJ2xhYmVsJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJsYWJlbCA9ICdsYWJlbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiAnZGF0YScgb2JqZWN0LCB3aGljaCBkZWZpbmVzIHdoZXRoZXIgdGhlIG5vZGUgaXMgc2VsZWN0ZWQgb3Igbm90LiBJdCBzaG91bGQgYmUgZW5zdXJlZCB0aGF0IG9ubHkgMSBub2RlIGhhcyB0aGUgdmFsdWUgZm9yIFNlbGVjdGVkIHNldCB0byB0cnVlLiBEZWZhdWx0IGlzICdzZWxlY3RlZCcuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cnNlbGVjdGVkID0gJ3NlbGVjdGVkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIGNvbGxhcHNlZC4gUmV0dXJucyB0aGUgbm9kZSBlbGVtZW50IGFzIGEgcGFyYW1ldGVyXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNvbGxhYnNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwcm9wZXJ0eSBjb250YWlucyBhbiBhcnJheSBvZiBub2Rlcy4gVGhlIGRhdGEgbXVzdCBhbHJlYWR5IG1hcCB0aGUgdHJlZSB2aWEgY2hpbGQgcHJvcGVydGllcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWN0aXZhdGVzIHRoZSAnZXhwYW5kJyBhbmQgJ2NvbGxhYnNlJyBldmVudCBldmVuIGlmIGEgbm9kZSBoYXMgbm8gY2hpbGRyZW4uIFRoaXMgaXMgaGVscGZ1bCBpZiBub2RlIGVsZW1lbnRzIGFyZSB0byBiZSByZWxvYWRlZCBhdCBydW50aW1lLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGVuYWJsZWFzeW5jaGxvYWQ6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdGl2YXRlcyBFbGxpcHNpcyBvbiB0aGUgbm9kZSBsYWJlbHNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBlbmFibGVlbGxpcHNpcyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZC4gUmV0dXJucyB0aGUgbm9kZSBlbGVtZW50IGFzIGEgcGFyYW1ldGVyXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIGFuIGljb24gZm9yIHRoZSBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdHVzIHNob3VsZCBiZSBkaXNwbGF5ZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZXhwYW5kZWRzdGF0ZTogYm9vbGVhbiB8IHN0cmluZyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIG5vZGUgbXVzdCBiZSBzZWxlY3RlZFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIFRyZWVWaWV3IGNvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIHNlbGVjdGVkLiBSZXR1cm5zIHRoZSBpZCBhdHRyaWJ1dGUgYXMgYSBwYXJhbWV0ZXIuIFRoZSBldmVudCBpcyBub3QgdHJpZ2dlcmVkIGlmICdhdHRyaWQnIGlzIG5vdCBzZXQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgc2VsZWN0ZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlci5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRub2RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGF0IHRoZSBhY3Rpb24gdGVtcGxhdGUgaXMgZGlzcGxheWVkIGluZGVwZW5kZW50bHkgb2YgdGhlIHNlbGVjdGVkIHN0YXRlLiBJZiB0aGUgdmFsdWUgaXMgJ3RydWUnLCB0aGUgYWN0aW9uIHRlbXBsYXRlIGlzIGRpc3BsYXllZCBmb3IgZXZlcnkgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaG93YWN0aW9uYWx3YXlzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciBhY3Rpb25zIHBlciBub2RlLiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZTogJ25vZGUnXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGVtcGxhdGVhY3Rpb246IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIGljb24gcGVyIG5vZGUuIFRlbXBsYXRlIHBhcmFtZXRlcnMgYXJlOiAnbm9kZSdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0ZW1wbGF0ZWljb246IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIHRoZSBsYWJlbCBhcmVhIHBlciBub2RlLiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZTogJ25vZGUnIGFuZCAnbGFiZWwnXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGVtcGxhdGVsYWJlbDogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgU2VydmljZSBJbmplY3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihASG9zdCgpIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGljb25BY3Rpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVBY3Rpb25JY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGljb24gZm9yIGZvbGRlcnMgaW4gdHJlZSB0aGVyZSBhcmUgY29sbGFic2VkXHJcbiAgICAgKiBAcmV0dXJucyBjc3MgY2xhc3Mgd2l0aCBpY29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaWNvbkZvbGRlckNvbGxhYnNlZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlRyZWV2aWV3Tm9kZUNsb3NlZEljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDU1MgaWNvbiBjbGFzcyBmb3IgZm9sZGVycyB3aXRob3V0IHN1YmZvbGRlcnNcclxuICAgICAqIEByZXR1cm5zIGNzcyBjbGFzcyB3aXRoIGljb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpY29uRm9sZGVyRW1wdHkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVFbXB0eUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDU1MgaWNvbiBmb3IgZm9sZGVycyBpbiB0cmVlIHRoZXJlIGFyZSBleHBhbmRlZFxyXG4gICAgICogQHJldHVybnMgY3NzIGNsYXNzIHdpdGggaWNvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGljb25Gb2xkZXJPcGVuKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlT3Blbkljb247XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYSBjZXJ0YWluIHNpemUuIElzIHJlcXVpcmVkIGZvciBhIEZvciBpbiB0aGUgVUksIGFzIEFuZ3VsYXIgZG9lcyBub3Qgc3VwcG9ydCBjb3VudGluZyBsb29wc1xyXG4gICAgICogQHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgYXJyYXlcclxuICAgICAqIEByZXR1cm5zIEFycmF5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb3VudChzaXplOiBudW1iZXIpOiBBcnJheTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShzaXplKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4obm9kZTogYW55KTogYW55W10ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gbm9kZVt0aGlzLmF0dHJjaGlsZHJlbl07XHJcblxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTdHJpbmdGaWVsZChub2RlOiBhbnksIGZpZWxkbmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmaWVsZG5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW2ZpZWxkbmFtZV07XHJcblxyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYXNDaGlsZHJlbihub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlbihub2RlKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0Rpc2FibGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJkaXNhYmxlYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZGlzYWJsZWFjdGlvbl07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzRXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmV4YW5kZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJleGFuZGVkXTtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNIb3ZlclN0YXRlKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyaG92ZXJzdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmhvdmVyc3RhdGVdO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1NlbGVjdGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXTtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCBpcyBjYWxsZWQgYnkgY2xpY2tpbmcgYW4gYWN0aW9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uIGFjdGlvbiBhbmQgbm9kZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25BY3Rpb25DbGlja2VkKGFjdGlvbjogVHJlZXZpZXdBY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmFjdGlvbmNsaWNrZWQuZW1pdChhY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIGlzIGNhbGxlZCB3aGVuIE5vZGUgaW4gVHJlZSBpcyBjbGlja2VkXHJcbiAgICAgKiBAcGFyYW0gbm9kZSBTZWxlY3RlZCBOb2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbk5vZGVDbGlja2VkKG5vZGU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWRTdGF0ZShub2RlKSB8fCB0aGlzLmlzU2VsZWN0ZWRTdGF0ZShub2RlKSkge1xyXG4gICAgICAgICAgICB0aGlzLmludmVydEV4cGFuZGVkU3RhdGUobm9kZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBob3ZlciBzdGF0ZSBvbiBhIG5vZGVcclxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgb24gd2hpY2ggdGhlIHN0YXR1cyBpcyBzZXRcclxuICAgICAqIEBwYXJhbSBzdGF0ZSBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIEhvdmVyU3RhdGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldEhvdmVyU3RhdGUobm9kZTogYW55LCBzdGF0ZTogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyaG92ZXJzdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbm9kZS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmF0dHJob3ZlcnN0YXRlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWxldGUgbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHNlbGVjdGVkIHN0YXRlIG9uIGEgbm9kZVxyXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZSB3aGljaCBpcyBtYXJrZWQgYXMgU2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZXNldCBzZWxlY3RlZCBzdGF0ZSBvZiBhbnkgbm9kZVxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb290Tm9kZSkgPT4gdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUocm9vdE5vZGUpKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHNlbGVjdGVkIG5vZGUgYXMgc2VsZWN0ZWRcclxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIEV4dHJhY3QgSUQgZnJvbSBOb2RlXHJcbiAgICAgICAgY29uc3QgaWRWYWx1ZSA9IG5vZGVbdGhpcy5hdHRyaWRdO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgbmdNb2RlbFxyXG4gICAgICAgIHRoaXMuc2V0VmFsdWUoaWRWYWx1ZSk7XHJcblxyXG4gICAgICAgIC8vIFJhaXNlIFNlbGVjdGVkIEV2ZW50c1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRub2RlLmVtaXQobm9kZSk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5hdHRyaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5nZXRTdHJpbmdGaWVsZChub2RlLCB0aGlzLmF0dHJpZCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRlcyB0aGUgbW9kZWwgc3RhdGUgb2YgdGhlIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgaW5zdGFuY2VcclxuICAgICAqIEByZXR1cm5zIFJldHVybnMgYSB2YWxpZGF0aW9uIGVycm9yLCBpZiBwcmVzZW50LiBPdGhlcndpc2UsIGFzIFJlc3VsdCBpcyBOVUxMXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZXMgdGhlIGRhdGEgZnJvbSB0aGUgbW9kZWwgYmluZGluZ1xyXG4gICAgICogQHBhcmFtIHZhbHVlIElkIG9mIHRoZSBzZWxlY3RlZCBub2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgLy8gRG8gbm90IHByZXNlbGN0IGl0ZW0gd2hlbiB0cmVlIGlzIGVtcHR5XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvb3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kTm9kZUJ5SWQocm9vdCwgdmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlYXJjaGVzIGZvciBhIG5vZGUgYmFzZWQgb24gdGhlIHZhbHVlIGluIHRoZSBJRCBhdHRyaWJ1dGVcclxuICAgICAqIEBwYXJhbSBub2RlIE5vZGVcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBvZiB0aGUgSWQgYXR0cmlidXRlXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBub2RlIGlmIGl0IGlzIGZvdW5kLiBJZiBub3QsIE5VTEwgaXMgcmV0dXJuZWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmluZE5vZGVCeUlkKG5vZGU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmF0dHJpZCB8fCAhbm9kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChub2RlW3RoaXMuYXR0cmlkXSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSk7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kTm9kZUJ5SWQoY2hpbGQsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbnZlcnRFeHBhbmRlZFN0YXRlKG5vZGU6IGFueSkge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyZXhhbmRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJdGVtcyB3aXRoIG5vIGNoaWxkcmVuIGNhbm5vdCBiZSBjb2xsYWJzZWRcclxuICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4obm9kZSkgJiYgISh0aGlzLmVuYWJsZWFzeW5jaGxvYWQgPT09IHRydWUgfHwgdGhpcy5lbmFibGVhc3luY2hsb2FkID09PSAndHJ1ZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZXhhbmRlZF07XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sbGFic2VkLmVtaXQobm9kZSk7XHJcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyZXhhbmRlZF0gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkLmVtaXQobm9kZSk7XHJcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyZXhhbmRlZF0gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlc2V0U2VsZWN0ZWRTdGF0ZShub2RlOiBhbnkpIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5vZGVbdGhpcy5hdHRyc2VsZWN0ZWRdID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSkuZm9yRWFjaCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUoY2hpbGQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter, Directive, Input, Output, ɵɵdefineInjectable, Injectable, InjectionToken, ɵɵinject, Inject, Host, Injector, ChangeDetectorRef, ViewChild, HostListener, Renderer2, ElementRef, ViewChildren, ContentChild, TemplateRef, NgZone, ContentChildren,
|
|
1
|
+
import { EventEmitter, Directive, Input, Output, ɵɵdefineInjectable, Injectable, InjectionToken, ɵɵinject, Inject, Host, Injector, ChangeDetectorRef, ViewChild, HostListener, Renderer2, ElementRef, ViewChildren, ContentChild, TemplateRef, NgZone, ContentChildren, NgModule } from '@angular/core';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { Observable, of } from 'rxjs';
|
|
4
4
|
import { NgControl, FormControlName, FormGroupDirective, Validators, FormGroup, NgForm } from '@angular/forms';
|
|
@@ -7801,12 +7801,21 @@ class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
7801
7801
|
onActionClicked(action) {
|
|
7802
7802
|
this.actionclicked.emit(action);
|
|
7803
7803
|
}
|
|
7804
|
+
/**
|
|
7805
|
+
* Method is called when Node in Tree is clicked
|
|
7806
|
+
* @param node Selected Node
|
|
7807
|
+
*/
|
|
7804
7808
|
onNodeClicked(node) {
|
|
7805
7809
|
if (this.isDisabledState(node) || this.isSelectedState(node)) {
|
|
7806
7810
|
this.invertExpandedState(node);
|
|
7807
7811
|
}
|
|
7808
7812
|
this.setSelectedState(node);
|
|
7809
7813
|
}
|
|
7814
|
+
/**
|
|
7815
|
+
* Sets the hover state on a node
|
|
7816
|
+
* @param node Node on which the status is set
|
|
7817
|
+
* @param state Activate or deactivate HoverState
|
|
7818
|
+
*/
|
|
7810
7819
|
setHoverState(node, state) {
|
|
7811
7820
|
if (!node || !this.attrhoverstate) {
|
|
7812
7821
|
return;
|
|
@@ -7820,6 +7829,10 @@ class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
7820
7829
|
}
|
|
7821
7830
|
delete node[this.attrhoverstate];
|
|
7822
7831
|
}
|
|
7832
|
+
/**
|
|
7833
|
+
* Sets the selected state on a node
|
|
7834
|
+
* @param node Node which is marked as Selected
|
|
7835
|
+
*/
|
|
7823
7836
|
setSelectedState(node) {
|
|
7824
7837
|
if (!node || !this.attrselected) {
|
|
7825
7838
|
return;
|
|
@@ -7828,8 +7841,10 @@ class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
7828
7841
|
this.data.forEach((rootNode) => this.resetSelectedState(rootNode));
|
|
7829
7842
|
// set selected node as selected
|
|
7830
7843
|
node[this.attrselected] = true;
|
|
7844
|
+
// Extract ID from Node
|
|
7845
|
+
const idValue = node[this.attrid];
|
|
7831
7846
|
// Update ngModel
|
|
7832
|
-
this.setValue(
|
|
7847
|
+
this.setValue(idValue);
|
|
7833
7848
|
// Raise Selected Events
|
|
7834
7849
|
this.selectednode.emit(node);
|
|
7835
7850
|
if (!this.attrid) {
|
|
@@ -7838,6 +7853,11 @@ class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
7838
7853
|
let id = this.getStringField(node, this.attrid);
|
|
7839
7854
|
this.selected.emit(id);
|
|
7840
7855
|
}
|
|
7856
|
+
/**
|
|
7857
|
+
* Validates the model state of the control
|
|
7858
|
+
* @param c Control instance
|
|
7859
|
+
* @returns Returns a validation error, if present. Otherwise, as Result is NULL
|
|
7860
|
+
*/
|
|
7841
7861
|
validateData(c) {
|
|
7842
7862
|
let error = null;
|
|
7843
7863
|
if (this.isrequired) {
|
|
@@ -7845,8 +7865,47 @@ class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
7845
7865
|
}
|
|
7846
7866
|
return error;
|
|
7847
7867
|
}
|
|
7868
|
+
/**
|
|
7869
|
+
* Saves the data from the model binding
|
|
7870
|
+
* @param value Id of the selected node
|
|
7871
|
+
*/
|
|
7872
|
+
writeValue(value) {
|
|
7873
|
+
super.writeValue(value);
|
|
7874
|
+
// Do not preselct item when tree is empty
|
|
7875
|
+
if (!this.data) {
|
|
7876
|
+
return;
|
|
7877
|
+
}
|
|
7878
|
+
this.data.forEach((root) => {
|
|
7879
|
+
const result = this.findNodeById(root, value);
|
|
7880
|
+
if (result !== null) {
|
|
7881
|
+
this.setSelectedState(result);
|
|
7882
|
+
}
|
|
7883
|
+
});
|
|
7884
|
+
}
|
|
7848
7885
|
// #endregion Public Methods
|
|
7849
7886
|
// #region Private Methods
|
|
7887
|
+
/**
|
|
7888
|
+
* Searches for a node based on the value in the ID attribute
|
|
7889
|
+
* @param node Node
|
|
7890
|
+
* @param value Value of the Id attribute
|
|
7891
|
+
* @returns Returns the node if it is found. If not, NULL is returned.
|
|
7892
|
+
*/
|
|
7893
|
+
findNodeById(node, value) {
|
|
7894
|
+
if (!this.attrid || !node) {
|
|
7895
|
+
return null;
|
|
7896
|
+
}
|
|
7897
|
+
if (node[this.attrid] === value) {
|
|
7898
|
+
return node;
|
|
7899
|
+
}
|
|
7900
|
+
const children = this.getChildren(node);
|
|
7901
|
+
for (let child of children) {
|
|
7902
|
+
const result = this.findNodeById(child, value);
|
|
7903
|
+
if (result !== null) {
|
|
7904
|
+
return result;
|
|
7905
|
+
}
|
|
7906
|
+
}
|
|
7907
|
+
return null;
|
|
7908
|
+
}
|
|
7850
7909
|
invertExpandedState(node) {
|
|
7851
7910
|
if (!node || !this.attrexanded) {
|
|
7852
7911
|
return;
|
|
@@ -7904,6 +7963,7 @@ SacTreeviewCommon.propDecorators = {
|
|
|
7904
7963
|
selectednode: [{ type: Output }],
|
|
7905
7964
|
showactionalways: [{ type: Input }],
|
|
7906
7965
|
templateaction: [{ type: Input }],
|
|
7966
|
+
templateicon: [{ type: Input }],
|
|
7907
7967
|
templatelabel: [{ type: Input }],
|
|
7908
7968
|
validationmessagerequired: [{ type: Input }],
|
|
7909
7969
|
validationmessagesummaryrequired: [{ type: Input }]
|
|
@@ -8147,7 +8207,7 @@ SacTooltipCommon.propDecorators = {
|
|
|
8147
8207
|
tooltip: [{ type: ViewChild, args: ['tooltip', { static: false },] }]
|
|
8148
8208
|
};
|
|
8149
8209
|
|
|
8150
|
-
// #region Classes
|
|
8210
|
+
// #region Exported Classes
|
|
8151
8211
|
/**
|
|
8152
8212
|
* Base Klasse für Uploader Control
|
|
8153
8213
|
*/
|
|
@@ -8165,6 +8225,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8165
8225
|
super(formlayout, injector);
|
|
8166
8226
|
this.renderer = renderer;
|
|
8167
8227
|
this.ngZone = ngZone;
|
|
8228
|
+
// #region Properties
|
|
8168
8229
|
/**
|
|
8169
8230
|
* Erlaubte Dateitypen
|
|
8170
8231
|
*/
|
|
@@ -8181,10 +8242,22 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8181
8242
|
* API Endpoint
|
|
8182
8243
|
*/
|
|
8183
8244
|
this._endpoint = null;
|
|
8245
|
+
/**
|
|
8246
|
+
* Token for Bearer Authentication
|
|
8247
|
+
*/
|
|
8248
|
+
this._token = null;
|
|
8184
8249
|
/**
|
|
8185
8250
|
* Upload Settings
|
|
8186
8251
|
*/
|
|
8187
8252
|
this.options = {};
|
|
8253
|
+
/**
|
|
8254
|
+
* Handling von neuen Files im Input Control
|
|
8255
|
+
*/
|
|
8256
|
+
this.fileListener = () => {
|
|
8257
|
+
if (this.uploadInput.nativeElement.files) {
|
|
8258
|
+
this.uploadService.handleFileList(this.uploadInput.nativeElement.files);
|
|
8259
|
+
}
|
|
8260
|
+
};
|
|
8188
8261
|
/**
|
|
8189
8262
|
* Definiert das Control als Required
|
|
8190
8263
|
*/
|
|
@@ -8193,6 +8266,10 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8193
8266
|
* Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter
|
|
8194
8267
|
*/
|
|
8195
8268
|
this.maxfilesize = 0;
|
|
8269
|
+
/**
|
|
8270
|
+
* Event wenn ein Error in der Komponente ausgelöst wird.
|
|
8271
|
+
*/
|
|
8272
|
+
this.onfileerror = new EventEmitter();
|
|
8196
8273
|
/**
|
|
8197
8274
|
* Resource Key für Validation Message Required bei Control
|
|
8198
8275
|
*/
|
|
@@ -8201,18 +8278,6 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8201
8278
|
* Resource Key für Validation Message Required in Validation Summary
|
|
8202
8279
|
*/
|
|
8203
8280
|
this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
|
|
8204
|
-
/**
|
|
8205
|
-
* Event wenn ein Error in der Komponente ausgelöst wird.
|
|
8206
|
-
*/
|
|
8207
|
-
this.onfileerror = new EventEmitter();
|
|
8208
|
-
/**
|
|
8209
|
-
* Handling von neuen Files im Input Control
|
|
8210
|
-
*/
|
|
8211
|
-
this.fileListener = () => {
|
|
8212
|
-
if (this.uploadInput.nativeElement.files) {
|
|
8213
|
-
this.uploadService.handleFileList(this.uploadInput.nativeElement.files);
|
|
8214
|
-
}
|
|
8215
|
-
};
|
|
8216
8281
|
this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());
|
|
8217
8282
|
this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService(this.validationKeyService));
|
|
8218
8283
|
this.uploads = [];
|
|
@@ -8233,34 +8298,6 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8233
8298
|
}
|
|
8234
8299
|
// #endregion Constructors
|
|
8235
8300
|
// #region Public Getters And Setters
|
|
8236
|
-
/**
|
|
8237
|
-
* Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
|
|
8238
|
-
*/
|
|
8239
|
-
set allowedtypes(types) {
|
|
8240
|
-
this._allowedtypes = types;
|
|
8241
|
-
this.setAllowedTypes(types);
|
|
8242
|
-
}
|
|
8243
|
-
/**
|
|
8244
|
-
* Files nach der Auswahl automatisch hochladen
|
|
8245
|
-
*/
|
|
8246
|
-
set autoupload(v) {
|
|
8247
|
-
this._autoupload = v;
|
|
8248
|
-
this.options.autoUpload = v;
|
|
8249
|
-
this.uploadService.connect(this.options);
|
|
8250
|
-
}
|
|
8251
|
-
/**
|
|
8252
|
-
* Uploads können unterbrochen werden
|
|
8253
|
-
*/
|
|
8254
|
-
set enablepause(v) {
|
|
8255
|
-
this._enablepause = v;
|
|
8256
|
-
}
|
|
8257
|
-
/**
|
|
8258
|
-
* Definiert den Registration Endpoint für Uploads.
|
|
8259
|
-
*/
|
|
8260
|
-
set endpoint(v) {
|
|
8261
|
-
this._endpoint = v;
|
|
8262
|
-
this.setEndpoint(v);
|
|
8263
|
-
}
|
|
8264
8301
|
/**
|
|
8265
8302
|
* Icon for browse button
|
|
8266
8303
|
*/
|
|
@@ -8294,17 +8331,56 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8294
8331
|
get allowedtypes() {
|
|
8295
8332
|
return this._allowedtypes;
|
|
8296
8333
|
}
|
|
8334
|
+
/**
|
|
8335
|
+
* Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
|
|
8336
|
+
*/
|
|
8337
|
+
set allowedtypes(types) {
|
|
8338
|
+
this._allowedtypes = types;
|
|
8339
|
+
this.setAllowedTypes(types);
|
|
8340
|
+
}
|
|
8297
8341
|
get autoupload() {
|
|
8298
8342
|
return this._autoupload;
|
|
8299
8343
|
}
|
|
8344
|
+
/**
|
|
8345
|
+
* Files nach der Auswahl automatisch hochladen
|
|
8346
|
+
*/
|
|
8347
|
+
set autoupload(v) {
|
|
8348
|
+
this._autoupload = v;
|
|
8349
|
+
this.options.autoUpload = v;
|
|
8350
|
+
this.uploadService.connect(this.options);
|
|
8351
|
+
}
|
|
8300
8352
|
get enablepause() {
|
|
8301
8353
|
return this._enablepause;
|
|
8302
8354
|
}
|
|
8355
|
+
/**
|
|
8356
|
+
* Uploads können unterbrochen werden
|
|
8357
|
+
*/
|
|
8358
|
+
set enablepause(v) {
|
|
8359
|
+
this._enablepause = v;
|
|
8360
|
+
}
|
|
8303
8361
|
get endpoint() {
|
|
8304
8362
|
return this._endpoint;
|
|
8305
8363
|
}
|
|
8306
|
-
|
|
8307
|
-
|
|
8364
|
+
/**
|
|
8365
|
+
* Definiert den Registration Endpoint für Uploads.
|
|
8366
|
+
*/
|
|
8367
|
+
set endpoint(v) {
|
|
8368
|
+
this._endpoint = v;
|
|
8369
|
+
this.setEndpoint(v);
|
|
8370
|
+
}
|
|
8371
|
+
/**
|
|
8372
|
+
* Token for Bearer Authentication
|
|
8373
|
+
*/
|
|
8374
|
+
get token() {
|
|
8375
|
+
return this._token;
|
|
8376
|
+
}
|
|
8377
|
+
/**
|
|
8378
|
+
* Token for Bearer Authentication
|
|
8379
|
+
*/
|
|
8380
|
+
set token(v) {
|
|
8381
|
+
this._token = v;
|
|
8382
|
+
this.setToken(v);
|
|
8383
|
+
}
|
|
8308
8384
|
/**
|
|
8309
8385
|
* Name der Datei die Hochgeladen wird
|
|
8310
8386
|
* @returns Observable des Dateinamens.
|
|
@@ -8330,7 +8406,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8330
8406
|
*/
|
|
8331
8407
|
HasSuccessUpload() {
|
|
8332
8408
|
if (this.uploads.length > 0) {
|
|
8333
|
-
return
|
|
8409
|
+
return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;
|
|
8334
8410
|
}
|
|
8335
8411
|
else {
|
|
8336
8412
|
return false;
|
|
@@ -8348,7 +8424,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8348
8424
|
* @returns Elemente für Upload vorhanden
|
|
8349
8425
|
*/
|
|
8350
8426
|
IsStateToUpload() {
|
|
8351
|
-
return
|
|
8427
|
+
return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;
|
|
8352
8428
|
}
|
|
8353
8429
|
/**
|
|
8354
8430
|
* Prüft ob ein Upload eines Files am laufen ist
|
|
@@ -8393,7 +8469,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8393
8469
|
}
|
|
8394
8470
|
}
|
|
8395
8471
|
/**
|
|
8396
|
-
*
|
|
8472
|
+
* Initializes the control
|
|
8397
8473
|
*/
|
|
8398
8474
|
ngOnInit() {
|
|
8399
8475
|
super.ngOnInit();
|
|
@@ -8401,6 +8477,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8401
8477
|
this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);
|
|
8402
8478
|
this.setAllowedTypes(this._allowedtypes);
|
|
8403
8479
|
this.setEndpoint(this._endpoint);
|
|
8480
|
+
this.setToken(this._token);
|
|
8404
8481
|
if (this._endpoint === null) {
|
|
8405
8482
|
throw new Error('endpoint is not defined!');
|
|
8406
8483
|
}
|
|
@@ -8463,6 +8540,12 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8463
8540
|
this.uploadService.control({ action: 'pause' });
|
|
8464
8541
|
}
|
|
8465
8542
|
}
|
|
8543
|
+
/**
|
|
8544
|
+
* Sets the bearer token in the upload service
|
|
8545
|
+
*/
|
|
8546
|
+
setToken(value) {
|
|
8547
|
+
this.options.token = value;
|
|
8548
|
+
}
|
|
8466
8549
|
/**
|
|
8467
8550
|
* Upload Single File
|
|
8468
8551
|
*
|
|
@@ -8490,13 +8573,12 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8490
8573
|
}
|
|
8491
8574
|
return error;
|
|
8492
8575
|
}
|
|
8493
|
-
// #endregion Public
|
|
8576
|
+
// #endregion Public Methods
|
|
8494
8577
|
// #region Private Methods
|
|
8495
8578
|
UpdateFileCount() {
|
|
8496
8579
|
// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
|
|
8497
8580
|
if (this.ngControl) {
|
|
8498
|
-
this.ngControl.uploadedfilecount =
|
|
8499
|
-
this.UploadedFileCount();
|
|
8581
|
+
this.ngControl.uploadedfilecount = this.UploadedFileCount();
|
|
8500
8582
|
}
|
|
8501
8583
|
}
|
|
8502
8584
|
/**
|
|
@@ -8567,13 +8649,14 @@ SacUploadBase.propDecorators = {
|
|
|
8567
8649
|
uploadInput: [{ type: ViewChild, args: ['files', { static: true },] }],
|
|
8568
8650
|
isrequired: [{ type: Input }],
|
|
8569
8651
|
maxfilesize: [{ type: Input }],
|
|
8652
|
+
onfileerror: [{ type: Output }],
|
|
8570
8653
|
validationmessagerequired: [{ type: Input }],
|
|
8571
8654
|
validationmessagesummaryrequired: [{ type: Input }],
|
|
8572
|
-
onfileerror: [{ type: Output }],
|
|
8573
8655
|
allowedtypes: [{ type: Input }],
|
|
8574
8656
|
autoupload: [{ type: Input }],
|
|
8575
8657
|
enablepause: [{ type: Input }],
|
|
8576
|
-
endpoint: [{ type: Input }]
|
|
8658
|
+
endpoint: [{ type: Input }],
|
|
8659
|
+
token: [{ type: Input }]
|
|
8577
8660
|
};
|
|
8578
8661
|
/**
|
|
8579
8662
|
* Klasse für den Upload einer Datei in der Upload Component
|
|
@@ -8593,7 +8676,7 @@ class SacUploadFile {
|
|
|
8593
8676
|
this.documentid = null;
|
|
8594
8677
|
}
|
|
8595
8678
|
}
|
|
8596
|
-
// #endregion Classes
|
|
8679
|
+
// #endregion Exported Classes
|
|
8597
8680
|
|
|
8598
8681
|
/**
|
|
8599
8682
|
* Upload Komponente für ein einzelnes File
|
|
@@ -10216,7 +10299,7 @@ SacContextmenuCommon.propDecorators = {
|
|
|
10216
10299
|
container: [{ type: Input }],
|
|
10217
10300
|
cssclass: [{ type: Input }],
|
|
10218
10301
|
isopen: [{ type: Input }],
|
|
10219
|
-
menuitems: [{ type: ContentChildren, args: [
|
|
10302
|
+
menuitems: [{ type: ContentChildren, args: [SacContextmenuItemCommon,] }],
|
|
10220
10303
|
placement: [{ type: Input }],
|
|
10221
10304
|
onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
|
|
10222
10305
|
};
|