@mnaoumov/obsidian-lib 9.0.0 → 10.1.0

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.
@@ -89,7 +89,7 @@ var position_exports = {};
89
89
  __export(position_exports, {
90
90
  isPositionInOffsetRange: () => isPositionInOffsetRange,
91
91
  isPositionInside: () => isPositionInside,
92
- isPositionInsideAnyOf: () => isPositionInsideAnyOf
92
+ isPositionInsideSome: () => isPositionInsideSome
93
93
  });
94
94
  module.exports = __toCommonJS(position_exports);
95
95
  function isPositionInOffsetRange(position, offsetRange) {
@@ -98,7 +98,7 @@ function isPositionInOffsetRange(position, offsetRange) {
98
98
  function isPositionInside(inner, outer) {
99
99
  return outer.start.offset <= inner.start.offset && inner.end.offset <= outer.end.offset;
100
100
  }
101
- function isPositionInsideAnyOf(inner, containers) {
101
+ function isPositionInsideSome(inner, containers) {
102
102
  return containers.some((container) => isPositionInside(inner, getPosition(container)));
103
103
  }
104
104
  function getPosition(container) {
@@ -108,6 +108,6 @@ function getPosition(container) {
108
108
  0 && (module.exports = {
109
109
  isPositionInOffsetRange,
110
110
  isPositionInside,
111
- isPositionInsideAnyOf
111
+ isPositionInsideSome
112
112
  });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbXBhcmluZyBwb3NpdGlvbnMgd2l0aGluIGEgZmlsZSdzIGNvbnRlbnQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQb3MgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgT2Zmc2V0UmFuZ2UgfSBmcm9tICcuL3JlZmVyZW5jZS50cyc7XG5cbi8qKlxuICogQSBwb3NpdGlvbiwgb3IgYW55dGhpbmcgdGhhdCBjYXJyaWVzIG9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgUG9zaXRpb25Db250YWluZXIgPSBQb3MgfCBQb3NpdGlvbmVkO1xuXG4vKipcbiAqIEFueXRoaW5nIHRoYXQgY2FycmllcyBhIHBvc2l0aW9uIHdpdGhpbiBhIGZpbGUncyBjb250ZW50OiBhIHJlZmVyZW5jZSBjYWNoZSwgYSBoZWFkaW5nLCBhIHNlY3Rpb24sIGEgbGlzdFxuICogaXRlbSwgYW5kIHNvIG9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uZWQge1xuICAvKipcbiAgICogQSBwb3NpdGlvbiB3aXRoaW4gdGhlIGZpbGUncyBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zaXRpb246IFBvcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFuIG9mZnNldCByYW5nZS5cbiAqXG4gKiBDb250YWlubWVudCBpcyBmdWxsIGFuZCBib3RoIGJvdW5kcyBhcmUgaW5jbHVzaXZlOiBhIHBvc2l0aW9uIHRoYXQgY29pbmNpZGVzIGV4YWN0bHkgd2l0aCB0aGUgcmFuZ2UgaXNcbiAqIGluc2lkZSBpdCwgYW5kIG9uZSB0aGF0IG9ubHkgcGFydGlhbGx5IG92ZXJsYXBzIGl0IGlzIG5vdC5cbiAqXG4gKiBAcGFyYW0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gb2Zmc2V0UmFuZ2UgLSBUaGUgb2Zmc2V0IHJhbmdlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIHRoZSBvZmZzZXQgcmFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Bvc2l0aW9uSW5PZmZzZXRSYW5nZShwb3NpdGlvbjogUG9zLCBvZmZzZXRSYW5nZTogT2Zmc2V0UmFuZ2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIG9mZnNldFJhbmdlLnN0YXJ0T2Zmc2V0IDw9IHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAmJiBwb3NpdGlvbi5lbmQub2Zmc2V0IDw9IG9mZnNldFJhbmdlLmVuZE9mZnNldDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFub3RoZXIgcG9zaXRpb24uXG4gKlxuICogT25seSB0aGUgb2Zmc2V0cyBhcmUgY29tcGFyZWQuIENvbnRhaW5tZW50IGlzIGZ1bGwgYW5kIGJvdGggYm91bmRzIGFyZSBpbmNsdXNpdmU6IGEgcG9zaXRpb24gZXF1YWwgdG8gdGhlXG4gKiBvdXRlciBvbmUgaXMgaW5zaWRlIGl0LCBhbmQgb25lIHRoYXQgb25seSBwYXJ0aWFsbHkgb3ZlcmxhcHMgaXQgaXMgbm90LlxuICpcbiAqIEBwYXJhbSBpbm5lciAtIFRoZSBwb3NpdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBvdXRlciAtIFRoZSBwb3NpdGlvbiB0byBjaGVjayBhZ2FpbnN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5uZXIgcG9zaXRpb24gaXMgZnVsbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgb3V0ZXIgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpdGlvbkluc2lkZShpbm5lcjogUG9zLCBvdXRlcjogUG9zKTogYm9vbGVhbiB7XG4gIHJldHVybiBvdXRlci5zdGFydC5vZmZzZXQgPD0gaW5uZXIuc3RhcnQub2Zmc2V0ICYmIGlubmVyLmVuZC5vZmZzZXQgPD0gb3V0ZXIuZW5kLm9mZnNldDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFueSBvZiB0aGUgZ2l2ZW4gY29udGFpbmVycy5cbiAqXG4gKiBFYWNoIGNvbnRhaW5lciBpcyBhIHBvc2l0aW9uLCBvciBhbnl0aGluZyB0aGF0IGNhcnJpZXMgb25lIChhIHJlZmVyZW5jZSBjYWNoZSwgYSBoZWFkaW5nLCBhIHNlY3Rpb24pLiBUaGVcbiAqIGNvbnRhaW5tZW50IHRlc3QgaXMge0BsaW5rIGlzUG9zaXRpb25JbnNpZGV9LlxuICpcbiAqIEBwYXJhbSBpbm5lciAtIFRoZSBwb3NpdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBjb250YWluZXJzIC0gVGhlIHBvc2l0aW9ucywgb3IgdGhpbmdzIGNhcnJ5aW5nIHBvc2l0aW9ucywgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlubmVyIHBvc2l0aW9uIGlzIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gYXQgbGVhc3Qgb25lIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXRpb25JbnNpZGVBbnlPZihpbm5lcjogUG9zLCBjb250YWluZXJzOiByZWFkb25seSBQb3NpdGlvbkNvbnRhaW5lcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb250YWluZXJzLnNvbWUoKGNvbnRhaW5lcikgPT4gaXNQb3NpdGlvbkluc2lkZShpbm5lciwgZ2V0UG9zaXRpb24oY29udGFpbmVyKSkpO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NpdGlvbihjb250YWluZXI6IFBvc2l0aW9uQ29udGFpbmVyKTogUG9zIHtcbiAgcmV0dXJuICdwb3NpdGlvbicgaW4gY29udGFpbmVyID8gY29udGFpbmVyLnBvc2l0aW9uIDogY29udGFpbmVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DTyxTQUFTLHdCQUF3QixVQUFlLGFBQW1DO0FBQ3hGLFNBQU8sWUFBWSxlQUFlLFNBQVMsTUFBTSxVQUFVLFNBQVMsSUFBSSxVQUFVLFlBQVk7QUFDaEc7QUFZTyxTQUFTLGlCQUFpQixPQUFZLE9BQXFCO0FBQ2hFLFNBQU8sTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsTUFBTSxJQUFJLFVBQVUsTUFBTSxJQUFJO0FBQ25GO0FBWU8sU0FBUyxzQkFBc0IsT0FBWSxZQUFtRDtBQUNuRyxTQUFPLFdBQVcsS0FBSyxDQUFDLGNBQWMsaUJBQWlCLE9BQU8sWUFBWSxTQUFTLENBQUMsQ0FBQztBQUN2RjtBQUVBLFNBQVMsWUFBWSxXQUFtQztBQUN0RCxTQUFPLGNBQWMsWUFBWSxVQUFVLFdBQVc7QUFDeEQ7IiwibmFtZXMiOltdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbXBhcmluZyBwb3NpdGlvbnMgd2l0aGluIGEgZmlsZSdzIGNvbnRlbnQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQb3MgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgT2Zmc2V0UmFuZ2UgfSBmcm9tICcuL3JlZmVyZW5jZS50cyc7XG5cbi8qKlxuICogQSBwb3NpdGlvbiwgb3IgYW55dGhpbmcgdGhhdCBjYXJyaWVzIG9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgUG9zaXRpb25Db250YWluZXIgPSBQb3MgfCBQb3NpdGlvbmVkO1xuXG4vKipcbiAqIEFueXRoaW5nIHRoYXQgY2FycmllcyBhIHBvc2l0aW9uIHdpdGhpbiBhIGZpbGUncyBjb250ZW50OiBhIHJlZmVyZW5jZSBjYWNoZSwgYSBoZWFkaW5nLCBhIHNlY3Rpb24sIGEgbGlzdFxuICogaXRlbSwgYW5kIHNvIG9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uZWQge1xuICAvKipcbiAgICogQSBwb3NpdGlvbiB3aXRoaW4gdGhlIGZpbGUncyBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zaXRpb246IFBvcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFuIG9mZnNldCByYW5nZS5cbiAqXG4gKiBDb250YWlubWVudCBpcyBmdWxsIGFuZCBib3RoIGJvdW5kcyBhcmUgaW5jbHVzaXZlOiBhIHBvc2l0aW9uIHRoYXQgY29pbmNpZGVzIGV4YWN0bHkgd2l0aCB0aGUgcmFuZ2UgaXNcbiAqIGluc2lkZSBpdCwgYW5kIG9uZSB0aGF0IG9ubHkgcGFydGlhbGx5IG92ZXJsYXBzIGl0IGlzIG5vdC5cbiAqXG4gKiBAcGFyYW0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gb2Zmc2V0UmFuZ2UgLSBUaGUgb2Zmc2V0IHJhbmdlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIHRoZSBvZmZzZXQgcmFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Bvc2l0aW9uSW5PZmZzZXRSYW5nZShwb3NpdGlvbjogUG9zLCBvZmZzZXRSYW5nZTogT2Zmc2V0UmFuZ2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIG9mZnNldFJhbmdlLnN0YXJ0T2Zmc2V0IDw9IHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAmJiBwb3NpdGlvbi5lbmQub2Zmc2V0IDw9IG9mZnNldFJhbmdlLmVuZE9mZnNldDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFub3RoZXIgcG9zaXRpb24uXG4gKlxuICogT25seSB0aGUgb2Zmc2V0cyBhcmUgY29tcGFyZWQuIENvbnRhaW5tZW50IGlzIGZ1bGwgYW5kIGJvdGggYm91bmRzIGFyZSBpbmNsdXNpdmU6IGEgcG9zaXRpb24gZXF1YWwgdG8gdGhlXG4gKiBvdXRlciBvbmUgaXMgaW5zaWRlIGl0LCBhbmQgb25lIHRoYXQgb25seSBwYXJ0aWFsbHkgb3ZlcmxhcHMgaXQgaXMgbm90LlxuICpcbiAqIEBwYXJhbSBpbm5lciAtIFRoZSBwb3NpdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBvdXRlciAtIFRoZSBwb3NpdGlvbiB0byBjaGVjayBhZ2FpbnN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5uZXIgcG9zaXRpb24gaXMgZnVsbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgb3V0ZXIgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpdGlvbkluc2lkZShpbm5lcjogUG9zLCBvdXRlcjogUG9zKTogYm9vbGVhbiB7XG4gIHJldHVybiBvdXRlci5zdGFydC5vZmZzZXQgPD0gaW5uZXIuc3RhcnQub2Zmc2V0ICYmIGlubmVyLmVuZC5vZmZzZXQgPD0gb3V0ZXIuZW5kLm9mZnNldDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwb3NpdGlvbiBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFueSBvZiB0aGUgZ2l2ZW4gY29udGFpbmVycy5cbiAqXG4gKiBFYWNoIGNvbnRhaW5lciBpcyBhIHBvc2l0aW9uLCBvciBhbnl0aGluZyB0aGF0IGNhcnJpZXMgb25lIChhIHJlZmVyZW5jZSBjYWNoZSwgYSBoZWFkaW5nLCBhIHNlY3Rpb24pLiBUaGVcbiAqIGNvbnRhaW5tZW50IHRlc3QgaXMge0BsaW5rIGlzUG9zaXRpb25JbnNpZGV9LlxuICpcbiAqIEBwYXJhbSBpbm5lciAtIFRoZSBwb3NpdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBjb250YWluZXJzIC0gVGhlIHBvc2l0aW9ucywgb3IgdGhpbmdzIGNhcnJ5aW5nIHBvc2l0aW9ucywgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlubmVyIHBvc2l0aW9uIGlzIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gYXQgbGVhc3Qgb25lIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXRpb25JbnNpZGVTb21lKGlubmVyOiBQb3MsIGNvbnRhaW5lcnM6IHJlYWRvbmx5IFBvc2l0aW9uQ29udGFpbmVyW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvbnRhaW5lcnMuc29tZSgoY29udGFpbmVyKSA9PiBpc1Bvc2l0aW9uSW5zaWRlKGlubmVyLCBnZXRQb3NpdGlvbihjb250YWluZXIpKSk7XG59XG5cbmZ1bmN0aW9uIGdldFBvc2l0aW9uKGNvbnRhaW5lcjogUG9zaXRpb25Db250YWluZXIpOiBQb3Mge1xuICByZXR1cm4gJ3Bvc2l0aW9uJyBpbiBjb250YWluZXIgPyBjb250YWluZXIucG9zaXRpb24gOiBjb250YWluZXI7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0NPLFNBQVMsd0JBQXdCLFVBQWUsYUFBbUM7QUFDeEYsU0FBTyxZQUFZLGVBQWUsU0FBUyxNQUFNLFVBQVUsU0FBUyxJQUFJLFVBQVUsWUFBWTtBQUNoRztBQVlPLFNBQVMsaUJBQWlCLE9BQVksT0FBcUI7QUFDaEUsU0FBTyxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLElBQUksVUFBVSxNQUFNLElBQUk7QUFDbkY7QUFZTyxTQUFTLHFCQUFxQixPQUFZLFlBQW1EO0FBQ2xHLFNBQU8sV0FBVyxLQUFLLENBQUMsY0FBYyxpQkFBaUIsT0FBTyxZQUFZLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZGO0FBRUEsU0FBUyxZQUFZLFdBQW1DO0FBQ3RELFNBQU8sY0FBYyxZQUFZLFVBQVUsV0FBVztBQUN4RDsiLCJuYW1lcyI6W119
@@ -52,4 +52,4 @@ export declare function isPositionInside(inner: Pos, outer: Pos): boolean;
52
52
  * @param containers - The positions, or things carrying positions, to check against.
53
53
  * @returns Whether the inner position is fully contained within at least one container.
54
54
  */
55
- export declare function isPositionInsideAnyOf(inner: Pos, containers: readonly PositionContainer[]): boolean;
55
+ export declare function isPositionInsideSome(inner: Pos, containers: readonly PositionContainer[]): boolean;
@@ -143,7 +143,7 @@ function isReferenceInHeading(reference, cache) {
143
143
  if (!cache || !(0, import_implementations.isReferenceCache)(reference)) {
144
144
  return false;
145
145
  }
146
- return (0, import_position.isPositionInsideAnyOf)(reference.position, [
146
+ return (0, import_position.isPositionInsideSome)(reference.position, [
147
147
  ...cache.headings ?? [],
148
148
  ...(cache.sections ?? []).filter((section) => section.type === "heading")
149
149
  ]);
@@ -182,4 +182,4 @@ function sortReferences(references) {
182
182
  referenceToFileChange,
183
183
  sortReferences
184
184
  });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZlcmVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBoYW5kbGluZyByZWZlcmVuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ2FjaGVkTWV0YWRhdGEsXG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlLFxuICBpc1JlZmVyZW5jZUNhY2hlXG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHR5cGUgeyBGaWxlQ2hhbmdlIH0gZnJvbSAnLi9maWxlLWNoYW5nZS50cyc7XG5cbmltcG9ydCB7IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuaW1wb3J0IHtcbiAgaXNQb3NpdGlvbkluT2Zmc2V0UmFuZ2UsXG4gIGlzUG9zaXRpb25JbnNpZGVBbnlPZlxufSBmcm9tICcuL3Bvc2l0aW9uLnRzJztcblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB3aXRoaW4gYSBmaWxlIG5vZGUgaW4gYSBjYW52YXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UgZXh0ZW5kcyBDYW52YXNSZWZlcmVuY2Uge1xuICAvKipcbiAgICogQSB0eXBlIG9mIHJlZmVyZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdmaWxlJztcbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB3aXRoaW4gYSBjYW52YXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FudmFzUmVmZXJlbmNlIGV4dGVuZHMgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgY2FudmFzIHJlZmVyZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FudmFzOiB0cnVlO1xuXG4gIC8qKlxuICAgKiBBbiBpbmRleCBvZiB0aGUgbm9kZSBpbiB0aGUgY2FudmFzLlxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgdHlwZSBvZiByZWZlcmVuY2UuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiAnZmlsZScgfCAndGV4dCc7XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2Ugd2l0aGluIGEgdGV4dCBub2RlIGluIGEgY2FudmFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbnZhc1RleHROb2RlUmVmZXJlbmNlIGV4dGVuZHMgQ2FudmFzUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIEFuIG9yaWdpbmFsIHJlZmVyZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpbmFsUmVmZXJlbmNlOiBSZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIEEgdHlwZSBvZiByZWZlcmVuY2UuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiAndGV4dCc7XG59XG5cbi8qKlxuICogQSByYW5nZSB3aXRoaW4gYSBmaWxlJ3MgY29udGVudCwgZXhwcmVzc2VkIGluIGNoYXJhY3RlciBvZmZzZXRzLlxuICpcbiAqIEJvdGggYm91bmRzIGFyZSBpbmNsdXNpdmU6IGEgcmVmZXJlbmNlIHdob3NlIG93biBvZmZzZXRzIGNvaW5jaWRlIGV4YWN0bHkgd2l0aFxuICoge0BsaW5rIE9mZnNldFJhbmdlLnN0YXJ0T2Zmc2V0fSAvIHtAbGluayBPZmZzZXRSYW5nZS5lbmRPZmZzZXR9IGlzIGluc2lkZSB0aGUgcmFuZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2Zmc2V0UmFuZ2Uge1xuICAvKipcbiAgICogQW4gZW5kIG9mZnNldCBvZiB0aGUgcmFuZ2Ugd2l0aGluIHRoZSBmaWxlJ3MgY29udGVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZE9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHN0YXJ0IG9mZnNldCBvZiB0aGUgcmFuZ2Ugd2l0aGluIHRoZSBmaWxlJ3MgY29udGVudC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0T2Zmc2V0OiBudW1iZXI7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdGV4dCBvZiB0aGUgb25lIGxpbmsgYSByZWZlcmVuY2Ugc3RhbmRzIGZvci5cbiAqXG4gKiBGb3IgbW9zdCByZWZlcmVuY2VzIHRoYXQgaXMge0BsaW5rIFJlZmVyZW5jZS5vcmlnaW5hbH0uIEEgZnJvbnRtYXR0ZXIgbGluayB0aGF0IGNhcnJpZXMgb2Zmc2V0cyBpcyB0aGVcbiAqIGV4Y2VwdGlvbjogaXRzIGBvcmlnaW5hbGAgaXMgdGhlIFdIT0xFIHByb3BlcnR5IHZhbHVlLCB3aGljaCBtYXkgaG9sZCBzZXZlcmFsIGxpbmtzLCBhbmQgYHN0YXJ0T2Zmc2V0YCAvXG4gKiBgZW5kT2Zmc2V0YCBnaXZlIHRoaXMgbGluaydzIHNwYW4gaW4gaXQuIEFueXRoaW5nIHRoYXQgcGFyc2VzLCBjb21wYXJlcyBvciByZXBsYWNlcyB0aGUgbGluayBhcyBvbmUgbGlua1xuICogbXVzdCByZWFkIHRoYXQgc3BhbiwgbmV2ZXIgdGhlIHdob2xlIHZhbHVlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlLlxuICogQHJldHVybnMgVGhlIHRleHQgb2YgdGhlIGxpbmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWZlcmVuY2VMaW5rVGV4dChyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHN0cmluZyB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocmVmZXJlbmNlKSA/IHJlZmVyZW5jZS5vcmlnaW5hbC5zbGljZShyZWZlcmVuY2Uuc3RhcnRPZmZzZXQsIHJlZmVyZW5jZS5lbmRPZmZzZXQpIDogcmVmZXJlbmNlLm9yaWdpbmFsO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHJlZmVyZW5jZSBpcyBhIGNhbnZhcyBmaWxlIG5vZGUgcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIENhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlIHtcbiAgcmV0dXJuIGlzQ2FudmFzUmVmZXJlbmNlKHJlZmVyZW5jZSkgJiYgcmVmZXJlbmNlLnR5cGUgPT09ICdmaWxlJztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSByZWZlcmVuY2UgaXMgYSBjYW52YXMgcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgY2FudmFzIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIENhbnZhc1JlZmVyZW5jZSB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHJlZmVyZW5jZSkgJiYgISEocmVmZXJlbmNlIGFzIFBhcnRpYWw8Q2FudmFzUmVmZXJlbmNlPikuaXNDYW52YXM7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcmVmZXJlbmNlIGlzIGEgY2FudmFzIHRleHQgbm9kZSByZWZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2Uge1xuICByZXR1cm4gaXNDYW52YXNSZWZlcmVuY2UocmVmZXJlbmNlKSAmJiByZWZlcmVuY2UudHlwZSA9PT0gJ3RleHQnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHJlZmVyZW5jZSBzaXRzIGluc2lkZSBhIGhlYWRpbmcuXG4gKlxuICogVGhlIGFuc3dlciBjb21lcyBmcm9tIHRoZSBwYXJzZWQgaGVhZGluZyBwb3NpdGlvbnMgb2YgdGhlIGZpbGUncyBtZXRhZGF0YSwgbmV2ZXIgZnJvbSBhIHBhdHRlcm4gb3ZlciBpdHNcbiAqIHRleHQ6IGEgcmVmZXJlbmNlIGlzIGluc2lkZSBhIGhlYWRpbmcgd2hlbiBpdCBpcyBmdWxseSBjb250YWluZWQgaW4gYSBgaGVhZGluZ3NgIGVudHJ5IG9yIGluIGEgYGhlYWRpbmdgXG4gKiBzZWN0aW9uLiBUaGUgc2VjdGlvbiBjb3ZlcnMgYSBTZXRleHQgaGVhZGluZydzIHVuZGVybGluZSBhcyB3ZWxsLCBzbyBib3RoIGhlYWRpbmcgc3ludGF4ZXMgY291bnQuXG4gKlxuICogT25seSBhIHJlZmVyZW5jZSB0aGF0IGNhcnJpZXMgYSBwb3NpdGlvbiB3aXRoaW4gdGhlIGZpbGUncyBjb250ZW50IGNhbiBiZSBpbnNpZGUgYSBoZWFkaW5nLiBBXG4gKiB7QGxpbmsgRnJvbnRtYXR0ZXJMaW5rQ2FjaGV9IOKAlCBhIGZyb250bWF0dGVyIGxpbmssIGEgbXVsdGktbGluayBmcm9udG1hdHRlciB2YWx1ZSBlbnRyeSwgb3IgYW55IGNhbnZhc1xuICogcmVmZXJlbmNlIOKAlCBuZXZlciBpcy5cbiAqXG4gKiBBIGxpbmsgaW4gYSBoZWFkaW5nIGlzIHBhcnQgb2YgdGhhdCBoZWFkaW5nJ3MgdGV4dCwgYW5kIHNvIG9mIGV2ZXJ5IGAjaGVhZGluZ2Agc3VicGF0aCBwb2ludGluZyBhdCBpdC5cbiAqIFJld3JpdGluZyBzdWNoIGEgbGluayBjaGFuZ2VzIHRoZSBoZWFkaW5nIHRleHQgYW5kIGJyZWFrcyB0aG9zZSBzdWJwYXRocywgd2hpY2ggaXMgd2h5IGEgbGluayBjb252ZXJ0ZXJcbiAqIG1heSB3YW50IHRvIGxlYXZlIGl0IGFsb25lLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIG1ldGFkYXRhIG9mIHRoZSBmaWxlIHRoZSByZWZlcmVuY2UgYmVsb25ncyB0by5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBmdWxseSBjb250YWluZWQgaW4gYSBoZWFkaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VJbkhlYWRpbmcocmVmZXJlbmNlOiBSZWZlcmVuY2UsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwpOiBib29sZWFuIHtcbiAgaWYgKCFjYWNoZSB8fCAhaXNSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzUG9zaXRpb25JbnNpZGVBbnlPZihyZWZlcmVuY2UucG9zaXRpb24sIFtcbiAgICAuLi5jYWNoZS5oZWFkaW5ncyA/PyBbXSxcbiAgICAuLi4oY2FjaGUuc2VjdGlvbnMgPz8gW10pLmZpbHRlcigoc2VjdGlvbikgPT4gc2VjdGlvbi50eXBlID09PSAnaGVhZGluZycpXG4gIF0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHJlZmVyZW5jZSBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFuIG9mZnNldCByYW5nZS5cbiAqXG4gKiBPbmx5IGEgcmVmZXJlbmNlIHRoYXQgY2FycmllcyBhIHBvc2l0aW9uIHdpdGhpbiB0aGUgZmlsZSdzIGNvbnRlbnQgY2FuIGJlIGluIGEgcmFuZ2UuIEFcbiAqIHtAbGluayBGcm9udG1hdHRlckxpbmtDYWNoZX0g4oCUIGEgZnJvbnRtYXR0ZXIgbGluaywgYSBtdWx0aS1saW5rIGZyb250bWF0dGVyIHZhbHVlIGVudHJ5LCBvciBhbnkgY2FudmFzXG4gKiByZWZlcmVuY2Ug4oCUIGNhcnJpZXMgbm8gc3VjaCBwb3NpdGlvbiBhbmQgaXMgdGhlcmVmb3JlIG5ldmVyIGluIHJhbmdlLiBJdHMgYHN0YXJ0T2Zmc2V0YCAvIGBlbmRPZmZzZXRgLFxuICogd2hlcmUgcHJlc2VudCwgbG9jYXRlIHRoZSBsaW5rIHdpdGhpbiBpdHMgb3duIHByb3BlcnR5IHZhbHVlIHJhdGhlciB0aGFuIHdpdGhpbiB0aGUgZmlsZSwgc28gdGhleSBhcmVcbiAqIGRlbGliZXJhdGVseSBub3QgY29tcGFyZWQgYWdhaW5zdCB0aGUgcmFuZ2UuXG4gKlxuICogQ29udGFpbm1lbnQgaXMgZnVsbCBhbmQgYm90aCBib3VuZHMgYXJlIGluY2x1c2l2ZTogYSByZWZlcmVuY2UgdGhhdCBvbmx5IHBhcnRpYWxseSBvdmVybGFwcyB0aGUgcmFuZ2UgaXNcbiAqIG5vdCBpbiBpdCwgYmVjYXVzZSByZXdyaXRpbmcgcGFydCBvZiBhIGxpbmsgY29ycnVwdHMgaXQuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcGFyYW0gb2Zmc2V0UmFuZ2UgLSBUaGUgb2Zmc2V0IHJhbmdlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgZnVsbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgb2Zmc2V0IHJhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VJbk9mZnNldFJhbmdlKHJlZmVyZW5jZTogUmVmZXJlbmNlLCBvZmZzZXRSYW5nZTogT2Zmc2V0UmFuZ2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiBpc1Bvc2l0aW9uSW5PZmZzZXRSYW5nZShyZWZlcmVuY2UucG9zaXRpb24sIG9mZnNldFJhbmdlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHJlZmVyZW5jZSB0byBhIGZpbGUgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gbmV3Q29udGVudCAtIFRoZSBuZXcgY29udGVudCBmb3IgdGhlIHJlZmVyZW5jZS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvRmlsZUNoYW5nZShyZWZlcmVuY2U6IFJlZmVyZW5jZSwgbmV3Q29udGVudDogc3RyaW5nKTogRmlsZUNoYW5nZSB7XG4gIHJldHVybiB7XG4gICAgbmV3Q29udGVudCxcbiAgICBvbGRDb250ZW50OiBnZXRSZWZlcmVuY2VMaW5rVGV4dChyZWZlcmVuY2UpLFxuICAgIHJlZmVyZW5jZVxuICB9O1xufVxuXG4vKipcbiAqIFNvcnRzIHJlZmVyZW5jZXMgYnkgdGhlaXIgdHlwZSBhbmQgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZXMgLSBUaGUgcmVmZXJlbmNlcyB0byBzb3J0LlxuICogQHJldHVybnMgVGhlIHNvcnRlZCByZWZlcmVuY2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFJlZmVyZW5jZXMocmVmZXJlbmNlczogUmVmZXJlbmNlW10pOiBSZWZlcmVuY2VbXSB7XG4gIHJldHVybiByZWZlcmVuY2VzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShhKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKGIpKSB7XG4gICAgICBjb25zdCBhU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoYSkgPyBhLnN0YXJ0T2Zmc2V0IDogMDtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCBpbmNvcnJlY3RseSByZXBvcnRzIHRoaXMgYnJhbmNoIGFzIHVuY292ZXJlZCwgYnV0IGl0IGlzIGNvdmVyZWQgYnkgYHNob3VsZCBzb3J0IHR3byBmcm9udG1hdHRlciBsaW5rcyB3aXRob3V0IG9mZnNldHNgIHRlc3QuICovXG4gICAgICBjb25zdCBiU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoYikgPyBiLnN0YXJ0T2Zmc2V0IDogMDtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICByZXR1cm4gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSkgfHwgTnVtYmVyKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhiKSkgLSBOdW1iZXIoaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGEpKVxuICAgICAgICB8fCBhU3RhcnRPZmZzZXQgLSBiU3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUoYSkgJiYgaXNSZWZlcmVuY2VDYWNoZShiKSkge1xuICAgICAgcmV0dXJuIGEucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gYi5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUoYSkgPyAxIDogLTE7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSw2QkFHTztBQUlQLGlEQUFrRDtBQUNsRCxzQkFHTztBQTRFQSxTQUFTLHFCQUFxQixXQUE4QjtBQUNqRSxhQUFPLDhFQUFrQyxTQUFTLElBQUksVUFBVSxTQUFTLE1BQU0sVUFBVSxhQUFhLFVBQVUsU0FBUyxJQUFJLFVBQVU7QUFDekk7QUFRTyxTQUFTLDBCQUEwQixXQUE0RDtBQUNwRyxTQUFPLGtCQUFrQixTQUFTLEtBQUssVUFBVSxTQUFTO0FBQzVEO0FBUU8sU0FBUyxrQkFBa0IsV0FBb0Q7QUFDcEYsYUFBTywrQ0FBdUIsU0FBUyxLQUFLLENBQUMsQ0FBRSxVQUF1QztBQUN4RjtBQVFPLFNBQVMsMEJBQTBCLFdBQTREO0FBQ3BHLFNBQU8sa0JBQWtCLFNBQVMsS0FBSyxVQUFVLFNBQVM7QUFDNUQ7QUFxQk8sU0FBUyxxQkFBcUIsV0FBc0IsT0FBdUM7QUFDaEcsTUFBSSxDQUFDLFNBQVMsS0FBQyx5Q0FBaUIsU0FBUyxHQUFHO0FBQzFDLFdBQU87QUFBQSxFQUNUO0FBRUEsYUFBTyx1Q0FBc0IsVUFBVSxVQUFVO0FBQUEsSUFDL0MsR0FBRyxNQUFNLFlBQVksQ0FBQztBQUFBLElBQ3RCLElBQUksTUFBTSxZQUFZLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxRQUFRLFNBQVMsU0FBUztBQUFBLEVBQzFFLENBQUM7QUFDSDtBQWtCTyxTQUFTLHlCQUF5QixXQUFzQixhQUFtQztBQUNoRyxhQUFPLHlDQUFpQixTQUFTLFNBQUsseUNBQXdCLFVBQVUsVUFBVSxXQUFXO0FBQy9GO0FBU08sU0FBUyxzQkFBc0IsV0FBc0IsWUFBZ0M7QUFDMUYsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLFlBQVkscUJBQXFCLFNBQVM7QUFBQSxJQUMxQztBQUFBLEVBQ0Y7QUFDRjtBQVFPLFNBQVMsZUFBZSxZQUFzQztBQUNuRSxTQUFPLFdBQVcsS0FBSyxDQUFDLEdBQUcsTUFBTTtBQUMvQixZQUFJLCtDQUF1QixDQUFDLFNBQUssK0NBQXVCLENBQUMsR0FBRztBQUMxRCxZQUFNLG1CQUFlLDhFQUFrQyxDQUFDLElBQUksRUFBRSxjQUFjO0FBRTVFLFlBQU0sbUJBQWUsOEVBQWtDLENBQUMsSUFBSSxFQUFFLGNBQWM7QUFFNUUsYUFBTyxFQUFFLElBQUksY0FBYyxFQUFFLEdBQUcsS0FBSyxXQUFPLDhFQUFrQyxDQUFDLENBQUMsSUFBSSxXQUFPLDhFQUFrQyxDQUFDLENBQUMsS0FDMUgsZUFBZTtBQUFBLElBQ3RCO0FBRUEsWUFBSSx5Q0FBaUIsQ0FBQyxTQUFLLHlDQUFpQixDQUFDLEdBQUc7QUFDOUMsYUFBTyxFQUFFLFNBQVMsTUFBTSxTQUFTLEVBQUUsU0FBUyxNQUFNO0FBQUEsSUFDcEQ7QUFFQSxlQUFPLCtDQUF1QixDQUFDLElBQUksSUFBSTtBQUFBLEVBQ3pDLENBQUM7QUFDSDsiLCJuYW1lcyI6W119
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWZlcmVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBoYW5kbGluZyByZWZlcmVuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ2FjaGVkTWV0YWRhdGEsXG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlLFxuICBpc1JlZmVyZW5jZUNhY2hlXG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHR5cGUgeyBGaWxlQ2hhbmdlIH0gZnJvbSAnLi9maWxlLWNoYW5nZS50cyc7XG5cbmltcG9ydCB7IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuaW1wb3J0IHtcbiAgaXNQb3NpdGlvbkluT2Zmc2V0UmFuZ2UsXG4gIGlzUG9zaXRpb25JbnNpZGVTb21lXG59IGZyb20gJy4vcG9zaXRpb24udHMnO1xuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHdpdGhpbiBhIGZpbGUgbm9kZSBpbiBhIGNhbnZhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSBleHRlbmRzIENhbnZhc1JlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBBIHR5cGUgb2YgcmVmZXJlbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ2ZpbGUnO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHdpdGhpbiBhIGNhbnZhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW52YXNSZWZlcmVuY2UgZXh0ZW5kcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBjYW52YXMgcmVmZXJlbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNDYW52YXM6IHRydWU7XG5cbiAgLyoqXG4gICAqIEFuIGluZGV4IG9mIHRoZSBub2RlIGluIHRoZSBjYW52YXMuXG4gICAqL1xuICByZWFkb25seSBub2RlSW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogQSB0eXBlIG9mIHJlZmVyZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdmaWxlJyB8ICd0ZXh0Jztcbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB3aXRoaW4gYSB0ZXh0IG5vZGUgaW4gYSBjYW52YXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgZXh0ZW5kcyBDYW52YXNSZWZlcmVuY2Uge1xuICAvKipcbiAgICogQW4gb3JpZ2luYWwgcmVmZXJlbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxSZWZlcmVuY2U6IFJlZmVyZW5jZTtcblxuICAvKipcbiAgICogQSB0eXBlIG9mIHJlZmVyZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICd0ZXh0Jztcbn1cblxuLyoqXG4gKiBBIHJhbmdlIHdpdGhpbiBhIGZpbGUncyBjb250ZW50LCBleHByZXNzZWQgaW4gY2hhcmFjdGVyIG9mZnNldHMuXG4gKlxuICogQm90aCBib3VuZHMgYXJlIGluY2x1c2l2ZTogYSByZWZlcmVuY2Ugd2hvc2Ugb3duIG9mZnNldHMgY29pbmNpZGUgZXhhY3RseSB3aXRoXG4gKiB7QGxpbmsgT2Zmc2V0UmFuZ2Uuc3RhcnRPZmZzZXR9IC8ge0BsaW5rIE9mZnNldFJhbmdlLmVuZE9mZnNldH0gaXMgaW5zaWRlIHRoZSByYW5nZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPZmZzZXRSYW5nZSB7XG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSByYW5nZSB3aXRoaW4gdGhlIGZpbGUncyBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2Zmc2V0IG9mIHRoZSByYW5nZSB3aXRoaW4gdGhlIGZpbGUncyBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRPZmZzZXQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB0ZXh0IG9mIHRoZSBvbmUgbGluayBhIHJlZmVyZW5jZSBzdGFuZHMgZm9yLlxuICpcbiAqIEZvciBtb3N0IHJlZmVyZW5jZXMgdGhhdCBpcyB7QGxpbmsgUmVmZXJlbmNlLm9yaWdpbmFsfS4gQSBmcm9udG1hdHRlciBsaW5rIHRoYXQgY2FycmllcyBvZmZzZXRzIGlzIHRoZVxuICogZXhjZXB0aW9uOiBpdHMgYG9yaWdpbmFsYCBpcyB0aGUgV0hPTEUgcHJvcGVydHkgdmFsdWUsIHdoaWNoIG1heSBob2xkIHNldmVyYWwgbGlua3MsIGFuZCBgc3RhcnRPZmZzZXRgIC9cbiAqIGBlbmRPZmZzZXRgIGdpdmUgdGhpcyBsaW5rJ3Mgc3BhbiBpbiBpdC4gQW55dGhpbmcgdGhhdCBwYXJzZXMsIGNvbXBhcmVzIG9yIHJlcGxhY2VzIHRoZSBsaW5rIGFzIG9uZSBsaW5rXG4gKiBtdXN0IHJlYWQgdGhhdCBzcGFuLCBuZXZlciB0aGUgd2hvbGUgdmFsdWUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UuXG4gKiBAcmV0dXJucyBUaGUgdGV4dCBvZiB0aGUgbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZmVyZW5jZUxpbmtUZXh0KHJlZmVyZW5jZTogUmVmZXJlbmNlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhyZWZlcmVuY2UpID8gcmVmZXJlbmNlLm9yaWdpbmFsLnNsaWNlKHJlZmVyZW5jZS5zdGFydE9mZnNldCwgcmVmZXJlbmNlLmVuZE9mZnNldCkgOiByZWZlcmVuY2Uub3JpZ2luYWw7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcmVmZXJlbmNlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSByZWZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2Uge1xuICByZXR1cm4gaXNDYW52YXNSZWZlcmVuY2UocmVmZXJlbmNlKSAmJiByZWZlcmVuY2UudHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHJlZmVyZW5jZSBpcyBhIGNhbnZhcyByZWZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBjYW52YXMgcmVmZXJlbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYW52YXNSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgQ2FudmFzUmVmZXJlbmNlIHtcbiAgcmV0dXJuIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlKSAmJiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxDYW52YXNSZWZlcmVuY2U+KS5pc0NhbnZhcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSByZWZlcmVuY2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIHJlZmVyZW5jZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIGNhbnZhcyB0ZXh0IG5vZGUgcmVmZXJlbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZSB7XG4gIHJldHVybiBpc0NhbnZhc1JlZmVyZW5jZShyZWZlcmVuY2UpICYmIHJlZmVyZW5jZS50eXBlID09PSAndGV4dCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcmVmZXJlbmNlIHNpdHMgaW5zaWRlIGEgaGVhZGluZy5cbiAqXG4gKiBUaGUgYW5zd2VyIGNvbWVzIGZyb20gdGhlIHBhcnNlZCBoZWFkaW5nIHBvc2l0aW9ucyBvZiB0aGUgZmlsZSdzIG1ldGFkYXRhLCBuZXZlciBmcm9tIGEgcGF0dGVybiBvdmVyIGl0c1xuICogdGV4dDogYSByZWZlcmVuY2UgaXMgaW5zaWRlIGEgaGVhZGluZyB3aGVuIGl0IGlzIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIGBoZWFkaW5nc2AgZW50cnkgb3IgaW4gYSBgaGVhZGluZ2BcbiAqIHNlY3Rpb24uIFRoZSBzZWN0aW9uIGNvdmVycyBhIFNldGV4dCBoZWFkaW5nJ3MgdW5kZXJsaW5lIGFzIHdlbGwsIHNvIGJvdGggaGVhZGluZyBzeW50YXhlcyBjb3VudC5cbiAqXG4gKiBPbmx5IGEgcmVmZXJlbmNlIHRoYXQgY2FycmllcyBhIHBvc2l0aW9uIHdpdGhpbiB0aGUgZmlsZSdzIGNvbnRlbnQgY2FuIGJlIGluc2lkZSBhIGhlYWRpbmcuIEFcbiAqIHtAbGluayBGcm9udG1hdHRlckxpbmtDYWNoZX0g4oCUIGEgZnJvbnRtYXR0ZXIgbGluaywgYSBtdWx0aS1saW5rIGZyb250bWF0dGVyIHZhbHVlIGVudHJ5LCBvciBhbnkgY2FudmFzXG4gKiByZWZlcmVuY2Ug4oCUIG5ldmVyIGlzLlxuICpcbiAqIEEgbGluayBpbiBhIGhlYWRpbmcgaXMgcGFydCBvZiB0aGF0IGhlYWRpbmcncyB0ZXh0LCBhbmQgc28gb2YgZXZlcnkgYCNoZWFkaW5nYCBzdWJwYXRoIHBvaW50aW5nIGF0IGl0LlxuICogUmV3cml0aW5nIHN1Y2ggYSBsaW5rIGNoYW5nZXMgdGhlIGhlYWRpbmcgdGV4dCBhbmQgYnJlYWtzIHRob3NlIHN1YnBhdGhzLCB3aGljaCBpcyB3aHkgYSBsaW5rIGNvbnZlcnRlclxuICogbWF5IHdhbnQgdG8gbGVhdmUgaXQgYWxvbmUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgbWV0YWRhdGEgb2YgdGhlIGZpbGUgdGhlIHJlZmVyZW5jZSBiZWxvbmdzIHRvLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIGhlYWRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUluSGVhZGluZyhyZWZlcmVuY2U6IFJlZmVyZW5jZSwgY2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCk6IGJvb2xlYW4ge1xuICBpZiAoIWNhY2hlIHx8ICFpc1JlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaXNQb3NpdGlvbkluc2lkZVNvbWUocmVmZXJlbmNlLnBvc2l0aW9uLCBbXG4gICAgLi4uY2FjaGUuaGVhZGluZ3MgPz8gW10sXG4gICAgLi4uKGNhY2hlLnNlY3Rpb25zID8/IFtdKS5maWx0ZXIoKHNlY3Rpb24pID0+IHNlY3Rpb24udHlwZSA9PT0gJ2hlYWRpbmcnKVxuICBdKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSByZWZlcmVuY2UgaXMgZnVsbHkgY29udGFpbmVkIHdpdGhpbiBhbiBvZmZzZXQgcmFuZ2UuXG4gKlxuICogT25seSBhIHJlZmVyZW5jZSB0aGF0IGNhcnJpZXMgYSBwb3NpdGlvbiB3aXRoaW4gdGhlIGZpbGUncyBjb250ZW50IGNhbiBiZSBpbiBhIHJhbmdlLiBBXG4gKiB7QGxpbmsgRnJvbnRtYXR0ZXJMaW5rQ2FjaGV9IOKAlCBhIGZyb250bWF0dGVyIGxpbmssIGEgbXVsdGktbGluayBmcm9udG1hdHRlciB2YWx1ZSBlbnRyeSwgb3IgYW55IGNhbnZhc1xuICogcmVmZXJlbmNlIOKAlCBjYXJyaWVzIG5vIHN1Y2ggcG9zaXRpb24gYW5kIGlzIHRoZXJlZm9yZSBuZXZlciBpbiByYW5nZS4gSXRzIGBzdGFydE9mZnNldGAgLyBgZW5kT2Zmc2V0YCxcbiAqIHdoZXJlIHByZXNlbnQsIGxvY2F0ZSB0aGUgbGluayB3aXRoaW4gaXRzIG93biBwcm9wZXJ0eSB2YWx1ZSByYXRoZXIgdGhhbiB3aXRoaW4gdGhlIGZpbGUsIHNvIHRoZXkgYXJlXG4gKiBkZWxpYmVyYXRlbHkgbm90IGNvbXBhcmVkIGFnYWluc3QgdGhlIHJhbmdlLlxuICpcbiAqIENvbnRhaW5tZW50IGlzIGZ1bGwgYW5kIGJvdGggYm91bmRzIGFyZSBpbmNsdXNpdmU6IGEgcmVmZXJlbmNlIHRoYXQgb25seSBwYXJ0aWFsbHkgb3ZlcmxhcHMgdGhlIHJhbmdlIGlzXG4gKiBub3QgaW4gaXQsIGJlY2F1c2UgcmV3cml0aW5nIHBhcnQgb2YgYSBsaW5rIGNvcnJ1cHRzIGl0LlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHBhcmFtIG9mZnNldFJhbmdlIC0gVGhlIG9mZnNldCByYW5nZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIG9mZnNldCByYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlSW5PZmZzZXRSYW5nZShyZWZlcmVuY2U6IFJlZmVyZW5jZSwgb2Zmc2V0UmFuZ2U6IE9mZnNldFJhbmdlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSkgJiYgaXNQb3NpdGlvbkluT2Zmc2V0UmFuZ2UocmVmZXJlbmNlLnBvc2l0aW9uLCBvZmZzZXRSYW5nZSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSByZWZlcmVuY2UgdG8gYSBmaWxlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjb252ZXJ0LlxuICogQHBhcmFtIG5ld0NvbnRlbnQgLSBUaGUgbmV3IGNvbnRlbnQgZm9yIHRoZSByZWZlcmVuY2UuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UocmVmZXJlbmNlOiBSZWZlcmVuY2UsIG5ld0NvbnRlbnQ6IHN0cmluZyk6IEZpbGVDaGFuZ2Uge1xuICByZXR1cm4ge1xuICAgIG5ld0NvbnRlbnQsXG4gICAgb2xkQ29udGVudDogZ2V0UmVmZXJlbmNlTGlua1RleHQocmVmZXJlbmNlKSxcbiAgICByZWZlcmVuY2VcbiAgfTtcbn1cblxuLyoqXG4gKiBTb3J0cyByZWZlcmVuY2VzIGJ5IHRoZWlyIHR5cGUgYW5kIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIC0gVGhlIHJlZmVyZW5jZXMgdG8gc29ydC5cbiAqIEByZXR1cm5zIFRoZSBzb3J0ZWQgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSZWZlcmVuY2VzKHJlZmVyZW5jZXM6IFJlZmVyZW5jZVtdKTogUmVmZXJlbmNlW10ge1xuICByZXR1cm4gcmVmZXJlbmNlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUoYSkgJiYgaXNGcm9udG1hdHRlckxpbmtDYWNoZShiKSkge1xuICAgICAgY29uc3QgYVN0YXJ0T2Zmc2V0ID0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGEpID8gYS5zdGFydE9mZnNldCA6IDA7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gdjggaW5jb3JyZWN0bHkgcmVwb3J0cyB0aGlzIGJyYW5jaCBhcyB1bmNvdmVyZWQsIGJ1dCBpdCBpcyBjb3ZlcmVkIGJ5IGBzaG91bGQgc29ydCB0d28gZnJvbnRtYXR0ZXIgbGlua3Mgd2l0aG91dCBvZmZzZXRzYCB0ZXN0LiAqL1xuICAgICAgY29uc3QgYlN0YXJ0T2Zmc2V0ID0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGIpID8gYi5zdGFydE9mZnNldCA6IDA7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgcmV0dXJuIGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpIHx8IE51bWJlcihpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoYikpIC0gTnVtYmVyKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhhKSlcbiAgICAgICAgfHwgYVN0YXJ0T2Zmc2V0IC0gYlN0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGEpICYmIGlzUmVmZXJlbmNlQ2FjaGUoYikpIHtcbiAgICAgIHJldHVybiBhLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAtIGIucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKGEpID8gMSA6IC0xO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsNkJBR087QUFJUCxpREFBa0Q7QUFDbEQsc0JBR087QUE0RUEsU0FBUyxxQkFBcUIsV0FBOEI7QUFDakUsYUFBTyw4RUFBa0MsU0FBUyxJQUFJLFVBQVUsU0FBUyxNQUFNLFVBQVUsYUFBYSxVQUFVLFNBQVMsSUFBSSxVQUFVO0FBQ3pJO0FBUU8sU0FBUywwQkFBMEIsV0FBNEQ7QUFDcEcsU0FBTyxrQkFBa0IsU0FBUyxLQUFLLFVBQVUsU0FBUztBQUM1RDtBQVFPLFNBQVMsa0JBQWtCLFdBQW9EO0FBQ3BGLGFBQU8sK0NBQXVCLFNBQVMsS0FBSyxDQUFDLENBQUUsVUFBdUM7QUFDeEY7QUFRTyxTQUFTLDBCQUEwQixXQUE0RDtBQUNwRyxTQUFPLGtCQUFrQixTQUFTLEtBQUssVUFBVSxTQUFTO0FBQzVEO0FBcUJPLFNBQVMscUJBQXFCLFdBQXNCLE9BQXVDO0FBQ2hHLE1BQUksQ0FBQyxTQUFTLEtBQUMseUNBQWlCLFNBQVMsR0FBRztBQUMxQyxXQUFPO0FBQUEsRUFDVDtBQUVBLGFBQU8sc0NBQXFCLFVBQVUsVUFBVTtBQUFBLElBQzlDLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFBQSxJQUN0QixJQUFJLE1BQU0sWUFBWSxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksUUFBUSxTQUFTLFNBQVM7QUFBQSxFQUMxRSxDQUFDO0FBQ0g7QUFrQk8sU0FBUyx5QkFBeUIsV0FBc0IsYUFBbUM7QUFDaEcsYUFBTyx5Q0FBaUIsU0FBUyxTQUFLLHlDQUF3QixVQUFVLFVBQVUsV0FBVztBQUMvRjtBQVNPLFNBQVMsc0JBQXNCLFdBQXNCLFlBQWdDO0FBQzFGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxZQUFZLHFCQUFxQixTQUFTO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxTQUFTLGVBQWUsWUFBc0M7QUFDbkUsU0FBTyxXQUFXLEtBQUssQ0FBQyxHQUFHLE1BQU07QUFDL0IsWUFBSSwrQ0FBdUIsQ0FBQyxTQUFLLCtDQUF1QixDQUFDLEdBQUc7QUFDMUQsWUFBTSxtQkFBZSw4RUFBa0MsQ0FBQyxJQUFJLEVBQUUsY0FBYztBQUU1RSxZQUFNLG1CQUFlLDhFQUFrQyxDQUFDLElBQUksRUFBRSxjQUFjO0FBRTVFLGFBQU8sRUFBRSxJQUFJLGNBQWMsRUFBRSxHQUFHLEtBQUssV0FBTyw4RUFBa0MsQ0FBQyxDQUFDLElBQUksV0FBTyw4RUFBa0MsQ0FBQyxDQUFDLEtBQzFILGVBQWU7QUFBQSxJQUN0QjtBQUVBLFlBQUkseUNBQWlCLENBQUMsU0FBSyx5Q0FBaUIsQ0FBQyxHQUFHO0FBQzlDLGFBQU8sRUFBRSxTQUFTLE1BQU0sU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLElBQ3BEO0FBRUEsZUFBTywrQ0FBdUIsQ0FBQyxJQUFJLElBQUk7QUFBQSxFQUN6QyxDQUFDO0FBQ0g7IiwibmFtZXMiOltdfQ==