@simpleangularcontrols/sac-common 10.0.0-rc.14 → 10.0.0-rc.16
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 +177 -67
- 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 +73 -52
- package/controls/treeview/treeview.d.ts +34 -0
- package/esm2015/common/baseuploadcontrol.js +92 -58
- package/esm2015/controls/treeview/treeview.js +62 -2
- package/esm2015/interfaces/ISacUploadEventCompleteState.js +1 -0
- package/esm2015/interfaces/ISacUploadEventCompleteState.ngfactory.js +7 -0
- package/fesm2015/simpleangularcontrols-sac-common.js +147 -53
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
- package/interfaces/ISacUploadEventCompleteState.d.ts +5 -0
- package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts +1 -0
- package/package.json +1 -1
- package/simpleangularcontrols-sac-common-10.0.0-rc.16.tgz +0 -0
- package/simpleangularcontrols-sac-common.metadata.json +1 -1
- package/simpleangularcontrols-sac-common-10.0.0-rc.14.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvdHJlZXZpZXcvdHJlZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEc7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQXdCO0lBaUozRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQW9CLFVBQStCLEVBQUUsUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQXpKaEMscUJBQXFCO1FBRXJCOztXQUVHO1FBRUksa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFeEY7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUVqQzs7V0FFRztRQUNhLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUUvQzs7V0FFRztRQUVJLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBRWhDOztXQUVHO1FBRUksbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFckM7O1dBRUc7UUFFSSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV0Qzs7V0FFRztRQUVJLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FB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O1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVM7UUFDaEMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUExWEosU0FBUzs7O1lBUEQsbUJBQW1CLHVCQWlLWCxJQUFJO1lBaEttQixRQUFROzs7NEJBYTNDLE1BQU07MkJBTU4sS0FBSztnQ0FNTCxLQUFLOzBCQUtMLEtBQUs7NkJBTUwsS0FBSzt1QkFNTCxLQUFLO3FCQU1MLEtBQUs7d0JBTUwsS0FBSzsyQkFNTCxLQUFLO3dCQU1MLE1BQU07bUJBTU4sS0FBSzsrQkFNTCxLQUFLOzZCQU1MLEtBQUs7dUJBTUwsTUFBTTs0QkFNTixLQUFLO3lCQU1MLEtBQUs7bUJBTUwsS0FBSzt1QkFNTCxNQUFNOzJCQU1OLE1BQU07K0JBTU4sS0FBSzs2QkFNTCxLQUFLOzRCQU1MLEtBQUs7d0NBTUwsS0FBSzsrQ0FLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4uLy4uL2NvbW1vbi9iYXNlbW9kZWxjb250cm9sJztcclxuaW1wb3J0IHsgVHJlZXZpZXdBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RyZWV2aWV3YWN0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0JztcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3QsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKipcclxuICogQmFzaXMgS29tcG9uZW50ZSBmw7xyIFNhY1RyZWVWaWV3XHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY1RyZWV2aWV3Q29tbW9uIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxhbnk+IHtcclxuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBBY3Rpb24gaXMgY2xpY2tlZCBvbiBOb2RlLiAgQW4gb2JqZWN0IG9mIHRoZSB0eXBlICdUcmVldmlld0FjdGlvbicgaXMgcmV0dXJuZWQuIEluIHRoZSBkZWZhdWx0IGNhc2UsICdhY3Rpb24nIGluIHRoaXMgb2JqZWN0IGlzIGFsd2F5cyB0aGUgdmFsdWUgJ2RlZmF1bHQnLiBUaGUgdmFsdWUgY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSAndGVtcGxhdGVhY3Rpb24nLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhY3Rpb25jbGlja2VkOiBFdmVudEVtaXR0ZXI8VHJlZXZpZXdBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVldmlld0FjdGlvbj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IG9uIHRoZSBkYXRhIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBjaGlsZHJlbiBvZiB0aGUgc3RydWN0dXJlIGVsZW1lbnQuIE11c3QgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ2NoaWxkcmVuJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJjaGlsZHJlbiA9ICdjaGlsZHJlbic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHRoZSBwcm9wZXJ0eSBvbiB0aGUgJ2RhdGEnIG9iamVjdCB3aXRoIHdoaWNoIHRoZSBhY3Rpb25zIGZvciBhIG5vZGUgY2FuIGJlIGRlYWN0aXZhdGVkLiBBICdkaXNhYmxlZCcgcHJvcGVydHkgaXMgdXNlZCBieSBkZWZhdWx0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXR0cmRpc2FibGVhY3Rpb24gPSAnZGlzYWJsZWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3QgdGhhdCBzdG9yZXMgdGhlIGV4cGFuZGVkIHN0YXRlLiBQcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4gRGVmYXVsdCBpcyAnZXhwYW5kZWQnXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmV4YW5kZWQgPSAnZXhwYW5kZWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgZm9yIHNhdmluZyB0aGUgSG92ZXJTdGF0ZSBvbiB0aGUgZmllbGQuIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCBvbiB0aGUgbm9kZSwgaXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCByZW1vdmVkIGFnYWluLiBUaGUgdmFsdWUgY2FuIHVzdWFsbHkgYmUgbGVmdCBhdCB0aGUgZGVmYXVsdCB2YWx1ZSB1bmxlc3MgdGhlcmUgaXMgYSBjb25mbGljdCB3aXRoIGEgcHJvcGVydHkgb24gdGhlIG5vZGUgdGhhdCBpcyByZXF1aXJlZCBmb3Igb3RoZXIgcHVycG9zZXMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmhvdmVyc3RhdGUgPSAnaG92ZXJzdGF0ZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiAnZGF0YScgb2JqZWN0LCB3aGljaCBjb250YWlucyB0aGUgaWNvbiBmb3IgdGhlIG5vZGUuIEJ5IGRlZmF1bHQsIHRoZSBwcm9wZXJ0eSBpcyBub3Qgc2V0LCB3aGljaCBoaWRlcyB0aGUgaWNvbiBpbiB0aGUgbm9kZS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRyaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBwcm9wZXJ0eSBvbiB0aGUgJ2RhdGEnIG9iamVjdCBjb250YWlucyBhbiBJRCBvZiB0aGUgbm9kZS4gVGhlIGRlZmF1bHQgaXMgJ2lkJy4gSWYgdGhlIHByb3BlcnR5IGlzIHNldCB0byBOVUxMLCB0aGUgc2VsZWN0ZWRJZCBldmVudCBpcyBubyBsb25nZXIgdHJpZ2dlcmVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJpZDogc3RyaW5nIHwgbnVsbCA9ICdpZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiAnZGF0YScgb2JqZWN0LCB3aGljaCBjb250YWlucyB0aGUgbGFiZWwgZm9yIHRoZSBub2RlLiBEZWZhdWx0IGlzICdsYWJlbCdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRybGFiZWwgPSAnbGFiZWwnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgb24gJ2RhdGEnIG9iamVjdCwgd2hpY2ggZGVmaW5lcyB3aGV0aGVyIHRoZSBub2RlIGlzIHNlbGVjdGVkIG9yIG5vdC4gSXQgc2hvdWxkIGJlIGVuc3VyZWQgdGhhdCBvbmx5IDEgbm9kZSBoYXMgdGhlIHZhbHVlIGZvciBTZWxlY3RlZCBzZXQgdG8gdHJ1ZS4gRGVmYXVsdCBpcyAnc2VsZWN0ZWQnLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJzZWxlY3RlZCA9ICdzZWxlY3RlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBjb2xsYXBzZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlclxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjb2xsYWJzZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcHJvcGVydHkgY29udGFpbnMgYW4gYXJyYXkgb2Ygbm9kZXMuIFRoZSBkYXRhIG11c3QgYWxyZWFkeSBtYXAgdGhlIHRyZWUgdmlhIGNoaWxkIHByb3BlcnRpZXMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdGl2YXRlcyB0aGUgJ2V4cGFuZCcgYW5kICdjb2xsYWJzZScgZXZlbnQgZXZlbiBpZiBhIG5vZGUgaGFzIG5vIGNoaWxkcmVuLiBUaGlzIGlzIGhlbHBmdWwgaWYgbm9kZSBlbGVtZW50cyBhcmUgdG8gYmUgcmVsb2FkZWQgYXQgcnVudGltZS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBlbmFibGVhc3luY2hsb2FkOiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBY3RpdmF0ZXMgRWxsaXBzaXMgb24gdGhlIG5vZGUgbGFiZWxzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZW5hYmxlZWxsaXBzaXMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgZXhwYW5kZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlclxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBleHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgd2hldGhlciBhbiBpY29uIGZvciB0aGUgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXR1cyBzaG91bGQgYmUgZGlzcGxheWVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGV4cGFuZGVkc3RhdGU6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBub2RlIG11c3QgYmUgc2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBUcmVlVmlldyBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC4gUmV0dXJucyB0aGUgaWQgYXR0cmlidXRlIGFzIGEgcGFyYW1ldGVyLiBUaGUgZXZlbnQgaXMgbm90IHRyaWdnZXJlZCBpZiAnYXR0cmlkJyBpcyBub3Qgc2V0LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIHNlbGVjdGVkLiBSZXR1cm5zIHRoZSBub2RlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXIuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkbm9kZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhhdCB0aGUgYWN0aW9uIHRlbXBsYXRlIGlzIGRpc3BsYXllZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBzZWxlY3RlZCBzdGF0ZS4gSWYgdGhlIHZhbHVlIGlzICd0cnVlJywgdGhlIGFjdGlvbiB0ZW1wbGF0ZSBpcyBkaXNwbGF5ZWQgZm9yIGV2ZXJ5IGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd2FjdGlvbmFsd2F5cztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgYWN0aW9ucyBwZXIgbm9kZS4gVGVtcGxhdGUgcGFyYW1ldGVycyBhcmU6ICdub2RlJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRlbXBsYXRlYWN0aW9uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgbGFiZWwgYXJlYSBwZXIgbm9kZS4gVGVtcGxhdGUgcGFyYW1ldGVycyBhcmU6ICdub2RlJyBhbmQgJ2xhYmVsJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRlbXBsYXRlbGFiZWw6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluamVjdG9yIFNlcnZpY2UgSW5qZWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgcHVibGljIGdldCBpY29uQWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlQWN0aW9uSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENTUyBpY29uIGZvciBmb2xkZXJzIGluIHRyZWUgdGhlcmUgYXJlIGNvbGxhYnNlZFxyXG4gICAgICogQHJldHVybnMgY3NzIGNsYXNzIHdpdGggaWNvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGljb25Gb2xkZXJDb2xsYWJzZWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVDbG9zZWRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGljb24gY2xhc3MgZm9yIGZvbGRlcnMgd2l0aG91dCBzdWJmb2xkZXJzXHJcbiAgICAgKiBAcmV0dXJucyBjc3MgY2xhc3Mgd2l0aCBpY29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaWNvbkZvbGRlckVtcHR5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlRW1wdHlJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGljb24gZm9yIGZvbGRlcnMgaW4gdHJlZSB0aGVyZSBhcmUgZXhwYW5kZWRcclxuICAgICAqIEByZXR1cm5zIGNzcyBjbGFzcyB3aXRoIGljb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpY29uRm9sZGVyT3BlbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlRyZWV2aWV3Tm9kZU9wZW5JY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGEgY2VydGFpbiBzaXplLiBJcyByZXF1aXJlZCBmb3IgYSBGb3IgaW4gdGhlIFVJLCBhcyBBbmd1bGFyIGRvZXMgbm90IHN1cHBvcnQgY291bnRpbmcgbG9vcHNcclxuICAgICAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGFycmF5XHJcbiAgICAgKiBAcmV0dXJucyBBcnJheVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY291bnQoc2l6ZTogbnVtYmVyKTogQXJyYXk8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENoaWxkcmVuKG5vZGU6IGFueSk6IGFueVtdIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IG5vZGVbdGhpcy5hdHRyY2hpbGRyZW5dO1xyXG5cclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U3RyaW5nRmllbGQobm9kZTogYW55LCBmaWVsZG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZmllbGRuYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVtmaWVsZG5hbWVdO1xyXG5cclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzQ2hpbGRyZW4obm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSkubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZFN0YXRlKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyZGlzYWJsZWFjdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmRpc2FibGVhY3Rpb25dO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0V4cGFuZGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJleGFuZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZXhhbmRlZF07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzSG92ZXJTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmhvdmVyc3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNTZWxlY3RlZFN0YXRlKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJzZWxlY3RlZF07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgaXMgY2FsbGVkIGJ5IGNsaWNraW5nIGFuIGFjdGlvblxyXG4gICAgICogQHBhcmFtIGFjdGlvbiBhY3Rpb24gYW5kIG5vZGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQWN0aW9uQ2xpY2tlZChhY3Rpb246IFRyZWV2aWV3QWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25jbGlja2VkLmVtaXQoYWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Ob2RlQ2xpY2tlZChub2RlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkU3RhdGUobm9kZSkgfHwgdGhpcy5pc1NlbGVjdGVkU3RhdGUobm9kZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZlcnRFeHBhbmRlZFN0YXRlKG5vZGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRIb3ZlclN0YXRlKG5vZGU6IGFueSwgc3RhdGU6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmhvdmVyc3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyaG92ZXJzdGF0ZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW5vZGUuaGFzT3duUHJvcGVydHkodGhpcy5hdHRyaG92ZXJzdGF0ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVsZXRlIG5vZGVbdGhpcy5hdHRyaG92ZXJzdGF0ZV07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZXNldCBzZWxlY3RlZCBzdGF0ZSBvZiBhbnkgbm9kZVxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb290Tm9kZSkgPT4gdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUocm9vdE5vZGUpKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHNlbGVjdGVkIG5vZGUgYXMgc2VsZWN0ZWRcclxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSBuZ01vZGVsXHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShub2RlKTtcclxuXHJcbiAgICAgICAgLy8gUmFpc2UgU2VsZWN0ZWQgRXZlbnRzXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZG5vZGUuZW1pdChub2RlKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmF0dHJpZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaWQgPSB0aGlzLmdldFN0cmluZ0ZpZWxkKG5vZGUsIHRoaXMuYXR0cmlkKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIHByaXZhdGUgaW52ZXJ0RXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmV4YW5kZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSXRlbXMgd2l0aCBubyBjaGlsZHJlbiBjYW5ub3QgYmUgY29sbGFic2VkXHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKG5vZGUpICYmICEodGhpcy5lbmFibGVhc3luY2hsb2FkID09PSB0cnVlIHx8IHRoaXMuZW5hYmxlYXN5bmNobG9hZCA9PT0gJ3RydWUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmV4YW5kZWRdO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbGxhYnNlZC5lbWl0KG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlW3RoaXMuYXR0cmV4YW5kZWRdID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZC5lbWl0KG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlW3RoaXMuYXR0cmV4YW5kZWRdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLmdldENoaWxkcmVuKG5vZGUpLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZFN0YXRlKGNoaWxkKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvdHJlZXZpZXcvdHJlZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEc7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQXdCO0lBdUozRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQW9CLFVBQStCLEVBQUUsUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQS9KaEMscUJBQXFCO1FBRXJCOztXQUVHO1FBRUksa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFeEY7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUVqQzs7V0FFRztRQUNhLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUUvQzs7V0FFRztRQUVJLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBRWhDOztXQUVHO1FBRUksbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFckM7O1dBRUc7UUFFSSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV0Qzs7V0FFRztRQUVJLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FB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QUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVM7UUFDaEMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUFwY0osU0FBUzs7O1lBUEQsbUJBQW1CLHVCQXVLWCxJQUFJO1lBdEttQixRQUFROzs7NEJBYTNDLE1BQU07MkJBTU4sS0FBSztnQ0FNTCxLQUFLOzBCQUtMLEtBQUs7NkJBTUwsS0FBSzt1QkFNTCxLQUFLO3FCQU1MLEtBQUs7d0JBTUwsS0FBSzsyQkFNTCxLQUFLO3dCQU1MLE1BQU07bUJBTU4sS0FBSzsrQkFNTCxLQUFLOzZCQU1MLEtBQUs7dUJBTUwsTUFBTTs0QkFNTixLQUFLO3lCQU1MLEtBQUs7bUJBTUwsS0FBSzt1QkFNTCxNQUFNOzJCQU1OLE1BQU07K0JBTU4sS0FBSzs2QkFNTCxLQUFLOzJCQU1MLEtBQUs7NEJBTUwsS0FBSzt3Q0FNTCxLQUFLOytDQUtMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2Vtb2RlbGNvbnRyb2wnO1xyXG5pbXBvcnQgeyBUcmVldmlld0FjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHJlZXZpZXdhY3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vbGF5b3V0L2Zvcm1sYXlvdXQnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdCwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKlxyXG4gKiBCYXNpcyBLb21wb25lbnRlIGbDvHIgU2FjVHJlZVZpZXdcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjVHJlZXZpZXdDb21tb24gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPGFueT4ge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIEFjdGlvbiBpcyBjbGlja2VkIG9uIE5vZGUuICBBbiBvYmplY3Qgb2YgdGhlIHR5cGUgJ1RyZWV2aWV3QWN0aW9uJyBpcyByZXR1cm5lZC4gSW4gdGhlIGRlZmF1bHQgY2FzZSwgJ2FjdGlvbicgaW4gdGhpcyBvYmplY3QgaXMgYWx3YXlzIHRoZSB2YWx1ZSAnZGVmYXVsdCcuIFRoZSB2YWx1ZSBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlICd0ZW1wbGF0ZWFjdGlvbicuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFjdGlvbmNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxUcmVldmlld0FjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyZWV2aWV3QWN0aW9uPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGVydHkgb24gdGhlIGRhdGEgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGNoaWxkcmVuIG9mIHRoZSBzdHJ1Y3R1cmUgZWxlbWVudC4gTXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3RzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnY2hpbGRyZW4nXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmNoaWxkcmVuID0gJ2NoaWxkcmVuJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhlIHByb3BlcnR5IG9uIHRoZSAnZGF0YScgb2JqZWN0IHdpdGggd2hpY2ggdGhlIGFjdGlvbnMgZm9yIGEgbm9kZSBjYW4gYmUgZGVhY3RpdmF0ZWQuIEEgJ2Rpc2FibGVkJyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGRlZmF1bHQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdHRyZGlzYWJsZWFjdGlvbiA9ICdkaXNhYmxlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiB0aGUgJ2RhdGEnIG9iamVjdCB0aGF0IHN0b3JlcyB0aGUgZXhwYW5kZWQgc3RhdGUuIFByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLiBEZWZhdWx0IGlzICdleHBhbmRlZCdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRyZXhhbmRlZCA9ICdleHBhbmRlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBmb3Igc2F2aW5nIHRoZSBIb3ZlclN0YXRlIG9uIHRoZSBmaWVsZC4gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50IG9uIHRoZSBub2RlLCBpdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHJlbW92ZWQgYWdhaW4uIFRoZSB2YWx1ZSBjYW4gdXN1YWxseSBiZSBsZWZ0IGF0IHRoZSBkZWZhdWx0IHZhbHVlIHVubGVzcyB0aGVyZSBpcyBhIGNvbmZsaWN0IHdpdGggYSBwcm9wZXJ0eSBvbiB0aGUgbm9kZSB0aGF0IGlzIHJlcXVpcmVkIGZvciBvdGhlciBwdXJwb3Nlcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdHRyaG92ZXJzdGF0ZSA9ICdob3ZlcnN0YXRlJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IG9uICdkYXRhJyBvYmplY3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBpY29uIGZvciB0aGUgbm9kZS4gQnkgZGVmYXVsdCwgdGhlIHByb3BlcnR5IGlzIG5vdCBzZXQsIHdoaWNoIGhpZGVzIHRoZSBpY29uIGluIHRoZSBub2RlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHByb3BlcnR5IG9uIHRoZSAnZGF0YScgb2JqZWN0IGNvbnRhaW5zIGFuIElEIG9mIHRoZSBub2RlLiBUaGUgZGVmYXVsdCBpcyAnaWQnLiBJZiB0aGUgcHJvcGVydHkgaXMgc2V0IHRvIE5VTEwsIHRoZSBzZWxlY3RlZElkIGV2ZW50IGlzIG5vIGxvbmdlciB0cmlnZ2VyZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cmlkOiBzdHJpbmcgfCBudWxsID0gJ2lkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IG9uICdkYXRhJyBvYmplY3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBsYWJlbCBmb3IgdGhlIG5vZGUuIERlZmF1bHQgaXMgJ2xhYmVsJ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGF0dHJsYWJlbCA9ICdsYWJlbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBvbiAnZGF0YScgb2JqZWN0LCB3aGljaCBkZWZpbmVzIHdoZXRoZXIgdGhlIG5vZGUgaXMgc2VsZWN0ZWQgb3Igbm90LiBJdCBzaG91bGQgYmUgZW5zdXJlZCB0aGF0IG9ubHkgMSBub2RlIGhhcyB0aGUgdmFsdWUgZm9yIFNlbGVjdGVkIHNldCB0byB0cnVlLiBEZWZhdWx0IGlzICdzZWxlY3RlZCcuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXR0cnNlbGVjdGVkID0gJ3NlbGVjdGVkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIGNvbGxhcHNlZC4gUmV0dXJucyB0aGUgbm9kZSBlbGVtZW50IGFzIGEgcGFyYW1ldGVyXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNvbGxhYnNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwcm9wZXJ0eSBjb250YWlucyBhbiBhcnJheSBvZiBub2Rlcy4gVGhlIGRhdGEgbXVzdCBhbHJlYWR5IG1hcCB0aGUgdHJlZSB2aWEgY2hpbGQgcHJvcGVydGllcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWN0aXZhdGVzIHRoZSAnZXhwYW5kJyBhbmQgJ2NvbGxhYnNlJyBldmVudCBldmVuIGlmIGEgbm9kZSBoYXMgbm8gY2hpbGRyZW4uIFRoaXMgaXMgaGVscGZ1bCBpZiBub2RlIGVsZW1lbnRzIGFyZSB0byBiZSByZWxvYWRlZCBhdCBydW50aW1lLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGVuYWJsZWFzeW5jaGxvYWQ6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdGl2YXRlcyBFbGxpcHNpcyBvbiB0aGUgbm9kZSBsYWJlbHNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBlbmFibGVlbGxpcHNpcyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZC4gUmV0dXJucyB0aGUgbm9kZSBlbGVtZW50IGFzIGEgcGFyYW1ldGVyXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIGFuIGljb24gZm9yIHRoZSBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdHVzIHNob3VsZCBiZSBkaXNwbGF5ZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZXhwYW5kZWRzdGF0ZTogYm9vbGVhbiB8IHN0cmluZyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIG5vZGUgbXVzdCBiZSBzZWxlY3RlZFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIFRyZWVWaWV3IGNvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIHNlbGVjdGVkLiBSZXR1cm5zIHRoZSBpZCBhdHRyaWJ1dGUgYXMgYSBwYXJhbWV0ZXIuIFRoZSBldmVudCBpcyBub3QgdHJpZ2dlcmVkIGlmICdhdHRyaWQnIGlzIG5vdCBzZXQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgc2VsZWN0ZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlci5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRub2RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGF0IHRoZSBhY3Rpb24gdGVtcGxhdGUgaXMgZGlzcGxheWVkIGluZGVwZW5kZW50bHkgb2YgdGhlIHNlbGVjdGVkIHN0YXRlLiBJZiB0aGUgdmFsdWUgaXMgJ3RydWUnLCB0aGUgYWN0aW9uIHRlbXBsYXRlIGlzIGRpc3BsYXllZCBmb3IgZXZlcnkgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaG93YWN0aW9uYWx3YXlzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciBhY3Rpb25zIHBlciBub2RlLiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZTogJ25vZGUnXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGVtcGxhdGVhY3Rpb246IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIGljb24gcGVyIG5vZGUuIFRlbXBsYXRlIHBhcmFtZXRlcnMgYXJlOiAnbm9kZSdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0ZW1wbGF0ZWljb246IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIHRoZSBsYWJlbCBhcmVhIHBlciBub2RlLiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZTogJ25vZGUnIGFuZCAnbGFiZWwnXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGVtcGxhdGVsYWJlbDogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgU2VydmljZSBJbmplY3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihASG9zdCgpIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGljb25BY3Rpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVBY3Rpb25JY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGljb24gZm9yIGZvbGRlcnMgaW4gdHJlZSB0aGVyZSBhcmUgY29sbGFic2VkXHJcbiAgICAgKiBAcmV0dXJucyBjc3MgY2xhc3Mgd2l0aCBpY29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaWNvbkZvbGRlckNvbGxhYnNlZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlRyZWV2aWV3Tm9kZUNsb3NlZEljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDU1MgaWNvbiBjbGFzcyBmb3IgZm9sZGVycyB3aXRob3V0IHN1YmZvbGRlcnNcclxuICAgICAqIEByZXR1cm5zIGNzcyBjbGFzcyB3aXRoIGljb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpY29uRm9sZGVyRW1wdHkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVFbXB0eUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDU1MgaWNvbiBmb3IgZm9sZGVycyBpbiB0cmVlIHRoZXJlIGFyZSBleHBhbmRlZFxyXG4gICAgICogQHJldHVybnMgY3NzIGNsYXNzIHdpdGggaWNvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGljb25Gb2xkZXJPcGVuKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlT3Blbkljb247XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYSBjZXJ0YWluIHNpemUuIElzIHJlcXVpcmVkIGZvciBhIEZvciBpbiB0aGUgVUksIGFzIEFuZ3VsYXIgZG9lcyBub3Qgc3VwcG9ydCBjb3VudGluZyBsb29wc1xyXG4gICAgICogQHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgYXJyYXlcclxuICAgICAqIEByZXR1cm5zIEFycmF5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb3VudChzaXplOiBudW1iZXIpOiBBcnJheTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShzaXplKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4obm9kZTogYW55KTogYW55W10ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gbm9kZVt0aGlzLmF0dHJjaGlsZHJlbl07XHJcblxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTdHJpbmdGaWVsZChub2RlOiBhbnksIGZpZWxkbmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmaWVsZG5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW2ZpZWxkbmFtZV07XHJcblxyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYXNDaGlsZHJlbihub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlbihub2RlKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0Rpc2FibGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJkaXNhYmxlYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZGlzYWJsZWFjdGlvbl07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzRXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmV4YW5kZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJleGFuZGVkXTtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNIb3ZlclN0YXRlKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyaG92ZXJzdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmhvdmVyc3RhdGVdO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1NlbGVjdGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXTtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCBpcyBjYWxsZWQgYnkgY2xpY2tpbmcgYW4gYWN0aW9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uIGFjdGlvbiBhbmQgbm9kZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25BY3Rpb25DbGlja2VkKGFjdGlvbjogVHJlZXZpZXdBY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmFjdGlvbmNsaWNrZWQuZW1pdChhY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIGlzIGNhbGxlZCB3aGVuIE5vZGUgaW4gVHJlZSBpcyBjbGlja2VkXHJcbiAgICAgKiBAcGFyYW0gbm9kZSBTZWxlY3RlZCBOb2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbk5vZGVDbGlja2VkKG5vZGU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWRTdGF0ZShub2RlKSB8fCB0aGlzLmlzU2VsZWN0ZWRTdGF0ZShub2RlKSkge1xyXG4gICAgICAgICAgICB0aGlzLmludmVydEV4cGFuZGVkU3RhdGUobm9kZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBob3ZlciBzdGF0ZSBvbiBhIG5vZGVcclxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgb24gd2hpY2ggdGhlIHN0YXR1cyBpcyBzZXRcclxuICAgICAqIEBwYXJhbSBzdGF0ZSBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIEhvdmVyU3RhdGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldEhvdmVyU3RhdGUobm9kZTogYW55LCBzdGF0ZTogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyaG92ZXJzdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbm9kZS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmF0dHJob3ZlcnN0YXRlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWxldGUgbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHNlbGVjdGVkIHN0YXRlIG9uIGEgbm9kZVxyXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZSB3aGljaCBpcyBtYXJrZWQgYXMgU2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZXNldCBzZWxlY3RlZCBzdGF0ZSBvZiBhbnkgbm9kZVxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb290Tm9kZSkgPT4gdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUocm9vdE5vZGUpKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHNlbGVjdGVkIG5vZGUgYXMgc2VsZWN0ZWRcclxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIEV4dHJhY3QgSUQgZnJvbSBOb2RlXHJcbiAgICAgICAgY29uc3QgaWRWYWx1ZSA9IG5vZGVbdGhpcy5hdHRyaWRdO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgbmdNb2RlbFxyXG4gICAgICAgIHRoaXMuc2V0VmFsdWUoaWRWYWx1ZSk7XHJcblxyXG4gICAgICAgIC8vIFJhaXNlIFNlbGVjdGVkIEV2ZW50c1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRub2RlLmVtaXQobm9kZSk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5hdHRyaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5nZXRTdHJpbmdGaWVsZChub2RlLCB0aGlzLmF0dHJpZCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRlcyB0aGUgbW9kZWwgc3RhdGUgb2YgdGhlIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgaW5zdGFuY2VcclxuICAgICAqIEByZXR1cm5zIFJldHVybnMgYSB2YWxpZGF0aW9uIGVycm9yLCBpZiBwcmVzZW50LiBPdGhlcndpc2UsIGFzIFJlc3VsdCBpcyBOVUxMXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZXMgdGhlIGRhdGEgZnJvbSB0aGUgbW9kZWwgYmluZGluZ1xyXG4gICAgICogQHBhcmFtIHZhbHVlIElkIG9mIHRoZSBzZWxlY3RlZCBub2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgLy8gRG8gbm90IHByZXNlbGN0IGl0ZW0gd2hlbiB0cmVlIGlzIGVtcHR5XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvb3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kTm9kZUJ5SWQocm9vdCwgdmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlYXJjaGVzIGZvciBhIG5vZGUgYmFzZWQgb24gdGhlIHZhbHVlIGluIHRoZSBJRCBhdHRyaWJ1dGVcclxuICAgICAqIEBwYXJhbSBub2RlIE5vZGVcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBvZiB0aGUgSWQgYXR0cmlidXRlXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBub2RlIGlmIGl0IGlzIGZvdW5kLiBJZiBub3QsIE5VTEwgaXMgcmV0dXJuZWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmluZE5vZGVCeUlkKG5vZGU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmF0dHJpZCB8fCAhbm9kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChub2RlW3RoaXMuYXR0cmlkXSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSk7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kTm9kZUJ5SWQoY2hpbGQsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbnZlcnRFeHBhbmRlZFN0YXRlKG5vZGU6IGFueSkge1xyXG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyZXhhbmRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJdGVtcyB3aXRoIG5vIGNoaWxkcmVuIGNhbm5vdCBiZSBjb2xsYWJzZWRcclxuICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4obm9kZSkgJiYgISh0aGlzLmVuYWJsZWFzeW5jaGxvYWQgPT09IHRydWUgfHwgdGhpcy5lbmFibGVhc3luY2hsb2FkID09PSAndHJ1ZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZXhhbmRlZF07XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sbGFic2VkLmVtaXQobm9kZSk7XHJcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyZXhhbmRlZF0gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkLmVtaXQobm9kZSk7XHJcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyZXhhbmRlZF0gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlc2V0U2VsZWN0ZWRTdGF0ZShub2RlOiBhbnkpIHtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5vZGVbdGhpcy5hdHRyc2VsZWN0ZWRdID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSkuZm9yRWFjaCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUoY2hpbGQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJpbnRlcmZhY2VzL0lTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBzaXplOiBudW1iZXI7XHJcbiAgICB1cGxvYWRpZDogc3RyaW5nO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview This file was generated by the Angular template compiler. Do not edit.
|
|
3
|
+
*
|
|
4
|
+
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
|
|
5
|
+
* tslint:disable
|
|
6
|
+
*/
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZS5uZ2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlLm5nZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pMC5Db21wb25lbnRGYWN0b3J5O1xuIl19
|
|
@@ -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
|
*/
|
|
@@ -8194,25 +8267,21 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8194
8267
|
*/
|
|
8195
8268
|
this.maxfilesize = 0;
|
|
8196
8269
|
/**
|
|
8197
|
-
*
|
|
8270
|
+
* Event when an error is triggered in the component.
|
|
8198
8271
|
*/
|
|
8199
|
-
this.
|
|
8272
|
+
this.onfileerror = new EventEmitter();
|
|
8200
8273
|
/**
|
|
8201
|
-
*
|
|
8274
|
+
* Event when a file has been uploaded. The event is triggered for multiple uploads per file.
|
|
8202
8275
|
*/
|
|
8203
|
-
this.
|
|
8276
|
+
this.onuploadcomplete = new EventEmitter();
|
|
8204
8277
|
/**
|
|
8205
|
-
*
|
|
8278
|
+
* Resource Key für Validation Message Required bei Control
|
|
8206
8279
|
*/
|
|
8207
|
-
this.
|
|
8280
|
+
this.validationmessagerequired = this.validationKeyService.ValidationErrorRequired;
|
|
8208
8281
|
/**
|
|
8209
|
-
*
|
|
8282
|
+
* Resource Key für Validation Message Required in Validation Summary
|
|
8210
8283
|
*/
|
|
8211
|
-
this.
|
|
8212
|
-
if (this.uploadInput.nativeElement.files) {
|
|
8213
|
-
this.uploadService.handleFileList(this.uploadInput.nativeElement.files);
|
|
8214
|
-
}
|
|
8215
|
-
};
|
|
8284
|
+
this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
|
|
8216
8285
|
this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());
|
|
8217
8286
|
this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService(this.validationKeyService));
|
|
8218
8287
|
this.uploads = [];
|
|
@@ -8233,34 +8302,6 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8233
8302
|
}
|
|
8234
8303
|
// #endregion Constructors
|
|
8235
8304
|
// #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
8305
|
/**
|
|
8265
8306
|
* Icon for browse button
|
|
8266
8307
|
*/
|
|
@@ -8294,17 +8335,56 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8294
8335
|
get allowedtypes() {
|
|
8295
8336
|
return this._allowedtypes;
|
|
8296
8337
|
}
|
|
8338
|
+
/**
|
|
8339
|
+
* Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
|
|
8340
|
+
*/
|
|
8341
|
+
set allowedtypes(types) {
|
|
8342
|
+
this._allowedtypes = types;
|
|
8343
|
+
this.setAllowedTypes(types);
|
|
8344
|
+
}
|
|
8297
8345
|
get autoupload() {
|
|
8298
8346
|
return this._autoupload;
|
|
8299
8347
|
}
|
|
8348
|
+
/**
|
|
8349
|
+
* Files nach der Auswahl automatisch hochladen
|
|
8350
|
+
*/
|
|
8351
|
+
set autoupload(v) {
|
|
8352
|
+
this._autoupload = v;
|
|
8353
|
+
this.options.autoUpload = v;
|
|
8354
|
+
this.uploadService.connect(this.options);
|
|
8355
|
+
}
|
|
8300
8356
|
get enablepause() {
|
|
8301
8357
|
return this._enablepause;
|
|
8302
8358
|
}
|
|
8359
|
+
/**
|
|
8360
|
+
* Uploads können unterbrochen werden
|
|
8361
|
+
*/
|
|
8362
|
+
set enablepause(v) {
|
|
8363
|
+
this._enablepause = v;
|
|
8364
|
+
}
|
|
8303
8365
|
get endpoint() {
|
|
8304
8366
|
return this._endpoint;
|
|
8305
8367
|
}
|
|
8306
|
-
|
|
8307
|
-
|
|
8368
|
+
/**
|
|
8369
|
+
* Definiert den Registration Endpoint für Uploads.
|
|
8370
|
+
*/
|
|
8371
|
+
set endpoint(v) {
|
|
8372
|
+
this._endpoint = v;
|
|
8373
|
+
this.setEndpoint(v);
|
|
8374
|
+
}
|
|
8375
|
+
/**
|
|
8376
|
+
* Token for Bearer Authentication
|
|
8377
|
+
*/
|
|
8378
|
+
get token() {
|
|
8379
|
+
return this._token;
|
|
8380
|
+
}
|
|
8381
|
+
/**
|
|
8382
|
+
* Token for Bearer Authentication
|
|
8383
|
+
*/
|
|
8384
|
+
set token(v) {
|
|
8385
|
+
this._token = v;
|
|
8386
|
+
this.setToken(v);
|
|
8387
|
+
}
|
|
8308
8388
|
/**
|
|
8309
8389
|
* Name der Datei die Hochgeladen wird
|
|
8310
8390
|
* @returns Observable des Dateinamens.
|
|
@@ -8330,7 +8410,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8330
8410
|
*/
|
|
8331
8411
|
HasSuccessUpload() {
|
|
8332
8412
|
if (this.uploads.length > 0) {
|
|
8333
|
-
return
|
|
8413
|
+
return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;
|
|
8334
8414
|
}
|
|
8335
8415
|
else {
|
|
8336
8416
|
return false;
|
|
@@ -8348,7 +8428,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8348
8428
|
* @returns Elemente für Upload vorhanden
|
|
8349
8429
|
*/
|
|
8350
8430
|
IsStateToUpload() {
|
|
8351
|
-
return
|
|
8431
|
+
return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;
|
|
8352
8432
|
}
|
|
8353
8433
|
/**
|
|
8354
8434
|
* Prüft ob ein Upload eines Files am laufen ist
|
|
@@ -8393,7 +8473,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8393
8473
|
}
|
|
8394
8474
|
}
|
|
8395
8475
|
/**
|
|
8396
|
-
*
|
|
8476
|
+
* Initializes the control
|
|
8397
8477
|
*/
|
|
8398
8478
|
ngOnInit() {
|
|
8399
8479
|
super.ngOnInit();
|
|
@@ -8401,6 +8481,7 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8401
8481
|
this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);
|
|
8402
8482
|
this.setAllowedTypes(this._allowedtypes);
|
|
8403
8483
|
this.setEndpoint(this._endpoint);
|
|
8484
|
+
this.setToken(this._token);
|
|
8404
8485
|
if (this._endpoint === null) {
|
|
8405
8486
|
throw new Error('endpoint is not defined!');
|
|
8406
8487
|
}
|
|
@@ -8439,6 +8520,12 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8439
8520
|
this.uploads[index].progress = ufile.progress;
|
|
8440
8521
|
this.uploads[index].status = ufile.status;
|
|
8441
8522
|
this.SetUploadValue(ufile);
|
|
8523
|
+
const uploadState = {
|
|
8524
|
+
name: ufile.name,
|
|
8525
|
+
size: ufile.size,
|
|
8526
|
+
uploadid: this.uploads[index].uploadId,
|
|
8527
|
+
};
|
|
8528
|
+
this.onuploadcomplete.emit(uploadState);
|
|
8442
8529
|
}
|
|
8443
8530
|
else {
|
|
8444
8531
|
if (index >= 0) {
|
|
@@ -8463,6 +8550,12 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8463
8550
|
this.uploadService.control({ action: 'pause' });
|
|
8464
8551
|
}
|
|
8465
8552
|
}
|
|
8553
|
+
/**
|
|
8554
|
+
* Sets the bearer token in the upload service
|
|
8555
|
+
*/
|
|
8556
|
+
setToken(value) {
|
|
8557
|
+
this.options.token = value;
|
|
8558
|
+
}
|
|
8466
8559
|
/**
|
|
8467
8560
|
* Upload Single File
|
|
8468
8561
|
*
|
|
@@ -8490,13 +8583,12 @@ class SacUploadBase extends SacBaseModelControl {
|
|
|
8490
8583
|
}
|
|
8491
8584
|
return error;
|
|
8492
8585
|
}
|
|
8493
|
-
// #endregion Public
|
|
8586
|
+
// #endregion Public Methods
|
|
8494
8587
|
// #region Private Methods
|
|
8495
8588
|
UpdateFileCount() {
|
|
8496
8589
|
// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
|
|
8497
8590
|
if (this.ngControl) {
|
|
8498
|
-
this.ngControl.uploadedfilecount =
|
|
8499
|
-
this.UploadedFileCount();
|
|
8591
|
+
this.ngControl.uploadedfilecount = this.UploadedFileCount();
|
|
8500
8592
|
}
|
|
8501
8593
|
}
|
|
8502
8594
|
/**
|
|
@@ -8567,13 +8659,15 @@ SacUploadBase.propDecorators = {
|
|
|
8567
8659
|
uploadInput: [{ type: ViewChild, args: ['files', { static: true },] }],
|
|
8568
8660
|
isrequired: [{ type: Input }],
|
|
8569
8661
|
maxfilesize: [{ type: Input }],
|
|
8662
|
+
onfileerror: [{ type: Output }],
|
|
8663
|
+
onuploadcomplete: [{ type: Output }],
|
|
8570
8664
|
validationmessagerequired: [{ type: Input }],
|
|
8571
8665
|
validationmessagesummaryrequired: [{ type: Input }],
|
|
8572
|
-
onfileerror: [{ type: Output }],
|
|
8573
8666
|
allowedtypes: [{ type: Input }],
|
|
8574
8667
|
autoupload: [{ type: Input }],
|
|
8575
8668
|
enablepause: [{ type: Input }],
|
|
8576
|
-
endpoint: [{ type: Input }]
|
|
8669
|
+
endpoint: [{ type: Input }],
|
|
8670
|
+
token: [{ type: Input }]
|
|
8577
8671
|
};
|
|
8578
8672
|
/**
|
|
8579
8673
|
* Klasse für den Upload einer Datei in der Upload Component
|
|
@@ -8593,7 +8687,7 @@ class SacUploadFile {
|
|
|
8593
8687
|
this.documentid = null;
|
|
8594
8688
|
}
|
|
8595
8689
|
}
|
|
8596
|
-
// #endregion Classes
|
|
8690
|
+
// #endregion Exported Classes
|
|
8597
8691
|
|
|
8598
8692
|
/**
|
|
8599
8693
|
* Upload Komponente für ein einzelnes File
|