@doolehealth/service-lib 0.0.10 → 0.0.12
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/esm2022/lib/services/date.service.mjs +4 -1
- package/esm2022/lib/services/doole.service.mjs +9 -1
- package/fesm2022/doolehealth-service-lib.mjs +11 -0
- package/fesm2022/doolehealth-service-lib.mjs.map +1 -1
- package/lib/services/date.service.d.ts +1 -1
- package/lib/services/doole.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -91,6 +91,9 @@ export class DateService {
|
|
|
91
91
|
else if (lang === 'no') {
|
|
92
92
|
return 'no-NO';
|
|
93
93
|
}
|
|
94
|
+
else if (lang === 'ka') {
|
|
95
|
+
return 'ka-GE';
|
|
96
|
+
}
|
|
94
97
|
else {
|
|
95
98
|
return 'es-ES';
|
|
96
99
|
}
|
|
@@ -533,4 +536,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
533
536
|
providedIn: 'root',
|
|
534
537
|
}]
|
|
535
538
|
}], ctorParameters: () => [{ type: i1.DatePipe }, { type: i2.TranslateService }] });
|
|
536
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9kYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7O0FBSzVCLE1BQU0sT0FBTyxXQUFXO0lBSXRCLFlBQW9CLFFBQWtCLEVBQVMsU0FBMkI7UUFBdEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ3hFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFHTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQztRQUN6QixJQUFHLElBQUksS0FBSyxJQUFJO1lBQ2QsTUFBTSxHQUFHLFdBQVcsQ0FBQTtRQUN0QixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN4QixJQUFHLElBQUksS0FBSyxJQUFJO1lBQ2QsTUFBTSxHQUFHLFVBQVUsQ0FBQTtRQUNyQixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixJQUFHLElBQUksS0FB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Q0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtELGNBQWMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMxQixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQywwQkFBMEI7UUFDMUIseUNBQXlDO1FBQ3pDLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQTlvQlUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlU2VydmljZSB7XG4gIGxvY2FsZTpzdHJpbmc7XG4gIGxhbmd1YWdlOnN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy5nZXRMb2NhbGUoKTtcbiAgfVxuXG5cbiAgcHVibGljIGdldERhdGVGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnREQvTU0vWVkgJztcbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTS9ERC9ZWSAnXG4gICAgcmV0dXJuIGZvcm1hdFxuICB9XG5cbiAgcHVibGljIGdldERhdGVGb3JtYXQyKCl7XG4gICAgbGV0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkL01NL1lZJztcbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTS9kZC9ZWSdcbiAgICByZXR1cm4gZm9ybWF0XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0ZUZvcm1hdDMoKXtcbiAgICBsZXQgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnREQvTU0vWVlZWSc7XG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU0vREQvWVlZWSdcbiAgICByZXR1cm4gZm9ybWF0XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9uZ0Zvcm1hdCgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnZGRkZCwgTU1NIHl5eXknO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NLCBkZGQgeXl5eSc7XG5cbiAgICByZXR1cm4gZm9ybWF0XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRNb250aFZpZXdEYXlIZWFkZXIoZGF0ZTpEYXRlKXtcbiAgICBsZXQgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBkYXlzID0gW1wiRFwiLFwiTFwiLCBcIk1cIiwgXCJYXCIsIFwiSlwiLCBcIlZcIiwgXCJTXCJdXG4gICAgaWYobGFuZyA9PT0gJ2NhJyl7XG4gICAgICBkYXlzID0gW1wiREdcIixcIkRMXCIsIFwiRFRcIiwgXCJEQ1wiLCBcIkRKXCIsIFwiRFZcIiwgXCJEU1wiXVxuICAgIH1lbHNlIGlmKGxhbmcgPT09ICdlbicpXG4gICAgICBkYXlzID0gIFtcIlN1blwiLFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdXG5cbiAgICBsZXQgbnVtID0gZGF0ZS5nZXREYXkoKVxuICAgIHJldHVybiBkYXlzW251bV1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRTZWxlY3RlZERhdGUoZGF0ZSl7XG4gICAgaWYoZGF0ZSl7XG4gICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIHRoaXMuZ2V0Zm9ybWF0U2VsZWN0ZWREYXRlKCkpO1xuICAgICAgLy9jb25zb2xlLmxvZyhcInNlbGVjdGVkIERheVwiLCBkYXkpO1xuICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHB1YmxpYyBnZXRmb3JtYXRTZWxlY3RlZERhdGUoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0VFRUUsIGQgTU1NTSdcbiAgICAvKiBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU1NIGQsIEVFRUUnOyAqL1xuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybWF0U2VsZWN0ZWREYXRlMigpIHtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2QsIE1NTSBZWVlZJ1xuICAgIC8qIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTU0gZCwgRUVFRSc7ICovXG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2NhbGUoKSB7XG4gICAgbGV0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcblxuICAgIGlmIChsYW5nID09PSAnY2EnKSB7XG4gICAgICAgIHJldHVybiAnY2EtRVMnO1xuICAgIH0gZWxzZSBpZiAobGFuZyA9PT0gJ2VuJykge1xuICAgICAgICByZXR1cm4gJ2VuLVVTJztcbiAgICB9IGVsc2UgaWYgKGxhbmcgPT09ICdlcycpIHtcbiAgICAgICAgcmV0dXJuICdlcy1FUyc7XG4gICAgfSBlbHNlIGlmIChsYW5nID09PSAncHQnKSB7XG4gICAgICAgIHJldHVybiAncHQnO1xuICAgIH0gZWxzZSBpZiAobGFuZyA9PT0gJ3N2Jykge1xuICAgICAgICByZXR1cm4gJ3N2LVNFJztcbiAgICB9IGVsc2UgaWYgKGxhbmcgPT09ICdubycpIHtcbiAgICAgICAgcmV0dXJuICduby1OTyc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdlcy1FUyc7XG4gICAgfVxufVxuXG4gIHB1YmxpYyBnZXRTdGFydGluZ0RheVdlZWsoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZGF5ID0gJzEnXG4gICAgaWYobGFuZyA9PSAnZW4nKVxuICAgICAgZGF5ID0gJzAnXG5cbiAgICByZXR1cm4gZGF5O1xuICB9XG5cblxuICBwdWJsaWMgZ2V0U3RhcnRpbmdEYXlNb250aCgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBkYXkgPSAnMSdcbiAgICBpZihsYW5nID09ICdlbicpXG4gICAgICBkYXkgPSAnMCdcblxuICAgIHJldHVybiBkYXk7XG4gIH1cblxuICAnZGQvTU0veSdcblxuICBwdWJsaWMgZGRNTXkoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkL01NL3knXG5cbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTS9kZC95JztcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2hvcnREYXRlRm9ybWF0KCl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdERC9NTS9ZWSdcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NL0REL1lZJztcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgZGRNTXl5eXlGb3JtYXQoZGF0ZSl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkZC9NTS95eXl5JztcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NL2RkL3l5eXknO1xuXG4gICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyBkZE1NeXl5eUZvcm1hdEVTKGRhdGUpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnZGQvTU0veXl5eSc7ICBcblxuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgZGRNTXlGb3JtYXQoZGF0ZSl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkZCBNTU0sIHknO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NIGRkLCB5JztcblxuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIGRkTU15RXVyb0Zvcm1hdChkYXRlKXtcbiAgICBsZXQgZm9ybWF0ID0gJ2RkIE1NTSB5JztcbiAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIGRkTU1NeXl5Zm9ybWF0KGRhdGUpe1xuXG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgICAgbGV0IGZvcm1hdCA9ICdkZCBNTU0geXl5JztcbiAgXG4gICAgICBpZihsYW5nID09PSAnZW4nKVxuICAgICAgICBmb3JtYXQgPSAnTU1NIGRkIHl5eSc7XG4gIFxuICAgICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiAnLSdcbiAgICB9XG4gICBcblxuICB9XG5cbiAgcHVibGljIE1NTU15eXl5Rm9ybWF0KGRhdGUpe1xuXG4gICAgbGV0IGZvcm1hdCA9J01NTU0geXl5eSc7XG5cbiAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIGdldERheU1vbnRoWWVhckZvcm1hdChkYXRlKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0VFRUUsIGQgTU1NTSBZWVlZJztcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTU0sIGQgRUVFRSBZWVlZJztcblxuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkRGF0ZUZvcm1hdChkYXRlOnN0cmluZyl7XG5cbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0VFRUUsIGQgTU1NTSdcblxuICAgLyogIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTU0gZCwgWVlZWSc7ICovXG5cbiAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkRGF0ZUZvcm1hdDIoZGF0ZTpzdHJpbmcpe1xuXG4gIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAvL2xldCBmb3JtYXQgPSAnRUVFRSwgZCBNTU0geXl5eSc7XG5cbiAvLyBpZihsYW5nID09PSAnZW4nIClcbiAgIGxldCBmb3JtYXQgPSAnTU1NLCBkZCB5eXl5JztcblxuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuXG5cblxuICBkZE1NeXl5eUhIbW0oZGF0ZSl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkZC9NTS95eXl5IEhIOm1tJ1xuICAgIGlmKGxhbmcgPT09ICdlbicpXG4gICAgICBmb3JtYXQgPSAgJ01NL2RkL3l5eXkgaGg6bW0gYSc7XG5cbiAgICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKVxuICB9XG5cblxuICBwdWJsaWMgZm9ybWF0RGF0ZUxvbmdGb3JtYXQoZGF0ZT8pe1xuXG4gICAgaWYoZGF0ZSl7XG4gICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIHRoaXMuZ2V0TG9uZ0RhdGVGb3JtYXQoKSk7XG4gICAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHl5eXlNTWRkSEhtbShkYXRlPyl7XG5cbiAgICBpZihkYXRlKXtcbiAgICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgdGhpcy55eXl5TU1kZEhIbW1Gb3JtYXQoKSk7XG4gICAgICAvL2NvbnNvbGUubG9nKFwic2VsZWN0ZWQgRGF5XCIsIGRheSk7XG4gICAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgeXl5eU1NZGRISG1tRm9ybWF0KCl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICd5eXl5LWRkLU1NIEhIOm1tJztcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW0gYSc7XG5cbiAgICByZXR1cm4gZm9ybWF0O1xuXG4gIH1cbiAgcHVibGljIHl5eXlNTWRkVEhIbW1zc1NTU1pGb3JtYXQoZGF0ZT8pe1xuICAgIGNvbnN0IGZlY2hhRm9ybWF0ZWFkYSA9dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3l5eXktTU0tZGRUSEg6bW06c3MuU1NTXFwnWlxcJycpO1xuICAgIHJldHVybiBmZWNoYUZvcm1hdGVhZGE7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9uZ0RhdGVGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gICdFRUVFLCBkIE1NTU0geXl5eSwgSEg6bW0nO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NTSwgZCB5eXl5LCBoaDptbSBhJztcblxuICAgIHJldHVybiBmb3JtYXQ7XG5cbiAgfVxuICBwdWJsaWMgZ2V0RGF0ZXRpbWVDb250cm9sRm9ybWF0KCl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdEIE1NTSBZWVlZIEhIOm1tJ1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NIEQgWVkgaGg6bW0gYSc7XG5cbiAgICAgIHJldHVybiBmb3JtYXQ7XG5cbiAgfVxuXG4gIHB1YmxpYyBnZXREYXlNb250aEZvcm1hdCgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnZCBNTU0nO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NIGQnO1xuXG4gICAgICByZXR1cm4gZm9ybWF0O1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5RG90TW9udGhGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2QuIE1NTSc7XG5cbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU0uIGQnO1xuXG4gICAgICByZXR1cm4gZm9ybWF0O1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRXZWVrKGRhdGU6c3RyaW5nKXtcblxuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnRSBkIE1NTSdcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTSBkLCBFJztcblxuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRXZWVrRnVsbERheShkYXRlOnN0cmluZyl7XG5cbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0VFRSBkIE1NTSdcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTSBkLCBFRUUnO1xuXG4gICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXREYXRlKGRhdGU/KXtcbiAgICBpZihkYXRlKXtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKVxuXG4gICAgICBpZih0aGlzLmlzVG9kYXkoZGF0ZSkpXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAgdGhpcy5nZXRUaW1lRm9ybWF0KCkpXG4gICAgICBlbHNle1xuICAgICAgICBsZXQgZm9ybWF0ID0gdGhpcy5nZXREYXRlRm9ybWF0MigpXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtYXRUaW1lKGRhdGUpe1xuICAgIGlmKGRhdGUpe1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgIHRoaXMuZ2V0VGltZUZvcm1hdDIoKSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0ZU1vbkRheShkYXRlKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ01NTSBkJztcbiAgICAgIGlmKGRhdGUpe1xuICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCAgZm9ybWF0LCBsYW5nKVxuICAgICAgfSAgICBcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG5cbiBjb252ZXJ0TG9jYWxpemVkRGF0ZVRvRW5nbGlzaChkYXRlU3RyaW5nOiBzdHJpbmcpIHtcbiAgICAvLyBNYXBlYSBsb3MgbWVzZXMgYWJyZXZpYWRvcyBlbiBwb3J0dWd1w6lzIGEgc3VzIGVxdWl2YWxlbnRlcyBlbiBpbmdsw6lzXG4gICAgY29uc3QgbW9udGhzTWFwID0ge1xuICAgICAgLy8gTWVzZXMgZW4gZXNwYcOxb2xcbiAgICAgICdlbmUnOiAnSmFuJywgJ2ZlYic6ICdGZWInLCAnbWFyJzogJ01hcicsICdhYnInOiAnQXByJyxcbiAgICAgICdtYXknOiAnTWF5JywgJ2p1bic6ICdKdW4nLCAnanVsJzogJ0p1bCcsICdhZ28nOiAnQXVnJyxcbiAgICAgICdzZXAnOiAnU2VwJywgJ29jdCc6ICdPY3QnLCAnbm92JzogJ05vdicsICdkaWMnOiAnRGVjJyxcbiAgICAgIC8vIE1lc2VzIGVuIHBvcnR1Z3XDqXNcbiAgICAgICdqYW4uJzogJ0phbicsICdmZXYuJzogJ0ZlYicsICdtYXIuJzogJ01hcicsICdhYnIuJzogJ0FwcicsXG4gICAgICAnbWFpLic6ICdNYXknLCAnanVuLic6ICdKdW4nLCAnanVsLic6ICdKdWwnLCAnYWdvLic6ICdBdWcnLFxuICAgICAgJ3NldC4nOiAnU2VwJywgJ291dC4nOiAnT2N0JywgJ25vdi4nOiAnTm92JywgJ2Rlei4nOiAnRGVjJ1xuICB9O1xuXG4gIC8vIEJ1c2NhIHkgcmVlbXBsYXphIGVsIG1lcyBlbiBwb3J0dWd1w6lzIG8gZXNwYcOxb2wgcG9yIGVsIGVxdWl2YWxlbnRlIGVuIGluZ2zDqXNcbiAgZm9yIChjb25zdCBbbG9jYWxpemVkTW9udGgsIGVuTW9udGhdIG9mIE9iamVjdC5lbnRyaWVzKG1vbnRoc01hcCkpIHtcbiAgICAgIGlmIChkYXRlU3RyaW5nLmluY2x1ZGVzKGxvY2FsaXplZE1vbnRoKSkge1xuICAgICAgICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnJlcGxhY2UobG9jYWxpemVkTW9udGgsIGVuTW9udGgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICB9XG5cbiAgICAvLyBEZXZ1ZWx2ZSBlbCBzdHJpbmcgZW4gdW4gZm9ybWF0byB2w6FsaWRvIHBhcmEgZWwgY29uc3RydWN0b3IgZGUgRGF0ZVxuICAgIHJldHVybiBkYXRlU3RyaW5nO1xufVxuXG4gIHRyYW5zZm9ybURhdGV5eXl5TU1kZChkYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICd5eXl5LU1NLWRkJyk7XG4gIH1cbiAgXG5cblxuICBkZE1NeXl5eShkYXRlKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkLU1NLXl5eXknXG4gICAgaWYobGFuZyA9PT0gJ2VuJylcbiAgICAgIGZvcm1hdCA9ICdNTS1kZC15eXl5JztcblxuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpXG4gIH1cblxuICBoaWdoY2hhcnRzRGF0ZXNGb3JubWF0KCl7XG5cbiAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9IHt9O1xuICBpZihsYW5nID09ICdlbicpe1xuICAgICAgLy8gJWI6IFNob3J0IG1vbnRoLCBsaWtlICdKYW4nLCVlIERheSBvZiB0aGUgbW9udGgsIDEgdGhyb3VnaCAzMVxuICAgICAgZm9ybWF0ID0ge1xuICAgICAgICBtaWxsaXNlY29uZDogJyVIOiVNOiVTLiVMJyxcbiAgICAgICAgc2Vjb25kOiAnJWw6JU06JVMgJVAnLFxuICAgICAgICBtaW51dGU6ICclbDolTSAlcCcsXG4gICAgICAgIGhvdXI6ICclbDolTSAlcCcsXG4gICAgICAgIGRheTogJyViLiAlZScsXG4gICAgICAgIHdlZWs6ICclYi4gJWUnLFxuICAgICAgICBtb250aDogJyViIFxcJyV5JyxcbiAgICAgICAgeWVhcjogJyVZJ1xuICAgICAgfVxuICAgIH1lbHNle1xuICAgICAgZm9ybWF0ID0ge1xuICAgICAgICBtaWxsaXNlY29uZDogJyVIOiVNOiVTLiVMJyxcbiAgICAgICAgc2Vjb25kOiAnJUg6JU06JVMnLFxuICAgICAgICBtaW51dGU6ICclSDolTScsXG4gICAgICAgIGhvdXI6ICclSDolTScsXG4gICAgICAgIGRheTogJyVlLiAlYicsXG4gICAgICAgIHdlZWs6ICclZS4gJWInLFxuICAgICAgICBtb250aDogJyViIFxcJyV5JyxcbiAgICAgICAgeWVhcjogJyVZJ1xuICAgIH1cbiAgICB9XG4gICByZXR1cm4gZm9ybWF0O1xuICB9XG5cbiAgeXl5eU1NZGRGb3JtYXQoZGF0ZSl7XG4gICAgLy9jb25zb2xlLmxvZyhcIkRBVEUgZGF0ZTogXCIsIGRhdGUpO1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIC8vY29uc29sZS5sb2coXCJEQVRFIGxhbmc6IFwiLCBsYW5nKTtcbiAgICBsZXQgZm9ybWF0ID0gJ3l5eXktTU0tZGQnO1xuXG4gICAgaWYobGFuZyA9PSAnZW4nKVxuICAgICAgZm9ybWF0ID0gJ3l5eXktZGQtTU0nO1xuXG4gICAgLy9jb25zb2xlLmxvZyhcIkRBVEUgZm9ybWF0OiBcIiwgZm9ybWF0KTtcblxuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcblxuICAgIC8vY29uc29sZS5sb2coXCJEQVRFIGRheTogXCIsIGRheSk7XG5cbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSlcbiAgfVxuXG4gIGNvbnZlcnQxMnRvMjRmb3JtYXQodGltZSl7XG5cbiAgICAvL2NvbnNvbGUubG9nKFwiVElNRSAxMnRvMjQ6IFwiLHRpbWUpO1xuICAgIHZhciBob3VycyA9IE51bWJlcih0aW1lLm1hdGNoKC9eKFxcZCspLylbMV0pO1xuICAgIHZhciBtaW51dGVzID0gTnVtYmVyKHRpbWUubWF0Y2goLzooXFxkKykvKVsxXSk7XG4gICAgdmFyIEFNUE0gPSB0aW1lLm1hdGNoKC9cXHMoLiopJC8pWzFdO1xuICAgIGlmKEFNUE0gPT0gXCJQTVwiICYmIGhvdXJzPDEyKSBob3VycyA9IGhvdXJzKzEyO1xuICAgIGlmKEFNUE0gPT0gXCJBTVwiICYmIGhvdXJzPT0xMikgaG91cnMgPSBob3Vycy0xMjtcbiAgICB2YXIgc0hvdXJzID0gaG91cnMudG9TdHJpbmcoKTtcbiAgICB2YXIgc01pbnV0ZXMgPSBtaW51dGVzLnRvU3RyaW5nKCk7XG4gICAgaWYoaG91cnM8MTApIHNIb3VycyA9IFwiMFwiICsgc0hvdXJzO1xuICAgIGlmKG1pbnV0ZXM8MTApIHNNaW51dGVzID0gXCIwXCIgKyBzTWludXRlcztcblxuICAgIGxldCBoID0gc0hvdXJzICsgXCI6XCIgKyBzTWludXRlcztcblxuICAgIC8vY29uc29sZS5sb2coXCJIT1VSUzogXCIsaCk7XG4gICAgcmV0dXJuIGg7XG4gIH1cblxuICBmb3JtYXQyNGgodGltZSkge1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGlmKGxhbmcgPT09ICdlbicpe1xuICAgICAgLy8gQ2hlY2sgY29ycmVjdCB0aW1lIGZvcm1hdCBhbmQgc3BsaXQgaW50byBjb21wb25lbnRzXG4gICAgdGltZSA9IHRpbWUudG9TdHJpbmcgKCkubWF0Y2ggKC9eKFswMV1cXGR8MlswLTNdKSg6KShbMC01XVxcZCkoOlswLTVdXFxkKT8kLykgfHwgW3RpbWVdO1xuXG4gICAgaWYgKHRpbWUubGVuZ3RoID4gMSkgeyAvLyBJZiB0aW1lIGZvcm1hdCBjb3JyZWN0XG4gICAgICB0aW1lID0gdGltZS5zbGljZSAoMSk7ICAvLyBSZW1vdmUgZnVsbCBzdHJpbmcgbWF0Y2ggdmFsdWVcbiAgICAgIHRpbWVbNV0gPSArdGltZVswXSA8IDEyID8gJyBBTScgOiAnIFBNJzsgLy8gU2V0IEFNL1BNXG4gICAgICB0aW1lWzBdID0gK3RpbWVbMF0gJSAxMiB8fCAxMjsgLy8gQWRqdXN0IGhvdXJzXG4gICAgfVxuICAgIHJldHVybiB0aW1lLmpvaW4gKCcnKTsgLy8gcmV0dXJuIGFkanVzdGVkIHRpbWUgb3Igb3JpZ2luYWwgc3RyaW5nXG4gICAgfVxuXG4gICAgLy9jb25zb2xlLmxvZyh0aW1lKTtcbiAgICBcbiAgICByZXR1cm4gdGltZTtcblxuICB9XG5cbiAgaXNBbWVyaWNhbkZvcm1hdCgpe1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZyA9PT0gJ2VuJztcbiAgfVxuXG4gIGdldFRpbWVGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gICdISDptbSdcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gICdoaDptbSBhJztcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBnZXRUaW1lRm9ybWF0Migpe1xuICAgIGxldCBmb3JtYXQgPSAgJ0hIOm1tJ1xuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBpc1RvZGF5KG1EYXRlOiBEYXRlKXtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKClcbiAgICBpZihkYXRlLmdldERhdGUoKSA9PT0gbURhdGUuZ2V0RGF0ZSgpICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbURhdGUuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IG1EYXRlLmdldEZ1bGxZZWFyKCkpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQsIGxvY2FsZT8pIHtcbiAgICBjb25zdCBkYXRlUGlwZTogRGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUobG9jYWxlIHx8IHRoaXMuZ2V0TG9jYWxlKCkpOyAgLy8gVXNhIGxvY2FsZSBzaSBzZSBwYXNhLCBvIHBvciBkZWZlY3RvIGEgZ2V0TG9jYWxlKClcbiAgICByZXR1cm4gZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGZvcm1hdCk7XG4gIH1cblxuICBnZXRDYWxlbmRhckRheShlcG9jaDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIWVwb2NoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbGV0IHRpbWVTdHJpbmcgPSAnaDptbSBBJztcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2FnZW5kYS50b2RheScpO1xuICAgIGNvbnN0IHllc3RlcmRheSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2FnZW5kYS55ZXN0ZXJkYXknKTtcbiAgICByZXR1cm4gbW9tZW50KGVwb2NoKS5jYWxlbmRhcihudWxsLCB7XG4gICAgICBzYW1lRGF5OiBgWyR7dG9kYXl9XSBgICsgdGltZVN0cmluZyxcbiAgICAgIGxhc3REYXk6IGBbJHt5ZXN0ZXJkYXl9XSBgICsgdGltZVN0cmluZyxcbiAgICAgIGxhc3RXZWVrIDogJ0REL01NL1lZICcgKyB0aW1lU3RyaW5nLFxuICAgICAgc2FtZUVsc2U6ICdERC9NTS9ZWSAnICsgdGltZVN0cmluZyxcbiAgICAgIG5leHREYXkgOiAnREQvTU0vWVkgJyArIHRpbWVTdHJpbmcsXG4gICAgfSk7XG4gIH1cblxuICBnZXRDYWxlbmRhckRheTIoZXBvY2g6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFlcG9jaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCB0aW1lU3RyaW5nID0gdGhpcy5nZXRUaW1lRm9ybWF0KCk7XG4gICAgbGV0IGRhdGVTdHJpbmcgPSB0aGlzLmdldFNob3J0RGF0ZUZvcm1hdCgpO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnRvZGF5Jyk7XG4gICAgY29uc3QgeWVzdGVyZGF5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnllc3RlcmRheScpO1xuICAgIHJldHVybiBtb21lbnQoZXBvY2gpLmNhbGVuZGFyKG51bGwsIHtcbiAgICAgIHNhbWVEYXk6IGBbJHt0b2RheX1dICBgICArIHRpbWVTdHJpbmcsXG4gICAgICBsYXN0RGF5OiBgWyR7eWVzdGVyZGF5fV0gIGAgKyB0aW1lU3RyaW5nLFxuICAgICAgc2FtZUVsc2U6IGRhdGVTdHJpbmcgKyAnICcgKyB0aW1lU3RyaW5nLFxuICAgICAgbGFzdFdlZWsgOiBkYXRlU3RyaW5nICsgJyAnICsgdGltZVN0cmluZyxcbiAgICAgIG5leHREYXkgOiBkYXRlU3RyaW5nICsgJyAnICsgdGltZVN0cmluZ1xuICAgIH0pO1xuICB9XG5cblxuICBnZXRDYWxlbmRhckRheVRpbWUoZXBvY2g6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFlcG9jaCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbGV0IHRpbWVTdHJpbmcgPSB0aGlzLmdldFRpbWVGb3JtYXQoKTtcbiAgICBsZXQgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnRvZGF5Jyk7XG4gICAgY29uc3QgeWVzdGVyZGF5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnllc3RlcmRheScpO1xuICAgIGNvbnN0IHRvID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnRvJyk7XG5cbiAgICBjb25zdCBtID0gbW9tZW50XG4gICAgbS5sb2NhbGUobGFuZylcblxuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSAnTU1NLCBkZGQgREQgWVlZWSc7XG5cbiAgICByZXR1cm4gbShlcG9jaCkuY2FsZW5kYXIobnVsbCwge1xuICAgICAgc2FtZURheTogYFske3RvZGF5fV0gIGAgICsgYFske3RvfV0gIGAgKyB0aW1lU3RyaW5nLFxuICAgICAgbGFzdERheTogYFske3llc3RlcmRheX1dICBgICsgYFske3RvfV0gIGAgKyB0aW1lU3RyaW5nLFxuICAgICAgc2FtZUVsc2U6IGRhdGVTdHJpbmcgKyAnICcgKyBgWyR7dG99XSAgYCArIHRpbWVTdHJpbmcsXG4gICAgICBsYXN0V2VlazogZGF0ZVN0cmluZyArICcgJyArIGBbJHt0b31dICBgICsgdGltZVN0cmluZyxcbiAgICAgIG5leHREYXkgOiBkYXRlU3RyaW5nICsgJyAnICsgYFske3RvfV0gIGAgKyB0aW1lU3RyaW5nXG4gICAgfSlcbn1cblxuICAvLyByZXR1cm4gZXBvY2ggc3RyaW5nIGFzIHNwZWNpZmllZCBmb3JtYXRcbiAgZm9ybWF0RXBvY2goZXBvY2gpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENhbGVuZGFyRGF5KGVwb2NoKTtcbiAgfVxuXG4gIGdldFRvZGF5KCl7XG4gICAgY29uc3QgdHpvZmZzZXQgPSAobmV3IERhdGUoKSkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwOyAvLyBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzXG4gICAgY29uc3QgbG9jYWxJU09UaW1lID0gKG5ldyBEYXRlKERhdGUubm93KCkgLSB0em9mZnNldCkpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgLTEpO1xuICAgIGxldCBkYXRlID0gbG9jYWxJU09UaW1lLy8gdGhpcy5kYXRlU2VydmljZS5zZWxlY3RlZERhdGVGb3JtYXQobG9jYWxJU09UaW1lKTtcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgZ2V0Q3VycmVudFRpbWUoKXtcbiAgICBjb25zdCB0em9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7IC8vIG9mZnNldCBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCBsb2NhbElTT1RpbWUgPSAobmV3IERhdGUoRGF0ZS5ub3coKSAtIHR6b2Zmc2V0KSkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGRhdGUgPSBsb2NhbElTT1RpbWUvLyB0aGlzLmRhdGVTZXJ2aWNlLnNlbGVjdGVkRGF0ZUZvcm1hdChsb2NhbElTT1RpbWUpO1xuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gdHpvZmZzZXQpLmdldFRpbWUoKS50b0xvY2FsZVN0cmluZygpO1xuICB9XG5cbiAgcHVibGljIHl5eXlNTWRkSEhtbTEoZGF0ZT8pe1xuXG4gICAgaWYoZGF0ZSl7XG4gICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsICd5eXl5LU1NLWRkIEhIOm1tJyk7XG4gICAgICAvL2NvbnNvbGUubG9nKFwic2VsZWN0ZWQgRGF5XCIsIGRheSk7XG4gICAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHl5eXlNTWRkSEhtbXNzKGRhdGU/KXtcbiAgICBpZihkYXRlKXtcbiAgICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnKTtcbiAgICAgIC8vY29uc29sZS5sb2coXCJzZWxlY3RlZCBEYXlcIiwgZGF5KTtcbiAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuXG5cblxuICBmb3JtYXREYXRlSG91cihkKXtcbiAgICB2YXIgYXV4ZGF0ZSA9IGQuc3BsaXQoJ1QnKVxuICAgIGxldCBkYXRlID0gbmV3IERhdGUoYXV4ZGF0ZVswXSk7XG4gICAgLy8gZCA9IGQucmVwbGFjZSgnICcsICdUJylcbiAgICAvLyBsZXQgZGF0ZTAgPSBuZXcgRGF0ZShkKS50b0lTT1N0cmluZygpO1xuICAgIC8vIGxldCBkYXRlID0gbmV3IERhdGUoZGF0ZTApO1xuICAgIGRhdGUuc2V0SG91cnMoMjMpO1xuICAgIGRhdGUuc2V0TWludXRlcyg1OSk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuXG59XG4iXX0=
|
|
539
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9kYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7O0FBSzVCLE1BQU0sT0FBTyxXQUFXO0lBSXRCLFlBQW9CLFFBQWtCLEVBQVMsU0FBMkI7UUFBdEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ3hFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFHTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQztRQUN6QixJQUFHLElBQUksS0FBSyxJQUFJO1lBQ2QsTUFBTSxHQUFHLFdBQVcsQ0FBQTtRQUN0QixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN4QixJQUFHLElBQUksS0FBSyxJQUFJO1lBQ2QsTUFBTSxHQUFHLFVBQVUsQ0FBQTtRQUNyQixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixJQUFHLElBQUksS0FB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LENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxjQUFjLENBQUMsQ0FBQztRQUNkLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsMEJBQTBCO1FBQzFCLHlDQUF5QztRQUN6Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FocEJVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVNlcnZpY2Uge1xuICBsb2NhbGU6c3RyaW5nO1xuICBsYW5ndWFnZTpzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuZ2V0TG9jYWxlKCk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXREYXRlRm9ybWF0KCl7XG4gICAgbGV0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0REL01NL1lZICc7XG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU0vREQvWVkgJ1xuICAgIHJldHVybiBmb3JtYXRcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlRm9ybWF0Migpe1xuICAgIGxldCBsYW5nID0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkZC9NTS9ZWSc7XG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU0vZGQvWVknXG4gICAgcmV0dXJuIGZvcm1hdFxuICB9XG5cbiAgcHVibGljIGdldERhdGVGb3JtYXQzKCl7XG4gICAgbGV0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0REL01NL1lZWVknO1xuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NL0REL1lZWVknXG4gICAgcmV0dXJuIGZvcm1hdFxuICB9XG5cbiAgcHVibGljIGdldExvbmdGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkZGQsIE1NTSB5eXl5JztcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTSwgZGRkIHl5eXknO1xuXG4gICAgcmV0dXJuIGZvcm1hdFxuICB9XG5cblxuICBwdWJsaWMgZ2V0TW9udGhWaWV3RGF5SGVhZGVyKGRhdGU6RGF0ZSl7XG4gICAgbGV0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZGF5cyA9IFtcIkRcIixcIkxcIiwgXCJNXCIsIFwiWFwiLCBcIkpcIiwgXCJWXCIsIFwiU1wiXVxuICAgIGlmKGxhbmcgPT09ICdjYScpe1xuICAgICAgZGF5cyA9IFtcIkRHXCIsXCJETFwiLCBcIkRUXCIsIFwiRENcIiwgXCJESlwiLCBcIkRWXCIsIFwiRFNcIl1cbiAgICB9ZWxzZSBpZihsYW5nID09PSAnZW4nKVxuICAgICAgZGF5cyA9ICBbXCJTdW5cIixcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXVxuXG4gICAgbGV0IG51bSA9IGRhdGUuZ2V0RGF5KClcbiAgICByZXR1cm4gZGF5c1tudW1dXG4gIH1cblxuICBwdWJsaWMgZm9ybWF0U2VsZWN0ZWREYXRlKGRhdGUpe1xuICAgIGlmKGRhdGUpe1xuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCB0aGlzLmdldGZvcm1hdFNlbGVjdGVkRGF0ZSgpKTtcbiAgICAgIC8vY29uc29sZS5sb2coXCJzZWxlY3RlZCBEYXlcIiwgZGF5KTtcbiAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBwdWJsaWMgZ2V0Zm9ybWF0U2VsZWN0ZWREYXRlKCl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdFRUVFLCBkIE1NTU0nXG4gICAgLyogaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NTSBkLCBFRUVFJzsgKi9cbiAgICByZXR1cm4gZm9ybWF0O1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdFNlbGVjdGVkRGF0ZTIoKSB7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkLCBNTU0gWVlZWSdcbiAgICAvKiBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU1NIGQsIEVFRUUnOyAqL1xuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9jYWxlKCkge1xuICAgIGxldCBsYW5nID0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG5cbiAgICBpZiAobGFuZyA9PT0gJ2NhJykge1xuICAgICAgICByZXR1cm4gJ2NhLUVTJztcbiAgICB9IGVsc2UgaWYgKGxhbmcgPT09ICdlbicpIHtcbiAgICAgICAgcmV0dXJuICdlbi1VUyc7XG4gICAgfSBlbHNlIGlmIChsYW5nID09PSAnZXMnKSB7XG4gICAgICAgIHJldHVybiAnZXMtRVMnO1xuICAgIH0gZWxzZSBpZiAobGFuZyA9PT0gJ3B0Jykge1xuICAgICAgICByZXR1cm4gJ3B0JztcbiAgICB9IGVsc2UgaWYgKGxhbmcgPT09ICdzdicpIHtcbiAgICAgICAgcmV0dXJuICdzdi1TRSc7XG4gICAgfSBlbHNlIGlmIChsYW5nID09PSAnbm8nKSB7XG4gICAgICAgIHJldHVybiAnbm8tTk8nO1xuICAgIH0gZWxzZSBpZiAobGFuZyA9PT0gJ2thJykge1xuICAgICAgICByZXR1cm4gJ2thLUdFJztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2VzLUVTJztcbiAgICB9XG59XG5cbiAgcHVibGljIGdldFN0YXJ0aW5nRGF5V2Vlaygpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBkYXkgPSAnMSdcbiAgICBpZihsYW5nID09ICdlbicpXG4gICAgICBkYXkgPSAnMCdcblxuICAgIHJldHVybiBkYXk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRTdGFydGluZ0RheU1vbnRoKCl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGRheSA9ICcxJ1xuICAgIGlmKGxhbmcgPT0gJ2VuJylcbiAgICAgIGRheSA9ICcwJ1xuXG4gICAgcmV0dXJuIGRheTtcbiAgfVxuXG4gICdkZC9NTS95J1xuXG4gIHB1YmxpYyBkZE1NeSgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnZGQvTU0veSdcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NL2RkL3knO1xuXG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTaG9ydERhdGVGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0REL01NL1lZJ1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU0vREQvWVknO1xuXG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIHB1YmxpYyBkZE1NeXl5eUZvcm1hdChkYXRlKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkL01NL3l5eXknO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU0vZGQveXl5eSc7XG5cbiAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIGRkTU15eXl5Rm9ybWF0RVMoZGF0ZSl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkZC9NTS95eXl5JzsgIFxuXG4gICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyBkZE1NeUZvcm1hdChkYXRlKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkIE1NTSwgeSc7XG5cbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU0gZGQsIHknO1xuXG4gICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgZGRNTXlFdXJvRm9ybWF0KGRhdGUpe1xuICAgIGxldCBmb3JtYXQgPSAnZGQgTU1NIHknO1xuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgZGRNTU15eXlmb3JtYXQoZGF0ZSl7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgICBsZXQgZm9ybWF0ID0gJ2RkIE1NTSB5eXknO1xuICBcbiAgICAgIGlmKGxhbmcgPT09ICdlbicpXG4gICAgICAgIGZvcm1hdCA9ICdNTU0gZGQgeXl5JztcbiAgXG4gICAgICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuICctJ1xuICAgIH1cbiAgIFxuXG4gIH1cblxuICBwdWJsaWMgTU1NTXl5eXlGb3JtYXQoZGF0ZSl7XG5cbiAgICBsZXQgZm9ybWF0ID0nTU1NTSB5eXl5JztcblxuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5TW9udGhZZWFyRm9ybWF0KGRhdGUpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnRUVFRSwgZCBNTU1NIFlZWVknO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NTSwgZCBFRUVFIFlZWVknO1xuXG4gICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWREYXRlRm9ybWF0KGRhdGU6c3RyaW5nKXtcblxuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnRUVFRSwgZCBNTU1NJ1xuXG4gICAvKiAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NTSBkLCBZWVlZJzsgKi9cblxuICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgZm9ybWF0KTtcbiAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWREYXRlRm9ybWF0MihkYXRlOnN0cmluZyl7XG5cbiAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gIC8vbGV0IGZvcm1hdCA9ICdFRUVFLCBkIE1NTSB5eXl5JztcblxuIC8vIGlmKGxhbmcgPT09ICdlbicgKVxuICAgbGV0IGZvcm1hdCA9ICdNTU0sIGRkIHl5eXknO1xuXG4gICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgfVxuXG5cblxuXG4gIGRkTU15eXl5SEhtbShkYXRlKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ2RkL01NL3l5eXkgSEg6bW0nXG4gICAgaWYobGFuZyA9PT0gJ2VuJylcbiAgICAgIGZvcm1hdCA9ICAnTU0vZGQveXl5eSBoaDptbSBhJztcblxuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpXG4gIH1cblxuXG4gIHB1YmxpYyBmb3JtYXREYXRlTG9uZ0Zvcm1hdChkYXRlPyl7XG5cbiAgICBpZihkYXRlKXtcbiAgICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgdGhpcy5nZXRMb25nRGF0ZUZvcm1hdCgpKTtcbiAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgeXl5eU1NZGRISG1tKGRhdGU/KXtcblxuICAgIGlmKGRhdGUpe1xuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCB0aGlzLnl5eXlNTWRkSEhtbUZvcm1hdCgpKTtcbiAgICAgIC8vY29uc29sZS5sb2coXCJzZWxlY3RlZCBEYXlcIiwgZGF5KTtcbiAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB5eXl5TU1kZEhIbW1Gb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ3l5eXktZGQtTU0gSEg6bW0nO1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbSBhJztcblxuICAgIHJldHVybiBmb3JtYXQ7XG5cbiAgfVxuICBwdWJsaWMgeXl5eU1NZGRUSEhtbXNzU1NTWkZvcm1hdChkYXRlPyl7XG4gICAgY29uc3QgZmVjaGFGb3JtYXRlYWRhID10aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAneXl5eS1NTS1kZFRISDptbTpzcy5TU1NcXCdaXFwnJyk7XG4gICAgcmV0dXJuIGZlY2hhRm9ybWF0ZWFkYTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb25nRGF0ZUZvcm1hdCgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAgJ0VFRUUsIGQgTU1NTSB5eXl5LCBISDptbSc7XG5cbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU1NLCBkIHl5eXksIGhoOm1tIGEnO1xuXG4gICAgcmV0dXJuIGZvcm1hdDtcblxuICB9XG4gIHB1YmxpYyBnZXREYXRldGltZUNvbnRyb2xGb3JtYXQoKXtcbiAgICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0gJ0QgTU1NIFlZWVkgSEg6bW0nXG5cbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU0gRCBZWSBoaDptbSBhJztcblxuICAgICAgcmV0dXJuIGZvcm1hdDtcblxuICB9XG5cbiAgcHVibGljIGdldERheU1vbnRoRm9ybWF0KCl7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdkIE1NTSc7XG5cbiAgICBpZihsYW5nID09PSAnZW4nIClcbiAgICAgIGZvcm1hdCA9ICdNTU0gZCc7XG5cbiAgICAgIHJldHVybiBmb3JtYXQ7XG5cbiAgfVxuXG4gIHB1YmxpYyBnZXREYXlEb3RNb250aEZvcm1hdCgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnZC4gTU1NJztcblxuICAgIGlmKGxhbmcgPT09ICdlbicgKVxuICAgICAgZm9ybWF0ID0gJ01NTS4gZCc7XG5cbiAgICAgIHJldHVybiBmb3JtYXQ7XG5cbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFdlZWsoZGF0ZTpzdHJpbmcpe1xuXG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgbGV0IGZvcm1hdCA9ICdFIGQgTU1NJ1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NIGQsIEUnO1xuXG4gICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFdlZWtGdWxsRGF5KGRhdGU6c3RyaW5nKXtcblxuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnRUVFIGQgTU1NJ1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAnTU1NIGQsIEVFRSc7XG5cbiAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdERhdGUoZGF0ZT8pe1xuICAgIGlmKGRhdGUpe1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG5cbiAgICAgIGlmKHRoaXMuaXNUb2RheShkYXRlKSlcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICB0aGlzLmdldFRpbWVGb3JtYXQoKSlcbiAgICAgIGVsc2V7XG4gICAgICAgIGxldCBmb3JtYXQgPSB0aGlzLmdldERhdGVGb3JtYXQyKClcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdFRpbWUoZGF0ZSl7XG4gICAgaWYoZGF0ZSl7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAgdGhpcy5nZXRUaW1lRm9ybWF0MigpKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlTW9uRGF5KGRhdGUpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnTU1NIGQnO1xuICAgICAgaWYoZGF0ZSl7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsICBmb3JtYXQsIGxhbmcpXG4gICAgICB9ICAgIFxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cblxuIGNvbnZlcnRMb2NhbGl6ZWREYXRlVG9FbmdsaXNoKGRhdGVTdHJpbmc6IHN0cmluZykge1xuICAgIC8vIE1hcGVhIGxvcyBtZXNlcyBhYnJldmlhZG9zIGVuIHBvcnR1Z3XDqXMgYSBzdXMgZXF1aXZhbGVudGVzIGVuIGluZ2zDqXNcbiAgICBjb25zdCBtb250aHNNYXAgPSB7XG4gICAgICAvLyBNZXNlcyBlbiBlc3Bhw7FvbFxuICAgICAgJ2VuZSc6ICdKYW4nLCAnZmViJzogJ0ZlYicsICdtYXInOiAnTWFyJywgJ2Ficic6ICdBcHInLFxuICAgICAgJ21heSc6ICdNYXknLCAnanVuJzogJ0p1bicsICdqdWwnOiAnSnVsJywgJ2Fnbyc6ICdBdWcnLFxuICAgICAgJ3NlcCc6ICdTZXAnLCAnb2N0JzogJ09jdCcsICdub3YnOiAnTm92JywgJ2RpYyc6ICdEZWMnLFxuICAgICAgLy8gTWVzZXMgZW4gcG9ydHVndcOpc1xuICAgICAgJ2phbi4nOiAnSmFuJywgJ2Zldi4nOiAnRmViJywgJ21hci4nOiAnTWFyJywgJ2Fici4nOiAnQXByJyxcbiAgICAgICdtYWkuJzogJ01heScsICdqdW4uJzogJ0p1bicsICdqdWwuJzogJ0p1bCcsICdhZ28uJzogJ0F1ZycsXG4gICAgICAnc2V0Lic6ICdTZXAnLCAnb3V0Lic6ICdPY3QnLCAnbm92Lic6ICdOb3YnLCAnZGV6Lic6ICdEZWMnXG4gIH07XG5cbiAgLy8gQnVzY2EgeSByZWVtcGxhemEgZWwgbWVzIGVuIHBvcnR1Z3XDqXMgbyBlc3Bhw7FvbCBwb3IgZWwgZXF1aXZhbGVudGUgZW4gaW5nbMOpc1xuICBmb3IgKGNvbnN0IFtsb2NhbGl6ZWRNb250aCwgZW5Nb250aF0gb2YgT2JqZWN0LmVudHJpZXMobW9udGhzTWFwKSkge1xuICAgICAgaWYgKGRhdGVTdHJpbmcuaW5jbHVkZXMobG9jYWxpemVkTW9udGgpKSB7XG4gICAgICAgICAgZGF0ZVN0cmluZyA9IGRhdGVTdHJpbmcucmVwbGFjZShsb2NhbGl6ZWRNb250aCwgZW5Nb250aCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gIH1cblxuICAgIC8vIERldnVlbHZlIGVsIHN0cmluZyBlbiB1biBmb3JtYXRvIHbDoWxpZG8gcGFyYSBlbCBjb25zdHJ1Y3RvciBkZSBEYXRlXG4gICAgcmV0dXJuIGRhdGVTdHJpbmc7XG59XG5cbiAgdHJhbnNmb3JtRGF0ZXl5eXlNTWRkKGRhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3l5eXktTU0tZGQnKTtcbiAgfVxuICBcblxuXG4gIGRkTU15eXl5KGRhdGUpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAnZGQtTU0teXl5eSdcbiAgICBpZihsYW5nID09PSAnZW4nKVxuICAgICAgZm9ybWF0ID0gJ01NLWRkLXl5eXknO1xuXG4gICAgICBsZXQgZGF5ID0gdGhpcy50cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCk7XG4gICAgICByZXR1cm4gZGF5WzBdLnRvVXBwZXJDYXNlKCkgKyBkYXkuc2xpY2UoMSlcbiAgfVxuXG4gIGhpZ2hjaGFydHNEYXRlc0Zvcm5tYXQoKXtcblxuICBsZXQgbGFuZyA9ICB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZztcbiAgICBsZXQgZm9ybWF0ID0ge307XG4gIGlmKGxhbmcgPT0gJ2VuJyl7XG4gICAgICAvLyAlYjogU2hvcnQgbW9udGgsIGxpa2UgJ0phbicsJWUgRGF5IG9mIHRoZSBtb250aCwgMSB0aHJvdWdoIDMxXG4gICAgICBmb3JtYXQgPSB7XG4gICAgICAgIG1pbGxpc2Vjb25kOiAnJUg6JU06JVMuJUwnLFxuICAgICAgICBzZWNvbmQ6ICclbDolTTolUyAlUCcsXG4gICAgICAgIG1pbnV0ZTogJyVsOiVNICVwJyxcbiAgICAgICAgaG91cjogJyVsOiVNICVwJyxcbiAgICAgICAgZGF5OiAnJWIuICVlJyxcbiAgICAgICAgd2VlazogJyViLiAlZScsXG4gICAgICAgIG1vbnRoOiAnJWIgXFwnJXknLFxuICAgICAgICB5ZWFyOiAnJVknXG4gICAgICB9XG4gICAgfWVsc2V7XG4gICAgICBmb3JtYXQgPSB7XG4gICAgICAgIG1pbGxpc2Vjb25kOiAnJUg6JU06JVMuJUwnLFxuICAgICAgICBzZWNvbmQ6ICclSDolTTolUycsXG4gICAgICAgIG1pbnV0ZTogJyVIOiVNJyxcbiAgICAgICAgaG91cjogJyVIOiVNJyxcbiAgICAgICAgZGF5OiAnJWUuICViJyxcbiAgICAgICAgd2VlazogJyVlLiAlYicsXG4gICAgICAgIG1vbnRoOiAnJWIgXFwnJXknLFxuICAgICAgICB5ZWFyOiAnJVknXG4gICAgfVxuICAgIH1cbiAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICB5eXl5TU1kZEZvcm1hdChkYXRlKXtcbiAgICAvL2NvbnNvbGUubG9nKFwiREFURSBkYXRlOiBcIiwgZGF0ZSk7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgLy9jb25zb2xlLmxvZyhcIkRBVEUgbGFuZzogXCIsIGxhbmcpO1xuICAgIGxldCBmb3JtYXQgPSAneXl5eS1NTS1kZCc7XG5cbiAgICBpZihsYW5nID09ICdlbicpXG4gICAgICBmb3JtYXQgPSAneXl5eS1kZC1NTSc7XG5cbiAgICAvL2NvbnNvbGUubG9nKFwiREFURSBmb3JtYXQ6IFwiLCBmb3JtYXQpO1xuXG4gICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCBmb3JtYXQpO1xuXG4gICAgLy9jb25zb2xlLmxvZyhcIkRBVEUgZGF5OiBcIiwgZGF5KTtcblxuICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKVxuICB9XG5cbiAgY29udmVydDEydG8yNGZvcm1hdCh0aW1lKXtcblxuICAgIC8vY29uc29sZS5sb2coXCJUSU1FIDEydG8yNDogXCIsdGltZSk7XG4gICAgdmFyIGhvdXJzID0gTnVtYmVyKHRpbWUubWF0Y2goL14oXFxkKykvKVsxXSk7XG4gICAgdmFyIG1pbnV0ZXMgPSBOdW1iZXIodGltZS5tYXRjaCgvOihcXGQrKS8pWzFdKTtcbiAgICB2YXIgQU1QTSA9IHRpbWUubWF0Y2goL1xccyguKikkLylbMV07XG4gICAgaWYoQU1QTSA9PSBcIlBNXCIgJiYgaG91cnM8MTIpIGhvdXJzID0gaG91cnMrMTI7XG4gICAgaWYoQU1QTSA9PSBcIkFNXCIgJiYgaG91cnM9PTEyKSBob3VycyA9IGhvdXJzLTEyO1xuICAgIHZhciBzSG91cnMgPSBob3Vycy50b1N0cmluZygpO1xuICAgIHZhciBzTWludXRlcyA9IG1pbnV0ZXMudG9TdHJpbmcoKTtcbiAgICBpZihob3VyczwxMCkgc0hvdXJzID0gXCIwXCIgKyBzSG91cnM7XG4gICAgaWYobWludXRlczwxMCkgc01pbnV0ZXMgPSBcIjBcIiArIHNNaW51dGVzO1xuXG4gICAgbGV0IGggPSBzSG91cnMgKyBcIjpcIiArIHNNaW51dGVzO1xuXG4gICAgLy9jb25zb2xlLmxvZyhcIkhPVVJTOiBcIixoKTtcbiAgICByZXR1cm4gaDtcbiAgfVxuXG4gIGZvcm1hdDI0aCh0aW1lKSB7XG4gICAgbGV0IGxhbmcgPSAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgaWYobGFuZyA9PT0gJ2VuJyl7XG4gICAgICAvLyBDaGVjayBjb3JyZWN0IHRpbWUgZm9ybWF0IGFuZCBzcGxpdCBpbnRvIGNvbXBvbmVudHNcbiAgICB0aW1lID0gdGltZS50b1N0cmluZyAoKS5tYXRjaCAoL14oWzAxXVxcZHwyWzAtM10pKDopKFswLTVdXFxkKSg6WzAtNV1cXGQpPyQvKSB8fCBbdGltZV07XG5cbiAgICBpZiAodGltZS5sZW5ndGggPiAxKSB7IC8vIElmIHRpbWUgZm9ybWF0IGNvcnJlY3RcbiAgICAgIHRpbWUgPSB0aW1lLnNsaWNlICgxKTsgIC8vIFJlbW92ZSBmdWxsIHN0cmluZyBtYXRjaCB2YWx1ZVxuICAgICAgdGltZVs1XSA9ICt0aW1lWzBdIDwgMTIgPyAnIEFNJyA6ICcgUE0nOyAvLyBTZXQgQU0vUE1cbiAgICAgIHRpbWVbMF0gPSArdGltZVswXSAlIDEyIHx8IDEyOyAvLyBBZGp1c3QgaG91cnNcbiAgICB9XG4gICAgcmV0dXJuIHRpbWUuam9pbiAoJycpOyAvLyByZXR1cm4gYWRqdXN0ZWQgdGltZSBvciBvcmlnaW5hbCBzdHJpbmdcbiAgICB9XG5cbiAgICAvL2NvbnNvbGUubG9nKHRpbWUpO1xuICAgIFxuICAgIHJldHVybiB0aW1lO1xuXG4gIH1cblxuICBpc0FtZXJpY2FuRm9ybWF0KCl7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID09PSAnZW4nO1xuICB9XG5cbiAgZ2V0VGltZUZvcm1hdCgpe1xuICAgIGxldCBsYW5nID0gIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgIGxldCBmb3JtYXQgPSAgJ0hIOm1tJ1xuXG4gICAgaWYobGFuZyA9PT0gJ2VuJyApXG4gICAgICBmb3JtYXQgPSAgJ2hoOm1tIGEnO1xuXG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIGdldFRpbWVGb3JtYXQyKCl7XG4gICAgbGV0IGZvcm1hdCA9ICAnSEg6bW0nXG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIGlzVG9kYXkobURhdGU6IERhdGUpe1xuICAgIGxldCBkYXRlID0gbmV3IERhdGUoKVxuICAgIGlmKGRhdGUuZ2V0RGF0ZSgpID09PSBtRGF0ZS5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09PSBtRGF0ZS5nZXRNb250aCgpICYmIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbURhdGUuZ2V0RnVsbFllYXIoKSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB0cmFuc2Zvcm1EYXRlKGRhdGUsIGZvcm1hdCwgbG9jYWxlPykge1xuICAgIGNvbnN0IGRhdGVQaXBlOiBEYXRlUGlwZSA9IG5ldyBEYXRlUGlwZShsb2NhbGUgfHwgdGhpcy5nZXRMb2NhbGUoKSk7ICAvLyBVc2EgbG9jYWxlIHNpIHNlIHBhc2EsIG8gcG9yIGRlZmVjdG8gYSBnZXRMb2NhbGUoKVxuICAgIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgZm9ybWF0KTtcbiAgfVxuXG4gIGdldENhbGVuZGFyRGF5KGVwb2NoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghZXBvY2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgdGltZVN0cmluZyA9ICdoOm1tIEEnO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnRvZGF5Jyk7XG4gICAgY29uc3QgeWVzdGVyZGF5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdlbmRhLnllc3RlcmRheScpO1xuICAgIHJldHVybiBtb21lbnQoZXBvY2gpLmNhbGVuZGFyKG51bGwsIHtcbiAgICAgIHNhbWVEYXk6IGBbJHt0b2RheX1dIGAgKyB0aW1lU3RyaW5nLFxuICAgICAgbGFzdERheTogYFske3llc3RlcmRheX1dIGAgKyB0aW1lU3RyaW5nLFxuICAgICAgbGFzdFdlZWsgOiAnREQvTU0vWVkgJyArIHRpbWVTdHJpbmcsXG4gICAgICBzYW1lRWxzZTogJ0REL01NL1lZICcgKyB0aW1lU3RyaW5nLFxuICAgICAgbmV4dERheSA6ICdERC9NTS9ZWSAnICsgdGltZVN0cmluZyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhbGVuZGFyRGF5MihlcG9jaDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIWVwb2NoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbGV0IHRpbWVTdHJpbmcgPSB0aGlzLmdldFRpbWVGb3JtYXQoKTtcbiAgICBsZXQgZGF0ZVN0cmluZyA9IHRoaXMuZ2V0U2hvcnREYXRlRm9ybWF0KCk7XG4gICAgY29uc3QgdG9kYXkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ2VuZGEudG9kYXknKTtcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ2VuZGEueWVzdGVyZGF5Jyk7XG4gICAgcmV0dXJuIG1vbWVudChlcG9jaCkuY2FsZW5kYXIobnVsbCwge1xuICAgICAgc2FtZURheTogYFske3RvZGF5fV0gIGAgICsgdGltZVN0cmluZyxcbiAgICAgIGxhc3REYXk6IGBbJHt5ZXN0ZXJkYXl9XSAgYCArIHRpbWVTdHJpbmcsXG4gICAgICBzYW1lRWxzZTogZGF0ZVN0cmluZyArICcgJyArIHRpbWVTdHJpbmcsXG4gICAgICBsYXN0V2VlayA6IGRhdGVTdHJpbmcgKyAnICcgKyB0aW1lU3RyaW5nLFxuICAgICAgbmV4dERheSA6IGRhdGVTdHJpbmcgKyAnICcgKyB0aW1lU3RyaW5nXG4gICAgfSk7XG4gIH1cblxuXG4gIGdldENhbGVuZGFyRGF5VGltZShlcG9jaDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIWVwb2NoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgdGltZVN0cmluZyA9IHRoaXMuZ2V0VGltZUZvcm1hdCgpO1xuICAgIGxldCBsYW5nID0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmc7XG4gICAgY29uc3QgdG9kYXkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ2VuZGEudG9kYXknKTtcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ2VuZGEueWVzdGVyZGF5Jyk7XG4gICAgY29uc3QgdG8gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ2VuZGEudG8nKTtcblxuICAgIGNvbnN0IG0gPSBtb21lbnRcbiAgICBtLmxvY2FsZShsYW5nKVxuXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9ICdNTU0sIGRkZCBERCBZWVlZJztcblxuICAgIHJldHVybiBtKGVwb2NoKS5jYWxlbmRhcihudWxsLCB7XG4gICAgICBzYW1lRGF5OiBgWyR7dG9kYXl9XSAgYCAgKyBgWyR7dG99XSAgYCArIHRpbWVTdHJpbmcsXG4gICAgICBsYXN0RGF5OiBgWyR7eWVzdGVyZGF5fV0gIGAgKyBgWyR7dG99XSAgYCArIHRpbWVTdHJpbmcsXG4gICAgICBzYW1lRWxzZTogZGF0ZVN0cmluZyArICcgJyArIGBbJHt0b31dICBgICsgdGltZVN0cmluZyxcbiAgICAgIGxhc3RXZWVrOiBkYXRlU3RyaW5nICsgJyAnICsgYFske3RvfV0gIGAgKyB0aW1lU3RyaW5nLFxuICAgICAgbmV4dERheSA6IGRhdGVTdHJpbmcgKyAnICcgKyBgWyR7dG99XSAgYCArIHRpbWVTdHJpbmdcbiAgICB9KVxufVxuXG4gIC8vIHJldHVybiBlcG9jaCBzdHJpbmcgYXMgc3BlY2lmaWVkIGZvcm1hdFxuICBmb3JtYXRFcG9jaChlcG9jaCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FsZW5kYXJEYXkoZXBvY2gpO1xuICB9XG5cbiAgZ2V0VG9kYXkoKXtcbiAgICBjb25zdCB0em9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7IC8vIG9mZnNldCBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCBsb2NhbElTT1RpbWUgPSAobmV3IERhdGUoRGF0ZS5ub3coKSAtIHR6b2Zmc2V0KSkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGRhdGUgPSBsb2NhbElTT1RpbWUvLyB0aGlzLmRhdGVTZXJ2aWNlLnNlbGVjdGVkRGF0ZUZvcm1hdChsb2NhbElTT1RpbWUpO1xuICAgIHJldHVybiBkYXRlXG4gIH1cblxuICBnZXRDdXJyZW50VGltZSgpe1xuICAgIGNvbnN0IHR6b2Zmc2V0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDsgLy8gb2Zmc2V0IGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IGxvY2FsSVNPVGltZSA9IChuZXcgRGF0ZShEYXRlLm5vdygpIC0gdHpvZmZzZXQpKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgZGF0ZSA9IGxvY2FsSVNPVGltZS8vIHRoaXMuZGF0ZVNlcnZpY2Uuc2VsZWN0ZWREYXRlRm9ybWF0KGxvY2FsSVNPVGltZSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkgLSB0em9mZnNldCkuZ2V0VGltZSgpLnRvTG9jYWxlU3RyaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgeXl5eU1NZGRISG1tMShkYXRlPyl7XG5cbiAgICBpZihkYXRlKXtcbiAgICAgIGxldCBkYXkgPSB0aGlzLnRyYW5zZm9ybURhdGUoZGF0ZSwgJ3l5eXktTU0tZGQgSEg6bW0nKTtcbiAgICAgIC8vY29uc29sZS5sb2coXCJzZWxlY3RlZCBEYXlcIiwgZGF5KTtcbiAgICAgIHJldHVybiBkYXlbMF0udG9VcHBlckNhc2UoKSArIGRheS5zbGljZSgxKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgeXl5eU1NZGRISG1tc3MoZGF0ZT8pe1xuICAgIGlmKGRhdGUpe1xuICAgICAgbGV0IGRheSA9IHRoaXMudHJhbnNmb3JtRGF0ZShkYXRlLCAneXl5eS1NTS1kZCBISDptbTpzcycpO1xuICAgICAgLy9jb25zb2xlLmxvZyhcInNlbGVjdGVkIERheVwiLCBkYXkpO1xuICAgICAgcmV0dXJuIGRheVswXS50b1VwcGVyQ2FzZSgpICsgZGF5LnNsaWNlKDEpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG5cblxuXG4gIGZvcm1hdERhdGVIb3VyKGQpe1xuICAgIHZhciBhdXhkYXRlID0gZC5zcGxpdCgnVCcpXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShhdXhkYXRlWzBdKTtcbiAgICAvLyBkID0gZC5yZXBsYWNlKCcgJywgJ1QnKVxuICAgIC8vIGxldCBkYXRlMCA9IG5ldyBEYXRlKGQpLnRvSVNPU3RyaW5nKCk7XG4gICAgLy8gbGV0IGRhdGUgPSBuZXcgRGF0ZShkYXRlMCk7XG4gICAgZGF0ZS5zZXRIb3VycygyMyk7XG4gICAgZGF0ZS5zZXRNaW51dGVzKDU5KTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG5cbn1cbiJdfQ==
|