@alfresco/adf-core 8.1.0-13941047340 → 8.1.0-13973253085
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.
|
@@ -146,7 +146,7 @@ export class FormFieldModel extends FormWidgetModel {
|
|
|
146
146
|
this.currency = json.currency;
|
|
147
147
|
this.dateDisplayFormat = json.dateDisplayFormat || this.getDefaultDateFormat(json);
|
|
148
148
|
this.validationSummary = new ErrorMessageModel();
|
|
149
|
-
this.tooltip = json.tooltip;
|
|
149
|
+
this.tooltip = json.tooltip || '';
|
|
150
150
|
this.selectionType = json.selectionType;
|
|
151
151
|
this.alignmentType = json.alignmentType;
|
|
152
152
|
this.rule = json.rule;
|
|
@@ -479,4 +479,4 @@ export class FormFieldModel extends FormWidgetModel {
|
|
|
479
479
|
return json.params?.field?.type === FormFieldTypes.BOOLEAN || json.type === FormFieldTypes.BOOLEAN;
|
|
480
480
|
}
|
|
481
481
|
}
|
|
482
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvY29yZS9mb3JtLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNbEQsa0NBQWtDO0FBQ2xDLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQW9FL0MsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FB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QVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDO0lBQzlGLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssY0FBYyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDekcsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFTO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQ3ZHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgV2lkZ2V0VmlzaWJpbGl0eU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3dpZGdldC12aXNpYmlsaXR5Lm1vZGVsJztcbmltcG9ydCB7IENvbnRhaW5lckNvbHVtbk1vZGVsIH0gZnJvbSAnLi9jb250YWluZXItY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZU1vZGVsIH0gZnJvbSAnLi9lcnJvci1tZXNzYWdlLm1vZGVsJztcbmltcG9ydCB7IEZvcm1GaWVsZE1ldGFkYXRhIH0gZnJvbSAnLi9mb3JtLWZpZWxkLW1ldGFkYXRhJztcbmltcG9ydCB7IEZvcm1GaWVsZE9wdGlvbiB9IGZyb20gJy4vZm9ybS1maWVsZC1vcHRpb24nO1xuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZXMgfSBmcm9tICcuL2Zvcm0tZmllbGQtdHlwZXMnO1xuaW1wb3J0IHsgRm9ybVdpZGdldE1vZGVsIH0gZnJvbSAnLi9mb3JtLXdpZGdldC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtRmllbGRSdWxlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLXJ1bGUnO1xuaW1wb3J0IHsgUHJvY2Vzc0Zvcm1Nb2RlbCB9IGZyb20gJy4vcHJvY2Vzcy1mb3JtLW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBpc051bWJlclZhbHVlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLXV0aWxzJztcbmltcG9ydCB7IFZhcmlhYmxlQ29uZmlnIH0gZnJvbSAnLi9mb3JtLWZpZWxkLXZhcmlhYmxlLW9wdGlvbnMnO1xuaW1wb3J0IHsgRGF0YUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2RhdGF0YWJsZS9kYXRhL2RhdGEtY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IERhdGVGbnNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBpc1ZhbGlkIGFzIGlzVmFsaWREYXRlIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZE9wdGlvblR5cGUgPSAncmVzdCcgfCAnbWFudWFsJyB8ICd2YXJpYWJsZSc7XG5leHBvcnQgdHlwZSBGaWVsZFNlbGVjdGlvblR5cGUgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XG5leHBvcnQgdHlwZSBGaWVsZEFsaWdubWVudFR5cGUgPSAndmVydGljYWwnIHwgJ2hvcml6b250YWwnO1xuXG4vLyBNYXBzIHRvIEZvcm1GaWVsZFJlcHJlc2VudGF0aW9uXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkTW9kZWwgZXh0ZW5kcyBGb3JtV2lkZ2V0TW9kZWwge1xuICAgIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgZGVmYXVsdERhdGVGb3JtYXQ6IHN0cmluZyA9ICdELU0tWVlZWSc7XG4gICAgcmVhZG9ubHkgZGVmYXVsdERhdGVUaW1lRm9ybWF0OiBzdHJpbmcgPSAnRC1NLVlZWVkgaGg6bW0gQSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0RW1wdHlPcHRpb25JZCA9ICdlbXB0eSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0RW1wdHlPcHRpb25OYW1lID0gJ0Nob29zZSBvbmUuLi4nO1xuXG4gICAgLy8gbW9kZWwgbWVtYmVyc1xuICAgIGZpZWxkVHlwZTogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBvdmVycmlkZUlkOiBib29sZWFuO1xuICAgIHRhYjogc3RyaW5nO1xuICAgIHJvd3NwYW46IG51bWJlciA9IDE7XG4gICAgY29sc3BhbjogbnVtYmVyID0gMTtcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcbiAgICB0b29sdGlwOiBzdHJpbmcgPSBudWxsO1xuICAgIG1pbkxlbmd0aDogbnVtYmVyID0gMDtcbiAgICBtYXhMZW5ndGg6IG51bWJlciA9IDA7XG4gICAgbWluVmFsdWU6IHN0cmluZztcbiAgICBtYXhWYWx1ZTogc3RyaW5nO1xuICAgIG1heERhdGVSYW5nZVZhbHVlOiBudW1iZXIgPSAwO1xuICAgIG1pbkRhdGVSYW5nZVZhbHVlOiBudW1iZXIgPSAwO1xuICAgIHByZWNpc2lvbjogbnVtYmVyO1xuICAgIGR5bmFtaWNEYXRlUmFuZ2VTZWxlY3Rpb246IGJvb2xlYW47XG4gICAgcmVnZXhQYXR0ZXJuOiBzdHJpbmc7XG4gICAgb3B0aW9uczogRm9ybUZpZWxkT3B0aW9uW10gPSBbXTtcbiAgICByZXN0VXJsOiBzdHJpbmc7XG4gICAgcm9sZXM6IHN0cmluZ1tdO1xuICAgIHJlc3RSZXNwb25zZVBhdGg6IHN0cmluZztcbiAgICByZXN0SWRQcm9wZXJ0eTogc3RyaW5nO1xuICAgIHJlc3RMYWJlbFByb3BlcnR5OiBzdHJpbmc7XG4gICAgaGFzRW1wdHlWYWx1ZTogYm9vbGVhbjtcbiAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICBvcHRpb25UeXBlOiBGaWVsZE9wdGlvblR5cGU7XG4gICAgcGFyYW1zOiBGb3JtRmllbGRNZXRhZGF0YSA9IHt9O1xuICAgIGh5cGVybGlua1VybDogc3RyaW5nO1xuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmc7XG4gICAgaXNWaXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBXaWRnZXRWaXNpYmlsaXR5TW9kZWwgPSBudWxsO1xuICAgIGVuYWJsZUZyYWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGN1cnJlbmN5OiBzdHJpbmcgPSBudWxsO1xuICAgIGRhdGVEaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSB0aGlzLmRlZmF1bHREYXRlRm9ybWF0O1xuICAgIHNlbGVjdGlvblR5cGU6IEZpZWxkU2VsZWN0aW9uVHlwZTtcbiAgICBhbGlnbm1lbnRUeXBlOiBGaWVsZEFsaWdubWVudFR5cGU7XG4gICAgcnVsZT86IEZvcm1GaWVsZFJ1bGU7XG4gICAgc2VsZWN0TG9nZ2VkVXNlcjogYm9vbGVhbjtcbiAgICBncm91cHNSZXN0cmljdGlvbjogc3RyaW5nW107XG4gICAgbGVmdExhYmVsczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHZhcmlhYmxlQ29uZmlnOiBWYXJpYWJsZUNvbmZpZztcbiAgICBzY2hlbWFEZWZpbml0aW9uOiBEYXRhQ29sdW1uW107XG4gICAgZXh0ZXJuYWxQcm9wZXJ0eT86IHN0cmluZztcbiAgICBzdHlsZT86IHN0cmluZztcblxuICAgIC8vIGNvbnRhaW5lciBtb2RlbCBtZW1iZXJzXG4gICAgbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXIgPSAxO1xuICAgIGZpZWxkczogRm9ybUZpZWxkTW9kZWxbXSA9IFtdO1xuICAgIGNvbHVtbnM6IENvbnRhaW5lckNvbHVtbk1vZGVsW10gPSBbXTtcblxuICAgIC8vIHV0aWwgbWVtYmVyc1xuICAgIGVtcHR5T3B0aW9uOiBGb3JtRmllbGRPcHRpb247XG4gICAgdmFsaWRhdGlvblN1bW1hcnk6IEVycm9yTWVzc2FnZU1vZGVsO1xuXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgICAgIGlmICh2ICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgcmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0/LnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7XG4gICAgfVxuXG4gICAgc2V0IHJlYWRPbmx5KHJlYWRPbmx5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlYWRPbmx5ID0gcmVhZE9ubHk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZ2V0IGhhc011bHRpcGxlVmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25UeXBlID09PSAnbXVsdGlwbGUnIHx8IHRoaXMucGFyYW1zLm11bHRpcGxlO1xuICAgIH1cblxuICAgIG1hcmtBc0ludmFsaWQoKSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBtYXJrQXNWYWxpZCgpIHtcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvblN1bW1hcnkgPSBuZXcgRXJyb3JNZXNzYWdlTW9kZWwoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0ZpZWxkVmFsaWRhdGFibGUoKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZm9ybS5maWVsZFZhbGlkYXRvcnMgfHwgW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0b3IudmFsaWRhdGUodGhpcykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWVsZFZhbGlkYXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMucmVhZE9ubHkgfHwgRm9ybUZpZWxkVHlwZXMuaXNWYWxpZGF0YWJsZVR5cGUodGhpcy50eXBlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihmb3JtOiBhbnksIGpzb24/OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoZm9ybSwganNvbik7XG4gICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVHlwZSA9IGpzb24uZmllbGRUeXBlO1xuICAgICAgICAgICAgdGhpcy5pZCA9IGpzb24uaWQ7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSBqc29uLm5hbWU7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBqc29uLnR5cGU7XG4gICAgICAgICAgICB0aGlzLnJvbGVzID0ganNvbi5yb2xlcztcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID0ganNvbi5yZXF1aXJlZDtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRPbmx5ID0ganNvbi5yZWFkT25seSB8fCBqc29uLnR5cGUgPT09ICdyZWFkb25seSc7XG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlSWQgPSBqc29uLm92ZXJyaWRlSWQ7XG4gICAgICAgICAgICB0aGlzLnRhYiA9IGpzb24udGFiO1xuICAgICAgICAgICAgdGhpcy5yZXN0VXJsID0ganNvbi5yZXN0VXJsO1xuICAgICAgICAgICAgdGhpcy5yZXN0UmVzcG9uc2VQYXRoID0ganNvbi5yZXN0UmVzcG9uc2VQYXRoO1xuICAgICAgICAgICAgdGhpcy5yZXN0SWRQcm9wZXJ0eSA9IGpzb24ucmVzdElkUHJvcGVydHk7XG4gICAgICAgICAgICB0aGlzLnJlc3RMYWJlbFByb3BlcnR5ID0ganNvbi5yZXN0TGFiZWxQcm9wZXJ0eTtcbiAgICAgICAgICAgIHRoaXMuY29sc3BhbiA9IGpzb24uY29sc3BhbjtcbiAgICAgICAgICAgIHRoaXMucm93c3BhbiA9IGpzb24ucm93c3BhbjtcbiAgICAgICAgICAgIHRoaXMubWluTGVuZ3RoID0ganNvbi5taW5MZW5ndGggfHwgMDtcbiAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoID0ganNvbi5tYXhMZW5ndGggfHwgMDtcbiAgICAgICAgICAgIHRoaXMubWluVmFsdWUgPSBqc29uLm1pblZhbHVlO1xuICAgICAgICAgICAgdGhpcy5tYXhWYWx1ZSA9IGpzb24ubWF4VmFsdWU7XG4gICAgICAgICAgICB0aGlzLm1pbkRhdGVSYW5nZVZhbHVlID0ganNvbi5taW5EYXRlUmFuZ2VWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubWF4RGF0ZVJhbmdlVmFsdWUgPSBqc29uLm1heERhdGVSYW5nZVZhbHVlO1xuICAgICAgICAgICAgdGhpcy5keW5hbWljRGF0ZVJhbmdlU2VsZWN0aW9uID0ganNvbi5keW5hbWljRGF0ZVJhbmdlU2VsZWN0aW9uO1xuICAgICAgICAgICAgdGhpcy5yZWdleFBhdHRlcm4gPSBqc29uLnJlZ2V4UGF0dGVybjtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucGFyc2VPcHRpb25zKGpzb24ub3B0aW9ucywganNvbi5vcHRpb25UeXBlKTtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlPcHRpb24gPSB0aGlzLmdldEVtcHR5T3B0aW9uKHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmhhc0VtcHR5VmFsdWUgPSBqc29uPy5oYXNFbXB0eVZhbHVlID8/ICEhdGhpcy5lbXB0eU9wdGlvbjtcbiAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lID0ganNvbi5jbGFzc05hbWU7XG4gICAgICAgICAgICB0aGlzLm9wdGlvblR5cGUgPSBqc29uLm9wdGlvblR5cGU7XG4gICAgICAgICAgICB0aGlzLnBhcmFtcyA9IGpzb24ucGFyYW1zIHx8IHt9O1xuICAgICAgICAgICAgdGhpcy5oeXBlcmxpbmtVcmwgPSBqc29uLmh5cGVybGlua1VybDtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSBqc29uLmRpc3BsYXlUZXh0O1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5Q29uZGl0aW9uID0ganNvbi52aXNpYmlsaXR5Q29uZGl0aW9uID8gbmV3IFdpZGdldFZpc2liaWxpdHlNb2RlbChqc29uLnZpc2liaWxpdHlDb25kaXRpb24pIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5lbmFibGVGcmFjdGlvbnMgPSBqc29uLmVuYWJsZUZyYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSBqc29uLmN1cnJlbmN5O1xuICAgICAgICAgICAgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCA9IGpzb24uZGF0ZURpc3BsYXlGb3JtYXQgfHwgdGhpcy5nZXREZWZhdWx0RGF0ZUZvcm1hdChqc29uKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN1bW1hcnkgPSBuZXcgRXJyb3JNZXNzYWdlTW9kZWwoKTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IGpzb24udG9vbHRpcDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uVHlwZSA9IGpzb24uc2VsZWN0aW9uVHlwZTtcbiAgICAgICAgICAgIHRoaXMuYWxpZ25tZW50VHlwZSA9IGpzb24uYWxpZ25tZW50VHlwZTtcbiAgICAgICAgICAgIHRoaXMucnVsZSA9IGpzb24ucnVsZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TG9nZ2VkVXNlciA9IGpzb24uc2VsZWN0TG9nZ2VkVXNlcjtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzUmVzdHJpY3Rpb24gPSBqc29uLmdyb3Vwc1Jlc3RyaWN0aW9uPy5ncm91cHM7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlQ29uZmlnID0ganNvbi52YXJpYWJsZUNvbmZpZztcbiAgICAgICAgICAgIHRoaXMuc2NoZW1hRGVmaW5pdGlvbiA9IGpzb24uc2NoZW1hRGVmaW5pdGlvbjtcbiAgICAgICAgICAgIHRoaXMucHJlY2lzaW9uID0ganNvbi5wcmVjaXNpb247XG4gICAgICAgICAgICB0aGlzLmV4dGVybmFsUHJvcGVydHkgPSBqc29uLmV4dGVybmFsUHJvcGVydHk7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShqc29uKTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGUgPSBqc29uLnN0eWxlO1xuXG4gICAgICAgICAgICBpZiAoanNvbi5wbGFjZWhvbGRlciAmJiBqc29uLnBsYWNlaG9sZGVyICE9PSAnJyAmJiBqc29uLnBsYWNlaG9sZGVyICE9PSAnbnVsbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0ganNvbi5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEZvcm1GaWVsZFR5cGVzLmlzUmVhZE9ubHlUeXBlKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXM/LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGb3JSZWFkb25seVR5cGUoZm9ybSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoRm9ybUZpZWxkVHlwZXMuaXNDb250YWluZXJUeXBlKHRoaXMudHlwZSkgfHwgRm9ybUZpZWxkVHlwZXMuaXNTZWN0aW9uVHlwZSh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJGYWN0b3J5KGpzb24sIGZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm0/Lmpzb24pIHtcbiAgICAgICAgICAgIHRoaXMubGVmdExhYmVscyA9IGZvcm0uanNvbi5sZWZ0TGFiZWxzIHx8IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbXB0eU9wdGlvbihvcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSk6IEZvcm1GaWVsZE9wdGlvbiB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5kZWZhdWx0RW1wdHlPcHRpb25JZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZUZvclJlYWRvbmx5VHlwZShmb3JtOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFByb2Nlc3NWYXJpYWJsZVZhbHVlKHRoaXMucGFyYW1zLmZpZWxkLCBmb3JtKTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERlZmF1bHREYXRlRm9ybWF0KGpzb25GaWVsZDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IG9yaWdpbmFsVHlwZSA9IGpzb25GaWVsZC50eXBlO1xuICAgICAgICBpZiAoRm9ybUZpZWxkVHlwZXMuaXNSZWFkT25seVR5cGUoanNvbkZpZWxkLnR5cGUpICYmIGpzb25GaWVsZC5wYXJhbXM/LmZpZWxkKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFR5cGUgPSBqc29uRmllbGQucGFyYW1zLmZpZWxkLnR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsVHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURVRJTUUgPyB0aGlzLmRlZmF1bHREYXRlVGltZUZvcm1hdCA6IHRoaXMuZGVmYXVsdERhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1R5cGVhaGVhZEZpZWxkVHlwZSh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09ICd0eXBlYWhlYWQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmllbGROYW1lV2l0aExhYmVsKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYW1lICsgJ19MQUJFTCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcm9jZXNzVmFyaWFibGVWYWx1ZShmaWVsZDogYW55LCBmb3JtOiBQcm9jZXNzRm9ybU1vZGVsKTogYW55IHtcbiAgICAgICAgbGV0IGZpZWxkTmFtZSA9IGZpZWxkLm5hbWU7XG4gICAgICAgIGlmICh0aGlzLmlzVHlwZWFoZWFkRmllbGRUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgPSB0aGlzLmdldEZpZWxkTmFtZVdpdGhMYWJlbChmaWVsZC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm0uZ2V0UHJvY2Vzc1ZhcmlhYmxlVmFsdWUoZmllbGROYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnRhaW5lckZhY3RvcnkoanNvbjogYW55LCBmb3JtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBudW1iZXJPZkNvbHVtbnMgPSAxLCBmaWVsZHMgPSB7fSB9ID0ganNvbjtcbiAgICAgICAgdGhpcy5udW1iZXJPZkNvbHVtbnMgPSBudW1iZXJPZkNvbHVtbnM7XG4gICAgICAgIHRoaXMuZmllbGRzID0gZmllbGRzO1xuICAgICAgICB0aGlzLnJvd3NwYW4gPSAxO1xuICAgICAgICB0aGlzLmNvbHNwYW4gPSAxO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkcykuZm9yRWFjaCgoY3VycmVudEZpZWxkKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWVsZHMsIGN1cnJlbnRGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbCA9IG5ldyBDb250YWluZXJDb2x1bW5Nb2RlbCgpO1xuICAgICAgICAgICAgY29sLmZpZWxkcyA9IChmaWVsZHNbY3VycmVudEZpZWxkXSB8fCBbXSkubWFwKChmaWVsZDogYW55KSA9PiBuZXcgRm9ybUZpZWxkTW9kZWwoZm9ybSwgZmllbGQpKTtcbiAgICAgICAgICAgIGNvbC5yb3dzcGFuID0gZmllbGRzW2N1cnJlbnRGaWVsZF0ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoIUZvcm1GaWVsZFR5cGVzLmlzU2VjdGlvblR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGFpbmVyQ29sc3Bhbihjb2wuZmllbGRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb3dzcGFuID0gTWF0aC5tYXgodGhpcy5yb3dzcGFuLCBjb2wucm93c3Bhbik7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChjb2wpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvbnRhaW5lckNvbHNwYW4oZmllbGRzOiBGb3JtRmllbGRNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChjb2xGaWVsZDogRm9ybUZpZWxkTW9kZWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sc3BhbiA9IE1hdGgubWF4KHRoaXMuY29sc3BhbiwgY29sRmllbGQuY29sc3Bhbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBhcnNlVmFsdWUoanNvbjogYW55KTogYW55IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoanNvbiwgJ3ZhbHVlJykgJiYganNvbi52YWx1ZSAhPT0gdW5kZWZpbmVkID8ganNvbi52YWx1ZSA6IG51bGw7XG5cbiAgICAgICAgLypcbiAgICAgICAgIFRoaXMgaXMgbmVlZGVkIGR1ZSB0byBBY3Rpdml0aSBpc3N1ZSByZWxhdGVkIHRvIHJlYWRpbmcgZHJvcGRvd24gdmFsdWVzIGFzIHZhbHVlIHN0cmluZ1xuICAgICAgICAgYnV0IHNhdmluZyBiYWNrIGFzIG9iamVjdDogeyBpZDogPGlkPiwgbmFtZTogPG5hbWU+IH1cbiAgICAgICAgICovXG4gICAgICAgIGlmIChqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRST1BET1dOKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNFbXB0eVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVtcHR5T3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlPcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5kZWZhdWx0RW1wdHlPcHRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uTmFtZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudW5zaGlmdCh0aGlzLmVtcHR5T3B0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0VtcHR5VmFsdWUgPSAhdmFsdWUgfHwgW3RoaXMuZW1wdHlPcHRpb24uaWQsIHRoaXMuZW1wdHlPcHRpb24ubmFtZV0uaW5jbHVkZXModmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlPcHRpb24uaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkT3B0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkT3B0aW9uKHsgaWQ6IHZhbHVlLmlkLCBuYW1lOiB2YWx1ZS5uYW1lIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzTXVsdGlwbGVWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZFNlbGVjdGVkT3B0aW9ucyA9IChBcnJheS5pc0FycmF5KGpzb24udmFsdWUpID8ganNvbi52YWx1ZSA6IFtdKS5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRPcHRpb25zKHZhbGlkU2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRTZWxlY3RlZE9wdGlvbnM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICBUaGlzIGlzIG5lZWRlZCBkdWUgdG8gQWN0aXZpdGkgaXNzdWUgcmVsYXRlZCB0byByZWFkaW5nIHJhZGlvIGJ1dHRvbiB2YWx1ZXMgYXMgdmFsdWUgc3RyaW5nXG4gICAgICAgICBidXQgc2F2aW5nIGJhY2sgYXMgb2JqZWN0OiB7IGlkOiA8aWQ+LCBuYW1lOiA8bmFtZT4gfVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuUkFESU9fQlVUVE9OUykge1xuICAgICAgICAgICAgaWYgKGpzb24udmFsdWU/Lm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnBhcnNlVmFsaWRPcHRpb25zKGpzb24udmFsdWUub3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFjdGl2aXRpIGhhcyBhIGJ1ZyB3aXRoIGRlZmF1bHQgcmFkaW8gYnV0dG9uIHZhbHVlIHdoZXJlIGluaXRpYWwgc2VsZWN0aW9uIHBhc3NlZCBhcyBgbmFtZWAgdmFsdWVcbiAgICAgICAgICAgIC8vIHNvIHRyeSByZXNvbHZpbmcgY3VycmVudCBvbmUgd2l0aCBhIGZhbGxiYWNrIHRvIGZpcnN0IGVudHJ5IHZpYSBuYW1lIG9yIGlkXG4gICAgICAgICAgICAvLyBUT0RPOiBuZWVkcyB0byBiZSByZXBvcnRlZCBhbmQgZml4ZWQgYXQgQWN0aXZpdGkgc2lkZVxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAob3B0KSA9PiBvcHQuaWQgPT09IHZhbHVlIHx8IG9wdC5uYW1lID09PSB2YWx1ZSB8fCAodmFsdWUgJiYgKG9wdC5pZCA9PT0gdmFsdWUuaWQgfHwgb3B0Lm5hbWUgPT09IHZhbHVlLm5hbWUpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoaW5nT3B0aW9uLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkT3B0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkT3B0aW9uKHsgaWQ6IHZhbHVlLmlkLCBuYW1lOiB2YWx1ZS5uYW1lIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlRmllbGQoanNvbikgfHwgdGhpcy5pc0RhdGVUaW1lRmllbGQoanNvbikpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRlVmFsdWU6IERhdGU7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9IHRoaXMuaXNEYXRlVGltZUZpZWxkKGpzb24pXG4gICAgICAgICAgICAgICAgICAgICAgICA/IERhdGVGbnNVdGlscy5wYXJzZURhdGUodmFsdWUsICdZWVlZLU1NLUREIGhoOm1tIEEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBEYXRlRm5zVXRpbHMucGFyc2VEYXRlKHZhbHVlLnNwbGl0KCdUJylbMF0sICdZWVlZLU0tRCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRlVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0NoZWNrYm94RmllbGQoanNvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBqc29uLnZhbHVlID09PSAndHJ1ZScgfHwganNvbi52YWx1ZSA9PT0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVGb3JtKCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuRFJPUERPV046IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgIFRoaXMgaXMgbmVlZGVkIGR1ZSB0byBBY3Rpdml0aSByZWFkaW5nIGRyb3Bkb3duIHZhbHVlcyBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgICAgYnV0IHNhdmluZyBiYWNrIGFzIG9iamVjdDogeyBpZDogPGlkPiwgbmFtZTogPG5hbWU+IH1cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gJ2VtcHR5JyB8fCB0aGlzLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uOiBGb3JtRmllbGRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBtYXRjaGluZ09wdGlvbiB8fCBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuUkFESU9fQlVUVE9OUzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhZGlvQnV0dG9uOiBGb3JtRmllbGRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uVHlwZSA9PT0gJ3Jlc3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSByYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IC4uLnJhZGlvQnV0dG9uLCBvcHRpb25zOiB0aGlzLm9wdGlvbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7IGlkOiBudWxsLCBuYW1lOiBudWxsLCBvcHRpb25zOiB0aGlzLm9wdGlvbnMgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gcmFkaW9CdXR0b24gPyB7IC4uLnJhZGlvQnV0dG9uIH0gOiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5VUExPQUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uaGFzVXBsb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlLm1hcCgoZWxlbSkgPT4gZWxlbS5pZCkuam9pbignLCcpIDogW3RoaXMudmFsdWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuVFlQRUFIRUFEOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUFoZWFkRW50cnk6IEZvcm1GaWVsZE9wdGlvbltdID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUgfHwgb3B0Lm5hbWUgPT09IHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlQWhlYWRFbnRyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0eXBlQWhlYWRFbnRyeVswXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuREFURToge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy52YWx1ZSA9PT0gJ3RvZGF5Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZGF0ZVZhbHVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9IERhdGVGbnNVdGlscy5wYXJzZURhdGUodGhpcy52YWx1ZSwgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSBuZXcgRGF0ZSgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZERhdGUoZGF0ZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlUGFydCA9IERhdGVGbnNVdGlscy5mb3JtYXREYXRlKGRhdGVWYWx1ZSwgJ3l5eXktTU0tZGQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IGAke2RhdGVQYXJ0fVQwMDowMDowMC4wMDBaYDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuREFURVRJTUU6IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMudmFsdWUgPT09ICdub3cnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVUaW1lVmFsdWUgPSB0aGlzLnZhbHVlICE9PSBudWxsID8gRGF0ZUZuc1V0aWxzLmdldERhdGUodGhpcy52YWx1ZSkgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGVUaW1lVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBkYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLk5VTUJFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLmVuYWJsZUZyYWN0aW9ucyA/IHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgOiBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkFNT1VOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLmVuYWJsZUZyYWN0aW9ucyA/IHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgOiBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRFQ0lNQUw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuQk9PTEVBTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMudmFsdWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuUEVPUExFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuRlVOQ1RJT05BTF9HUk9VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZUZvcm1WYWx1ZXModGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm0ub25Gb3JtRmllbGRDaGFuZ2VkKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBmaWVsZCB0eXBlIGlzIGludmFsaWQsIHJlcXVpcmVzIGEgdHlwZSB0byBiZSBhIGBjb250YWluZXJgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSBmaWVsZCB0eXBlXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHR5cGUgaXMgYSBgY29udGFpbmVyYCwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc0ludmFsaWRGaWVsZFR5cGUodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnY29udGFpbmVyJztcbiAgICB9XG5cbiAgICBnZXRPcHRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG9wdGlvbjogRm9ybUZpZWxkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5uYW1lIDogbnVsbDtcbiAgICB9XG5cbiAgICBoYXNPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGlzRW1wdHlWYWx1ZU9wdGlvbihvcHRpb246IEZvcm1GaWVsZE9wdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNFbXB0eVZhbHVlICYmIG9wdGlvbj8uaWQgPT09IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uSWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRVcGRhdGVGb3JtVmFsdWVzKHR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFGb3JtRmllbGRUeXBlcy5pc1JlYWRPbmx5VHlwZSh0eXBlKSAmJiAhdGhpcy5pc0ludmFsaWRGaWVsZFR5cGUodHlwZSkgJiYgIUZvcm1GaWVsZFR5cGVzLmlzU2VjdGlvblR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRPcHRpb25zKG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdKSB7XG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB0aGlzLmFkZE9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE9wdGlvbihvcHRpb246IEZvcm1GaWVsZE9wdGlvbikge1xuICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0Py5pZCA9PT0gb3B0aW9uPy5pZCk7XG4gICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VWYWxpZE9wdGlvbnMob3B0aW9uczogYW55KTogRm9ybUZpZWxkT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VPcHRpb25zKG9wdGlvbnM6IGFueSwgb3B0aW9uVHlwZTogRmllbGRPcHRpb25UeXBlKTogRm9ybUZpZWxkT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gb3B0aW9uVHlwZSA9PT0gJ3Jlc3QnID8gW10gOiB0aGlzLnBhcnNlVmFsaWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZE9wdGlvbihvcHRpb246IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkob3B0aW9uKSAmJiBvcHRpb24/LmlkICYmIG9wdGlvbj8ubmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF0ZUZpZWxkKGpzb246IGFueSkge1xuICAgICAgICByZXR1cm4ganNvbi5wYXJhbXM/LmZpZWxkPy50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFIHx8IGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF0ZVRpbWVGaWVsZChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGpzb24ucGFyYW1zPy5maWVsZD8udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURVRJTUUgfHwganNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFVElNRTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ2hlY2tib3hGaWVsZChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGpzb24ucGFyYW1zPy5maWVsZD8udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuQk9PTEVBTiB8fCBqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkJPT0xFQU47XG4gICAgfVxufVxuIl19
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvY29yZS9mb3JtLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNbEQsa0NBQWtDO0FBQ2xDLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQW9FL0MsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FB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QU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQztJQUM5RixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVM7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDakcsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFTO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDO0lBQ3pHLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBUztRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUN2RyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IFdpZGdldFZpc2liaWxpdHlNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy93aWRnZXQtdmlzaWJpbGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDb250YWluZXJDb2x1bW5Nb2RlbCB9IGZyb20gJy4vY29udGFpbmVyLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VNb2RlbCB9IGZyb20gJy4vZXJyb3ItbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtRmllbGRNZXRhZGF0YSB9IGZyb20gJy4vZm9ybS1maWVsZC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBGb3JtRmllbGRPcHRpb24gfSBmcm9tICcuL2Zvcm0tZmllbGQtb3B0aW9uJztcbmltcG9ydCB7IEZvcm1GaWVsZFR5cGVzIH0gZnJvbSAnLi9mb3JtLWZpZWxkLXR5cGVzJztcbmltcG9ydCB7IEZvcm1XaWRnZXRNb2RlbCB9IGZyb20gJy4vZm9ybS13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUZpZWxkUnVsZSB9IGZyb20gJy4vZm9ybS1maWVsZC1ydWxlJztcbmltcG9ydCB7IFByb2Nlc3NGb3JtTW9kZWwgfSBmcm9tICcuL3Byb2Nlc3MtZm9ybS1tb2RlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNOdW1iZXJWYWx1ZSB9IGZyb20gJy4vZm9ybS1maWVsZC11dGlscyc7XG5pbXBvcnQgeyBWYXJpYWJsZUNvbmZpZyB9IGZyb20gJy4vZm9ybS1maWVsZC12YXJpYWJsZS1vcHRpb25zJztcbmltcG9ydCB7IERhdGFDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhdGFibGUvZGF0YS9kYXRhLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlRm5zVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgaXNWYWxpZCBhcyBpc1ZhbGlkRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuZXhwb3J0IHR5cGUgRmllbGRPcHRpb25UeXBlID0gJ3Jlc3QnIHwgJ21hbnVhbCcgfCAndmFyaWFibGUnO1xuZXhwb3J0IHR5cGUgRmllbGRTZWxlY3Rpb25UeXBlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuZXhwb3J0IHR5cGUgRmllbGRBbGlnbm1lbnRUeXBlID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcblxuLy8gTWFwcyB0byBGb3JtRmllbGRSZXByZXNlbnRhdGlvblxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZE1vZGVsIGV4dGVuZHMgRm9ybVdpZGdldE1vZGVsIHtcbiAgICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xuICAgIHByaXZhdGUgX3JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IGRlZmF1bHREYXRlRm9ybWF0OiBzdHJpbmcgPSAnRC1NLVlZWVknO1xuICAgIHJlYWRvbmx5IGRlZmF1bHREYXRlVGltZUZvcm1hdDogc3RyaW5nID0gJ0QtTS1ZWVlZIGhoOm1tIEEnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEVtcHR5T3B0aW9uSWQgPSAnZW1wdHknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEVtcHR5T3B0aW9uTmFtZSA9ICdDaG9vc2Ugb25lLi4uJztcblxuICAgIC8vIG1vZGVsIG1lbWJlcnNcbiAgICBmaWVsZFR5cGU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgb3ZlcnJpZGVJZDogYm9vbGVhbjtcbiAgICB0YWI6IHN0cmluZztcbiAgICByb3dzcGFuOiBudW1iZXIgPSAxO1xuICAgIGNvbHNwYW46IG51bWJlciA9IDE7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XG4gICAgdG9vbHRpcDogc3RyaW5nID0gbnVsbDtcbiAgICBtaW5MZW5ndGg6IG51bWJlciA9IDA7XG4gICAgbWF4TGVuZ3RoOiBudW1iZXIgPSAwO1xuICAgIG1pblZhbHVlOiBzdHJpbmc7XG4gICAgbWF4VmFsdWU6IHN0cmluZztcbiAgICBtYXhEYXRlUmFuZ2VWYWx1ZTogbnVtYmVyID0gMDtcbiAgICBtaW5EYXRlUmFuZ2VWYWx1ZTogbnVtYmVyID0gMDtcbiAgICBwcmVjaXNpb246IG51bWJlcjtcbiAgICBkeW5hbWljRGF0ZVJhbmdlU2VsZWN0aW9uOiBib29sZWFuO1xuICAgIHJlZ2V4UGF0dGVybjogc3RyaW5nO1xuICAgIG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdID0gW107XG4gICAgcmVzdFVybDogc3RyaW5nO1xuICAgIHJvbGVzOiBzdHJpbmdbXTtcbiAgICByZXN0UmVzcG9uc2VQYXRoOiBzdHJpbmc7XG4gICAgcmVzdElkUHJvcGVydHk6IHN0cmluZztcbiAgICByZXN0TGFiZWxQcm9wZXJ0eTogc3RyaW5nO1xuICAgIGhhc0VtcHR5VmFsdWU6IGJvb2xlYW47XG4gICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgb3B0aW9uVHlwZTogRmllbGRPcHRpb25UeXBlO1xuICAgIHBhcmFtczogRm9ybUZpZWxkTWV0YWRhdGEgPSB7fTtcbiAgICBoeXBlcmxpbmtVcmw6IHN0cmluZztcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIGlzVmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogV2lkZ2V0VmlzaWJpbGl0eU1vZGVsID0gbnVsbDtcbiAgICBlbmFibGVGcmFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjdXJyZW5jeTogc3RyaW5nID0gbnVsbDtcbiAgICBkYXRlRGlzcGxheUZvcm1hdDogc3RyaW5nID0gdGhpcy5kZWZhdWx0RGF0ZUZvcm1hdDtcbiAgICBzZWxlY3Rpb25UeXBlOiBGaWVsZFNlbGVjdGlvblR5cGU7XG4gICAgYWxpZ25tZW50VHlwZTogRmllbGRBbGlnbm1lbnRUeXBlO1xuICAgIHJ1bGU/OiBGb3JtRmllbGRSdWxlO1xuICAgIHNlbGVjdExvZ2dlZFVzZXI6IGJvb2xlYW47XG4gICAgZ3JvdXBzUmVzdHJpY3Rpb246IHN0cmluZ1tdO1xuICAgIGxlZnRMYWJlbHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICB2YXJpYWJsZUNvbmZpZzogVmFyaWFibGVDb25maWc7XG4gICAgc2NoZW1hRGVmaW5pdGlvbjogRGF0YUNvbHVtbltdO1xuICAgIGV4dGVybmFsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG5cbiAgICAvLyBjb250YWluZXIgbW9kZWwgbWVtYmVyc1xuICAgIG51bWJlck9mQ29sdW1uczogbnVtYmVyID0gMTtcbiAgICBmaWVsZHM6IEZvcm1GaWVsZE1vZGVsW10gPSBbXTtcbiAgICBjb2x1bW5zOiBDb250YWluZXJDb2x1bW5Nb2RlbFtdID0gW107XG5cbiAgICAvLyB1dGlsIG1lbWJlcnNcbiAgICBlbXB0eU9wdGlvbjogRm9ybUZpZWxkT3B0aW9uO1xuICAgIHZhbGlkYXRpb25TdW1tYXJ5OiBFcnJvck1lc3NhZ2VNb2RlbDtcblxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtPy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5O1xuICAgIH1cblxuICAgIHNldCByZWFkT25seShyZWFkT25seTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5O1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGdldCBoYXNNdWx0aXBsZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ211bHRpcGxlJyB8fCB0aGlzLnBhcmFtcy5tdWx0aXBsZTtcbiAgICB9XG5cbiAgICBtYXJrQXNJbnZhbGlkKCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgbWFya0FzVmFsaWQoKSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25TdW1tYXJ5ID0gbmV3IEVycm9yTWVzc2FnZU1vZGVsKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWVsZFZhbGlkYXRhYmxlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmZvcm0uZmllbGRWYWxpZGF0b3JzIHx8IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmllbGRWYWxpZGF0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5IHx8IEZvcm1GaWVsZFR5cGVzLmlzVmFsaWRhdGFibGVUeXBlKHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoZm9ybTogYW55LCBqc29uPzogYW55KSB7XG4gICAgICAgIHN1cGVyKGZvcm0sIGpzb24pO1xuICAgICAgICBpZiAoanNvbikge1xuICAgICAgICAgICAgdGhpcy5maWVsZFR5cGUgPSBqc29uLmZpZWxkVHlwZTtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBqc29uLmlkO1xuICAgICAgICAgICAgdGhpcy5uYW1lID0ganNvbi5uYW1lO1xuICAgICAgICAgICAgdGhpcy50eXBlID0ganNvbi50eXBlO1xuICAgICAgICAgICAgdGhpcy5yb2xlcyA9IGpzb24ucm9sZXM7XG4gICAgICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGpzb24ucmVxdWlyZWQ7XG4gICAgICAgICAgICB0aGlzLl9yZWFkT25seSA9IGpzb24ucmVhZE9ubHkgfHwganNvbi50eXBlID09PSAncmVhZG9ubHknO1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlkID0ganNvbi5vdmVycmlkZUlkO1xuICAgICAgICAgICAgdGhpcy50YWIgPSBqc29uLnRhYjtcbiAgICAgICAgICAgIHRoaXMucmVzdFVybCA9IGpzb24ucmVzdFVybDtcbiAgICAgICAgICAgIHRoaXMucmVzdFJlc3BvbnNlUGF0aCA9IGpzb24ucmVzdFJlc3BvbnNlUGF0aDtcbiAgICAgICAgICAgIHRoaXMucmVzdElkUHJvcGVydHkgPSBqc29uLnJlc3RJZFByb3BlcnR5O1xuICAgICAgICAgICAgdGhpcy5yZXN0TGFiZWxQcm9wZXJ0eSA9IGpzb24ucmVzdExhYmVsUHJvcGVydHk7XG4gICAgICAgICAgICB0aGlzLmNvbHNwYW4gPSBqc29uLmNvbHNwYW47XG4gICAgICAgICAgICB0aGlzLnJvd3NwYW4gPSBqc29uLnJvd3NwYW47XG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IGpzb24ubWluTGVuZ3RoIHx8IDA7XG4gICAgICAgICAgICB0aGlzLm1heExlbmd0aCA9IGpzb24ubWF4TGVuZ3RoIHx8IDA7XG4gICAgICAgICAgICB0aGlzLm1pblZhbHVlID0ganNvbi5taW5WYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubWF4VmFsdWUgPSBqc29uLm1heFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5taW5EYXRlUmFuZ2VWYWx1ZSA9IGpzb24ubWluRGF0ZVJhbmdlVmFsdWU7XG4gICAgICAgICAgICB0aGlzLm1heERhdGVSYW5nZVZhbHVlID0ganNvbi5tYXhEYXRlUmFuZ2VWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0RhdGVSYW5nZVNlbGVjdGlvbiA9IGpzb24uZHluYW1pY0RhdGVSYW5nZVNlbGVjdGlvbjtcbiAgICAgICAgICAgIHRoaXMucmVnZXhQYXR0ZXJuID0ganNvbi5yZWdleFBhdHRlcm47XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyhqc29uLm9wdGlvbnMsIGpzb24ub3B0aW9uVHlwZSk7XG4gICAgICAgICAgICB0aGlzLmVtcHR5T3B0aW9uID0gdGhpcy5nZXRFbXB0eU9wdGlvbih0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5oYXNFbXB0eVZhbHVlID0ganNvbj8uaGFzRW1wdHlWYWx1ZSA/PyAhIXRoaXMuZW1wdHlPcHRpb247XG4gICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGpzb24uY2xhc3NOYW1lO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25UeXBlID0ganNvbi5vcHRpb25UeXBlO1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBqc29uLnBhcmFtcyB8fCB7fTtcbiAgICAgICAgICAgIHRoaXMuaHlwZXJsaW5rVXJsID0ganNvbi5oeXBlcmxpbmtVcmw7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlUZXh0ID0ganNvbi5kaXNwbGF5VGV4dDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eUNvbmRpdGlvbiA9IGpzb24udmlzaWJpbGl0eUNvbmRpdGlvbiA/IG5ldyBXaWRnZXRWaXNpYmlsaXR5TW9kZWwoanNvbi52aXNpYmlsaXR5Q29uZGl0aW9uKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRnJhY3Rpb25zID0ganNvbi5lbmFibGVGcmFjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0ganNvbi5jdXJyZW5jeTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQgPSBqc29uLmRhdGVEaXNwbGF5Rm9ybWF0IHx8IHRoaXMuZ2V0RGVmYXVsdERhdGVGb3JtYXQoanNvbik7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdW1tYXJ5ID0gbmV3IEVycm9yTWVzc2FnZU1vZGVsKCk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBqc29uLnRvb2x0aXAgfHwgJyc7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblR5cGUgPSBqc29uLnNlbGVjdGlvblR5cGU7XG4gICAgICAgICAgICB0aGlzLmFsaWdubWVudFR5cGUgPSBqc29uLmFsaWdubWVudFR5cGU7XG4gICAgICAgICAgICB0aGlzLnJ1bGUgPSBqc29uLnJ1bGU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdExvZ2dlZFVzZXIgPSBqc29uLnNlbGVjdExvZ2dlZFVzZXI7XG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1Jlc3RyaWN0aW9uID0ganNvbi5ncm91cHNSZXN0cmljdGlvbj8uZ3JvdXBzO1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZUNvbmZpZyA9IGpzb24udmFyaWFibGVDb25maWc7XG4gICAgICAgICAgICB0aGlzLnNjaGVtYURlZmluaXRpb24gPSBqc29uLnNjaGVtYURlZmluaXRpb247XG4gICAgICAgICAgICB0aGlzLnByZWNpc2lvbiA9IGpzb24ucHJlY2lzaW9uO1xuICAgICAgICAgICAgdGhpcy5leHRlcm5hbFByb3BlcnR5ID0ganNvbi5leHRlcm5hbFByb3BlcnR5O1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoanNvbik7XG4gICAgICAgICAgICB0aGlzLnN0eWxlID0ganNvbi5zdHlsZTtcblxuICAgICAgICAgICAgaWYgKGpzb24ucGxhY2Vob2xkZXIgJiYganNvbi5wbGFjZWhvbGRlciAhPT0gJycgJiYganNvbi5wbGFjZWhvbGRlciAhPT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGpzb24ucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChGb3JtRmllbGRUeXBlcy5pc1JlYWRPbmx5VHlwZSh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zPy5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRm9yUmVhZG9ubHlUeXBlKGZvcm0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEZvcm1GaWVsZFR5cGVzLmlzQ29udGFpbmVyVHlwZSh0aGlzLnR5cGUpIHx8IEZvcm1GaWVsZFR5cGVzLmlzU2VjdGlvblR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyRmFjdG9yeShqc29uLCBmb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtPy5qc29uKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRMYWJlbHMgPSBmb3JtLmpzb24ubGVmdExhYmVscyB8fCBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RW1wdHlPcHRpb24ob3B0aW9uczogRm9ybUZpZWxkT3B0aW9uW10pOiBGb3JtRmllbGRPcHRpb24ge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uSWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWVGb3JSZWFkb25seVR5cGUoZm9ybTogYW55KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRQcm9jZXNzVmFyaWFibGVWYWx1ZSh0aGlzLnBhcmFtcy5maWVsZCwgZm9ybSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0RGF0ZUZvcm1hdChqc29uRmllbGQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBvcmlnaW5hbFR5cGUgPSBqc29uRmllbGQudHlwZTtcbiAgICAgICAgaWYgKEZvcm1GaWVsZFR5cGVzLmlzUmVhZE9ubHlUeXBlKGpzb25GaWVsZC50eXBlKSAmJiBqc29uRmllbGQucGFyYW1zPy5maWVsZCkge1xuICAgICAgICAgICAgb3JpZ2luYWxUeXBlID0ganNvbkZpZWxkLnBhcmFtcy5maWVsZC50eXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEVUSU1FID8gdGhpcy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQgOiB0aGlzLmRlZmF1bHREYXRlRm9ybWF0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUeXBlYWhlYWRGaWVsZFR5cGUodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAndHlwZWFoZWFkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpZWxkTmFtZVdpdGhMYWJlbChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbmFtZSArICdfTEFCRUwnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvY2Vzc1ZhcmlhYmxlVmFsdWUoZmllbGQ6IGFueSwgZm9ybTogUHJvY2Vzc0Zvcm1Nb2RlbCk6IGFueSB7XG4gICAgICAgIGxldCBmaWVsZE5hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgICBpZiAodGhpcy5pc1R5cGVhaGVhZEZpZWxkVHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgICAgICAgZmllbGROYW1lID0gdGhpcy5nZXRGaWVsZE5hbWVXaXRoTGFiZWwoZmllbGQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtLmdldFByb2Nlc3NWYXJpYWJsZVZhbHVlKGZpZWxkTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb250YWluZXJGYWN0b3J5KGpzb246IGFueSwgZm9ybTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbnVtYmVyT2ZDb2x1bW5zID0gMSwgZmllbGRzID0ge30gfSA9IGpzb247XG4gICAgICAgIHRoaXMubnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVyT2ZDb2x1bW5zO1xuICAgICAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgICAgICAgdGhpcy5yb3dzcGFuID0gMTtcbiAgICAgICAgdGhpcy5jb2xzcGFuID0gMTtcblxuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goKGN1cnJlbnRGaWVsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmllbGRzLCBjdXJyZW50RmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb2wgPSBuZXcgQ29udGFpbmVyQ29sdW1uTW9kZWwoKTtcbiAgICAgICAgICAgIGNvbC5maWVsZHMgPSAoZmllbGRzW2N1cnJlbnRGaWVsZF0gfHwgW10pLm1hcCgoZmllbGQ6IGFueSkgPT4gbmV3IEZvcm1GaWVsZE1vZGVsKGZvcm0sIGZpZWxkKSk7XG4gICAgICAgICAgICBjb2wucm93c3BhbiA9IGZpZWxkc1tjdXJyZW50RmllbGRdLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKCFGb3JtRmllbGRUeXBlcy5pc1NlY3Rpb25UeXBlKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lckNvbHNwYW4oY29sLmZpZWxkcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm93c3BhbiA9IE1hdGgubWF4KHRoaXMucm93c3BhbiwgY29sLnJvd3NwYW4pO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb250YWluZXJDb2xzcGFuKGZpZWxkczogRm9ybUZpZWxkTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoY29sRmllbGQ6IEZvcm1GaWVsZE1vZGVsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbHNwYW4gPSBNYXRoLm1heCh0aGlzLmNvbHNwYW4sIGNvbEZpZWxkLmNvbHNwYW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlKGpzb246IGFueSk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGpzb24sICd2YWx1ZScpICYmIGpzb24udmFsdWUgIT09IHVuZGVmaW5lZCA/IGpzb24udmFsdWUgOiBudWxsO1xuXG4gICAgICAgIC8qXG4gICAgICAgICBUaGlzIGlzIG5lZWRlZCBkdWUgdG8gQWN0aXZpdGkgaXNzdWUgcmVsYXRlZCB0byByZWFkaW5nIGRyb3Bkb3duIHZhbHVlcyBhcyB2YWx1ZSBzdHJpbmdcbiAgICAgICAgIGJ1dCBzYXZpbmcgYmFjayBhcyBvYmplY3Q6IHsgaWQ6IDxpZD4sIG5hbWU6IDxuYW1lPiB9XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoanNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EUk9QRE9XTikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbXB0eU9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5T3B0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbk5hbWVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVuc2hpZnQodGhpcy5lbXB0eU9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eVZhbHVlID0gIXZhbHVlIHx8IFt0aGlzLmVtcHR5T3B0aW9uLmlkLCB0aGlzLmVtcHR5T3B0aW9uLm5hbWVdLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVtcHR5T3B0aW9uLmlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE9wdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvbih7IGlkOiB2YWx1ZS5pZCwgbmFtZTogdmFsdWUubmFtZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc011bHRpcGxlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRTZWxlY3RlZE9wdGlvbnMgPSAoQXJyYXkuaXNBcnJheShqc29uLnZhbHVlKSA/IGpzb24udmFsdWUgOiBbXSkuZmlsdGVyKChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYWRkT3B0aW9ucyh2YWxpZFNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkU2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgVGhpcyBpcyBuZWVkZWQgZHVlIHRvIEFjdGl2aXRpIGlzc3VlIHJlbGF0ZWQgdG8gcmVhZGluZyByYWRpbyBidXR0b24gdmFsdWVzIGFzIHZhbHVlIHN0cmluZ1xuICAgICAgICAgYnV0IHNhdmluZyBiYWNrIGFzIG9iamVjdDogeyBpZDogPGlkPiwgbmFtZTogPG5hbWU+IH1cbiAgICAgICAgICovXG4gICAgICAgIGlmIChqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLlJBRElPX0JVVFRPTlMpIHtcbiAgICAgICAgICAgIGlmIChqc29uLnZhbHVlPy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5wYXJzZVZhbGlkT3B0aW9ucyhqc29uLnZhbHVlLm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBY3Rpdml0aSBoYXMgYSBidWcgd2l0aCBkZWZhdWx0IHJhZGlvIGJ1dHRvbiB2YWx1ZSB3aGVyZSBpbml0aWFsIHNlbGVjdGlvbiBwYXNzZWQgYXMgYG5hbWVgIHZhbHVlXG4gICAgICAgICAgICAvLyBzbyB0cnkgcmVzb2x2aW5nIGN1cnJlbnQgb25lIHdpdGggYSBmYWxsYmFjayB0byBmaXJzdCBlbnRyeSB2aWEgbmFtZSBvciBpZFxuICAgICAgICAgICAgLy8gVE9ETzogbmVlZHMgdG8gYmUgcmVwb3J0ZWQgYW5kIGZpeGVkIGF0IEFjdGl2aXRpIHNpZGVcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKG9wdCkgPT4gb3B0LmlkID09PSB2YWx1ZSB8fCBvcHQubmFtZSA9PT0gdmFsdWUgfHwgKHZhbHVlICYmIChvcHQuaWQgPT09IHZhbHVlLmlkIHx8IG9wdC5uYW1lID09PSB2YWx1ZS5uYW1lKSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGluZ09wdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGluZ09wdGlvbi5pZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE9wdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvbih7IGlkOiB2YWx1ZS5pZCwgbmFtZTogdmFsdWUubmFtZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZUZpZWxkKGpzb24pIHx8IHRoaXMuaXNEYXRlVGltZUZpZWxkKGpzb24pKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZVZhbHVlOiBEYXRlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyVmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSB0aGlzLmlzRGF0ZVRpbWVGaWVsZChqc29uKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBEYXRlRm5zVXRpbHMucGFyc2VEYXRlKHZhbHVlLCAnWVlZWS1NTS1ERCBoaDptbSBBJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRGF0ZUZuc1V0aWxzLnBhcnNlRGF0ZSh2YWx1ZS5zcGxpdCgnVCcpWzBdLCAnWVlZWS1NLUQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZERhdGUoZGF0ZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZVZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNDaGVja2JveEZpZWxkKGpzb24pKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbi52YWx1ZSA9PT0gJ3RydWUnIHx8IGpzb24udmFsdWUgPT09IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRST1BET1dOOiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICBUaGlzIGlzIG5lZWRlZCBkdWUgdG8gQWN0aXZpdGkgcmVhZGluZyBkcm9wZG93biB2YWx1ZXMgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgIGJ1dCBzYXZpbmcgYmFjayBhcyBvYmplY3Q6IHsgaWQ6IDxpZD4sIG5hbWU6IDxuYW1lPiB9XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09ICdlbXB0eScgfHwgdGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ09wdGlvbjogRm9ybUZpZWxkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbWF0Y2hpbmdPcHRpb24gfHwgbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlJBRElPX0JVVFRPTlM6IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYWRpb0J1dHRvbjogRm9ybUZpZWxkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvblR5cGUgPT09ICdyZXN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgID8geyAuLi5yYWRpb0J1dHRvbiwgb3B0aW9uczogdGhpcy5vcHRpb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBpZDogbnVsbCwgbmFtZTogbnVsbCwgb3B0aW9uczogdGhpcy5vcHRpb25zIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHJhZGlvQnV0dG9uID8geyAuLi5yYWRpb0J1dHRvbiB9IDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuVVBMT0FEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmhhc1VwbG9hZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZS5tYXAoKGVsZW0pID0+IGVsZW0uaWQpLmpvaW4oJywnKSA6IFt0aGlzLnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlRZUEVBSEVBRDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVBaGVhZEVudHJ5OiBGb3JtRmllbGRPcHRpb25bXSA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlIHx8IG9wdC5uYW1lID09PSB0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZUFoZWFkRW50cnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdHlwZUFoZWFkRW50cnlbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRBVEU6IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMudmFsdWUgPT09ICd0b2RheScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGRhdGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSBEYXRlRm5zVXRpbHMucGFyc2VEYXRlKHRoaXMudmFsdWUsIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlID0gbmV3IERhdGUoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZVBhcnQgPSBEYXRlRm5zVXRpbHMuZm9ybWF0RGF0ZShkYXRlVmFsdWUsICd5eXl5LU1NLWRkJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBgJHtkYXRlUGFydH1UMDA6MDA6MDAuMDAwWmA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRBVEVUSU1FOiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJyAmJiB0aGlzLnZhbHVlID09PSAnbm93Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlVGltZVZhbHVlID0gdGhpcy52YWx1ZSAhPT0gbnVsbCA/IERhdGVGbnNVdGlscy5nZXREYXRlKHRoaXMudmFsdWUpIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRlVGltZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gZGF0ZVRpbWVWYWx1ZS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5OVU1CRVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy5lbmFibGVGcmFjdGlvbnMgPyBwYXJzZUZsb2F0KHRoaXMudmFsdWUpIDogcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5BTU9VTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy5lbmFibGVGcmFjdGlvbnMgPyBwYXJzZUZsb2F0KHRoaXMudmFsdWUpIDogcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5ERUNJTUFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkJPT0xFQU46IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQgPyB0aGlzLnZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlBFT1BMRToge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkZVTkNUSU9OQUxfR1JPVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRVcGRhdGVGb3JtVmFsdWVzKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtLm9uRm9ybUZpZWxkQ2hhbmdlZCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZmllbGQgdHlwZSBpcyBpbnZhbGlkLCByZXF1aXJlcyBhIHR5cGUgdG8gYmUgYSBgY29udGFpbmVyYFxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgZmllbGQgdHlwZVxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0eXBlIGlzIGEgYGNvbnRhaW5lcmAsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNJbnZhbGlkRmllbGRUeXBlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ2NvbnRhaW5lcic7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBvcHRpb246IEZvcm1GaWVsZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubmFtZSA6IG51bGw7XG4gICAgfVxuXG4gICAgaGFzT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucz8ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc0VtcHR5VmFsdWVPcHRpb24ob3B0aW9uOiBGb3JtRmllbGRPcHRpb24pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzRW1wdHlWYWx1ZSAmJiBvcHRpb24/LmlkID09PSB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbklkO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdWxkVXBkYXRlRm9ybVZhbHVlcyh0eXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhRm9ybUZpZWxkVHlwZXMuaXNSZWFkT25seVR5cGUodHlwZSkgJiYgIXRoaXMuaXNJbnZhbGlkRmllbGRUeXBlKHR5cGUpICYmICFGb3JtRmllbGRUeXBlcy5pc1NlY3Rpb25UeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkT3B0aW9ucyhvcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSkge1xuICAgICAgICBvcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gdGhpcy5hZGRPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRPcHRpb24ob3B0aW9uOiBGb3JtRmllbGRPcHRpb24pIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdD8uaWQgPT09IG9wdGlvbj8uaWQpO1xuICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVmFsaWRPcHRpb25zKG9wdGlvbnM6IGFueSk6IEZvcm1GaWVsZE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob3B0aW9ucykgPyBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSkgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlT3B0aW9ucyhvcHRpb25zOiBhbnksIG9wdGlvblR5cGU6IEZpZWxkT3B0aW9uVHlwZSk6IEZvcm1GaWVsZE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvblR5cGUgPT09ICdyZXN0JyA/IFtdIDogdGhpcy5wYXJzZVZhbGlkT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRPcHRpb24ob3B0aW9uOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9wdGlvbikgJiYgb3B0aW9uPy5pZCAmJiBvcHRpb24/Lm5hbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0RhdGVGaWVsZChqc29uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGpzb24ucGFyYW1zPy5maWVsZD8udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURSB8fCBqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0RhdGVUaW1lRmllbGQoanNvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBqc29uLnBhcmFtcz8uZmllbGQ/LnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEVUSU1FIHx8IGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURVRJTUU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NoZWNrYm94RmllbGQoanNvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBqc29uLnBhcmFtcz8uZmllbGQ/LnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkJPT0xFQU4gfHwganNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5CT09MRUFOO1xuICAgIH1cbn1cbiJdfQ==
|
package/fesm2022/adf-core.mjs
CHANGED
|
@@ -20585,7 +20585,7 @@ class FormFieldModel extends FormWidgetModel {
|
|
|
20585
20585
|
this.currency = json.currency;
|
|
20586
20586
|
this.dateDisplayFormat = json.dateDisplayFormat || this.getDefaultDateFormat(json);
|
|
20587
20587
|
this.validationSummary = new ErrorMessageModel();
|
|
20588
|
-
this.tooltip = json.tooltip;
|
|
20588
|
+
this.tooltip = json.tooltip || '';
|
|
20589
20589
|
this.selectionType = json.selectionType;
|
|
20590
20590
|
this.alignmentType = json.alignmentType;
|
|
20591
20591
|
this.rule = json.rule;
|