@tiba-spark/client-shared-lib 10.3.0-164 → 10.3.0-229

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.
@@ -250,8 +250,12 @@ export class TibaValidators {
250
250
  const formGroup = controlGroup.parent;
251
251
  const control = formGroup.get(controlName);
252
252
  const controlValue = control.value;
253
- if (controlValue && controlValue < minDateTimeValue) {
254
- response = { form_validation_invalid_from_time: true };
253
+ if (controlValue) {
254
+ const controlDate = new Date(controlValue).setHours(0, 0, 0, 0);
255
+ const minDate = new Date(minDateTimeValue).setHours(0, 0, 0, 0);
256
+ if (controlDate < minDate) {
257
+ response = { form_validation_invalid_from_time: true };
258
+ }
255
259
  }
256
260
  }
257
261
  return response;
@@ -454,4 +458,4 @@ export class TibaValidators {
454
458
  toTimeInNumber.toString().length === VALID_TIME_MAX_LENGTH;
455
459
  }
456
460
  }
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbGlkYXRvci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy9jdXN0b20tdmFsaWRhdG9yLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJeEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyx5SEFBeUgsQ0FBQztBQUN2SixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHVGQUF1RixDQUFDO0FBQ2hILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLGdC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cUJBQ0g7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxXQUE0QixFQUFFLFNBQTBCO1FBQ2pHLE1BQU0sZ0JBQWdCLEdBQVcsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNuRCxNQUFNLGNBQWMsR0FBVyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQy9DLE9BQU8sZ0JBQWdCLEtBQUssSUFBSSxJQUFJLGNBQWMsS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUNyRyxDQUFDO0lBQUEsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxXQUE0QixFQUFFLFNBQTBCO1FBQ3hGLE1BQU0sZ0JBQWdCLEdBQVcsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNuRCxNQUFNLGNBQWMsR0FBVyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQy9DLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLHFCQUFxQjtZQUNqRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLHFCQUFxQixDQUFDO0lBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIEZvcm1Hcm91cCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGRlbGF5LCBtYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSU5QVVRfU0VBUkNIX0RFQk9VTkNFX1RJTUUsIFZBTElEX1RJTUVfTUFYX0xFTkdUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uL2VudW1zJztcclxuaW1wb3J0IHsgQ2xvdWQgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5JztcclxuaW1wb3J0IHsgVGltZSBhcyBUaWJhVGltZSB9IGZyb20gJy4vZGF0ZS51dGlsJztcclxuXHJcbmNvbnN0IE1JTl9BTExPV0VEX0JBTEFOQ0UgPSAwO1xyXG5jb25zdCBNQVhfQUxMT1dFRF9CQUxBTkNFID0gMjU1O1xyXG5leHBvcnQgY29uc3Qgbm9FbW9qaVJlZ2V4ID0gL1teYS16QS1aMC05IF0vZ207XHJcbmV4cG9ydCBjb25zdCBwYXNzd29yZFJlZ2V4ID0gL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxdXl9ge3x9fl0pW0EtWmEtelxcZCFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xcXV5fYHt8fX5dezQsfSQvZztcclxuZXhwb3J0IGNvbnN0IHBvc2l0aXZlTnVtYmVyc1JlZ2V4ID0gL15bMC05XSsoXFwuP1swLTldKyk/JC87XHJcbmV4cG9ydCBjb25zdCBwb3NpdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleCA9IC9eKD89LipbMS05XSlcXGQqKD86XFwuXFxkKyk/JC87XHJcbmV4cG9ydCBjb25zdCBhbHBoYW51bWVyaWNSZWdleCA9IC9eW2EtekEtWjAtOV0rJC87XHJcbmV4cG9ydCBjb25zdCBtb2JpbGVSZWdleCA9IC9eWzAtOV0rJC87XHJcbmV4cG9ydCBjb25zdCBpbnRlZ2VyTnVtYmVyc1JlZ2V4ID0gL15bLV0/KFxcZCspPyQvO1xyXG5leHBvcnQgY29uc3QgZGVjaW1hbFBvc2l0aXZlUmVnZXggPSAvXihcXGQrKShcXC5cXGR7MSwyfSk/JC87XHJcbmV4cG9ydCBjb25zdCBkZWNpbWFsUmVnZXggPSAvXi0/KFxcZCspKFxcLlxcZHsxLDJ9KT8kLztcclxuZXhwb3J0IGNvbnN0IHJlZ2V4RXhwID0gL15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kLztcclxuZXhwb3J0IGNvbnN0IHBvc2l0aXZlSW50ZWdlck51bWJlcnNJbmNsdWRlWmVyb1JlZ2V4ID0gL14oMHxbMS05XVxcZCopJC87XHJcbmV4cG9ydCBjb25zdCBwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXggPSAvXlsxLTldXFxkKiQvO1xyXG5leHBvcnQgY29uc3QgcGVyY2VudGFnZVJlZ2V4ID0gL14oMTAwKFxcLjArKT98WzEtOV0/XFxkKFxcLlxcZCspPykkLztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5KHZhbDogYW55KTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuICh2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09IG51bGwgfHwgdmFsID09PSAnJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaWJhVmFsaWRhdG9ycyB7XHJcblxyXG4gIC8vIE5vIGVtb2ppIHZhbGlkYXRpb25cclxuICBzdGF0aWMgbm9FbW9qaShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmIHZhbC50b1N0cmluZygpLm1hdGNoKG5vRW1vamlSZWdleCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBub0Vtb2ppOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBub0Vtb2ppUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGVyY2VudGFnZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwZXJjZW50YWdlUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGVyY2VudGFnZVJlZ2V4OiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBwZXJjZW50YWdlUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBNb2JpbGUgb25seSB2YWxpZGF0aW9uXHJcbiAgc3RhdGljIG1vYmlsZU51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gobW9iaWxlUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbW9iaWxlTnVtYmVyczoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogbW9iaWxlUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaG90ZWxSb29uTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChhbHBoYW51bWVyaWNSZWdleCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBhbHBoYW51bWVyaWNSZWdleDoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogYWxwaGFudW1lcmljUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKHBvc2l0aXZlSW50ZWdlck51bWJlcnNJbmNsdWRlWmVyb1JlZ2V4KSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBvc2l0aXZlSW50ZWdlck51bWJlcnNJbmNsdWRlWmVyb1JlZ2V4OiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm9SZWdleFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBwb3NpdGl2ZUludGVnZXJOdW1iZXJzV2l0aG91dFplcm9SZWdleChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4OiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZUludGVnZXJOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBEZWNpbWFsIFBvc2l0aXZlIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXHJcbiAgc3RhdGljIGRlY2ltYWxQb3NpdGl2ZU51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChkZWNpbWFsUG9zaXRpdmVSZWdleCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkZWNpbWFsUG9zaXRpdmVOdW1iZXJzOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBkZWNpbWFsUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIERlY2ltYWwgTnVtYmVycyBvbmx5IHZhbGlkYXRpb25cclxuICBzdGF0aWMgZGVjaW1hbE51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2goZGVjaW1hbFJlZ2V4KSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRlY2ltYWxQb3NpdGl2ZU51bWJlcnM6IHtcclxuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcclxuICAgICAgICAgIHBhdHRlcm46IGRlY2ltYWxSZWdleFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFBvc2l0aXZlIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXHJcbiAgc3RhdGljIHBvc2l0aXZlTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwb3NpdGl2ZU51bWJlcnNSZWdleCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwb3NpdGl2ZU51bWJlcnM6IHtcclxuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcclxuICAgICAgICAgIHBhdHRlcm46IHBvc2l0aXZlTnVtYmVyc1JlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gUG9zaXRpdmUgTnVtYmVycyB3aXRob3V0IHplcm8gdmFsaWRhdGlvblxyXG4gIHN0YXRpYyBwb3NpdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFBvc2l0aXZlIC8gTmVnZXRpdmUgTnVtYmVycyBvbmx5IHZhbGlkYXRpb25cclxuICBzdGF0aWMgaW50ZWdlck51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2goaW50ZWdlck51bWJlcnNSZWdleCkpIHJldHVybiB7XHJcbiAgICAgIGludGVnZXJOdW1iZXJzOiB7XHJcbiAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgIHBhdHRlcm46IGludGVnZXJOdW1iZXJzUmVnZXhcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIE51bWJlciBsZW5ndGhcclxuICBzdGF0aWMgbnVtZXJpY0xlbmd0aChsZW5ndGg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgdmFsLnRvU3RyaW5nKCkubGVuZ3RoICE9PSBsZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW52YWxpZE51bWJlckxlbmd0aDoge1xyXG4gICAgICAgICAgICBhY3R1YWxMZW5ndGg6IHZhbCxcclxuICAgICAgICAgICAgcmVxdWlyZWRMZW5ndGg6IGxlbmd0aFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBQYXNzd29yZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWU/Lm1hdGNoKHBhc3N3b3JkUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7IHBhc3N3b3JkUG9saWN5UmVxdWlyZW1lbnRzOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgICBpZiAoY29udHJvbC52YWx1ZS5sZW5ndGggPCA4KSB7XHJcbiAgICAgIHJldHVybiB7IG1pbmxlbmd0aDogeyByZXF1aXJlZExlbmd0aDogOCB9IH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHdWlkVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICghcmVnZXhFeHAudGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm4geyBndWlkSXNWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgUGFzc3dvcmRGb3JtTWF0Y2hWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBpZiAoIWNvbnRyb2wpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3UGFzc3dvcmQgPSBjb250cm9sLmdldCgncGFzc3dvcmQnKTtcclxuICAgIGNvbnN0IGNvbmZpcm1QYXNzd29yZCA9IGNvbnRyb2wuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIGlmICgobmV3UGFzc3dvcmQuZXJyb3JzIHx8IGNvbmZpcm1QYXNzd29yZC5lcnJvcnMpIHx8XHJcbiAgICAgIG5ld1Bhc3N3b3JkLnZhbHVlID09PSBjb25maXJtUGFzc3dvcmQudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7IC8vIFBhc3N3b3JkcyBtYXRjaCBvciBmb3JtIGZpZWxkcyBoYXMgaXRzIG93biBlcnJvcnNcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHBhc3N3b3JkTm90TWF0Y2g6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tVG9OdW1iZXJWYWxpZGF0b3IoZnJvbUNvbnRyb2xOYW1lOiBzdHJpbmcsIHRvQ29udHJvbE5hbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBsZXQgcmVzcG9uc2UgPSBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xyXG4gICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgY29uc3QgZnJvbUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZyb21Db250cm9sTmFtZSk7XHJcbiAgICAgICAgY29uc3QgdG9Db250cm9sID0gZm9ybUdyb3VwLmdldCh0b0NvbnRyb2xOYW1lKTtcclxuICAgICAgICBpZiAodGhpcy5pc1ZhbHVlR3JlYXRlclRoYW5PckVxdWFsVG8oZnJvbUNvbnRyb2wsIHRvQ29udHJvbCkgJiYgIXRvQ29udHJvbC5oYXNFcnJvcignZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfbnVtYmVyX3JhbmdlJykpIHtcclxuICAgICAgICAgIC8vIFJldHVybiB2YWxpZGF0aW9uIGVycm9yIGlmICdmcm9tJyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJ3RvJyB2YWx1ZVxyXG4gICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX251bWJlcl9yYW5nZTogdHJ1ZSB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodG9Db250cm9sLmhhc0Vycm9yKCdmb3JtX3ZhbGlkYXRpb25faW52YWxpZF9udW1iZXJfcmFuZ2UnKSkge1xyXG4gICAgICAgICAgLy8gcmVzZXQgdGhlIGVycm9yIG9mIOKAmHRv4oCZIGNvbnRyb2wgd2hlbiDigJhmcm9t4oCZIGNvbnRyb2wgaXMgdmFsaWQgYW5kIHRvIGNvbnRyb2wgY29udGFpbnMgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfbnVtYmVyX3JhbmdlXHJcbiAgICAgICAgICB0b0NvbnRyb2wuc2V0RXJyb3JzKHt9KTtcclxuICAgICAgICAgIHRvQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjYWxjdWxhdGVCYWxhbmNlID0gKHVuaXRzVmFsdWUsIGJhbGFuY2VWYWx1ZSkgPT4geyByZXR1cm4gdW5pdHNWYWx1ZSArIGJhbGFuY2VWYWx1ZSB9XHJcblxyXG4gIHN0YXRpYyB1bml0c0JhbGFuY2VWYWxpZGF0b3IodW5pdHNDb250cm9sTmFtZTogc3RyaW5nLCBiYWxhbmNlQ29udHJvbE5hbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBsZXQgcmVzcG9uc2UgPSBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xyXG4gICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgY29uc3QgdW5pdHNDb250cm9sID0gZm9ybUdyb3VwLmdldCh1bml0c0NvbnRyb2xOYW1lKTtcclxuICAgICAgICBjb25zdCBiYWxhbmNlQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoYmFsYW5jZUNvbnRyb2xOYW1lKTtcclxuICAgICAgICBjb25zdCB1bml0c1ZhbHVlID0gcGFyc2VJbnQodW5pdHNDb250cm9sLnZhbHVlKTtcclxuICAgICAgICBjb25zdCBiYWxhbmNlVmFsdWUgPSBiYWxhbmNlQ29udHJvbC52YWx1ZTtcclxuICAgICAgICBjb25zdCBiYWxhbmNlQ2FsY3VsYXRlZCA9IHRoaXMuY2FsY3VsYXRlQmFsYW5jZSh1bml0c1ZhbHVlLCBiYWxhbmNlVmFsdWUpXHJcbiAgICAgICAgaWYgKGJhbGFuY2VDYWxjdWxhdGVkID4gTUFYX0FMTE9XRURfQkFMQU5DRSkge1xyXG4gICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl91bml0c19iYWxhbmNlX21heGltdW06IHRydWUgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKGJhbGFuY2VDYWxjdWxhdGVkIDwgTUlOX0FMTE9XRURfQkFMQU5DRSkge1xyXG4gICAgICAgICAgcmVzcG9uc2UgPSB7IGZvcm1fdmFsaWRhdGlvbl91bml0c19iYWxhbmNlX21pbmltdW06IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtaW5EYXRlVGltZShjb250cm9sTmFtZTogc3RyaW5nLCBtaW5EYXRlVGltZVZhbHVlOiBEYXRlKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgbGV0IHJlc3BvbnNlID0gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgdmFsaWRhdGlvbiBwYXNzZXNcclxuICAgICAgaWYgKGNvbnRyb2xHcm91cC5wYXJlbnQpIHtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sR3JvdXAucGFyZW50IGFzIEZvcm1Hcm91cDtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk7XHJcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlOiBEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgICBpZiAoY29udHJvbFZhbHVlICYmIGNvbnRyb2xWYWx1ZSA8IG1pbkRhdGVUaW1lVmFsdWUpIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF9mcm9tX3RpbWU6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbVRvRGF0ZShmcm9tRGF0ZUZpZWxkOiBzdHJpbmcsIHRvRGF0ZUZpZWxkOiBzdHJpbmcsIGZyb21UaW1lRmllbGQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICB0b1RpbWVGaWVsZDogc3RyaW5nID0gbnVsbCwgZXJyb3JOYW1lOiBzdHJpbmcgPSAnZnJvbVRvRGF0ZScpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbURhdGU6IERhdGUgPSBmb3JtR3JvdXAuZ2V0KGZyb21EYXRlRmllbGQpPy52YWx1ZTtcclxuICAgICAgY29uc3QgdG9EYXRlOiBEYXRlID0gZm9ybUdyb3VwLmdldCh0b0RhdGVGaWVsZCk/LnZhbHVlO1xyXG4gICAgICBjb25zdCBmcm9tVGltZTogVGliYVRpbWUgPSBmb3JtR3JvdXAuZ2V0KGZyb21UaW1lRmllbGQpPy52YWx1ZTtcclxuICAgICAgY29uc3QgdG9UaW1lOiBUaWJhVGltZSA9IGZvcm1Hcm91cC5nZXQodG9UaW1lRmllbGQpPy52YWx1ZTtcclxuICAgICAgaWYgKGZyb21UaW1lKSB7XHJcbiAgICAgICAgZnJvbURhdGUuc2V0SG91cnMoZnJvbVRpbWUuaG91cnMpO1xyXG4gICAgICAgIGZyb21EYXRlLnNldE1pbnV0ZXMoZnJvbVRpbWUubWludXRlcyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRvVGltZSkge1xyXG4gICAgICAgIHRvRGF0ZS5zZXRIb3Vycyh0b1RpbWUuaG91cnMpO1xyXG4gICAgICAgIHRvRGF0ZS5zZXRNaW51dGVzKHRvVGltZS5taW51dGVzKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoKGZyb21EYXRlICE9PSBudWxsICYmIHRvRGF0ZSAhPT0gbnVsbCkgJiYgZnJvbURhdGUgPiB0b0RhdGUpIHtcclxuICAgICAgICByZXR1cm4geyBbZXJyb3JOYW1lXTogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tVG9UaW1lUmFuZ2UoZnJvbVRpbWVGaWVsZDogc3RyaW5nLCB0b1RpbWVGaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGxldCByZXNwb25zZSA9IG51bGw7IC8vIFJldHVybiBudWxsIGlmIHZhbGlkYXRpb24gcGFzc2VzXHJcbiAgICAgIGlmIChjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1Hcm91cDtcclxuICAgICAgICBjb25zdCB0b0NvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KHRvVGltZUZpZWxkKTtcclxuICAgICAgICBjb25zdCBmcm9tQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZnJvbVRpbWVGaWVsZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUdyZWF0ZXJUaGFuT3JFcXVhbFRvKGZyb21Db250cm9sLCB0b0NvbnRyb2wpICYmIHRoaXMuaXNWYWx1ZUxlbmd0aFZhbGlkKGZyb21Db250cm9sLCB0b0NvbnRyb2wpICYmXHJcbiAgICAgICAgICAhdG9Db250cm9sLmhhc0Vycm9yKCdmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlJykpIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlOiB0cnVlIH07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0b0NvbnRyb2wuaGFzRXJyb3IoJ2Zvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2UnKSkge1xyXG4gICAgICAgICAgLy8gcmVzZXQgdGhlIGVycm9yIG9mIOKAmHRv4oCZIGNvbnRyb2wgd2hlbiDigJhmcm9t4oCZIGNvbnRyb2wgaXMgdmFsaWQgYW5kIHRvIGNvbnRyb2wgY29udGFpbnMgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZV9yYW5nZVxyXG4gICAgICAgICAgdG9Db250cm9sLnNldEVycm9ycyh7fSk7XHJcbiAgICAgICAgICB0b0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tVG9UaW1lKGZyb21UaW1lRmllbGQ6IHN0cmluZywgdG9UaW1lRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBmcm9tVGltZTogVGliYVRpbWUgPSBmb3JtR3JvdXAuZ2V0KGZyb21UaW1lRmllbGQpLnZhbHVlO1xyXG4gICAgICBjb25zdCB0b1RpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldCh0b1RpbWVGaWVsZCkudmFsdWU7XHJcbiAgICAgIGlmICghdGhpcy5pc1RpbWVOdWxsKGZyb21UaW1lKSAmJiAhdGhpcy5pc1RpbWVOdWxsKHRvVGltZSkgJiYgKFxyXG4gICAgICAgIChmcm9tVGltZS5ob3VycyA+IHRvVGltZS5ob3VycykgfHxcclxuICAgICAgICAoZnJvbVRpbWUuaG91cnMgPT0gdG9UaW1lLmhvdXJzICYmIGZyb21UaW1lLm1pbnV0ZXMgPiB0b1RpbWUubWludXRlcylcclxuICAgICAgKSkge1xyXG4gICAgICAgIHJldHVybiB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2U6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpc1RpbWVOdWxsID0gKHRpbWU6IFRpYmFUaW1lKSA9PiB0aW1lID09PSBudWxsIHx8XHJcbiAgICAodGltZS5ob3VycyA9PT0gbnVsbCAmJiB0aW1lLm1pbnV0ZXMgPT09IG51bGwgJiYgdGltZS5zZWNvbmRzID09PSBudWxsKTtcclxuXHJcbiAgc3RhdGljIG5vV2hpdGVzcGFjZVZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzID0+XHJcbiAgICAhaXNOdWxsT3JFbXB0eShjb250cm9sLnZhbHVlKSAmJiBpc051bGxPckVtcHR5KGNvbnRyb2w/LnZhbHVlPy50cmltKCkpID8geyByZXF1aXJlZDogdHJ1ZSB9IDogbnVsbDtcclxuXHJcbiAgc3RhdGljIG5vV2hpdGVzcGFjZVdpdGhpblNlbnRlbmNlVmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgPT5cclxuICAgICEoY29udHJvbD8udmFsdWU/LnNwbGl0KFwiIFwiKS5sZW5ndGggPT09IDEpID8geyBub1doaXRlc3BhY2VXaXRoaW5TZW50ZW5jZTogdHJ1ZSB9IDogbnVsbDtcclxuXHJcbiAgc3RhdGljIHRlcm1zUG9saWN5Q2hlY2tib3goKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbCB8fCAhY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB7IGludmFsaWRUZXJtczogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB2YWxpZGF0ZURlZmF1bHRBY2Nlc3NQcm9maWxlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG4gICAgaWYgKCFpc051bGxPckVtcHR5KGNvbnRyb2wudmFsdWUpICYmICFjb250cm9sLnZhbHVlPy5kZWZhdWx0QWNjZXNzUHJvZmlsZSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5vRGVmYXVsdEFjY2Vzc1Byb2ZpbGU6IHtcclxuICAgICAgICAgIGNvbXBhbnlOYW1lOiBjb250cm9sLnZhbHVlLm5hbWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHpSYW5nZSh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBmcm9tWkZpZWxkOiBzdHJpbmcsIHRvWkZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBmcm9tWkNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZyb21aRmllbGQpIGFzIFVudHlwZWRGb3JtQXJyYXk7XHJcbiAgICAgIGNvbnN0IHRvWkNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KHRvWkZpZWxkKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xyXG5cclxuICAgICAgaWYgKGZyb21aQ29udHJvbC52YWx1ZT8uaWQgPiB0b1pDb250cm9sLnZhbHVlPy5pZCkge1xyXG4gICAgICAgIHJldHVybiB7IHpSYW5nZTogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5pbnZhbGlkX2ZpZWxkcykgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlcXVpcmVkQ3JlZGVudGlhbHModHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgY2FyUGxhdGVGaWVsZDogc3RyaW5nID0gJ2NhclBsYXRlJywgbW9iaWxlRmllbGQ6IHN0cmluZyA9ICdtb2JpbGUnLCBiYWRnZUZpZWxkOiBzdHJpbmcgPSAnYmFkZ2UnLFxyXG4gICAgZW1haWxGaWVsZDogc3RyaW5nID0gJ2VtYWlsJywgc2VuZEVtYWlsRmllbGQ6IHN0cmluZyA9ICdzZW5kRW1haWwnKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsID0+IHtcclxuICAgICAgbGV0IGNhclBsYXRlc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgbGV0IGJhZGdlc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgbGV0IGludGVycG9sYXRlZENyZWRlbnRpYWxzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgLy8gQ2FyZHNcclxuICAgICAgY29uc3QgYmFkZ2VzRm9ybUFycmF5ID0gZm9ybUdyb3VwLmdldChiYWRnZUZpZWxkKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xyXG4gICAgICBpZiAoYmFkZ2VzRm9ybUFycmF5KSB7XHJcbiAgICAgICAgaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucHVzaCh0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhcmQpKTtcclxuICAgICAgICBiYWRnZXNJbnZhbGlkID0gdGhpcy5pc0Zvcm1Db250cm9sTGlzdEludmFsaWQoYmFkZ2VzRm9ybUFycmF5LnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpc0NhcmRzSW52YWxpZCA9IGJhZGdlc0ludmFsaWQgfHwgIWJhZGdlc0Zvcm1BcnJheTtcclxuXHJcbiAgICAgIC8vQ2FyIHBsYXRlc1xyXG4gICAgICBjb25zdCBjYXJQbGF0ZXNGb3JtQXJyYXkgPSBmb3JtR3JvdXAuZ2V0KGNhclBsYXRlRmllbGQpIGFzIFVudHlwZWRGb3JtQXJyYXk7XHJcbiAgICAgIGlmIChjYXJQbGF0ZXNGb3JtQXJyYXkpIHtcclxuICAgICAgICBpbnRlcnBvbGF0ZWRDcmVkZW50aWFscy5wdXNoKHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyX3BsYXRlKSk7XHJcbiAgICAgICAgY2FyUGxhdGVzSW52YWxpZCA9IHRoaXMuaXNGb3JtQ29udHJvbExpc3RJbnZhbGlkKGNhclBsYXRlc0Zvcm1BcnJheS52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNDYXJQbGF0ZXNJbnZhbGlkID0gY2FyUGxhdGVzSW52YWxpZCB8fCAhY2FyUGxhdGVzRm9ybUFycmF5O1xyXG5cclxuICAgICAgLy8gTW9iaWxlXHJcbiAgICAgIGNvbnN0IG1vYmlsZUZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChtb2JpbGVGaWVsZCk7XHJcbiAgICAgIGlmIChtb2JpbGVGb3JtQ29udHJvbCkge1xyXG4gICAgICAgIGludGVycG9sYXRlZENyZWRlbnRpYWxzLnB1c2godHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5tb2JpbGUpKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpc01vYmlsZUludmFsaWQgPSAhbW9iaWxlRm9ybUNvbnRyb2w/LnZhbHVlO1xyXG5cclxuICAgICAgLy8gRW1haWxcclxuICAgICAgY29uc3QgZW1haWxGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZW1haWxGaWVsZCk7XHJcbiAgICAgIGNvbnN0IHNlbmRFbWFpbEZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChzZW5kRW1haWxGaWVsZCk7XHJcbiAgICAgIGlmIChlbWFpbEZvcm1Db250cm9sICYmIHNlbmRFbWFpbEZvcm1Db250cm9sPy52YWx1ZSkge1xyXG4gICAgICAgIGludGVycG9sYXRlZENyZWRlbnRpYWxzLnB1c2godHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5lbWFpbCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlzRW1haWxJbnZhbGlkID0gIShzZW5kRW1haWxGb3JtQ29udHJvbD8udmFsdWUgJiYgZW1haWxGb3JtQ29udHJvbD8udmFsdWUpXHJcblxyXG4gICAgICBjb25zdCBpc1JlcXVpcmVkQ3JlZGVudGlhbHMgPSBpc0NhclBsYXRlc0ludmFsaWQgJiYgaXNDYXJkc0ludmFsaWQgJiYgaXNNb2JpbGVJbnZhbGlkICYmIGlzRW1haWxJbnZhbGlkO1xyXG5cclxuICAgICAgaWYgKGlzUmVxdWlyZWRDcmVkZW50aWFscykge1xyXG4gICAgICAgIGNvbnN0IGxhc3RDcmVkZW50aWFsID0gaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucG9wKCk7XHJcbiAgICAgICAgbGV0IGludGVycG9sYXRlUGFyYW1zID0gYCR7aW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMuam9pbignLCAnKX0gJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLm9yKX0gJHtsYXN0Q3JlZGVudGlhbH1gO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICByZXF1aXJlZENyZWRlbnRpYWxzOiB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlcXVpcmVkX2NyZWRlbnRpYWxzX21lc3NhZ2UsIHsgY3JlZGVudGlhbHM6IGludGVycG9sYXRlUGFyYW1zIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGlzRm9ybUNvbnRyb2xMaXN0SW52YWxpZChsaXN0OiBVbnR5cGVkRm9ybUNvbnRyb2xbXSkge1xyXG4gICAgbGV0IGlzSW52YWxpZCA9IGZhbHNlO1xyXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGxpc3QpIHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0ludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmVxdWlyZWREYXlzKHNwZWNpYWxEYXlzRmllbGQ6IHN0cmluZywgd2Vla0RheXNGaWVsZDogc3RyaW5nLCBlcnJvck5hbWU6IHN0cmluZyA9ICdyZXF1aXJlZERheXMnKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IHNwZWNpYWxEYXlzOiBudW1iZXIgPSBmb3JtR3JvdXAuZ2V0KHNwZWNpYWxEYXlzRmllbGQpLnZhbHVlO1xyXG4gICAgICBjb25zdCB3ZWVrRGF5czogbnVtYmVyID0gZm9ybUdyb3VwLmdldCh3ZWVrRGF5c0ZpZWxkKS52YWx1ZTtcclxuICAgICAgaWYgKHNwZWNpYWxEYXlzID4gMCB8fCB3ZWVrRGF5cyA+IDApIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgW2Vycm9yTmFtZV06IHRydWUgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNSb2xlTmFtZUV4aXN0cyhyb2xlU2VydmljZVByb3h5OiBDbG91ZC5Sb2xlU2VydmljZVByb3h5LCByb2xlSWQ6IG51bWJlcik6IEFzeW5jVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnM+ID0+IHtcclxuICAgICAgcmV0dXJuIG9mKGNvbnRyb2wudmFsdWUpLnBpcGUoXHJcbiAgICAgICAgZGVsYXkoNTAwKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoSU5QVVRfU0VBUkNIX0RFQk9VTkNFX1RJTUUpLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiByb2xlU2VydmljZVByb3h5LmlzRXhpc3RzKGNvbnRyb2wudmFsdWUsIHJvbGVJZCA/PyB1bmRlZmluZWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAocmVzID0+IHJlcy5kYXRhID09PSB0cnVlIHx8ICFyZXMuaXNTdWNjZXNzID8geyByb2xlTmFtZUFscmVhZHlFeGlzdHM6IHRydWUgfSA6IG51bGwpKSkpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0aWJhVGltZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWw6IFRpYmFUaW1lID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAodmFsICYmICh2YWwuaG91cnMgPT09IG51bGwgfHwgdmFsLm1pbnV0ZXMgPT09IG51bGwpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaW52YWxpZFRpbWU6IHRydWVcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0aW1lVmFsaWRhdG9yKGZyb21Ib3VyOiBudW1iZXIsIGZyb21NaW51dGVzOiBudW1iZXIsIHRvSG91cjogbnVtYmVyLCB0b01pbnV0ZXM6IG51bWJlcik6IGFueSB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgaWYgKCEhY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIGlmIChjb250cm9sLnZhbHVlLmxlbmd0aCAhPT0gNCkgeyAvLyBBc3N1bWluZyB5b3VyIHRpbWUgZm9ybWF0IGlzICdISE1NJ1xyXG4gICAgICAgICAgcmV0dXJuIHsgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZV9mb3JtYXQ6IHRydWUgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaG91cnM6IG51bWJlciA9IHBhcnNlSW50KGNvbnRyb2wudmFsdWUuc2xpY2UoMCwgMikpO1xyXG4gICAgICAgICAgY29uc3QgbWludXRlczogbnVtYmVyID0gcGFyc2VJbnQoY29udHJvbC52YWx1ZS5zbGljZSgyKSk7XHJcbiAgICAgICAgICBjb25zdCBpc1ZhbGlkVGltZSA9XHJcbiAgICAgICAgICAgIChob3VycyA+IGZyb21Ib3VyIHx8IChob3VycyA9PT0gZnJvbUhvdXIgJiYgbWludXRlcyA+PSBmcm9tTWludXRlcykpICYmXHJcbiAgICAgICAgICAgIChob3VycyA8IHRvSG91ciB8fCAoaG91cnMgPT09IHRvSG91ciAmJiBtaW51dGVzIDw9IHRvTWludXRlcykpO1xyXG4gICAgICAgICAgaWYgKCFpc1ZhbGlkVGltZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWU6IHtcclxuICAgICAgICAgICAgICAgIGZyb206IGAke2Zyb21Ib3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtmcm9tTWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YCxcclxuICAgICAgICAgICAgICAgIHRvOiBgJHt0b0hvdXIudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3RvTWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsdWVHcmVhdGVyVGhhbk9yRXF1YWxUbyhmcm9tQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCB0b0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZnJvbVRpbWVJbk51bWJlcjogbnVtYmVyID0gZnJvbUNvbnRyb2wudmFsdWU7XHJcbiAgICBjb25zdCB0b1RpbWVJbk51bWJlcjogbnVtYmVyID0gdG9Db250cm9sLnZhbHVlO1xyXG4gICAgcmV0dXJuIGZyb21UaW1lSW5OdW1iZXIgIT09IG51bGwgJiYgdG9UaW1lSW5OdW1iZXIgIT09IG51bGwgJiYgK2Zyb21UaW1lSW5OdW1iZXIgPiArdG9UaW1lSW5OdW1iZXI7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaXNWYWx1ZUxlbmd0aFZhbGlkKGZyb21Db250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHRvQ29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmcm9tVGltZUluTnVtYmVyOiBudW1iZXIgPSBmcm9tQ29udHJvbC52YWx1ZTtcclxuICAgIGNvbnN0IHRvVGltZUluTnVtYmVyOiBudW1iZXIgPSB0b0NvbnRyb2wudmFsdWU7XHJcbiAgICByZXR1cm4gZnJvbVRpbWVJbk51bWJlci50b1N0cmluZygpLmxlbmd0aCA9PT0gVkFMSURfVElNRV9NQVhfTEVOR1RIICYmXHJcbiAgICAgIHRvVGltZUluTnVtYmVyLnRvU3RyaW5nKCkubGVuZ3RoID09PSBWQUxJRF9USU1FX01BWF9MRU5HVEg7XHJcbiAgfVxyXG59XHJcbiJdfQ==
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbGlkYXRvci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy91dGlscy9jdXN0b20tdmFsaWRhdG9yLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJeEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyx5SEFBeUgsQ0FBQztBQUN2SixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHVGQUF1RixDQUFDO0FBQ2hILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLGdC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RyxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0NBQzFGLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFOzZCQUNyRjt5QkFDRixDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsMkJBQTJCLENBQUMsV0FBNEIsRUFBRSxTQUEwQjtRQUNqRyxNQUFNLGdCQUFnQixHQUFXLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDbkQsTUFBTSxjQUFjLEdBQVcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMvQyxPQUFPLGdCQUFnQixLQUFLLElBQUksSUFBSSxjQUFjLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFDckcsQ0FBQztJQUFBLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBNEIsRUFBRSxTQUEwQjtRQUN4RixNQUFNLGdCQUFnQixHQUFXLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDbkQsTUFBTSxjQUFjLEdBQVcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMvQyxPQUFPLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxxQkFBcUI7WUFDakUsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsQ0FBQztJQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBkZWxheSwgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElOUFVUX1NFQVJDSF9ERUJPVU5DRV9USU1FLCBWQUxJRF9USU1FX01BWF9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi9lbnVtcyc7XHJcbmltcG9ydCB7IENsb3VkIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eSc7XHJcbmltcG9ydCB7IFRpbWUgYXMgVGliYVRpbWUgfSBmcm9tICcuL2RhdGUudXRpbCc7XHJcblxyXG5jb25zdCBNSU5fQUxMT1dFRF9CQUxBTkNFID0gMDtcclxuY29uc3QgTUFYX0FMTE9XRURfQkFMQU5DRSA9IDI1NTtcclxuZXhwb3J0IGNvbnN0IG5vRW1vamlSZWdleCA9IC9bXmEtekEtWjAtOSBdL2dtO1xyXG5leHBvcnQgY29uc3QgcGFzc3dvcmRSZWdleCA9IC9eKD89LipbYS16XSkoPz0uKltBLVpdKSg/PS4qXFxkKSg/PS4qWyFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xcXV5fYHt8fX5dKVtBLVphLXpcXGQhXCIjJCUmJygpKissLS4vOjs8PT4/QFtcXF1eX2B7fH1+XXs0LH0kL2c7XHJcbmV4cG9ydCBjb25zdCBwb3NpdGl2ZU51bWJlcnNSZWdleCA9IC9eWzAtOV0rKFxcLj9bMC05XSspPyQvO1xyXG5leHBvcnQgY29uc3QgcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXggPSAvXig/PS4qWzEtOV0pXFxkKig/OlxcLlxcZCspPyQvO1xyXG5leHBvcnQgY29uc3QgYWxwaGFudW1lcmljUmVnZXggPSAvXlthLXpBLVowLTldKyQvO1xyXG5leHBvcnQgY29uc3QgbW9iaWxlUmVnZXggPSAvXlswLTldKyQvO1xyXG5leHBvcnQgY29uc3QgaW50ZWdlck51bWJlcnNSZWdleCA9IC9eWy1dPyhcXGQrKT8kLztcclxuZXhwb3J0IGNvbnN0IGRlY2ltYWxQb3NpdGl2ZVJlZ2V4ID0gL14oXFxkKykoXFwuXFxkezEsMn0pPyQvO1xyXG5leHBvcnQgY29uc3QgZGVjaW1hbFJlZ2V4ID0gL14tPyhcXGQrKShcXC5cXGR7MSwyfSk/JC87XHJcbmV4cG9ydCBjb25zdCByZWdleEV4cCA9IC9eWzAtOWEtZkEtRl17OH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17MTJ9JC87XHJcbmV4cG9ydCBjb25zdCBwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm9SZWdleCA9IC9eKDB8WzEtOV1cXGQqKSQvO1xyXG5leHBvcnQgY29uc3QgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4ID0gL15bMS05XVxcZCokLztcclxuZXhwb3J0IGNvbnN0IHBlcmNlbnRhZ2VSZWdleCA9IC9eKDEwMChcXC4wKyk/fFsxLTldP1xcZChcXC5cXGQrKT8pJC87XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eSh2YWw6IGFueSk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAodmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsIHx8IHZhbCA9PT0gJycpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGliYVZhbGlkYXRvcnMge1xyXG5cclxuICAvLyBObyBlbW9qaSB2YWxpZGF0aW9uXHJcbiAgc3RhdGljIG5vRW1vamkoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiB2YWwudG9TdHJpbmcoKS5tYXRjaChub0Vtb2ppUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbm9FbW9qaToge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogbm9FbW9qaVJlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBlcmNlbnRhZ2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocGVyY2VudGFnZVJlZ2V4KSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBlcmNlbnRhZ2VSZWdleDoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogcGVyY2VudGFnZVJlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gTW9iaWxlIG9ubHkgdmFsaWRhdGlvblxyXG4gIHN0YXRpYyBtb2JpbGVOdW1iZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKG1vYmlsZVJlZ2V4KSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG1vYmlsZU51bWJlcnM6IHtcclxuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcclxuICAgICAgICAgIHBhdHRlcm46IG1vYmlsZVJlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGhvdGVsUm9vbk51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2goYWxwaGFudW1lcmljUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgYWxwaGFudW1lcmljUmVnZXg6IHtcclxuICAgICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcclxuICAgICAgICAgIHBhdHRlcm46IGFscGhhbnVtZXJpY1JlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBvc2l0aXZlSW50ZWdlck51bWJlcnNJbmNsdWRlWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWwgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmICF2YWwudG9TdHJpbmcoKS5tYXRjaChwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm9SZWdleCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwb3NpdGl2ZUludGVnZXJOdW1iZXJzSW5jbHVkZVplcm9SZWdleDoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0luY2x1ZGVaZXJvUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc1dpdGhvdXRaZXJvUmVnZXgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4KSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBvc2l0aXZlSW50ZWdlck51bWJlcnNHcmVhdGVyVGhhblplcm9SZWdleDoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogcG9zaXRpdmVJbnRlZ2VyTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gRGVjaW1hbCBQb3NpdGl2ZSBOdW1iZXJzIG9ubHkgdmFsaWRhdGlvblxyXG4gIHN0YXRpYyBkZWNpbWFsUG9zaXRpdmVOdW1iZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2goZGVjaW1hbFBvc2l0aXZlUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGVjaW1hbFBvc2l0aXZlTnVtYmVyczoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogZGVjaW1hbFJlZ2V4XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBEZWNpbWFsIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXHJcbiAgc3RhdGljIGRlY2ltYWxOdW1iZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKGRlY2ltYWxSZWdleCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkZWNpbWFsUG9zaXRpdmVOdW1iZXJzOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBkZWNpbWFsUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBQb3NpdGl2ZSBOdW1iZXJzIG9ubHkgdmFsaWRhdGlvblxyXG4gIHN0YXRpYyBwb3NpdGl2ZU51bWJlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yRW1wdHkodmFsKSAmJiAhdmFsLnRvU3RyaW5nKCkubWF0Y2gocG9zaXRpdmVOdW1iZXJzUmVnZXgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcG9zaXRpdmVOdW1iZXJzOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYCAnJHt2YWx9J2AsXHJcbiAgICAgICAgICBwYXR0ZXJuOiBwb3NpdGl2ZU51bWJlcnNSZWdleFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFBvc2l0aXZlIE51bWJlcnMgd2l0aG91dCB6ZXJvIHZhbGlkYXRpb25cclxuICBzdGF0aWMgcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVyb1JlZ2V4KSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBvc2l0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybzoge1xyXG4gICAgICAgICAgdmFsdWU6IGAgJyR7dmFsfSdgLFxyXG4gICAgICAgICAgcGF0dGVybjogcG9zaXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvUmVnZXhcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBQb3NpdGl2ZSAvIE5lZ2V0aXZlIE51bWJlcnMgb25seSB2YWxpZGF0aW9uXHJcbiAgc3RhdGljIGludGVnZXJOdW1iZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbCA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCFpc051bGxPckVtcHR5KHZhbCkgJiYgIXZhbC50b1N0cmluZygpLm1hdGNoKGludGVnZXJOdW1iZXJzUmVnZXgpKSByZXR1cm4ge1xyXG4gICAgICBpbnRlZ2VyTnVtYmVyczoge1xyXG4gICAgICAgIHZhbHVlOiBgICcke3ZhbH0nYCxcclxuICAgICAgICBwYXR0ZXJuOiBpbnRlZ2VyTnVtYmVyc1JlZ2V4XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBOdW1iZXIgbGVuZ3RoXHJcbiAgc3RhdGljIG51bWVyaWNMZW5ndGgobGVuZ3RoOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgdmFsID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgIGlmICghaXNOdWxsT3JFbXB0eSh2YWwpICYmIHZhbC50b1N0cmluZygpLmxlbmd0aCAhPT0gbGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGludmFsaWROdW1iZXJMZW5ndGg6IHtcclxuICAgICAgICAgICAgYWN0dWFsTGVuZ3RoOiB2YWwsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiBsZW5ndGhcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgUGFzc3dvcmRWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlPy5tYXRjaChwYXNzd29yZFJlZ2V4KSkge1xyXG4gICAgICByZXR1cm4geyBwYXNzd29yZFBvbGljeVJlcXVpcmVtZW50czogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgOCkge1xyXG4gICAgICByZXR1cm4geyBtaW5sZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGg6IDggfSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR3VpZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoIXJlZ2V4RXhwLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHsgZ3VpZElzVmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFBhc3N3b3JkRm9ybU1hdGNoVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG4gICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gY29udHJvbC5nZXQoJ3Bhc3N3b3JkJyk7XHJcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9sLmdldCgnY29uZmlybVBhc3N3b3JkJyk7XHJcbiAgICBpZiAoKG5ld1Bhc3N3b3JkLmVycm9ycyB8fCBjb25maXJtUGFzc3dvcmQuZXJyb3JzKSB8fFxyXG4gICAgICBuZXdQYXNzd29yZC52YWx1ZSA9PT0gY29uZmlybVBhc3N3b3JkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsOyAvLyBQYXNzd29yZHMgbWF0Y2ggb3IgZm9ybSBmaWVsZHMgaGFzIGl0cyBvd24gZXJyb3JzXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBwYXNzd29yZE5vdE1hdGNoOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbVRvTnVtYmVyVmFsaWRhdG9yKGZyb21Db250cm9sTmFtZTogc3RyaW5nLCB0b0NvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgbGV0IHJlc3BvbnNlID0gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgdmFsaWRhdGlvbiBwYXNzZXNcclxuICAgICAgaWYgKGNvbnRyb2wucGFyZW50KSB7XHJcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gZm9ybUdyb3VwLmdldChmcm9tQ29udHJvbE5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHRvQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQodG9Db250cm9sTmFtZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUdyZWF0ZXJUaGFuT3JFcXVhbFRvKGZyb21Db250cm9sLCB0b0NvbnRyb2wpICYmICF0b0NvbnRyb2wuaGFzRXJyb3IoJ2Zvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX251bWJlcl9yYW5nZScpKSB7XHJcbiAgICAgICAgICAvLyBSZXR1cm4gdmFsaWRhdGlvbiBlcnJvciBpZiAnZnJvbScgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICd0bycgdmFsdWVcclxuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF9udW1iZXJfcmFuZ2U6IHRydWUgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRvQ29udHJvbC5oYXNFcnJvcignZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfbnVtYmVyX3JhbmdlJykpIHtcclxuICAgICAgICAgIC8vIHJlc2V0IHRoZSBlcnJvciBvZiDigJh0b+KAmSBjb250cm9sIHdoZW4g4oCYZnJvbeKAmSBjb250cm9sIGlzIHZhbGlkIGFuZCB0byBjb250cm9sIGNvbnRhaW5zIGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX251bWJlcl9yYW5nZVxyXG4gICAgICAgICAgdG9Db250cm9sLnNldEVycm9ycyh7fSk7XHJcbiAgICAgICAgICB0b0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY2FsY3VsYXRlQmFsYW5jZSA9ICh1bml0c1ZhbHVlLCBiYWxhbmNlVmFsdWUpID0+IHsgcmV0dXJuIHVuaXRzVmFsdWUgKyBiYWxhbmNlVmFsdWUgfVxyXG5cclxuICBzdGF0aWMgdW5pdHNCYWxhbmNlVmFsaWRhdG9yKHVuaXRzQ29udHJvbE5hbWU6IHN0cmluZywgYmFsYW5jZUNvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgbGV0IHJlc3BvbnNlID0gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgdmFsaWRhdGlvbiBwYXNzZXNcclxuICAgICAgaWYgKGNvbnRyb2wucGFyZW50KSB7XHJcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGNvbnN0IHVuaXRzQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQodW5pdHNDb250cm9sTmFtZSk7XHJcbiAgICAgICAgY29uc3QgYmFsYW5jZUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGJhbGFuY2VDb250cm9sTmFtZSk7XHJcbiAgICAgICAgY29uc3QgdW5pdHNWYWx1ZSA9IHBhcnNlSW50KHVuaXRzQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgY29uc3QgYmFsYW5jZVZhbHVlID0gYmFsYW5jZUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgY29uc3QgYmFsYW5jZUNhbGN1bGF0ZWQgPSB0aGlzLmNhbGN1bGF0ZUJhbGFuY2UodW5pdHNWYWx1ZSwgYmFsYW5jZVZhbHVlKVxyXG4gICAgICAgIGlmIChiYWxhbmNlQ2FsY3VsYXRlZCA+IE1BWF9BTExPV0VEX0JBTEFOQ0UpIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25fdW5pdHNfYmFsYW5jZV9tYXhpbXVtOiB0cnVlIH07XHJcbiAgICAgICAgfSBlbHNlIGlmIChiYWxhbmNlQ2FsY3VsYXRlZCA8IE1JTl9BTExPV0VEX0JBTEFOQ0UpIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0geyBmb3JtX3ZhbGlkYXRpb25fdW5pdHNfYmFsYW5jZV9taW5pbXVtOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWluRGF0ZVRpbWUoY29udHJvbE5hbWU6IHN0cmluZywgbWluRGF0ZVRpbWVWYWx1ZTogRGF0ZSk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbEdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGxldCByZXNwb25zZSA9IG51bGw7IC8vIFJldHVybiBudWxsIGlmIHZhbGlkYXRpb24gcGFzc2VzXHJcbiAgICAgIGlmIChjb250cm9sR3JvdXAucGFyZW50KSB7XHJcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbEdyb3VwLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZTogRGF0ZSA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICAgIGlmIChjb250cm9sVmFsdWUpIHtcclxuXHJcbiAgICAgICAgICBjb25zdCBjb250cm9sRGF0ZSA9IG5ldyBEYXRlKGNvbnRyb2xWYWx1ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluRGF0ZVRpbWVWYWx1ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcblxyXG4gICAgICAgICAgaWYgKGNvbnRyb2xEYXRlIDwgbWluRGF0ZSkge1xyXG4gICAgICAgICAgICByZXNwb25zZSA9IHsgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfZnJvbV90aW1lOiB0cnVlIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21Ub0RhdGUoZnJvbURhdGVGaWVsZDogc3RyaW5nLCB0b0RhdGVGaWVsZDogc3RyaW5nLCBmcm9tVGltZUZpZWxkOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgdG9UaW1lRmllbGQ6IHN0cmluZyA9IG51bGwsIGVycm9yTmFtZTogc3RyaW5nID0gJ2Zyb21Ub0RhdGUnKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlOiBEYXRlID0gZm9ybUdyb3VwLmdldChmcm9tRGF0ZUZpZWxkKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZTogRGF0ZSA9IGZvcm1Hcm91cC5nZXQodG9EYXRlRmllbGQpPy52YWx1ZTtcclxuICAgICAgY29uc3QgZnJvbVRpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldChmcm9tVGltZUZpZWxkKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IHRvVGltZTogVGliYVRpbWUgPSBmb3JtR3JvdXAuZ2V0KHRvVGltZUZpZWxkKT8udmFsdWU7XHJcbiAgICAgIGlmIChmcm9tVGltZSkge1xyXG4gICAgICAgIGZyb21EYXRlLnNldEhvdXJzKGZyb21UaW1lLmhvdXJzKTtcclxuICAgICAgICBmcm9tRGF0ZS5zZXRNaW51dGVzKGZyb21UaW1lLm1pbnV0ZXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0b1RpbWUpIHtcclxuICAgICAgICB0b0RhdGUuc2V0SG91cnModG9UaW1lLmhvdXJzKTtcclxuICAgICAgICB0b0RhdGUuc2V0TWludXRlcyh0b1RpbWUubWludXRlcyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpICYmIGZyb21EYXRlID4gdG9EYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgW2Vycm9yTmFtZV06IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbVRvVGltZVJhbmdlKGZyb21UaW1lRmllbGQ6IHN0cmluZywgdG9UaW1lRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBsZXQgcmVzcG9uc2UgPSBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xyXG4gICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgY29uc3QgdG9Db250cm9sID0gZm9ybUdyb3VwLmdldCh0b1RpbWVGaWVsZCk7XHJcbiAgICAgICAgY29uc3QgZnJvbUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZyb21UaW1lRmllbGQpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzVmFsdWVHcmVhdGVyVGhhbk9yRXF1YWxUbyhmcm9tQ29udHJvbCwgdG9Db250cm9sKSAmJiB0aGlzLmlzVmFsdWVMZW5ndGhWYWxpZChmcm9tQ29udHJvbCwgdG9Db250cm9sKSAmJlxyXG4gICAgICAgICAgIXRvQ29udHJvbC5oYXNFcnJvcignZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZV9yYW5nZScpKSB7XHJcbiAgICAgICAgICByZXNwb25zZSA9IHsgZm9ybV92YWxpZGF0aW9uX2ludmFsaWRfdGltZV9yYW5nZTogdHJ1ZSB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodG9Db250cm9sLmhhc0Vycm9yKCdmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlJykpIHtcclxuICAgICAgICAgIC8vIHJlc2V0IHRoZSBlcnJvciBvZiDigJh0b+KAmSBjb250cm9sIHdoZW4g4oCYZnJvbeKAmSBjb250cm9sIGlzIHZhbGlkIGFuZCB0byBjb250cm9sIGNvbnRhaW5zIGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfcmFuZ2VcclxuICAgICAgICAgIHRvQ29udHJvbC5zZXRFcnJvcnMoe30pO1xyXG4gICAgICAgICAgdG9Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbVRvVGltZShmcm9tVGltZUZpZWxkOiBzdHJpbmcsIHRvVGltZUZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbVRpbWU6IFRpYmFUaW1lID0gZm9ybUdyb3VwLmdldChmcm9tVGltZUZpZWxkKS52YWx1ZTtcclxuICAgICAgY29uc3QgdG9UaW1lOiBUaWJhVGltZSA9IGZvcm1Hcm91cC5nZXQodG9UaW1lRmllbGQpLnZhbHVlO1xyXG4gICAgICBpZiAoIXRoaXMuaXNUaW1lTnVsbChmcm9tVGltZSkgJiYgIXRoaXMuaXNUaW1lTnVsbCh0b1RpbWUpICYmIChcclxuICAgICAgICAoZnJvbVRpbWUuaG91cnMgPiB0b1RpbWUuaG91cnMpIHx8XHJcbiAgICAgICAgKGZyb21UaW1lLmhvdXJzID09IHRvVGltZS5ob3VycyAmJiBmcm9tVGltZS5taW51dGVzID4gdG9UaW1lLm1pbnV0ZXMpXHJcbiAgICAgICkpIHtcclxuICAgICAgICByZXR1cm4geyBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lX3JhbmdlOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaXNUaW1lTnVsbCA9ICh0aW1lOiBUaWJhVGltZSkgPT4gdGltZSA9PT0gbnVsbCB8fFxyXG4gICAgKHRpbWUuaG91cnMgPT09IG51bGwgJiYgdGltZS5taW51dGVzID09PSBudWxsICYmIHRpbWUuc2Vjb25kcyA9PT0gbnVsbCk7XHJcblxyXG4gIHN0YXRpYyBub1doaXRlc3BhY2VWYWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PlxyXG4gICAgIWlzTnVsbE9yRW1wdHkoY29udHJvbC52YWx1ZSkgJiYgaXNOdWxsT3JFbXB0eShjb250cm9sPy52YWx1ZT8udHJpbSgpKSA/IHsgcmVxdWlyZWQ6IHRydWUgfSA6IG51bGw7XHJcblxyXG4gIHN0YXRpYyBub1doaXRlc3BhY2VXaXRoaW5TZW50ZW5jZVZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzID0+XHJcbiAgICAhKGNvbnRyb2w/LnZhbHVlPy5zcGxpdChcIiBcIikubGVuZ3RoID09PSAxKSA/IHsgbm9XaGl0ZXNwYWNlV2l0aGluU2VudGVuY2U6IHRydWUgfSA6IG51bGw7XHJcblxyXG4gIHN0YXRpYyB0ZXJtc1BvbGljeUNoZWNrYm94KCk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4geyBpbnZhbGlkVGVybXM6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdmFsaWRhdGVEZWZhdWx0QWNjZXNzUHJvZmlsZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgIGlmICghaXNOdWxsT3JFbXB0eShjb250cm9sLnZhbHVlKSAmJiAhY29udHJvbC52YWx1ZT8uZGVmYXVsdEFjY2Vzc1Byb2ZpbGUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBub0RlZmF1bHRBY2Nlc3NQcm9maWxlOiB7XHJcbiAgICAgICAgICBjb21wYW55TmFtZTogY29udHJvbC52YWx1ZS5uYW1lLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB6UmFuZ2UodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgZnJvbVpGaWVsZDogc3RyaW5nLCB0b1pGaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbVpDb250cm9sID0gZm9ybUdyb3VwLmdldChmcm9tWkZpZWxkKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xyXG4gICAgICBjb25zdCB0b1pDb250cm9sID0gZm9ybUdyb3VwLmdldCh0b1pGaWVsZCkgYXMgVW50eXBlZEZvcm1BcnJheTtcclxuXHJcbiAgICAgIGlmIChmcm9tWkNvbnRyb2wudmFsdWU/LmlkID4gdG9aQ29udHJvbC52YWx1ZT8uaWQpIHtcclxuICAgICAgICByZXR1cm4geyB6UmFuZ2U6IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uaW52YWxpZF9maWVsZHMpIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZXF1aXJlZENyZWRlbnRpYWxzKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIGNhclBsYXRlRmllbGQ6IHN0cmluZyA9ICdjYXJQbGF0ZScsIG1vYmlsZUZpZWxkOiBzdHJpbmcgPSAnbW9iaWxlJywgYmFkZ2VGaWVsZDogc3RyaW5nID0gJ2JhZGdlJyxcclxuICAgIGVtYWlsRmllbGQ6IHN0cmluZyA9ICdlbWFpbCcsIHNlbmRFbWFpbEZpZWxkOiBzdHJpbmcgPSAnc2VuZEVtYWlsJyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGxldCBjYXJQbGF0ZXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGxldCBiYWRnZXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGxldCBpbnRlcnBvbGF0ZWRDcmVkZW50aWFsczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgIC8vIENhcmRzXHJcbiAgICAgIGNvbnN0IGJhZGdlc0Zvcm1BcnJheSA9IGZvcm1Hcm91cC5nZXQoYmFkZ2VGaWVsZCkgYXMgVW50eXBlZEZvcm1BcnJheTtcclxuICAgICAgaWYgKGJhZGdlc0Zvcm1BcnJheSkge1xyXG4gICAgICAgIGludGVycG9sYXRlZENyZWRlbnRpYWxzLnB1c2godHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYXJkKSk7XHJcbiAgICAgICAgYmFkZ2VzSW52YWxpZCA9IHRoaXMuaXNGb3JtQ29udHJvbExpc3RJbnZhbGlkKGJhZGdlc0Zvcm1BcnJheS52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNDYXJkc0ludmFsaWQgPSBiYWRnZXNJbnZhbGlkIHx8ICFiYWRnZXNGb3JtQXJyYXk7XHJcblxyXG4gICAgICAvL0NhciBwbGF0ZXNcclxuICAgICAgY29uc3QgY2FyUGxhdGVzRm9ybUFycmF5ID0gZm9ybUdyb3VwLmdldChjYXJQbGF0ZUZpZWxkKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xyXG4gICAgICBpZiAoY2FyUGxhdGVzRm9ybUFycmF5KSB7XHJcbiAgICAgICAgaW50ZXJwb2xhdGVkQ3JlZGVudGlhbHMucHVzaCh0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhcl9wbGF0ZSkpO1xyXG4gICAgICAgIGNhclBsYXRlc0ludmFsaWQgPSB0aGlzLmlzRm9ybUNvbnRyb2xMaXN0SW52YWxpZChjYXJQbGF0ZXNGb3JtQXJyYXkudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlzQ2FyUGxhdGVzSW52YWxpZCA9IGNhclBsYXRlc0ludmFsaWQgfHwgIWNhclBsYXRlc0Zvcm1BcnJheTtcclxuXHJcbiAgICAgIC8vIE1vYmlsZVxyXG4gICAgICBjb25zdCBtb2JpbGVGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQobW9iaWxlRmllbGQpO1xyXG4gICAgICBpZiAobW9iaWxlRm9ybUNvbnRyb2wpIHtcclxuICAgICAgICBpbnRlcnBvbGF0ZWRDcmVkZW50aWFscy5wdXNoKHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ubW9iaWxlKSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNNb2JpbGVJbnZhbGlkID0gIW1vYmlsZUZvcm1Db250cm9sPy52YWx1ZTtcclxuXHJcbiAgICAgIC8vIEVtYWlsXHJcbiAgICAgIGNvbnN0IGVtYWlsRm9ybUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGVtYWlsRmllbGQpO1xyXG4gICAgICBjb25zdCBzZW5kRW1haWxGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoc2VuZEVtYWlsRmllbGQpO1xyXG4gICAgICBpZiAoZW1haWxGb3JtQ29udHJvbCAmJiBzZW5kRW1haWxGb3JtQ29udHJvbD8udmFsdWUpIHtcclxuICAgICAgICBpbnRlcnBvbGF0ZWRDcmVkZW50aWFscy5wdXNoKHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZW1haWwpKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpc0VtYWlsSW52YWxpZCA9ICEoc2VuZEVtYWlsRm9ybUNvbnRyb2w/LnZhbHVlICYmIGVtYWlsRm9ybUNvbnRyb2w/LnZhbHVlKVxyXG5cclxuICAgICAgY29uc3QgaXNSZXF1aXJlZENyZWRlbnRpYWxzID0gaXNDYXJQbGF0ZXNJbnZhbGlkICYmIGlzQ2FyZHNJbnZhbGlkICYmIGlzTW9iaWxlSW52YWxpZCAmJiBpc0VtYWlsSW52YWxpZDtcclxuXHJcbiAgICAgIGlmIChpc1JlcXVpcmVkQ3JlZGVudGlhbHMpIHtcclxuICAgICAgICBjb25zdCBsYXN0Q3JlZGVudGlhbCA9IGludGVycG9sYXRlZENyZWRlbnRpYWxzLnBvcCgpO1xyXG4gICAgICAgIGxldCBpbnRlcnBvbGF0ZVBhcmFtcyA9IGAke2ludGVycG9sYXRlZENyZWRlbnRpYWxzLmpvaW4oJywgJyl9ICR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5vcil9ICR7bGFzdENyZWRlbnRpYWx9YDtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZWRDcmVkZW50aWFsczogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5yZXF1aXJlZF9jcmVkZW50aWFsc19tZXNzYWdlLCB7IGNyZWRlbnRpYWxzOiBpbnRlcnBvbGF0ZVBhcmFtcyB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpc0Zvcm1Db250cm9sTGlzdEludmFsaWQobGlzdDogVW50eXBlZEZvcm1Db250cm9sW10pIHtcclxuICAgIGxldCBpc0ludmFsaWQgPSBmYWxzZTtcclxuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBsaXN0KSB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIGlzSW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNJbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlcXVpcmVkRGF5cyhzcGVjaWFsRGF5c0ZpZWxkOiBzdHJpbmcsIHdlZWtEYXlzRmllbGQ6IHN0cmluZywgZXJyb3JOYW1lOiBzdHJpbmcgPSAncmVxdWlyZWREYXlzJyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBzcGVjaWFsRGF5czogbnVtYmVyID0gZm9ybUdyb3VwLmdldChzcGVjaWFsRGF5c0ZpZWxkKS52YWx1ZTtcclxuICAgICAgY29uc3Qgd2Vla0RheXM6IG51bWJlciA9IGZvcm1Hcm91cC5nZXQod2Vla0RheXNGaWVsZCkudmFsdWU7XHJcbiAgICAgIGlmIChzcGVjaWFsRGF5cyA+IDAgfHwgd2Vla0RheXMgPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7IFtlcnJvck5hbWVdOiB0cnVlIH07XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzUm9sZU5hbWVFeGlzdHMocm9sZVNlcnZpY2VQcm94eTogQ2xvdWQuUm9sZVNlcnZpY2VQcm94eSwgcm9sZUlkOiBudW1iZXIpOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzPiA9PiB7XHJcbiAgICAgIHJldHVybiBvZihjb250cm9sLnZhbHVlKS5waXBlKFxyXG4gICAgICAgIGRlbGF5KDUwMCksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKElOUFVUX1NFQVJDSF9ERUJPVU5DRV9USU1FKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gcm9sZVNlcnZpY2VQcm94eS5pc0V4aXN0cyhjb250cm9sLnZhbHVlLCByb2xlSWQgPz8gdW5kZWZpbmVkKS5waXBlKFxyXG4gICAgICAgICAgbWFwKHJlcyA9PiByZXMuZGF0YSA9PT0gdHJ1ZSB8fCAhcmVzLmlzU3VjY2VzcyA/IHsgcm9sZU5hbWVBbHJlYWR5RXhpc3RzOiB0cnVlIH0gOiBudWxsKSkpKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdGliYVRpbWVWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsOiBUaWJhVGltZSA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKHZhbCAmJiAodmFsLmhvdXJzID09PSBudWxsIHx8IHZhbC5taW51dGVzID09PSBudWxsKSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGludmFsaWRUaW1lOiB0cnVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdGltZVZhbGlkYXRvcihmcm9tSG91cjogbnVtYmVyLCBmcm9tTWludXRlczogbnVtYmVyLCB0b0hvdXI6IG51bWJlciwgdG9NaW51dGVzOiBudW1iZXIpOiBhbnkge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmICghIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICBpZiAoY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDQpIHsgLy8gQXNzdW1pbmcgeW91ciB0aW1lIGZvcm1hdCBpcyAnSEhNTSdcclxuICAgICAgICAgIHJldHVybiB7IGZvcm1fdmFsaWRhdGlvbl9pbnZhbGlkX3RpbWVfZm9ybWF0OiB0cnVlIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGhvdXJzOiBudW1iZXIgPSBwYXJzZUludChjb250cm9sLnZhbHVlLnNsaWNlKDAsIDIpKTtcclxuICAgICAgICAgIGNvbnN0IG1pbnV0ZXM6IG51bWJlciA9IHBhcnNlSW50KGNvbnRyb2wudmFsdWUuc2xpY2UoMikpO1xyXG4gICAgICAgICAgY29uc3QgaXNWYWxpZFRpbWUgPVxyXG4gICAgICAgICAgICAoaG91cnMgPiBmcm9tSG91ciB8fCAoaG91cnMgPT09IGZyb21Ib3VyICYmIG1pbnV0ZXMgPj0gZnJvbU1pbnV0ZXMpKSAmJlxyXG4gICAgICAgICAgICAoaG91cnMgPCB0b0hvdXIgfHwgKGhvdXJzID09PSB0b0hvdXIgJiYgbWludXRlcyA8PSB0b01pbnV0ZXMpKTtcclxuICAgICAgICAgIGlmICghaXNWYWxpZFRpbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBmb3JtX3ZhbGlkYXRpb25faW52YWxpZF90aW1lOiB7XHJcbiAgICAgICAgICAgICAgICBmcm9tOiBgJHtmcm9tSG91ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7ZnJvbU1pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWAsXHJcbiAgICAgICAgICAgICAgICB0bzogYCR7dG9Ib3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHt0b01pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWAsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbHVlR3JlYXRlclRoYW5PckVxdWFsVG8oZnJvbUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdG9Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZyb21UaW1lSW5OdW1iZXI6IG51bWJlciA9IGZyb21Db250cm9sLnZhbHVlO1xyXG4gICAgY29uc3QgdG9UaW1lSW5OdW1iZXI6IG51bWJlciA9IHRvQ29udHJvbC52YWx1ZTtcclxuICAgIHJldHVybiBmcm9tVGltZUluTnVtYmVyICE9PSBudWxsICYmIHRvVGltZUluTnVtYmVyICE9PSBudWxsICYmICtmcm9tVGltZUluTnVtYmVyID4gK3RvVGltZUluTnVtYmVyO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsdWVMZW5ndGhWYWxpZChmcm9tQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCB0b0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZnJvbVRpbWVJbk51bWJlcjogbnVtYmVyID0gZnJvbUNvbnRyb2wudmFsdWU7XHJcbiAgICBjb25zdCB0b1RpbWVJbk51bWJlcjogbnVtYmVyID0gdG9Db250cm9sLnZhbHVlO1xyXG4gICAgcmV0dXJuIGZyb21UaW1lSW5OdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggPT09IFZBTElEX1RJTUVfTUFYX0xFTkdUSCAmJlxyXG4gICAgICB0b1RpbWVJbk51bWJlci50b1N0cmluZygpLmxlbmd0aCA9PT0gVkFMSURfVElNRV9NQVhfTEVOR1RIO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -51,6 +51,7 @@ export var RowOperation;
51
51
  RowOperation[RowOperation["Delete"] = 2] = "Delete";
52
52
  RowOperation[RowOperation["None"] = 3] = "None";
53
53
  RowOperation[RowOperation["InsertToParent"] = 4] = "InsertToParent";
54
+ RowOperation[RowOperation["Updating"] = 5] = "Updating";
54
55
  })(RowOperation || (RowOperation = {}));
55
56
  export function markEntityAsUnchanged(entity) {
56
57
  return omitKeys(entity, ['expanded', 'expanding', 'changed', 'rowOperation', 'findRowIndex']);
@@ -181,4 +182,4 @@ export const AppModuleToMainPermissionTypeMap = {
181
182
  [Edge.AppModule.Management]: Edge.PermissionType.TenantSettingsMain,
182
183
  [Edge.AppModule.ECommerceBackoffice]: Edge.PermissionType.ECommerceBackofficeMain,
183
184
  };
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL3V0aWxzL2hlbHBlci51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFhLHNCQUFzQixFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RCxPQUFPLEVBQVMsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsNEJBQTRCO0FBQzVCLGtDQUFrQztBQUNsQyxnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLFFBQVEsQ0FBSSxHQUFNLEVBQUUsSUFBYztJQUNoRCxJQUFJLEdBQUcsR0FBTSxFQUFPLENBQUM7SUFDckIsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFHO0lBQ3ZDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO1FBQzVCLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUM5QjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsSUFBWSxFQUFFLE9BQXlCO0lBQzdFLGlEQUFp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Q0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUI7Q0FDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOdW1iZXJNYXAsIGlzQ2hhcmFjdGVyTGVuZ3RoVmFsaWQgfSBmcm9tICcuJztcclxuaW1wb3J0IHsgTE9DQUxfRU5HTElTSF9MQU5HVUFHRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vcGlwZXMvZmlsdGVyLnBpcGUnO1xyXG5pbXBvcnQgeyBDbG91ZCwgRWRnZSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHknO1xyXG5cclxuLy8gR2V0cyBhbiBvYmplY3Qgb2YgdHlwZTxUPlxyXG4vLyBHZXRzIGFuIGFycmF5IG9mIGtleXMgdG8gaWdub3JlXHJcbi8vIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGhvdXQgdGhlIG9taXR0ZWQga2V5c1xyXG5leHBvcnQgZnVuY3Rpb24gb21pdEtleXM8VD4ob2JqOiBULCBrZXlzOiBzdHJpbmdbXSkge1xyXG4gIHZhciBkdXA6IFQgPSB7fSBhcyBUO1xyXG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcclxuICAgIGlmIChrZXlzLmluZGV4T2Yoa2V5KSA9PSAtMSkge1xyXG4gICAgICBkdXBba2V5XSA9IG9ialtrZXldO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZHVwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyV2l0aExlYWRpbmdaZXJvKG51bSkge1xyXG4gIGlmIChudW0gIT09IG51bGwgJiYgbnVtIDw9IDkpIHtcclxuICAgIG51bSA9IChgMCR7bnVtfWApLnNsaWNlKC0xMCk7XHJcbiAgfVxyXG4gIHJldHVybiBudW07XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxheUNhbmNlbGxhdGlvbih0aW1lOiBudW1iZXIsIHN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4pIHtcclxuICAvLyBjcmVhdGUgYSBzdWJzY3JpcHRpb24gdG8gdXNlIHdpdGggeW91ciBwcm9taXNlXHJcbiAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICBjb25zdCBpZCA9IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSk7XHJcbiAgICAvLyBhZGQgdGVhcmRvd24gbG9naWMgdG8gdGhlIHN1YnNjcmlwdGlvblxyXG4gICAgc3Vic2NyaXB0aW9uLmFkZCgoKSA9PiB7XHJcbiAgICAgIGNsZWFyVGltZW91dChpZCk7XHJcbiAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgY29uc3Qgc3ViU3ViamVjdCA9IHN1YmplY3Quc3Vic2NyaWJlKGNhbmNlbFN1YnNjcmlwdGlvbiA9PiB7XHJcbiAgICBpZiAoY2FuY2VsU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIC8vIGNhbGwgdW5zdWJzY3JpYmUgdG8gY2FuY2VsXHJcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvLyB1c2UgdGhlIHByb21pc2UgaW52b2tlIHRoZSBkZWFseVxyXG4gIGF3YWl0IHByb21pc2U7XHJcblxyXG4gIHN1YlN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGwoc3RyLCBmaW5kLCByZXBsYWNlKSB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoZmluZCwgJ2cnKSwgcmVwbGFjZSk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBSb3dPcGVyYXRpb24ge1xyXG4gIEluc2VydCxcclxuICBVcGRhdGUsXHJcbiAgRGVsZXRlLFxyXG4gIE5vbmUsXHJcbiAgSW5zZXJ0VG9QYXJlbnRcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtFbnRpdHlBc1VuY2hhbmdlZDxUPihlbnRpdHk6IFQpOiBUIHtcclxuICByZXR1cm4gb21pdEtleXM8VD4oZW50aXR5LCBbJ2V4cGFuZGVkJywgJ2V4cGFuZGluZycsICdjaGFuZ2VkJywgJ3Jvd09wZXJhdGlvbicsICdmaW5kUm93SW5kZXgnXSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrRW50aXRpZXNBc0NoYW5nZWQ8VCA9IGFueT4oZW50aXRpZXM6IGFueVtdLCByb3dPcGVyYXRpb246IFJvd09wZXJhdGlvbiA9IFJvd09wZXJhdGlvbi5Ob25lLFxyXG4gIGZpbmRSb3dJbmRleD86IChlbnRpdHk6IFQsIGVudGl0aWVzOiBUW10pID0+IG51bWJlcikge1xyXG5cclxuICBpZiAoKHJvd09wZXJhdGlvbiA9PT0gUm93T3BlcmF0aW9uLlVwZGF0ZSB8fCByb3dPcGVyYXRpb24gPT09IFJvd09wZXJhdGlvbi5EZWxldGUpICYmICFmaW5kUm93SW5kZXgpIHtcclxuICAgIGZpbmRSb3dJbmRleCA9IChlbnRpdHk6IGFueSwgZW50aXRpZXM6IGFueVtdKSA9PiBlbnRpdGllcy5maW5kSW5kZXgoZSA9PiBlLmlkID09PSBlbnRpdHkuaWQpO1xyXG4gIH1cclxuXHJcbiAgZmxhZ0VudGl0eShlbnRpdGllcywgdHJ1ZSwgcm93T3BlcmF0aW9uLCBmaW5kUm93SW5kZXgpO1xyXG5cclxuICAvL3NvbHV0aW9uIGZvciB1bm1hcmtlZCBwcmV2aW91ZXMgcm93c1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gZmxhZ0VudGl0eShlbnRpdGllcywgZmFsc2UsIFJvd09wZXJhdGlvbi5Ob25lKSwgMTAwMCk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJvd1RhYmxlUGF5bG9hZDxUID0gYW55PiA9IHsgcm93T3BlcmF0aW9uOiBSb3dPcGVyYXRpb24sIGNoYW5nZWQ6IGJvb2xlYW4sIGZpbmRSb3dJbmRleD86IChlbnRpdHk6IFQsIGVudGl0aWVzOiBUW10pID0+IG51bWJlciB9O1xyXG5cclxuZnVuY3Rpb24gZmxhZ0VudGl0eTxUIGV4dGVuZHMgUm93VGFibGVQYXlsb2FkPihlbnRpdGllczogVFtdLCBmbGFnOiBib29sZWFuLCByb3dPcGVyYXRpb246IFJvd09wZXJhdGlvbiwgZmluZFJvd0luZGV4PzogKGVudGl0eTogVCwgZW50aXRpZXM6IFRbXSkgPT4gbnVtYmVyKSB7XHJcbiAgZW50aXRpZXMuZm9yRWFjaChlbnRpdHkgPT4ge1xyXG4gICAgZW50aXR5LmNoYW5nZWQgPSBmbGFnO1xyXG4gICAgZW50aXR5LnJvd09wZXJhdGlvbiA9IHJvd09wZXJhdGlvbiA/PyBlbnRpdHkucm93T3BlcmF0aW9uO1xyXG4gICAgZW50aXR5LmZpbmRSb3dJbmRleCA9IGZpbmRSb3dJbmRleCB8fCAoKGVudGl0eSwgZW50aXRpZXMpID0+IG51bGwpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3MoY2l0eTogc3RyaW5nLCBzdHJlZXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgbGV0IGFkZHJlc3MgPSBudWxsO1xyXG4gIGlmIChjaXR5ICYmIHN0cmVldCkge1xyXG4gICAgYWRkcmVzcyA9IGAke3N0cmVldH0sICR7Y2l0eX1gO1xyXG4gIH0gZWxzZSBpZiAoY2l0eSkge1xyXG4gICAgYWRkcmVzcyA9IGNpdHk7XHJcbiAgfSBlbHNlIGlmIChzdHJlZXQpIHtcclxuICAgIGFkZHJlc3MgPSBzdHJlZXQ7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gYWRkcmVzcztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRmlsdGVyVmFsdWVSZXNvbHZlcjxUPiA9IChvYmo6IFQsIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiBhbnk7XHJcbmV4cG9ydCB0eXBlIFNvbWVWYWx1ZVJlc29sdmVyPFQ+ID0gKG9iajogVCwgc3ViR3JvdXBQcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHNlYXJjaFZhbHVlOiBzdHJpbmcsIG9wZXJhdG9yOiBPcGVyYXRvciwgcmVkdWNlOiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBjb25zdCBiYXNlUmVkdWNlOiBGaWx0ZXJWYWx1ZVJlc29sdmVyPGFueT4gPSAob2JqOiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgcmV0dXJuIG9ialtwcm9wZXJ0eU5hbWVdO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmlsdGVyS2V5VmFsdWVCYXNlUmVkdWNlOiBGaWx0ZXJWYWx1ZVJlc29sdmVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IH0+ID0gKFxyXG4gIG9iaixcclxuICBfLFxyXG4pID0+IG9iai52YWx1ZTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogZmxhdHRlbkJ5S2V5KGFycmF5LCBuZXN0ZWRLZXk6IHN0cmluZywgZGVwdGggPSAxKSB7XHJcbiAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICBpZiAoaXRlbVtuZXN0ZWRLZXldICYmIEFycmF5LmlzQXJyYXkoaXRlbVtuZXN0ZWRLZXldKSAmJiBkZXB0aCA+IDApIHtcclxuICAgICAgeWllbGQqIGZsYXR0ZW5CeUtleShpdGVtW25lc3RlZEtleV0sIG5lc3RlZEtleSwgZGVwdGggLSAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHlpZWxkIGl0ZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNJT1NEZXZpY2UoKSB7XHJcbiAgdmFyIGlzSU9TID0gL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgdmFyIGlzQXBwbGVEZXZpY2UgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdNYWNpbnRvc2gnKTtcclxuICB2YXIgaXNUb3VjaFNjcmVlbiA9IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+PSAxOyAvLyB0cnVlIGZvciBpT1MgMTMgKGFuZCBob3BlZnVsbHkgYmV5b25kKVxyXG4gIHJldHVybiBpc0lPUyB8fCAoaXNBcHBsZURldmljZSAmJiAoaXNUb3VjaFNjcmVlbiB8fCBpT1MxdG8xMnF1aXJrKCkpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaU9TMXRvMTJxdWlyaygpIHtcclxuICB2YXIgYXVkaW8gPSBuZXcgQXVkaW8oKTsgLy8gdGVtcG9yYXJ5IEF1ZGlvIG9iamVjdFxyXG4gIGF1ZGlvLnZvbHVtZSA9IDAuNTsgLy8gaGFzIG5vIGVmZmVjdCBvbiBpT1MgPD0gMTJcclxuICByZXR1cm4gYXVkaW8udm9sdW1lID09PSAxO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2xlZXAobWlsbGlzZWNvbmRzOiBudW1iZXIpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzZWNvbmRzKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdEVtcHR5KG9iajoge30pIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1RydWVJbkJpbmFyeShkZWNpbWFsVmFsdWU6IG51bWJlciwgYml0UG9zaXRpb246IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoZGVjaW1hbFZhbHVlICYgYml0UG9zaXRpb24pICE9PSAwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEJpbmFyeVRvRGVjaW1hbChiaW5hcnlTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgLy8gVXNlIHBhcnNlSW50IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYmluYXJ5IHN0cmluZyB0byBkZWNpbWFsIG51bWJlclxyXG4gIHJldHVybiBwYXJzZUludChiaW5hcnlTdHJpbmcsIDIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERlY2ltYWxUb0JpbmFyeShkZWNpbWFsTnVtYmVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gIC8vIFVzZSB0b1N0cmluZygyKSBmdW5jdGlvbiB0byBjb252ZXJ0IGRlY2ltYWwgbnVtYmVyIHRvIGJpbmFyeSBzdHJpbmdcclxuICByZXR1cm4gaXNOYU4oZGVjaW1hbE51bWJlcikgPyAnJyA6IGRlY2ltYWxOdW1iZXIudG9TdHJpbmcoMik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0aW5jdE9iamVjdEJ5UHJvcGVydHk8VCwgSyBleHRlbmRzIGtleW9mIFQ+KGFycjogVFtdLCBwcm9wOiBLKTogVFtdIHtcclxuICBjb25zdCBtYXAgPSBuZXcgTWFwPFRbS10sIFQ+KCk7XHJcbiAgYXJyLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICBjb25zdCBrZXkgPSBpdGVtW3Byb3BdO1xyXG4gICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcclxuICAgICAgbWFwLnNldChrZXksIGl0ZW0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBBcnJheS5mcm9tKG1hcC52YWx1ZXMoKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0aW5jdE9iamVjdEJ5UHJvcGVydGllczxULCBLIGV4dGVuZHMga2V5b2YgVD4oYXJyOiBUW10sIC4uLnByb3BzOiBLW10pOiBUW10ge1xyXG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUPigpO1xyXG4gIGFyci5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgY29uc3Qga2V5ID0gcHJvcHMubWFwKHByb3AgPT4gaXRlbVtwcm9wXSkuam9pbignXycpO1xyXG4gICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcclxuICAgICAgbWFwLnNldChrZXksIGl0ZW0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBBcnJheS5mcm9tKG1hcC52YWx1ZXMoKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50TGFuZyh1c2VyU2V0dGluZ3M6IE1hcDxFZGdlLlNldHRpbmdzQ2F0ZWdvcnksIGFueT4pIHtcclxuICBjb25zdCB2YWx1ZTogQ2xvdWQuTG9jYWxpemF0aW9uRHRvID0gdXNlclNldHRpbmdzPy5nZXQoRWRnZS5TZXR0aW5nc0NhdGVnb3J5LkxvY2FsaXphdGlvbik7XHJcbiAgcmV0dXJuIHZhbHVlPy5rZXlOYW1lID8/IExPQ0FMX0VOR0xJU0hfTEFOR1VBR0U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1NlYXJjaEZpZWxkQ2hhbmdlZChwcmV2OiBhbnksIGN1cnI6IGFueSk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IGlzRmllbGRTZWxlY3RvckNoYW5nZWQgPSBwcmV2LnNlYXJjaEZpZWxkU2VsZWN0b3IgIT09IGN1cnIuc2VhcmNoRmllbGRTZWxlY3RvciAmJiBjdXJyLnNlYXJjaFZhbHVlO1xyXG4gIGNvbnN0IGlzU2VhcmNoVmFsdWVDaGFuZ2VkID0gcHJldi5zZWFyY2hWYWx1ZSAhPT0gY3Vyci5zZWFyY2hWYWx1ZTtcclxuXHJcbiAgcmV0dXJuIChpc0ZpZWxkU2VsZWN0b3JDaGFuZ2VkIHx8IGlzU2VhcmNoVmFsdWVDaGFuZ2VkKSAmJiBpc0NoYXJhY3Rlckxlbmd0aFZhbGlkKGN1cnIuc2VhcmNoVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTWFpbk1vZHVsZVRvU3ViTW9kdWxlc1Blcm1pc3Npb25UeXBlTWFwOiBOdW1iZXJNYXA8RWRnZS5QZXJtaXNzaW9uVHlwZVtdPiA9IHtcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5DY01haW5dOiBbXSxcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudE1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudEFjY291bnRWaWV3LCBFZGdlLlBlcm1pc3Npb25UeXBlLkFjY291bnRNYW5hZ2VtZW50QWNjb3VudENyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudEFjY291bnRVcGRhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuQWNjb3VudE1hbmFnZW1lbnRBY2NvdW50RGVsZXRlXSxcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNNYWluXTogW0VkZ2UuUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVmlldywgRWRnZS5QZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNDcmVhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVXBkYXRlLCBFZGdlLlBlcm1pc3Npb25UeXBlLk1vbnRobGllc0RlbGV0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5Nb250aGx5U2VyaWVzQ3JlYXRlXSxcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdE1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdFZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RDcmVhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RVcGRhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3REZWxldGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RHcm91cFZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RHcm91cENyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdEhvdGVsR3Vlc3RWaWV3LCBFZGdlLlBlcm1pc3Npb25UeXBlLkhvdGVsR3Vlc3RJT0NyZWF0ZV0sXHJcbiAgW0VkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbk1haW5dOiBbXHJcbiAgICBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvblZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkVWYWxpZGF0aW9uQ3JlYXRlLCBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvblVwZGF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25EZWxldGUsXHJcbiAgICBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TdGlja2VyVmlldywgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlckNyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlclVwZGF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlckRlbGV0ZSxcclxuICAgIEVkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvblZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvbkNyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uVXBkYXRlLCBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25Db3Vwb25EZWxldGVdLFxyXG4gIFtFZGdlLlBlcm1pc3Npb25UeXBlLlJlcG9ydHNNYWluXTogW10sXHJcbiAgW0VkZ2UuUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvbk1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5Mb3RDb25maWd1cmF0aW9uUmF0ZXMsIEVkZ2UuUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvblNjaGVkdWxlciwgRWRnZS5QZXJtaXNzaW9uVHlwZS5Mb3RDb25maWd1cmF0aW9uVmFsaWRhdGlvblByb2ZpbGVdLFxyXG4gIFtFZGdlLlBlcm1pc3Npb25UeXBlLlRlbmFudFNldHRpbmdzTWFpbl06IFtFZGdlLlBlcm1pc3Npb25UeXBlLk1hbmFnZW1lbnRBZG1pbl0sXHJcbiAgW0VkZ2UuUGVybWlzc2lvblR5cGUuRUNvbW1lcmNlQmFja29mZmljZU1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5FQ29tbWVyY2VBZG1pbiwgRWRnZS5QZXJtaXNzaW9uVHlwZS5FQ29tbWVyY2VSZWd1bGFyXVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFwcE1vZHVsZVRvTWFpblBlcm1pc3Npb25UeXBlTWFwOiBOdW1iZXJNYXA8RWRnZS5QZXJtaXNzaW9uVHlwZT4gPSB7XHJcbiAgW0VkZ2UuQXBwTW9kdWxlLkNjXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5DY01haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLkFjY291bnRzXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudE1haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLk1vbnRobGllc106IEVkZ2UuUGVybWlzc2lvblR5cGUuTW9udGhsaWVzTWFpbixcclxuICBbRWRnZS5BcHBNb2R1bGUuR3Vlc3RzXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdE1haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLlZhbGlkYXRpb25dOiBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25NYWluLFxyXG4gIFtFZGdlLkFwcE1vZHVsZS5SZXBvcnRzXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5SZXBvcnRzTWFpbixcclxuICBbRWRnZS5BcHBNb2R1bGUuTG90Q29uZmlndXJhdGlvbl06IEVkZ2UuUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvbk1haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLk1hbmFnZW1lbnRdOiBFZGdlLlBlcm1pc3Npb25UeXBlLlRlbmFudFNldHRpbmdzTWFpbixcclxuICBbRWRnZS5BcHBNb2R1bGUuRUNvbW1lcmNlQmFja29mZmljZV06IEVkZ2UuUGVybWlzc2lvblR5cGUuRUNvbW1lcmNlQmFja29mZmljZU1haW4sXHJcbn07XHJcbiJdfQ==
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL3V0aWxzL2hlbHBlci51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFhLHNCQUFzQixFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RCxPQUFPLEVBQVMsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsNEJBQTRCO0FBQzVCLGtDQUFrQztBQUNsQyxnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLFFBQVEsQ0FBSSxHQUFNLEVBQUUsSUFBYztJQUNoRCxJQUFJLEdBQUcsR0FBTSxFQUFPLENBQUM7SUFDckIsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFHO0lBQ3ZDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO1FBQzVCLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUM5QjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsSUFBWSxFQUFFLE9BQXlCO0lBQzdFLGlEQUFp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QyxrQkFBa0I7SUFDbkUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUI7Q0FDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOdW1iZXJNYXAsIGlzQ2hhcmFjdGVyTGVuZ3RoVmFsaWQgfSBmcm9tICcuJztcclxuaW1wb3J0IHsgTE9DQUxfRU5HTElTSF9MQU5HVUFHRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vcGlwZXMvZmlsdGVyLnBpcGUnO1xyXG5pbXBvcnQgeyBDbG91ZCwgRWRnZSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHknO1xyXG5cclxuLy8gR2V0cyBhbiBvYmplY3Qgb2YgdHlwZTxUPlxyXG4vLyBHZXRzIGFuIGFycmF5IG9mIGtleXMgdG8gaWdub3JlXHJcbi8vIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGhvdXQgdGhlIG9taXR0ZWQga2V5c1xyXG5leHBvcnQgZnVuY3Rpb24gb21pdEtleXM8VD4ob2JqOiBULCBrZXlzOiBzdHJpbmdbXSkge1xyXG4gIHZhciBkdXA6IFQgPSB7fSBhcyBUO1xyXG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcclxuICAgIGlmIChrZXlzLmluZGV4T2Yoa2V5KSA9PSAtMSkge1xyXG4gICAgICBkdXBba2V5XSA9IG9ialtrZXldO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZHVwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyV2l0aExlYWRpbmdaZXJvKG51bSkge1xyXG4gIGlmIChudW0gIT09IG51bGwgJiYgbnVtIDw9IDkpIHtcclxuICAgIG51bSA9IChgMCR7bnVtfWApLnNsaWNlKC0xMCk7XHJcbiAgfVxyXG4gIHJldHVybiBudW07XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxheUNhbmNlbGxhdGlvbih0aW1lOiBudW1iZXIsIHN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4pIHtcclxuICAvLyBjcmVhdGUgYSBzdWJzY3JpcHRpb24gdG8gdXNlIHdpdGggeW91ciBwcm9taXNlXHJcbiAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICBjb25zdCBpZCA9IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSk7XHJcbiAgICAvLyBhZGQgdGVhcmRvd24gbG9naWMgdG8gdGhlIHN1YnNjcmlwdGlvblxyXG4gICAgc3Vic2NyaXB0aW9uLmFkZCgoKSA9PiB7XHJcbiAgICAgIGNsZWFyVGltZW91dChpZCk7XHJcbiAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgY29uc3Qgc3ViU3ViamVjdCA9IHN1YmplY3Quc3Vic2NyaWJlKGNhbmNlbFN1YnNjcmlwdGlvbiA9PiB7XHJcbiAgICBpZiAoY2FuY2VsU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIC8vIGNhbGwgdW5zdWJzY3JpYmUgdG8gY2FuY2VsXHJcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvLyB1c2UgdGhlIHByb21pc2UgaW52b2tlIHRoZSBkZWFseVxyXG4gIGF3YWl0IHByb21pc2U7XHJcblxyXG4gIHN1YlN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGwoc3RyLCBmaW5kLCByZXBsYWNlKSB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoZmluZCwgJ2cnKSwgcmVwbGFjZSk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBSb3dPcGVyYXRpb24ge1xyXG4gIEluc2VydCxcclxuICBVcGRhdGUsXHJcbiAgRGVsZXRlLFxyXG4gIE5vbmUsXHJcbiAgSW5zZXJ0VG9QYXJlbnQsXHJcbiAgVXBkYXRpbmdcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtFbnRpdHlBc1VuY2hhbmdlZDxUPihlbnRpdHk6IFQpOiBUIHtcclxuICByZXR1cm4gb21pdEtleXM8VD4oZW50aXR5LCBbJ2V4cGFuZGVkJywgJ2V4cGFuZGluZycsICdjaGFuZ2VkJywgJ3Jvd09wZXJhdGlvbicsICdmaW5kUm93SW5kZXgnXSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrRW50aXRpZXNBc0NoYW5nZWQ8VCA9IGFueT4oZW50aXRpZXM6IGFueVtdLCByb3dPcGVyYXRpb246IFJvd09wZXJhdGlvbiA9IFJvd09wZXJhdGlvbi5Ob25lLFxyXG4gIGZpbmRSb3dJbmRleD86IChlbnRpdHk6IFQsIGVudGl0aWVzOiBUW10pID0+IG51bWJlcikge1xyXG5cclxuICBpZiAoKHJvd09wZXJhdGlvbiA9PT0gUm93T3BlcmF0aW9uLlVwZGF0ZSB8fCByb3dPcGVyYXRpb24gPT09IFJvd09wZXJhdGlvbi5EZWxldGUpICYmICFmaW5kUm93SW5kZXgpIHtcclxuICAgIGZpbmRSb3dJbmRleCA9IChlbnRpdHk6IGFueSwgZW50aXRpZXM6IGFueVtdKSA9PiBlbnRpdGllcy5maW5kSW5kZXgoZSA9PiBlLmlkID09PSBlbnRpdHkuaWQpO1xyXG4gIH1cclxuXHJcbiAgZmxhZ0VudGl0eShlbnRpdGllcywgdHJ1ZSwgcm93T3BlcmF0aW9uLCBmaW5kUm93SW5kZXgpO1xyXG5cclxuICAvL3NvbHV0aW9uIGZvciB1bm1hcmtlZCBwcmV2aW91ZXMgcm93c1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gZmxhZ0VudGl0eShlbnRpdGllcywgZmFsc2UsIFJvd09wZXJhdGlvbi5Ob25lKSwgMTAwMCk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJvd1RhYmxlUGF5bG9hZDxUID0gYW55PiA9IHsgcm93T3BlcmF0aW9uOiBSb3dPcGVyYXRpb24sIGNoYW5nZWQ6IGJvb2xlYW4sIGZpbmRSb3dJbmRleD86IChlbnRpdHk6IFQsIGVudGl0aWVzOiBUW10pID0+IG51bWJlciB9O1xyXG5cclxuZnVuY3Rpb24gZmxhZ0VudGl0eTxUIGV4dGVuZHMgUm93VGFibGVQYXlsb2FkPihlbnRpdGllczogVFtdLCBmbGFnOiBib29sZWFuLCByb3dPcGVyYXRpb246IFJvd09wZXJhdGlvbiwgZmluZFJvd0luZGV4PzogKGVudGl0eTogVCwgZW50aXRpZXM6IFRbXSkgPT4gbnVtYmVyKSB7XHJcbiAgZW50aXRpZXMuZm9yRWFjaChlbnRpdHkgPT4ge1xyXG4gICAgZW50aXR5LmNoYW5nZWQgPSBmbGFnO1xyXG4gICAgZW50aXR5LnJvd09wZXJhdGlvbiA9IHJvd09wZXJhdGlvbiA/PyBlbnRpdHkucm93T3BlcmF0aW9uO1xyXG4gICAgZW50aXR5LmZpbmRSb3dJbmRleCA9IGZpbmRSb3dJbmRleCB8fCAoKGVudGl0eSwgZW50aXRpZXMpID0+IG51bGwpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3MoY2l0eTogc3RyaW5nLCBzdHJlZXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgbGV0IGFkZHJlc3MgPSBudWxsO1xyXG4gIGlmIChjaXR5ICYmIHN0cmVldCkge1xyXG4gICAgYWRkcmVzcyA9IGAke3N0cmVldH0sICR7Y2l0eX1gO1xyXG4gIH0gZWxzZSBpZiAoY2l0eSkge1xyXG4gICAgYWRkcmVzcyA9IGNpdHk7XHJcbiAgfSBlbHNlIGlmIChzdHJlZXQpIHtcclxuICAgIGFkZHJlc3MgPSBzdHJlZXQ7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gYWRkcmVzcztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRmlsdGVyVmFsdWVSZXNvbHZlcjxUPiA9IChvYmo6IFQsIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiBhbnk7XHJcbmV4cG9ydCB0eXBlIFNvbWVWYWx1ZVJlc29sdmVyPFQ+ID0gKG9iajogVCwgc3ViR3JvdXBQcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHNlYXJjaFZhbHVlOiBzdHJpbmcsIG9wZXJhdG9yOiBPcGVyYXRvciwgcmVkdWNlOiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBjb25zdCBiYXNlUmVkdWNlOiBGaWx0ZXJWYWx1ZVJlc29sdmVyPGFueT4gPSAob2JqOiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgcmV0dXJuIG9ialtwcm9wZXJ0eU5hbWVdO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmlsdGVyS2V5VmFsdWVCYXNlUmVkdWNlOiBGaWx0ZXJWYWx1ZVJlc29sdmVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IH0+ID0gKFxyXG4gIG9iaixcclxuICBfLFxyXG4pID0+IG9iai52YWx1ZTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogZmxhdHRlbkJ5S2V5KGFycmF5LCBuZXN0ZWRLZXk6IHN0cmluZywgZGVwdGggPSAxKSB7XHJcbiAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICBpZiAoaXRlbVtuZXN0ZWRLZXldICYmIEFycmF5LmlzQXJyYXkoaXRlbVtuZXN0ZWRLZXldKSAmJiBkZXB0aCA+IDApIHtcclxuICAgICAgeWllbGQqIGZsYXR0ZW5CeUtleShpdGVtW25lc3RlZEtleV0sIG5lc3RlZEtleSwgZGVwdGggLSAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHlpZWxkIGl0ZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNJT1NEZXZpY2UoKSB7XHJcbiAgdmFyIGlzSU9TID0gL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgdmFyIGlzQXBwbGVEZXZpY2UgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdNYWNpbnRvc2gnKTtcclxuICB2YXIgaXNUb3VjaFNjcmVlbiA9IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+PSAxOyAvLyB0cnVlIGZvciBpT1MgMTMgKGFuZCBob3BlZnVsbHkgYmV5b25kKVxyXG4gIHJldHVybiBpc0lPUyB8fCAoaXNBcHBsZURldmljZSAmJiAoaXNUb3VjaFNjcmVlbiB8fCBpT1MxdG8xMnF1aXJrKCkpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaU9TMXRvMTJxdWlyaygpIHtcclxuICB2YXIgYXVkaW8gPSBuZXcgQXVkaW8oKTsgLy8gdGVtcG9yYXJ5IEF1ZGlvIG9iamVjdFxyXG4gIGF1ZGlvLnZvbHVtZSA9IDAuNTsgLy8gaGFzIG5vIGVmZmVjdCBvbiBpT1MgPD0gMTJcclxuICByZXR1cm4gYXVkaW8udm9sdW1lID09PSAxO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2xlZXAobWlsbGlzZWNvbmRzOiBudW1iZXIpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzZWNvbmRzKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdEVtcHR5KG9iajoge30pIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1RydWVJbkJpbmFyeShkZWNpbWFsVmFsdWU6IG51bWJlciwgYml0UG9zaXRpb246IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoZGVjaW1hbFZhbHVlICYgYml0UG9zaXRpb24pICE9PSAwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEJpbmFyeVRvRGVjaW1hbChiaW5hcnlTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgLy8gVXNlIHBhcnNlSW50IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYmluYXJ5IHN0cmluZyB0byBkZWNpbWFsIG51bWJlclxyXG4gIHJldHVybiBwYXJzZUludChiaW5hcnlTdHJpbmcsIDIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERlY2ltYWxUb0JpbmFyeShkZWNpbWFsTnVtYmVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gIC8vIFVzZSB0b1N0cmluZygyKSBmdW5jdGlvbiB0byBjb252ZXJ0IGRlY2ltYWwgbnVtYmVyIHRvIGJpbmFyeSBzdHJpbmdcclxuICByZXR1cm4gaXNOYU4oZGVjaW1hbE51bWJlcikgPyAnJyA6IGRlY2ltYWxOdW1iZXIudG9TdHJpbmcoMik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0aW5jdE9iamVjdEJ5UHJvcGVydHk8VCwgSyBleHRlbmRzIGtleW9mIFQ+KGFycjogVFtdLCBwcm9wOiBLKTogVFtdIHtcclxuICBjb25zdCBtYXAgPSBuZXcgTWFwPFRbS10sIFQ+KCk7XHJcbiAgYXJyLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICBjb25zdCBrZXkgPSBpdGVtW3Byb3BdO1xyXG4gICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcclxuICAgICAgbWFwLnNldChrZXksIGl0ZW0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBBcnJheS5mcm9tKG1hcC52YWx1ZXMoKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0aW5jdE9iamVjdEJ5UHJvcGVydGllczxULCBLIGV4dGVuZHMga2V5b2YgVD4oYXJyOiBUW10sIC4uLnByb3BzOiBLW10pOiBUW10ge1xyXG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUPigpO1xyXG4gIGFyci5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgY29uc3Qga2V5ID0gcHJvcHMubWFwKHByb3AgPT4gaXRlbVtwcm9wXSkuam9pbignXycpO1xyXG4gICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcclxuICAgICAgbWFwLnNldChrZXksIGl0ZW0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBBcnJheS5mcm9tKG1hcC52YWx1ZXMoKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50TGFuZyh1c2VyU2V0dGluZ3M6IE1hcDxFZGdlLlNldHRpbmdzQ2F0ZWdvcnksIGFueT4pIHtcclxuICBjb25zdCB2YWx1ZTogQ2xvdWQuTG9jYWxpemF0aW9uRHRvID0gdXNlclNldHRpbmdzPy5nZXQoRWRnZS5TZXR0aW5nc0NhdGVnb3J5LkxvY2FsaXphdGlvbik7XHJcbiAgcmV0dXJuIHZhbHVlPy5rZXlOYW1lID8/IExPQ0FMX0VOR0xJU0hfTEFOR1VBR0U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1NlYXJjaEZpZWxkQ2hhbmdlZChwcmV2OiBhbnksIGN1cnI6IGFueSk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IGlzRmllbGRTZWxlY3RvckNoYW5nZWQgPSBwcmV2LnNlYXJjaEZpZWxkU2VsZWN0b3IgIT09IGN1cnIuc2VhcmNoRmllbGRTZWxlY3RvciAmJiBjdXJyLnNlYXJjaFZhbHVlO1xyXG4gIGNvbnN0IGlzU2VhcmNoVmFsdWVDaGFuZ2VkID0gcHJldi5zZWFyY2hWYWx1ZSAhPT0gY3Vyci5zZWFyY2hWYWx1ZTtcclxuXHJcbiAgcmV0dXJuIChpc0ZpZWxkU2VsZWN0b3JDaGFuZ2VkIHx8IGlzU2VhcmNoVmFsdWVDaGFuZ2VkKSAmJiBpc0NoYXJhY3Rlckxlbmd0aFZhbGlkKGN1cnIuc2VhcmNoVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTWFpbk1vZHVsZVRvU3ViTW9kdWxlc1Blcm1pc3Npb25UeXBlTWFwOiBOdW1iZXJNYXA8RWRnZS5QZXJtaXNzaW9uVHlwZVtdPiA9IHtcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5DY01haW5dOiBbXSxcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudE1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudEFjY291bnRWaWV3LCBFZGdlLlBlcm1pc3Npb25UeXBlLkFjY291bnRNYW5hZ2VtZW50QWNjb3VudENyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudEFjY291bnRVcGRhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuQWNjb3VudE1hbmFnZW1lbnRBY2NvdW50RGVsZXRlXSxcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNNYWluXTogW0VkZ2UuUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVmlldywgRWRnZS5QZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNDcmVhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVXBkYXRlLCBFZGdlLlBlcm1pc3Npb25UeXBlLk1vbnRobGllc0RlbGV0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5Nb250aGx5U2VyaWVzQ3JlYXRlXSxcclxuICBbRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdE1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdFZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RDcmVhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RVcGRhdGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3REZWxldGUsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RHcm91cFZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuR3Vlc3RHcm91cENyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdEhvdGVsR3Vlc3RWaWV3LCBFZGdlLlBlcm1pc3Npb25UeXBlLkhvdGVsR3Vlc3RJT0NyZWF0ZV0sXHJcbiAgW0VkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbk1haW5dOiBbXHJcbiAgICBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvblZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkVWYWxpZGF0aW9uQ3JlYXRlLCBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvblVwZGF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25EZWxldGUsXHJcbiAgICBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TdGlja2VyVmlldywgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlckNyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlclVwZGF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlckRlbGV0ZSxcclxuICAgIEVkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvblZpZXcsIEVkZ2UuUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvbkNyZWF0ZSwgRWRnZS5QZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uVXBkYXRlLCBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25Db3Vwb25EZWxldGVdLFxyXG4gIFtFZGdlLlBlcm1pc3Npb25UeXBlLlJlcG9ydHNNYWluXTogW10sXHJcbiAgW0VkZ2UuUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvbk1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5Mb3RDb25maWd1cmF0aW9uUmF0ZXMsIEVkZ2UuUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvblNjaGVkdWxlciwgRWRnZS5QZXJtaXNzaW9uVHlwZS5Mb3RDb25maWd1cmF0aW9uVmFsaWRhdGlvblByb2ZpbGVdLFxyXG4gIFtFZGdlLlBlcm1pc3Npb25UeXBlLlRlbmFudFNldHRpbmdzTWFpbl06IFtFZGdlLlBlcm1pc3Npb25UeXBlLk1hbmFnZW1lbnRBZG1pbl0sXHJcbiAgW0VkZ2UuUGVybWlzc2lvblR5cGUuRUNvbW1lcmNlQmFja29mZmljZU1haW5dOiBbRWRnZS5QZXJtaXNzaW9uVHlwZS5FQ29tbWVyY2VBZG1pbiwgRWRnZS5QZXJtaXNzaW9uVHlwZS5FQ29tbWVyY2VSZWd1bGFyXVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFwcE1vZHVsZVRvTWFpblBlcm1pc3Npb25UeXBlTWFwOiBOdW1iZXJNYXA8RWRnZS5QZXJtaXNzaW9uVHlwZT4gPSB7XHJcbiAgW0VkZ2UuQXBwTW9kdWxlLkNjXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5DY01haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLkFjY291bnRzXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5BY2NvdW50TWFuYWdlbWVudE1haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLk1vbnRobGllc106IEVkZ2UuUGVybWlzc2lvblR5cGUuTW9udGhsaWVzTWFpbixcclxuICBbRWRnZS5BcHBNb2R1bGUuR3Vlc3RzXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5HdWVzdE1haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLlZhbGlkYXRpb25dOiBFZGdlLlBlcm1pc3Npb25UeXBlLlZhbGlkYXRpb25NYWluLFxyXG4gIFtFZGdlLkFwcE1vZHVsZS5SZXBvcnRzXTogRWRnZS5QZXJtaXNzaW9uVHlwZS5SZXBvcnRzTWFpbixcclxuICBbRWRnZS5BcHBNb2R1bGUuTG90Q29uZmlndXJhdGlvbl06IEVkZ2UuUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvbk1haW4sXHJcbiAgW0VkZ2UuQXBwTW9kdWxlLk1hbmFnZW1lbnRdOiBFZGdlLlBlcm1pc3Npb25UeXBlLlRlbmFudFNldHRpbmdzTWFpbixcclxuICBbRWRnZS5BcHBNb2R1bGUuRUNvbW1lcmNlQmFja29mZmljZV06IEVkZ2UuUGVybWlzc2lvblR5cGUuRUNvbW1lcmNlQmFja29mZmljZU1haW4sXHJcbn07XHJcbiJdfQ==
@@ -1659,6 +1659,59 @@ let ConfigurationServiceProxy$1 = class ConfigurationServiceProxy {
1659
1659
  }
1660
1660
  return of(null);
1661
1661
  }
1662
+ /**
1663
+ * @return Success
1664
+ */
1665
+ getSparkMobileVersion() {
1666
+ let url_ = this.baseUrl + "/api/services/configuration/spark-mobile-version";
1667
+ url_ = url_.replace(/[?&]$/, "");
1668
+ let options_ = {
1669
+ observe: "response",
1670
+ responseType: "blob",
1671
+ headers: new HttpHeaders({
1672
+ "Accept": "text/plain"
1673
+ })
1674
+ };
1675
+ return this.http.request("get", url_, options_).pipe(mergeMap((response_) => {
1676
+ return this.processGetSparkMobileVersion(response_);
1677
+ })).pipe(catchError((response_) => {
1678
+ if (response_ instanceof HttpResponseBase) {
1679
+ try {
1680
+ return this.processGetSparkMobileVersion(response_);
1681
+ }
1682
+ catch (e) {
1683
+ return throwError(e);
1684
+ }
1685
+ }
1686
+ else
1687
+ return throwError(response_);
1688
+ }));
1689
+ }
1690
+ processGetSparkMobileVersion(response) {
1691
+ const status = response.status;
1692
+ const responseBlob = response instanceof HttpResponse ? response.body :
1693
+ response.error instanceof Blob ? response.error : undefined;
1694
+ let _headers = {};
1695
+ if (response.headers) {
1696
+ for (let key of response.headers.keys()) {
1697
+ _headers[key] = response.headers.get(key);
1698
+ }
1699
+ }
1700
+ if (status === 200) {
1701
+ return blobToText$1(responseBlob).pipe(mergeMap(_responseText => {
1702
+ let result200 = null;
1703
+ let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
1704
+ result200 = ObjectHttpResponseData$1.fromJS(resultData200);
1705
+ return of(result200);
1706
+ }));
1707
+ }
1708
+ else if (status !== 200 && status !== 204) {
1709
+ return blobToText$1(responseBlob).pipe(mergeMap(_responseText => {
1710
+ return throwException$1("An unexpected server error occurred.", status, _responseText, _headers);
1711
+ }));
1712
+ }
1713
+ return of(null);
1714
+ }
1662
1715
  /**
1663
1716
  * @return Success
1664
1717
  */
@@ -11136,6 +11189,11 @@ class SmartparkFilter {
11136
11189
  for (let item of _data["sparkVersions"])
11137
11190
  this.sparkVersions.push(item);
11138
11191
  }
11192
+ if (Array.isArray(_data["varIds"])) {
11193
+ this.varIds = [];
11194
+ for (let item of _data["varIds"])
11195
+ this.varIds.push(item);
11196
+ }
11139
11197
  if (Array.isArray(_data["statuses"])) {
11140
11198
  this.statuses = [];
11141
11199
  for (let item of _data["statuses"])
@@ -11170,6 +11228,11 @@ class SmartparkFilter {
11170
11228
  for (let item of this.sparkVersions)
11171
11229
  data["sparkVersions"].push(item);
11172
11230
  }
11231
+ if (Array.isArray(this.varIds)) {
11232
+ data["varIds"] = [];
11233
+ for (let item of this.varIds)
11234
+ data["varIds"].push(item);
11235
+ }
11173
11236
  if (Array.isArray(this.statuses)) {
11174
11237
  data["statuses"] = [];
11175
11238
  for (let item of this.statuses)
@@ -34395,7 +34458,7 @@ class BaseRateDto {
34395
34458
  init(_data) {
34396
34459
  if (_data) {
34397
34460
  this.id = _data["id"];
34398
- this.parkId = _data["parkId"];
34461
+ this.parkID = _data["parkID"];
34399
34462
  this.number = _data["number"];
34400
34463
  this.name = _data["name"];
34401
34464
  this.updateDate = _data["updateDate"];
@@ -34411,7 +34474,7 @@ class BaseRateDto {
34411
34474
  toJSON(data) {
34412
34475
  data = typeof data === 'object' ? data : {};
34413
34476
  data["id"] = this.id;
34414
- data["parkId"] = this.parkId;
34477
+ data["parkID"] = this.parkID;
34415
34478
  data["number"] = this.number;
34416
34479
  data["name"] = this.name;
34417
34480
  data["updateDate"] = this.updateDate;
@@ -48376,7 +48439,7 @@ class RateDto {
48376
48439
  init(_data) {
48377
48440
  if (_data) {
48378
48441
  this.id = _data["id"];
48379
- this.parkId = _data["parkId"];
48442
+ this.parkID = _data["parkID"];
48380
48443
  this.number = _data["number"];
48381
48444
  this.name = _data["name"];
48382
48445
  this.updateDate = _data["updateDate"];
@@ -48410,7 +48473,7 @@ class RateDto {
48410
48473
  toJSON(data) {
48411
48474
  data = typeof data === 'object' ? data : {};
48412
48475
  data["id"] = this.id;
48413
- data["parkId"] = this.parkId;
48476
+ data["parkID"] = this.parkID;
48414
48477
  data["number"] = this.number;
48415
48478
  data["name"] = this.name;
48416
48479
  data["updateDate"] = this.updateDate;
@@ -61848,6 +61911,7 @@ var Localization;
61848
61911
  Localization["password_policy_save_in_progress"] = "password_policy_save_in_progress";
61849
61912
  Localization["form_validation_invalid_from_time"] = "form_validation_invalid_from_time";
61850
61913
  Localization["unsupported"] = "unsupported";
61914
+ Localization["var_plural"] = "var_plural";
61851
61915
  })(Localization || (Localization = {}));
61852
61916
 
61853
61917
  const DISABLED_FOCUS_ELEMENT_TYPES = [
@@ -62370,8 +62434,12 @@ class TibaValidators {
62370
62434
  const formGroup = controlGroup.parent;
62371
62435
  const control = formGroup.get(controlName);
62372
62436
  const controlValue = control.value;
62373
- if (controlValue && controlValue < minDateTimeValue) {
62374
- response = { form_validation_invalid_from_time: true };
62437
+ if (controlValue) {
62438
+ const controlDate = new Date(controlValue).setHours(0, 0, 0, 0);
62439
+ const minDate = new Date(minDateTimeValue).setHours(0, 0, 0, 0);
62440
+ if (controlDate < minDate) {
62441
+ response = { form_validation_invalid_from_time: true };
62442
+ }
62375
62443
  }
62376
62444
  }
62377
62445
  return response;
@@ -62781,6 +62849,7 @@ var RowOperation;
62781
62849
  RowOperation[RowOperation["Delete"] = 2] = "Delete";
62782
62850
  RowOperation[RowOperation["None"] = 3] = "None";
62783
62851
  RowOperation[RowOperation["InsertToParent"] = 4] = "InsertToParent";
62852
+ RowOperation[RowOperation["Updating"] = 5] = "Updating";
62784
62853
  })(RowOperation || (RowOperation = {}));
62785
62854
  function markEntityAsUnchanged(entity) {
62786
62855
  return omitKeys(entity, ['expanded', 'expanding', 'changed', 'rowOperation', 'findRowIndex']);