@plait/core 0.39.0 → 0.40.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.
@@ -17,7 +17,7 @@ function isElementNode(node) {
17
17
  function loadImage(src) {
18
18
  return new Promise((resolve, reject) => {
19
19
  const img = new Image();
20
- img.crossOrigin = 'anonymous';
20
+ img.crossOrigin = 'Anonymous';
21
21
  img.onload = () => resolve(img);
22
22
  img.onerror = () => reject(new Error('Failed to load image'));
23
23
  img.src = src;
@@ -132,7 +132,7 @@ async function batchConvertImage(sourceNode, cloneNode) {
132
132
  * @param options parameter configuration
133
133
  * @returns clone svg element
134
134
  */
135
- function cloneSvg(board, elements, rectangle, options) {
135
+ async function cloneSvg(board, elements, rectangle, options) {
136
136
  const { width, height, x, y } = rectangle;
137
137
  const { padding = 4, inlineStyleClassNames } = options;
138
138
  const sourceSvg = PlaitBoard.getHost(board);
@@ -145,12 +145,12 @@ function cloneSvg(board, elements, rectangle, options) {
145
145
  cloneSvgElement.setAttribute('width', `${width}`);
146
146
  cloneSvgElement.setAttribute('height', `${height}`);
147
147
  cloneSvgElement.setAttribute('viewBox', [x - padding, y - padding, width + 2 * padding, height + 2 * padding].join(','));
148
- selectedGElements.forEach((child, i) => {
148
+ await Promise.all(selectedGElements.map(async (child, i) => {
149
149
  const cloneChild = child.cloneNode(true);
150
150
  batchCloneCSSStyle(child, cloneChild, inlineStyleClassNames);
151
- batchConvertImage(child, cloneChild);
151
+ await batchConvertImage(child, cloneChild);
152
152
  newHostElement.appendChild(cloneChild);
153
- });
153
+ }));
154
154
  cloneSvgElement.appendChild(newHostElement);
155
155
  return cloneSvgElement;
156
156
  }
@@ -196,4 +196,4 @@ export function downloadImage(url, name) {
196
196
  a.click();
197
197
  a.remove();
198
198
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy90by1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQVloRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLFNBQVMsR0FBRyxhQUFhO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFB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QWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxTQUFTLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZmluZEVsZW1lbnRzLCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSU1BR0VfQ09OVEFJTkVSID0gJ3BsYWl0LWltYWdlLWNvbnRhaW5lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9JbWFnZU9wdGlvbnMge1xuICAgIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W107XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByYXRpbz86IG51bWJlcjtcbiAgICBwYWRkaW5nPzogbnVtYmVyO1xuICAgIGZpbGxTdHlsZT86IHN0cmluZztcbiAgICAvLyDpgJflj7fnsbvlkI3liJfooajjgIIg6K+l5YiX6KGo5b+F6aG76YeH55SoIGNsYXNzMSxjbGFzczIsLi4uIOeahOW9ouW8j+OAglxuICAgIGlubGluZVN0eWxlQ2xhc3NOYW1lcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcyBlbGVtZW50IG5vZGVcbiAqIEBwYXJhbSBub2RlXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBpc0VsZW1lbnROb2RlKG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREU7XG59XG5cbi8qKlxuICogbG9hZCBpbWFnZSByZXNvdXJjZXNcbiAqIEBwYXJhbSB1cmwgaW1hZ2UgdXJsXG4gKiBAcmV0dXJucyBpbWFnZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGxvYWRJbWFnZShzcmM6IHN0cmluZyk6IFByb21pc2U8SFRNTEltYWdlRWxlbWVudD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBpbWFnZScpKTtcbiAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjcmVhdGUgYW5kIHJldHVybiBjYW52YXMgYW5kIGNvbnRleHRcbiAqIEBwYXJhbSB3aWR0aCBjYW52YXMgd2lkdGhcbiAqIEBwYXJhbSBoZWlnaHQgY2FudmFzIGhlaWdodFxuICogQHBhcmFtIGZpbGxTdHlsZSBmaWxsIHN0eWxlXG4gKiBAcmV0dXJucyBjYW52YXMgYW5kIGNvbnRleHRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gJyNmZmZmZmYnO1xuICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBjdHhcbiAgICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgaW1hZ2UgdG8gYmFzZTY0XG4gKiBAcGFyYW0gdXJsIGltYWdlIHVybFxuICogQHJldHVybnMgaW1hZ2UgYmFzZTY0XG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxvYWRJbWFnZSh1cmwpLnRoZW4oaW1nID0+IHtcbiAgICAgICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgIGN0eD8uZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjbG9uZSBub2RlIHN0eWxlXG4gKiBAcGFyYW0gbmF0aXZlTm9kZSBzb3VyY2Ugbm9kZVxuICogQHBhcmFtIGNsb25lZE5vZGUgY2xvbmUgbm9kZVxuICovXG5mdW5jdGlvbiBjbG9uZUNTU1N0eWxlPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4obmF0aXZlTm9kZTogVCwgY2xvbmVkTm9kZTogVCkge1xuICAgIGNvbnN0IHRhcmdldFN0eWxlID0gY2xvbmVkTm9kZT8uc3R5bGU7XG4gICAgaWYgKCF0YXJnZXRTdHlsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuYXRpdmVOb2RlKTtcbiAgICBpZiAoc291cmNlU3R5bGUuY3NzVGV4dCkge1xuICAgICAgICB0YXJnZXRTdHlsZS5jc3NUZXh0ID0gc291cmNlU3R5bGUuY3NzVGV4dDtcbiAgICAgICAgdGFyZ2V0U3R5bGUudHJhbnNmb3JtT3JpZ2luID0gc291cmNlU3R5bGUudHJhbnNmb3JtT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFycmF5LmZyb20oc291cmNlU3R5bGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzb3VyY2VTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICAgICAgICAgICAgdGFyZ2V0U3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUsIHNvdXJjZVN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogYmF0Y2ggY2xvbmUgdGFyZ2V0IHN0eWxlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqIEBwYXJhbSBpbmxpbmVTdHlsZUNsYXNzTmFtZXNcbiAqL1xuZnVuY3Rpb24gYmF0Y2hDbG9uZUNTU1N0eWxlKHNvdXJjZU5vZGU6IFNWR0dFbGVtZW50LCBjbG9uZU5vZGU6IFNWR0dFbGVtZW50LCBpbmxpbmVTdHlsZUNsYXNzTmFtZXM6IHN0cmluZykge1xuICAgIGlmIChpbmxpbmVTdHlsZUNsYXNzTmFtZXMpIHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IGlubGluZVN0eWxlQ2xhc3NOYW1lcyArIGAsLiR7SU1BR0VfQ09OVEFJTkVSfWA7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3NOYW1lcykpO1xuICAgICAgICBjb25zdCBjbG9uZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChjbGFzc05hbWVzKSk7XG5cbiAgICAgICAgc291cmNlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRWxlbWVudHMgPSBBcnJheS5mcm9tKG5vZGUucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lQ2hpbGRFbGVtZW50cyA9IEFycmF5LmZyb20oY2xvbmVOb2Rlc1tpbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIHNvdXJjZU5vZGVzLnB1c2goLi4uY2hpbGRFbGVtZW50cyk7XG4gICAgICAgICAgICBjbG9uZU5vZGVzLnB1c2goLi4uY2xvbmVDaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcHJvY2Vzc2luZyBzdHlsZXNcbiAgICAgICAgc291cmNlTm9kZXMubWFwKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY2xvbmVDU1NTdHlsZShub2RlIGFzIEhUTUxFbGVtZW50LCBjbG9uZU5vZGVzW2luZGV4XSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjb252ZXJ0IGltYWdlcyBpbiB0YXJnZXQgbm9kZXMgaW4gYmF0Y2hlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0SW1hZ2Uoc291cmNlTm9kZTogU1ZHR0VsZW1lbnQsIGNsb25lTm9kZTogU1ZHR0VsZW1lbnQpIHtcbiAgICBjb25zdCBzb3VyY2VJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke0lNQUdFX0NPTlRBSU5FUn1gKSk7XG4gICAgY29uc3QgY2xvbmVJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChgLiR7SU1BR0VfQ09OVEFJTkVSfWApKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgc291cmNlSW1hZ2VOb2Rlcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVJbWFnZU5vZGUgPSBjbG9uZUltYWdlTm9kZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgaW1hZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IChjbG9uZUltYWdlTm9kZSBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignaW1nJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gaW1hZ2U/LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybCkudGhlbihiYXNlNjRJbWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlPy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGJhc2U2NEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbi8qKlxuICogY2xvbmUgc3ZnIGVsZW1lbnRcbiAqIEBwYXJhbSBib2FyZCBib2FyZFxuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIGNsb25lIHN2ZyBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ZnKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBUb0ltYWdlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgeCwgeSB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IHsgcGFkZGluZyA9IDQsIGlubGluZVN0eWxlQ2xhc3NOYW1lcyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBzb3VyY2VTdmcgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGNvbnN0IHNlbGVjdGVkR0VsZW1lbnRzID0gZWxlbWVudHMubWFwKHZhbHVlID0+IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodmFsdWUpLmcpO1xuICAgIGNvbnN0IGNsb25lU3ZnRWxlbWVudCA9IHNvdXJjZVN2Zy5jbG9uZU5vZGUoKSBhcyBTVkdFbGVtZW50O1xuICAgIGNvbnN0IG5ld0hvc3RFbGVtZW50ID0gUGxhaXRCb2FyZC5nZXRFbGVtZW50SG9zdChib2FyZCkuY2xvbmVOb2RlKCkgYXMgU1ZHR0VsZW1lbnQ7XG5cbiAgICBjbG9uZVN2Z0VsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7d2lkdGh9YCk7XG4gICAgY2xvbmVTdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7aGVpZ2h0fWApO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCBbeCAtIHBhZGRpbmcsIHkgLSBwYWRkaW5nLCB3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZ10uam9pbignLCcpKTtcblxuICAgIHNlbGVjdGVkR0VsZW1lbnRzLmZvckVhY2goKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lQ2hpbGQgPSBjaGlsZC5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGJhdGNoQ2xvbmVDU1NTdHlsZShjaGlsZCwgY2xvbmVDaGlsZCwgaW5saW5lU3R5bGVDbGFzc05hbWVzIGFzIHN0cmluZyk7XG4gICAgICAgIGJhdGNoQ29udmVydEltYWdlKGNoaWxkLCBjbG9uZUNoaWxkKTtcbiAgICAgICAgbmV3SG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVDaGlsZCk7XG4gICAgfSk7XG4gICAgY2xvbmVTdmdFbGVtZW50LmFwcGVuZENoaWxkKG5ld0hvc3RFbGVtZW50KTtcblxuICAgIHJldHVybiBjbG9uZVN2Z0VsZW1lbnQ7XG59XG5cbi8qKlxuICogY3VycmVudCBib2FyZCB0cmFuc2ZlciBwaWN0dXJlc1xuICogQHBhcmFtIGJvYXJkIGJvYXJkXG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgaW1hZ2VzIGluIHRoZSBzcGVjaWZpZWQgZm9ybWF0IGJhc2U2NFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9JbWFnZShib2FyZDogUGxhaXRCb2FyZCwgb3B0aW9uczogVG9JbWFnZU9wdGlvbnMpIHtcbiAgICBpZiAoIWJvYXJkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBvcHRpb25zPy5lbGVtZW50cyB8fCBmaW5kRWxlbWVudHMoYm9hcmQsIHsgbWF0Y2g6ICgpID0+IHRydWUsIHJlY3Vyc2lvbjogKCkgPT4gdHJ1ZSB9KTtcbiAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IHsgcmF0aW8gPSAyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdGFuZ2xlO1xuICAgIGNvbnN0IHJhdGlvV2lkdGggPSB3aWR0aCAqIHJhdGlvO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gaGVpZ2h0ICogcmF0aW87XG5cbiAgICBjb25zdCBjbG9uZVN2Z0VsZW1lbnQgPSBhd2FpdCBjbG9uZVN2Zyhib2FyZCwgZWxlbWVudHMsIHRhcmdldFJlY3RhbmdsZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0LCBmaWxsU3R5bGUpO1xuXG4gICAgY29uc3Qgc3ZnU3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhjbG9uZVN2Z0VsZW1lbnQpO1xuICAgIGNvbnN0IGltZ1NyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChzdmdTdHIpfWA7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBpbWcgPSBhd2FpdCBsb2FkSW1hZ2UoaW1nU3JjKTtcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbnZlcnRpbmcgU1ZHIHRvIGltYWdlOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbi8qKlxuICogZG93bmxvYWQgdGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVcbiAqIEBwYXJhbSB1cmwgZG93bmxvYWQgdXJsXG4gKiBAcGFyYW0gbmFtZSBmaWxlIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkSW1hZ2UodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSBuYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy90by1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQVloRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLFNBQVMsR0FBRyxhQUFhO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFB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QyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxTQUFTLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZmluZEVsZW1lbnRzLCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSU1BR0VfQ09OVEFJTkVSID0gJ3BsYWl0LWltYWdlLWNvbnRhaW5lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9JbWFnZU9wdGlvbnMge1xuICAgIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W107XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByYXRpbz86IG51bWJlcjtcbiAgICBwYWRkaW5nPzogbnVtYmVyO1xuICAgIGZpbGxTdHlsZT86IHN0cmluZztcbiAgICAvLyDpgJflj7fnsbvlkI3liJfooajjgIIg6K+l5YiX6KGo5b+F6aG76YeH55SoIGNsYXNzMSxjbGFzczIsLi4uIOeahOW9ouW8j+OAglxuICAgIGlubGluZVN0eWxlQ2xhc3NOYW1lcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcyBlbGVtZW50IG5vZGVcbiAqIEBwYXJhbSBub2RlXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBpc0VsZW1lbnROb2RlKG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREU7XG59XG5cbi8qKlxuICogbG9hZCBpbWFnZSByZXNvdXJjZXNcbiAqIEBwYXJhbSB1cmwgaW1hZ2UgdXJsXG4gKiBAcmV0dXJucyBpbWFnZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGxvYWRJbWFnZShzcmM6IHN0cmluZyk6IFByb21pc2U8SFRNTEltYWdlRWxlbWVudD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBpbWFnZScpKTtcbiAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjcmVhdGUgYW5kIHJldHVybiBjYW52YXMgYW5kIGNvbnRleHRcbiAqIEBwYXJhbSB3aWR0aCBjYW52YXMgd2lkdGhcbiAqIEBwYXJhbSBoZWlnaHQgY2FudmFzIGhlaWdodFxuICogQHBhcmFtIGZpbGxTdHlsZSBmaWxsIHN0eWxlXG4gKiBAcmV0dXJucyBjYW52YXMgYW5kIGNvbnRleHRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gJyNmZmZmZmYnO1xuICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBjdHhcbiAgICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgaW1hZ2UgdG8gYmFzZTY0XG4gKiBAcGFyYW0gdXJsIGltYWdlIHVybFxuICogQHJldHVybnMgaW1hZ2UgYmFzZTY0XG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxvYWRJbWFnZSh1cmwpLnRoZW4oaW1nID0+IHtcbiAgICAgICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgIGN0eD8uZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjbG9uZSBub2RlIHN0eWxlXG4gKiBAcGFyYW0gbmF0aXZlTm9kZSBzb3VyY2Ugbm9kZVxuICogQHBhcmFtIGNsb25lZE5vZGUgY2xvbmUgbm9kZVxuICovXG5mdW5jdGlvbiBjbG9uZUNTU1N0eWxlPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4obmF0aXZlTm9kZTogVCwgY2xvbmVkTm9kZTogVCkge1xuICAgIGNvbnN0IHRhcmdldFN0eWxlID0gY2xvbmVkTm9kZT8uc3R5bGU7XG4gICAgaWYgKCF0YXJnZXRTdHlsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuYXRpdmVOb2RlKTtcbiAgICBpZiAoc291cmNlU3R5bGUuY3NzVGV4dCkge1xuICAgICAgICB0YXJnZXRTdHlsZS5jc3NUZXh0ID0gc291cmNlU3R5bGUuY3NzVGV4dDtcbiAgICAgICAgdGFyZ2V0U3R5bGUudHJhbnNmb3JtT3JpZ2luID0gc291cmNlU3R5bGUudHJhbnNmb3JtT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFycmF5LmZyb20oc291cmNlU3R5bGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzb3VyY2VTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICAgICAgICAgICAgdGFyZ2V0U3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUsIHNvdXJjZVN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogYmF0Y2ggY2xvbmUgdGFyZ2V0IHN0eWxlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqIEBwYXJhbSBpbmxpbmVTdHlsZUNsYXNzTmFtZXNcbiAqL1xuZnVuY3Rpb24gYmF0Y2hDbG9uZUNTU1N0eWxlKHNvdXJjZU5vZGU6IFNWR0dFbGVtZW50LCBjbG9uZU5vZGU6IFNWR0dFbGVtZW50LCBpbmxpbmVTdHlsZUNsYXNzTmFtZXM6IHN0cmluZykge1xuICAgIGlmIChpbmxpbmVTdHlsZUNsYXNzTmFtZXMpIHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IGlubGluZVN0eWxlQ2xhc3NOYW1lcyArIGAsLiR7SU1BR0VfQ09OVEFJTkVSfWA7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3NOYW1lcykpO1xuICAgICAgICBjb25zdCBjbG9uZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChjbGFzc05hbWVzKSk7XG5cbiAgICAgICAgc291cmNlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRWxlbWVudHMgPSBBcnJheS5mcm9tKG5vZGUucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lQ2hpbGRFbGVtZW50cyA9IEFycmF5LmZyb20oY2xvbmVOb2Rlc1tpbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIHNvdXJjZU5vZGVzLnB1c2goLi4uY2hpbGRFbGVtZW50cyk7XG4gICAgICAgICAgICBjbG9uZU5vZGVzLnB1c2goLi4uY2xvbmVDaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcHJvY2Vzc2luZyBzdHlsZXNcbiAgICAgICAgc291cmNlTm9kZXMubWFwKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY2xvbmVDU1NTdHlsZShub2RlIGFzIEhUTUxFbGVtZW50LCBjbG9uZU5vZGVzW2luZGV4XSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjb252ZXJ0IGltYWdlcyBpbiB0YXJnZXQgbm9kZXMgaW4gYmF0Y2hlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0SW1hZ2Uoc291cmNlTm9kZTogU1ZHR0VsZW1lbnQsIGNsb25lTm9kZTogU1ZHR0VsZW1lbnQpIHtcbiAgICBjb25zdCBzb3VyY2VJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke0lNQUdFX0NPTlRBSU5FUn1gKSk7XG4gICAgY29uc3QgY2xvbmVJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChgLiR7SU1BR0VfQ09OVEFJTkVSfWApKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgc291cmNlSW1hZ2VOb2Rlcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVJbWFnZU5vZGUgPSBjbG9uZUltYWdlTm9kZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgaW1hZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IChjbG9uZUltYWdlTm9kZSBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignaW1nJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gaW1hZ2U/LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybCkudGhlbihiYXNlNjRJbWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlPy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGJhc2U2NEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbi8qKlxuICogY2xvbmUgc3ZnIGVsZW1lbnRcbiAqIEBwYXJhbSBib2FyZCBib2FyZFxuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIGNsb25lIHN2ZyBlbGVtZW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsb25lU3ZnKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBUb0ltYWdlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgeCwgeSB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IHsgcGFkZGluZyA9IDQsIGlubGluZVN0eWxlQ2xhc3NOYW1lcyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBzb3VyY2VTdmcgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGNvbnN0IHNlbGVjdGVkR0VsZW1lbnRzID0gZWxlbWVudHMubWFwKHZhbHVlID0+IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodmFsdWUpLmcpO1xuICAgIGNvbnN0IGNsb25lU3ZnRWxlbWVudCA9IHNvdXJjZVN2Zy5jbG9uZU5vZGUoKSBhcyBTVkdFbGVtZW50O1xuICAgIGNvbnN0IG5ld0hvc3RFbGVtZW50ID0gUGxhaXRCb2FyZC5nZXRFbGVtZW50SG9zdChib2FyZCkuY2xvbmVOb2RlKCkgYXMgU1ZHR0VsZW1lbnQ7XG5cbiAgICBjbG9uZVN2Z0VsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7d2lkdGh9YCk7XG4gICAgY2xvbmVTdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7aGVpZ2h0fWApO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCBbeCAtIHBhZGRpbmcsIHkgLSBwYWRkaW5nLCB3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZ10uam9pbignLCcpKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBzZWxlY3RlZEdFbGVtZW50cy5tYXAoYXN5bmMgKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZUNoaWxkID0gY2hpbGQuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICAgICAgYmF0Y2hDbG9uZUNTU1N0eWxlKGNoaWxkLCBjbG9uZUNoaWxkLCBpbmxpbmVTdHlsZUNsYXNzTmFtZXMgYXMgc3RyaW5nKTtcblxuICAgICAgICAgICAgYXdhaXQgYmF0Y2hDb252ZXJ0SW1hZ2UoY2hpbGQsIGNsb25lQ2hpbGQpO1xuICAgICAgICAgICAgbmV3SG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVDaGlsZCk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBjbG9uZVN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQobmV3SG9zdEVsZW1lbnQpO1xuICAgIHJldHVybiBjbG9uZVN2Z0VsZW1lbnQ7XG59XG5cbi8qKlxuICogY3VycmVudCBib2FyZCB0cmFuc2ZlciBwaWN0dXJlc1xuICogQHBhcmFtIGJvYXJkIGJvYXJkXG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgaW1hZ2VzIGluIHRoZSBzcGVjaWZpZWQgZm9ybWF0IGJhc2U2NFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9JbWFnZShib2FyZDogUGxhaXRCb2FyZCwgb3B0aW9uczogVG9JbWFnZU9wdGlvbnMpIHtcbiAgICBpZiAoIWJvYXJkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBvcHRpb25zPy5lbGVtZW50cyB8fCBmaW5kRWxlbWVudHMoYm9hcmQsIHsgbWF0Y2g6ICgpID0+IHRydWUsIHJlY3Vyc2lvbjogKCkgPT4gdHJ1ZSB9KTtcbiAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IHsgcmF0aW8gPSAyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdGFuZ2xlO1xuICAgIGNvbnN0IHJhdGlvV2lkdGggPSB3aWR0aCAqIHJhdGlvO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gaGVpZ2h0ICogcmF0aW87XG5cbiAgICBjb25zdCBjbG9uZVN2Z0VsZW1lbnQgPSBhd2FpdCBjbG9uZVN2Zyhib2FyZCwgZWxlbWVudHMsIHRhcmdldFJlY3RhbmdsZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0LCBmaWxsU3R5bGUpO1xuXG4gICAgY29uc3Qgc3ZnU3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhjbG9uZVN2Z0VsZW1lbnQpO1xuICAgIGNvbnN0IGltZ1NyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChzdmdTdHIpfWA7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBpbWcgPSBhd2FpdCBsb2FkSW1hZ2UoaW1nU3JjKTtcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbnZlcnRpbmcgU1ZHIHRvIGltYWdlOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbi8qKlxuICogZG93bmxvYWQgdGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVcbiAqIEBwYXJhbSB1cmwgZG93bmxvYWQgdXJsXG4gKiBAcGFyYW0gbmFtZSBmaWxlIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkSW1hZ2UodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSBuYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xufVxuIl19
@@ -6,6 +6,13 @@ import { getRectangleByElements } from './element';
6
6
  import { BOARD_TO_VIEWPORT_ORIGINATION } from './weak-maps';
7
7
  const IS_FROM_SCROLLING = new WeakMap();
8
8
  const IS_FROM_VIEWPORT_CHANGE = new WeakMap();
9
+ export function toSVGScreenPoint(board, point) {
10
+ const { zoom } = board.viewport;
11
+ const viewBox = getViewBox(board, zoom);
12
+ const x = (point[0] - viewBox[0]) * zoom;
13
+ const y = (point[1] - viewBox[1]) * zoom;
14
+ return [x, y];
15
+ }
9
16
  export function getViewportContainerRect(board) {
10
17
  const { hideScrollbar } = board.options;
11
18
  const scrollBarWidth = hideScrollbar ? SCROLL_BAR_WIDTH : 0;
@@ -93,17 +100,17 @@ export function updateViewportOffset(board) {
93
100
  if (!origination) {
94
101
  return;
95
102
  }
96
- const { zoom } = board.viewport;
97
- const viewBox = getViewBox(board, zoom);
98
- const scrollLeft = (origination[0] - viewBox[0]) * zoom;
99
- const scrollTop = (origination[1] - viewBox[1]) * zoom;
103
+ const [scrollLeft, scrollTop] = toSVGScreenPoint(board, origination);
100
104
  updateViewportContainerScroll(board, scrollLeft, scrollTop);
101
105
  }
102
106
  export function updateViewportContainerScroll(board, left, top, isFromViewportChange = true) {
103
107
  const viewportContainer = PlaitBoard.getViewportContainer(board);
104
108
  const previousScrollLeft = viewportContainer.scrollLeft;
105
109
  const previousScrollTop = viewportContainer.scrollTop;
106
- if (viewportContainer.scrollLeft !== left || viewportContainer.scrollTop !== top) {
110
+ // scrollTop assign 11.8 will get 11.5 in chrome
111
+ // scrollTop assign 11.8 will get 11 in firefox, safari
112
+ // scrollTop assign 11.4 will get 11 in chrome, firefox, safari
113
+ if (viewportContainer.scrollLeft !== Math.floor(left) || viewportContainer.scrollTop !== Math.floor(top)) {
107
114
  viewportContainer.scrollLeft = left;
108
115
  viewportContainer.scrollTop = top;
109
116
  const offsetWidth = viewportContainer.offsetWidth;
@@ -127,7 +134,7 @@ export function updateViewportByScrolling(board, scrollLeft, scrollTop) {
127
134
  const zoom = board.viewport.zoom;
128
135
  const viewBox = getViewBox(board, zoom);
129
136
  const origination = [scrollLeft / zoom + viewBox[0], scrollTop / zoom + viewBox[1]];
130
- if (Point.isEquals(origination, board.viewport.origination)) {
137
+ if (Point.isEquals(origination, getViewportOrigination(board))) {
131
138
  return;
132
139
  }
133
140
  BoardTransforms.updateViewport(board, origination);
@@ -186,4 +193,4 @@ export const setIsFromViewportChange = (board, state) => {
186
193
  IS_FROM_VIEWPORT_CHANGE.set(board, state);
187
194
  };
188
195
  export function scrollToRectangle(board, client) { }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUU3RCxNQUFNLHVCQUF1QixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFpQjtJQUN0RCxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN4QyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFakYsT0FBTztRQUNILEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxHQUFHLGNBQWM7UUFDMUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLEdBQUcsY0FBYztLQUMvQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFpQixFQUFFLElBQVk7SUFDOUQsTUFBTSxZ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QkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsS0FBYyxFQUFFLEVBQUU7SUFDcEUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0RCxPQUFPLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQWMsRUFBRSxFQUFFO0lBQ3pFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsTUFBdUIsSUFBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0NST0xMX0JBUl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNQVhfWk9PTSwgTUlOX1pPT00gfSBmcm9tICcuLi9jb25zdGFudHMvem9vbSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCb2FyZFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zL2JvYXJkJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04gfSBmcm9tICcuL3dlYWstbWFwcyc7XG5cbmNvbnN0IElTX0ZST01fU0NST0xMSU5HID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuY29uc3QgSVNfRlJPTV9WSUVXUE9SVF9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRDb250YWluZXJSZWN0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBoaWRlU2Nyb2xsYmFyIH0gPSBib2FyZC5vcHRpb25zO1xuICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gaGlkZVNjcm9sbGJhciA/IFNDUk9MTF9CQVJfV0lEVEggOiAwO1xuICAgIGNvbnN0IHZpZXdwb3J0UmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHZpZXdwb3J0UmVjdC53aWR0aCArIHNjcm9sbEJhcldpZHRoLFxuICAgICAgICBoZWlnaHQ6IHZpZXdwb3J0UmVjdC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50SG9zdEJCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVjdCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHZpZXdwb3J0Q29udGFpbmVyUmVjdC53aWR0aCAvIHpvb207XG4gICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gdmlld3BvcnRDb250YWluZXJSZWN0LmhlaWdodCAvIHpvb207XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcbiAgICBsZXQgcmlnaHQ6IG51bWJlcjtcbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGJvdHRvbTogbnVtYmVyO1xuXG4gICAgaWYgKGNoaWxkcmVuUmVjdC53aWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgIGNvbnN0IGNlbnRlclggPSBjaGlsZHJlblJlY3QueCArIGNoaWxkcmVuUmVjdC53aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IGhhbGZDb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC8gMjtcbiAgICAgICAgbGVmdCA9IGNlbnRlclggLSBoYWxmQ29udGFpbmVyV2lkdGg7XG4gICAgICAgIHJpZ2h0ID0gY2VudGVyWCArIGhhbGZDb250YWluZXJXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gY2hpbGRyZW5SZWN0Lng7XG4gICAgICAgIHJpZ2h0ID0gY2hpbGRyZW5SZWN0LnggKyBjaGlsZHJlblJlY3Qud2lkdGg7XG4gICAgfVxuICAgIGlmIChjaGlsZHJlblJlY3QuaGVpZ2h0IDwgY29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNlbnRlclkgPSBjaGlsZHJlblJlY3QueSArIGNoaWxkcmVuUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBoYWxmQ29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC8gMjtcbiAgICAgICAgdG9wID0gY2VudGVyWSAtIGhhbGZDb250YWluZXJIZWlnaHQ7XG4gICAgICAgIGJvdHRvbSA9IGNlbnRlclkgKyBoYWxmQ29udGFpbmVySGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IGNoaWxkcmVuUmVjdC55O1xuICAgICAgICBib3R0b20gPSBjaGlsZHJlblJlY3QueSArIGNoaWxkcmVuUmVjdC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQsXG4gICAgICAgIHJpZ2h0LFxuICAgICAgICB0b3AsXG4gICAgICAgIGJvdHRvbVxuICAgIH07XG59XG5cbi8qKlxuICog6aqM6K+B57yp5pS+5q+U5piv5ZCm56ym5ZCI6ZmQ5Yi277yM5aaC5p6c6LaF5Ye66ZmQ5Yi277yM5YiZ6L+U5Zue5ZCI6YCC55qE57yp5pS+5q+UXG4gKiBAcGFyYW0gem9vbSDnvKnmlL7mr5RcbiAqIEBwYXJhbSBtaW5ab29tIOacgOWwj+e8qeaUvuavlFxuICogQHBhcmFtIG1heFpvb20g5pyA5aSn57yp5pS+5q+UXG4gKiBAcmV0dXJucyDmraPnoa7nmoTnvKnmlL7mr5RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wWm9vbUxldmVsKHpvb206IG51bWJlciwgbWluWm9vbSA9IE1JTl9aT09NLCBtYXhab29tID0gTUFYX1pPT00pIHtcbiAgICByZXR1cm4gem9vbSA8IG1pblpvb20gPyBtaW5ab29tIDogem9vbSA+IG1heFpvb20gPyBtYXhab29tIDogem9vbTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxlbWVudEhvc3RCQm94ID0gZ2V0RWxlbWVudEhvc3RCQm94KGJvYXJkLCB6b29tKTtcblxuICAgIGNvbnN0IGhvcml6b250YWxQYWRkaW5nID0gYm9hcmRDb250YWluZXJSZWN0YW5nbGUud2lkdGggLyAyO1xuICAgIGNvbnN0IHZlcnRpY2FsUGFkZGluZyA9IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgY29uc3Qgdmlld0JveCA9IFtcbiAgICAgICAgZWxlbWVudEhvc3RCQm94LmxlZnQgLSBob3Jpem9udGFsUGFkZGluZyAvIHpvb20sXG4gICAgICAgIGVsZW1lbnRIb3N0QkJveC50b3AgLSB2ZXJ0aWNhbFBhZGRpbmcgLyB6b29tLFxuICAgICAgICBlbGVtZW50SG9zdEJCb3gucmlnaHQgLSBlbGVtZW50SG9zdEJCb3gubGVmdCArIChob3Jpem9udGFsUGFkZGluZyAqIDIpIC8gem9vbSxcbiAgICAgICAgZWxlbWVudEhvc3RCQm94LmJvdHRvbSAtIGVsZW1lbnRIb3N0QkJveC50b3AgKyAodmVydGljYWxQYWRkaW5nICogMikgLyB6b29tXG4gICAgXTtcbiAgICByZXR1cm4gdmlld0JveDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdCb3hDZW50ZXJQb2ludChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIHJldHVybiBbY2hpbGRyZW5SZWN0YW5nbGUueCArIGNoaWxkcmVuUmVjdGFuZ2xlLndpZHRoIC8gMiwgY2hpbGRyZW5SZWN0YW5nbGUueSArIGNoaWxkcmVuUmVjdGFuZ2xlLmhlaWdodCAvIDJdIGFzIFBvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U1ZHVmlld0JveChib2FyZDogUGxhaXRCb2FyZCwgdmlld0JveDogbnVtYmVyW10pIHtcbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCk7XG4gICAgaG9zdEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgaG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt2aWV3Qm94WzJdICogem9vbX1weGA7XG4gICAgaG9zdEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dmlld0JveFszXSAqIHpvb219cHhgO1xuXG4gICAgaWYgKHZpZXdCb3ggJiYgdmlld0JveFsyXSA+IDAgJiYgdmlld0JveFszXSA+IDApIHtcbiAgICAgICAgaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCd2aWV3Qm94Jywgdmlld0JveC5qb2luKCcgJykpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3Qgb3JpZ2luYXRpb24gPSBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbiAgICBpZiAoIW9yaWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyB6b29tIH0gPSBib2FyZC52aWV3cG9ydDtcbiAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChvcmlnaW5hdGlvbiFbMF0gLSB2aWV3Qm94WzBdKSAqIHpvb207XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKG9yaWdpbmF0aW9uIVsxXSAtIHZpZXdCb3hbMV0pICogem9vbTtcbiAgICB1cGRhdGVWaWV3cG9ydENvbnRhaW5lclNjcm9sbChib2FyZCwgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0Q29udGFpbmVyU2Nyb2xsKGJvYXJkOiBQbGFpdEJvYXJkLCBsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyLCBpc0Zyb21WaWV3cG9ydENoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lciA9IFBsYWl0Qm9hcmQuZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IHByZXZpb3VzU2Nyb2xsTGVmdCA9IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbExlZnQ7XG4gICAgY29uc3QgcHJldmlvdXNTY3JvbGxUb3AgPSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgaWYgKHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbExlZnQgIT09IGxlZnQgfHwgdmlld3BvcnRDb250YWluZXIuc2Nyb2xsVG9wICE9PSB0b3ApIHtcbiAgICAgICAgdmlld3BvcnRDb250YWluZXIuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFRvcCA9IHRvcDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0V2lkdGggPSB2aWV3cG9ydENvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gdmlld3BvcnRDb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBpZiAocHJldmlvdXNTY3JvbGxMZWZ0ID09PSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0ICYmIHByZXZpb3VzU2Nyb2xsVG9wID09PSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxUb3ApIHtcbiAgICAgICAgICAgIC8vIFRoZSBzY3JvbGwgZXZlbnQgY2Fubm90IGJlIHRyaWdnZXJlZCwgc28gdGhlIG9yaWdpbmF0aW9uIGlzIG1vZGlmaWVkIGRpcmVjdGx5IGJhc2VkIG9uIHRoZSBzY3JvbGwgZGlzdGFuY2UuXG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydEJ5U2Nyb2xsaW5nKGJvYXJkLCBwcmV2aW91c1Njcm9sbExlZnQsIHByZXZpb3VzU2Nyb2xsVG9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsaWRMZWZ0T3JUb3AgPVxuICAgICAgICAgICAgICAgIGxlZnQgPiAwICYmXG4gICAgICAgICAgICAgICAgdG9wID4gMCAmJlxuICAgICAgICAgICAgICAgIGxlZnQgPCB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxXaWR0aCAtIG9mZnNldFdpZHRoICYmXG4gICAgICAgICAgICAgICAgdG9wIDwgdmlld3BvcnRDb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gb2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGlzRnJvbVZpZXdwb3J0Q2hhbmdlICYmIGlzVmFsaWRMZWZ0T3JUb3ApIHtcbiAgICAgICAgICAgICAgICBzZXRJc0Zyb21WaWV3cG9ydENoYW5nZShib2FyZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJ5U2Nyb2xsaW5nKGJvYXJkOiBQbGFpdEJvYXJkLCBzY3JvbGxMZWZ0OiBudW1iZXIsIHNjcm9sbFRvcDogbnVtYmVyKSB7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3Qgdmlld0JveCA9IGdldFZpZXdCb3goYm9hcmQsIHpvb20pO1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gW3Njcm9sbExlZnQgLyB6b29tICsgdmlld0JveFswXSwgc2Nyb2xsVG9wIC8gem9vbSArIHZpZXdCb3hbMV1dIGFzIFBvaW50O1xuICAgIGlmIChQb2ludC5pc0VxdWFscyhvcmlnaW5hdGlvbiwgYm9hcmQudmlld3BvcnQub3JpZ2luYXRpb24pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBvcmlnaW5hdGlvbik7XG4gICAgc2V0SXNGcm9tU2Nyb2xsaW5nKGJvYXJkLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lcihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0Vmlld3BvcnRDb250YWluZXJSZWN0KGJvYXJkKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lciA9IFBsYWl0Qm9hcmQuZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIHZpZXdwb3J0Q29udGFpbmVyLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgIHZpZXdwb3J0Q29udGFpbmVyLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplVmlld0JveChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IHZpZXdCb3ggPSBnZXRWaWV3Qm94KGJvYXJkLCB6b29tKTtcbiAgICBzZXRTVkdWaWV3Qm94KGJvYXJkLCB2aWV3Qm94KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVWaWV3cG9ydE9mZnNldChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGlmICghYm9hcmQudmlld3BvcnQ/Lm9yaWdpbmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgdmlld0JveCA9IGdldFZpZXdCb3goYm9hcmQsIHpvb20pO1xuICAgICAgICBjb25zdCBjZW50ZXJYID0gdmlld0JveFswXSArIHZpZXdCb3hbMl0gLyAyO1xuICAgICAgICBjb25zdCBjZW50ZXJZID0gdmlld0JveFsxXSArIHZpZXdCb3hbM10gLyAyO1xuICAgICAgICBjb25zdCBvcmlnaW5hdGlvbiA9IFtjZW50ZXJYIC0gdmlld3BvcnRDb250YWluZXJSZWN0LndpZHRoIC8gMiAvIHpvb20sIGNlbnRlclkgLSB2aWV3cG9ydENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMiAvIHpvb21dIGFzIFBvaW50O1xuICAgICAgICB1cGRhdGVWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkLCBvcmlnaW5hdGlvbik7XG4gICAgICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB1cGRhdGVWaWV3cG9ydE9mZnNldChib2FyZCk7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVWaWV3cG9ydE9yaWdpbmF0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvcmlnaW5hdGlvbjogUG9pbnQpID0+IHtcbiAgICBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTi5zZXQoYm9hcmQsIG9yaWdpbmF0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTi5kZWxldGUoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZpZXdwb3J0T3JpZ2luYXRpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hdGlvbiA9IEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OLmdldChib2FyZCk7XG4gICAgaWYgKG9yaWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYm9hcmQudmlld3BvcnQub3JpZ2luYXRpb247XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzRnJvbVNjcm9sbGluZyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiAhIUlTX0ZST01fU0NST0xMSU5HLmdldChib2FyZCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SXNGcm9tU2Nyb2xsaW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdGF0ZTogYm9vbGVhbikgPT4ge1xuICAgIElTX0ZST01fU0NST0xMSU5HLnNldChib2FyZCwgc3RhdGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRnJvbVZpZXdwb3J0Q2hhbmdlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuICEhSVNfRlJPTV9WSUVXUE9SVF9DSEFOR0UuZ2V0KGJvYXJkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRJc0Zyb21WaWV3cG9ydENoYW5nZSA9IChib2FyZDogUGxhaXRCb2FyZCwgc3RhdGU6IGJvb2xlYW4pID0+IHtcbiAgICBJU19GUk9NX1ZJRVdQT1JUX0NIQU5HRS5zZXQoYm9hcmQsIHN0YXRlKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxUb1JlY3RhbmdsZShib2FyZDogUGxhaXRCb2FyZCwgY2xpZW50OiBSZWN0YW5nbGVDbGllbnQpIHt9XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUU3RCxNQUFNLHVCQUF1QixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLEtBQVk7SUFDNUQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDekMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFVLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSx3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SUFDN0QsSUFBSSxXQUFXLEVBQUU7UUFDYixPQUFPLFdBQVcsQ0FBQztLQUN0QjtTQUFNO1FBQ0gsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztLQUNyQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNqRCxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQWMsRUFBRSxFQUFFO0lBQ3BFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQsT0FBTyxDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFjLEVBQUUsRUFBRTtJQUN6RSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFpQixFQUFFLE1BQXVCLElBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNDUk9MTF9CQVJfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTUFYX1pPT00sIE1JTl9aT09NIH0gZnJvbSAnLi4vY29uc3RhbnRzL3pvb20nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm9hcmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcy9ib2FyZCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OIH0gZnJvbSAnLi93ZWFrLW1hcHMnO1xuXG5jb25zdCBJU19GUk9NX1NDUk9MTElORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmNvbnN0IElTX0ZST01fVklFV1BPUlRfQ0hBTkdFID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvU1ZHU2NyZWVuUG9pbnQoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IHsgem9vbSB9ID0gYm9hcmQudmlld3BvcnQ7XG4gICAgY29uc3Qgdmlld0JveCA9IGdldFZpZXdCb3goYm9hcmQsIHpvb20pO1xuICAgIGNvbnN0IHggPSAocG9pbnRbMF0gLSB2aWV3Qm94WzBdKSAqIHpvb207XG4gICAgY29uc3QgeSA9IChwb2ludFsxXSAtIHZpZXdCb3hbMV0pICogem9vbTtcbiAgICByZXR1cm4gW3gsIHldIGFzIFBvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRDb250YWluZXJSZWN0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBoaWRlU2Nyb2xsYmFyIH0gPSBib2FyZC5vcHRpb25zO1xuICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gaGlkZVNjcm9sbGJhciA/IFNDUk9MTF9CQVJfV0lEVEggOiAwO1xuICAgIGNvbnN0IHZpZXdwb3J0UmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHZpZXdwb3J0UmVjdC53aWR0aCArIHNjcm9sbEJhcldpZHRoLFxuICAgICAgICBoZWlnaHQ6IHZpZXdwb3J0UmVjdC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50SG9zdEJCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVjdCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHZpZXdwb3J0Q29udGFpbmVyUmVjdC53aWR0aCAvIHpvb207XG4gICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gdmlld3BvcnRDb250YWluZXJSZWN0LmhlaWdodCAvIHpvb207XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcbiAgICBsZXQgcmlnaHQ6IG51bWJlcjtcbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGJvdHRvbTogbnVtYmVyO1xuXG4gICAgaWYgKGNoaWxkcmVuUmVjdC53aWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgIGNvbnN0IGNlbnRlclggPSBjaGlsZHJlblJlY3QueCArIGNoaWxkcmVuUmVjdC53aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IGhhbGZDb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC8gMjtcbiAgICAgICAgbGVmdCA9IGNlbnRlclggLSBoYWxmQ29udGFpbmVyV2lkdGg7XG4gICAgICAgIHJpZ2h0ID0gY2VudGVyWCArIGhhbGZDb250YWluZXJXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gY2hpbGRyZW5SZWN0Lng7XG4gICAgICAgIHJpZ2h0ID0gY2hpbGRyZW5SZWN0LnggKyBjaGlsZHJlblJlY3Qud2lkdGg7XG4gICAgfVxuICAgIGlmIChjaGlsZHJlblJlY3QuaGVpZ2h0IDwgY29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNlbnRlclkgPSBjaGlsZHJlblJlY3QueSArIGNoaWxkcmVuUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBoYWxmQ29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC8gMjtcbiAgICAgICAgdG9wID0gY2VudGVyWSAtIGhhbGZDb250YWluZXJIZWlnaHQ7XG4gICAgICAgIGJvdHRvbSA9IGNlbnRlclkgKyBoYWxmQ29udGFpbmVySGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IGNoaWxkcmVuUmVjdC55O1xuICAgICAgICBib3R0b20gPSBjaGlsZHJlblJlY3QueSArIGNoaWxkcmVuUmVjdC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQsXG4gICAgICAgIHJpZ2h0LFxuICAgICAgICB0b3AsXG4gICAgICAgIGJvdHRvbVxuICAgIH07XG59XG5cbi8qKlxuICog6aqM6K+B57yp5pS+5q+U5piv5ZCm56ym5ZCI6ZmQ5Yi277yM5aaC5p6c6LaF5Ye66ZmQ5Yi277yM5YiZ6L+U5Zue5ZCI6YCC55qE57yp5pS+5q+UXG4gKiBAcGFyYW0gem9vbSDnvKnmlL7mr5RcbiAqIEBwYXJhbSBtaW5ab29tIOacgOWwj+e8qeaUvuavlFxuICogQHBhcmFtIG1heFpvb20g5pyA5aSn57yp5pS+5q+UXG4gKiBAcmV0dXJucyDmraPnoa7nmoTnvKnmlL7mr5RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wWm9vbUxldmVsKHpvb206IG51bWJlciwgbWluWm9vbSA9IE1JTl9aT09NLCBtYXhab29tID0gTUFYX1pPT00pIHtcbiAgICByZXR1cm4gem9vbSA8IG1pblpvb20gPyBtaW5ab29tIDogem9vbSA+IG1heFpvb20gPyBtYXhab29tIDogem9vbTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxlbWVudEhvc3RCQm94ID0gZ2V0RWxlbWVudEhvc3RCQm94KGJvYXJkLCB6b29tKTtcblxuICAgIGNvbnN0IGhvcml6b250YWxQYWRkaW5nID0gYm9hcmRDb250YWluZXJSZWN0YW5nbGUud2lkdGggLyAyO1xuICAgIGNvbnN0IHZlcnRpY2FsUGFkZGluZyA9IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgY29uc3Qgdmlld0JveCA9IFtcbiAgICAgICAgZWxlbWVudEhvc3RCQm94LmxlZnQgLSBob3Jpem9udGFsUGFkZGluZyAvIHpvb20sXG4gICAgICAgIGVsZW1lbnRIb3N0QkJveC50b3AgLSB2ZXJ0aWNhbFBhZGRpbmcgLyB6b29tLFxuICAgICAgICBlbGVtZW50SG9zdEJCb3gucmlnaHQgLSBlbGVtZW50SG9zdEJCb3gubGVmdCArIChob3Jpem9udGFsUGFkZGluZyAqIDIpIC8gem9vbSxcbiAgICAgICAgZWxlbWVudEhvc3RCQm94LmJvdHRvbSAtIGVsZW1lbnRIb3N0QkJveC50b3AgKyAodmVydGljYWxQYWRkaW5nICogMikgLyB6b29tXG4gICAgXTtcbiAgICByZXR1cm4gdmlld0JveDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdCb3hDZW50ZXJQb2ludChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIHJldHVybiBbY2hpbGRyZW5SZWN0YW5nbGUueCArIGNoaWxkcmVuUmVjdGFuZ2xlLndpZHRoIC8gMiwgY2hpbGRyZW5SZWN0YW5nbGUueSArIGNoaWxkcmVuUmVjdGFuZ2xlLmhlaWdodCAvIDJdIGFzIFBvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U1ZHVmlld0JveChib2FyZDogUGxhaXRCb2FyZCwgdmlld0JveDogbnVtYmVyW10pIHtcbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCk7XG4gICAgaG9zdEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgaG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt2aWV3Qm94WzJdICogem9vbX1weGA7XG4gICAgaG9zdEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dmlld0JveFszXSAqIHpvb219cHhgO1xuXG4gICAgaWYgKHZpZXdCb3ggJiYgdmlld0JveFsyXSA+IDAgJiYgdmlld0JveFszXSA+IDApIHtcbiAgICAgICAgaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCd2aWV3Qm94Jywgdmlld0JveC5qb2luKCcgJykpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3Qgb3JpZ2luYXRpb24gPSBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbiAgICBpZiAoIW9yaWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgW3Njcm9sbExlZnQsIHNjcm9sbFRvcF0gPSB0b1NWR1NjcmVlblBvaW50KGJvYXJkLCBvcmlnaW5hdGlvbik7XG4gICAgdXBkYXRlVmlld3BvcnRDb250YWluZXJTY3JvbGwoYm9hcmQsIHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWaWV3cG9ydENvbnRhaW5lclNjcm9sbChib2FyZDogUGxhaXRCb2FyZCwgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlciwgaXNGcm9tVmlld3BvcnRDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3Qgdmlld3BvcnRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKTtcbiAgICBjb25zdCBwcmV2aW91c1Njcm9sbExlZnQgPSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IHByZXZpb3VzU2Nyb2xsVG9wID0gdmlld3BvcnRDb250YWluZXIuc2Nyb2xsVG9wO1xuICAgIC8vIHNjcm9sbFRvcCBhc3NpZ24gMTEuOCB3aWxsIGdldCAxMS41IGluIGNocm9tZVxuICAgIC8vIHNjcm9sbFRvcCBhc3NpZ24gMTEuOCB3aWxsIGdldCAxMSBpbiBmaXJlZm94LCBzYWZhcmlcbiAgICAvLyBzY3JvbGxUb3AgYXNzaWduIDExLjQgd2lsbCBnZXQgMTEgaW4gY2hyb21lLCBmaXJlZm94LCBzYWZhcmlcbiAgICBpZiAodmlld3BvcnRDb250YWluZXIuc2Nyb2xsTGVmdCAhPT0gTWF0aC5mbG9vcihsZWZ0KSB8fCB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxUb3AgIT09IE1hdGguZmxvb3IodG9wKSkge1xuICAgICAgICB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0ID0gbGVmdDtcbiAgICAgICAgdmlld3BvcnRDb250YWluZXIuc2Nyb2xsVG9wID0gdG9wO1xuICAgICAgICBjb25zdCBvZmZzZXRXaWR0aCA9IHZpZXdwb3J0Q29udGFpbmVyLm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBvZmZzZXRIZWlnaHQgPSB2aWV3cG9ydENvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGlmIChwcmV2aW91c1Njcm9sbExlZnQgPT09IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbExlZnQgJiYgcHJldmlvdXNTY3JvbGxUb3AgPT09IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFRvcCkge1xuICAgICAgICAgICAgLy8gVGhlIHNjcm9sbCBldmVudCBjYW5ub3QgYmUgdHJpZ2dlcmVkLCBzbyB0aGUgb3JpZ2luYXRpb24gaXMgbW9kaWZpZWQgZGlyZWN0bHkgYmFzZWQgb24gdGhlIHNjcm9sbCBkaXN0YW5jZS5cbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0QnlTY3JvbGxpbmcoYm9hcmQsIHByZXZpb3VzU2Nyb2xsTGVmdCwgcHJldmlvdXNTY3JvbGxUb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXNWYWxpZExlZnRPclRvcCA9XG4gICAgICAgICAgICAgICAgbGVmdCA+IDAgJiZcbiAgICAgICAgICAgICAgICB0b3AgPiAwICYmXG4gICAgICAgICAgICAgICAgbGVmdCA8IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFdpZHRoIC0gb2Zmc2V0V2lkdGggJiZcbiAgICAgICAgICAgICAgICB0b3AgPCB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBvZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoaXNGcm9tVmlld3BvcnRDaGFuZ2UgJiYgaXNWYWxpZExlZnRPclRvcCkge1xuICAgICAgICAgICAgICAgIHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlKGJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0QnlTY3JvbGxpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNjcm9sbExlZnQ6IG51bWJlciwgc2Nyb2xsVG9wOiBudW1iZXIpIHtcbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgY29uc3Qgb3JpZ2luYXRpb24gPSBbc2Nyb2xsTGVmdCAvIHpvb20gKyB2aWV3Qm94WzBdLCBzY3JvbGxUb3AgLyB6b29tICsgdmlld0JveFsxXV0gYXMgUG9pbnQ7XG4gICAgaWYgKFBvaW50LmlzRXF1YWxzKG9yaWdpbmF0aW9uLCBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlVmlld3BvcnQoYm9hcmQsIG9yaWdpbmF0aW9uKTtcbiAgICBzZXRJc0Zyb21TY3JvbGxpbmcoYm9hcmQsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRWaWV3cG9ydENvbnRhaW5lclJlY3QoYm9hcmQpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyID0gUGxhaXRCb2FyZC5nZXRWaWV3cG9ydENvbnRhaW5lcihib2FyZCk7XG4gICAgdmlld3BvcnRDb250YWluZXIuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgdmlld3BvcnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVWaWV3Qm94KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3Qgdmlld0JveCA9IGdldFZpZXdCb3goYm9hcmQsIHpvb20pO1xuICAgIHNldFNWR1ZpZXdCb3goYm9hcmQsIHZpZXdCb3gpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgaWYgKCFib2FyZC52aWV3cG9ydD8ub3JpZ2luYXRpb24pIHtcbiAgICAgICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyUmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgICAgIGNvbnN0IGNlbnRlclggPSB2aWV3Qm94WzBdICsgdmlld0JveFsyXSAvIDI7XG4gICAgICAgIGNvbnN0IGNlbnRlclkgPSB2aWV3Qm94WzFdICsgdmlld0JveFszXSAvIDI7XG4gICAgICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gW2NlbnRlclggLSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyAyIC8gem9vbSwgY2VudGVyWSAtIHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC8gem9vbV0gYXMgUG9pbnQ7XG4gICAgICAgIHVwZGF0ZVZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQsIG9yaWdpbmF0aW9uKTtcbiAgICAgICAgdXBkYXRlVmlld3BvcnRPZmZzZXQoYm9hcmQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVZpZXdwb3J0T3JpZ2luYXRpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9yaWdpbmF0aW9uOiBQb2ludCkgPT4ge1xuICAgIEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OLnNldChib2FyZCwgb3JpZ2luYXRpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyVmlld3BvcnRPcmlnaW5hdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OLmRlbGV0ZShib2FyZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04uZ2V0KGJvYXJkKTtcbiAgICBpZiAob3JpZ2luYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBib2FyZC52aWV3cG9ydC5vcmlnaW5hdGlvbjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNGcm9tU2Nyb2xsaW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuICEhSVNfRlJPTV9TQ1JPTExJTkcuZ2V0KGJvYXJkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRJc0Zyb21TY3JvbGxpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN0YXRlOiBib29sZWFuKSA9PiB7XG4gICAgSVNfRlJPTV9TQ1JPTExJTkcuc2V0KGJvYXJkLCBzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNGcm9tVmlld3BvcnRDaGFuZ2UgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19GUk9NX1ZJRVdQT1JUX0NIQU5HRS5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdGF0ZTogYm9vbGVhbikgPT4ge1xuICAgIElTX0ZST01fVklFV1BPUlRfQ0hBTkdFLnNldChib2FyZCwgc3RhdGUpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFRvUmVjdGFuZ2xlKGJvYXJkOiBQbGFpdEJvYXJkLCBjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCkge31cbiJdfQ==
@@ -5,6 +5,7 @@ export const NODE_TO_INDEX = new WeakMap();
5
5
  export const NODE_TO_PARENT = new WeakMap();
6
6
  export const IS_TEXT_EDITABLE = new WeakMap();
7
7
  export const BOARD_TO_ON_CHANGE = new WeakMap();
8
+ export const BOARD_TO_AFTER_CHANGE = new WeakMap();
8
9
  export const BOARD_TO_COMPONENT = new WeakMap();
9
10
  export const BOARD_TO_ROUGH_SVG = new WeakMap();
10
11
  export const BOARD_TO_HOST = new WeakMap();
@@ -18,4 +19,4 @@ export const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
18
19
  export const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
19
20
  export const BOARD_TO_MOVING_ELEMENT = new WeakMap();
20
21
  export const PATH_REFS = new WeakMap();
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvd2Vhay1tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTBCLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXVDLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxFQUE2QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUF5QyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksT0FBTyxFQUE4QixDQUFDO0FBRW5GLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRTlFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRS9FLHFDQUFxQztBQUNyQyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLE9BQU8sRUFBNEQsQ0FBQztBQUVuSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVqRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQXNDLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgQm9hcmRFbGVtZW50SG9zdEludGVyZmFjZSB9IGZyb20gJy4uL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBhdGhSZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BhdGgtcmVmJztcblxuLy8gcmVjb3JkIHJpY2h0ZXh0IHR5cGUgc3RhdHVzXG5leHBvcnQgY29uc3QgSVNfQk9BUkRfQ0FDSEUgPSBuZXcgV2Vha01hcDxPYmplY3QsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBGTFVTSElORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX0lOREVYID0gbmV3IFdlYWtNYXA8UGxhaXROb2RlLCBudW1iZXI+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX1BBUkVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgQW5jZXN0b3I+KCk7XG5cbmV4cG9ydCBjb25zdCBJU19URVhUX0VESVRBQkxFID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX09OX0NIQU5HRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsICgpID0+IHZvaWQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19DT01QT05FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBCb2FyZENvbXBvbmVudEludGVyZmFjZT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1JPVUdIX1NWRyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFJvdWdoU1ZHPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fSE9TVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFNWR1NWR0VsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19FTEVNRU5UX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBCb2FyZEVsZW1lbnRIb3N0SW50ZXJmYWNlPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudFtdPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJEID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUG9pbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19NT1ZJTkdfUE9JTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQb2ludD4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUG9pbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuLy8gc2F2ZSBubyBzdGFuZGFyZCBzZWxlY3RlZCBlbGVtZW50c1xuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIHsgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdOyB0aW1lb3V0SWQ6IGFueSB9PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fTU9WSU5HX0VMRU1FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnRbXT4oKTtcblxuZXhwb3J0IGNvbnN0IFBBVEhfUkVGUzogV2Vha01hcDxQbGFpdEJvYXJkLCBTZXQ8UGF0aFJlZj4+ID0gbmV3IFdlYWtNYXAoKTtcbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvd2Vhay1tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTBCLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQTBCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXVDLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxFQUE2QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUF5QyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksT0FBTyxFQUE4QixDQUFDO0FBRW5GLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRTlFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRS9FLHFDQUFxQztBQUNyQyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLE9BQU8sRUFBNEQsQ0FBQztBQUVuSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVqRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQXNDLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgQm9hcmRFbGVtZW50SG9zdEludGVyZmFjZSB9IGZyb20gJy4uL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBhdGhSZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BhdGgtcmVmJztcblxuLy8gcmVjb3JkIHJpY2h0ZXh0IHR5cGUgc3RhdHVzXG5leHBvcnQgY29uc3QgSVNfQk9BUkRfQ0FDSEUgPSBuZXcgV2Vha01hcDxPYmplY3QsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBGTFVTSElORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX0lOREVYID0gbmV3IFdlYWtNYXA8UGxhaXROb2RlLCBudW1iZXI+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX1BBUkVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgQW5jZXN0b3I+KCk7XG5cbmV4cG9ydCBjb25zdCBJU19URVhUX0VESVRBQkxFID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX09OX0NIQU5HRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsICgpID0+IHZvaWQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19BRlRFUl9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCAoKSA9PiB2b2lkPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fQ09NUE9ORU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgQm9hcmRDb21wb25lbnRJbnRlcmZhY2U+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19ST1VHSF9TVkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBSb3VnaFNWRz4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBTVkdTVkdFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fRUxFTUVOVF9IT1NUID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgQm9hcmRFbGVtZW50SG9zdEludGVyZmFjZT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnRbXT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBvaW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fTU9WSU5HX1BPSU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUG9pbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTiA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBvaW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbi8vIHNhdmUgbm8gc3RhbmRhcmQgc2VsZWN0ZWQgZWxlbWVudHNcbmV4cG9ydCBjb25zdCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCB7IGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTsgdGltZW91dElkOiBhbnkgfT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX01PVklOR19FTEVNRU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBQQVRIX1JFRlM6IFdlYWtNYXA8UGxhaXRCb2FyZCwgU2V0PFBhdGhSZWY+PiA9IG5ldyBXZWFrTWFwKCk7XG4iXX0=