angular-reactive-validation
Version:
Reactive Forms validation shouldn't require the developer to write lots of HTML to show validation messages. This library makes it easy.
50 lines • 19.3 kB
JavaScript
import { Validators as AngularValidators } from '@angular/forms';
import { ValidatorDeclaration } from './validator-declaration';
/**
* Provides a set of validators used by form controls.
*
* Code comments have been copied from the Angular source code.
*/
export class Validators {
/**
* No-op validator.
*/
static { this.nullValidator = AngularValidators.nullValidator; }
static { this.composeAsync = AngularValidators.composeAsync; }
static { this.minValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.min, 'min'); }
static { this.maxValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.max, 'max'); }
static { this.minLengthValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.minLength, 'minlength'); }
static { this.maxLengthValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.maxLength, 'maxlength'); }
static { this.patternValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.pattern, 'pattern'); }
static { this.requiredValidator = ValidatorDeclaration.wrapNoArgumentValidator(AngularValidators.required, 'required'); }
static { this.requiredTrueValidator = ValidatorDeclaration.wrapNoArgumentValidator(AngularValidators.requiredTrue, 'required'); }
static { this.emailValidator = ValidatorDeclaration.wrapNoArgumentValidator(AngularValidators.email, 'email'); }
static compose(validators) {
return validators === null ? AngularValidators.compose(validators) : AngularValidators.compose(validators);
}
static min(min, message) {
return Validators.minValidator(min, message);
}
static max(max, message) {
return Validators.maxValidator(max, message);
}
static minLength(minLength, message) {
return Validators.minLengthValidator(minLength, message);
}
static maxLength(maxLength, message) {
return Validators.maxLengthValidator(maxLength, message);
}
static pattern(pattern, message) {
return Validators.patternValidator(pattern, message);
}
static required(message) {
return Validators.requiredValidator(message);
}
static requiredTrue(message) {
return Validators.requiredTrueValidator(message);
}
static email(message) {
return Validators.emailValidator(message);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItcmVhY3RpdmUtdmFsaWRhdGlvbi9zcmMvbGliL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsSUFBSSxpQkFBaUIsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9EOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUN2Qjs7T0FFRzthQUNNLGtCQUFhLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDO2FBQ2hELGlCQUFZLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDO2FBRXRDLGlCQUFZLEdBQUcsb0JBQW9CLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzlGLGlCQUFZLEdBQUcsb0JBQW9CLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzlGLHVCQUFrQixHQUFHLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNoSCx1QkFBa0IsR0FBRyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDaEgscUJBQWdCLEdBQUcsb0JBQW9CLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQzFHLHNCQUFpQixHQUFHLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN6RywwQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDakgsbUJBQWMsR0FBRyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFZL0csTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUErQztRQUM1RCxPQUFPLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUE4QkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUE0QixFQUFFLE9BQTRDO1FBQ25GLE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQThCRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQTRCLEVBQUUsT0FBNEM7UUFDbkYsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBOEJELE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBa0MsRUFBRSxPQUFrRDtRQUNyRyxPQUFPLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQThCRCxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQWtDLEVBQUUsT0FBa0Q7UUFDckcsT0FBTyxVQUFVLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFzQkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFnRCxFQUFFLE9BQWdCO1FBQy9FLE9BQU8sVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBWUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFnQjtRQUM5QixPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBWUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFnQjtRQUNsQyxPQUFPLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBWUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvcnMgYXMgQW5ndWxhclZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBWYWxpZGF0b3JEZWNsYXJhdGlvbiB9IGZyb20gJy4vdmFsaWRhdG9yLWRlY2xhcmF0aW9uJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIHNldCBvZiB2YWxpZGF0b3JzIHVzZWQgYnkgZm9ybSBjb250cm9scy5cbiAqXG4gKiBDb2RlIGNvbW1lbnRzIGhhdmUgYmVlbiBjb3BpZWQgZnJvbSB0aGUgQW5ndWxhciBzb3VyY2UgY29kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvcnMge1xuLyoqXG4gKiBOby1vcCB2YWxpZGF0b3IuXG4gKi9cbiAgc3RhdGljIG51bGxWYWxpZGF0b3IgPSBBbmd1bGFyVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yO1xuICBzdGF0aWMgY29tcG9zZUFzeW5jID0gQW5ndWxhclZhbGlkYXRvcnMuY29tcG9zZUFzeW5jO1xuXG4gIHByaXZhdGUgc3RhdGljIG1pblZhbGlkYXRvciA9IFZhbGlkYXRvckRlY2xhcmF0aW9uLndyYXBTaW5nbGVBcmd1bWVudFZhbGlkYXRvcihBbmd1bGFyVmFsaWRhdG9ycy5taW4sICdtaW4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgbWF4VmFsaWRhdG9yID0gVmFsaWRhdG9yRGVjbGFyYXRpb24ud3JhcFNpbmdsZUFyZ3VtZW50VmFsaWRhdG9yKEFuZ3VsYXJWYWxpZGF0b3JzLm1heCwgJ21heCcpO1xuICBwcml2YXRlIHN0YXRpYyBtaW5MZW5ndGhWYWxpZGF0b3IgPSBWYWxpZGF0b3JEZWNsYXJhdGlvbi53cmFwU2luZ2xlQXJndW1lbnRWYWxpZGF0b3IoQW5ndWxhclZhbGlkYXRvcnMubWluTGVuZ3RoLCAnbWlubGVuZ3RoJyk7XG4gIHByaXZhdGUgc3RhdGljIG1heExlbmd0aFZhbGlkYXRvciA9IFZhbGlkYXRvckRlY2xhcmF0aW9uLndyYXBTaW5nbGVBcmd1bWVudFZhbGlkYXRvcihBbmd1bGFyVmFsaWRhdG9ycy5tYXhMZW5ndGgsICdtYXhsZW5ndGgnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcGF0dGVyblZhbGlkYXRvciA9IFZhbGlkYXRvckRlY2xhcmF0aW9uLndyYXBTaW5nbGVBcmd1bWVudFZhbGlkYXRvcihBbmd1bGFyVmFsaWRhdG9ycy5wYXR0ZXJuLCAncGF0dGVybicpO1xuICBwcml2YXRlIHN0YXRpYyByZXF1aXJlZFZhbGlkYXRvciA9IFZhbGlkYXRvckRlY2xhcmF0aW9uLndyYXBOb0FyZ3VtZW50VmFsaWRhdG9yKEFuZ3VsYXJWYWxpZGF0b3JzLnJlcXVpcmVkLCAncmVxdWlyZWQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVxdWlyZWRUcnVlVmFsaWRhdG9yID0gVmFsaWRhdG9yRGVjbGFyYXRpb24ud3JhcE5vQXJndW1lbnRWYWxpZGF0b3IoQW5ndWxhclZhbGlkYXRvcnMucmVxdWlyZWRUcnVlLCAncmVxdWlyZWQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW1haWxWYWxpZGF0b3IgPSBWYWxpZGF0b3JEZWNsYXJhdGlvbi53cmFwTm9Bcmd1bWVudFZhbGlkYXRvcihBbmd1bGFyVmFsaWRhdG9ycy5lbWFpbCwgJ2VtYWlsJyk7XG5cbiAgLyoqXG4gICAqIENvbXBvc2UgbXVsdGlwbGUgdmFsaWRhdG9ycyBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdW5pb25cbiAgICogb2YgdGhlIGluZGl2aWR1YWwgZXJyb3IgbWFwcy5cbiAgICovXG4gIHN0YXRpYyBjb21wb3NlKHZhbGlkYXRvcnM6IG51bGwpOiBudWxsO1xuICAvKipcbiAgICogQ29tcG9zZSBtdWx0aXBsZSB2YWxpZGF0b3JzIGludG8gYSBzaW5nbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB1bmlvblxuICAgKiBvZiB0aGUgaW5kaXZpZHVhbCBlcnJvciBtYXBzLlxuICAgKi9cbiAgc3RhdGljIGNvbXBvc2UodmFsaWRhdG9yczogKFZhbGlkYXRvckZufG51bGx8dW5kZWZpbmVkKVtdKTogVmFsaWRhdG9yRm58bnVsbDtcbiAgc3RhdGljIGNvbXBvc2UodmFsaWRhdG9yczogKFZhbGlkYXRvckZufG51bGx8dW5kZWZpbmVkKVtdfG51bGwpOiBWYWxpZGF0b3JGbnxudWxsIHtcbiAgICByZXR1cm4gdmFsaWRhdG9ycyA9PT0gbnVsbCA/IEFuZ3VsYXJWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycykgOiBBbmd1bGFyVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYSBudW1iZXIuXG4gICAqIE5vdGU6IHdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiB3aXRob3V0IHNwZWNpZnlpbmcgYSBtZXNzYWdlLCB5b3UgaGF2ZSB0byBkZWNsYXJlIGFuXG4gICAqIGFydi12YWxpZGF0aW9uLW1lc3NhZ2UgZWxlbWVudCBpbiB0aGUgSFRNTCB3aXRoIGEgY3VzdG9tIG1lc3NhZ2UuXG4gICAqL1xuICBzdGF0aWMgbWluKG1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGEgbnVtYmVyLlxuICAgKi9cbiAgc3RhdGljIG1pbihtaW46IG51bWJlciwgbWVzc2FnZTogc3RyaW5nKTogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGEgbnVtYmVyLlxuICAgKiBOb3RlOiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzcGVjaWZ5aW5nIGEgbWVzc2FnZSwgeW91IGhhdmUgdG8gZGVjbGFyZSBhblxuICAgKiBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlIGVsZW1lbnQgaW4gdGhlIEhUTUwgd2l0aCBhIGN1c3RvbSBtZXNzYWdlLlxuICAgKi9cbiAgc3RhdGljIG1pbihtaW46ICgpID0+IG51bWJlcik6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhIG51bWJlci5cbiAgICovXG4gIHN0YXRpYyBtaW4obWluOiAoKSA9PiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhIG51bWJlci5cbiAgICovXG4gIHN0YXRpYyBtaW4obWluOiBudW1iZXIsIG1lc3NhZ2VGdW5jOiAoKG1pbjogbnVtYmVyKSA9PiBzdHJpbmcpKTogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGEgbnVtYmVyLlxuICAgKi9cbiAgc3RhdGljIG1pbihtaW46ICgpID0+IG51bWJlciwgbWVzc2FnZUZ1bmM6ICgobWluOiBudW1iZXIpID0+IHN0cmluZykpOiBWYWxpZGF0b3JGbjtcbiAgc3RhdGljIG1pbihtaW46IG51bWJlciB8ICgoKSA9PiBudW1iZXIpLCBtZXNzYWdlPzogc3RyaW5nIHwgKChtaW46IG51bWJlcikgPT4gc3RyaW5nKSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gVmFsaWRhdG9ycy5taW5WYWxpZGF0b3IobWluLCBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGEgbnVtYmVyLlxuICAgKiBOb3RlOiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzcGVjaWZ5aW5nIGEgbWVzc2FnZSwgeW91IGhhdmUgdG8gZGVjbGFyZSBhblxuICAgKiBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlIGVsZW1lbnQgaW4gdGhlIEhUTUwgd2l0aCBhIGN1c3RvbSBtZXNzYWdlLlxuICAgKi9cbiAgc3RhdGljIG1heChtYXg6IG51bWJlcik6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhIG51bWJlci5cbiAgICovXG4gIHN0YXRpYyBtYXgobWF4OiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhIG51bWJlci5cbiAgICogTm90ZTogd2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpdGhvdXQgc3BlY2lmeWluZyBhIG1lc3NhZ2UsIHlvdSBoYXZlIHRvIGRlY2xhcmUgYW5cbiAgICogYXJ2LXZhbGlkYXRpb24tbWVzc2FnZSBlbGVtZW50IGluIHRoZSBIVE1MIHdpdGggYSBjdXN0b20gbWVzc2FnZS5cbiAgICovXG4gIHN0YXRpYyBtYXgobWF4OiAoKSA9PiBudW1iZXIpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYSBudW1iZXIuXG4gICAqL1xuICBzdGF0aWMgbWF4KG1heDogKCkgPT4gbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYSBudW1iZXIuXG4gICAqL1xuICBzdGF0aWMgbWF4KG1heDogbnVtYmVyLCBtZXNzYWdlRnVuYzogKChtYXg6IG51bWJlcikgPT4gc3RyaW5nKSk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhIG51bWJlci5cbiAgICovXG4gIHN0YXRpYyBtYXgobWF4OiAoKSA9PiBudW1iZXIsIG1lc3NhZ2VGdW5jOiAoKG1heDogbnVtYmVyKSA9PiBzdHJpbmcpKTogVmFsaWRhdG9yRm47XG4gIHN0YXRpYyBtYXgobWF4OiBudW1iZXIgfCAoKCkgPT4gbnVtYmVyKSwgbWVzc2FnZT86IHN0cmluZyB8ICgobWF4OiBudW1iZXIpID0+IHN0cmluZykpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIFZhbGlkYXRvcnMubWF4VmFsaWRhdG9yKG1heCwgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWluaW11bSBsZW5ndGguXG4gICAqIE5vdGU6IHdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiB3aXRob3V0IHNwZWNpZnlpbmcgYSBtZXNzYWdlLCB5b3UgaGF2ZSB0byBkZWNsYXJlIGFuXG4gICAqIGFydi12YWxpZGF0aW9uLW1lc3NhZ2UgZWxlbWVudCBpbiB0aGUgSFRNTCB3aXRoIGEgY3VzdG9tIG1lc3NhZ2UuXG4gICAqL1xuICBzdGF0aWMgbWluTGVuZ3RoKG1pbkxlbmd0aDogbnVtYmVyKTogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgb2YgYSBtaW5pbXVtIGxlbmd0aC5cbiAgICovXG4gIHN0YXRpYyBtaW5MZW5ndGgobWluTGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWluaW11bSBsZW5ndGguXG4gICAqIE5vdGU6IHdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiB3aXRob3V0IHNwZWNpZnlpbmcgYSBtZXNzYWdlLCB5b3UgaGF2ZSB0byBkZWNsYXJlIGFuXG4gICAqIGFydi12YWxpZGF0aW9uLW1lc3NhZ2UgZWxlbWVudCBpbiB0aGUgSFRNTCB3aXRoIGEgY3VzdG9tIG1lc3NhZ2UuXG4gICAqL1xuICBzdGF0aWMgbWluTGVuZ3RoKG1pbkxlbmd0aDogKCkgPT4gbnVtYmVyKTogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgb2YgYSBtaW5pbXVtIGxlbmd0aC5cbiAgICovXG4gIHN0YXRpYyBtaW5MZW5ndGgobWluTGVuZ3RoOiAoKSA9PiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWluaW11bSBsZW5ndGguXG4gICAqL1xuICBzdGF0aWMgbWluTGVuZ3RoKG1pbkxlbmd0aDogbnVtYmVyLCBtZXNzYWdlRnVuYzogKChtaW5MZW5ndGg6IG51bWJlcikgPT4gc3RyaW5nKSk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWluaW11bSBsZW5ndGguXG4gICAqL1xuICBzdGF0aWMgbWluTGVuZ3RoKG1pbkxlbmd0aDogKCkgPT4gbnVtYmVyLCBtZXNzYWdlRnVuYzogKChtaW5MZW5ndGg6IG51bWJlcikgPT4gc3RyaW5nKSk6IFZhbGlkYXRvckZuO1xuICBzdGF0aWMgbWluTGVuZ3RoKG1pbkxlbmd0aDogbnVtYmVyIHwgKCgpID0+IG51bWJlciksIG1lc3NhZ2U/OiBzdHJpbmcgfCAoKG1pbkxlbmd0aDogbnVtYmVyKSA9PiBzdHJpbmcpKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBWYWxpZGF0b3JzLm1pbkxlbmd0aFZhbGlkYXRvcihtaW5MZW5ndGgsIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBvZiBhIG1heGltdW0gbGVuZ3RoLlxuICAgKiBOb3RlOiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzcGVjaWZ5aW5nIGEgbWVzc2FnZSwgeW91IGhhdmUgdG8gZGVjbGFyZSBhblxuICAgKiBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlIGVsZW1lbnQgaW4gdGhlIEhUTUwgd2l0aCBhIGN1c3RvbSBtZXNzYWdlLlxuICAgKi9cbiAgc3RhdGljIG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlcik6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWF4aW11bSBsZW5ndGguXG4gICAqL1xuICBzdGF0aWMgbWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBvZiBhIG1heGltdW0gbGVuZ3RoLlxuICAgKiBOb3RlOiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzcGVjaWZ5aW5nIGEgbWVzc2FnZSwgeW91IGhhdmUgdG8gZGVjbGFyZSBhblxuICAgKiBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlIGVsZW1lbnQgaW4gdGhlIEhUTUwgd2l0aCBhIGN1c3RvbSBtZXNzYWdlLlxuICAgKi9cbiAgc3RhdGljIG1heExlbmd0aChtYXhMZW5ndGg6ICgpID0+IG51bWJlcik6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWF4aW11bSBsZW5ndGguXG4gICAqL1xuICBzdGF0aWMgbWF4TGVuZ3RoKG1heExlbmd0aDogKCkgPT4gbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBvZiBhIG1heGltdW0gbGVuZ3RoLlxuICAgKi9cbiAgc3RhdGljIG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlciwgbWVzc2FnZUZ1bmM6ICgobWF4TGVuZ3RoOiBudW1iZXIpID0+IHN0cmluZykpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2xzIHRvIGhhdmUgYSB2YWx1ZSBvZiBhIG1heGltdW0gbGVuZ3RoLlxuICAgKi9cbiAgc3RhdGljIG1heExlbmd0aChtYXhMZW5ndGg6ICgpID0+IG51bWJlciwgbWVzc2FnZUZ1bmM6ICgobWF4TGVuZ3RoOiBudW1iZXIpID0+IHN0cmluZykpOiBWYWxpZGF0b3JGbjtcbiAgc3RhdGljIG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlciB8ICgoKSA9PiBudW1iZXIpLCBtZXNzYWdlPzogc3RyaW5nIHwgKChtYXhMZW5ndGg6IG51bWJlcikgPT4gc3RyaW5nKSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gVmFsaWRhdG9ycy5tYXhMZW5ndGhWYWxpZGF0b3IobWF4TGVuZ3RoLCBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBhIGNvbnRyb2wgdG8gbWF0Y2ggYSByZWdleCB0byBpdHMgdmFsdWUuXG4gICAqIE5vdGU6IHdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiB3aXRob3V0IHNwZWNpZnlpbmcgYSBtZXNzYWdlLCB5b3UgaGF2ZSB0byBkZWNsYXJlIGFuXG4gICAqIGFydi12YWxpZGF0aW9uLW1lc3NhZ2UgZWxlbWVudCBpbiB0aGUgSFRNTCB3aXRoIGEgY3VzdG9tIG1lc3NhZ2UuXG4gICAqL1xuICBzdGF0aWMgcGF0dGVybihwYXR0ZXJuOiBzdHJpbmd8UmVnRXhwKTogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBhIGNvbnRyb2wgdG8gbWF0Y2ggYSByZWdleCB0byBpdHMgdmFsdWUuXG4gICAqL1xuICBzdGF0aWMgcGF0dGVybihwYXR0ZXJuOiBzdHJpbmd8UmVnRXhwLCBtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGEgY29udHJvbCB0byBtYXRjaCBhIHJlZ2V4IHRvIGl0cyB2YWx1ZS5cbiAgICogTm90ZTogd2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpdGhvdXQgc3BlY2lmeWluZyBhIG1lc3NhZ2UsIHlvdSBoYXZlIHRvIGRlY2xhcmUgYW5cbiAgICogYXJ2LXZhbGlkYXRpb24tbWVzc2FnZSBlbGVtZW50IGluIHRoZSBIVE1MIHdpdGggYSBjdXN0b20gbWVzc2FnZS5cbiAgICovXG4gIHN0YXRpYyBwYXR0ZXJuKHBhdHRlcm46ICgpID0+IHN0cmluZ3xSZWdFeHApOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGEgY29udHJvbCB0byBtYXRjaCBhIHJlZ2V4IHRvIGl0cyB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyBwYXR0ZXJuKHBhdHRlcm46ICgpID0+IHN0cmluZ3xSZWdFeHAsIG1lc3NhZ2U6IHN0cmluZyk6IFZhbGlkYXRvckZuO1xuICBzdGF0aWMgcGF0dGVybihwYXR0ZXJuOiAoc3RyaW5nfFJlZ0V4cCkgfCAoKCkgPT4gc3RyaW5nfFJlZ0V4cCksIG1lc3NhZ2U/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVyblZhbGlkYXRvcihwYXR0ZXJuLCBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgbm9uLWVtcHR5IHZhbHVlLlxuICAgKiBOb3RlOiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzcGVjaWZ5aW5nIGEgbWVzc2FnZSwgeW91IGhhdmUgdG8gZGVjbGFyZSBhblxuICAgKiBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlIGVsZW1lbnQgaW4gdGhlIEhUTUwgd2l0aCBhIGN1c3RvbSBtZXNzYWdlLlxuICAgKi9cbiAgc3RhdGljIHJlcXVpcmVkKCk6IFZhbGlkYXRvckZuO1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIG5vbi1lbXB0eSB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyByZXF1aXJlZChtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbjtcbiAgc3RhdGljIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWRWYWxpZGF0b3IobWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbCB2YWx1ZSB0byBiZSB0cnVlLlxuICAgKiBOb3RlOiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzcGVjaWZ5aW5nIGEgbWVzc2FnZSwgeW91IGhhdmUgdG8gZGVjbGFyZSBhblxuICAgKiBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlIGVsZW1lbnQgaW4gdGhlIEhUTUwgd2l0aCBhIGN1c3RvbSBtZXNzYWdlLlxuICAgKi9cbiAgc3RhdGljIHJlcXVpcmVkVHJ1ZSgpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGNvbnRyb2wgdmFsdWUgdG8gYmUgdHJ1ZS5cbiAgICovXG4gIHN0YXRpYyByZXF1aXJlZFRydWUobWVzc2FnZTogc3RyaW5nKTogVmFsaWRhdG9yRm47XG4gIHN0YXRpYyByZXF1aXJlZFRydWUobWVzc2FnZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZFRydWVWYWxpZGF0b3IobWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcGVyZm9ybXMgZW1haWwgdmFsaWRhdGlvbi5cbiAgICogTm90ZTogd2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpdGhvdXQgc3BlY2lmeWluZyBhIG1lc3NhZ2UsIHlvdSBoYXZlIHRvIGRlY2xhcmUgYW5cbiAgICogYXJ2LXZhbGlkYXRpb24tbWVzc2FnZSBlbGVtZW50IGluIHRoZSBIVE1MIHdpdGggYSBjdXN0b20gbWVzc2FnZS5cbiAgICovXG4gIHN0YXRpYyBlbWFpbCgpOiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciB0aGF0IHBlcmZvcm1zIGVtYWlsIHZhbGlkYXRpb24uXG4gICAqL1xuICBzdGF0aWMgZW1haWwobWVzc2FnZTogc3RyaW5nKTogVmFsaWRhdG9yRm47XG4gIHN0YXRpYyBlbWFpbChtZXNzYWdlPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBWYWxpZGF0b3JzLmVtYWlsVmFsaWRhdG9yKG1lc3NhZ2UpO1xuICB9XG59XG4iXX0=