chrv-components 1.8.59 → 1.8.61
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.
|
Binary file
|
|
@@ -244,13 +244,9 @@ export class ChrFormComponent {
|
|
|
244
244
|
}
|
|
245
245
|
switch (type) {
|
|
246
246
|
case 'date':
|
|
247
|
-
return value
|
|
248
|
-
? this.transformDate(typeof value == 'string' ? new Date(value) : value, 'yyyy-MM-dd')
|
|
249
|
-
: this.transformDate(defaultValue, 'yyyy-MM-dd');
|
|
247
|
+
return this.transformDate(value ?? defaultValue, 'yyyy-MM-dd');
|
|
250
248
|
case 'datetime':
|
|
251
|
-
return value
|
|
252
|
-
? this.transformDate(typeof value == 'string' ? new Date(value) : value, 'yyyy-MM-ddTHH:mm')
|
|
253
|
-
: this.transformDate(defaultValue, 'yyyy-MM-ddTHH:mm');
|
|
249
|
+
return this.transformDate(value ?? defaultValue, 'yyyy-MM-ddTHH:mm');
|
|
254
250
|
case 'number':
|
|
255
251
|
const number = Number(value);
|
|
256
252
|
return Number.isNaN(number) ? 0 : number;
|
|
@@ -413,4 +409,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
413
409
|
}], tabDisplay: [{
|
|
414
410
|
type: Input
|
|
415
411
|
}] } });
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FPeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR0wsVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQzFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFB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QUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0UsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBWYWxpZGF0b3JGbixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIEFic3RyYWN0Q29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgRm9ybUNvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHtcbiAgRGF0ZVBpcGUsXG4gIENvbW1vbk1vZHVsZSxcbiAgREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yJztcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvZGVjaW1hbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gJy4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9tYXgtZGF0ZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmVxdWlyZWQgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvcmVxdWlyZWQtdmFsaWRhdG9yJztcbmltcG9ydCB7IENoclRhZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Noci10YWctc2VsZWN0L2Noci10YWctc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0eXBlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZXMuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sQ29sbGVjdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGNhbGxiYWNrPzogRnVuY3Rpb247XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICB2YWxpZGF0b3I/OiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAga2V5Pzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW4/OiBzdHJpbmc7XG4gIHdpZHRoPzogJ2NvbCcgfCAncm93JztcbiAgY29sPzogbnVtYmVyO1xuICByb3c/OiBudW1iZXI7XG4gIHR5cGU6XG4gICAgfCAndGV4dCdcbiAgICB8ICdwYXNzd29yZCdcbiAgICB8ICd0ZXh0QXJlYSdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdkYXRldGltZSdcbiAgICB8ICdzZWFyY2hTZWxlY3QnXG4gICAgfCAndGFnU2VsZWN0J1xuICAgIHwgJ2NvbG9yJ1xuICAgIHwgJ3RvZ2dsZSdcbiAgICB8ICdmaWxlJztcbiAgYWNjZXB0Pzogc3RyaW5nW107XG4gIHZhbHVlPzogYW55O1xuICBkYXRhPzogYW55W10gfCBudWxsO1xuICBpY29uPzogc3RyaW5nO1xuICBpY29uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgaWNvbkNhbGxiYWNrRGlzYWJsZWQ/OiBib29sZWFuO1xuICBpY29uVG9vbHRpcD86IHN0cmluZztcbiAgZm4/OiAob2JqZWN0OiBhbnkpID0+IHN0cmluZztcbiAgZmlsdGVycz86IElTZWFyY2hGaWx0ZXJbXTtcbiAgdmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuICB0aXRsZT86IHN0cmluZztcbiAgY29udHJvbHM6IElDb250cm9sW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICAgICcuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzcycsXG4gICAgJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RXJyb3IsXG4gICAgQ2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50LFxuICAgIENoclRhZ1NlbGVjdENvbXBvbmVudCxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAge1xuICAgICAgcHJvdmlkZTogREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiB7IGRhdGVGb3JtYXQ6ICdzaG9ydERhdGUnIH0sXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcbiAgQElucHV0KCkgY29udHJvbHM/OiBJQ29udHJvbFtdO1xuXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgbW9kZWw6IGFueSA9IG51bGw7XG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG4gIEBJbnB1dCgpIHRhYkRpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL0BJbnB1dCgpIGluY29tcGxlU3VibWlzc2lvbkNhbGxiYWNrOiAoKCkgPT4gYW55ICl8IG51bGwgPSBudWxsO1xuXG4gIGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuYnVpbGRlci5ncm91cCh7fSk7XG5cbiAgcHJpdmF0ZSB2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBjb250cm9sVHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgcHJpdmF0ZSBmbGF0dGVuZWRDb250cm9sczogSUNvbnRyb2xbXSA9IFtdO1xuICBwcml2YXRlIF9lcnJvcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgcHVibGljIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2VcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbHMgIT0gbnVsbCAmJiB0aGlzLnNlY3Rpb25zICE9IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiWW91IGNhbid0IHVzZSBib3RoIGNvbnRyb2xzIGFuZCBzZWN0aW9ucyBpbiB0aGUgc2FtZSBmb3JtXCJcbiAgICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzID1cbiAgICAgIHRoaXMuc2VjdGlvbnNcbiAgICAgICAgPy5tYXAoKHMpID0+IHMuY29udHJvbHMpXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmNvbmNhdCh0aGlzLmNvbnRyb2xzID8/IFtdKSB8fCBbXTtcbiAgICB0aGlzLmluaXRNb2RlbCgpO1xuICAgIHRoaXMuaW5pdFZhbHVlcygpO1xuICAgIHRoaXMuaW5pdENvbnRyb2xzKCk7XG4gICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZVNlYXJjaFNlbGVjdFZhbGlkdHkgPSAodmFsaWQ6IGJvb2xlYW4pID0+IHtcbiAgICAvL3RoaXMudmFsaWQgPSB2YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQ7XG4gICAgLy90aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9PT0gdW5kZWZpbmVkXG4gICAgICApXG4gICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IGNvbnRyb2wudmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaW5pdFZhbHVlcyA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPT09IHVuZGVmaW5lZFxuICAgICAgKVxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID0gdGhpcy50b0lucHV0VmFsdWUoXG4gICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0Q29udHJvbHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge30gYXMgSUZvcm1Db250cm9sQ29sbGVjdGlvbjtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuX2dldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0aW9ucyk7XG4gICAgICBmb3JtQ29udHJvbHNbY29udHJvbC5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSxcbiAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgKTtcbiAgICAgIC8vaWYgKGNvbnRyb2wudHlwZSA9PSAnZmlsZScpIGZvcm1Db250cm9sc1tjb250cm9sLm5hbWVdLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuY29udHJvbFR5cGVzW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnR5cGU7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5idWlsZGVyLmdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgdGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcbiAgfTtcblxuICBwcml2YXRlIGluaXRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmIChPYmplY3QuaGFzT3duKHRoaXMubW9kZWwsIGtleSkgJiYgdGhpcy5jb250cm9sVHlwZXNba2V5XSAhPSAnZmlsZScpXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlVQREFUSU5HIFwiICsga2V5LCB0aGlzLm1vZGVsW2tleV0sIHZhbHVlc1trZXldKTtcbiAgICAgICAgICB0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24odGhpcy52YWx1ZXMsIGtleSkpIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgLy8gaWYgKHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIC8vIFx0dGhpcy5tb2RlbFtrZXldID0gdmFsdWVzW2tleV07XG4gICAgICAgIC8vIFx0dGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlc1trZXldO1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgICAgdGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMudmFsaWQpO1xuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29udHJvbCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobmFtZSkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tuYW1lXTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBmb2N1cyA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAvL2NvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2wobmFtZSk7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYGlucHV0W25hbWU9XCIke25hbWV9XCJdYFxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLmNvbnRyb2wobmFtZSk/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGVsLmZvY3VzKCk7XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIHZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB0aGlzLmdldFZhbHVlKGlucHV0KTtcblxuICBnZXRWYWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gIH07XG5cbiAgaXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy52YWxpZDtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfTtcblxuICBpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKFxuICAgICAgKHYpID0+IHYucnVsZT8udG9Mb3dlckNhc2UoKSA9PSAncmVxdWlyZWQnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcbiAgICovXG4gIHNldFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMudHlwZVRvSW5wdXRWYWx1ZSh0aGlzLmNvbnRyb2xUeXBlc1trZXldLCB2YWx1ZSk7XG4gICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRWYWx1ZSh2YWwsIHtcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlLFxuICAgIH0pO1xuICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSdzIG1vZGVsIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcbiAgICogQHBhcmFtIG1vZGVsIHRoZSBtb2RlbCB0byBzZXRcbiAgICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuICAgKi9cbiAgc2V0ID0gKG1vZGVsOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcbiAgICovXG4gIHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29udHJvbFR5cGVzW2tleV07XG4gICAgY29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGtleSwgdmFsdWUpO1xuICAgIGlmICh0eXBlID09ICdmaWxlJykge1xuICAgICAgdGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWw/Lm5hbWUpO1xuICAgICAgdGhpcy5zZXRNb2RlbCQoa2V5LCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZhbHVlJChrZXksIHZhbCk7XG4gICAgICB0aGlzLnNldE1vZGVsJChrZXksIHZhbCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50IG9uY2UgZm9yIGVhY2ggaW5wdXRcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHRvIHNldFxuICAgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG4gICAqL1xuICBwYXRjaCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuICAgICAgdGhpcy5wYXRjaFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9O1xuXG4gIGNoZWNrVmFsaWRpdHkgPSAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAodG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgaWYgKHRvdWNoZWQpIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH07XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaGFzRXJyb3IgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbGlkYXRpb246IElDb250cm9sVmFsaWRhdGlvbikgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLCBjb250cm9sLm5hbWUpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRUb0FjY2VwdCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLmFjY2VwdD8ubWFwKChzKSA9PiBzLnRvTG9jYWxlVXBwZXJDYXNlKCkpLmpvaW4oJywgJyk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHNob3VsZFNob3dFcnJvciA9IChcbiAgICBjb250cm9sOiBJQ29udHJvbCxcbiAgICB2YWxpZGF0aW9uOiBJQ29udHJvbFZhbGlkYXRpb25cbiAgKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKTtcbiAgICBpZiAoY3RybCAmJiBjdHJsLmVycm9ycykge1xuICAgICAgY29uc3QgZmlyc3QgPSBPYmplY3Qua2V5cyhjdHJsLmVycm9ycylbMF07XG4gICAgICByZXR1cm4gZmlyc3QgPT09IHZhbGlkYXRpb24ucnVsZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIHByb3RlY3RlZCBmaWxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCwgY29udHJvbDogSUNvbnRyb2wpID0+IHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpO1xuICAgIGN0cmw/Lm1hcmtBc0RpcnR5KCk7XG4gICAgY3RybD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gICAgaWYgKGZpbGUgPT09IG51bGwgfHwgZmlsZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIHRoaXMucGF0Y2hWYWx1ZShjb250cm9sLm5hbWUsICcnKTtcbiAgICB0aGlzLmZpbGVTZXJ2aWNlLmZpbGVUb0Jhc2U2NChmaWxlISkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IHJlcztcbiAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPSByZXMubmFtZTtcbiAgICAgIGN0cmw/LnBhdGNoVmFsdWUocmVzLm5hbWUsIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZSQgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgfTtcblxuICBwcml2YXRlIHNldE1vZGVsJCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbHVlO1xuICB9O1xuXG4gIHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcbiAgICByZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuICB9O1xuXG4gIHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuICAgIGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcbiAgKSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgPyB0aGlzLnRyYW5zZm9ybURhdGUoXG4gICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlKSA6IHZhbHVlLFxuICAgICAgICAgICAgICAneXl5eS1NTS1kZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsICd5eXl5LU1NLWRkJyk7XG4gICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgID8gdGhpcy50cmFuc2Zvcm1EYXRlKFxuICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcbiAgICAgICAgICAgICAgJ3l5eXktTU0tZGRUSEg6bW0nXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiB0aGlzLnRyYW5zZm9ybURhdGUoZGVmYXVsdFZhbHVlLCAneXl5eS1NTS1kZFRISDptbScpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihudW1iZXIpID8gMCA6IG51bWJlcjtcbiAgICAgIGNhc2UgJ3NlYXJjaFNlbGVjdCc6XG4gICAgICAgIHJldHVybiB2YWx1ZSE7XG4gICAgICBjYXNlICd0YWdTZWxlY3QnOlxuICAgICAgICByZXR1cm4gdmFsdWUhO1xuICAgICAgY2FzZSAndG9nZ2xlJzpcbiAgICAgICAgaWYgKHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZSEgfHwgZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHRyYW5zZm9ybURhdGUgPSAodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XG4gIH07XG5cbiAgcHVibGljIHJlc2l6ZSA9ICh0ZXh0QXJlYTogSFRNTFRleHRBcmVhRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxIZWlnaHQgPSB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQ7XG4gICAgdGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gaW5pdGlhbEhlaWdodDtcbiAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSAnJyArIHRleHRBcmVhLnNjcm9sbEhlaWdodCArICdweCc7XG4gIH07XG5cbiAgcHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGxvZyA9IChlbDogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coZWwpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBhY2NlcHRUb1N0cmluZyA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLmFjY2VwdD8ubWFwKCh0eXBlKSA9PiBgLiR7dHlwZX1gKS5qb2luKCcsICcpIHx8ICcuKic7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcbiAgICAvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICBpZiAodmFsaWRhdGlvbi52YWxpZGF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godmFsaWRhdGlvbi52YWxpZGF0b3IpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGU/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocnVsZSA9PSAnbWluJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3JlcXVpcmVkJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2UgY2hhbXBzIGVzdCByZXF1aXMgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChyZXF1aXJlZCgpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdlbWFpbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWlubGVuZ3RoJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXhsZW5ndGgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3R5cGUnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWF4ZGF0ZScpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzYgbXQtMlwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImluaXRpYWxpemVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5IHx8ICFzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpbmdsZVRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbHM6IGNvbnRyb2xzfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3Rpb25zOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYnNUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3RzOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFic1RlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdHMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCJzZWN0aW9uLnRpdGxlIHx8ICfDiXRhcGUgJyArIChpbmRleCArIDEpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiIGNsYXNzPVwibXQtNFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICAgIEBmb3IgKGN0cmwgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgICAgbGFzdCA9XG4gICAgICAgICAgJGxhc3QpXG4gICAgICAgICAge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY3RybCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgfVxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVGVtcGxhdGUgbGV0LWNvbnRyb2xzPVwiY29udHJvbHNcIj5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICBAZm9yIChjb250cm9sIG9mIGNvbnRyb2xzOyB0cmFjayBjb250cm9sOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6IGxhc3R9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWN0aW9uVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0aW9ucyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICA8ZGl2PlxuICAgICAgQGlmIChzZWN0aW9uLnRpdGxlKSB7XG4gICAgICA8aDIgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICB9XG4gICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgIEBmb3IgKGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgIGxhc3QgPVxuICAgICAgICAkbGFzdClcbiAgICAgICAge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGluZGV4ICE9IChzZWN0aW9uc3x8W10pLmxlbmd0aCAtIDEgJiYgIWNvbXBhY3QpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJweS00XCI+XG4gICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZSBsZXQtY29udHJvbD0nY29udHJvbCcgbGV0LWxhc3Q9J2xhc3QnIGxldC1pbmRleD0naW5kZXgnPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1taW4gbXQtMlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtuZ0NsYXNzXT1cIntcbiAgICAnc206Y29sLXNwYW4tMic6IChjb250cm9sLndpZHRoID09ICdyb3cnICYmICFjb21wYWN0KSB8fCBjb250cm9sLnR5cGU9PSd0ZXh0QXJlYScgJiYgY29tcGFjdCAmJiBjb250cm9sLndpZHRoICE9ICdyb3cnLFxuICAgICdzbTpjb2wtc3Bhbi00JzogY29udHJvbC53aWR0aCA9PSdyb3cnICYmIGNvbXBhY3QsXG4gICAgfVwiPlxuICAgIEBpZiAoY29udHJvbC50eXBlPT0nc2VhcmNoU2VsZWN0Jykge1xuICAgIDxkaXYgYXBwLWNoci1zZWFyY2gtc2VsZWN0IGNsYXNzPVwicmVsYXRpdmUgaW5wdXQgei0wIHctZnVsbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIiBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtuYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICBbZmlsdGVyc109XCJjb250cm9sLmZpbHRlcnNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGNvbnRyb2wudHlwZT09J3RhZ1NlbGVjdCcpIHtcbiAgICA8ZGl2IGFwcC1jaHItdGFnLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIiBbbmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiPnt7XG4gICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgfX1cbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgQGlmIChcbiAgICAgICAgZ2V0KGNvbnRyb2wpPy50b3VjaGVkICYmXG4gICAgICAgIGhhc0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pICYmIHNob3VsZFNob3dFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSkge1xuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1yZWQtNTAwIGRhcms6dGV4dC1yZWQtODAwXCI+e3sgdmFsaWRhdGlvbi5kaXNwbGF5IH19PC9tYXQtZXJyb3I+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHotMCB3LWZ1bGwgZ3JvdXAvaW5wdXRzIGNvbnRlbnRcIj5cbiAgICAgIDwhLS0gSGVyZSB3ZSB3aWxsICpuZ0lmIGVhY2ggdHlwZSBvZiBpbnB1dCBjYXVzZSBpdCdzIHRoZSBjbGVhbmVzdCB3YXkgSSBjYW4gaW1hZ2luZS0tPlxuICAgICAgPCEtLVRFWFQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0Jykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwidGV4dFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgW3ZhbHVlXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlIHx8ICcnXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1QQVNTV09SRC0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tVEVYVCBBUkVBLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dEFyZWEnKSB7XG4gICAgICA8dGV4dGFyZWEgI3RleHRBcmVhIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIChpbnB1dCk9XCJyZXNpemUodGV4dEFyZWEpXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cIm5vLXNjcm9sbGJhciBpbnB1dCAhcmVzaXplLW5vbmUgaGVpZ2h0LW5vcm1hbGl6ZWQgYmxvY2sgcHktMiBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+PC90ZXh0YXJlYT5cbiAgICAgIH1cbiAgICAgIDwhLS1OVU1CRVItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdudW1iZXInKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tREFURS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2RhdGUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRlXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRldGltZScpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1DT0xPUi0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2NvbG9yJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiY29sb3JcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCIgc3R5bGU9XCJoZWlnaHQ6IDQycHg7XCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0xLjUgbS0wIHB4LTAgdy1mdWxsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RvZ2dsZScpe1xuICAgICAgPGlucHV0ICN0b2dnbGUgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJoaWRkZW4gY2hlY2tib3hcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmUgdG9nZ2xlLXdyYXBwZXIgYmxvY2sgaW5wdXQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JheS0zMDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlPy5jbGljaygpXCIgY2xhc3M9XCJyZWxhdGl2ZSBibG9jayBpbnB1dCB0b2dnbGVcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdmaWxlJyl7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMCBmbGV4IGZsZXgtcm93IGp1c3RpZnktY2VudGVyIGNvbnRlbnQtY2VudGVyIGl0ZW1zLWNlbnRlciBhbGlnbi1taWRkbGUgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHJvdW5kZWQtZnVsbCBcIiAoY2xpY2spPVwiZmlucHV0LmNsaWNrKClcIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNDAwIGJvcmRlci1sLTIgYm9yZGVyLWItMCBib3JkZXItdC0wIFxuICAgIGJvcmRlci1yLTAgdy1maXQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS00MDAgcHgtMSB0ZXh0LWNlbnRlciBvcGFjaXR5LTEwMCBiZy1zbGF0ZS0xMDAgZGFyazpiZy1zbGF0ZS03MDAgYmctb3BhY2l0eS01MCBmbGV4IGp1c3RpZnktY2VudGVyIFxuICAgIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXJcIj57e2dldFRvQWNjZXB0KGNvbnRyb2wpfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIiB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiaGlkZGVuXCIgI2ZpbnB1dCBbYWNjZXB0XT1cImFjY2VwdFRvU3RyaW5nKGNvbnRyb2wpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudCwgY29udHJvbClcIiAvPlxuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcG9pbnRlci1ldmVudHMtbm9uZSBweS0xLjUgbS0wIHB4LTAgdy1mdWxsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHMgZmlsZTpoaWRkZW5cIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgIT0gJ3NlYXJjaFNlbGVjdCcgJiYgY29udHJvbC50eXBlICE9ICd0YWdTZWxlY3QnKSB7XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLmljb24gJiYgIWRpc2FibGVkKSB7XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBwLTIuNSBib3R0b20tMCByaWdodC0wXCIgW21hdFRvb2x0aXBdPVwiY29udHJvbC5pY29uVG9vbHRpcCB8fCAnJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy52YWx1ZSlcIj48bWF0LWljb25cbiAgICAgICAgICBjbGFzcz1cImZsZXggaW5wdXQganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciB0ZXh0LWxnXCI+e3tjb250cm9sLmljb259fTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoY29udHJvbC5zcGFuKSB7XG4gICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIiFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycyB8fCAhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkID8gJ3RleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwJyA6ICchdGV4dC1yZWQtNTAwIGRhcms6IXRleHQtcmVkLTgwMCdcIlxuICAgICAgY2xhc3M9XCJoLTAgdGV4dC14c1wiPnt7IGNvbnRyb2wuc3BhblxuICAgICAgfX08L3NwYW4+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FPeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR0wsVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQzFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFB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Qix1T0FDckIscUJBQXFCLDhCQUVyQixZQUFZLHVZQUVaLGFBQWE7OzJGQVdKLGdCQUFnQjtrQkFqQzVCLFNBQVM7K0JBQ0UsY0FBYyxjQU9aLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsUUFBUTt3QkFDUix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixRQUFRO3dCQUNSLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixhQUFhO3FCQUNkLGFBQ1U7d0JBQ1QsUUFBUTt3QkFDUjs0QkFDRSxPQUFPLEVBQUUseUJBQXlCOzRCQUNsQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO3lCQUN0QztxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsT0FBTzswTEFHdkMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0UsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBWYWxpZGF0b3JGbixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIEFic3RyYWN0Q29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgRm9ybUNvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHtcbiAgRGF0ZVBpcGUsXG4gIENvbW1vbk1vZHVsZSxcbiAgREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yJztcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvZGVjaW1hbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gJy4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9tYXgtZGF0ZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmVxdWlyZWQgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvcmVxdWlyZWQtdmFsaWRhdG9yJztcbmltcG9ydCB7IENoclRhZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Noci10YWctc2VsZWN0L2Noci10YWctc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0eXBlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZXMuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sQ29sbGVjdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGNhbGxiYWNrPzogRnVuY3Rpb247XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICB2YWxpZGF0b3I/OiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAga2V5Pzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW4/OiBzdHJpbmc7XG4gIHdpZHRoPzogJ2NvbCcgfCAncm93JztcbiAgY29sPzogbnVtYmVyO1xuICByb3c/OiBudW1iZXI7XG4gIHR5cGU6XG4gICAgfCAndGV4dCdcbiAgICB8ICdwYXNzd29yZCdcbiAgICB8ICd0ZXh0QXJlYSdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdkYXRldGltZSdcbiAgICB8ICdzZWFyY2hTZWxlY3QnXG4gICAgfCAndGFnU2VsZWN0J1xuICAgIHwgJ2NvbG9yJ1xuICAgIHwgJ3RvZ2dsZSdcbiAgICB8ICdmaWxlJztcbiAgYWNjZXB0Pzogc3RyaW5nW107XG4gIHZhbHVlPzogYW55O1xuICBkYXRhPzogYW55W10gfCBudWxsO1xuICBpY29uPzogc3RyaW5nO1xuICBpY29uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgaWNvbkNhbGxiYWNrRGlzYWJsZWQ/OiBib29sZWFuO1xuICBpY29uVG9vbHRpcD86IHN0cmluZztcbiAgZm4/OiAob2JqZWN0OiBhbnkpID0+IHN0cmluZztcbiAgZmlsdGVycz86IElTZWFyY2hGaWx0ZXJbXTtcbiAgdmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuICB0aXRsZT86IHN0cmluZztcbiAgY29udHJvbHM6IElDb250cm9sW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICAgICcuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzcycsXG4gICAgJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RXJyb3IsXG4gICAgQ2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50LFxuICAgIENoclRhZ1NlbGVjdENvbXBvbmVudCxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAge1xuICAgICAgcHJvdmlkZTogREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiB7IGRhdGVGb3JtYXQ6ICdzaG9ydERhdGUnIH0sXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcbiAgQElucHV0KCkgY29udHJvbHM/OiBJQ29udHJvbFtdO1xuXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgbW9kZWw6IGFueSA9IG51bGw7XG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG4gIEBJbnB1dCgpIHRhYkRpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL0BJbnB1dCgpIGluY29tcGxlU3VibWlzc2lvbkNhbGxiYWNrOiAoKCkgPT4gYW55ICl8IG51bGwgPSBudWxsO1xuXG4gIGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuYnVpbGRlci5ncm91cCh7fSk7XG5cbiAgcHJpdmF0ZSB2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBjb250cm9sVHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgcHJpdmF0ZSBmbGF0dGVuZWRDb250cm9sczogSUNvbnRyb2xbXSA9IFtdO1xuICBwcml2YXRlIF9lcnJvcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgcHVibGljIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2VcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbHMgIT0gbnVsbCAmJiB0aGlzLnNlY3Rpb25zICE9IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiWW91IGNhbid0IHVzZSBib3RoIGNvbnRyb2xzIGFuZCBzZWN0aW9ucyBpbiB0aGUgc2FtZSBmb3JtXCJcbiAgICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzID1cbiAgICAgIHRoaXMuc2VjdGlvbnNcbiAgICAgICAgPy5tYXAoKHMpID0+IHMuY29udHJvbHMpXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmNvbmNhdCh0aGlzLmNvbnRyb2xzID8/IFtdKSB8fCBbXTtcbiAgICB0aGlzLmluaXRNb2RlbCgpO1xuICAgIHRoaXMuaW5pdFZhbHVlcygpO1xuICAgIHRoaXMuaW5pdENvbnRyb2xzKCk7XG4gICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZVNlYXJjaFNlbGVjdFZhbGlkdHkgPSAodmFsaWQ6IGJvb2xlYW4pID0+IHtcbiAgICAvL3RoaXMudmFsaWQgPSB2YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQ7XG4gICAgLy90aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9PT0gdW5kZWZpbmVkXG4gICAgICApXG4gICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IGNvbnRyb2wudmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaW5pdFZhbHVlcyA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPT09IHVuZGVmaW5lZFxuICAgICAgKVxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID0gdGhpcy50b0lucHV0VmFsdWUoXG4gICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0Q29udHJvbHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge30gYXMgSUZvcm1Db250cm9sQ29sbGVjdGlvbjtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuX2dldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0aW9ucyk7XG4gICAgICBmb3JtQ29udHJvbHNbY29udHJvbC5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSxcbiAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgKTtcbiAgICAgIC8vaWYgKGNvbnRyb2wudHlwZSA9PSAnZmlsZScpIGZvcm1Db250cm9sc1tjb250cm9sLm5hbWVdLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuY29udHJvbFR5cGVzW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnR5cGU7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5idWlsZGVyLmdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgdGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcbiAgfTtcblxuICBwcml2YXRlIGluaXRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmIChPYmplY3QuaGFzT3duKHRoaXMubW9kZWwsIGtleSkgJiYgdGhpcy5jb250cm9sVHlwZXNba2V5XSAhPSAnZmlsZScpXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlVQREFUSU5HIFwiICsga2V5LCB0aGlzLm1vZGVsW2tleV0sIHZhbHVlc1trZXldKTtcbiAgICAgICAgICB0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24odGhpcy52YWx1ZXMsIGtleSkpIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgLy8gaWYgKHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIC8vIFx0dGhpcy5tb2RlbFtrZXldID0gdmFsdWVzW2tleV07XG4gICAgICAgIC8vIFx0dGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlc1trZXldO1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgICAgdGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMudmFsaWQpO1xuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29udHJvbCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobmFtZSkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tuYW1lXTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBmb2N1cyA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAvL2NvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2wobmFtZSk7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYGlucHV0W25hbWU9XCIke25hbWV9XCJdYFxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLmNvbnRyb2wobmFtZSk/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGVsLmZvY3VzKCk7XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIHZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB0aGlzLmdldFZhbHVlKGlucHV0KTtcblxuICBnZXRWYWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gIH07XG5cbiAgaXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy52YWxpZDtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfTtcblxuICBpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKFxuICAgICAgKHYpID0+IHYucnVsZT8udG9Mb3dlckNhc2UoKSA9PSAncmVxdWlyZWQnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcbiAgICovXG4gIHNldFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMudHlwZVRvSW5wdXRWYWx1ZSh0aGlzLmNvbnRyb2xUeXBlc1trZXldLCB2YWx1ZSk7XG4gICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRWYWx1ZSh2YWwsIHtcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlLFxuICAgIH0pO1xuICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSdzIG1vZGVsIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcbiAgICogQHBhcmFtIG1vZGVsIHRoZSBtb2RlbCB0byBzZXRcbiAgICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuICAgKi9cbiAgc2V0ID0gKG1vZGVsOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcbiAgICovXG4gIHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29udHJvbFR5cGVzW2tleV07XG4gICAgY29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGtleSwgdmFsdWUpO1xuICAgIGlmICh0eXBlID09ICdmaWxlJykge1xuICAgICAgdGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWw/Lm5hbWUpO1xuICAgICAgdGhpcy5zZXRNb2RlbCQoa2V5LCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZhbHVlJChrZXksIHZhbCk7XG4gICAgICB0aGlzLnNldE1vZGVsJChrZXksIHZhbCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50IG9uY2UgZm9yIGVhY2ggaW5wdXRcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHRvIHNldFxuICAgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG4gICAqL1xuICBwYXRjaCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuICAgICAgdGhpcy5wYXRjaFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9O1xuXG4gIGNoZWNrVmFsaWRpdHkgPSAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAodG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgaWYgKHRvdWNoZWQpIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH07XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaGFzRXJyb3IgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbGlkYXRpb246IElDb250cm9sVmFsaWRhdGlvbikgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLCBjb250cm9sLm5hbWUpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRUb0FjY2VwdCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLmFjY2VwdD8ubWFwKChzKSA9PiBzLnRvTG9jYWxlVXBwZXJDYXNlKCkpLmpvaW4oJywgJyk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHNob3VsZFNob3dFcnJvciA9IChcbiAgICBjb250cm9sOiBJQ29udHJvbCxcbiAgICB2YWxpZGF0aW9uOiBJQ29udHJvbFZhbGlkYXRpb25cbiAgKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKTtcbiAgICBpZiAoY3RybCAmJiBjdHJsLmVycm9ycykge1xuICAgICAgY29uc3QgZmlyc3QgPSBPYmplY3Qua2V5cyhjdHJsLmVycm9ycylbMF07XG4gICAgICByZXR1cm4gZmlyc3QgPT09IHZhbGlkYXRpb24ucnVsZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIHByb3RlY3RlZCBmaWxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCwgY29udHJvbDogSUNvbnRyb2wpID0+IHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpO1xuICAgIGN0cmw/Lm1hcmtBc0RpcnR5KCk7XG4gICAgY3RybD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gICAgaWYgKGZpbGUgPT09IG51bGwgfHwgZmlsZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIHRoaXMucGF0Y2hWYWx1ZShjb250cm9sLm5hbWUsICcnKTtcbiAgICB0aGlzLmZpbGVTZXJ2aWNlLmZpbGVUb0Jhc2U2NChmaWxlISkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IHJlcztcbiAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPSByZXMubmFtZTtcbiAgICAgIGN0cmw/LnBhdGNoVmFsdWUocmVzLm5hbWUsIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZSQgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgfTtcblxuICBwcml2YXRlIHNldE1vZGVsJCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbHVlO1xuICB9O1xuXG4gIHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcbiAgICByZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuICB9O1xuXG4gIHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuICAgIGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcbiAgKSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtRGF0ZSh2YWx1ZSA/PyBkZWZhdWx0VmFsdWUsICd5eXl5LU1NLWRkJyk7XG4gICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybURhdGUodmFsdWUgPz8gZGVmYXVsdFZhbHVlLCAneXl5eS1NTS1kZFRISDptbScpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihudW1iZXIpID8gMCA6IG51bWJlcjtcbiAgICAgIGNhc2UgJ3NlYXJjaFNlbGVjdCc6XG4gICAgICAgIHJldHVybiB2YWx1ZSE7XG4gICAgICBjYXNlICd0YWdTZWxlY3QnOlxuICAgICAgICByZXR1cm4gdmFsdWUhO1xuICAgICAgY2FzZSAndG9nZ2xlJzpcbiAgICAgICAgaWYgKHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZSEgfHwgZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHRyYW5zZm9ybURhdGUgPSAodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XG4gIH07XG5cbiAgcHVibGljIHJlc2l6ZSA9ICh0ZXh0QXJlYTogSFRNTFRleHRBcmVhRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxIZWlnaHQgPSB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQ7XG4gICAgdGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gaW5pdGlhbEhlaWdodDtcbiAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSAnJyArIHRleHRBcmVhLnNjcm9sbEhlaWdodCArICdweCc7XG4gIH07XG5cbiAgcHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGxvZyA9IChlbDogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coZWwpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBhY2NlcHRUb1N0cmluZyA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLmFjY2VwdD8ubWFwKCh0eXBlKSA9PiBgLiR7dHlwZX1gKS5qb2luKCcsICcpIHx8ICcuKic7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcbiAgICAvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICBpZiAodmFsaWRhdGlvbi52YWxpZGF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godmFsaWRhdGlvbi52YWxpZGF0b3IpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGU/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocnVsZSA9PSAnbWluJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3JlcXVpcmVkJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2UgY2hhbXBzIGVzdCByZXF1aXMgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChyZXF1aXJlZCgpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdlbWFpbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWlubGVuZ3RoJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXhsZW5ndGgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3R5cGUnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWF4ZGF0ZScpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzYgbXQtMlwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImluaXRpYWxpemVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5IHx8ICFzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpbmdsZVRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbHM6IGNvbnRyb2xzfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3Rpb25zOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYnNUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3RzOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFic1RlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdHMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCJzZWN0aW9uLnRpdGxlIHx8ICfDiXRhcGUgJyArIChpbmRleCArIDEpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiIGNsYXNzPVwibXQtNFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICAgIEBmb3IgKGN0cmwgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgICAgbGFzdCA9XG4gICAgICAgICAgJGxhc3QpXG4gICAgICAgICAge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY3RybCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgfVxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVGVtcGxhdGUgbGV0LWNvbnRyb2xzPVwiY29udHJvbHNcIj5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICBAZm9yIChjb250cm9sIG9mIGNvbnRyb2xzOyB0cmFjayBjb250cm9sOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6IGxhc3R9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWN0aW9uVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0aW9ucyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICA8ZGl2PlxuICAgICAgQGlmIChzZWN0aW9uLnRpdGxlKSB7XG4gICAgICA8aDIgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICB9XG4gICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgIEBmb3IgKGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgIGxhc3QgPVxuICAgICAgICAkbGFzdClcbiAgICAgICAge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGluZGV4ICE9IChzZWN0aW9uc3x8W10pLmxlbmd0aCAtIDEgJiYgIWNvbXBhY3QpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJweS00XCI+XG4gICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZSBsZXQtY29udHJvbD0nY29udHJvbCcgbGV0LWxhc3Q9J2xhc3QnIGxldC1pbmRleD0naW5kZXgnPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1taW4gbXQtMlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtuZ0NsYXNzXT1cIntcbiAgICAnc206Y29sLXNwYW4tMic6IChjb250cm9sLndpZHRoID09ICdyb3cnICYmICFjb21wYWN0KSB8fCBjb250cm9sLnR5cGU9PSd0ZXh0QXJlYScgJiYgY29tcGFjdCAmJiBjb250cm9sLndpZHRoICE9ICdyb3cnLFxuICAgICdzbTpjb2wtc3Bhbi00JzogY29udHJvbC53aWR0aCA9PSdyb3cnICYmIGNvbXBhY3QsXG4gICAgfVwiPlxuICAgIEBpZiAoY29udHJvbC50eXBlPT0nc2VhcmNoU2VsZWN0Jykge1xuICAgIDxkaXYgYXBwLWNoci1zZWFyY2gtc2VsZWN0IGNsYXNzPVwicmVsYXRpdmUgaW5wdXQgei0wIHctZnVsbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIiBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtuYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICBbZmlsdGVyc109XCJjb250cm9sLmZpbHRlcnNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGNvbnRyb2wudHlwZT09J3RhZ1NlbGVjdCcpIHtcbiAgICA8ZGl2IGFwcC1jaHItdGFnLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIiBbbmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiPnt7XG4gICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgfX1cbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgQGlmIChcbiAgICAgICAgZ2V0KGNvbnRyb2wpPy50b3VjaGVkICYmXG4gICAgICAgIGhhc0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pICYmIHNob3VsZFNob3dFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSkge1xuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1yZWQtNTAwIGRhcms6dGV4dC1yZWQtODAwXCI+e3sgdmFsaWRhdGlvbi5kaXNwbGF5IH19PC9tYXQtZXJyb3I+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHotMCB3LWZ1bGwgZ3JvdXAvaW5wdXRzIGNvbnRlbnRcIj5cbiAgICAgIDwhLS0gSGVyZSB3ZSB3aWxsICpuZ0lmIGVhY2ggdHlwZSBvZiBpbnB1dCBjYXVzZSBpdCdzIHRoZSBjbGVhbmVzdCB3YXkgSSBjYW4gaW1hZ2luZS0tPlxuICAgICAgPCEtLVRFWFQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0Jykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwidGV4dFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgW3ZhbHVlXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlIHx8ICcnXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1QQVNTV09SRC0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tVEVYVCBBUkVBLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dEFyZWEnKSB7XG4gICAgICA8dGV4dGFyZWEgI3RleHRBcmVhIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIChpbnB1dCk9XCJyZXNpemUodGV4dEFyZWEpXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cIm5vLXNjcm9sbGJhciBpbnB1dCAhcmVzaXplLW5vbmUgaGVpZ2h0LW5vcm1hbGl6ZWQgYmxvY2sgcHktMiBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+PC90ZXh0YXJlYT5cbiAgICAgIH1cbiAgICAgIDwhLS1OVU1CRVItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdudW1iZXInKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tREFURS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2RhdGUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRlXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRldGltZScpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1DT0xPUi0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2NvbG9yJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiY29sb3JcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCIgc3R5bGU9XCJoZWlnaHQ6IDQycHg7XCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0xLjUgbS0wIHB4LTAgdy1mdWxsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RvZ2dsZScpe1xuICAgICAgPGlucHV0ICN0b2dnbGUgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJoaWRkZW4gY2hlY2tib3hcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmUgdG9nZ2xlLXdyYXBwZXIgYmxvY2sgaW5wdXQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JheS0zMDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlPy5jbGljaygpXCIgY2xhc3M9XCJyZWxhdGl2ZSBibG9jayBpbnB1dCB0b2dnbGVcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdmaWxlJyl7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMCBmbGV4IGZsZXgtcm93IGp1c3RpZnktY2VudGVyIGNvbnRlbnQtY2VudGVyIGl0ZW1zLWNlbnRlciBhbGlnbi1taWRkbGUgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHJvdW5kZWQtZnVsbCBcIiAoY2xpY2spPVwiZmlucHV0LmNsaWNrKClcIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNDAwIGJvcmRlci1sLTIgYm9yZGVyLWItMCBib3JkZXItdC0wIFxuICAgIGJvcmRlci1yLTAgdy1maXQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS00MDAgcHgtMSB0ZXh0LWNlbnRlciBvcGFjaXR5LTEwMCBiZy1zbGF0ZS0xMDAgZGFyazpiZy1zbGF0ZS03MDAgYmctb3BhY2l0eS01MCBmbGV4IGp1c3RpZnktY2VudGVyIFxuICAgIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXJcIj57e2dldFRvQWNjZXB0KGNvbnRyb2wpfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIiB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiaGlkZGVuXCIgI2ZpbnB1dCBbYWNjZXB0XT1cImFjY2VwdFRvU3RyaW5nKGNvbnRyb2wpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudCwgY29udHJvbClcIiAvPlxuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcG9pbnRlci1ldmVudHMtbm9uZSBweS0xLjUgbS0wIHB4LTAgdy1mdWxsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHMgZmlsZTpoaWRkZW5cIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgIT0gJ3NlYXJjaFNlbGVjdCcgJiYgY29udHJvbC50eXBlICE9ICd0YWdTZWxlY3QnKSB7XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLmljb24gJiYgIWRpc2FibGVkKSB7XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBwLTIuNSBib3R0b20tMCByaWdodC0wXCIgW21hdFRvb2x0aXBdPVwiY29udHJvbC5pY29uVG9vbHRpcCB8fCAnJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy52YWx1ZSlcIj48bWF0LWljb25cbiAgICAgICAgICBjbGFzcz1cImZsZXggaW5wdXQganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciB0ZXh0LWxnXCI+e3tjb250cm9sLmljb259fTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoY29udHJvbC5zcGFuKSB7XG4gICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIiFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycyB8fCAhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkID8gJ3RleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwJyA6ICchdGV4dC1yZWQtNTAwIGRhcms6IXRleHQtcmVkLTgwMCdcIlxuICAgICAgY2xhc3M9XCJoLTAgdGV4dC14c1wiPnt7IGNvbnRyb2wuc3BhblxuICAgICAgfX08L3NwYW4+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -1287,13 +1287,9 @@ class ChrFormComponent {
|
|
|
1287
1287
|
}
|
|
1288
1288
|
switch (type) {
|
|
1289
1289
|
case 'date':
|
|
1290
|
-
return value
|
|
1291
|
-
? this.transformDate(typeof value == 'string' ? new Date(value) : value, 'yyyy-MM-dd')
|
|
1292
|
-
: this.transformDate(defaultValue, 'yyyy-MM-dd');
|
|
1290
|
+
return this.transformDate(value ?? defaultValue, 'yyyy-MM-dd');
|
|
1293
1291
|
case 'datetime':
|
|
1294
|
-
return value
|
|
1295
|
-
? this.transformDate(typeof value == 'string' ? new Date(value) : value, 'yyyy-MM-ddTHH:mm')
|
|
1296
|
-
: this.transformDate(defaultValue, 'yyyy-MM-ddTHH:mm');
|
|
1292
|
+
return this.transformDate(value ?? defaultValue, 'yyyy-MM-ddTHH:mm');
|
|
1297
1293
|
case 'number':
|
|
1298
1294
|
const number = Number(value);
|
|
1299
1295
|
return Number.isNaN(number) ? 0 : number;
|