@tiba-spark/client-shared-lib 10.3.0-370 → 10.3.0-376
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/libraries/components/field-label/field-label.component.mjs +3 -1
- package/esm2022/libraries/constants/global-constants.mjs +8 -2
- package/esm2022/libraries/enums/localization.enum.mjs +110 -10
- package/esm2022/libraries/service-proxy/edge-service-proxies.mjs +3139 -376
- package/esm2022/libraries/utils/custom-validator.util.mjs +25 -1
- package/esm2022/libraries/utils/date.util.mjs +14 -1
- package/esm2022/libraries/utils/text.util.mjs +2 -1
- package/fesm2022/tiba-spark-client-shared-lib.mjs +3490 -545
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/components/field-label/field-label.component.d.ts +1 -1
- package/libraries/components/field-label/field-label.component.d.ts.map +1 -1
- package/libraries/constants/global-constants.d.ts +7 -1
- package/libraries/constants/global-constants.d.ts.map +1 -1
- package/libraries/enums/localization.enum.d.ts +109 -9
- package/libraries/enums/localization.enum.d.ts.map +1 -1
- package/libraries/service-proxy/edge-service-proxies.d.ts +819 -33
- package/libraries/service-proxy/edge-service-proxies.d.ts.map +1 -1
- package/libraries/utils/custom-validator.util.d.ts +2 -1
- package/libraries/utils/custom-validator.util.d.ts.map +1 -1
- package/libraries/utils/date.util.d.ts +1 -0
- package/libraries/utils/date.util.d.ts.map +1 -1
- package/libraries/utils/text.util.d.ts +1 -0
- package/libraries/utils/text.util.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { debounceTime, delay, map, of, switchMap } from 'rxjs';
|
|
2
2
|
import { INPUT_SEARCH_DEBOUNCE_TIME, VALID_TIME_MAX_LENGTH } from '../constants';
|
|
3
3
|
import { Localization } from '../enums';
|
|
4
|
+
import { timeToMoment } from './date.util';
|
|
4
5
|
const MIN_ALLOWED_BALANCE = 0;
|
|
5
6
|
const MAX_ALLOWED_BALANCE = 255;
|
|
6
7
|
export const noEmojiRegex = /[^a-zA-Z0-9 ]/gm;
|
|
@@ -445,6 +446,29 @@ export class TibaValidators {
|
|
|
445
446
|
return null;
|
|
446
447
|
};
|
|
447
448
|
}
|
|
449
|
+
static timeRangeArrayValidator() {
|
|
450
|
+
return (control) => {
|
|
451
|
+
if (control.valid && control.enabled) {
|
|
452
|
+
const formArray = control.value;
|
|
453
|
+
for (let i = 0; i < formArray.length; i++) {
|
|
454
|
+
const currentRange = formArray[i];
|
|
455
|
+
const currentFrom = timeToMoment(currentRange.from);
|
|
456
|
+
const currentTo = timeToMoment(currentRange.to);
|
|
457
|
+
if (currentFrom && currentTo) {
|
|
458
|
+
for (let j = i + 1; j < formArray.length; j++) {
|
|
459
|
+
const compareRange = formArray[j];
|
|
460
|
+
const compareFrom = timeToMoment(compareRange.from);
|
|
461
|
+
const compareTo = timeToMoment(compareRange.to);
|
|
462
|
+
if (currentFrom.isBefore(compareTo) && currentTo.isAfter(compareFrom)) {
|
|
463
|
+
return { form_validation_time_range_overlap: true };
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
return null;
|
|
470
|
+
};
|
|
471
|
+
}
|
|
448
472
|
static isValueGreaterThanOrEqualTo(fromControl, toControl) {
|
|
449
473
|
const fromTimeInNumber = fromControl.value;
|
|
450
474
|
const toTimeInNumber = toControl.value;
|
|
@@ -458,4 +482,4 @@ export class TibaValidators {
|
|
|
458
482
|
toTimeInNumber.toString().length === VALID_TIME_MAX_LENGTH;
|
|
459
483
|
}
|
|
460
484
|
}
|
|
461
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbGlkYXRvci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy9jdXN0b20tdmFsaWRhdG9yLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJeEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyx5SEFBeUgsQ0FBQztBQUN2SixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHVGQUF1RixDQUFDO0FBQ2hILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLGdCQUFnQixDQUFDO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHLFlBQVksQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsaUNBQWlDLENBQUM7QUFFakUsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFRO0lBQ3BDLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUV6QixzQkFBc0I7SUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUF3QjtRQUNyQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM3RCxPQUFPO2dCQUNMLE9BQU8sRUFBRTtvQkFDUCxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUc7b0JBQ2xCLE9BQU8sRUFBRSxZQUFZO2lCQUN0QjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBd0I7UUFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUUxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUNqRSxPQUFPO2dCQUNMLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUc7b0JBQ2xCLE9BQU8sRUFBRSxlQUFlO2lCQUN6QjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNLENBQUMsYUFBYSxDQUFDLE9BQXdCO1FBQzNDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0QsT0FBTztnQkFDTCxhQUFhLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHO29CQUNsQixPQUFPLEVBQUUsV0FBVztpQkFDckI7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBd0I7UUFDOUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUUxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25FLE9BQU87Z0JBQ0wsaUJBQWlCLEVBQUU7b0JBQ2pCLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRztvQkFDbEIsT0FBTyxFQUFFLGlCQUFpQjtpQkFDM0I7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsaUNBQWlDLENBQUMsT0FBd0I7UUFDL0QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUUxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFO1lBQ3hGLE9BQU87Z0JBQ0wsc0NBQXNDLEVBQUU7b0JBQ3RDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRztvQkFDbEIsT0FBTyxFQUFFLHNDQUFzQztpQkFDaEQ7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsc0NBQXNDLENBQUMsT0FBd0I7UUFDcEUsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUUxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxFQUFFO1lBQzVGLE9BQU87Z0JBQ0wsMENBQTBDLEVBQUU7b0JBQzFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRztvQkFDbEIsT0FBTyxFQUFFLDBDQUEwQztpQkFDcEQ7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQXdCO1FBQ3BELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUN0RSxPQUFPO2dCQUNMLHNCQUFzQixFQUFFO29CQUN0QixLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUc7b0JBQ2xCLE9BQU8sRUFBRSxZQUFZO2lCQUN0QjthQUNGLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDOUQsT0FBTztnQkFDTCxzQkFBc0IsRUFBRTtvQkFDdEIsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHO29CQUNsQixPQUFPLEVBQUUsWUFBWTtpQkFDdEI7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUF3QjtRQUM3QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7WUFDdEUsT0FBTztnQkFDTCxlQUFlLEVBQUU7b0JBQ2YsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHO29CQUNsQixPQUFPLEVBQUUsb0JBQW9CO2lCQUM5QjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxNQUFNLENBQUMsOEJBQThCLENBQUMsT0FBd0I7UUFDNUQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUUxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFFO1lBQ3JGLE9BQU87Z0JBQ0wsOEJBQThCLEVBQUU7b0JBQzlCLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRztvQkFDbEIsT0FBTyxFQUFFLG1DQUFtQztpQkFDN0M7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUF3QjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1lBQUUsT0FBTztnQkFDNUUsY0FBYyxFQUFFO29CQUNkLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRztvQkFDbEIsT0FBTyxFQUFFLG1CQUFtQjtpQkFDN0I7YUFDRixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBYztRQUNqQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBRTFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUU7Z0JBQzNELE9BQU87b0JBQ0wsbUJBQW1CLEVBQUU7d0JBQ25CLFlBQVksRUFBRSxHQUFHO3dCQUNqQixjQUFjLEVBQUUsTUFBTTtxQkFDdkI7aUJBQ0YsQ0FBQzthQUNIO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQXdCO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN4QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDN0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQXdCO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLDBCQUEwQixDQUFDLE9BQXdCO1FBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUNoRCxXQUFXLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsQ0FBQyxvREFBb0Q7U0FDbEU7YUFBTTtZQUNMLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsZUFBdUIsRUFBRSxhQUFxQjtRQUN6RSxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7WUFDeEQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNsQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBbUIsQ0FBQztnQkFDOUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFO29CQUMzSCxpRkFBaUY7b0JBQ2pGLFFBQVEsR0FBRyxFQUFFLG9DQUFvQyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUMzRDtxQkFBTSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsc0NBQXNDLENBQUMsRUFBRTtvQkFDckUsNEhBQTRIO29CQUM1SCxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN4QixTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDcEM7YUFDRjtZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQztJQUNKLENBQUM7YUFFYyxxQkFBZ0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsRUFBRSxHQUFHLE9BQU8sVUFBVSxHQUFHLFlBQVksQ0FBQSxDQUFDLENBQUMsQ0FBQTtJQUVwRyxNQUFNLENBQUMscUJBQXFCLENBQUMsZ0JBQXdCLEVBQUUsa0JBQTBCO1FBQy9FLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLG1DQUFtQztZQUN4RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFtQixDQUFDO2dCQUM5QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3JELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDekQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQztnQkFDMUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFBO2dCQUN6RSxJQUFJLGlCQUFpQixHQUFHLG1CQUFtQixFQUFFO29CQUMzQyxRQUFRLEdBQUcsRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDNUQ7cUJBQU0sSUFBSSxpQkFBaUIsR0FBRyxtQkFBbUIsRUFBRTtvQkFDbEQsUUFBUSxHQUFHLEVBQUUscUNBQXFDLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzVEO2FBQ0Y7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFtQixFQUFFLGdCQUFzQjtRQUM1RCxPQUFPLENBQUMsWUFBNkIsRUFBMkIsRUFBRTtZQUNoRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7WUFFeEQsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO2dCQUN2QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBbUIsQ0FBQztnQkFDbkQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxZQUFZLEdBQVMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFFekMsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRWhFLElBQUksV0FBVyxHQUFHLE9BQU8sRUFBRTt3QkFDekIsUUFBUSxHQUFHLEVBQUUsaUNBQWlDLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQ3hEO2lCQUNGO2FBQ0Y7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFxQixFQUFFLFdBQW1CLEVBQUUsZ0JBQXdCLElBQUksRUFDeEYsY0FBc0IsSUFBSSxFQUFFLFlBQW9CLFlBQVk7UUFDNUQsT0FBTyxDQUFDLFNBQTBCLEVBQXFDLEVBQUU7WUFDdkUsTUFBTSxRQUFRLEdBQVMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDM0QsTUFBTSxNQUFNLEdBQVMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDdkQsTUFBTSxRQUFRLEdBQWEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDL0QsTUFBTSxNQUFNLEdBQWEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDM0QsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLFFBQVEsR0FBRyxNQUFNLEVBQUU7Z0JBQy9ELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFxQixFQUFFLFdBQW1CO1FBQy9ELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLG1DQUFtQztZQUN4RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFtQixDQUFDO2dCQUM5QyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUM7b0JBQzdHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFO29CQUMzRCxRQUFRLEdBQUcsRUFBRSxrQ0FBa0MsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDekQ7cUJBQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEVBQUU7b0JBQ25FLDBIQUEwSDtvQkFDMUgsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDeEIsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7aUJBQ3BDO2FBQ0Y7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFxQixFQUFFLFdBQW1CO1FBQzFELE9BQU8sQ0FBQyxTQUEwQixFQUFxQyxFQUFFO1lBQ3ZFLE1BQU0sUUFBUSxHQUFhLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlELE1BQU0sTUFBTSxHQUFhLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM1RCxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ3RFLEVBQUU7Z0JBQ0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3JEO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO2FBRWMsZUFBVSxHQUFHLENBQUMsSUFBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSTtRQUMzRCxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUM7YUFFbkUsMEJBQXFCLEdBQUcsQ0FBQyxPQUF3QixFQUFvQixFQUFFLENBQzVFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2FBRTlGLHdDQUFtQyxHQUFHLENBQUMsT0FBd0IsRUFBb0IsRUFBRSxDQUMxRixDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFM0YsTUFBTSxDQUFDLG1CQUFtQjtRQUN4QixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxPQUF3QjtRQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7WUFDekUsT0FBTztnQkFDTCxzQkFBc0IsRUFBRTtvQkFDdEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSTtpQkFDaEM7YUFDRixDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFrQyxFQUFFLFVBQWtCLEVBQUUsUUFBZ0I7UUFDcEYsT0FBTyxDQUFDLFNBQTBCLEVBQW9DLEVBQUU7WUFDdEUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQXFCLENBQUM7WUFDbkUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQXFCLENBQUM7WUFFL0QsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7YUFDMUU7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsZ0JBQWtDLEVBQUUsZ0JBQXdCLFVBQVUsRUFBRSxjQUFzQixRQUFRLEVBQUUsYUFBcUIsT0FBTyxFQUM3SixhQUFxQixPQUFPLEVBQUUsaUJBQXlCLFdBQVc7UUFDbEUsT0FBTyxDQUFDLFNBQTBCLEVBQW9DLEVBQUU7WUFDdEUsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDN0IsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksdUJBQXVCLEdBQWEsRUFBRSxDQUFDO1lBRTNDLFFBQVE7WUFDUixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBcUIsQ0FBQztZQUN0RSxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDMUUsYUFBYSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEU7WUFDRCxNQUFNLGNBQWMsR0FBRyxhQUFhLElBQUksQ0FBQyxlQUFlLENBQUM7WUFFekQsWUFBWTtZQUNaLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQXFCLENBQUM7WUFDNUUsSUFBSSxrQkFBa0IsRUFBRTtnQkFDdEIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDL0UsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVFO1lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBRW5FLFNBQVM7WUFDVCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsSUFBSSxpQkFBaUIsRUFBRTtnQkFDckIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM3RTtZQUNELE1BQU0sZUFBZSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDO1lBRWxELFFBQVE7WUFDUixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNELElBQUksZ0JBQWdCLElBQUksb0JBQW9CLEVBQUUsS0FBSyxFQUFFO2dCQUNuRCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzVFO1lBQ0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLEtBQUssSUFBSSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUVoRixNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixJQUFJLGNBQWMsSUFBSSxlQUFlLElBQUksY0FBYyxDQUFDO1lBRXhHLElBQUkscUJBQXFCLEVBQUU7Z0JBQ3pCLE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLGlCQUFpQixHQUFHLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQy9ILE9BQU87b0JBQ0wsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUM3SCxDQUFBO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBMEI7UUFDaEUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNsQixTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixNQUFNO2FBQ1A7U0FDRjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLGdCQUF3QixFQUFFLGFBQXFCLEVBQUUsWUFBb0IsY0FBYztRQUNyRyxPQUFPLENBQUMsU0FBMEIsRUFBcUMsRUFBRTtZQUN2RSxNQUFNLFdBQVcsR0FBVyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2xFLE1BQU0sUUFBUSxHQUFXLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzVELElBQUksV0FBVyxHQUFHLENBQUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBd0MsRUFBRSxNQUFjO1FBQzlFLE9BQU8sQ0FBQyxPQUF3QixFQUFnQyxFQUFFO1lBQ2hFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzNCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDVixZQUFZLENBQUMsMEJBQTBCLENBQUMsRUFDeEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ2hGLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUF3QjtRQUMvQyxNQUFNLEdBQUcsR0FBYSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRXBDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRTtZQUN2RCxPQUFPO2dCQUNMLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBZ0IsRUFBRSxXQUFtQixFQUFFLE1BQWMsRUFBRSxTQUFpQjtRQUMzRixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNuQixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxFQUFFLHNDQUFzQztvQkFDdEUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUN0RDtxQkFBTTtvQkFDTCxNQUFNLEtBQUssR0FBVyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFELE1BQU0sT0FBTyxHQUFXLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxNQUFNLFdBQVcsR0FDZixDQUFDLEtBQUssR0FBRyxRQUFRLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsQ0FBQzt3QkFDcEUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxPQUFPLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDakUsSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDaEIsT0FBTzs0QkFDTCw0QkFBNEIsRUFBRTtnQ0FDNUIsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0NBQzFGLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFOzZCQUNyRjt5QkFDRixDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsMkJBQTJCLENBQUMsV0FBNEIsRUFBRSxTQUEwQjtRQUNqRyxNQUFNLGdCQUFnQixHQUFXLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDbkQsTUFBTSxjQUFjLEdBQVcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMvQyxPQUFPLGdCQUFnQixLQUFLLElBQUksSUFBSSxjQUFjLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFDckcsQ0FBQztJQUFBLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBNEIsRUFBRSxTQUEwQjtRQUN4RixNQUFNLGdCQUFnQixHQUFXLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDbkQsTUFBTSxjQUFjLEdBQVcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMvQyxPQUFPLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxxQkFBcUI7WUFDakUsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsQ0FBQztJQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGRlbGF5LCBtYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElOUFVUX1NFQVJDSF9ERUJPVU5DRV9USU1FLCBWQUxJRF9USU1FX01BWF9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgQ2xvdWQgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5JztcbmltcG9ydCB7IFRpbWUgYXMgVGliYVRpbWUgfSBmcm9tICcuL2RhdGUudXRpbCc7XG5cbmNvbnN0IE1JTl9BTExPV0VEX0JBTEFOQ0UgPSAwO1xuY29uc3QgTUFYX0FMTE9XRURfQkFMQU5DRSA9IDI1NTtcbmV4cG9ydCBjb25zdCBub0Vtb2ppUmVnZXggPSAvW15hLXpBLVowLTkgXS9nbTtcbmV4cG9ydCBjb25zdCBwYXNzd29yZFJlZ2V4ID0gL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxdXl9ge3x9fl0pW0EtWmEtelxcZCFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xcXV5fYHt8fX5dezQsfSQvZztcbmV4cG9ydCBjb25zdCBwb3NpdGl2ZU51bWJlcnNSZWdleCA9IC9eWzAtOV0rKFxcLj9bMC05XSspPyQvO1xuZXhwb3J0IGNvbnN0IHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4ID0gL14oPz0uKlsxLTldKVxcZCooPzpcXC5cXGQrKT8kLztcbmV4cG9ydCBjb25zdCBhbHBoYW51bWVyaWNSZWdleCA9IC9eW2EtekEtWjAtOV0rJC87XG5leHBvcnQgY29uc3QgbW9iaWxlUmVnZXggPSAvXlswLTldKyQvO1xuZXhwb3J0IGNvbnN0IGludGVnZXJOdW1iZXJzUmVnZXggPSAvXlstXT8oXFxkKyk/JC87XG5leHBvcnQgY29uc3QgZGVjaW1hbFBvc2l0aXZlUmVnZXggPSAvXihcXGQrKShcXC5cXGR7MSwyfSk/JC87XG5leHBvcnQgY29uc3QgZGVjaW1hbFJlZ2V4ID0gL14tPyhcXGQrKShcXC5cXGR7MSwyfSk/JC87XG5leHBvcnQgY29uc3QgcmVnZXhFeHAgPSAvXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvO1xuZXhwb3J0IGNvbnN0IHBvc2l0aXZlSW50ZWdlck51bWJlcnNJbmNsdWRlWmVyb1JlZ2V4ID0gL14oMHxbMS05XVxcZCopJC87XG5leHBvcnQgY29uc3QgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4ID0gL15bMS05XVxcZCokLztcbmV4cG9ydCBjb25zdCBwZXJjZW50YWdlUmVnZXggPSAvXigxMDAoXFwuMCspP3xbMS05XT9cXGQoXFwuXFxkKyk/KSQvO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eSh2YWw6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09ICcnKTtcbn1cblxuZXhwb3J0IGNsYXNzIFRpYmFWYWxpZGF0b3JzIHtcblxuICAvLyBObyBlbW9qaSB2YWxpZGF0aW9uXG4gIHN0YXRpYyBub0Vtb2ppKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgdmFsLnRvU3RyaW5nKCkubWF0Y2gobm9FbW9qaVJlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbm9FbW9qaToge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBub0Vtb2ppUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBwZXJjZW50YWdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKHBlcmNlbnRhZ2VSZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBlcmNlbnRhZ2VSZWdleDoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBwZXJjZW50YWdlUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE1vYmlsZSBvbmx5IHZhbGlkYXRpb25cbiAgc3RhdGljIG1vYmlsZU51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gobW9iaWxlUmVnZXgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2JpbGVOdW1iZXJzOiB7XG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxuICAgICAgICAgIHBhdHRlcm46IG1vYmlsZVJlZ2V4XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgaG90ZWxSb29uTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChhbHBoYW51bWVyaWNSZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFscGhhbnVtZXJpY1JlZ2V4OiB7XG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxuICAgICAgICAgIHBhdHRlcm46IGFscGhhbnVtZXJpY1JlZ2V4XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKHBvc2l0aXZlSW50ZWdlck51bWJlcnNJbmNsdWRlWmVyb1JlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvUmVnZXg6IHtcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgICAgcGF0dGVybjogcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBwb3NpdGl2ZUludGVnZXJOdW1iZXJzV2l0aG91dFplcm9SZWdleChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXg6IHtcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgICAgcGF0dGVybjogcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBEZWNpbWFsIFBvc2l0aXZlIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXG4gIHN0YXRpYyBkZWNpbWFsUG9zaXRpdmVOdW1iZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChkZWNpbWFsUG9zaXRpdmVSZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2ltYWxQb3NpdGl2ZU51bWJlcnM6IHtcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgICAgcGF0dGVybjogZGVjaW1hbFJlZ2V4XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRGVjaW1hbCBOdW1iZXJzIG9ubHkgdmFsaWRhdGlvblxuICBzdGF0aWMgZGVjaW1hbE51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2goZGVjaW1hbFJlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaW1hbFBvc2l0aXZlTnVtYmVyczoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBkZWNpbWFsUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFBvc2l0aXZlIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXG4gIHN0YXRpYyBwb3NpdGl2ZU51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocG9zaXRpdmVOdW1iZXJzUmVnZXgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwb3NpdGl2ZU51bWJlcnM6IHtcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgICAgcGF0dGVybjogcG9zaXRpdmVOdW1iZXJzUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFBvc2l0aXZlIE51bWJlcnMgd2l0aG91dCB6ZXJvIHZhbGlkYXRpb25cbiAgc3RhdGljIHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwb3NpdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybzoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gUG9zaXRpdmUgLyBOZWdldGl2ZSBOdW1iZXJzIG9ubHkgdmFsaWRhdGlvblxuICBzdGF0aWMgaW50ZWdlck51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2goaW50ZWdlck51bWJlcnNSZWdleCkpIHJldHVybiB7XG4gICAgICBpbnRlZ2VyTnVtYmVyczoge1xuICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgIHBhdHRlcm46IGludGVnZXJOdW1iZXJzUmVnZXhcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBOdW1iZXIgbGVuZ3RoXG4gIHN0YXRpYyBudW1lcmljTGVuZ3RoKGxlbmd0aDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgdmFsLnRvU3RyaW5nKCkubGVuZ3RoICE9PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbnZhbGlkTnVtYmVyTGVuZ3RoOiB7XG4gICAgICAgICAgICBhY3R1YWxMZW5ndGg6IHZhbCxcbiAgICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiBsZW5ndGhcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgUGFzc3dvcmRWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZT8ubWF0Y2gocGFzc3dvcmRSZWdleCkpIHtcbiAgICAgIHJldHVybiB7IHBhc3N3b3JkUG9saWN5UmVxdWlyZW1lbnRzOiB0cnVlIH07XG4gICAgfVxuICAgIGlmIChjb250cm9sLnZhbHVlLmxlbmd0aCA8IDgpIHtcbiAgICAgIHJldHVybiB7IG1pbmxlbmd0aDogeyByZXF1aXJlZExlbmd0aDogOCB9IH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIEd1aWRWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghcmVnZXhFeHAudGVzdChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgZ3VpZElzVmFsaWQ6IHRydWUgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgUGFzc3dvcmRGb3JtTWF0Y2hWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYXNzd29yZCA9IGNvbnRyb2wuZ2V0KCdwYXNzd29yZCcpO1xuICAgIGNvbnN0IGNvbmZpcm1QYXNzd29yZCA9IGNvbnRyb2wuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcbiAgICBpZiAoKG5ld1Bhc3N3b3JkLmVycm9ycyB8fCBjb25maXJtUGFzc3dvcmQuZXJyb3JzKSB8fFxuICAgICAgbmV3UGFzc3dvcmQudmFsdWUgPT09IGNvbmZpcm1QYXNzd29yZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIFBhc3N3b3JkcyBtYXRjaCBvciBmb3JtIGZpZWxkcyBoYXMgaXRzIG93biBlcnJvcnNcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBmcm9tVG9OdW1iZXJWYWxpZGF0b3IoZnJvbUNvbnRyb2xOYW1lOiBzdHJpbmcsIHRvQ29udHJvbE5hbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCByZXNwb25zZSA9IG51bGw7IC8vIFJldHVybiBudWxsIGlmIHZhbGlkYXRpb24gcGFzc2VzXG4gICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xuICAgICAgICBjb25zdCBmcm9tQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZnJvbUNvbnRyb2xOYW1lKTtcbiAgICAgICAgY29uc3QgdG9Db250cm9sID0gZm9ybUdyb3VwLmdldCh0b0NvbnRyb2xOYW1lKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUdyZWF0ZXJUaGFuT3JFcXVhbFRvKGZyb21Db250cm9sLCB0b0NvbnRyb2wpICYmICF0b0NvbnRyb2wuaGFzRXJyb3IoJ2Zvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX251bWJlcl9yYW5nZScpKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIHZhbGlkYXRpb24gZXJyb3IgaWYgJ2Zyb20nIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAndG8nIHZhbHVlXG4gICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX251bWJlcl9yYW5nZTogdHJ1ZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKHRvQ29udHJvbC5oYXNFcnJvcignZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfbnVtYmVyX3JhbmdlJykpIHtcbiAgICAgICAgICAvLyByZXNldCB0aGUgZXJyb3Igb2Yg4oCYdG/igJkgY29udHJvbCB3aGVuIOKAmGZyb23igJkgY29udHJvbCBpcyB2YWxpZCBhbmQgdG8gY29udHJvbCBjb250YWlucyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF9udW1iZXJfcmFuZ2VcbiAgICAgICAgICB0b0NvbnRyb2wuc2V0RXJyb3JzKHt9KTtcbiAgICAgICAgICB0b0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNhbGN1bGF0ZUJhbGFuY2UgPSAodW5pdHNWYWx1ZSwgYmFsYW5jZVZhbHVlKSA9PiB7IHJldHVybiB1bml0c1ZhbHVlICsgYmFsYW5jZVZhbHVlIH1cblxuICBzdGF0aWMgdW5pdHNCYWxhbmNlVmFsaWRhdG9yKHVuaXRzQ29udHJvbE5hbWU6IHN0cmluZywgYmFsYW5jZUNvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2UgPSBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuICAgICAgaWYgKGNvbnRyb2wucGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1Hcm91cDtcbiAgICAgICAgY29uc3QgdW5pdHNDb250cm9sID0gZm9ybUdyb3VwLmdldCh1bml0c0NvbnRyb2xOYW1lKTtcbiAgICAgICAgY29uc3QgYmFsYW5jZUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGJhbGFuY2VDb250cm9sTmFtZSk7XG4gICAgICAgIGNvbnN0IHVuaXRzVmFsdWUgPSBwYXJzZUludCh1bml0c0NvbnRyb2wudmFsdWUpO1xuICAgICAgICBjb25zdCBiYWxhbmNlVmFsdWUgPSBiYWxhbmNlQ29udHJvbC52YWx1ZTtcbiAgICAgICAgY29uc3QgYmFsYW5jZUNhbGN1bGF0ZWQgPSB0aGlzLmNhbGN1bGF0ZUJhbGFuY2UodW5pdHNWYWx1ZSwgYmFsYW5jZVZhbHVlKVxuICAgICAgICBpZiAoYmFsYW5jZUNhbGN1bGF0ZWQgPiBNQVhfQUxMT1dFRF9CQUxBTkNFKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl91bml0c19iYWxhbmNlX21heGltdW06IHRydWUgfTtcbiAgICAgICAgfSBlbHNlIGlmIChiYWxhbmNlQ2FsY3VsYXRlZCA8IE1JTl9BTExPV0VEX0JBTEFOQ0UpIHtcbiAgICAgICAgICByZXNwb25zZSA9IHsgZm9ybV92YWxpZGF0aW9uX3VuaXRzX2JhbGFuY2VfbWluaW11bTogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBtaW5EYXRlVGltZShjb250cm9sTmFtZTogc3RyaW5nLCBtaW5EYXRlVGltZVZhbHVlOiBEYXRlKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbEdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2UgPSBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuXG4gICAgICBpZiAoY29udHJvbEdyb3VwLnBhcmVudCkge1xuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sR3JvdXAucGFyZW50IGFzIEZvcm1Hcm91cDtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpO1xuICAgICAgICBjb25zdCBjb250cm9sVmFsdWU6IERhdGUgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgIGlmIChjb250cm9sVmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sRGF0ZSA9IG5ldyBEYXRlKGNvbnRyb2xWYWx1ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgY29uc3QgbWluRGF0ZSA9IG5ldyBEYXRlKG1pbkRhdGVUaW1lVmFsdWUpLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXG4gICAgICAgICAgaWYgKGNvbnRyb2xEYXRlIDwgbWluRGF0ZSkge1xuICAgICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX2Zyb21fdGltZTogdHJ1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVG9EYXRlKGZyb21EYXRlRmllbGQ6IHN0cmluZywgdG9EYXRlRmllbGQ6IHN0cmluZywgZnJvbVRpbWVGaWVsZDogc3RyaW5nID0gbnVsbCxcbiAgICB0b1RpbWVGaWVsZDogc3RyaW5nID0gbnVsbCwgZXJyb3JOYW1lOiBzdHJpbmcgPSAnZnJvbVRvRGF0ZScpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBmcm9tRGF0ZTogRGF0ZSA9IGZvcm1Hcm91cC5nZXQoZnJvbURhdGVGaWVsZCk/LnZhbHVlO1xuICAgICAgY29uc3QgdG9EYXRlOiBEYXRlID0gZm9ybUdyb3VwLmdldCh0b0RhdGVGaWVsZCk/LnZhbHVlO1xuICAgICAgY29uc3QgZnJvbVRpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldChmcm9tVGltZUZpZWxkKT8udmFsdWU7XG4gICAgICBjb25zdCB0b1RpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldCh0b1RpbWVGaWVsZCk/LnZhbHVlO1xuICAgICAgaWYgKGZyb21UaW1lKSB7XG4gICAgICAgIGZyb21EYXRlLnNldEhvdXJzKGZyb21UaW1lLmhvdXJzKTtcbiAgICAgICAgZnJvbURhdGUuc2V0TWludXRlcyhmcm9tVGltZS5taW51dGVzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0b1RpbWUpIHtcbiAgICAgICAgdG9EYXRlLnNldEhvdXJzKHRvVGltZS5ob3Vycyk7XG4gICAgICAgIHRvRGF0ZS5zZXRNaW51dGVzKHRvVGltZS5taW51dGVzKTtcbiAgICAgIH1cbiAgICAgIGlmICgoZnJvbURhdGUgIT09IG51bGwgJiYgdG9EYXRlICE9PSBudWxsKSAmJiBmcm9tRGF0ZSA+IHRvRGF0ZSkge1xuICAgICAgICByZXR1cm4geyBbZXJyb3JOYW1lXTogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVG9UaW1lUmFuZ2UoZnJvbVRpbWVGaWVsZDogc3RyaW5nLCB0b1RpbWVGaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlID0gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAgICAgIGlmIChjb250cm9sLnBhcmVudCkge1xuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XG4gICAgICAgIGNvbnN0IHRvQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQodG9UaW1lRmllbGQpO1xuICAgICAgICBjb25zdCBmcm9tQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZnJvbVRpbWVGaWVsZCk7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsdWVHcmVhdGVyVGhhbk9yRXF1YWxUbyhmcm9tQ29udHJvbCwgdG9Db250cm9sKSAmJiB0aGlzLmlzVmFsdWVMZW5ndGhWYWxpZChmcm9tQ29udHJvbCwgdG9Db250cm9sKSAmJlxuICAgICAgICAgICF0b0NvbnRyb2wuaGFzRXJyb3IoJ2Zvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2UnKSkge1xuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlOiB0cnVlIH07XG4gICAgICAgIH0gZWxzZSBpZiAodG9Db250cm9sLmhhc0Vycm9yKCdmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlJykpIHtcbiAgICAgICAgICAvLyByZXNldCB0aGUgZXJyb3Igb2Yg4oCYdG/igJkgY29udHJvbCB3aGVuIOKAmGZyb23igJkgY29udHJvbCBpcyB2YWxpZCBhbmQgdG8gY29udHJvbCBjb250YWlucyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlXG4gICAgICAgICAgdG9Db250cm9sLnNldEVycm9ycyh7fSk7XG4gICAgICAgICAgdG9Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVG9UaW1lKGZyb21UaW1lRmllbGQ6IHN0cmluZywgdG9UaW1lRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGZyb21UaW1lOiBUaWJhVGltZSA9IGZvcm1Hcm91cC5nZXQoZnJvbVRpbWVGaWVsZCkudmFsdWU7XG4gICAgICBjb25zdCB0b1RpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldCh0b1RpbWVGaWVsZCkudmFsdWU7XG4gICAgICBpZiAoIXRoaXMuaXNUaW1lTnVsbChmcm9tVGltZSkgJiYgIXRoaXMuaXNUaW1lTnVsbCh0b1RpbWUpICYmIChcbiAgICAgICAgKGZyb21UaW1lLmhvdXJzID4gdG9UaW1lLmhvdXJzKSB8fFxuICAgICAgICAoZnJvbVRpbWUuaG91cnMgPT0gdG9UaW1lLmhvdXJzICYmIGZyb21UaW1lLm1pbnV0ZXMgPiB0b1RpbWUubWludXRlcylcbiAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIHsgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZV9yYW5nZTogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVGltZU51bGwgPSAodGltZTogVGliYVRpbWUpID0+IHRpbWUgPT09IG51bGwgfHxcbiAgICAodGltZS5ob3VycyA9PT0gbnVsbCAmJiB0aW1lLm1pbnV0ZXMgPT09IG51bGwgJiYgdGltZS5zZWNvbmRzID09PSBudWxsKTtcblxuICBzdGF0aWMgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgPT5cbiAgICAhaXNOdWxsT3JFbXB0eShjb250cm9sLnZhbHVlKSAmJiBpc051bGxPckVtcHR5KGNvbnRyb2w/LnZhbHVlPy50cmltKCkpID8geyByZXF1aXJlZDogdHJ1ZSB9IDogbnVsbDtcblxuICBzdGF0aWMgbm9XaGl0ZXNwYWNlV2l0aGluU2VudGVuY2VWYWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PlxuICAgICEoY29udHJvbD8udmFsdWU/LnNwbGl0KFwiIFwiKS5sZW5ndGggPT09IDEpID8geyBub1doaXRlc3BhY2VXaXRoaW5TZW50ZW5jZTogdHJ1ZSB9IDogbnVsbDtcblxuICBzdGF0aWMgdGVybXNQb2xpY3lDaGVja2JveCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZFRlcm1zOiB0cnVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHZhbGlkYXRlRGVmYXVsdEFjY2Vzc1Byb2ZpbGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFpc051bGxPckVtcHR5KGNvbnRyb2wudmFsdWUpICYmICFjb250cm9sLnZhbHVlPy5kZWZhdWx0QWNjZXNzUHJvZmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbm9EZWZhdWx0QWNjZXNzUHJvZmlsZToge1xuICAgICAgICAgIGNvbXBhbnlOYW1lOiBjb250cm9sLnZhbHVlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyB6UmFuZ2UodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgZnJvbVpGaWVsZDogc3RyaW5nLCB0b1pGaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBmcm9tWkNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZyb21aRmllbGQpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICBjb25zdCB0b1pDb250cm9sID0gZm9ybUdyb3VwLmdldCh0b1pGaWVsZCkgYXMgVW50eXBlZEZvcm1BcnJheTtcblxuICAgICAgaWYgKGZyb21aQ29udHJvbC52YWx1ZT8uaWQgPiB0b1pDb250cm9sLnZhbHVlPy5pZCkge1xuICAgICAgICByZXR1cm4geyB6UmFuZ2U6IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uaW52YWxpZF9maWVsZHMpIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgcmVxdWlyZWRDcmVkZW50aWFscyh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBjYXJQbGF0ZUZpZWxkOiBzdHJpbmcgPSAnY2FyUGxhdGUnLCBtb2JpbGVGaWVsZDogc3RyaW5nID0gJ21vYmlsZScsIGJhZGdlRmllbGQ6IHN0cmluZyA9ICdiYWRnZScsXG4gICAgZW1haWxGaWVsZDogc3RyaW5nID0gJ2VtYWlsJywgc2VuZEVtYWlsRmllbGQ6IHN0cmluZyA9ICdzZW5kRW1haWwnKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgbnVsbCA9PiB7XG4gICAgICBsZXQgY2FyUGxhdGVzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgbGV0IGJhZGdlc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgIGxldCBpbnRlcnBvbGF0ZWRDcmVkZW50aWFsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgLy8gQ2FyZHNcbiAgICAgIGNvbnN0IGJhZGdlc0Zvcm1BcnJheSA9IGZvcm1Hcm91cC5nZXQoYmFkZ2VGaWVsZCkgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICAgIGlmIChiYWRnZXNGb3JtQXJyYXkpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucHVzaCh0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhcmQpKTtcbiAgICAgICAgYmFkZ2VzSW52YWxpZCA9IHRoaXMuaXNGb3JtQ29udHJvbExpc3RJbnZhbGlkKGJhZGdlc0Zvcm1BcnJheS52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0NhcmRzSW52YWxpZCA9IGJhZGdlc0ludmFsaWQgfHwgIWJhZGdlc0Zvcm1BcnJheTtcblxuICAgICAgLy9DYXIgcGxhdGVzXG4gICAgICBjb25zdCBjYXJQbGF0ZXNGb3JtQXJyYXkgPSBmb3JtR3JvdXAuZ2V0KGNhclBsYXRlRmllbGQpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICBpZiAoY2FyUGxhdGVzRm9ybUFycmF5KSB7XG4gICAgICAgIGludGVycG9sYXRlZENyZWRlbnRpYWxzLnB1c2godHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYXJfcGxhdGUpKTtcbiAgICAgICAgY2FyUGxhdGVzSW52YWxpZCA9IHRoaXMuaXNGb3JtQ29udHJvbExpc3RJbnZhbGlkKGNhclBsYXRlc0Zvcm1BcnJheS52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0NhclBsYXRlc0ludmFsaWQgPSBjYXJQbGF0ZXNJbnZhbGlkIHx8ICFjYXJQbGF0ZXNGb3JtQXJyYXk7XG5cbiAgICAgIC8vIE1vYmlsZVxuICAgICAgY29uc3QgbW9iaWxlRm9ybUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KG1vYmlsZUZpZWxkKTtcbiAgICAgIGlmIChtb2JpbGVGb3JtQ29udHJvbCkge1xuICAgICAgICBpbnRlcnBvbGF0ZWRDcmVkZW50aWFscy5wdXNoKHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ubW9iaWxlKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpc01vYmlsZUludmFsaWQgPSAhbW9iaWxlRm9ybUNvbnRyb2w/LnZhbHVlO1xuXG4gICAgICAvLyBFbWFpbFxuICAgICAgY29uc3QgZW1haWxGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZW1haWxGaWVsZCk7XG4gICAgICBjb25zdCBzZW5kRW1haWxGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoc2VuZEVtYWlsRmllbGQpO1xuICAgICAgaWYgKGVtYWlsRm9ybUNvbnRyb2wgJiYgc2VuZEVtYWlsRm9ybUNvbnRyb2w/LnZhbHVlKSB7XG4gICAgICAgIGludGVycG9sYXRlZENyZWRlbnRpYWxzLnB1c2godHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5lbWFpbCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNFbWFpbEludmFsaWQgPSAhKHNlbmRFbWFpbEZvcm1Db250cm9sPy52YWx1ZSAmJiBlbWFpbEZvcm1Db250cm9sPy52YWx1ZSlcblxuICAgICAgY29uc3QgaXNSZXF1aXJlZENyZWRlbnRpYWxzID0gaXNDYXJQbGF0ZXNJbnZhbGlkICYmIGlzQ2FyZHNJbnZhbGlkICYmIGlzTW9iaWxlSW52YWxpZCAmJiBpc0VtYWlsSW52YWxpZDtcblxuICAgICAgaWYgKGlzUmVxdWlyZWRDcmVkZW50aWFscykge1xuICAgICAgICBjb25zdCBsYXN0Q3JlZGVudGlhbCA9IGludGVycG9sYXRlZENyZWRlbnRpYWxzLnBvcCgpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVQYXJhbXMgPSBgJHtpbnRlcnBvbGF0ZWRDcmVkZW50aWFscy5qb2luKCcsICcpfSAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ub3IpfSAke2xhc3RDcmVkZW50aWFsfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVxdWlyZWRDcmVkZW50aWFsczogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5yZXF1aXJlZF9jcmVkZW50aWFsc19tZXNzYWdlLCB7IGNyZWRlbnRpYWxzOiBpbnRlcnBvbGF0ZVBhcmFtcyB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNGb3JtQ29udHJvbExpc3RJbnZhbGlkKGxpc3Q6IFVudHlwZWRGb3JtQ29udHJvbFtdKSB7XG4gICAgbGV0IGlzSW52YWxpZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBsaXN0KSB7XG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzSW52YWxpZDtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZERheXMoc3BlY2lhbERheXNGaWVsZDogc3RyaW5nLCB3ZWVrRGF5c0ZpZWxkOiBzdHJpbmcsIGVycm9yTmFtZTogc3RyaW5nID0gJ3JlcXVpcmVkRGF5cycpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBzcGVjaWFsRGF5czogbnVtYmVyID0gZm9ybUdyb3VwLmdldChzcGVjaWFsRGF5c0ZpZWxkKS52YWx1ZTtcbiAgICAgIGNvbnN0IHdlZWtEYXlzOiBudW1iZXIgPSBmb3JtR3JvdXAuZ2V0KHdlZWtEYXlzRmllbGQpLnZhbHVlO1xuICAgICAgaWYgKHNwZWNpYWxEYXlzID4gMCB8fCB3ZWVrRGF5cyA+IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IFtlcnJvck5hbWVdOiB0cnVlIH07XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBpc1JvbGVOYW1lRXhpc3RzKHJvbGVTZXJ2aWNlUHJveHk6IENsb3VkLlJvbGVTZXJ2aWNlUHJveHksIHJvbGVJZDogbnVtYmVyKTogQXN5bmNWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnM+ID0+IHtcbiAgICAgIHJldHVybiBvZihjb250cm9sLnZhbHVlKS5waXBlKFxuICAgICAgICBkZWxheSg1MDApLFxuICAgICAgICBkZWJvdW5jZVRpbWUoSU5QVVRfU0VBUkNIX0RFQk9VTkNFX1RJTUUpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gcm9sZVNlcnZpY2VQcm94eS5pc0V4aXN0cyhjb250cm9sLnZhbHVlLCByb2xlSWQgPz8gdW5kZWZpbmVkKS5waXBlKFxuICAgICAgICAgIG1hcChyZXMgPT4gcmVzLmRhdGEgPT09IHRydWUgfHwgIXJlcy5pc1N1Y2Nlc3MgPyB7IHJvbGVOYW1lQWxyZWFkeUV4aXN0czogdHJ1ZSB9IDogbnVsbCkpKSk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyB0aWJhVGltZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsOiBUaWJhVGltZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAodmFsICYmICh2YWwuaG91cnMgPT09IG51bGwgfHwgdmFsLm1pbnV0ZXMgPT09IG51bGwpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkVGltZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyB0aW1lVmFsaWRhdG9yKGZyb21Ib3VyOiBudW1iZXIsIGZyb21NaW51dGVzOiBudW1iZXIsIHRvSG91cjogbnVtYmVyLCB0b01pbnV0ZXM6IG51bWJlcik6IGFueSB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBpZiAoISFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIGlmIChjb250cm9sLnZhbHVlLmxlbmd0aCAhPT0gNCkgeyAvLyBBc3N1bWluZyB5b3VyIHRpbWUgZm9ybWF0IGlzICdISE1NJ1xuICAgICAgICAgIHJldHVybiB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfZm9ybWF0OiB0cnVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaG91cnM6IG51bWJlciA9IHBhcnNlSW50KGNvbnRyb2wudmFsdWUuc2xpY2UoMCwgMikpO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZXM6IG51bWJlciA9IHBhcnNlSW50KGNvbnRyb2wudmFsdWUuc2xpY2UoMikpO1xuICAgICAgICAgIGNvbnN0IGlzVmFsaWRUaW1lID1cbiAgICAgICAgICAgIChob3VycyA+IGZyb21Ib3VyIHx8IChob3VycyA9PT0gZnJvbUhvdXIgJiYgbWludXRlcyA+PSBmcm9tTWludXRlcykpICYmXG4gICAgICAgICAgICAoaG91cnMgPCB0b0hvdXIgfHwgKGhvdXJzID09PSB0b0hvdXIgJiYgbWludXRlcyA8PSB0b01pbnV0ZXMpKTtcbiAgICAgICAgICBpZiAoIWlzVmFsaWRUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lOiB7XG4gICAgICAgICAgICAgICAgZnJvbTogYCR7ZnJvbUhvdXIudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke2Zyb21NaW51dGVzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gLFxuICAgICAgICAgICAgICAgIHRvOiBgJHt0b0hvdXIudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3RvTWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbHVlR3JlYXRlclRoYW5PckVxdWFsVG8oZnJvbUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdG9Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICBjb25zdCBmcm9tVGltZUluTnVtYmVyOiBudW1iZXIgPSBmcm9tQ29udHJvbC52YWx1ZTtcbiAgICBjb25zdCB0b1RpbWVJbk51bWJlcjogbnVtYmVyID0gdG9Db250cm9sLnZhbHVlO1xuICAgIHJldHVybiBmcm9tVGltZUluTnVtYmVyICE9PSBudWxsICYmIHRvVGltZUluTnVtYmVyICE9PSBudWxsICYmICtmcm9tVGltZUluTnVtYmVyID4gK3RvVGltZUluTnVtYmVyO1xuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsdWVMZW5ndGhWYWxpZChmcm9tQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCB0b0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZyb21UaW1lSW5OdW1iZXI6IG51bWJlciA9IGZyb21Db250cm9sLnZhbHVlO1xuICAgIGNvbnN0IHRvVGltZUluTnVtYmVyOiBudW1iZXIgPSB0b0NvbnRyb2wudmFsdWU7XG4gICAgcmV0dXJuIGZyb21UaW1lSW5OdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggPT09IFZBTElEX1RJTUVfTUFYX0xFTkdUSCAmJlxuICAgICAgdG9UaW1lSW5OdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggPT09IFZBTElEX1RJTUVfTUFYX0xFTkdUSDtcbiAgfVxufVxuIl19
|
|
485
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbGlkYXRvci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy9jdXN0b20tdmFsaWRhdG9yLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsT0FBTyxFQUFvQixZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0QsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyx5SEFBeUgsQ0FBQztBQUN2SixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHVGQUF1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QUNsQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNwRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUVoRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtnQ0FDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUNyRDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLDJCQUEyQixDQUFDLFdBQTRCLEVBQUUsU0FBMEI7UUFDakcsTUFBTSxnQkFBZ0IsR0FBVyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ25ELE1BQU0sY0FBYyxHQUFXLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDL0MsT0FBTyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksY0FBYyxLQUFLLElBQUksSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsY0FBYyxDQUFDO0lBQ3JHLENBQUM7SUFBQSxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFdBQTRCLEVBQUUsU0FBMEI7UUFDeEYsTUFBTSxnQkFBZ0IsR0FBVyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ25ELE1BQU0sY0FBYyxHQUFXLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDL0MsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUsscUJBQXFCO1lBQ2pFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUsscUJBQXFCLENBQUM7SUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGRlbGF5LCBtYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElOUFVUX1NFQVJDSF9ERUJPVU5DRV9USU1FLCBWQUxJRF9USU1FX01BWF9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgQ2xvdWQgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5JztcbmltcG9ydCB7IFRpbWUgYXMgVGliYVRpbWUsIHRpbWVUb01vbWVudCB9IGZyb20gJy4vZGF0ZS51dGlsJztcblxuY29uc3QgTUlOX0FMTE9XRURfQkFMQU5DRSA9IDA7XG5jb25zdCBNQVhfQUxMT1dFRF9CQUxBTkNFID0gMjU1O1xuZXhwb3J0IGNvbnN0IG5vRW1vamlSZWdleCA9IC9bXmEtekEtWjAtOSBdL2dtO1xuZXhwb3J0IGNvbnN0IHBhc3N3b3JkUmVnZXggPSAvXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlxcZCkoPz0uKlshXCIjJCUmJygpKissLS4vOjs8PT4/QFtcXF1eX2B7fH1+XSlbQS1aYS16XFxkIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxdXl9ge3x9fl17NCx9JC9nO1xuZXhwb3J0IGNvbnN0IHBvc2l0aXZlTnVtYmVyc1JlZ2V4ID0gL15bMC05XSsoXFwuP1swLTldKyk/JC87XG5leHBvcnQgY29uc3QgcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXggPSAvXig/PS4qWzEtOV0pXFxkKig/OlxcLlxcZCspPyQvO1xuZXhwb3J0IGNvbnN0IGFscGhhbnVtZXJpY1JlZ2V4ID0gL15bYS16QS1aMC05XSskLztcbmV4cG9ydCBjb25zdCBtb2JpbGVSZWdleCA9IC9eWzAtOV0rJC87XG5leHBvcnQgY29uc3QgaW50ZWdlck51bWJlcnNSZWdleCA9IC9eWy1dPyhcXGQrKT8kLztcbmV4cG9ydCBjb25zdCBkZWNpbWFsUG9zaXRpdmVSZWdleCA9IC9eKFxcZCspKFxcLlxcZHsxLDJ9KT8kLztcbmV4cG9ydCBjb25zdCBkZWNpbWFsUmVnZXggPSAvXi0/KFxcZCspKFxcLlxcZHsxLDJ9KT8kLztcbmV4cG9ydCBjb25zdCByZWdleEV4cCA9IC9eWzAtOWEtZkEtRl17OH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17MTJ9JC87XG5leHBvcnQgY29uc3QgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvUmVnZXggPSAvXigwfFsxLTldXFxkKikkLztcbmV4cG9ydCBjb25zdCBwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXggPSAvXlsxLTldXFxkKiQvO1xuZXhwb3J0IGNvbnN0IHBlcmNlbnRhZ2VSZWdleCA9IC9eKDEwMChcXC4wKyk/fFsxLTldP1xcZChcXC5cXGQrKT8pJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5KHZhbDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAodmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsIHx8IHZhbCA9PT0gJycpO1xufVxuXG5leHBvcnQgY2xhc3MgVGliYVZhbGlkYXRvcnMge1xuXG4gIC8vIE5vIGVtb2ppIHZhbGlkYXRpb25cbiAgc3RhdGljIG5vRW1vamkoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiB2YWwudG9TdHJpbmcoKS5tYXRjaChub0Vtb2ppUmVnZXgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBub0Vtb2ppOiB7XG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxuICAgICAgICAgIHBhdHRlcm46IG5vRW1vamlSZWdleFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIHBlcmNlbnRhZ2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocGVyY2VudGFnZVJlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGVyY2VudGFnZVJlZ2V4OiB7XG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxuICAgICAgICAgIHBhdHRlcm46IHBlcmNlbnRhZ2VSZWdleFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gTW9iaWxlIG9ubHkgdmFsaWRhdGlvblxuICBzdGF0aWMgbW9iaWxlTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChtb2JpbGVSZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vYmlsZU51bWJlcnM6IHtcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgICAgcGF0dGVybjogbW9iaWxlUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBob3RlbFJvb25OdW1iZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKGFscGhhbnVtZXJpY1JlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWxwaGFudW1lcmljUmVnZXg6IHtcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXG4gICAgICAgICAgcGF0dGVybjogYWxwaGFudW1lcmljUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvUmVnZXgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm9SZWdleDoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm9SZWdleFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIHBvc2l0aXZlSW50ZWdlck51bWJlcnNXaXRob3V0WmVyb1JlZ2V4KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKHBvc2l0aXZlSW50ZWdlck51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBvc2l0aXZlSW50ZWdlck51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleDoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIERlY2ltYWwgUG9zaXRpdmUgTnVtYmVycyBvbmx5IHZhbGlkYXRpb25cbiAgc3RhdGljIGRlY2ltYWxQb3NpdGl2ZU51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKGRlY2ltYWxQb3NpdGl2ZVJlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaW1hbFBvc2l0aXZlTnVtYmVyczoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBkZWNpbWFsUmVnZXhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBEZWNpbWFsIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXG4gIHN0YXRpYyBkZWNpbWFsTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChkZWNpbWFsUmVnZXgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpbWFsUG9zaXRpdmVOdW1iZXJzOiB7XG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxuICAgICAgICAgIHBhdHRlcm46IGRlY2ltYWxSZWdleFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gUG9zaXRpdmUgTnVtYmVycyBvbmx5IHZhbGlkYXRpb25cbiAgc3RhdGljIHBvc2l0aXZlTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwb3NpdGl2ZU51bWJlcnNSZWdleCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBvc2l0aXZlTnVtYmVyczoge1xuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZU51bWJlcnNSZWdleFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gUG9zaXRpdmUgTnVtYmVycyB3aXRob3V0IHplcm8gdmFsaWRhdGlvblxuICBzdGF0aWMgcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvOiB7XG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxuICAgICAgICAgIHBhdHRlcm46IHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBQb3NpdGl2ZSAvIE5lZ2V0aXZlIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXG4gIHN0YXRpYyBpbnRlZ2VyTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChpbnRlZ2VyTnVtYmVyc1JlZ2V4KSkgcmV0dXJuIHtcbiAgICAgIGludGVnZXJOdW1iZXJzOiB7XG4gICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcbiAgICAgICAgcGF0dGVybjogaW50ZWdlck51bWJlcnNSZWdleFxuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE51bWJlciBsZW5ndGhcbiAgc3RhdGljIG51bWVyaWNMZW5ndGgobGVuZ3RoOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiB2YWwudG9TdHJpbmcoKS5sZW5ndGggIT09IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGludmFsaWROdW1iZXJMZW5ndGg6IHtcbiAgICAgICAgICAgIGFjdHVhbExlbmd0aDogdmFsLFxuICAgICAgICAgICAgcmVxdWlyZWRMZW5ndGg6IGxlbmd0aFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBQYXNzd29yZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlPy5tYXRjaChwYXNzd29yZFJlZ2V4KSkge1xuICAgICAgcmV0dXJuIHsgcGFzc3dvcmRQb2xpY3lSZXF1aXJlbWVudHM6IHRydWUgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgOCkge1xuICAgICAgcmV0dXJuIHsgbWlubGVuZ3RoOiB7IHJlcXVpcmVkTGVuZ3RoOiA4IH0gfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgR3VpZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFyZWdleEV4cC50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBndWlkSXNWYWxpZDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBQYXNzd29yZEZvcm1NYXRjaFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gY29udHJvbC5nZXQoJ3Bhc3N3b3JkJyk7XG4gICAgY29uc3QgY29uZmlybVBhc3N3b3JkID0gY29udHJvbC5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpO1xuICAgIGlmICgobmV3UGFzc3dvcmQuZXJyb3JzIHx8IGNvbmZpcm1QYXNzd29yZC5lcnJvcnMpIHx8XG4gICAgICBuZXdQYXNzd29yZC52YWx1ZSA9PT0gY29uZmlybVBhc3N3b3JkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gUGFzc3dvcmRzIG1hdGNoIG9yIGZvcm0gZmllbGRzIGhhcyBpdHMgb3duIGVycm9yc1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBwYXNzd29yZE5vdE1hdGNoOiB0cnVlIH07XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZyb21Ub051bWJlclZhbGlkYXRvcihmcm9tQ29udHJvbE5hbWU6IHN0cmluZywgdG9Db250cm9sTmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlID0gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAgICAgIGlmIChjb250cm9sLnBhcmVudCkge1xuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XG4gICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gZm9ybUdyb3VwLmdldChmcm9tQ29udHJvbE5hbWUpO1xuICAgICAgICBjb25zdCB0b0NvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KHRvQ29udHJvbE5hbWUpO1xuICAgICAgICBpZiAodGhpcy5pc1ZhbHVlR3JlYXRlclRoYW5PckVxdWFsVG8oZnJvbUNvbnRyb2wsIHRvQ29udHJvbCkgJiYgIXRvQ29udHJvbC5oYXNFcnJvcignZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfbnVtYmVyX3JhbmdlJykpIHtcbiAgICAgICAgICAvLyBSZXR1cm4gdmFsaWRhdGlvbiBlcnJvciBpZiAnZnJvbScgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICd0bycgdmFsdWVcbiAgICAgICAgICByZXNwb25zZSA9IHsgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfbnVtYmVyX3JhbmdlOiB0cnVlIH07XG4gICAgICAgIH0gZWxzZSBpZiAodG9Db250cm9sLmhhc0Vycm9yKCdmb3JtX3ZhbGlkYXRpb25faW52YWxpZF9udW1iZXJfcmFuZ2UnKSkge1xuICAgICAgICAgIC8vIHJlc2V0IHRoZSBlcnJvciBvZiDigJh0b+KAmSBjb250cm9sIHdoZW4g4oCYZnJvbeKAmSBjb250cm9sIGlzIHZhbGlkIGFuZCB0byBjb250cm9sIGNvbnRhaW5zIGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX251bWJlcl9yYW5nZVxuICAgICAgICAgIHRvQ29udHJvbC5zZXRFcnJvcnMoe30pO1xuICAgICAgICAgIHRvQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2FsY3VsYXRlQmFsYW5jZSA9ICh1bml0c1ZhbHVlLCBiYWxhbmNlVmFsdWUpID0+IHsgcmV0dXJuIHVuaXRzVmFsdWUgKyBiYWxhbmNlVmFsdWUgfVxuXG4gIHN0YXRpYyB1bml0c0JhbGFuY2VWYWxpZGF0b3IodW5pdHNDb250cm9sTmFtZTogc3RyaW5nLCBiYWxhbmNlQ29udHJvbE5hbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCByZXNwb25zZSA9IG51bGw7IC8vIFJldHVybiBudWxsIGlmIHZhbGlkYXRpb24gcGFzc2VzXG4gICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xuICAgICAgICBjb25zdCB1bml0c0NvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KHVuaXRzQ29udHJvbE5hbWUpO1xuICAgICAgICBjb25zdCBiYWxhbmNlQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoYmFsYW5jZUNvbnRyb2xOYW1lKTtcbiAgICAgICAgY29uc3QgdW5pdHNWYWx1ZSA9IHBhcnNlSW50KHVuaXRzQ29udHJvbC52YWx1ZSk7XG4gICAgICAgIGNvbnN0IGJhbGFuY2VWYWx1ZSA9IGJhbGFuY2VDb250cm9sLnZhbHVlO1xuICAgICAgICBjb25zdCBiYWxhbmNlQ2FsY3VsYXRlZCA9IHRoaXMuY2FsY3VsYXRlQmFsYW5jZSh1bml0c1ZhbHVlLCBiYWxhbmNlVmFsdWUpXG4gICAgICAgIGlmIChiYWxhbmNlQ2FsY3VsYXRlZCA+IE1BWF9BTExPV0VEX0JBTEFOQ0UpIHtcbiAgICAgICAgICByZXNwb25zZSA9IHsgZm9ybV92YWxpZGF0aW9uX3VuaXRzX2JhbGFuY2VfbWF4aW11bTogdHJ1ZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKGJhbGFuY2VDYWxjdWxhdGVkIDwgTUlOX0FMTE9XRURfQkFMQU5DRSkge1xuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25fdW5pdHNfYmFsYW5jZV9taW5pbXVtOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIG1pbkRhdGVUaW1lKGNvbnRyb2xOYW1lOiBzdHJpbmcsIG1pbkRhdGVUaW1lVmFsdWU6IERhdGUpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCByZXNwb25zZSA9IG51bGw7IC8vIFJldHVybiBudWxsIGlmIHZhbGlkYXRpb24gcGFzc2VzXG5cbiAgICAgIGlmIChjb250cm9sR3JvdXAucGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2xHcm91cC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZTogRGF0ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKGNvbnRyb2xWYWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2xEYXRlID0gbmV3IERhdGUoY29udHJvbFZhbHVlKS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluRGF0ZVRpbWVWYWx1ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICAgICAgICBpZiAoY29udHJvbERhdGUgPCBtaW5EYXRlKSB7XG4gICAgICAgICAgICByZXNwb25zZSA9IHsgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfZnJvbV90aW1lOiB0cnVlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ub0RhdGUoZnJvbURhdGVGaWVsZDogc3RyaW5nLCB0b0RhdGVGaWVsZDogc3RyaW5nLCBmcm9tVGltZUZpZWxkOiBzdHJpbmcgPSBudWxsLFxuICAgIHRvVGltZUZpZWxkOiBzdHJpbmcgPSBudWxsLCBlcnJvck5hbWU6IHN0cmluZyA9ICdmcm9tVG9EYXRlJyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGZyb21EYXRlOiBEYXRlID0gZm9ybUdyb3VwLmdldChmcm9tRGF0ZUZpZWxkKT8udmFsdWU7XG4gICAgICBjb25zdCB0b0RhdGU6IERhdGUgPSBmb3JtR3JvdXAuZ2V0KHRvRGF0ZUZpZWxkKT8udmFsdWU7XG4gICAgICBjb25zdCBmcm9tVGltZTogVGliYVRpbWUgPSBmb3JtR3JvdXAuZ2V0KGZyb21UaW1lRmllbGQpPy52YWx1ZTtcbiAgICAgIGNvbnN0IHRvVGltZTogVGliYVRpbWUgPSBmb3JtR3JvdXAuZ2V0KHRvVGltZUZpZWxkKT8udmFsdWU7XG4gICAgICBpZiAoZnJvbVRpbWUpIHtcbiAgICAgICAgZnJvbURhdGUuc2V0SG91cnMoZnJvbVRpbWUuaG91cnMpO1xuICAgICAgICBmcm9tRGF0ZS5zZXRNaW51dGVzKGZyb21UaW1lLm1pbnV0ZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHRvVGltZSkge1xuICAgICAgICB0b0RhdGUuc2V0SG91cnModG9UaW1lLmhvdXJzKTtcbiAgICAgICAgdG9EYXRlLnNldE1pbnV0ZXModG9UaW1lLm1pbnV0ZXMpO1xuICAgICAgfVxuICAgICAgaWYgKChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpICYmIGZyb21EYXRlID4gdG9EYXRlKSB7XG4gICAgICAgIHJldHVybiB7IFtlcnJvck5hbWVdOiB0cnVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ub1RpbWVSYW5nZShmcm9tVGltZUZpZWxkOiBzdHJpbmcsIHRvVGltZUZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2UgPSBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuICAgICAgaWYgKGNvbnRyb2wucGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1Hcm91cDtcbiAgICAgICAgY29uc3QgdG9Db250cm9sID0gZm9ybUdyb3VwLmdldCh0b1RpbWVGaWVsZCk7XG4gICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gZm9ybUdyb3VwLmdldChmcm9tVGltZUZpZWxkKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUdyZWF0ZXJUaGFuT3JFcXVhbFRvKGZyb21Db250cm9sLCB0b0NvbnRyb2wpICYmIHRoaXMuaXNWYWx1ZUxlbmd0aFZhbGlkKGZyb21Db250cm9sLCB0b0NvbnRyb2wpICYmXG4gICAgICAgICAgIXRvQ29udHJvbC5oYXNFcnJvcignZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZV9yYW5nZScpKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2U6IHRydWUgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0b0NvbnRyb2wuaGFzRXJyb3IoJ2Zvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2UnKSkge1xuICAgICAgICAgIC8vIHJlc2V0IHRoZSBlcnJvciBvZiDigJh0b+KAmSBjb250cm9sIHdoZW4g4oCYZnJvbeKAmSBjb250cm9sIGlzIHZhbGlkIGFuZCB0byBjb250cm9sIGNvbnRhaW5zIGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2VcbiAgICAgICAgICB0b0NvbnRyb2wuc2V0RXJyb3JzKHt9KTtcbiAgICAgICAgICB0b0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ub1RpbWUoZnJvbVRpbWVGaWVsZDogc3RyaW5nLCB0b1RpbWVGaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgZnJvbVRpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldChmcm9tVGltZUZpZWxkKS52YWx1ZTtcbiAgICAgIGNvbnN0IHRvVGltZTogVGliYVRpbWUgPSBmb3JtR3JvdXAuZ2V0KHRvVGltZUZpZWxkKS52YWx1ZTtcbiAgICAgIGlmICghdGhpcy5pc1RpbWVOdWxsKGZyb21UaW1lKSAmJiAhdGhpcy5pc1RpbWVOdWxsKHRvVGltZSkgJiYgKFxuICAgICAgICAoZnJvbVRpbWUuaG91cnMgPiB0b1RpbWUuaG91cnMpIHx8XG4gICAgICAgIChmcm9tVGltZS5ob3VycyA9PSB0b1RpbWUuaG91cnMgJiYgZnJvbVRpbWUubWludXRlcyA+IHRvVGltZS5taW51dGVzKVxuICAgICAgKSkge1xuICAgICAgICByZXR1cm4geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlOiB0cnVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUaW1lTnVsbCA9ICh0aW1lOiBUaWJhVGltZSkgPT4gdGltZSA9PT0gbnVsbCB8fFxuICAgICh0aW1lLmhvdXJzID09PSBudWxsICYmIHRpbWUubWludXRlcyA9PT0gbnVsbCAmJiB0aW1lLnNlY29uZHMgPT09IG51bGwpO1xuXG4gIHN0YXRpYyBub1doaXRlc3BhY2VWYWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PlxuICAgICFpc051bGxPckVtcHR5KGNvbnRyb2wudmFsdWUpICYmIGlzTnVsbE9yRW1wdHkoY29udHJvbD8udmFsdWU/LnRyaW0oKSkgPyB7IHJlcXVpcmVkOiB0cnVlIH0gOiBudWxsO1xuXG4gIHN0YXRpYyBub1doaXRlc3BhY2VXaXRoaW5TZW50ZW5jZVZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzID0+XG4gICAgIShjb250cm9sPy52YWx1ZT8uc3BsaXQoXCIgXCIpLmxlbmd0aCA9PT0gMSkgPyB7IG5vV2hpdGVzcGFjZVdpdGhpblNlbnRlbmNlOiB0cnVlIH0gOiBudWxsO1xuXG4gIHN0YXRpYyB0ZXJtc1BvbGljeUNoZWNrYm94KCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmICghY29udHJvbCB8fCAhY29udHJvbC52YWx1ZSkge1xuICAgICAgICByZXR1cm4geyBpbnZhbGlkVGVybXM6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGVEZWZhdWx0QWNjZXNzUHJvZmlsZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkoY29udHJvbC52YWx1ZSkgJiYgIWNvbnRyb2wudmFsdWU/LmRlZmF1bHRBY2Nlc3NQcm9maWxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBub0RlZmF1bHRBY2Nlc3NQcm9maWxlOiB7XG4gICAgICAgICAgY29tcGFueU5hbWU6IGNvbnRyb2wudmFsdWUubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIHpSYW5nZSh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBmcm9tWkZpZWxkOiBzdHJpbmcsIHRvWkZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGZyb21aQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZnJvbVpGaWVsZCkgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IHRvWkNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KHRvWkZpZWxkKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuXG4gICAgICBpZiAoZnJvbVpDb250cm9sLnZhbHVlPy5pZCA+IHRvWkNvbnRyb2wudmFsdWU/LmlkKSB7XG4gICAgICAgIHJldHVybiB7IHpSYW5nZTogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5pbnZhbGlkX2ZpZWxkcykgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZENyZWRlbnRpYWxzKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIGNhclBsYXRlRmllbGQ6IHN0cmluZyA9ICdjYXJQbGF0ZScsIG1vYmlsZUZpZWxkOiBzdHJpbmcgPSAnbW9iaWxlJywgYmFkZ2VGaWVsZDogc3RyaW5nID0gJ2JhZGdlJyxcbiAgICBlbWFpbEZpZWxkOiBzdHJpbmcgPSAnZW1haWwnLCBzZW5kRW1haWxGaWVsZDogc3RyaW5nID0gJ3NlbmRFbWFpbCcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgICAgIGxldCBjYXJQbGF0ZXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICBsZXQgYmFkZ2VzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgbGV0IGludGVycG9sYXRlZENyZWRlbnRpYWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAvLyBDYXJkc1xuICAgICAgY29uc3QgYmFkZ2VzRm9ybUFycmF5ID0gZm9ybUdyb3VwLmdldChiYWRnZUZpZWxkKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgaWYgKGJhZGdlc0Zvcm1BcnJheSkge1xuICAgICAgICBpbnRlcnBvbGF0ZWRDcmVkZW50aWFscy5wdXNoKHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyZCkpO1xuICAgICAgICBiYWRnZXNJbnZhbGlkID0gdGhpcy5pc0Zvcm1Db250cm9sTGlzdEludmFsaWQoYmFkZ2VzRm9ybUFycmF5LnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzQ2FyZHNJbnZhbGlkID0gYmFkZ2VzSW52YWxpZCB8fCAhYmFkZ2VzRm9ybUFycmF5O1xuXG4gICAgICAvL0NhciBwbGF0ZXNcbiAgICAgIGNvbnN0IGNhclBsYXRlc0Zvcm1BcnJheSA9IGZvcm1Hcm91cC5nZXQoY2FyUGxhdGVGaWVsZCkgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICAgIGlmIChjYXJQbGF0ZXNGb3JtQXJyYXkpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucHVzaCh0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhcl9wbGF0ZSkpO1xuICAgICAgICBjYXJQbGF0ZXNJbnZhbGlkID0gdGhpcy5pc0Zvcm1Db250cm9sTGlzdEludmFsaWQoY2FyUGxhdGVzRm9ybUFycmF5LnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzQ2FyUGxhdGVzSW52YWxpZCA9IGNhclBsYXRlc0ludmFsaWQgfHwgIWNhclBsYXRlc0Zvcm1BcnJheTtcblxuICAgICAgLy8gTW9iaWxlXG4gICAgICBjb25zdCBtb2JpbGVGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQobW9iaWxlRmllbGQpO1xuICAgICAgaWYgKG1vYmlsZUZvcm1Db250cm9sKSB7XG4gICAgICAgIGludGVycG9sYXRlZENyZWRlbnRpYWxzLnB1c2godHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5tb2JpbGUpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzTW9iaWxlSW52YWxpZCA9ICFtb2JpbGVGb3JtQ29udHJvbD8udmFsdWU7XG5cbiAgICAgIC8vIEVtYWlsXG4gICAgICBjb25zdCBlbWFpbEZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChlbWFpbEZpZWxkKTtcbiAgICAgIGNvbnN0IHNlbmRFbWFpbEZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChzZW5kRW1haWxGaWVsZCk7XG4gICAgICBpZiAoZW1haWxGb3JtQ29udHJvbCAmJiBzZW5kRW1haWxGb3JtQ29udHJvbD8udmFsdWUpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucHVzaCh0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmVtYWlsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0VtYWlsSW52YWxpZCA9ICEoc2VuZEVtYWlsRm9ybUNvbnRyb2w/LnZhbHVlICYmIGVtYWlsRm9ybUNvbnRyb2w/LnZhbHVlKVxuXG4gICAgICBjb25zdCBpc1JlcXVpcmVkQ3JlZGVudGlhbHMgPSBpc0NhclBsYXRlc0ludmFsaWQgJiYgaXNDYXJkc0ludmFsaWQgJiYgaXNNb2JpbGVJbnZhbGlkICYmIGlzRW1haWxJbnZhbGlkO1xuXG4gICAgICBpZiAoaXNSZXF1aXJlZENyZWRlbnRpYWxzKSB7XG4gICAgICAgIGNvbnN0IGxhc3RDcmVkZW50aWFsID0gaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucG9wKCk7XG4gICAgICAgIGxldCBpbnRlcnBvbGF0ZVBhcmFtcyA9IGAke2ludGVycG9sYXRlZENyZWRlbnRpYWxzLmpvaW4oJywgJyl9ICR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5vcil9ICR7bGFzdENyZWRlbnRpYWx9YDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXF1aXJlZENyZWRlbnRpYWxzOiB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlcXVpcmVkX2NyZWRlbnRpYWxzX21lc3NhZ2UsIHsgY3JlZGVudGlhbHM6IGludGVycG9sYXRlUGFyYW1zIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0Zvcm1Db250cm9sTGlzdEludmFsaWQobGlzdDogVW50eXBlZEZvcm1Db250cm9sW10pIHtcbiAgICBsZXQgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGxpc3QpIHtcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xuICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNJbnZhbGlkO1xuICB9XG5cbiAgc3RhdGljIHJlcXVpcmVkRGF5cyhzcGVjaWFsRGF5c0ZpZWxkOiBzdHJpbmcsIHdlZWtEYXlzRmllbGQ6IHN0cmluZywgZXJyb3JOYW1lOiBzdHJpbmcgPSAncmVxdWlyZWREYXlzJyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IHNwZWNpYWxEYXlzOiBudW1iZXIgPSBmb3JtR3JvdXAuZ2V0KHNwZWNpYWxEYXlzRmllbGQpLnZhbHVlO1xuICAgICAgY29uc3Qgd2Vla0RheXM6IG51bWJlciA9IGZvcm1Hcm91cC5nZXQod2Vla0RheXNGaWVsZCkudmFsdWU7XG4gICAgICBpZiAoc3BlY2lhbERheXMgPiAwIHx8IHdlZWtEYXlzID4gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgW2Vycm9yTmFtZV06IHRydWUgfTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGlzUm9sZU5hbWVFeGlzdHMocm9sZVNlcnZpY2VQcm94eTogQ2xvdWQuUm9sZVNlcnZpY2VQcm94eSwgcm9sZUlkOiBudW1iZXIpOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycz4gPT4ge1xuICAgICAgcmV0dXJuIG9mKGNvbnRyb2wudmFsdWUpLnBpcGUoXG4gICAgICAgIGRlbGF5KDUwMCksXG4gICAgICAgIGRlYm91bmNlVGltZShJTlBVVF9TRUFSQ0hfREVCT1VOQ0VfVElNRSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiByb2xlU2VydmljZVByb3h5LmlzRXhpc3RzKGNvbnRyb2wudmFsdWUsIHJvbGVJZCA/PyB1bmRlZmluZWQpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiByZXMuZGF0YSA9PT0gdHJ1ZSB8fCAhcmVzLmlzU3VjY2VzcyA/IHsgcm9sZU5hbWVBbHJlYWR5RXhpc3RzOiB0cnVlIH0gOiBudWxsKSkpKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHRpYmFUaW1lVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWw6IFRpYmFUaW1lID0gY29udHJvbC52YWx1ZTtcblxuICAgIGlmICh2YWwgJiYgKHZhbC5ob3VycyA9PT0gbnVsbCB8fCB2YWwubWludXRlcyA9PT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRUaW1lOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIHRpbWVWYWxpZGF0b3IoZnJvbUhvdXI6IG51bWJlciwgZnJvbU1pbnV0ZXM6IG51bWJlciwgdG9Ib3VyOiBudW1iZXIsIHRvTWludXRlczogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgaWYgKCEhY29udHJvbC52YWx1ZSkge1xuICAgICAgICBpZiAoY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDQpIHsgLy8gQXNzdW1pbmcgeW91ciB0aW1lIGZvcm1hdCBpcyAnSEhNTSdcbiAgICAgICAgICByZXR1cm4geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX2Zvcm1hdDogdHJ1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGhvdXJzOiBudW1iZXIgPSBwYXJzZUludChjb250cm9sLnZhbHVlLnNsaWNlKDAsIDIpKTtcbiAgICAgICAgICBjb25zdCBtaW51dGVzOiBudW1iZXIgPSBwYXJzZUludChjb250cm9sLnZhbHVlLnNsaWNlKDIpKTtcbiAgICAgICAgICBjb25zdCBpc1ZhbGlkVGltZSA9XG4gICAgICAgICAgICAoaG91cnMgPiBmcm9tSG91ciB8fCAoaG91cnMgPT09IGZyb21Ib3VyICYmIG1pbnV0ZXMgPj0gZnJvbU1pbnV0ZXMpKSAmJlxuICAgICAgICAgICAgKGhvdXJzIDwgdG9Ib3VyIHx8IChob3VycyA9PT0gdG9Ib3VyICYmIG1pbnV0ZXMgPD0gdG9NaW51dGVzKSk7XG4gICAgICAgICAgaWYgKCFpc1ZhbGlkVGltZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZToge1xuICAgICAgICAgICAgICAgIGZyb206IGAke2Zyb21Ib3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtmcm9tTWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YCxcbiAgICAgICAgICAgICAgICB0bzogYCR7dG9Ib3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHt0b01pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWAsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHRpbWVSYW5nZUFycmF5VmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmIChjb250cm9sLnZhbGlkICYmIGNvbnRyb2wuZW5hYmxlZCkge1xuICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFJhbmdlID0gZm9ybUFycmF5W2ldO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRGcm9tID0gdGltZVRvTW9tZW50KGN1cnJlbnRSYW5nZS5mcm9tKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VG8gPSB0aW1lVG9Nb21lbnQoY3VycmVudFJhbmdlLnRvKTtcblxuICAgICAgICAgIGlmIChjdXJyZW50RnJvbSAmJiBjdXJyZW50VG8pIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGZvcm1BcnJheS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICBjb25zdCBjb21wYXJlUmFuZ2UgPSBmb3JtQXJyYXlbal07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVGcm9tID0gdGltZVRvTW9tZW50KGNvbXBhcmVSYW5nZS5mcm9tKTtcbiAgICAgICAgICAgICAgY29uc3QgY29tcGFyZVRvID0gdGltZVRvTW9tZW50KGNvbXBhcmVSYW5nZS50byk7XG5cbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGcm9tLmlzQmVmb3JlKGNvbXBhcmVUbykgJiYgY3VycmVudFRvLmlzQWZ0ZXIoY29tcGFyZUZyb20pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZm9ybV92YWxpZGF0aW9uX3RpbWVfcmFuZ2Vfb3ZlcmxhcDogdHJ1ZSB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbHVlR3JlYXRlclRoYW5PckVxdWFsVG8oZnJvbUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdG9Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICBjb25zdCBmcm9tVGltZUluTnVtYmVyOiBudW1iZXIgPSBmcm9tQ29udHJvbC52YWx1ZTtcbiAgICBjb25zdCB0b1RpbWVJbk51bWJlcjogbnVtYmVyID0gdG9Db250cm9sLnZhbHVlO1xuICAgIHJldHVybiBmcm9tVGltZUluTnVtYmVyICE9PSBudWxsICYmIHRvVGltZUluTnVtYmVyICE9PSBudWxsICYmICtmcm9tVGltZUluTnVtYmVyID4gK3RvVGltZUluTnVtYmVyO1xuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsdWVMZW5ndGhWYWxpZChmcm9tQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCB0b0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZyb21UaW1lSW5OdW1iZXI6IG51bWJlciA9IGZyb21Db250cm9sLnZhbHVlO1xuICAgIGNvbnN0IHRvVGltZUluTnVtYmVyOiBudW1iZXIgPSB0b0NvbnRyb2wudmFsdWU7XG4gICAgcmV0dXJuIGZyb21UaW1lSW5OdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggPT09IFZBTElEX1RJTUVfTUFYX0xFTkdUSCAmJlxuICAgICAgdG9UaW1lSW5OdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggPT09IFZBTElEX1RJTUVfTUFYX0xFTkdUSDtcbiAgfVxufVxuIl19
|
|
@@ -140,6 +140,19 @@ export function minutesToTime(minutes) {
|
|
|
140
140
|
export function timeToMinutes(time) {
|
|
141
141
|
return time ? (time.hours * MINUTES_PER_HOUR) + time.minutes : 0;
|
|
142
142
|
}
|
|
143
|
+
export function timeToMoment(time) {
|
|
144
|
+
if (!time || time.hours == null || time.minutes == null) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
let { hours, minutes, seconds = 0, middayPeriod } = time;
|
|
148
|
+
if (middayPeriod === MiddayPeriod.PM && hours < 12) {
|
|
149
|
+
hours += 12;
|
|
150
|
+
}
|
|
151
|
+
else if (middayPeriod === MiddayPeriod.AM && hours === 12) {
|
|
152
|
+
hours = 0;
|
|
153
|
+
}
|
|
154
|
+
return moment().hours(hours).minutes(minutes).seconds(seconds);
|
|
155
|
+
}
|
|
143
156
|
// Wrapper method to format minutes with ":" as separator (e.g., "HH:mm")
|
|
144
157
|
export function formatTimeWithSeparator(value, isMidnightEnable) {
|
|
145
158
|
return formatTime(value, isMidnightEnable, ':');
|
|
@@ -157,4 +170,4 @@ function formatTime(value, isMidnightEnabled, separator = ':') {
|
|
|
157
170
|
}
|
|
158
171
|
return null;
|
|
159
172
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy9kYXRlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sTUFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqSSxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQztBQUM1QyxNQUFNLDRCQUE0QixHQUFHLGtCQUFrQixDQUFDO0FBRXhELE1BQU0sQ0FBTixJQUFZLFlBRVg7QUFGRCxXQUFZLFlBQVk7SUFDdEIsMkNBQU0sQ0FBQTtJQUFFLDJDQUFNLENBQUE7QUFDaEIsQ0FBQyxFQUZXLFlBQVksS0FBWixZQUFZLFFBRXZCO0FBU0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWE7SUFDOUMsT0FBTyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxZQUFrQjtJQUM3RCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMseUZBQXlGO0lBQ3pGLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4QjtJQUVELE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFD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LEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkUsT0FBTyxHQUFHLEtBQUssR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7S0FDekM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBERUZBVUxUX1NNQVJUX1BBUktfREFURV9USU1FLCBNSU5VVEVTX1BFUl9IT1VSLCBOT19SRVNVTFQsIFRFTlNfTVVMVElQTElFUiwgVkFMSURfVElNRV9NQVhfTEVOR1RIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3QgREFURV9GT1JNQVRfWVlZWV9NTV9ERCA9ICdZWVlZLU1NLUREJztcbmNvbnN0IERBVEVfRk9STUFUX1lZWVlfTU1fRERfSEhfTU0gPSAnWVlZWS1NTS1ERCBISDptbSc7XG5cbmV4cG9ydCBlbnVtIE1pZGRheVBlcmlvZCB7XG4gIEFNID0gMSwgUE0gPSAyXG59XG5cbmV4cG9ydCB0eXBlIFRpbWUgPSB7XG4gIGhvdXJzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbiAgc2Vjb25kcz86IG51bWJlcjtcbiAgbWlkZGF5UGVyaW9kPzogTWlkZGF5UGVyaW9kO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU21hcnRQYXJrVGltZSh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiBtb21lbnQoREVGQVVMVF9TTUFSVF9QQVJLX0RBVEVfVElNRSkuc2Vjb25kcyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVUaW1lVG9TcGFya1BhcmtUaW1lKHNlbGVjdGVkRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIGlmICghc2VsZWN0ZWREYXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlMiA9IG1vbWVudChzZWxlY3RlZERhdGUpO1xuICAvLyBJZiB0aGUgZGF0ZSB3ZSB3YW50IGlzIGluIERTVCB0aGVuIHRvIGF2b2lkIGluY29ycmVjdCByZXN1bHRzIHdlIG5lZWQgdG8gYWRkIGl0IDEgaG91clxuICBpZiAoZGF0ZTIuaXNEU1QoKSkge1xuICAgIGRhdGUyLmFkZCh7IGhvdXI6IDEgfSk7XG4gIH1cblxuICByZXR1cm4gZGF0ZURpZmZJblNlY29uZHMobW9tZW50KERFRkFVTFRfU01BUlRfUEFSS19EQVRFX1RJTUUpLCBkYXRlMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlVGltZUluU2Vjb25kcyhkYXRlOiBEYXRlLCB0aW1lOiBUaW1lKTogbnVtYmVyIHtcbiAgZGF0ZS5zZXRNaW51dGVzKHRpbWUubWludXRlcyk7XG4gIGRhdGUuc2V0SG91cnModGltZS5ob3Vycyk7XG5cbiAgY29uc3QgZGF0ZVRpbWVJblNlY29uZHM6IG51bWJlciA9IHBhcnNlRGF0ZVRpbWVUb1NwYXJrUGFya1RpbWUoZGF0ZSk7XG5cbiAgcmV0dXJuIGRhdGVUaW1lSW5TZWNvbmRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZURpZmZJblNlY29uZHMoZGF0ZTE6IE1vbWVudCwgZGF0ZTI6IE1vbWVudCk6IG51bWJlciB7XG4gIC8vIG1vbWVudCBpZ25vcmUgYW5kIHJldHVybiBkYXRlIHdpdGggc3lzdGVtIHRpbWUgem9uZSAtIHVzaW5nIGZvcm1hdCBjb3JyZWN0IHRoZSBkYXRlIG9iamVjdFxuICBjb25zdCBkZWZhdWx0U21hcnRQYXJrVGltZVVUQyA9IG1vbWVudC50eihkYXRlMSwgJ3V0YycpO1xuXG4gIGNvbnN0IHNlbGVjdGVkRGF0ZUZvcm1hdHRlZCA9IG1vbWVudChkYXRlMi5mb3JtYXQoXCJZWVlZLU1NLUREIEhIOm1tOnNzXCIpKTtcbiAgcmV0dXJuIHNlbGVjdGVkRGF0ZUZvcm1hdHRlZC5kaWZmKGRlZmF1bHRTbWFydFBhcmtUaW1lVVRDLCAnc2Vjb25kcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVUaW1lRWxhcHNlZChmcm9tOiBEYXRlLCB0bzogRGF0ZSkge1xuICByZXR1cm4gbW9tZW50LmR1cmF0aW9uKGFkanVzdEZvclRpbWV6b25lKGZyb20pLmdldFRpbWUoKSAtIHRvLmdldFRpbWUoKSkuaHVtYW5pemUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplVXRjVGltZUVsYXBzZWQoZnJvbTogRGF0ZSwgdG86IERhdGUpIHtcbiAgcmV0dXJuIG1vbWVudC5kdXJhdGlvbihmcm9tLmdldFRpbWUoKSAtIHRvLmdldFRpbWUoKSkuaHVtYW5pemUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZJbk1pbGxpcyh2YWx1ZSwgaXNBYnNvbHV0ZSkge1xuICBjb25zdCBkaWZmID0gbW9tZW50LmR1cmF0aW9uKG1vbWVudCh2YWx1ZSkuZGlmZihtb21lbnQoKSkpLmFzTWlsbGlzZWNvbmRzKCk7XG4gIGlmIChpc0Fic29sdXRlKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGRpZmYpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb21lbnROdWxsYWJsZShkYXRlOiBEYXRlKSB7XG4gIHJldHVybiBkYXRlID8gbW9tZW50KGRhdGUpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFV0Y01vbWVudE51bGxhYmxlKGRhdGU6IERhdGUpIHtcbiAgcmV0dXJuIGRhdGUgPyBtb21lbnQoZGF0ZSkudXRjKHRydWUpIDogbnVsbDtcbn1cblxuLy8gV2hlbiBzdWJ0cmFjdCB0aGUgb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgZGF0ZSxcbi8vIFdlIGdldCBhIGRhdGUgdGhhdCBpZiB5b3UgcmVtb3ZlIHRoZSBvZmZzZXQgeW91IHdpbGwgZ2V0IFVUQ2tpbmRcbi8vIG9mIHRoZSB0aW1lIHNlbGVjdGVkXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0Rm9yVGltZXpvbmUoZGF0ZTogRGF0ZSk6IERhdGUge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpLFxuICAgIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xufVxuXG4vLyByZS1hZGp1c3QgbWV0aG9kIHdoZW4gbmVlZCB0byBzZXQgYmFjayB0aGUgdGltZXpvbmVvZmZzZXQgYWZ0ZXIgdXNpbmcgYWRqdXN0Rm9yVGltZXpvbmVcbmV4cG9ydCBmdW5jdGlvbiByZWFkanVzdEZvclRpbWV6b25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgcmV0dXJuICFkYXRlID8gbnVsbCA6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSxcbiAgICBkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpICsgZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWF4RGF5c1JhbmdlVmFsaWQodmFsaWRGcm9tOiBEYXRlLCB2YWxpZFRvOiBEYXRlLCBhbGxvd2VkTnVtYmVyT2ZEYXlzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgbGV0IG1heERheXNSYW5nZVZhbGlkID0gdHJ1ZTtcbiAgaWYgKHZhbGlkRnJvbSAmJiB2YWxpZFRvKSB7XG4gICAgY29uc3QgdmFsaWRGcm9tRGF0ZSA9IG1vbWVudCh2YWxpZEZyb20pO1xuICAgIGNvbnN0IHZhbGlkVG9EYXRlID0gbW9tZW50KHZhbGlkVG8pO1xuICAgIGNvbnN0IG51bWJlck9mRGF5cyA9IG1vbWVudC5kdXJhdGlvbih2YWxpZFRvRGF0ZS5kaWZmKHZhbGlkRnJvbURhdGUpKS5hc0RheXMoKTtcbiAgICBtYXhEYXlzUmFuZ2VWYWxpZCA9ICEobnVtYmVyT2ZEYXlzID4gYWxsb3dlZE51bWJlck9mRGF5cyk7XG4gIH1cbiAgcmV0dXJuIG1heERheXNSYW5nZVZhbGlkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlRGF0ZXNJZGVudGljYWwoZnJvbURhdGU6IERhdGUsIHRvRGF0ZTogRGF0ZSkge1xuICBpZiAoZnJvbURhdGUgJiYgdG9EYXRlKSB7XG4gICAgY29uc3QgdmFsaWRGcm9tRGF0ZTogRGF0ZSA9IGZyb21EYXRlO1xuICAgIGNvbnN0IHZhbGlkVG9EYXRlOiBEYXRlID0gdG9EYXRlO1xuICAgIHZhbGlkRnJvbURhdGUuc2V0U2Vjb25kcygwLCAwKTtcbiAgICB2YWxpZFRvRGF0ZS5zZXRTZWNvbmRzKDAsIDApO1xuICAgIHJldHVybiB2YWxpZEZyb21EYXRlLmdldFRpbWUoKSA9PT0gdmFsaWRUb0RhdGUuZ2V0VGltZSgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyVGltZVpvbmUoKTogc3RyaW5nIHtcbiAgcmV0dXJuIG1vbWVudC50ei5ndWVzcygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEZvcm1hdFdpdGhvdXRUaW1lKGZvcm1hdDogc3RyaW5nKSB7XG4gIGxldCBmb3JtYXRWYWx1ZXMgPSBmb3JtYXQuc3BsaXQoXCJoXCIpO1xuICBpZiAoZm9ybWF0VmFsdWVzLmxlbmd0aCA9PT0gTk9fUkVTVUxUKSB7XG4gICAgZm9ybWF0VmFsdWVzID0gZm9ybWF0LnNwbGl0KFwiSFwiKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0VmFsdWVzWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVdpdGhvdXRUaW1lKHJvd1ZhbHVlVGltZTogTW9tZW50LCBkYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcbiAgY29uc3QgZGF0ZSA9IHJvd1ZhbHVlVGltZT8udG9EYXRlKCk7XG4gIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgY29udmVydEZvcm1hdFdpdGhvdXRUaW1lKGRhdGVGb3JtYXQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVudFdpdGhvdXRUaW1lKG1vbWVudERhdGU6IE1vbWVudCk6IERhdGUge1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gbW9tZW50RGF0ZS5mb3JtYXQoREFURV9GT1JNQVRfWVlZWV9NTV9ERCk7XG4gIHJldHVybiBuZXcgRGF0ZShmb3JtYXR0ZWREYXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVuV2l0aFRpbWUobW9tZW50RGF0ZTogTW9tZW50KTogRGF0ZSB7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBtb21lbnREYXRlLmZvcm1hdChEQVRFX0ZPUk1BVF9ZWVlZX01NX0REX0hIX01NKTtcbiAgcmV0dXJuIGFkanVzdEZvclRpbWV6b25lKG5ldyBEYXRlKGZvcm1hdHRlZERhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1pbnV0ZXNUb1RpbWVOdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA+IDApIHtcbiAgICByZXR1cm4gYCR7TWF0aC5mbG9vcih2YWx1ZSAvIDYwKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9JHsodmFsdWUgJSA2MCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWBcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZVdpdGhvdXRNaWRuaWdodCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRpbWVXaXRoU2VwYXJhdG9yKHZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lV2l0aE1pZG5pZ2h0KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VGltZVdpdGhTZXBhcmF0b3IodmFsdWUsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZVdpdGhvdXRTZXBlcmF0b3JBbmRXaXRoTWlkbmlnaHQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUaW1lV2l0aG91dFNlcGFyYXRvcih2YWx1ZSwgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lV2l0aG91dFNlcGVyYXRvckFuZFdpdGhvdXRNaWRuaWdodCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRpbWVXaXRob3V0U2VwYXJhdG9yKHZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lVG9NaW51dGVzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICB2YWx1ZSA9IHZhbHVlPy50b1N0cmluZygpO1xuICBpZiAodmFsdWU/Lmxlbmd0aCA9PT0gVkFMSURfVElNRV9NQVhfTEVOR1RIKSB7XG4gICAgY29uc3QgaCA9ICgoK3ZhbHVlWzBdICogVEVOU19NVUxUSVBMSUVSKSArICt2YWx1ZVsxXSkgKiBNSU5VVEVTX1BFUl9IT1VSO1xuICAgIGNvbnN0IG0gPSArdmFsdWVbMl0gKiBURU5TX01VTFRJUExJRVIgKyArdmFsdWVbM107XG4gICAgcmV0dXJuIGggKyBtO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW51dGVzVG9UaW1lKG1pbnV0ZXM6IG51bWJlcik6IFRpbWUge1xuICByZXR1cm4gbWludXRlcyA+PSAwID8geyBob3VyczogTWF0aC5mbG9vcihtaW51dGVzIC8gTUlOVVRFU19QRVJfSE9VUiksIG1pbnV0ZXM6IG1pbnV0ZXMgJSBNSU5VVEVTX1BFUl9IT1VSIH0gOiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lVG9NaW51dGVzKHRpbWU6IFRpbWUpOiBudW1iZXIge1xuICByZXR1cm4gdGltZSA/ICh0aW1lLmhvdXJzICogTUlOVVRFU19QRVJfSE9VUikgKyB0aW1lLm1pbnV0ZXMgOiAwO1xufVxuXG4vLyBXcmFwcGVyIG1ldGhvZCB0byBmb3JtYXQgbWludXRlcyB3aXRoIFwiOlwiIGFzIHNlcGFyYXRvciAoZS5nLiwgXCJISDptbVwiKVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWVXaXRoU2VwYXJhdG9yKHZhbHVlOiBudW1iZXIsIGlzTWlkbmlnaHRFbmFibGU6IGJvb2xlYW4pOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIGZvcm1hdFRpbWUodmFsdWUsIGlzTWlkbmlnaHRFbmFibGUsICc6Jyk7XG59XG5cbi8vIFdyYXBwZXIgbWV0aG9kIHRvIGZvcm1hdCBtaW51dGVzIHdpdGhvdXQgc2VwYXJhdG9yIChlLmcuLCBcIkhIbW1cIilcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lV2l0aG91dFNlcGFyYXRvcih2YWx1ZTogbnVtYmVyLCBpc01pZG5pZ2h0RW5hYmxlOiBib29sZWFuKTogc3RyaW5nIHwgbnVsbCB7XG4gIHJldHVybiBmb3JtYXRUaW1lKHZhbHVlLCBpc01pZG5pZ2h0RW5hYmxlLCAnJyk7XG59XG5cbi8vIENvcmUgbWV0aG9kIGZvciBmb3JtYXR0aW5nIG1pbnV0ZXMgd2l0aCBmbGV4aWJpbGl0eSBpbiBvdXRwdXQgZm9ybWF0XG5mdW5jdGlvbiBmb3JtYXRUaW1lKHZhbHVlOiBudW1iZXIsIGlzTWlkbmlnaHRFbmFibGVkOiBib29sZWFuLCBzZXBhcmF0b3I6IHN0cmluZyA9ICc6Jyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoaXNNaWRuaWdodEVuYWJsZWQgfHwgdmFsdWUgPiAwKSB7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHZhbHVlIC8gTUlOVVRFU19QRVJfSE9VUikudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSAodmFsdWUgJSBNSU5VVEVTX1BFUl9IT1VSKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgcmV0dXJuIGAke2hvdXJzfSR7c2VwYXJhdG9yfSR7bWludXRlc31gO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy9kYXRlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sTUFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqSSxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQztBQUM1QyxNQUFNLDRCQUE0QixHQUFHLGtCQUFrQixDQUFDO0FBRXhELE1BQU0sQ0FBTixJQUFZLFlBRVg7QUFGRCxXQUFZLFlBQVk7SUFDdEIsMkNBQU0sQ0FBQTtJQUFFLDJDQUFNLENBQUE7QUFDaEIsQ0FBQyxFQUZXLFlBQVksS0FBWixZQUFZLFFBRXZCO0FBU0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWE7SUFDOUMsT0FBTyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxZQUFrQjtJQUM3RCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMseUZBQXlGO0lBQ3pGLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4QjtJQUVELE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFVLEVBQUUsSUFBVTtJQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQixNQUFNLGlCQUFpQixHQUFXLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJFLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsS0FBYTtJQUM1RCw2RkFBNkY7SUFDN0YsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV4RCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUMxRSxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVUsRUFBRSxFQUFRO0lBQ3RELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN0RixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQVUsRUFBRSxFQUFRO0lBQ3pELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbkUsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVU7SUFDNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RSxJQUFJLFVBQVUsRUFBRTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QjtTQUFNO1FBQ0wsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBVTtJQUMxQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFVO0lBQzdDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUMsQ0FBQztBQUVELGtEQUFrRDtBQUNsRCxtRUFBbUU7QUFDbkUsdUJBQXVCO0FBQ3ZCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFVO0lBQzFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2pFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsMEZBQTBGO0FBQzFGLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFVO0lBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2hGLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQWUsRUFBRSxPQUFhLEVBQUUsbUJBQTJCO0lBQzdGLElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQzdCLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRTtRQUN4QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9FLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztLQUMzRDtJQUNELE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUFjLEVBQUUsTUFBWTtJQUM1RCxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUU7UUFDdEIsTUFBTSxhQUFhLEdBQVMsUUFBUSxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFTLE1BQU0sQ0FBQztRQUNqQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQixXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QixPQUFPLGFBQWEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDMUQ7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBYztJQUNyRCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDckMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbEM7SUFDRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFlBQW9CLEVBQUUsVUFBa0I7SUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxJQUFJLEdBQUcsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BDLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQWtCO0lBQ3JELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNoRSxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBa0I7SUFDakQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3RFLE9BQU8saUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQWE7SUFDckQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFBO0tBQzFHO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQWE7SUFDckQsT0FBTyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFhO0lBQ2xELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUseUNBQXlDLENBQUMsS0FBYTtJQUNyRSxPQUFPLDBCQUEwQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLDRDQUE0QyxDQUFDLEtBQWE7SUFDeEUsT0FBTywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLEtBQUssR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDMUIsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLHFCQUFxQixFQUFFO1FBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDZDtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBZTtJQUMzQyxPQUFPLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDckgsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBVTtJQUN0QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVU7SUFDckMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtRQUN2RCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFekQsSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2xELEtBQUssSUFBSSxFQUFFLENBQUM7S0FDYjtTQUFNLElBQUksWUFBWSxLQUFLLFlBQVksQ0FBQyxFQUFFLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtRQUMzRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7SUFFRCxPQUFPLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWEsRUFBRSxnQkFBeUI7SUFDOUUsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEtBQWEsRUFBRSxnQkFBeUI7SUFDakYsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCx1RUFBdUU7QUFDdkUsU0FBUyxVQUFVLENBQUMsS0FBYSxFQUFFLGlCQUEwQixFQUFFLFlBQW9CLEdBQUc7SUFDcEYsSUFBSSxpQkFBaUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkUsT0FBTyxHQUFHLEtBQUssR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7S0FDekM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBERUZBVUxUX1NNQVJUX1BBUktfREFURV9USU1FLCBNSU5VVEVTX1BFUl9IT1VSLCBOT19SRVNVTFQsIFRFTlNfTVVMVElQTElFUiwgVkFMSURfVElNRV9NQVhfTEVOR1RIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3QgREFURV9GT1JNQVRfWVlZWV9NTV9ERCA9ICdZWVlZLU1NLUREJztcbmNvbnN0IERBVEVfRk9STUFUX1lZWVlfTU1fRERfSEhfTU0gPSAnWVlZWS1NTS1ERCBISDptbSc7XG5cbmV4cG9ydCBlbnVtIE1pZGRheVBlcmlvZCB7XG4gIEFNID0gMSwgUE0gPSAyXG59XG5cbmV4cG9ydCB0eXBlIFRpbWUgPSB7XG4gIGhvdXJzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbiAgc2Vjb25kcz86IG51bWJlcjtcbiAgbWlkZGF5UGVyaW9kPzogTWlkZGF5UGVyaW9kO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU21hcnRQYXJrVGltZSh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiBtb21lbnQoREVGQVVMVF9TTUFSVF9QQVJLX0RBVEVfVElNRSkuc2Vjb25kcyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVUaW1lVG9TcGFya1BhcmtUaW1lKHNlbGVjdGVkRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIGlmICghc2VsZWN0ZWREYXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlMiA9IG1vbWVudChzZWxlY3RlZERhdGUpO1xuICAvLyBJZiB0aGUgZGF0ZSB3ZSB3YW50IGlzIGluIERTVCB0aGVuIHRvIGF2b2lkIGluY29ycmVjdCByZXN1bHRzIHdlIG5lZWQgdG8gYWRkIGl0IDEgaG91clxuICBpZiAoZGF0ZTIuaXNEU1QoKSkge1xuICAgIGRhdGUyLmFkZCh7IGhvdXI6IDEgfSk7XG4gIH1cblxuICByZXR1cm4gZGF0ZURpZmZJblNlY29uZHMobW9tZW50KERFRkFVTFRfU01BUlRfUEFSS19EQVRFX1RJTUUpLCBkYXRlMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlVGltZUluU2Vjb25kcyhkYXRlOiBEYXRlLCB0aW1lOiBUaW1lKTogbnVtYmVyIHtcbiAgZGF0ZS5zZXRNaW51dGVzKHRpbWUubWludXRlcyk7XG4gIGRhdGUuc2V0SG91cnModGltZS5ob3Vycyk7XG5cbiAgY29uc3QgZGF0ZVRpbWVJblNlY29uZHM6IG51bWJlciA9IHBhcnNlRGF0ZVRpbWVUb1NwYXJrUGFya1RpbWUoZGF0ZSk7XG5cbiAgcmV0dXJuIGRhdGVUaW1lSW5TZWNvbmRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZURpZmZJblNlY29uZHMoZGF0ZTE6IE1vbWVudCwgZGF0ZTI6IE1vbWVudCk6IG51bWJlciB7XG4gIC8vIG1vbWVudCBpZ25vcmUgYW5kIHJldHVybiBkYXRlIHdpdGggc3lzdGVtIHRpbWUgem9uZSAtIHVzaW5nIGZvcm1hdCBjb3JyZWN0IHRoZSBkYXRlIG9iamVjdFxuICBjb25zdCBkZWZhdWx0U21hcnRQYXJrVGltZVVUQyA9IG1vbWVudC50eihkYXRlMSwgJ3V0YycpO1xuXG4gIGNvbnN0IHNlbGVjdGVkRGF0ZUZvcm1hdHRlZCA9IG1vbWVudChkYXRlMi5mb3JtYXQoXCJZWVlZLU1NLUREIEhIOm1tOnNzXCIpKTtcbiAgcmV0dXJuIHNlbGVjdGVkRGF0ZUZvcm1hdHRlZC5kaWZmKGRlZmF1bHRTbWFydFBhcmtUaW1lVVRDLCAnc2Vjb25kcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVUaW1lRWxhcHNlZChmcm9tOiBEYXRlLCB0bzogRGF0ZSkge1xuICByZXR1cm4gbW9tZW50LmR1cmF0aW9uKGFkanVzdEZvclRpbWV6b25lKGZyb20pLmdldFRpbWUoKSAtIHRvLmdldFRpbWUoKSkuaHVtYW5pemUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplVXRjVGltZUVsYXBzZWQoZnJvbTogRGF0ZSwgdG86IERhdGUpIHtcbiAgcmV0dXJuIG1vbWVudC5kdXJhdGlvbihmcm9tLmdldFRpbWUoKSAtIHRvLmdldFRpbWUoKSkuaHVtYW5pemUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZJbk1pbGxpcyh2YWx1ZSwgaXNBYnNvbHV0ZSkge1xuICBjb25zdCBkaWZmID0gbW9tZW50LmR1cmF0aW9uKG1vbWVudCh2YWx1ZSkuZGlmZihtb21lbnQoKSkpLmFzTWlsbGlzZWNvbmRzKCk7XG4gIGlmIChpc0Fic29sdXRlKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGRpZmYpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb21lbnROdWxsYWJsZShkYXRlOiBEYXRlKSB7XG4gIHJldHVybiBkYXRlID8gbW9tZW50KGRhdGUpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFV0Y01vbWVudE51bGxhYmxlKGRhdGU6IERhdGUpIHtcbiAgcmV0dXJuIGRhdGUgPyBtb21lbnQoZGF0ZSkudXRjKHRydWUpIDogbnVsbDtcbn1cblxuLy8gV2hlbiBzdWJ0cmFjdCB0aGUgb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgZGF0ZSxcbi8vIFdlIGdldCBhIGRhdGUgdGhhdCBpZiB5b3UgcmVtb3ZlIHRoZSBvZmZzZXQgeW91IHdpbGwgZ2V0IFVUQ2tpbmRcbi8vIG9mIHRoZSB0aW1lIHNlbGVjdGVkXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0Rm9yVGltZXpvbmUoZGF0ZTogRGF0ZSk6IERhdGUge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpLFxuICAgIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xufVxuXG4vLyByZS1hZGp1c3QgbWV0aG9kIHdoZW4gbmVlZCB0byBzZXQgYmFjayB0aGUgdGltZXpvbmVvZmZzZXQgYWZ0ZXIgdXNpbmcgYWRqdXN0Rm9yVGltZXpvbmVcbmV4cG9ydCBmdW5jdGlvbiByZWFkanVzdEZvclRpbWV6b25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgcmV0dXJuICFkYXRlID8gbnVsbCA6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSxcbiAgICBkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpICsgZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWF4RGF5c1JhbmdlVmFsaWQodmFsaWRGcm9tOiBEYXRlLCB2YWxpZFRvOiBEYXRlLCBhbGxvd2VkTnVtYmVyT2ZEYXlzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgbGV0IG1heERheXNSYW5nZVZhbGlkID0gdHJ1ZTtcbiAgaWYgKHZhbGlkRnJvbSAmJiB2YWxpZFRvKSB7XG4gICAgY29uc3QgdmFsaWRGcm9tRGF0ZSA9IG1vbWVudCh2YWxpZEZyb20pO1xuICAgIGNvbnN0IHZhbGlkVG9EYXRlID0gbW9tZW50KHZhbGlkVG8pO1xuICAgIGNvbnN0IG51bWJlck9mRGF5cyA9IG1vbWVudC5kdXJhdGlvbih2YWxpZFRvRGF0ZS5kaWZmKHZhbGlkRnJvbURhdGUpKS5hc0RheXMoKTtcbiAgICBtYXhEYXlzUmFuZ2VWYWxpZCA9ICEobnVtYmVyT2ZEYXlzID4gYWxsb3dlZE51bWJlck9mRGF5cyk7XG4gIH1cbiAgcmV0dXJuIG1heERheXNSYW5nZVZhbGlkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlRGF0ZXNJZGVudGljYWwoZnJvbURhdGU6IERhdGUsIHRvRGF0ZTogRGF0ZSkge1xuICBpZiAoZnJvbURhdGUgJiYgdG9EYXRlKSB7XG4gICAgY29uc3QgdmFsaWRGcm9tRGF0ZTogRGF0ZSA9IGZyb21EYXRlO1xuICAgIGNvbnN0IHZhbGlkVG9EYXRlOiBEYXRlID0gdG9EYXRlO1xuICAgIHZhbGlkRnJvbURhdGUuc2V0U2Vjb25kcygwLCAwKTtcbiAgICB2YWxpZFRvRGF0ZS5zZXRTZWNvbmRzKDAsIDApO1xuICAgIHJldHVybiB2YWxpZEZyb21EYXRlLmdldFRpbWUoKSA9PT0gdmFsaWRUb0RhdGUuZ2V0VGltZSgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyVGltZVpvbmUoKTogc3RyaW5nIHtcbiAgcmV0dXJuIG1vbWVudC50ei5ndWVzcygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEZvcm1hdFdpdGhvdXRUaW1lKGZvcm1hdDogc3RyaW5nKSB7XG4gIGxldCBmb3JtYXRWYWx1ZXMgPSBmb3JtYXQuc3BsaXQoXCJoXCIpO1xuICBpZiAoZm9ybWF0VmFsdWVzLmxlbmd0aCA9PT0gTk9fUkVTVUxUKSB7XG4gICAgZm9ybWF0VmFsdWVzID0gZm9ybWF0LnNwbGl0KFwiSFwiKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0VmFsdWVzWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVdpdGhvdXRUaW1lKHJvd1ZhbHVlVGltZTogTW9tZW50LCBkYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcbiAgY29uc3QgZGF0ZSA9IHJvd1ZhbHVlVGltZT8udG9EYXRlKCk7XG4gIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgY29udmVydEZvcm1hdFdpdGhvdXRUaW1lKGRhdGVGb3JtYXQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVudFdpdGhvdXRUaW1lKG1vbWVudERhdGU6IE1vbWVudCk6IERhdGUge1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gbW9tZW50RGF0ZS5mb3JtYXQoREFURV9GT1JNQVRfWVlZWV9NTV9ERCk7XG4gIHJldHVybiBuZXcgRGF0ZShmb3JtYXR0ZWREYXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVuV2l0aFRpbWUobW9tZW50RGF0ZTogTW9tZW50KTogRGF0ZSB7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBtb21lbnREYXRlLmZvcm1hdChEQVRFX0ZPUk1BVF9ZWVlZX01NX0REX0hIX01NKTtcbiAgcmV0dXJuIGFkanVzdEZvclRpbWV6b25lKG5ldyBEYXRlKGZvcm1hdHRlZERhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1pbnV0ZXNUb1RpbWVOdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA+IDApIHtcbiAgICByZXR1cm4gYCR7TWF0aC5mbG9vcih2YWx1ZSAvIDYwKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9JHsodmFsdWUgJSA2MCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWBcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZVdpdGhvdXRNaWRuaWdodCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRpbWVXaXRoU2VwYXJhdG9yKHZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lV2l0aE1pZG5pZ2h0KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VGltZVdpdGhTZXBhcmF0b3IodmFsdWUsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZVdpdGhvdXRTZXBlcmF0b3JBbmRXaXRoTWlkbmlnaHQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUaW1lV2l0aG91dFNlcGFyYXRvcih2YWx1ZSwgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lV2l0aG91dFNlcGVyYXRvckFuZFdpdGhvdXRNaWRuaWdodCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRpbWVXaXRob3V0U2VwYXJhdG9yKHZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lVG9NaW51dGVzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICB2YWx1ZSA9IHZhbHVlPy50b1N0cmluZygpO1xuICBpZiAodmFsdWU/Lmxlbmd0aCA9PT0gVkFMSURfVElNRV9NQVhfTEVOR1RIKSB7XG4gICAgY29uc3QgaCA9ICgoK3ZhbHVlWzBdICogVEVOU19NVUxUSVBMSUVSKSArICt2YWx1ZVsxXSkgKiBNSU5VVEVTX1BFUl9IT1VSO1xuICAgIGNvbnN0IG0gPSArdmFsdWVbMl0gKiBURU5TX01VTFRJUExJRVIgKyArdmFsdWVbM107XG4gICAgcmV0dXJuIGggKyBtO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW51dGVzVG9UaW1lKG1pbnV0ZXM6IG51bWJlcik6IFRpbWUge1xuICByZXR1cm4gbWludXRlcyA+PSAwID8geyBob3VyczogTWF0aC5mbG9vcihtaW51dGVzIC8gTUlOVVRFU19QRVJfSE9VUiksIG1pbnV0ZXM6IG1pbnV0ZXMgJSBNSU5VVEVTX1BFUl9IT1VSIH0gOiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lVG9NaW51dGVzKHRpbWU6IFRpbWUpOiBudW1iZXIge1xuICByZXR1cm4gdGltZSA/ICh0aW1lLmhvdXJzICogTUlOVVRFU19QRVJfSE9VUikgKyB0aW1lLm1pbnV0ZXMgOiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvTW9tZW50KHRpbWU6IFRpbWUpOiBtb21lbnQuTW9tZW50IHwgbnVsbCB7XG4gIGlmICghdGltZSB8fCB0aW1lLmhvdXJzID09IG51bGwgfHwgdGltZS5taW51dGVzID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCB7IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzID0gMCwgbWlkZGF5UGVyaW9kIH0gPSB0aW1lO1xuXG4gIGlmIChtaWRkYXlQZXJpb2QgPT09IE1pZGRheVBlcmlvZC5QTSAmJiBob3VycyA8IDEyKSB7XG4gICAgaG91cnMgKz0gMTI7XG4gIH0gZWxzZSBpZiAobWlkZGF5UGVyaW9kID09PSBNaWRkYXlQZXJpb2QuQU0gJiYgaG91cnMgPT09IDEyKSB7XG4gICAgaG91cnMgPSAwO1xuICB9XG5cbiAgcmV0dXJuIG1vbWVudCgpLmhvdXJzKGhvdXJzKS5taW51dGVzKG1pbnV0ZXMpLnNlY29uZHMoc2Vjb25kcyk7XG59XG5cbi8vIFdyYXBwZXIgbWV0aG9kIHRvIGZvcm1hdCBtaW51dGVzIHdpdGggXCI6XCIgYXMgc2VwYXJhdG9yIChlLmcuLCBcIkhIOm1tXCIpXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZVdpdGhTZXBhcmF0b3IodmFsdWU6IG51bWJlciwgaXNNaWRuaWdodEVuYWJsZTogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICByZXR1cm4gZm9ybWF0VGltZSh2YWx1ZSwgaXNNaWRuaWdodEVuYWJsZSwgJzonKTtcbn1cblxuLy8gV3JhcHBlciBtZXRob2QgdG8gZm9ybWF0IG1pbnV0ZXMgd2l0aG91dCBzZXBhcmF0b3IgKGUuZy4sIFwiSEhtbVwiKVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWVXaXRob3V0U2VwYXJhdG9yKHZhbHVlOiBudW1iZXIsIGlzTWlkbmlnaHRFbmFibGU6IGJvb2xlYW4pOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIGZvcm1hdFRpbWUodmFsdWUsIGlzTWlkbmlnaHRFbmFibGUsICcnKTtcbn1cblxuLy8gQ29yZSBtZXRob2QgZm9yIGZvcm1hdHRpbmcgbWludXRlcyB3aXRoIGZsZXhpYmlsaXR5IGluIG91dHB1dCBmb3JtYXRcbmZ1bmN0aW9uIGZvcm1hdFRpbWUodmFsdWU6IG51bWJlciwgaXNNaWRuaWdodEVuYWJsZWQ6IGJvb2xlYW4sIHNlcGFyYXRvcjogc3RyaW5nID0gJzonKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChpc01pZG5pZ2h0RW5hYmxlZCB8fCB2YWx1ZSA+IDApIHtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodmFsdWUgLyBNSU5VVEVTX1BFUl9IT1VSKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbWludXRlcyA9ICh2YWx1ZSAlIE1JTlVURVNfUEVSX0hPVVIpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gYCR7aG91cnN9JHtzZXBhcmF0b3J9JHttaW51dGVzfWA7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const lowerCaseFirstLetter = (value) => value.charAt(0).toLocaleLowerCase() + value.slice(1);
|
|
2
|
+
export const capitalizeFirstLetter = (value) => value.charAt(0).toLocaleUpperCase() + value.slice(1);
|
|
2
3
|
export const lowerCase = (value) => value?.toString().toLowerCase();
|
|
3
4
|
export function camelize(str) {
|
|
4
5
|
return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (word, index) {
|
|
@@ -19,4 +20,4 @@ function geMajorAndMinorFromVersion(input) {
|
|
|
19
20
|
}
|
|
20
21
|
return majorAndMinorVersion;
|
|
21
22
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy90ZXh0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVHLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU3RyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUV6RSxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDbEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLFVBQVUsSUFBSSxFQUFFLEtBQUs7UUFDN0QsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsR0FBVztJQUNoRCxPQUFPLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsUUFBZ0IsRUFBRSxRQUFnQjtJQUN0RSxPQUFPLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxLQUFLLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUFDLEtBQWE7SUFDL0MsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDOUIsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxJQUFJLGVBQWUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQy9CLG9CQUFvQixHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3RFO0lBQ0QsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGxvd2VyQ2FzZUZpcnN0TGV0dGVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmNoYXJBdCgwKS50b0xvY2FsZUxvd2VyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG5cbmV4cG9ydCBjb25zdCBsb3dlckNhc2UgPSAodmFsdWU6IGFueSkgPT4gdmFsdWU/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgZnVuY3Rpb24gKHdvcmQsIGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4ID09PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpO1xuICB9KS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hhcmFjdGVyTGVuZ3RoVmFsaWQoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cj8ubGVuZ3RoID49IDIgfHwgc3RyPy5sZW5ndGggPT09IDAgfHwgIXN0cjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyZVZlcnNpb25zQ29tcGF0aWJsZSh2ZXJzaW9uMTogc3RyaW5nLCB2ZXJzaW9uMjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZU1ham9yQW5kTWlub3JGcm9tVmVyc2lvbih2ZXJzaW9uMSkgPT09IGdlTWFqb3JBbmRNaW5vckZyb21WZXJzaW9uKHZlcnNpb24yKVxufVxuXG5mdW5jdGlvbiBnZU1ham9yQW5kTWlub3JGcm9tVmVyc2lvbihpbnB1dDogc3RyaW5nKSB7XG4gIGxldCBtYWpvckFuZE1pbm9yVmVyc2lvbiA9ICcnO1xuICB2YXIgc3BsaXR0ZWRWZXJzaW9uID0gaW5wdXQuc3BsaXQoJy4nKTtcbiAgaWYgKHNwbGl0dGVkVmVyc2lvbj8ubGVuZ3RoID4gMSkge1xuICAgIG1ham9yQW5kTWlub3JWZXJzaW9uID0gYCR7c3BsaXR0ZWRWZXJzaW9uWzBdfS4ke3NwbGl0dGVkVmVyc2lvblsxXX1gO1xuICB9XG4gIHJldHVybiBtYWpvckFuZE1pbm9yVmVyc2lvbjtcbn1cbiJdfQ==
|