@plait/core 0.0.53 → 0.0.56

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.
@@ -16,11 +16,20 @@ export const inverse = (op) => {
16
16
  if (Path.equals(newPath, path)) {
17
17
  return op;
18
18
  }
19
- if (Path.isSibling(path, newPath)) {
20
- const inversePath = Path.transform(path, op);
21
- return { ...op, path: inversePath, newPath: path };
22
- }
23
- return { ...op, path: newPath, newPath: path };
19
+ // when operation path is [0,0] -> [0,2], should exec Path.transform to get [0,1] -> [0,0]
20
+ // shoud not return [0,2] -> [0,0] #WIK-8981
21
+ // if (Path.isSibling(path, newPath)) {
22
+ // return { ...op, path: newPath, newPath: path };
23
+ // }
24
+ // If the move does not happen within a single parent it is possible
25
+ // for the move to impact the true path to the location where the node
26
+ // was removed from and where it was inserted. We have to adjust for this
27
+ // and find the original path. We can accomplish this (only in non-sibling)
28
+ // moves by looking at the impact of the move operation on the node
29
+ // after the original move path.
30
+ const inversePath = Path.transform(path, op);
31
+ const inverseNewPath = Path.transform(Path.next(path), op);
32
+ return { ...op, path: inversePath, newPath: inverseNewPath };
24
33
  }
25
34
  case 'set_node': {
26
35
  const { properties, newProperties } = op;
@@ -72,4 +81,4 @@ export const PlaitOperation = {
72
81
  isSetViewportOperation,
73
82
  inverse
74
83
  };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFzRDlCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBVSxFQUFpQyxFQUFFO0lBQ2hGLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBa0IsRUFBa0IsRUFBRTtJQUMxRCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFDYixLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7U0FDekM7UUFFRCxLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7U0FDekM7UUFFRCxLQUFLLFdBQVcsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFFN0IsNERBQTREO1lBQzVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsQ0FBQztnQkFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3REO1lBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ2xEO1FBRUQsS0FBSyxVQUFVLENBQUMsQ0FBQztZQUNiLE1BQU0sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQztTQUMxRTtRQUVELEtBQUssZUFBZSxDQUFDLENBQUM7WUFDbEIsTUFBTSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFFekMsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO2dCQUNwQixPQUFPO29CQUNILEdBQUcsRUFBRTtvQkFDTCxVQUFVLEVBQUUsYUFBYTtvQkFDekIsYUFBYSxFQUFFLElBQUk7aUJBQ3RCLENBQUM7YUFDTDtpQkFBTSxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7Z0JBQzlCLE9BQU87b0JBQ0gsR0FBRyxFQUFFO29CQUNMLFVBQVUsRUFBRSxJQUFJO29CQUNoQixhQUFhLEVBQUUsVUFBVTtpQkFDNUIsQ0FBQzthQUNMO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUMxRTtTQUNKO1FBRUQsS0FBSyxjQUFjLENBQUMsQ0FBQztZQUNqQixNQUFNLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUN6QyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLE9BQU87b0JBQ0gsR0FBRyxFQUFFO29CQUNMLFVBQVUsRUFBRSxhQUFhO29CQUN6QixhQUFhLEVBQUUsYUFBYTtpQkFDL0IsQ0FBQzthQUNMO2lCQUFNLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDOUIsT0FBTztvQkFDSCxHQUFHLEVBQUU7b0JBQ0wsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLGFBQWEsRUFBRSxVQUFVO2lCQUM1QixDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDO2FBQzFFO1NBQ0o7S0FDSjtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBNEI7SUFDbkQsc0JBQXNCO0lBQ3RCLE9BQU87Q0FDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXROb2RlIH0gZnJvbSAnLi9ub2RlJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgVmlld3BvcnQgfSBmcm9tICcuL3ZpZXdwb3J0JztcblxuZXhwb3J0IHR5cGUgSW5zZXJ0Tm9kZU9wZXJhdGlvbiA9IHtcbiAgICB0eXBlOiAnaW5zZXJ0X25vZGUnO1xuICAgIHBhdGg6IFBhdGg7XG4gICAgbm9kZTogUGxhaXROb2RlO1xufTtcblxuZXhwb3J0IHR5cGUgUmVtb3ZlTm9kZU9wZXJhdGlvbiA9IHtcbiAgICB0eXBlOiAncmVtb3ZlX25vZGUnO1xuICAgIHBhdGg6IFBhdGg7XG4gICAgbm9kZTogUGxhaXROb2RlO1xufTtcblxuZXhwb3J0IHR5cGUgTW92ZU5vZGVPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ21vdmVfbm9kZSc7XG4gICAgcGF0aDogUGF0aDtcbiAgICBuZXdQYXRoOiBQYXRoO1xufTtcblxuZXhwb3J0IHR5cGUgU2V0Vmlld3BvcnRPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3NldF92aWV3cG9ydCc7XG4gICAgcHJvcGVydGllczogUGFydGlhbDxWaWV3cG9ydD47XG4gICAgbmV3UHJvcGVydGllczogUGFydGlhbDxWaWV3cG9ydD47XG59O1xuXG5leHBvcnQgdHlwZSBTZXRTZWxlY3Rpb25PcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3NldF9zZWxlY3Rpb24nO1xuICAgIHByb3BlcnRpZXM6IFNlbGVjdGlvbiB8IG51bGw7XG4gICAgbmV3UHJvcGVydGllczogU2VsZWN0aW9uIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFNldE5vZGVPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3NldF9ub2RlJztcbiAgICBwYXRoOiBQYXRoO1xuICAgIHByb3BlcnRpZXM6IFBhcnRpYWw8UGxhaXROb2RlPjtcbiAgICBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0Tm9kZT47XG59O1xuXG5leHBvcnQgdHlwZSBQbGFpdE9wZXJhdGlvbiA9XG4gICAgfCBJbnNlcnROb2RlT3BlcmF0aW9uXG4gICAgfCBTZXRWaWV3cG9ydE9wZXJhdGlvblxuICAgIHwgU2V0U2VsZWN0aW9uT3BlcmF0aW9uXG4gICAgfCBTZXROb2RlT3BlcmF0aW9uXG4gICAgfCBSZW1vdmVOb2RlT3BlcmF0aW9uXG4gICAgfCBNb3ZlTm9kZU9wZXJhdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdE9wZXJhdGlvbkludGVyZmFjZSB7XG4gICAgaW52ZXJzZTogKG9wOiBQbGFpdE9wZXJhdGlvbikgPT4gUGxhaXRPcGVyYXRpb247XG4gICAgaXNTZXRWaWV3cG9ydE9wZXJhdGlvbjogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBpc1NldFZpZXdwb3J0T3BlcmF0aW9uID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXRWaWV3cG9ydE9wZXJhdGlvbiA9PiB7XG4gICAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICdzZXRfdmlld3BvcnQnO1xufTtcblxuZXhwb3J0IGNvbnN0IGludmVyc2UgPSAob3A6IFBsYWl0T3BlcmF0aW9uKTogUGxhaXRPcGVyYXRpb24gPT4ge1xuICAgIHN3aXRjaCAob3AudHlwZSkge1xuICAgICAgICBjYXNlICdpbnNlcnRfbm9kZSc6IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLm9wLCB0eXBlOiAncmVtb3ZlX25vZGUnIH07XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdyZW1vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLm9wLCB0eXBlOiAnaW5zZXJ0X25vZGUnIH07XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdtb3ZlX25vZGUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IG5ld1BhdGgsIHBhdGggfSA9IG9wO1xuXG4gICAgICAgICAgICAvLyBQRVJGOiBpbiB0aGlzIGNhc2UgdGhlIG1vdmUgb3BlcmF0aW9uIGlzIGEgbm8tb3AgYW55d2F5cy5cbiAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhuZXdQYXRoLCBwYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFBhdGguaXNTaWJsaW5nKHBhdGgsIG5ld1BhdGgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW52ZXJzZVBhdGggPSBQYXRoLnRyYW5zZm9ybShwYXRoLCBvcCkhO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLm9wLCBwYXRoOiBpbnZlcnNlUGF0aCwgbmV3UGF0aDogcGF0aCB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5vcCwgcGF0aDogbmV3UGF0aCwgbmV3UGF0aDogcGF0aCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnc2V0X25vZGUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMsIG5ld1Byb3BlcnRpZXMgfSA9IG9wO1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3AsIHByb3BlcnRpZXM6IG5ld1Byb3BlcnRpZXMsIG5ld1Byb3BlcnRpZXM6IHByb3BlcnRpZXMgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3NldF9zZWxlY3Rpb24nOiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMsIG5ld1Byb3BlcnRpZXMgfSA9IG9wO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4ub3AsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IG5ld1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXM6IG51bGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdQcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLm9wLCBwcm9wZXJ0aWVzOiBuZXdQcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdzZXRfdmlld3BvcnQnOiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMsIG5ld1Byb3BlcnRpZXMgfSA9IG9wO1xuICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBuZXdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzOiBuZXdQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4ub3AsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXM6IHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5vcCwgcHJvcGVydGllczogbmV3UHJvcGVydGllcywgbmV3UHJvcGVydGllczogcHJvcGVydGllcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFBsYWl0T3BlcmF0aW9uOiBQbGFpdE9wZXJhdGlvbkludGVyZmFjZSA9IHtcbiAgICBpc1NldFZpZXdwb3J0T3BlcmF0aW9uLFxuICAgIGludmVyc2Vcbn07XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFzRDlCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBVSxFQUFpQyxFQUFFO0lBQ2hGLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBa0IsRUFBa0IsRUFBRTtJQUMxRCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFDYixLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7U0FDekM7UUFFRCxLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7U0FDekM7UUFFRCxLQUFLLFdBQVcsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFFN0IsNERBQTREO1lBQzVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFFRCwwRkFBMEY7WUFDMUYsNENBQTRDO1lBQzVDLHVDQUF1QztZQUN2QyxzREFBc0Q7WUFDdEQsSUFBSTtZQUVKLG9FQUFvRTtZQUNwRSxzRUFBc0U7WUFDdEUseUVBQXlFO1lBQ3pFLDJFQUEyRTtZQUMzRSxtRUFBbUU7WUFDbkUsZ0NBQWdDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBRSxDQUFDO1lBQzlDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBQztZQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUM7U0FDaEU7UUFFRCxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBQ2IsTUFBTSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDO1NBQzFFO1FBRUQsS0FBSyxlQUFlLENBQUMsQ0FBQztZQUNsQixNQUFNLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUV6QyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLE9BQU87b0JBQ0gsR0FBRyxFQUFFO29CQUNMLFVBQVUsRUFBRSxhQUFhO29CQUN6QixhQUFhLEVBQUUsSUFBSTtpQkFDdEIsQ0FBQzthQUNMO2lCQUFNLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDOUIsT0FBTztvQkFDSCxHQUFHLEVBQUU7b0JBQ0wsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGFBQWEsRUFBRSxVQUFVO2lCQUM1QixDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDO2FBQzFFO1NBQ0o7UUFFRCxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtnQkFDcEIsT0FBTztvQkFDSCxHQUFHLEVBQUU7b0JBQ0wsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLGFBQWEsRUFBRSxhQUFhO2lCQUMvQixDQUFDO2FBQ0w7aUJBQU0sSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUM5QixPQUFPO29CQUNILEdBQUcsRUFBRTtvQkFDTCxVQUFVLEVBQUUsVUFBVTtvQkFDdEIsYUFBYSxFQUFFLFVBQVU7aUJBQzVCLENBQUM7YUFDTDtpQkFBTTtnQkFDSCxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUM7YUFDMUU7U0FDSjtLQUNKO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUE0QjtJQUNuRCxzQkFBc0I7SUFDdEIsT0FBTztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdE5vZGUgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IHsgUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4vdmlld3BvcnQnO1xuXG5leHBvcnQgdHlwZSBJbnNlcnROb2RlT3BlcmF0aW9uID0ge1xuICAgIHR5cGU6ICdpbnNlcnRfbm9kZSc7XG4gICAgcGF0aDogUGF0aDtcbiAgICBub2RlOiBQbGFpdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBSZW1vdmVOb2RlT3BlcmF0aW9uID0ge1xuICAgIHR5cGU6ICdyZW1vdmVfbm9kZSc7XG4gICAgcGF0aDogUGF0aDtcbiAgICBub2RlOiBQbGFpdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBNb3ZlTm9kZU9wZXJhdGlvbiA9IHtcbiAgICB0eXBlOiAnbW92ZV9ub2RlJztcbiAgICBwYXRoOiBQYXRoO1xuICAgIG5ld1BhdGg6IFBhdGg7XG59O1xuXG5leHBvcnQgdHlwZSBTZXRWaWV3cG9ydE9wZXJhdGlvbiA9IHtcbiAgICB0eXBlOiAnc2V0X3ZpZXdwb3J0JztcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPFZpZXdwb3J0PjtcbiAgICBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPFZpZXdwb3J0Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFNldFNlbGVjdGlvbk9wZXJhdGlvbiA9IHtcbiAgICB0eXBlOiAnc2V0X3NlbGVjdGlvbic7XG4gICAgcHJvcGVydGllczogU2VsZWN0aW9uIHwgbnVsbDtcbiAgICBuZXdQcm9wZXJ0aWVzOiBTZWxlY3Rpb24gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgU2V0Tm9kZU9wZXJhdGlvbiA9IHtcbiAgICB0eXBlOiAnc2V0X25vZGUnO1xuICAgIHBhdGg6IFBhdGg7XG4gICAgcHJvcGVydGllczogUGFydGlhbDxQbGFpdE5vZGU+O1xuICAgIG5ld1Byb3BlcnRpZXM6IFBhcnRpYWw8UGxhaXROb2RlPjtcbn07XG5cbmV4cG9ydCB0eXBlIFBsYWl0T3BlcmF0aW9uID1cbiAgICB8IEluc2VydE5vZGVPcGVyYXRpb25cbiAgICB8IFNldFZpZXdwb3J0T3BlcmF0aW9uXG4gICAgfCBTZXRTZWxlY3Rpb25PcGVyYXRpb25cbiAgICB8IFNldE5vZGVPcGVyYXRpb25cbiAgICB8IFJlbW92ZU5vZGVPcGVyYXRpb25cbiAgICB8IE1vdmVOb2RlT3BlcmF0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0T3BlcmF0aW9uSW50ZXJmYWNlIHtcbiAgICBpbnZlcnNlOiAob3A6IFBsYWl0T3BlcmF0aW9uKSA9PiBQbGFpdE9wZXJhdGlvbjtcbiAgICBpc1NldFZpZXdwb3J0T3BlcmF0aW9uOiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGlzU2V0Vmlld3BvcnRPcGVyYXRpb24gPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIFNldFZpZXdwb3J0T3BlcmF0aW9uID0+IHtcbiAgICByZXR1cm4gdmFsdWUudHlwZSA9PT0gJ3NldF92aWV3cG9ydCc7XG59O1xuXG5leHBvcnQgY29uc3QgaW52ZXJzZSA9IChvcDogUGxhaXRPcGVyYXRpb24pOiBQbGFpdE9wZXJhdGlvbiA9PiB7XG4gICAgc3dpdGNoIChvcC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzoge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3AsIHR5cGU6ICdyZW1vdmVfbm9kZScgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3JlbW92ZV9ub2RlJzoge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3AsIHR5cGU6ICdpbnNlcnRfbm9kZScgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV3UGF0aCwgcGF0aCB9ID0gb3A7XG5cbiAgICAgICAgICAgIC8vIFBFUkY6IGluIHRoaXMgY2FzZSB0aGUgbW92ZSBvcGVyYXRpb24gaXMgYSBuby1vcCBhbnl3YXlzLlxuICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG5ld1BhdGgsIHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB3aGVuIG9wZXJhdGlvbiBwYXRoIGlzIFswLDBdIC0+IFswLDJdLCBzaG91bGQgZXhlYyBQYXRoLnRyYW5zZm9ybSB0byBnZXQgWzAsMV0gLT4gWzAsMF1cbiAgICAgICAgICAgIC8vIHNob3VkIG5vdCByZXR1cm4gWzAsMl0gLT4gWzAsMF0gI1dJSy04OTgxXG4gICAgICAgICAgICAvLyBpZiAoUGF0aC5pc1NpYmxpbmcocGF0aCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm4geyAuLi5vcCwgcGF0aDogbmV3UGF0aCwgbmV3UGF0aDogcGF0aCB9O1xuICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAvLyBJZiB0aGUgbW92ZSBkb2VzIG5vdCBoYXBwZW4gd2l0aGluIGEgc2luZ2xlIHBhcmVudCBpdCBpcyBwb3NzaWJsZVxuICAgICAgICAgICAgLy8gZm9yIHRoZSBtb3ZlIHRvIGltcGFjdCB0aGUgdHJ1ZSBwYXRoIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgbm9kZVxuICAgICAgICAgICAgLy8gd2FzIHJlbW92ZWQgZnJvbSBhbmQgd2hlcmUgaXQgd2FzIGluc2VydGVkLiBXZSBoYXZlIHRvIGFkanVzdCBmb3IgdGhpc1xuICAgICAgICAgICAgLy8gYW5kIGZpbmQgdGhlIG9yaWdpbmFsIHBhdGguIFdlIGNhbiBhY2NvbXBsaXNoIHRoaXMgKG9ubHkgaW4gbm9uLXNpYmxpbmcpXG4gICAgICAgICAgICAvLyBtb3ZlcyBieSBsb29raW5nIGF0IHRoZSBpbXBhY3Qgb2YgdGhlIG1vdmUgb3BlcmF0aW9uIG9uIHRoZSBub2RlXG4gICAgICAgICAgICAvLyBhZnRlciB0aGUgb3JpZ2luYWwgbW92ZSBwYXRoLlxuICAgICAgICAgICAgY29uc3QgaW52ZXJzZVBhdGggPSBQYXRoLnRyYW5zZm9ybShwYXRoLCBvcCkhO1xuICAgICAgICAgICAgY29uc3QgaW52ZXJzZU5ld1BhdGggPSBQYXRoLnRyYW5zZm9ybShQYXRoLm5leHQocGF0aCksIG9wKSE7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5vcCwgcGF0aDogaW52ZXJzZVBhdGgsIG5ld1BhdGg6IGludmVyc2VOZXdQYXRoIH07XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdzZXRfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgbmV3UHJvcGVydGllcyB9ID0gb3A7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5vcCwgcHJvcGVydGllczogbmV3UHJvcGVydGllcywgbmV3UHJvcGVydGllczogcHJvcGVydGllcyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnc2V0X3NlbGVjdGlvbic6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgbmV3UHJvcGVydGllcyB9ID0gb3A7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogbmV3UHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogbnVsbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1Byb3BlcnRpZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3AsIHByb3BlcnRpZXM6IG5ld1Byb3BlcnRpZXMsIG5ld1Byb3BlcnRpZXM6IHByb3BlcnRpZXMgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3NldF92aWV3cG9ydCc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgbmV3UHJvcGVydGllcyB9ID0gb3A7XG4gICAgICAgICAgICBpZiAocHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4ub3AsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IG5ld1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXM6IG5ld1Byb3BlcnRpZXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdQcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLm9wLCBwcm9wZXJ0aWVzOiBuZXdQcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgUGxhaXRPcGVyYXRpb246IFBsYWl0T3BlcmF0aW9uSW50ZXJmYWNlID0ge1xuICAgIGlzU2V0Vmlld3BvcnRPcGVyYXRpb24sXG4gICAgaW52ZXJzZVxufTtcbiJdfQ==
@@ -132,8 +132,8 @@ export const Path = {
132
132
  break;
133
133
  }
134
134
  }
135
- return null;
135
+ return p;
136
136
  });
137
137
  }
138
138
  };
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9pbnRlcmZhY2VzL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sT0FBTyxDQUFDO0FBSzVCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRztJQUNoQixNQUFNLENBQUMsSUFBVTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsSUFBSSxJQUFJLENBQUMsQ0FBQztTQUM3RTtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLElBQUksa0NBQWtDLENBQUMsQ0FBQztTQUN2RztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRDs7T0FFRztJQUVILFVBQVUsQ0FBQyxJQUFVLEVBQUUsT0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsSUFBVSxFQUFFLE9BQWE7UUFDN0IsTUFBTSxHQUFHLEdB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QyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMxQjt5QkFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUNyQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQzFCO3dCQUVELENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDekI7b0JBRUQsTUFBTTtpQkFDVDthQUNKO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9kdWNlIGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IFBsYWl0T3BlcmF0aW9uIH0gZnJvbSAnLi9vcGVyYXRpb24nO1xuXG5leHBvcnQgdHlwZSBQYXRoID0gbnVtYmVyW107XG5cbmV4cG9ydCBjb25zdCBQYXRoID0ge1xuICAgIHBhcmVudChwYXRoOiBQYXRoKTogUGF0aCB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBwYXJlbnQgcGF0aCBvZiB0aGUgcm9vdCBwYXRoIFske3BhdGh9XS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICB9LFxuICAgIG5leHQocGF0aDogUGF0aCk6IFBhdGgge1xuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgbmV4dCBwYXRoIG9mIGEgcm9vdCBwYXRoIFske3BhdGh9XSwgYmVjYXVzZSBpdCBoYXMgbm8gbmV4dCBpbmRleC5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gcGF0aC5zbGljZSgwLCAtMSkuY29uY2F0KGxhc3QgKyAxKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBpcyBhbiBhbmNlc3RvciBvZiBhbm90aGVyLlxuICAgICAqL1xuXG4gICAgaXNBbmNlc3RvcihwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA8IGFub3RoZXIubGVuZ3RoICYmIFBhdGguY29tcGFyZShwYXRoLCBhbm90aGVyKSA9PT0gMDtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENvbXBhcmUgYSBwYXRoIHRvIGFub3RoZXIsIHJldHVybmluZyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF0aFxuICAgICAqIHdhcyBiZWZvcmUsIGF0LCBvciBhZnRlciB0aGUgb3RoZXIuXG4gICAgICpcbiAgICAgKiBOb3RlOiBUd28gcGF0aHMgb2YgdW5lcXVhbCBsZW5ndGggY2FuIHN0aWxsIHJlY2VpdmUgYSBgMGAgcmVzdWx0IGlmIG9uZSBpc1xuICAgICAqIGRpcmVjdGx5IGFib3ZlIG9yIGJlbG93IHRoZSBvdGhlci4gSWYgeW91IHdhbnQgZXhhY3QgbWF0Y2hpbmcsIHVzZVxuICAgICAqIFtbUGF0aC5lcXVhbHNdXSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGNvbXBhcmUocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IC0xIHwgMCB8IDEge1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihwYXRoLmxlbmd0aCwgYW5vdGhlci5sZW5ndGgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChwYXRoW2ldIDwgYW5vdGhlcltpXSkgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKHBhdGhbaV0gPiBhbm90aGVyW2ldKSByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIHBhdGggaXMgZXhhY3RseSBlcXVhbCB0byBhbm90aGVyLlxuICAgICAqL1xuXG4gICAgZXF1YWxzKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoID09PSBhbm90aGVyLmxlbmd0aCAmJiBwYXRoLmV2ZXJ5KChuLCBpKSA9PiBuID09PSBhbm90aGVyW2ldKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBlbmRzIGJlZm9yZSBvbmUgb2YgdGhlIGluZGV4ZXMgaW4gYW5vdGhlci5cbiAgICAgKi9cblxuICAgIGVuZHNCZWZvcmUocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpID0gcGF0aC5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBhcyA9IHBhdGguc2xpY2UoMCwgaSk7XG4gICAgICAgIGNvbnN0IGJzID0gYW5vdGhlci5zbGljZSgwLCBpKTtcbiAgICAgICAgY29uc3QgYXYgPSBwYXRoW2ldO1xuICAgICAgICBjb25zdCBidiA9IGFub3RoZXJbaV07XG4gICAgICAgIHJldHVybiBQYXRoLmVxdWFscyhhcywgYnMpICYmIGF2IDwgYnY7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIHBhdGggaXMgYSBzaWJsaW5nIG9mIGFub3RoZXIuXG4gICAgICovXG4gICAgaXNTaWJsaW5nKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoICE9PSBhbm90aGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXMgPSBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29uc3QgYnMgPSBhbm90aGVyLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29uc3QgYWwgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGJsID0gYW5vdGhlclthbm90aGVyLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gYWwgIT09IGJsICYmIFBhdGguZXF1YWxzKGFzLCBicyk7XG4gICAgfSxcbiAgICB0cmFuc2Zvcm0ocGF0aDogUGF0aCB8IG51bGwsIG9wZXJhdGlvbjogUGxhaXRPcGVyYXRpb24pOiBQYXRoIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBwcm9kdWNlKHBhdGgsIHAgPT4ge1xuICAgICAgICAgICAgLy8gUEVSRjogRXhpdCBlYXJseSBpZiB0aGUgb3BlcmF0aW9uIGlzIGd1YXJhbnRlZWQgbm90IHRvIGhhdmUgYW4gZWZmZWN0LlxuICAgICAgICAgICAgaWYgKCFwYXRoIHx8IHBhdGg/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHAgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChvcGVyYXRpb24udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGg6IG9wIH0gPSBvcGVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9wLCBwKSB8fCBQYXRoLmVuZHNCZWZvcmUob3AsIHApIHx8IFBhdGguaXNBbmNlc3RvcihvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9ub2RlJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGg6IG9wIH0gPSBvcGVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9wLCBwKSB8fCBQYXRoLmlzQW5jZXN0b3Iob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlX25vZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aDogb3AsIG5ld1BhdGg6IG9ucCB9ID0gb3BlcmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvbGQgYW5kIG5ldyBwYXRoIGFyZSB0aGUgc2FtZSwgaXQncyBhIG5vLW9wLlxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob3AsIG9ucCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmlzQW5jZXN0b3Iob3AsIHApIHx8IFBhdGguZXF1YWxzKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29weSA9IG9ucC5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AubGVuZ3RoIDw9IG9ucC5sZW5ndGggaXMgZGlmZmVyZW50IGZvciBzbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZSBkcmFnIGZyb20gWzAsIDBdIHRvIFswLCAzXSBpc3N1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgb25wKSAmJiBvcC5sZW5ndGggPD0gb25wLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHkuY29uY2F0KHAuc2xpY2Uob3AubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5pc1NpYmxpbmcob3AsIG9ucCkgJiYgKFBhdGguaXNBbmNlc3RvcihvbnAsIHApIHx8IFBhdGguZXF1YWxzKG9ucCwgcCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguZW5kc0JlZm9yZShvbnAsIHApIHx8IFBhdGguZXF1YWxzKG9ucCwgcCkgfHwgUGF0aC5pc0FuY2VzdG9yKG9ucCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwW29ucC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhvbnAsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvbnAubGVuZ3RoIC0gMV0gKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9pbnRlcmZhY2VzL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sT0FBTyxDQUFDO0FBSzVCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRztJQUNoQixNQUFNLENBQUMsSUFBVTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsSUFBSSxJQUFJLENBQUMsQ0FBQztTQUM3RTtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLElBQUksa0NBQWtDLENBQUMsQ0FBQztTQUN2RztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRDs7T0FFRztJQUVILFVBQVUsQ0FBQyxJQUFVLEVBQUUsT0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsSUFBVSxFQUFFLE9BQWE7UUFDN0IsTUFBTSxHQUFHLEdB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QyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMxQjt5QkFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUNyQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQzFCO3dCQUVELENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDekI7b0JBRUQsTUFBTTtpQkFDVDthQUNKO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb2R1Y2UgZnJvbSAnaW1tZXInO1xuaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5cbmV4cG9ydCB0eXBlIFBhdGggPSBudW1iZXJbXTtcblxuZXhwb3J0IGNvbnN0IFBhdGggPSB7XG4gICAgcGFyZW50KHBhdGg6IFBhdGgpOiBQYXRoIHtcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIHBhcmVudCBwYXRoIG9mIHRoZSByb290IHBhdGggWyR7cGF0aH1dLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMCwgLTEpO1xuICAgIH0sXG4gICAgbmV4dChwYXRoOiBQYXRoKTogUGF0aCB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBuZXh0IHBhdGggb2YgYSByb290IHBhdGggWyR7cGF0aH1dLCBiZWNhdXNlIGl0IGhhcyBubyBuZXh0IGluZGV4LmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3QgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKDAsIC0xKS5jb25jYXQobGFzdCArIDEpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBwYXRoIGlzIGFuIGFuY2VzdG9yIG9mIGFub3RoZXIuXG4gICAgICovXG5cbiAgICBpc0FuY2VzdG9yKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgYW5vdGhlci5sZW5ndGggJiYgUGF0aC5jb21wYXJlKHBhdGgsIGFub3RoZXIpID09PSAwO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ29tcGFyZSBhIHBhdGggdG8gYW5vdGhlciwgcmV0dXJuaW5nIGFuIGludGVnZXIgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYXRoXG4gICAgICogd2FzIGJlZm9yZSwgYXQsIG9yIGFmdGVyIHRoZSBvdGhlci5cbiAgICAgKlxuICAgICAqIE5vdGU6IFR3byBwYXRocyBvZiB1bmVxdWFsIGxlbmd0aCBjYW4gc3RpbGwgcmVjZWl2ZSBhIGAwYCByZXN1bHQgaWYgb25lIGlzXG4gICAgICogZGlyZWN0bHkgYWJvdmUgb3IgYmVsb3cgdGhlIG90aGVyLiBJZiB5b3Ugd2FudCBleGFjdCBtYXRjaGluZywgdXNlXG4gICAgICogW1tQYXRoLmVxdWFsc11dIGluc3RlYWQuXG4gICAgICovXG4gICAgY29tcGFyZShwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogLTEgfCAwIHwgMSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHBhdGgubGVuZ3RoLCBhbm90aGVyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgICAgICAgaWYgKHBhdGhbaV0gPCBhbm90aGVyW2ldKSByZXR1cm4gLTE7XG4gICAgICAgICAgICBpZiAocGF0aFtpXSA+IGFub3RoZXJbaV0pIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBpcyBleGFjdGx5IGVxdWFsIHRvIGFub3RoZXIuXG4gICAgICovXG5cbiAgICBlcXVhbHMocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGF0aC5sZW5ndGggPT09IGFub3RoZXIubGVuZ3RoICYmIHBhdGguZXZlcnkoKG4sIGkpID0+IG4gPT09IGFub3RoZXJbaV0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBwYXRoIGVuZHMgYmVmb3JlIG9uZSBvZiB0aGUgaW5kZXhlcyBpbiBhbm90aGVyLlxuICAgICAqL1xuXG4gICAgZW5kc0JlZm9yZShwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGkgPSBwYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGFzID0gcGF0aC5zbGljZSgwLCBpKTtcbiAgICAgICAgY29uc3QgYnMgPSBhbm90aGVyLnNsaWNlKDAsIGkpO1xuICAgICAgICBjb25zdCBhdiA9IHBhdGhbaV07XG4gICAgICAgIGNvbnN0IGJ2ID0gYW5vdGhlcltpXTtcbiAgICAgICAgcmV0dXJuIFBhdGguZXF1YWxzKGFzLCBicykgJiYgYXYgPCBidjtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBpcyBhIHNpYmxpbmcgb2YgYW5vdGhlci5cbiAgICAgKi9cbiAgICBpc1NpYmxpbmcocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAocGF0aC5sZW5ndGggIT09IGFub3RoZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcyA9IHBhdGguc2xpY2UoMCwgLTEpO1xuICAgICAgICBjb25zdCBicyA9IGFub3RoZXIuc2xpY2UoMCwgLTEpO1xuICAgICAgICBjb25zdCBhbCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYmwgPSBhbm90aGVyW2Fub3RoZXIubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBhbCAhPT0gYmwgJiYgUGF0aC5lcXVhbHMoYXMsIGJzKTtcbiAgICB9LFxuICAgIHRyYW5zZm9ybShwYXRoOiBQYXRoIHwgbnVsbCwgb3BlcmF0aW9uOiBQbGFpdE9wZXJhdGlvbik6IFBhdGggfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHByb2R1Y2UocGF0aCwgcCA9PiB7XG4gICAgICAgICAgICAvLyBQRVJGOiBFeGl0IGVhcmx5IGlmIHRoZSBvcGVyYXRpb24gaXMgZ3VhcmFudGVlZCBub3QgdG8gaGF2ZSBhbiBlZmZlY3QuXG4gICAgICAgICAgICBpZiAoIXBhdGggfHwgcGF0aD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5zZXJ0X25vZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aDogb3AgfSA9IG9wZXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob3AsIHApIHx8IFBhdGguZW5kc0JlZm9yZShvcCwgcCkgfHwgUGF0aC5pc0FuY2VzdG9yKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAncmVtb3ZlX25vZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aDogb3AgfSA9IG9wZXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob3AsIHApIHx8IFBhdGguaXNBbmNlc3RvcihvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXRoOiBvcCwgbmV3UGF0aDogb25wIH0gPSBvcGVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9sZCBhbmQgbmV3IHBhdGggYXJlIHRoZSBzYW1lLCBpdCdzIGEgbm8tb3AuXG4gICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhvcCwgb25wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguaXNBbmNlc3RvcihvcCwgcCkgfHwgUGF0aC5lcXVhbHMob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3B5ID0gb25wLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvcC5sZW5ndGggPD0gb25wLmxlbmd0aCBpcyBkaWZmZXJlbnQgZm9yIHNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNvbHZlIGRyYWcgZnJvbSBbMCwgMF0gdG8gWzAsIDNdIGlzc3VlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBvbnApICYmIG9wLmxlbmd0aCA8PSBvbnAubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29weS5jb25jYXQocC5zbGljZShvcC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoLmlzU2libGluZyhvcCwgb25wKSAmJiAoUGF0aC5pc0FuY2VzdG9yKG9ucCwgcCkgfHwgUGF0aC5lcXVhbHMob25wLCBwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5lbmRzQmVmb3JlKG9ucCwgcCkgfHwgUGF0aC5lcXVhbHMob25wLCBwKSB8fCBQYXRoLmlzQW5jZXN0b3Iob25wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb25wLmxlbmd0aCAtIDFdICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9ucCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29ucC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==
@@ -1,10 +1,7 @@
1
1
  import { isNullOrUndefined } from '../utils/helper';
2
2
  export const Viewport = {
3
3
  isViewport: (value) => {
4
- return (!isNullOrUndefined(value.offsetXRatio) &&
5
- !isNullOrUndefined(value.offsetYRatio) &&
6
- !isNullOrUndefined(value.zoom) &&
7
- !isNullOrUndefined(value.viewBackgroundColor));
4
+ return !isNullOrUndefined(value.zoom) && !isNullOrUndefined(value.viewBackgroundColor) && !isNullOrUndefined(value.canvasPoint);
8
5
  }
9
6
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWlCcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFzQjtJQUN2QyxVQUFVLEVBQUUsQ0FBQyxLQUFVLEVBQXFCLEVBQUU7UUFDMUMsT0FBTyxDQUNILENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN0QyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDdEMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQ2hELENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaGVscGVyJztcbmltcG9ydCB7IEV4dGVuZGVkVHlwZSB9IGZyb20gJy4vY3VzdG9tLXR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlVmlld3BvcnQge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBvZmZzZXRYUmF0aW86IG51bWJlcjtcbiAgICBvZmZzZXRZUmF0aW86IG51bWJlcjtcbiAgICB6b29tOiBudW1iZXI7XG4gICAgdmlld0JhY2tncm91bmRDb2xvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBWaWV3cG9ydCA9IEV4dGVuZGVkVHlwZTwnVmlld3BvcnQnLCBCYXNlVmlld3BvcnQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0SW50ZXJmYWNlIHtcbiAgICBpc1ZpZXdwb3J0OiAodmFsdWU6IGFueSkgPT4gdmFsdWUgaXMgVmlld3BvcnQ7XG59XG5cbmV4cG9ydCBjb25zdCBWaWV3cG9ydDogVmlld3BvcnRJbnRlcmZhY2UgPSB7XG4gICAgaXNWaWV3cG9ydDogKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBWaWV3cG9ydCA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQodmFsdWUub2Zmc2V0WFJhdGlvKSAmJlxuICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLm9mZnNldFlSYXRpbykgJiZcbiAgICAgICAgICAgICFpc051bGxPclVuZGVmaW5lZCh2YWx1ZS56b29tKSAmJlxuICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLnZpZXdCYWNrZ3JvdW5kQ29sb3IpXG4gICAgICAgICk7XG4gICAgfVxufTtcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWdCcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFzQjtJQUN2QyxVQUFVLEVBQUUsQ0FBQyxLQUFVLEVBQXFCLEVBQUU7UUFDMUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuLi91dGlscy9oZWxwZXInO1xuaW1wb3J0IHsgRXh0ZW5kZWRUeXBlIH0gZnJvbSAnLi9jdXN0b20tdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VWaWV3cG9ydCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIHpvb206IG51bWJlcjtcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gICAgY2FudmFzUG9pbnQ6IG51bWJlcltdO1xufVxuXG5leHBvcnQgdHlwZSBWaWV3cG9ydCA9IEV4dGVuZGVkVHlwZTwnVmlld3BvcnQnLCBCYXNlVmlld3BvcnQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0SW50ZXJmYWNlIHtcbiAgICBpc1ZpZXdwb3J0OiAodmFsdWU6IGFueSkgPT4gdmFsdWUgaXMgVmlld3BvcnQ7XG59XG5cbmV4cG9ydCBjb25zdCBWaWV3cG9ydDogVmlld3BvcnRJbnRlcmZhY2UgPSB7XG4gICAgaXNWaWV3cG9ydDogKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBWaWV3cG9ydCA9PiB7XG4gICAgICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuem9vbSkgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLnZpZXdCYWNrZ3JvdW5kQ29sb3IpICYmICFpc051bGxPclVuZGVmaW5lZCh2YWx1ZS5jYW52YXNQb2ludCk7XG4gICAgfVxufTtcbiJdfQ==
@@ -5,10 +5,9 @@ export function createBoard(host, children, options) {
5
5
  const board = {
6
6
  host,
7
7
  viewport: {
8
- offsetXRatio: 0.5,
9
- offsetYRatio: 0.5,
10
8
  zoom: 1,
11
- viewBackgroundColor: '#000'
9
+ viewBackgroundColor: '#000',
10
+ canvasPoint: []
12
11
  },
13
12
  children,
14
13
  operations: [],
@@ -53,4 +52,4 @@ export function createBoard(host, children, options) {
53
52
  };
54
53
  return board;
55
54
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3BsdWdpbnMvY3JlYXRlLWJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBZ0IsRUFBRSxRQUF3QixFQUFFLE9BQTBCO0lBQzlGLE1BQU0sS0FBSyxHQUFlO1FBQ3RCLElBQUk7UUFDSixRQUFRLEVBQUU7WUFDTixZQUFZLEVBQUUsR0FBRztZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixJQUFJLEVBQUUsQ0FBQztZQUNQLG1CQUFtQixFQUFFLE1BQU07U0FDOUI7UUFDRCxRQUFRO1FBQ1IsVUFBVSxFQUFFLEVBQUU7UUFDZCxPQUFPLEVBQUU7WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1o7UUFDRCxTQUFTLEVBQUUsSUFBSTtRQUNmLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1FBQy9CLE9BQU8sRUFBRSxPQUFPLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUs7WUFDZixlQUFlLEVBQUUsS0FBSztZQUN0QixhQUFhLEVBQUUsS0FBSztTQUN2QjtRQUNELElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFDZCxLQUFLLEVBQUUsQ0FBQyxTQUF5QixFQUFFLEVBQUU7WUFDakMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFakMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUxQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDeEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzNCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFDbEIsU0FBUyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUNwQyxhQUFhLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ3hDLFNBQVMsRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDcEMsT0FBTyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUNyQyxLQUFLLEVBQUUsQ0FBQyxLQUFvQixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ25DLFFBQVEsRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDbkMsV0FBVyxFQUFFLENBQUMsSUFBeUIsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUM5QyxjQUFjLEVBQUUsQ0FBQyxJQUF5QixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ2pELGNBQWMsRUFBRSxDQUFDLElBQXlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDakQsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNqRCxhQUFhLEVBQUUsQ0FBQyxPQUE0QixFQUFFLE9BQXNCLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDM0UsY0FBYyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7S0FDM0IsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgQmFzZUN1cnNvclN0YXR1cyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3Vyc29yJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnRDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50LWNvbnRleHQnO1xuaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBGTFVTSElORyB9IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb2FyZChob3N0OiBTVkdFbGVtZW50LCBjaGlsZHJlbjogUGxhaXRFbGVtZW50W10sIG9wdGlvbnM6IFBsYWl0Qm9hcmRPcHRpb25zKTogUGxhaXRCb2FyZCB7XG4gICAgY29uc3QgYm9hcmQ6IFBsYWl0Qm9hcmQgPSB7XG4gICAgICAgIGhvc3QsXG4gICAgICAgIHZpZXdwb3J0OiB7XG4gICAgICAgICAgICBvZmZzZXRYUmF0aW86IDAuNSxcbiAgICAgICAgICAgIG9mZnNldFlSYXRpbzogMC41LFxuICAgICAgICAgICAgem9vbTogMSxcbiAgICAgICAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6ICcjMDAwJ1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgb3BlcmF0aW9uczogW10sXG4gICAgICAgIGhpc3Rvcnk6IHtcbiAgICAgICAgICAgIHJlZG9zOiBbXSxcbiAgICAgICAgICAgIHVuZG9zOiBbXVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb246IG51bGwsXG4gICAgICAgIGN1cnNvcjogQmFzZUN1cnNvclN0YXR1cy5zZWxlY3QsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMgfHwge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dDbGVhckJvYXJkOiBmYWxzZSxcbiAgICAgICAgICAgIGhpZGVTY3JvbGxiYXI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHVuZG86ICgpID0+IHt9LFxuICAgICAgICByZWRvOiAoKSA9PiB7fSxcbiAgICAgICAgYXBwbHk6IChvcGVyYXRpb246IFBsYWl0T3BlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICBib2FyZC5vcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKTtcblxuICAgICAgICAgICAgVHJhbnNmb3Jtcy50cmFuc2Zvcm0oYm9hcmQsIG9wZXJhdGlvbik7XG5cbiAgICAgICAgICAgIGlmICghRkxVU0hJTkcuZ2V0KGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIEZMVVNISU5HLnNldChib2FyZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRkxVU0hJTkcuc2V0KGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGJvYXJkLm9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJvYXJkLm9wZXJhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25DaGFuZ2U6ICgpID0+IHt9LFxuICAgICAgICBtb3VzZWRvd246IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIGdsb2JhbE1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIG1vdXNlbW92ZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAga2V5ZG93bjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7fSxcbiAgICAgICAga2V5dXA6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge30sXG4gICAgICAgIGRibGNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHt9LFxuICAgICAgICBzZXRGcmFnbWVudDogKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHt9LFxuICAgICAgICBpbnNlcnRGcmFnbWVudDogKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHt9LFxuICAgICAgICBkZWxldGVGcmFnbWVudDogKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHt9LFxuICAgICAgICBkcmF3RWxlbWVudDogKGNvbnRleHQ6IFBsYWl0RWxlbWVudENvbnRleHQpID0+IFtdLFxuICAgICAgICByZWRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRFbGVtZW50Q29udGV4dCwgY2hhbmdlczogU2ltcGxlQ2hhbmdlcykgPT4gW10sXG4gICAgICAgIGRlc3Ryb3lFbGVtZW50OiAoKSA9PiB7fVxuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3BsdWdpbnMvY3JlYXRlLWJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBZ0IsRUFBRSxRQUF3QixFQUFFLE9BQTBCO0lBQzlGLE1BQU0sS0FBSyxHQUFlO1FBQ3RCLElBQUk7UUFDSixRQUFRLEVBQUU7WUFDTixJQUFJLEVBQUUsQ0FBQztZQUNQLG1CQUFtQixFQUFFLE1BQU07WUFDM0IsV0FBVyxFQUFFLEVBQUU7U0FDbEI7UUFDRCxRQUFRO1FBQ1IsVUFBVSxFQUFFLEVBQUU7UUFDZCxPQUFPLEVBQUU7WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1o7UUFDRCxTQUFTLEVBQUUsSUFBSTtRQUNmLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1FBQy9CLE9BQU8sRUFBRSxPQUFPLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUs7WUFDZixlQUFlLEVBQUUsS0FBSztZQUN0QixhQUFhLEVBQUUsS0FBSztTQUN2QjtRQUNELElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFDZCxLQUFLLEVBQUUsQ0FBQyxTQUF5QixFQUFFLEVBQUU7WUFDakMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFakMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUxQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDeEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzNCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFDbEIsU0FBUyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUNwQyxhQUFhLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ3hDLFNBQVMsRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDcEMsT0FBTyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUNyQyxLQUFLLEVBQUUsQ0FBQyxLQUFvQixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ25DLFFBQVEsRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDbkMsV0FBVyxFQUFFLENBQUMsSUFBeUIsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUM5QyxjQUFjLEVBQUUsQ0FBQyxJQUF5QixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ2pELGNBQWMsRUFBRSxDQUFDLElBQXlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDakQsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNqRCxhQUFhLEVBQUUsQ0FBQyxPQUE0QixFQUFFLE9BQXNCLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDM0UsY0FBYyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7S0FDM0IsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgQmFzZUN1cnNvclN0YXR1cyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3Vyc29yJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnRDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50LWNvbnRleHQnO1xuaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBGTFVTSElORyB9IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb2FyZChob3N0OiBTVkdFbGVtZW50LCBjaGlsZHJlbjogUGxhaXRFbGVtZW50W10sIG9wdGlvbnM6IFBsYWl0Qm9hcmRPcHRpb25zKTogUGxhaXRCb2FyZCB7XG4gICAgY29uc3QgYm9hcmQ6IFBsYWl0Qm9hcmQgPSB7XG4gICAgICAgIGhvc3QsXG4gICAgICAgIHZpZXdwb3J0OiB7XG4gICAgICAgICAgICB6b29tOiAxLFxuICAgICAgICAgICAgdmlld0JhY2tncm91bmRDb2xvcjogJyMwMDAnLFxuICAgICAgICAgICAgY2FudmFzUG9pbnQ6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBvcGVyYXRpb25zOiBbXSxcbiAgICAgICAgaGlzdG9yeToge1xuICAgICAgICAgICAgcmVkb3M6IFtdLFxuICAgICAgICAgICAgdW5kb3M6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbjogbnVsbCxcbiAgICAgICAgY3Vyc29yOiBCYXNlQ3Vyc29yU3RhdHVzLnNlbGVjdCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyB8fCB7XG4gICAgICAgICAgICByZWFkb25seTogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd0NsZWFyQm9hcmQ6IGZhbHNlLFxuICAgICAgICAgICAgaGlkZVNjcm9sbGJhcjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdW5kbzogKCkgPT4ge30sXG4gICAgICAgIHJlZG86ICgpID0+IHt9LFxuICAgICAgICBhcHBseTogKG9wZXJhdGlvbjogUGxhaXRPcGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgIGJvYXJkLm9wZXJhdGlvbnMucHVzaChvcGVyYXRpb24pO1xuXG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnRyYW5zZm9ybShib2FyZCwgb3BlcmF0aW9uKTtcblxuICAgICAgICAgICAgaWYgKCFGTFVTSElORy5nZXQoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgRkxVU0hJTkcuc2V0KGJvYXJkLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBGTFVTSElORy5zZXQoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQub25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQub3BlcmF0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gICAgICAgIG1vdXNlZG93bjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAgZ2xvYmFsTW91c2V1cDogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAgbW91c2Vtb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHt9LFxuICAgICAgICBrZXlkb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHt9LFxuICAgICAgICBrZXl1cDogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7fSxcbiAgICAgICAgZGJsY2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIHNldEZyYWdtZW50OiAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge30sXG4gICAgICAgIGluc2VydEZyYWdtZW50OiAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge30sXG4gICAgICAgIGRlbGV0ZUZyYWdtZW50OiAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge30sXG4gICAgICAgIGRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRFbGVtZW50Q29udGV4dCkgPT4gW10sXG4gICAgICAgIHJlZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdEVsZW1lbnRDb250ZXh0LCBjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSA9PiBbXSxcbiAgICAgICAgZGVzdHJveUVsZW1lbnQ6ICgpID0+IHt9XG4gICAgfTtcbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
@@ -17,35 +17,80 @@ export function invert(oldMatrix, newMatrix) {
17
17
  : null;
18
18
  }
19
19
  export function transformMat3(e, t, n) {
20
- const r = t[0];
21
- const a = t[1];
22
- const i = t[2];
23
- return (e[0] = r * n[0] + a * n[3] + i * n[6]), (e[1] = r * n[1] + a * n[4] + i * n[7]), (e[2] = r * n[2] + a * n[5] + i * n[8]), e;
20
+ e = [t[0] * n[0] + t[1] * n[3] + t[2] * n[6], t[0] * n[1] + t[1] * n[4] + t[2] * n[7], t[0] * n[2] + t[1] * n[5] + t[2] * n[8]];
21
+ return e;
22
+ }
23
+ export function convertPoint(arr) {
24
+ return Array.isArray(arr)
25
+ ? {
26
+ x: arr[0],
27
+ y: arr[1]
28
+ }
29
+ : arr;
30
+ }
31
+ export function invertClient(board, point, matrix) {
32
+ const convert = convertPoint(point);
33
+ const clientBox = getViewportClientBox(board);
34
+ const newPoint = [convert.x - clientBox.x, convert.y - clientBox.y, 1];
35
+ const invertMatrix = invert([], matrix);
36
+ const newMatrix = transformMat3([], [newPoint[0], newPoint[1], 1], invertMatrix);
37
+ return [newMatrix[0], newMatrix[1]];
38
+ }
39
+ export function invertViewport(point, matrix) {
40
+ const newPoint = convertPoint(point);
41
+ const invertMatrix = invert([], matrix);
42
+ return transformMat3([], [newPoint.x, newPoint.y, 1], invertMatrix);
43
+ }
44
+ export function convertViewport(point, matrix) {
45
+ const newPoint = convertPoint(point);
46
+ return transformMat3([], [newPoint.x, newPoint.y, 1], matrix);
47
+ }
48
+ export function getViewportCanvasBox(board, matrix) {
49
+ const clientBox = getViewportClientBox(board);
50
+ const client = invertClient(board, [clientBox.minX, clientBox.minY], matrix);
51
+ const newClient = invertClient(board, [clientBox.maxX, clientBox.maxY], matrix);
52
+ return {
53
+ minX: client[0],
54
+ minY: client[1],
55
+ maxX: newClient[0],
56
+ maxY: newClient[1],
57
+ x: client[0],
58
+ y: client[1],
59
+ width: newClient[0] - client[0],
60
+ height: newClient[1] - client[1]
61
+ };
24
62
  }
25
63
  export function getViewportClientBox(board) {
26
- const hideScrollbar = board.options.hideScrollbar;
27
- const scrollBarWidth = hideScrollbar ? SCROLL_BAR_WIDTH : 0;
28
64
  const container = board.host?.parentElement;
29
65
  const containerRect = container?.getBoundingClientRect();
30
- const width = containerRect.width - scrollBarWidth;
31
- const height = containerRect.height - scrollBarWidth;
32
66
  const x = containerRect.x || containerRect.left;
33
67
  const y = containerRect.y || containerRect.top;
68
+ const width = containerRect.width - SCROLL_BAR_WIDTH;
69
+ const height = containerRect.height - SCROLL_BAR_WIDTH;
34
70
  return {
35
- width,
36
- height,
71
+ minX: x,
72
+ minY: y,
73
+ maxX: x + width,
74
+ maxY: y + height,
37
75
  x,
38
- y
76
+ y,
77
+ width,
78
+ height
39
79
  };
40
80
  }
41
- export function calculateBBox(board) {
42
- const viewportBox = getViewportClientBox(board);
81
+ export function getGraphicsBBox(board) {
82
+ const rootGroup = board.host.firstChild;
83
+ const rootGroupBox = rootGroup.getBBox();
84
+ return rootGroupBox;
85
+ }
86
+ export function calculateBBox(board, zoom) {
87
+ const boardComponent = PLAIT_BOARD_TO_COMPONENT.get(board);
88
+ // const clientBox = getViewportClientBox(board);
43
89
  const rootGroup = board.host.firstChild;
44
- const zoom = board.viewport.zoom;
45
90
  const rootGroupBox = rootGroup.getBBox();
46
91
  let box = {};
47
- const containerWidth = viewportBox.width / zoom;
48
- const containerHeight = viewportBox.height / zoom;
92
+ const containerWidth = boardComponent.width / zoom;
93
+ const containerHeight = boardComponent.height / zoom;
49
94
  if (rootGroupBox.width < containerWidth) {
50
95
  const offsetX = rootGroupBox.x + rootGroupBox.width / 2;
51
96
  const containerX = containerWidth / 2;
@@ -69,38 +114,4 @@ export function calculateBBox(board) {
69
114
  // 在新的缩放比容器宽高下的内容盒子位置
70
115
  return box;
71
116
  }
72
- export function getViewBox(board) {
73
- const viewportBox = getViewportClientBox(board);
74
- const rootGroupBBox = calculateBBox(board);
75
- const padding = [viewportBox.height / 2, viewportBox.width / 2];
76
- const zoom = board.viewport.zoom;
77
- const minX = rootGroupBBox.left - padding[1] / zoom;
78
- const minY = rootGroupBBox.top - padding[0] / zoom;
79
- const viewportWidth = (rootGroupBBox.right - rootGroupBBox.left) * zoom + 2 * padding[1];
80
- const viewportHeight = (rootGroupBBox.bottom - rootGroupBBox.top) * zoom + 2 * padding[0];
81
- const width = viewportWidth / zoom;
82
- const height = viewportHeight / zoom;
83
- return { minX, minY, width, height, viewportWidth, viewportHeight };
84
- }
85
- export function isOutExtent(board, node, gap) {
86
- const result = { x: 0, y: 0 };
87
- if (!node)
88
- return result;
89
- const boardComponent = PLAIT_BOARD_TO_COMPONENT.get(board);
90
- const scrollBarWidth = board.options.hideScrollbar ? SCROLL_BAR_WIDTH : 0;
91
- const canvasRect = boardComponent.contentContainer.nativeElement.getBoundingClientRect();
92
- if (node.left < canvasRect.left + gap) {
93
- result.x = canvasRect.left - node.left - gap;
94
- }
95
- else if (node.right > canvasRect.right - scrollBarWidth - gap) {
96
- result.x = canvasRect.right - scrollBarWidth - gap - node.right - node.width;
97
- }
98
- if (node.top < canvasRect.top + gap) {
99
- result.y = canvasRect.top - node.top - gap;
100
- }
101
- else if (node.bottom > canvasRect.bottom - scrollBarWidth - gap) {
102
- result.y = canvasRect.bottom - scrollBarWidth - gap - node.bottom - node.height;
103
- }
104
- return result;
105
- }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL21hdHJpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE1BQU0sVUFBVSxNQUFNLENBQUMsU0FBbUIsRUFBRSxTQUFtQjtJQUMzRCxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQ2pCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFDbEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFDakIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTlCLE9BQU8sQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDWixD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QUksSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDN0QsTUFBTSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLGNBQWMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQ2hGO0lBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2pDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztLQUM5QztTQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDL0QsTUFBTSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLGNBQWMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ25GO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNDUk9MTF9CQVJfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmlld0JveCB9IGZyb20gJy4vYm9hcmQnO1xuaW1wb3J0IHsgUExBSVRfQk9BUkRfVE9fQ09NUE9ORU5UIH0gZnJvbSAnLi93ZWFrLW1hcHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG9sZE1hdHJpeDogbnVtYmVyW10sIG5ld01hdHJpeDogbnVtYmVyW10pIHtcbiAgICBsZXQgbiA9IG5ld01hdHJpeFswXSxcbiAgICAgICAgciA9IG5ld01hdHJpeFsxXSxcbiAgICAgICAgYSA9IG5ld01hdHJpeFsyXSxcbiAgICAgICAgaSA9IG5ld01hdHJpeFszXSxcbiAgICAgICAgbyA9IG5ld01hdHJpeFs0XSxcbiAgICAgICAgYyA9IG5ld01hdHJpeFs1XSxcbiAgICAgICAgbCA9IG5ld01hdHJpeFs2XSxcbiAgICAgICAgcyA9IG5ld01hdHJpeFs3XSxcbiAgICAgICAgdSA9IG5ld01hdHJpeFs4XSxcbiAgICAgICAgZCA9IHUgKiBvIC0gYyAqIHMsXG4gICAgICAgIGggPSAtdSAqIGkgKyBjICogbCxcbiAgICAgICAgZiA9IHMgKiBpIC0gbyAqIGwsXG4gICAgICAgIHAgPSBuICogZCArIHIgKiBoICsgYSAqIGY7XG5cbiAgICByZXR1cm4gcFxuICAgICAgICA/ICgocCA9IDEgLyBwKSxcbiAgICAgICAgICAob2xkTWF0cml4WzBdID0gZCAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbMV0gPSAoLXUgKiByICsgYSAqIHMpICogcCksXG4gICAgICAgICAgKG9sZE1hdHJpeFsyXSA9IChjICogciAtIGEgKiBvKSAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbM10gPSBoICogcCksXG4gICAgICAgICAgKG9sZE1hdHJpeFs0XSA9ICh1ICogbiAtIGEgKiBsKSAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbNV0gPSAoLWMgKiBuICsgYSAqIGkpICogcCksXG4gICAgICAgICAgKG9sZE1hdHJpeFs2XSA9IGYgKiBwKSxcbiAgICAgICAgICAob2xkTWF0cml4WzddID0gKC1zICogbiArIHIgKiBsKSAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbOF0gPSAobyAqIG4gLSByICogaSkgKiBwKSxcbiAgICAgICAgICBvbGRNYXRyaXgpXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDMoZTogbnVtYmVyW10sIHQ6IG51bWJlcltdLCBuOiBudW1iZXJbXSkge1xuICAgIGNvbnN0IHIgPSB0WzBdO1xuICAgIGNvbnN0IGEgPSB0WzFdO1xuICAgIGNvbnN0IGkgPSB0WzJdO1xuXG4gICAgcmV0dXJuIChlWzBdID0gciAqIG5bMF0gKyBhICogblszXSArIGkgKiBuWzZdKSwgKGVbMV0gPSByICogblsxXSArIGEgKiBuWzRdICsgaSAqIG5bN10pLCAoZVsyXSA9IHIgKiBuWzJdICsgYSAqIG5bNV0gKyBpICogbls4XSksIGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydENsaWVudEJveChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGhpZGVTY3JvbGxiYXIgPSBib2FyZC5vcHRpb25zLmhpZGVTY3JvbGxiYXI7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBoaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgY29uc3QgY29udGFpbmVyID0gYm9hcmQuaG9zdD8ucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB3aWR0aCA9IGNvbnRhaW5lclJlY3Qud2lkdGggLSBzY3JvbGxCYXJXaWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSBjb250YWluZXJSZWN0LmhlaWdodCAtIHNjcm9sbEJhcldpZHRoO1xuICAgIGNvbnN0IHggPSBjb250YWluZXJSZWN0LnggfHwgY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIGNvbnN0IHkgPSBjb250YWluZXJSZWN0LnkgfHwgY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJCb3goYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB2aWV3cG9ydEJveCA9IGdldFZpZXdwb3J0Q2xpZW50Qm94KGJvYXJkKTtcbiAgICBjb25zdCByb290R3JvdXAgPSBib2FyZC5ob3N0LmZpcnN0Q2hpbGQ7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3Qgcm9vdEdyb3VwQm94ID0gKHJvb3RHcm91cCBhcyBTVkdHcmFwaGljc0VsZW1lbnQpLmdldEJCb3goKTtcblxuICAgIGxldCBib3ggPSB7fSBhcyBhbnk7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB2aWV3cG9ydEJveC53aWR0aCAvIHpvb207XG4gICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gdmlld3BvcnRCb3guaGVpZ2h0IC8gem9vbTtcblxuICAgIGlmIChyb290R3JvdXBCb3gud2lkdGggPCBjb250YWluZXJXaWR0aCkge1xuICAgICAgICBjb25zdCBvZmZzZXRYID0gcm9vdEdyb3VwQm94LnggKyByb290R3JvdXBCb3gud2lkdGggLyAyO1xuICAgICAgICBjb25zdCBjb250YWluZXJYID0gY29udGFpbmVyV2lkdGggLyAyO1xuICAgICAgICBib3gubGVmdCA9IG9mZnNldFggLSBjb250YWluZXJYO1xuICAgICAgICBib3gucmlnaHQgPSBvZmZzZXRYICsgY29udGFpbmVyWDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBib3gubGVmdCA9IHJvb3RHcm91cEJveC54O1xuICAgICAgICBib3gucmlnaHQgPSByb290R3JvdXBCb3gueCArIHJvb3RHcm91cEJveC53aWR0aDtcbiAgICB9XG5cbiAgICBpZiAocm9vdEdyb3VwQm94LmhlaWdodCA8IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gcm9vdEdyb3VwQm94LnkgKyByb290R3JvdXBCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgY29udGFpbmVyWSA9IGNvbnRhaW5lckhlaWdodCAvIDI7XG4gICAgICAgIGJveC50b3AgPSBvZmZzZXRZIC0gY29udGFpbmVyWTtcbiAgICAgICAgYm94LmJvdHRvbSA9IG9mZnNldFkgKyBjb250YWluZXJZO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJveC50b3AgPSByb290R3JvdXBCb3gueTtcbiAgICAgICAgYm94LmJvdHRvbSA9IHJvb3RHcm91cEJveC55ICsgcm9vdEdyb3VwQm94LmhlaWdodDtcbiAgICB9XG5cbiAgICAvLyDlnKjmlrDnmoTnvKnmlL7mr5Tlrrnlmajlrr3pq5jkuIvnmoTlhoXlrrnnm5LlrZDkvY3nva5cbiAgICByZXR1cm4gYm94O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld0JveChib2FyZDogUGxhaXRCb2FyZCk6IFZpZXdCb3gge1xuICAgIGNvbnN0IHZpZXdwb3J0Qm94ID0gZ2V0Vmlld3BvcnRDbGllbnRCb3goYm9hcmQpO1xuICAgIGNvbnN0IHJvb3RHcm91cEJCb3ggPSBjYWxjdWxhdGVCQm94KGJvYXJkKTtcbiAgICBjb25zdCBwYWRkaW5nID0gW3ZpZXdwb3J0Qm94LmhlaWdodCAvIDIsIHZpZXdwb3J0Qm94LndpZHRoIC8gMl07XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgbWluWCA9IHJvb3RHcm91cEJCb3gubGVmdCAtIHBhZGRpbmdbMV0gLyB6b29tO1xuICAgIGNvbnN0IG1pblkgPSByb290R3JvdXBCQm94LnRvcCAtIHBhZGRpbmdbMF0gLyB6b29tO1xuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSAocm9vdEdyb3VwQkJveC5yaWdodCAtIHJvb3RHcm91cEJCb3gubGVmdCkgKiB6b29tICsgMiAqIHBhZGRpbmdbMV07XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSAocm9vdEdyb3VwQkJveC5ib3R0b20gLSByb290R3JvdXBCQm94LnRvcCkgKiB6b29tICsgMiAqIHBhZGRpbmdbMF07XG4gICAgY29uc3Qgd2lkdGggPSB2aWV3cG9ydFdpZHRoIC8gem9vbTtcbiAgICBjb25zdCBoZWlnaHQgPSB2aWV3cG9ydEhlaWdodCAvIHpvb207XG5cbiAgICByZXR1cm4geyBtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPdXRFeHRlbnQoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IERPTVJlY3QsIGdhcDogbnVtYmVyKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IHg6IDAsIHk6IDAgfTtcblxuICAgIGlmICghbm9kZSkgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNvbnN0IGJvYXJkQ29tcG9uZW50ID0gUExBSVRfQk9BUkRfVE9fQ09NUE9ORU5ULmdldChib2FyZCk7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBib2FyZC5vcHRpb25zLmhpZGVTY3JvbGxiYXIgPyBTQ1JPTExfQkFSX1dJRFRIIDogMDtcbiAgICBjb25zdCBjYW52YXNSZWN0ID0gYm9hcmRDb21wb25lbnQhLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChub2RlLmxlZnQgPCBjYW52YXNSZWN0LmxlZnQgKyBnYXApIHtcbiAgICAgICAgcmVzdWx0LnggPSBjYW52YXNSZWN0LmxlZnQgLSBub2RlLmxlZnQgLSBnYXA7XG4gICAgfSBlbHNlIGlmIChub2RlLnJpZ2h0ID4gY2FudmFzUmVjdC5yaWdodCAtIHNjcm9sbEJhcldpZHRoIC0gZ2FwKSB7XG4gICAgICAgIHJlc3VsdC54ID0gY2FudmFzUmVjdC5yaWdodCAtIHNjcm9sbEJhcldpZHRoIC0gZ2FwIC0gbm9kZS5yaWdodCAtIG5vZGUud2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudG9wIDwgY2FudmFzUmVjdC50b3AgKyBnYXApIHtcbiAgICAgICAgcmVzdWx0LnkgPSBjYW52YXNSZWN0LnRvcCAtIG5vZGUudG9wIC0gZ2FwO1xuICAgIH0gZWxzZSBpZiAobm9kZS5ib3R0b20gPiBjYW52YXNSZWN0LmJvdHRvbSAtIHNjcm9sbEJhcldpZHRoIC0gZ2FwKSB7XG4gICAgICAgIHJlc3VsdC55ID0gY2FudmFzUmVjdC5ib3R0b20gLSBzY3JvbGxCYXJXaWR0aCAtIGdhcCAtIG5vZGUuYm90dG9tIC0gbm9kZS5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL21hdHJpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE1BQU0sVUFBVSxNQUFNLENBQUMsU0FBbUIsRUFBRSxTQUFtQjtJQUMzRCxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQ2pCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFDbEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFDakIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTlCLE9BQU8sQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDWixD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Q0FBQztLQUNwQztTQUFNO1FBQ0gsR0FBRyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0tBQ25EO0lBRUQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLGVBQWUsRUFBRTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sVUFBVSxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDdkMsR0FBRyxDQUFDLEdBQUcsR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztLQUNyQztTQUFNO1FBQ0gsR0FBRyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0tBQ3JEO0lBRUQscUJBQXFCO0lBQ3JCLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNDUk9MTF9CQVJfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUExBSVRfQk9BUkRfVE9fQ09NUE9ORU5UIH0gZnJvbSAnLi93ZWFrLW1hcHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG9sZE1hdHJpeDogbnVtYmVyW10sIG5ld01hdHJpeDogbnVtYmVyW10pIHtcbiAgICBsZXQgbiA9IG5ld01hdHJpeFswXSxcbiAgICAgICAgciA9IG5ld01hdHJpeFsxXSxcbiAgICAgICAgYSA9IG5ld01hdHJpeFsyXSxcbiAgICAgICAgaSA9IG5ld01hdHJpeFszXSxcbiAgICAgICAgbyA9IG5ld01hdHJpeFs0XSxcbiAgICAgICAgYyA9IG5ld01hdHJpeFs1XSxcbiAgICAgICAgbCA9IG5ld01hdHJpeFs2XSxcbiAgICAgICAgcyA9IG5ld01hdHJpeFs3XSxcbiAgICAgICAgdSA9IG5ld01hdHJpeFs4XSxcbiAgICAgICAgZCA9IHUgKiBvIC0gYyAqIHMsXG4gICAgICAgIGggPSAtdSAqIGkgKyBjICogbCxcbiAgICAgICAgZiA9IHMgKiBpIC0gbyAqIGwsXG4gICAgICAgIHAgPSBuICogZCArIHIgKiBoICsgYSAqIGY7XG5cbiAgICByZXR1cm4gcFxuICAgICAgICA/ICgocCA9IDEgLyBwKSxcbiAgICAgICAgICAob2xkTWF0cml4WzBdID0gZCAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbMV0gPSAoLXUgKiByICsgYSAqIHMpICogcCksXG4gICAgICAgICAgKG9sZE1hdHJpeFsyXSA9IChjICogciAtIGEgKiBvKSAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbM10gPSBoICogcCksXG4gICAgICAgICAgKG9sZE1hdHJpeFs0XSA9ICh1ICogbiAtIGEgKiBsKSAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbNV0gPSAoLWMgKiBuICsgYSAqIGkpICogcCksXG4gICAgICAgICAgKG9sZE1hdHJpeFs2XSA9IGYgKiBwKSxcbiAgICAgICAgICAob2xkTWF0cml4WzddID0gKC1zICogbiArIHIgKiBsKSAqIHApLFxuICAgICAgICAgIChvbGRNYXRyaXhbOF0gPSAobyAqIG4gLSByICogaSkgKiBwKSxcbiAgICAgICAgICBvbGRNYXRyaXgpXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDMoZTogbnVtYmVyW10sIHQ6IG51bWJlcltdLCBuOiBudW1iZXJbXSkge1xuICAgIGUgPSBbdFswXSAqIG5bMF0gKyB0WzFdICogblszXSArIHRbMl0gKiBuWzZdLCB0WzBdICogblsxXSArIHRbMV0gKiBuWzRdICsgdFsyXSAqIG5bN10sIHRbMF0gKiBuWzJdICsgdFsxXSAqIG5bNV0gKyB0WzJdICogbls4XV07XG4gICAgcmV0dXJuIGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UG9pbnQoYXJyOiBudW1iZXJbXSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFycilcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHg6IGFyclswXSxcbiAgICAgICAgICAgICAgeTogYXJyWzFdXG4gICAgICAgICAgfVxuICAgICAgICA6IGFycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydENsaWVudChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IG51bWJlcltdLCBtYXRyaXg6IG51bWJlcltdKSB7XG4gICAgY29uc3QgY29udmVydCA9IGNvbnZlcnRQb2ludChwb2ludCk7XG4gICAgY29uc3QgY2xpZW50Qm94ID0gZ2V0Vmlld3BvcnRDbGllbnRCb3goYm9hcmQpO1xuICAgIGNvbnN0IG5ld1BvaW50ID0gW2NvbnZlcnQueCAtIGNsaWVudEJveC54LCBjb252ZXJ0LnkgLSBjbGllbnRCb3gueSwgMV07XG4gICAgY29uc3QgaW52ZXJ0TWF0cml4ID0gaW52ZXJ0KFtdLCBtYXRyaXgpO1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IHRyYW5zZm9ybU1hdDMoW10sIFtuZXdQb2ludFswXSwgbmV3UG9pbnRbMV0sIDFdLCBpbnZlcnRNYXRyaXggYXMgW10pO1xuXG4gICAgcmV0dXJuIFtuZXdNYXRyaXhbMF0sIG5ld01hdHJpeFsxXV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnRWaWV3cG9ydChwb2ludDogbnVtYmVyW10sIG1hdHJpeDogbnVtYmVyW10pIHtcbiAgICBjb25zdCBuZXdQb2ludCA9IGNvbnZlcnRQb2ludChwb2ludCk7XG4gICAgY29uc3QgaW52ZXJ0TWF0cml4ID0gaW52ZXJ0KFtdLCBtYXRyaXgpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1NYXQzKFtdLCBbbmV3UG9pbnQueCwgbmV3UG9pbnQueSwgMV0sIGludmVydE1hdHJpeCBhcyBbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Vmlld3BvcnQocG9pbnQ6IG51bWJlcltdLCBtYXRyaXg6IG51bWJlcltdKSB7XG4gICAgY29uc3QgbmV3UG9pbnQgPSBjb252ZXJ0UG9pbnQocG9pbnQpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1NYXQzKFtdLCBbbmV3UG9pbnQueCwgbmV3UG9pbnQueSwgMV0sIG1hdHJpeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydENhbnZhc0JveChib2FyZDogUGxhaXRCb2FyZCwgbWF0cml4OiBudW1iZXJbXSkge1xuICAgIGNvbnN0IGNsaWVudEJveCA9IGdldFZpZXdwb3J0Q2xpZW50Qm94KGJvYXJkKTtcbiAgICBjb25zdCBjbGllbnQgPSBpbnZlcnRDbGllbnQoYm9hcmQsIFtjbGllbnRCb3gubWluWCwgY2xpZW50Qm94Lm1pblldLCBtYXRyaXgpO1xuICAgIGNvbnN0IG5ld0NsaWVudCA9IGludmVydENsaWVudChib2FyZCwgW2NsaWVudEJveC5tYXhYLCBjbGllbnRCb3gubWF4WV0sIG1hdHJpeCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBjbGllbnRbMF0sXG4gICAgICAgIG1pblk6IGNsaWVudFsxXSxcbiAgICAgICAgbWF4WDogbmV3Q2xpZW50WzBdLFxuICAgICAgICBtYXhZOiBuZXdDbGllbnRbMV0sXG4gICAgICAgIHg6IGNsaWVudFswXSxcbiAgICAgICAgeTogY2xpZW50WzFdLFxuICAgICAgICB3aWR0aDogbmV3Q2xpZW50WzBdIC0gY2xpZW50WzBdLFxuICAgICAgICBoZWlnaHQ6IG5ld0NsaWVudFsxXSAtIGNsaWVudFsxXVxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydENsaWVudEJveChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGJvYXJkLmhvc3Q/LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeCA9IGNvbnRhaW5lclJlY3QueCB8fCBjb250YWluZXJSZWN0LmxlZnQ7XG4gICAgY29uc3QgeSA9IGNvbnRhaW5lclJlY3QueSB8fCBjb250YWluZXJSZWN0LnRvcDtcbiAgICBjb25zdCB3aWR0aCA9IGNvbnRhaW5lclJlY3Qud2lkdGggLSBTQ1JPTExfQkFSX1dJRFRIO1xuICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lclJlY3QuaGVpZ2h0IC0gU0NST0xMX0JBUl9XSURUSDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IHgsXG4gICAgICAgIG1pblk6IHksXG4gICAgICAgIG1heFg6IHggKyB3aWR0aCxcbiAgICAgICAgbWF4WTogeSArIGhlaWdodCxcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHcmFwaGljc0JCb3goYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCByb290R3JvdXAgPSBib2FyZC5ob3N0LmZpcnN0Q2hpbGQ7XG4gICAgY29uc3Qgcm9vdEdyb3VwQm94ID0gKHJvb3RHcm91cCBhcyBTVkdHcmFwaGljc0VsZW1lbnQpLmdldEJCb3goKTtcbiAgICByZXR1cm4gcm9vdEdyb3VwQm94O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQkJveChib2FyZDogUGxhaXRCb2FyZCwgem9vbTogbnVtYmVyKSB7XG4gICAgY29uc3QgYm9hcmRDb21wb25lbnQgPSBQTEFJVF9CT0FSRF9UT19DT01QT05FTlQuZ2V0KGJvYXJkKTtcbiAgICAvLyBjb25zdCBjbGllbnRCb3ggPSBnZXRWaWV3cG9ydENsaWVudEJveChib2FyZCk7XG4gICAgY29uc3Qgcm9vdEdyb3VwID0gYm9hcmQuaG9zdC5maXJzdENoaWxkO1xuICAgIGNvbnN0IHJvb3RHcm91cEJveCA9IChyb290R3JvdXAgYXMgU1ZHR3JhcGhpY3NFbGVtZW50KS5nZXRCQm94KCk7XG5cbiAgICBsZXQgYm94ID0ge30gYXMgYW55O1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gYm9hcmRDb21wb25lbnQhLndpZHRoIC8gem9vbTtcbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSBib2FyZENvbXBvbmVudCEuaGVpZ2h0IC8gem9vbTtcblxuICAgIGlmIChyb290R3JvdXBCb3gud2lkdGggPCBjb250YWluZXJXaWR0aCkge1xuICAgICAgICBjb25zdCBvZmZzZXRYID0gcm9vdEdyb3VwQm94LnggKyByb290R3JvdXBCb3gud2lkdGggLyAyO1xuICAgICAgICBjb25zdCBjb250YWluZXJYID0gY29udGFpbmVyV2lkdGggLyAyO1xuICAgICAgICBib3gubGVmdCA9IG9mZnNldFggLSBjb250YWluZXJYO1xuICAgICAgICBib3gucmlnaHQgPSBvZmZzZXRYICsgY29udGFpbmVyWDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBib3gubGVmdCA9IHJvb3RHcm91cEJveC54O1xuICAgICAgICBib3gucmlnaHQgPSByb290R3JvdXBCb3gueCArIHJvb3RHcm91cEJveC53aWR0aDtcbiAgICB9XG5cbiAgICBpZiAocm9vdEdyb3VwQm94LmhlaWdodCA8IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gcm9vdEdyb3VwQm94LnkgKyByb290R3JvdXBCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgY29udGFpbmVyWSA9IGNvbnRhaW5lckhlaWdodCAvIDI7XG4gICAgICAgIGJveC50b3AgPSBvZmZzZXRZIC0gY29udGFpbmVyWTtcbiAgICAgICAgYm94LmJvdHRvbSA9IG9mZnNldFkgKyBjb250YWluZXJZO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJveC50b3AgPSByb290R3JvdXBCb3gueTtcbiAgICAgICAgYm94LmJvdHRvbSA9IHJvb3RHcm91cEJveC55ICsgcm9vdEdyb3VwQm94LmhlaWdodDtcbiAgICB9XG5cbiAgICAvLyDlnKjmlrDnmoTnvKnmlL7mr5Tlrrnlmajlrr3pq5jkuIvnmoTlhoXlrrnnm5LlrZDkvY3nva5cbiAgICByZXR1cm4gYm94O1xufVxuIl19