@ultraviolet/ui 1.63.0 → 1.65.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.
@@ -2,14 +2,16 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("@emotion/react/jsx-runtime");
4
4
  const _styled = require("@emotion/styled/base");
5
+ const themes = require("@ultraviolet/themes");
5
6
  const React = require("react");
6
- const index$1 = require("../Popover/index.cjs");
7
- const index = require("../Tag/index.cjs");
7
+ const index = require("../Popover/index.cjs");
8
+ const index$1 = require("../Tag/index.cjs");
8
9
  const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
9
10
  const _styled__default = /* @__PURE__ */ _interopDefaultCompat(_styled);
10
11
  function _EMOTION_STRINGIFIED_CSS_ERROR__() {
11
12
  return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
12
13
  }
14
+ const TAGS_GAP = themes.consoleLightTheme.space["1"];
13
15
  const StyledContainer = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
14
16
  target: "eb6op482"
15
17
  } : {
@@ -21,7 +23,7 @@ const StyledContainer = /* @__PURE__ */ _styled__default.default("div", process.
21
23
  } : {
22
24
  name: "zjik7",
23
25
  styles: "display:flex",
24
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1RhZ0xpc3QvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1rQyIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9UYWdMaXN0L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHJvcHMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICcuLi9Qb3BvdmVyJ1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vVGFnJ1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuYFxuXG5jb25zdCBUYWdzV3JhcHBlciA9IHN0eWxlZC5zcGFuYFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBtYXgtd2lkdGg6IDM1MHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG5gXG5cbmNvbnN0IFN0eWxlZFRhZ0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBtdWx0aWxpbmU/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgZ2FwOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxJ119O1xuICAkeyh7IG11bHRpbGluZSB9KSA9PiBtdWx0aWxpbmUgJiYgYGZsZXgtd3JhcDogd3JhcDtgfTtcbmBcblxudHlwZSBUYWdMaXN0UHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIGNoYXJhY3RlcnMgbGVuZ3RoIG9mIGFsbCB0YWdzIHVudGlsIGl0IGhpZGUgdGFncyBpbnRvIHRvb2x0aXAuXG4gICAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgdGFncz86IChcbiAgICB8IHN0cmluZ1xuICAgIHwgeyBsYWJlbDogc3RyaW5nOyBpY29uOiBOb25OdWxsYWJsZTxDb21wb25lbnRQcm9wczx0eXBlb2YgVGFnPlsnaWNvbiddPiB9XG4gIClbXVxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSBjaGFyYWN0ZXJzIGxlbmd0aCBvZiBhbGwgdGFncyB1bnRpbCBpdCBoaWRlIHRhZ3MgaW50byB0b29sdGlwLlxuICAgKi9cbiAgdGhyZXNob2xkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIHdpZHRoIG9mIGVhY2ggdGFnLiBUaGlzIGRvZXNuJ3QgYXBwbHkgZm9yIHRhZ3MgaW4gdG9vbHRpcC5cbiAgICovXG4gIG11bHRpbGluZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGVmaW5lIHRoZSB0aXRsZSBvZiB0aGUgUG9wb3Zlciwgd2hlbiBzb21lIHRhZ3MgYXJlIGhpZGRlbiBiZWNhdXNlIG9mIHRoZSB0aHJlc2hvbGQuXG4gICAqL1xuICBwb3BvdmVyVGl0bGU6IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHBvcG92ZXIgd2lsbCBiZSBwbGFjZWQgYXV0b21hdGljYWxseSBieSBkZWZhdWx0LiBZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyIHRocm91Z2hcbiAgICogdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHBvcG92ZXJQbGFjZW1lbnQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wb3Zlcj5bJ3BsYWNlbWVudCddXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAnZGF0YS10ZXN0aWQnPzogc3RyaW5nXG59ICYgUGljazxDb21wb25lbnRQcm9wczx0eXBlb2YgVGFnPiwgJ2NvcGlhYmxlJyB8ICdjb3B5VGV4dCcgfCAnY29waWVkVGV4dCc+XG5cbmNvbnN0IERFRkFVTFRfVEFHUzogVGFnTGlzdFByb3BzWyd0YWdzJ10gPSBbXVxuXG5jb25zdCBnZXRUYWdMYWJlbCA9ICh0YWc6IE5vbk51bGxhYmxlPFRhZ0xpc3RQcm9wc1sndGFncyddPltudW1iZXJdKSA9PlxuICB0eXBlb2YgdGFnID09PSAnb2JqZWN0JyA/IHRhZy5sYWJlbCA6IHRhZ1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gZGlzcGxheSBhIGxpc3Qgb2YgdGFncyB3aXRoIGEgdGhyZXNob2xkIGFuZCBhIHBvcG92ZXIgd2hlbiB0aGVyZSBhcmUgdG9vIG1hbnkgdGFncy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRhZ0xpc3QgPSAoe1xuICBtYXhMZW5ndGggPSA2MDAsXG4gIHRhZ3MgPSBERUZBVUxUX1RBR1MsXG4gIHRocmVzaG9sZCA9IDEsXG4gIG11bHRpbGluZSA9IGZhbHNlLFxuICBwb3BvdmVyVGl0bGUsXG4gIHBvcG92ZXJQbGFjZW1lbnQsXG4gIGNvcGlhYmxlLFxuICBjb3B5VGV4dCxcbiAgY29waWVkVGV4dCxcbiAgY2xhc3NOYW1lLFxuICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxufTogVGFnTGlzdFByb3BzKSA9PiB7XG4gIGxldCB0bXBUaHJlc2hvbGQgPSB0aHJlc2hvbGRcbiAgaWYgKFxuICAgIHRhZ3MubGVuZ3RoID4gMCAmJlxuICAgIHRhZ3NcbiAgICAgIC5zbGljZSgwLCB0bXBUaHJlc2hvbGQpXG4gICAgICAucmVkdWNlPHN0cmluZz4oKGFjYywgdGFnKSA9PiBhY2MgKyBnZXRUYWdMYWJlbCh0YWcpLCAnJykubGVuZ3RoID5cbiAgICAgIG1heExlbmd0aFxuICApIHtcbiAgICAvLyBJZiB0b3RhbCB0YWdzIGxlbmd0aCBpbiBjaGFyYWN0ZXJzIGlzIGFib3ZlIG1heExlbmd0aCxcbiAgICAvLyB0aHJlc2hvbGQgaXMgZGVjcmVtZW50ZWQgaW4gb3JkZXIgdG8gcHJldmVudCB0b28gbWFueSBsb25nIHRhZ3MgZGlzcGxheWVkLlxuICAgIHRtcFRocmVzaG9sZCAtPSAxXG4gIH1cbiAgY29uc3QgaGFzTWFueVRhZ3MgPSB0YWdzLmxlbmd0aCA+IHRtcFRocmVzaG9sZCB8fCBmYWxzZVxuICBjb25zdCB2aXNpYmxlVGFnc0NvdW50ID0gaGFzTWFueVRhZ3MgPyB0bXBUaHJlc2hvbGQgOiB0YWdzLmxlbmd0aFxuXG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldElzVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBpZiAoIXRhZ3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENvbnRhaW5lciBjbGFzc05hbWU9e2NsYXNzTmFtZX0gZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9PlxuICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lciBtdWx0aWxpbmU9e211bHRpbGluZX0+XG4gICAgICAgIHt0YWdzLnNsaWNlKDAsIHZpc2libGVUYWdzQ291bnQpLm1hcCgodGFnLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxUYWdcbiAgICAgICAgICAgIC8vIHVzZWZ1bCB3aGVuIHR3byB0YWdzIGFyZSBpZGVudGljYWwgYCR7dGFnfS0ke2luZGV4fWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgIGtleT17YCR7Z2V0VGFnTGFiZWwodGFnKX0tJHtpbmRleH1gfVxuICAgICAgICAgICAgY29waWFibGU9e2NvcGlhYmxlfVxuICAgICAgICAgICAgY29weVRleHQ9e2NvcHlUZXh0fVxuICAgICAgICAgICAgY29waWVkVGV4dD17Y29waWVkVGV4dH1cbiAgICAgICAgICAgIGljb249e3R5cGVvZiB0YWcgPT09ICdvYmplY3QnID8gdGFnLmljb24gOiB1bmRlZmluZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2dldFRhZ0xhYmVsKHRhZyl9XG4gICAgICAgICAgPC9UYWc+XG4gICAgICAgICkpfVxuICAgICAgPC9TdHlsZWRUYWdDb250YWluZXI+XG4gICAgICB7aGFzTWFueVRhZ3MgPyAoXG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgdGl0bGU9e3BvcG92ZXJUaXRsZX1cbiAgICAgICAgICB2aXNpYmxlPXtpc1Zpc2libGV9XG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc1Zpc2libGUoZmFsc2UpfVxuICAgICAgICAgIHBsYWNlbWVudD17cG9wb3ZlclBsYWNlbWVudH1cbiAgICAgICAgICBjb250ZW50PXtcbiAgICAgICAgICAgIDxTdHlsZWRUYWdDb250YWluZXIgbXVsdGlsaW5lPlxuICAgICAgICAgICAgICB7dGFncy5zbGljZSh2aXNpYmxlVGFnc0NvdW50KS5tYXAoKHRhZywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8VGFnXG4gICAgICAgICAgICAgICAgICAvLyB1c2VmdWwgd2hlbiB0d28gdGFncyBhcmUgaWRlbnRpY2FsIGAke3RhZ30tJHtpbmRleH1gXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2dldFRhZ0xhYmVsKHRhZyl9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgIGNvcGlhYmxlPXtjb3BpYWJsZX1cbiAgICAgICAgICAgICAgICAgIGNvcHlUZXh0PXtjb3B5VGV4dH1cbiAgICAgICAgICAgICAgICAgIGNvcGllZFRleHQ9e2NvcGllZFRleHR9XG4gICAgICAgICAgICAgICAgICBpY29uPXt0eXBlb2YgdGFnID09PSAnb2JqZWN0JyA/IHRhZy5pY29uIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtnZXRUYWdMYWJlbCh0YWcpfVxuICAgICAgICAgICAgICAgIDwvVGFnPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU3R5bGVkVGFnQ29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWdzV3JhcHBlclxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Ake2RhdGFUZXN0SWQgPz8gJ3RhZ2xpc3QnfS1vcGVuYH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVmlzaWJsZSh0cnVlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICAre3RhZ3MubGVuZ3RoIC0gdG1wVGhyZXNob2xkfVxuICAgICAgICAgIDwvVGFnc1dyYXBwZXI+XG4gICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU3R5bGVkQ29udGFpbmVyPlxuICApXG59XG4iXX0= */",
26
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1RhZ0xpc3QvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNrQyIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9UYWdMaXN0L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgY29uc29sZUxpZ2h0VGhlbWUgfSBmcm9tICdAdWx0cmF2aW9sZXQvdGhlbWVzJ1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFByb3BzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vUG9wb3ZlcidcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL1RhZydcblxuY29uc3QgVEFHU19HQVAgPSBjb25zb2xlTGlnaHRUaGVtZS5zcGFjZVsnMSddXG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gXG5cbmNvbnN0IFRhZ3NXcmFwcGVyID0gc3R5bGVkLnNwYW5gXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gIG1heC13aWR0aDogMzUwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbmBcblxuY29uc3QgU3R5bGVkVGFnQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7XG4gIGdhcDogc3RyaW5nXG4gIG11bHRpbGluZT86IGJvb2xlYW5cbiAgcG9wb3ZlclRyaWdnZXJXaWR0aD86IG51bWJlclxufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBnYXA6ICR7KHsgZ2FwIH0pID0+IGdhcH07XG4gICR7KHsgbXVsdGlsaW5lIH0pID0+IG11bHRpbGluZSAmJiBgZmxleC13cmFwOiB3cmFwO2B9O1xuXG4gIC8vIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIG9uZSB0YWcgYW5kIHdlIG5lZWQgdG8gZWxsaXBzaXMgaXRcbiAgJHsoeyBwb3BvdmVyVHJpZ2dlcldpZHRoIH0pID0+XG4gICAgcG9wb3ZlclRyaWdnZXJXaWR0aCAmJlxuICAgIGBcbiAgICAgICY6aGFzKC5lbGxpcHNlZCkge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gJHtwb3BvdmVyVHJpZ2dlcldpZHRofXB4KTsgLy8gdG8gbGV0IHNwYWNlIGZvciB0aGUgK1ggYnV0dG9uXG4gICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgICYgc3BhbiwgZGl2IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICB9XG4gIGB9O1xuYFxuXG5leHBvcnQgdHlwZSBUYWdUeXBlID1cbiAgfCBzdHJpbmdcbiAgfCB7IGxhYmVsOiBzdHJpbmc7IGljb246IE5vbk51bGxhYmxlPENvbXBvbmVudFByb3BzPHR5cGVvZiBUYWc+WydpY29uJ10+IH1cblxudHlwZSBUYWdMaXN0UHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIGNoYXJhY3RlcnMgbGVuZ3RoIG9mIGFsbCB0YWdzIHVudGlsIGl0IGhpZGUgdGFncyBpbnRvIHRvb2x0aXAuXG4gICAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgdGFncz86IFRhZ1R5cGVbXVxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSBjaGFyYWN0ZXJzIGxlbmd0aCBvZiBhbGwgdGFncyB1bnRpbCBpdCBoaWRlIHRhZ3MgaW50byB0b29sdGlwLlxuICAgKiBOQjogdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gaWYgdGhlIHBhcmVudCB3aWR0aCBpcyBzbWFsbGVyIGFuZCBjYW5ub3Qgc2hvdyBhbGwgdGhlIHRhZ3NcbiAgICovXG4gIHRocmVzaG9sZD86IG51bWJlclxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSB3aWR0aCBvZiBlYWNoIHRhZy4gVGhpcyBkb2Vzbid0IGFwcGx5IGZvciB0YWdzIGluIHRvb2x0aXAuXG4gICAqL1xuICBtdWx0aWxpbmU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSB0aGUgdGl0bGUgb2YgdGhlIFBvcG92ZXIsIHdoZW4gc29tZSB0YWdzIGFyZSBoaWRkZW4gYmVjYXVzZSBvZiB0aGUgdGhyZXNob2xkLlxuICAgKi9cbiAgcG9wb3ZlclRpdGxlOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBwb3BvdmVyIHdpbGwgYmUgcGxhY2VkIGF1dG9tYXRpY2FsbHkgYnkgZGVmYXVsdC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3ZlciB0aHJvdWdoXG4gICAqIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBwb3BvdmVyUGxhY2VtZW50PzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcG92ZXI+WydwbGFjZW1lbnQnXVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xufSAmIFBpY2s8Q29tcG9uZW50UHJvcHM8dHlwZW9mIFRhZz4sICdjb3BpYWJsZScgfCAnY29weVRleHQnIHwgJ2NvcGllZFRleHQnPlxuXG5jb25zdCBERUZBVUxUX1RBR1M6IFRhZ0xpc3RQcm9wc1sndGFncyddID0gW11cblxuY29uc3QgZ2V0VGFnTGFiZWwgPSAodGFnOiBOb25OdWxsYWJsZTxUYWdMaXN0UHJvcHNbJ3RhZ3MnXT5bbnVtYmVyXSkgPT5cbiAgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcubGFiZWwgOiB0YWdcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHRhZ3Mgd2l0aCBhIHRocmVzaG9sZCBhbmQgYSBwb3BvdmVyIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHRhZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBUYWdMaXN0ID0gKHtcbiAgbWF4TGVuZ3RoID0gNjAwLFxuICB0YWdzID0gREVGQVVMVF9UQUdTLFxuICB0aHJlc2hvbGQgPSAxLFxuICBtdWx0aWxpbmUgPSBmYWxzZSxcbiAgcG9wb3ZlclRpdGxlLFxuICBwb3BvdmVyUGxhY2VtZW50LFxuICBjb3BpYWJsZSxcbiAgY29weVRleHQsXG4gIGNvcGllZFRleHQsXG4gIGNsYXNzTmFtZSxcbiAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbn06IFRhZ0xpc3RQcm9wcykgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IG1lYXN1cmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJUcmlnZ2VyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIC8vIEEgZmxhZyB0byBrZWVwIG9mIHdoZW4gd2Ugc2hvdyB0aGUgY29tcG9uZW50IGFzIHdlIHdlIG1pZ2h0IHVwZGF0ZSB0aGUgdmlzaWJsZSB0YWdzIGxpc3RcbiAgLy8gYWZ0ZXIgdGhlIGZpcnN0IHJlbmRlciAoIHRvIGtub3cgaWYgd2Ugc2hvdWxkIGFkZCBlbGxpcHNpcyB0byB0aGUgbGFzdCB2aXNpYmxlIHRhZ1xuICAvLyBvciByZWFkanVzdCB0aGUgdGFncyB3aGVuIGpvaW5lZCB3aXRoIHRoZSBwb3BvdmVyIHRyaWdnZXIgbWlnaHQgb3ZlcmZsb3cgdGhlIHBhcmVudCApXG4gIC8vIGFuZCB0aGlzIGNhdXNlcyBzb21lIGZsaWNrZXJpbmdcbiAgY29uc3QgW2lzUmVhZHksIHNldElzUmVhZHldID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW2lzUG9wb3ZlclZpc2libGUsIHNldElzUG9wb3ZlclZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyVHJpZ2dlcldpZHRoLCBzZXRQb3BvdmVyVHJpZ2dlcldpZHRoXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt2aXNpYmxlVGFncywgc2V0VmlzaWJsZVRhZ3NdID0gdXNlU3RhdGU8VGFnVHlwZVtdPihbXSlcbiAgY29uc3QgW2hpZGRlblRhZ3MsIHNldEhpZGRlblRhZ3NdID0gdXNlU3RhdGU8VGFnVHlwZVtdPihbXSlcblxuICAvLyBDb21wdXRlIHRtcFRocmVzaG9sZCwgcG90ZW50aWFsbHkgdmlzaWJsZSB0YWdzIGFuZCBzdXJlbHkgaGlkZGVuIHRhZ3NcbiAgY29uc3QgbWVtb2l6ZWRSZXN1bHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdG1wVGhyZXNob2xkID0gdGhyZXNob2xkXG4gICAgaWYgKFxuICAgICAgdGFncy5sZW5ndGggPiAwICYmXG4gICAgICB0YWdzXG4gICAgICAgIC5zbGljZSgwLCB0bXBUaHJlc2hvbGQpXG4gICAgICAgIC5yZWR1Y2U8c3RyaW5nPigoYWNjLCB0YWcpID0+IGFjYyArIGdldFRhZ0xhYmVsKHRhZyksICcnKS5sZW5ndGggPlxuICAgICAgICBtYXhMZW5ndGhcbiAgICApIHtcbiAgICAgIHRtcFRocmVzaG9sZCAtPSAxXG4gICAgfVxuXG4gICAgY29uc3QgcG90ZW50aWFsbHlWaXNpYmxlVGFnc0xlbmd0aCA9XG4gICAgICB0YWdzLmxlbmd0aCA+IHRtcFRocmVzaG9sZCB8fCBmYWxzZSA/IHRtcFRocmVzaG9sZCA6IHRhZ3MubGVuZ3RoXG4gICAgY29uc3QgcG90ZW50aWFsbHlWaXNpYmxlVGFncyA9IHRhZ3Muc2xpY2UoMCwgcG90ZW50aWFsbHlWaXNpYmxlVGFnc0xlbmd0aClcbiAgICBjb25zdCBzdXJlbHlIaWRkZW5UYWdzID0gdGFncy5zbGljZShwb3RlbnRpYWxseVZpc2libGVUYWdzTGVuZ3RoKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRtcFRocmVzaG9sZCxcbiAgICAgIHBvdGVudGlhbGx5VmlzaWJsZVRhZ3MsXG4gICAgICBzdXJlbHlIaWRkZW5UYWdzLFxuICAgIH1cbiAgfSwgW21heExlbmd0aCwgdGFncywgdGhyZXNob2xkXSlcblxuICBjb25zdCB7IHRtcFRocmVzaG9sZCwgcG90ZW50aWFsbHlWaXNpYmxlVGFncywgc3VyZWx5SGlkZGVuVGFncyB9ID1cbiAgICBtZW1vaXplZFJlc3VsdFxuXG4gIC8vIENvbXB1dGUgdmlzaWJsZSB0YWdzIGFuZCBoaWRkZW4gb25lcyBiYXNlZCBvbiB0aGUgY29udGFpbmVyIHdpZHRoIGFuZFxuICAvLyB3aGF0IGNhbiBmaXQgaW50byBpdCBmcm9tIHRoZSBwb3RlbnRpYWxseSB2aXNpYmxlIHRhZ3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhZ3MubGVuZ3RoIHx8ICFjb250YWluZXJSZWYuY3VycmVudCB8fCAhbWVhc3VyZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICBzZXRWaXNpYmxlVGFncyhwb3RlbnRpYWxseVZpc2libGVUYWdzKVxuICAgICAgc2V0SGlkZGVuVGFncyhzdXJlbHlIaWRkZW5UYWdzKVxuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRXaWR0aCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRoIHx8IDBcblxuICAgIGNvbnN0IHRvTWVhc3VyZUVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbiA9XG4gICAgICBtZWFzdXJlUmVmLmN1cnJlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5cblxuICAgIGNvbnN0IFtmaXJzdFRhZywgLi4ucmVzdE9mVG9NZWFzdXJlRWxlbWVudHNdID0gWy4uLnRvTWVhc3VyZUVsZW1lbnRzXVxuXG4gICAgY29uc3QgeyBtZWFzdXJlZFZpc2libGVUYWdzLCBtZWFzdXJlZEhpZGRlblRhZ3MgfSA9XG4gICAgICByZXN0T2ZUb01lYXN1cmVFbGVtZW50cy5yZWR1Y2UoXG4gICAgICAgIChcbiAgICAgICAgICBhY2N1bXVsYXRvcjoge1xuICAgICAgICAgICAgbWVhc3VyZWRWaXNpYmxlVGFnczogVGFnVHlwZVtdXG4gICAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFRhZ1R5cGVbXVxuICAgICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDogbnVtYmVyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICk6IHtcbiAgICAgICAgICBtZWFzdXJlZFZpc2libGVUYWdzOiBUYWdUeXBlW11cbiAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFRhZ1R5cGVbXVxuICAgICAgICAgIGFjY3VtdWxhdGVkV2lkdGg6IG51bWJlclxuICAgICAgICB9ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdBY2N1bXVsYXRlZFdpZHRoID1cbiAgICAgICAgICAgIGFjY3VtdWxhdG9yLmFjY3VtdWxhdGVkV2lkdGggK1xuICAgICAgICAgICAgKGN1cnJlbnRWYWx1ZSBhcyBIVE1MRGl2RWxlbWVudCkub2Zmc2V0V2lkdGggK1xuICAgICAgICAgICAgcGFyc2VJbnQoVEFHU19HQVAsIDEwKVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1lYXN1cmVkVmlzaWJsZVRhZ3M6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IubWVhc3VyZWRWaXNpYmxlVGFncyxcbiAgICAgICAgICAgICAgbmV3QWNjdW11bGF0ZWRXaWR0aCA8PSBwYXJlbnRXaWR0aCAmJiB0YWdzW2luZGV4ICsgMV0sXG4gICAgICAgICAgICBdLmZpbHRlcihCb29sZWFuKSBhcyBUYWdUeXBlW10sXG4gICAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IubWVhc3VyZWRIaWRkZW5UYWdzLFxuICAgICAgICAgICAgICBuZXdBY2N1bXVsYXRlZFdpZHRoID4gcGFyZW50V2lkdGggJiYgdGFnc1tpbmRleCArIDFdLFxuICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikgYXMgVGFnVHlwZVtdLFxuICAgICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDogbmV3QWNjdW11bGF0ZWRXaWR0aCxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtZWFzdXJlZFZpc2libGVUYWdzOiBbdGFnc1swXV0sIC8vIHdlIG5lZWQgdG8gYWx3YXlzIHNob3cgb25lIHRhZ1xuICAgICAgICAgIG1lYXN1cmVkSGlkZGVuVGFnczogW10sXG4gICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDpcbiAgICAgICAgICAgIChmaXJzdFRhZyBhcyBIVE1MRGl2RWxlbWVudCkub2Zmc2V0V2lkdGggKyBwYXJzZUludChUQUdTX0dBUCwgMTApLFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgY29uc3QgZmluYWxIaWRkZW5UYWdzID0gbWVhc3VyZWRIaWRkZW5UYWdzLmNvbmNhdChzdXJlbHlIaWRkZW5UYWdzKVxuXG4gICAgc2V0VmlzaWJsZVRhZ3MobWVhc3VyZWRWaXNpYmxlVGFncylcbiAgICBzZXRIaWRkZW5UYWdzKGZpbmFsSGlkZGVuVGFncylcblxuICAgIGlmICghZmluYWxIaWRkZW5UYWdzLmxlbmd0aCkge1xuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuICAgIH1cbiAgfSwgW1xuICAgIG11bHRpbGluZSxcbiAgICBwb3RlbnRpYWxseVZpc2libGVUYWdzLFxuICAgIHN1cmVseUhpZGRlblRhZ3MsXG4gICAgdGFncyxcbiAgICB0aHJlc2hvbGQsXG4gICAgdG1wVGhyZXNob2xkLFxuICBdKVxuXG4gIC8vIE9uY2UgdGhlIHBvcG92ZXIgdHJpZ2dlciBpcyBhdmFpbGFibGUgd2UgaGF2ZSB0bzpcbiAgLy8gLSB0byBnZXQgdGhlIHBvcG92ZXIgdHJpZ2dlciB3aWR0aCBzbyB0aGUgbGFzdCB2aXNpYmxlIHRhZ3MgY2FuIGhhdmUgZWxsaXBzaXMgaWYgbmVlZGVkXG4gIC8vIC0gcmVtb3ZlIHRoZSBsYXN0IHRhZyBpZiB0aGUgcG9wb3ZlciBoYXZlIG5vIHBsYWNlIGFuZCBwdXNoIGl0IGluIHRvIHRoZSBoaWRkZW4gdGFncyBsaXN0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1JlYWR5ICYmIHBvcG92ZXJUcmlnZ2VyUmVmLmN1cnJlbnQ/Lm9mZnNldFdpZHRoKSB7XG4gICAgICBjb25zdCBuZXdQb3BvdmVyVHJpZ2dlcldpZHRoID0gcG9wb3ZlclRyaWdnZXJSZWYuY3VycmVudC5vZmZzZXRXaWR0aFxuXG4gICAgICAvLyBTZXQgcG9wb3ZlciB0cmlnZ2VyIHdpZHRoXG4gICAgICBzZXRQb3BvdmVyVHJpZ2dlcldpZHRoKG5ld1BvcG92ZXJUcmlnZ2VyV2lkdGgpXG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCB0YWcgaWYgd2UgaGF2ZSBhIHBvcG92ZXIgYW5kIGFkZCBpdCB0byB0aGUgaGlkZGVuIHRhZ3NcbiAgICAgIGNvbnN0IHRhZ3NDb250YWluZXIgPSBjb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgdGFnc0NvbnRhaW5lcldpZHRoID0gY29udGFpbmVyUmVmLmN1cnJlbnQ/Lm9mZnNldFdpZHRoIHx8IDBcbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gdGFnc0NvbnRhaW5lcj8ucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGggfHwgMFxuXG4gICAgICBpZiAoXG4gICAgICAgIHZpc2libGVUYWdzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaGlkZGVuVGFncy5sZW5ndGggPiAwICYmXG4gICAgICAgIHRhZ3NDb250YWluZXJXaWR0aCArIG5ld1BvcG92ZXJUcmlnZ2VyV2lkdGggPiBwYXJlbnRXaWR0aFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHZpc2libGVUYWdzQ29weSA9IHZpc2libGVUYWdzLmZpbHRlcihcbiAgICAgICAgICAoXywgaW5kZXgpID0+IGluZGV4IDwgdmlzaWJsZVRhZ3MubGVuZ3RoIC0gMSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCB0YWdUb01vdmUgPSB2aXNpYmxlVGFnc1t2aXNpYmxlVGFncy5sZW5ndGggLSAxXVxuXG4gICAgICAgIHNldFZpc2libGVUYWdzKHZpc2libGVUYWdzQ29weSlcbiAgICAgICAgc2V0SGlkZGVuVGFncyhbdGFnVG9Nb3ZlLCAuLi5oaWRkZW5UYWdzXSlcbiAgICAgIH1cblxuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuICAgIH1cbiAgfSwgW2hpZGRlblRhZ3MsIGlzUmVhZHksIHRocmVzaG9sZCwgdmlzaWJsZVRhZ3MsIHZpc2libGVUYWdzLmxlbmd0aF0pXG5cbiAgLy8gUmVtb3ZlIHRoZSBoaWRkZW4gZGl2IHRoYXQgc2VydmVkIHRvIG1lYXN1cmUgdGhlIHJlbmRlcmVkIHRhZ3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSZWFkeSAmJiBtZWFzdXJlUmVmLmN1cnJlbnQ/LnBhcmVudE5vZGUpIHtcbiAgICAgIG1lYXN1cmVSZWYuY3VycmVudC5yZW1vdmUoKVxuICAgIH1cbiAgfSwgW2lzUmVhZHldKVxuXG4gIGlmICghdGFncy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgcmVuZGVyVGFnID0gKHRhZzogVGFnVHlwZSwgaW5kZXg6IG51bWJlciwgaXNFbGxpcHNpcyA9IGZhbHNlKSA9PiAoXG4gICAgPFRhZ1xuICAgICAgLy8gdXNlZnVsIHdoZW4gdHdvIHRhZ3MgYXJlIGlkZW50aWNhbCBgJHt0YWd9LSR7aW5kZXh9YFxuICAgICAga2V5PXtgJHtnZXRUYWdMYWJlbCh0YWcpfS0ke2luZGV4fWB9XG4gICAgICBjb3BpYWJsZT17Y29waWFibGV9XG4gICAgICBjb3B5VGV4dD17Y29weVRleHR9XG4gICAgICBjb3BpZWRUZXh0PXtjb3BpZWRUZXh0fVxuICAgICAgaWNvbj17dHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcuaWNvbiA6IHVuZGVmaW5lZH1cbiAgICAgIGNsYXNzTmFtZT17aXNFbGxpcHNpcyA/ICdlbGxpcHNlZCcgOiAnJ31cbiAgICA+XG4gICAgICB7Z2V0VGFnTGFiZWwodGFnKX1cbiAgICA8L1RhZz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHZpc2liaWxpdHk6IGlzUmVhZHkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lclxuICAgICAgICBnYXA9e1RBR1NfR0FQfVxuICAgICAgICBtdWx0aWxpbmU9e211bHRpbGluZX1cbiAgICAgICAgcG9wb3ZlclRyaWdnZXJXaWR0aD17cG9wb3ZlclRyaWdnZXJXaWR0aH1cbiAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICA+XG4gICAgICAgIHt2aXNpYmxlVGFncy5tYXAoKHRhZywgaW5kZXgpID0+XG4gICAgICAgICAgcmVuZGVyVGFnKFxuICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAvLyBhZGQgZWxsaXBzaXMgdG8gbGFzdCB0YWdcbiAgICAgICAgICAgIGluZGV4ID09PSB2aXNpYmxlVGFncy5sZW5ndGggLSAxLFxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgIHsvKiBBIGhpZGRlbiBkaXYgd2hpY2ggcmVuZGVycyB0aGUgdGFncyBzbyB3ZSBjYW4gbWVhc3VyZSB0aGVtICovfVxuICAgICAgPGRpdlxuICAgICAgICByZWY9e21lYXN1cmVSZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRUYWdDb250YWluZXIgZ2FwPXtUQUdTX0dBUH0+XG4gICAgICAgICAge3BvdGVudGlhbGx5VmlzaWJsZVRhZ3MubWFwKCh0YWcsIGluZGV4KSA9PiByZW5kZXJUYWcodGFnLCBpbmRleCkpfVxuICAgICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hpZGRlblRhZ3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgdGl0bGU9e3BvcG92ZXJUaXRsZX1cbiAgICAgICAgICB2aXNpYmxlPXtpc1BvcG92ZXJWaXNpYmxlfVxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNQb3BvdmVyVmlzaWJsZShmYWxzZSl9XG4gICAgICAgICAgcGxhY2VtZW50PXtwb3BvdmVyUGxhY2VtZW50fVxuICAgICAgICAgIGNvbnRlbnQ9e1xuICAgICAgICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lciBtdWx0aWxpbmUgZ2FwPXtUQUdTX0dBUH0+XG4gICAgICAgICAgICAgIHtoaWRkZW5UYWdzLm1hcCgodGFnLCBpbmRleCkgPT4gcmVuZGVyVGFnKHRhZywgaW5kZXgpKX1cbiAgICAgICAgICAgIDwvU3R5bGVkVGFnQ29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWdzV3JhcHBlclxuICAgICAgICAgICAgcmVmPXtwb3BvdmVyVHJpZ2dlclJlZn1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgJHtkYXRhVGVzdElkID8/ICd0YWdsaXN0J30tb3BlbmB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1BvcG92ZXJWaXNpYmxlKHRydWUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICt7aGlkZGVuVGFncy5sZW5ndGh9XG4gICAgICAgICAgPC9UYWdzV3JhcHBlcj5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgKVxufVxuIl19 */",
25
27
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
26
28
  });
27
29
  const TagsWrapper = /* @__PURE__ */ _styled__default.default("span", process.env.NODE_ENV === "production" ? {
@@ -31,7 +33,7 @@ const TagsWrapper = /* @__PURE__ */ _styled__default.default("span", process.env
31
33
  label: "TagsWrapper"
32
34
  })("cursor:pointer;color:", ({
33
35
  theme
34
- }) => theme.colors.primary.text, ";border:none;font-size:14px;align-self:center;max-width:350px;overflow:hidden;white-space:pre;text-overflow:ellipsis;background-color:transparent;padding-left:8px;padding-right:8px;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1RhZ0xpc3QvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVUrQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9UYWdMaXN0L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHJvcHMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICcuLi9Qb3BvdmVyJ1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vVGFnJ1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuYFxuXG5jb25zdCBUYWdzV3JhcHBlciA9IHN0eWxlZC5zcGFuYFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBtYXgtd2lkdGg6IDM1MHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG5gXG5cbmNvbnN0IFN0eWxlZFRhZ0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBtdWx0aWxpbmU/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgZ2FwOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxJ119O1xuICAkeyh7IG11bHRpbGluZSB9KSA9PiBtdWx0aWxpbmUgJiYgYGZsZXgtd3JhcDogd3JhcDtgfTtcbmBcblxudHlwZSBUYWdMaXN0UHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIGNoYXJhY3RlcnMgbGVuZ3RoIG9mIGFsbCB0YWdzIHVudGlsIGl0IGhpZGUgdGFncyBpbnRvIHRvb2x0aXAuXG4gICAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgdGFncz86IChcbiAgICB8IHN0cmluZ1xuICAgIHwgeyBsYWJlbDogc3RyaW5nOyBpY29uOiBOb25OdWxsYWJsZTxDb21wb25lbnRQcm9wczx0eXBlb2YgVGFnPlsnaWNvbiddPiB9XG4gIClbXVxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSBjaGFyYWN0ZXJzIGxlbmd0aCBvZiBhbGwgdGFncyB1bnRpbCBpdCBoaWRlIHRhZ3MgaW50byB0b29sdGlwLlxuICAgKi9cbiAgdGhyZXNob2xkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIHdpZHRoIG9mIGVhY2ggdGFnLiBUaGlzIGRvZXNuJ3QgYXBwbHkgZm9yIHRhZ3MgaW4gdG9vbHRpcC5cbiAgICovXG4gIG11bHRpbGluZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGVmaW5lIHRoZSB0aXRsZSBvZiB0aGUgUG9wb3Zlciwgd2hlbiBzb21lIHRhZ3MgYXJlIGhpZGRlbiBiZWNhdXNlIG9mIHRoZSB0aHJlc2hvbGQuXG4gICAqL1xuICBwb3BvdmVyVGl0bGU6IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHBvcG92ZXIgd2lsbCBiZSBwbGFjZWQgYXV0b21hdGljYWxseSBieSBkZWZhdWx0LiBZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyIHRocm91Z2hcbiAgICogdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHBvcG92ZXJQbGFjZW1lbnQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wb3Zlcj5bJ3BsYWNlbWVudCddXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAnZGF0YS10ZXN0aWQnPzogc3RyaW5nXG59ICYgUGljazxDb21wb25lbnRQcm9wczx0eXBlb2YgVGFnPiwgJ2NvcGlhYmxlJyB8ICdjb3B5VGV4dCcgfCAnY29waWVkVGV4dCc+XG5cbmNvbnN0IERFRkFVTFRfVEFHUzogVGFnTGlzdFByb3BzWyd0YWdzJ10gPSBbXVxuXG5jb25zdCBnZXRUYWdMYWJlbCA9ICh0YWc6IE5vbk51bGxhYmxlPFRhZ0xpc3RQcm9wc1sndGFncyddPltudW1iZXJdKSA9PlxuICB0eXBlb2YgdGFnID09PSAnb2JqZWN0JyA/IHRhZy5sYWJlbCA6IHRhZ1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gZGlzcGxheSBhIGxpc3Qgb2YgdGFncyB3aXRoIGEgdGhyZXNob2xkIGFuZCBhIHBvcG92ZXIgd2hlbiB0aGVyZSBhcmUgdG9vIG1hbnkgdGFncy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRhZ0xpc3QgPSAoe1xuICBtYXhMZW5ndGggPSA2MDAsXG4gIHRhZ3MgPSBERUZBVUxUX1RBR1MsXG4gIHRocmVzaG9sZCA9IDEsXG4gIG11bHRpbGluZSA9IGZhbHNlLFxuICBwb3BvdmVyVGl0bGUsXG4gIHBvcG92ZXJQbGFjZW1lbnQsXG4gIGNvcGlhYmxlLFxuICBjb3B5VGV4dCxcbiAgY29waWVkVGV4dCxcbiAgY2xhc3NOYW1lLFxuICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxufTogVGFnTGlzdFByb3BzKSA9PiB7XG4gIGxldCB0bXBUaHJlc2hvbGQgPSB0aHJlc2hvbGRcbiAgaWYgKFxuICAgIHRhZ3MubGVuZ3RoID4gMCAmJlxuICAgIHRhZ3NcbiAgICAgIC5zbGljZSgwLCB0bXBUaHJlc2hvbGQpXG4gICAgICAucmVkdWNlPHN0cmluZz4oKGFjYywgdGFnKSA9PiBhY2MgKyBnZXRUYWdMYWJlbCh0YWcpLCAnJykubGVuZ3RoID5cbiAgICAgIG1heExlbmd0aFxuICApIHtcbiAgICAvLyBJZiB0b3RhbCB0YWdzIGxlbmd0aCBpbiBjaGFyYWN0ZXJzIGlzIGFib3ZlIG1heExlbmd0aCxcbiAgICAvLyB0aHJlc2hvbGQgaXMgZGVjcmVtZW50ZWQgaW4gb3JkZXIgdG8gcHJldmVudCB0b28gbWFueSBsb25nIHRhZ3MgZGlzcGxheWVkLlxuICAgIHRtcFRocmVzaG9sZCAtPSAxXG4gIH1cbiAgY29uc3QgaGFzTWFueVRhZ3MgPSB0YWdzLmxlbmd0aCA+IHRtcFRocmVzaG9sZCB8fCBmYWxzZVxuICBjb25zdCB2aXNpYmxlVGFnc0NvdW50ID0gaGFzTWFueVRhZ3MgPyB0bXBUaHJlc2hvbGQgOiB0YWdzLmxlbmd0aFxuXG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldElzVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBpZiAoIXRhZ3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENvbnRhaW5lciBjbGFzc05hbWU9e2NsYXNzTmFtZX0gZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9PlxuICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lciBtdWx0aWxpbmU9e211bHRpbGluZX0+XG4gICAgICAgIHt0YWdzLnNsaWNlKDAsIHZpc2libGVUYWdzQ291bnQpLm1hcCgodGFnLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxUYWdcbiAgICAgICAgICAgIC8vIHVzZWZ1bCB3aGVuIHR3byB0YWdzIGFyZSBpZGVudGljYWwgYCR7dGFnfS0ke2luZGV4fWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgIGtleT17YCR7Z2V0VGFnTGFiZWwodGFnKX0tJHtpbmRleH1gfVxuICAgICAgICAgICAgY29waWFibGU9e2NvcGlhYmxlfVxuICAgICAgICAgICAgY29weVRleHQ9e2NvcHlUZXh0fVxuICAgICAgICAgICAgY29waWVkVGV4dD17Y29waWVkVGV4dH1cbiAgICAgICAgICAgIGljb249e3R5cGVvZiB0YWcgPT09ICdvYmplY3QnID8gdGFnLmljb24gOiB1bmRlZmluZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2dldFRhZ0xhYmVsKHRhZyl9XG4gICAgICAgICAgPC9UYWc+XG4gICAgICAgICkpfVxuICAgICAgPC9TdHlsZWRUYWdDb250YWluZXI+XG4gICAgICB7aGFzTWFueVRhZ3MgPyAoXG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgdGl0bGU9e3BvcG92ZXJUaXRsZX1cbiAgICAgICAgICB2aXNpYmxlPXtpc1Zpc2libGV9XG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc1Zpc2libGUoZmFsc2UpfVxuICAgICAgICAgIHBsYWNlbWVudD17cG9wb3ZlclBsYWNlbWVudH1cbiAgICAgICAgICBjb250ZW50PXtcbiAgICAgICAgICAgIDxTdHlsZWRUYWdDb250YWluZXIgbXVsdGlsaW5lPlxuICAgICAgICAgICAgICB7dGFncy5zbGljZSh2aXNpYmxlVGFnc0NvdW50KS5tYXAoKHRhZywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8VGFnXG4gICAgICAgICAgICAgICAgICAvLyB1c2VmdWwgd2hlbiB0d28gdGFncyBhcmUgaWRlbnRpY2FsIGAke3RhZ30tJHtpbmRleH1gXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2dldFRhZ0xhYmVsKHRhZyl9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgIGNvcGlhYmxlPXtjb3BpYWJsZX1cbiAgICAgICAgICAgICAgICAgIGNvcHlUZXh0PXtjb3B5VGV4dH1cbiAgICAgICAgICAgICAgICAgIGNvcGllZFRleHQ9e2NvcGllZFRleHR9XG4gICAgICAgICAgICAgICAgICBpY29uPXt0eXBlb2YgdGFnID09PSAnb2JqZWN0JyA/IHRhZy5pY29uIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtnZXRUYWdMYWJlbCh0YWcpfVxuICAgICAgICAgICAgICAgIDwvVGFnPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU3R5bGVkVGFnQ29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWdzV3JhcHBlclxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Ake2RhdGFUZXN0SWQgPz8gJ3RhZ2xpc3QnfS1vcGVuYH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVmlzaWJsZSh0cnVlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICAre3RhZ3MubGVuZ3RoIC0gdG1wVGhyZXNob2xkfVxuICAgICAgICAgIDwvVGFnc1dyYXBwZXI+XG4gICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU3R5bGVkQ29udGFpbmVyPlxuICApXG59XG4iXX0= */"));
36
+ }) => theme.colors.primary.text, ";border:none;font-size:14px;align-self:center;max-width:350px;overflow:hidden;white-space:pre;text-overflow:ellipsis;background-color:transparent;padding-left:8px;padding-right:8px;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1RhZ0xpc3QvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWErQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9UYWdMaXN0L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgY29uc29sZUxpZ2h0VGhlbWUgfSBmcm9tICdAdWx0cmF2aW9sZXQvdGhlbWVzJ1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFByb3BzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vUG9wb3ZlcidcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL1RhZydcblxuY29uc3QgVEFHU19HQVAgPSBjb25zb2xlTGlnaHRUaGVtZS5zcGFjZVsnMSddXG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gXG5cbmNvbnN0IFRhZ3NXcmFwcGVyID0gc3R5bGVkLnNwYW5gXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gIG1heC13aWR0aDogMzUwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbmBcblxuY29uc3QgU3R5bGVkVGFnQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7XG4gIGdhcDogc3RyaW5nXG4gIG11bHRpbGluZT86IGJvb2xlYW5cbiAgcG9wb3ZlclRyaWdnZXJXaWR0aD86IG51bWJlclxufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBnYXA6ICR7KHsgZ2FwIH0pID0+IGdhcH07XG4gICR7KHsgbXVsdGlsaW5lIH0pID0+IG11bHRpbGluZSAmJiBgZmxleC13cmFwOiB3cmFwO2B9O1xuXG4gIC8vIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIG9uZSB0YWcgYW5kIHdlIG5lZWQgdG8gZWxsaXBzaXMgaXRcbiAgJHsoeyBwb3BvdmVyVHJpZ2dlcldpZHRoIH0pID0+XG4gICAgcG9wb3ZlclRyaWdnZXJXaWR0aCAmJlxuICAgIGBcbiAgICAgICY6aGFzKC5lbGxpcHNlZCkge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gJHtwb3BvdmVyVHJpZ2dlcldpZHRofXB4KTsgLy8gdG8gbGV0IHNwYWNlIGZvciB0aGUgK1ggYnV0dG9uXG4gICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgICYgc3BhbiwgZGl2IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICB9XG4gIGB9O1xuYFxuXG5leHBvcnQgdHlwZSBUYWdUeXBlID1cbiAgfCBzdHJpbmdcbiAgfCB7IGxhYmVsOiBzdHJpbmc7IGljb246IE5vbk51bGxhYmxlPENvbXBvbmVudFByb3BzPHR5cGVvZiBUYWc+WydpY29uJ10+IH1cblxudHlwZSBUYWdMaXN0UHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIGNoYXJhY3RlcnMgbGVuZ3RoIG9mIGFsbCB0YWdzIHVudGlsIGl0IGhpZGUgdGFncyBpbnRvIHRvb2x0aXAuXG4gICAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgdGFncz86IFRhZ1R5cGVbXVxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSBjaGFyYWN0ZXJzIGxlbmd0aCBvZiBhbGwgdGFncyB1bnRpbCBpdCBoaWRlIHRhZ3MgaW50byB0b29sdGlwLlxuICAgKiBOQjogdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gaWYgdGhlIHBhcmVudCB3aWR0aCBpcyBzbWFsbGVyIGFuZCBjYW5ub3Qgc2hvdyBhbGwgdGhlIHRhZ3NcbiAgICovXG4gIHRocmVzaG9sZD86IG51bWJlclxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSB3aWR0aCBvZiBlYWNoIHRhZy4gVGhpcyBkb2Vzbid0IGFwcGx5IGZvciB0YWdzIGluIHRvb2x0aXAuXG4gICAqL1xuICBtdWx0aWxpbmU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSB0aGUgdGl0bGUgb2YgdGhlIFBvcG92ZXIsIHdoZW4gc29tZSB0YWdzIGFyZSBoaWRkZW4gYmVjYXVzZSBvZiB0aGUgdGhyZXNob2xkLlxuICAgKi9cbiAgcG9wb3ZlclRpdGxlOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBwb3BvdmVyIHdpbGwgYmUgcGxhY2VkIGF1dG9tYXRpY2FsbHkgYnkgZGVmYXVsdC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3ZlciB0aHJvdWdoXG4gICAqIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBwb3BvdmVyUGxhY2VtZW50PzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcG92ZXI+WydwbGFjZW1lbnQnXVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xufSAmIFBpY2s8Q29tcG9uZW50UHJvcHM8dHlwZW9mIFRhZz4sICdjb3BpYWJsZScgfCAnY29weVRleHQnIHwgJ2NvcGllZFRleHQnPlxuXG5jb25zdCBERUZBVUxUX1RBR1M6IFRhZ0xpc3RQcm9wc1sndGFncyddID0gW11cblxuY29uc3QgZ2V0VGFnTGFiZWwgPSAodGFnOiBOb25OdWxsYWJsZTxUYWdMaXN0UHJvcHNbJ3RhZ3MnXT5bbnVtYmVyXSkgPT5cbiAgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcubGFiZWwgOiB0YWdcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHRhZ3Mgd2l0aCBhIHRocmVzaG9sZCBhbmQgYSBwb3BvdmVyIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHRhZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBUYWdMaXN0ID0gKHtcbiAgbWF4TGVuZ3RoID0gNjAwLFxuICB0YWdzID0gREVGQVVMVF9UQUdTLFxuICB0aHJlc2hvbGQgPSAxLFxuICBtdWx0aWxpbmUgPSBmYWxzZSxcbiAgcG9wb3ZlclRpdGxlLFxuICBwb3BvdmVyUGxhY2VtZW50LFxuICBjb3BpYWJsZSxcbiAgY29weVRleHQsXG4gIGNvcGllZFRleHQsXG4gIGNsYXNzTmFtZSxcbiAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbn06IFRhZ0xpc3RQcm9wcykgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IG1lYXN1cmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJUcmlnZ2VyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIC8vIEEgZmxhZyB0byBrZWVwIG9mIHdoZW4gd2Ugc2hvdyB0aGUgY29tcG9uZW50IGFzIHdlIHdlIG1pZ2h0IHVwZGF0ZSB0aGUgdmlzaWJsZSB0YWdzIGxpc3RcbiAgLy8gYWZ0ZXIgdGhlIGZpcnN0IHJlbmRlciAoIHRvIGtub3cgaWYgd2Ugc2hvdWxkIGFkZCBlbGxpcHNpcyB0byB0aGUgbGFzdCB2aXNpYmxlIHRhZ1xuICAvLyBvciByZWFkanVzdCB0aGUgdGFncyB3aGVuIGpvaW5lZCB3aXRoIHRoZSBwb3BvdmVyIHRyaWdnZXIgbWlnaHQgb3ZlcmZsb3cgdGhlIHBhcmVudCApXG4gIC8vIGFuZCB0aGlzIGNhdXNlcyBzb21lIGZsaWNrZXJpbmdcbiAgY29uc3QgW2lzUmVhZHksIHNldElzUmVhZHldID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW2lzUG9wb3ZlclZpc2libGUsIHNldElzUG9wb3ZlclZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyVHJpZ2dlcldpZHRoLCBzZXRQb3BvdmVyVHJpZ2dlcldpZHRoXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt2aXNpYmxlVGFncywgc2V0VmlzaWJsZVRhZ3NdID0gdXNlU3RhdGU8VGFnVHlwZVtdPihbXSlcbiAgY29uc3QgW2hpZGRlblRhZ3MsIHNldEhpZGRlblRhZ3NdID0gdXNlU3RhdGU8VGFnVHlwZVtdPihbXSlcblxuICAvLyBDb21wdXRlIHRtcFRocmVzaG9sZCwgcG90ZW50aWFsbHkgdmlzaWJsZSB0YWdzIGFuZCBzdXJlbHkgaGlkZGVuIHRhZ3NcbiAgY29uc3QgbWVtb2l6ZWRSZXN1bHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdG1wVGhyZXNob2xkID0gdGhyZXNob2xkXG4gICAgaWYgKFxuICAgICAgdGFncy5sZW5ndGggPiAwICYmXG4gICAgICB0YWdzXG4gICAgICAgIC5zbGljZSgwLCB0bXBUaHJlc2hvbGQpXG4gICAgICAgIC5yZWR1Y2U8c3RyaW5nPigoYWNjLCB0YWcpID0+IGFjYyArIGdldFRhZ0xhYmVsKHRhZyksICcnKS5sZW5ndGggPlxuICAgICAgICBtYXhMZW5ndGhcbiAgICApIHtcbiAgICAgIHRtcFRocmVzaG9sZCAtPSAxXG4gICAgfVxuXG4gICAgY29uc3QgcG90ZW50aWFsbHlWaXNpYmxlVGFnc0xlbmd0aCA9XG4gICAgICB0YWdzLmxlbmd0aCA+IHRtcFRocmVzaG9sZCB8fCBmYWxzZSA/IHRtcFRocmVzaG9sZCA6IHRhZ3MubGVuZ3RoXG4gICAgY29uc3QgcG90ZW50aWFsbHlWaXNpYmxlVGFncyA9IHRhZ3Muc2xpY2UoMCwgcG90ZW50aWFsbHlWaXNpYmxlVGFnc0xlbmd0aClcbiAgICBjb25zdCBzdXJlbHlIaWRkZW5UYWdzID0gdGFncy5zbGljZShwb3RlbnRpYWxseVZpc2libGVUYWdzTGVuZ3RoKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRtcFRocmVzaG9sZCxcbiAgICAgIHBvdGVudGlhbGx5VmlzaWJsZVRhZ3MsXG4gICAgICBzdXJlbHlIaWRkZW5UYWdzLFxuICAgIH1cbiAgfSwgW21heExlbmd0aCwgdGFncywgdGhyZXNob2xkXSlcblxuICBjb25zdCB7IHRtcFRocmVzaG9sZCwgcG90ZW50aWFsbHlWaXNpYmxlVGFncywgc3VyZWx5SGlkZGVuVGFncyB9ID1cbiAgICBtZW1vaXplZFJlc3VsdFxuXG4gIC8vIENvbXB1dGUgdmlzaWJsZSB0YWdzIGFuZCBoaWRkZW4gb25lcyBiYXNlZCBvbiB0aGUgY29udGFpbmVyIHdpZHRoIGFuZFxuICAvLyB3aGF0IGNhbiBmaXQgaW50byBpdCBmcm9tIHRoZSBwb3RlbnRpYWxseSB2aXNpYmxlIHRhZ3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhZ3MubGVuZ3RoIHx8ICFjb250YWluZXJSZWYuY3VycmVudCB8fCAhbWVhc3VyZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICBzZXRWaXNpYmxlVGFncyhwb3RlbnRpYWxseVZpc2libGVUYWdzKVxuICAgICAgc2V0SGlkZGVuVGFncyhzdXJlbHlIaWRkZW5UYWdzKVxuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRXaWR0aCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRoIHx8IDBcblxuICAgIGNvbnN0IHRvTWVhc3VyZUVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbiA9XG4gICAgICBtZWFzdXJlUmVmLmN1cnJlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5cblxuICAgIGNvbnN0IFtmaXJzdFRhZywgLi4ucmVzdE9mVG9NZWFzdXJlRWxlbWVudHNdID0gWy4uLnRvTWVhc3VyZUVsZW1lbnRzXVxuXG4gICAgY29uc3QgeyBtZWFzdXJlZFZpc2libGVUYWdzLCBtZWFzdXJlZEhpZGRlblRhZ3MgfSA9XG4gICAgICByZXN0T2ZUb01lYXN1cmVFbGVtZW50cy5yZWR1Y2UoXG4gICAgICAgIChcbiAgICAgICAgICBhY2N1bXVsYXRvcjoge1xuICAgICAgICAgICAgbWVhc3VyZWRWaXNpYmxlVGFnczogVGFnVHlwZVtdXG4gICAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFRhZ1R5cGVbXVxuICAgICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDogbnVtYmVyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICk6IHtcbiAgICAgICAgICBtZWFzdXJlZFZpc2libGVUYWdzOiBUYWdUeXBlW11cbiAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFRhZ1R5cGVbXVxuICAgICAgICAgIGFjY3VtdWxhdGVkV2lkdGg6IG51bWJlclxuICAgICAgICB9ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdBY2N1bXVsYXRlZFdpZHRoID1cbiAgICAgICAgICAgIGFjY3VtdWxhdG9yLmFjY3VtdWxhdGVkV2lkdGggK1xuICAgICAgICAgICAgKGN1cnJlbnRWYWx1ZSBhcyBIVE1MRGl2RWxlbWVudCkub2Zmc2V0V2lkdGggK1xuICAgICAgICAgICAgcGFyc2VJbnQoVEFHU19HQVAsIDEwKVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1lYXN1cmVkVmlzaWJsZVRhZ3M6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IubWVhc3VyZWRWaXNpYmxlVGFncyxcbiAgICAgICAgICAgICAgbmV3QWNjdW11bGF0ZWRXaWR0aCA8PSBwYXJlbnRXaWR0aCAmJiB0YWdzW2luZGV4ICsgMV0sXG4gICAgICAgICAgICBdLmZpbHRlcihCb29sZWFuKSBhcyBUYWdUeXBlW10sXG4gICAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IubWVhc3VyZWRIaWRkZW5UYWdzLFxuICAgICAgICAgICAgICBuZXdBY2N1bXVsYXRlZFdpZHRoID4gcGFyZW50V2lkdGggJiYgdGFnc1tpbmRleCArIDFdLFxuICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikgYXMgVGFnVHlwZVtdLFxuICAgICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDogbmV3QWNjdW11bGF0ZWRXaWR0aCxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtZWFzdXJlZFZpc2libGVUYWdzOiBbdGFnc1swXV0sIC8vIHdlIG5lZWQgdG8gYWx3YXlzIHNob3cgb25lIHRhZ1xuICAgICAgICAgIG1lYXN1cmVkSGlkZGVuVGFnczogW10sXG4gICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDpcbiAgICAgICAgICAgIChmaXJzdFRhZyBhcyBIVE1MRGl2RWxlbWVudCkub2Zmc2V0V2lkdGggKyBwYXJzZUludChUQUdTX0dBUCwgMTApLFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgY29uc3QgZmluYWxIaWRkZW5UYWdzID0gbWVhc3VyZWRIaWRkZW5UYWdzLmNvbmNhdChzdXJlbHlIaWRkZW5UYWdzKVxuXG4gICAgc2V0VmlzaWJsZVRhZ3MobWVhc3VyZWRWaXNpYmxlVGFncylcbiAgICBzZXRIaWRkZW5UYWdzKGZpbmFsSGlkZGVuVGFncylcblxuICAgIGlmICghZmluYWxIaWRkZW5UYWdzLmxlbmd0aCkge1xuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuICAgIH1cbiAgfSwgW1xuICAgIG11bHRpbGluZSxcbiAgICBwb3RlbnRpYWxseVZpc2libGVUYWdzLFxuICAgIHN1cmVseUhpZGRlblRhZ3MsXG4gICAgdGFncyxcbiAgICB0aHJlc2hvbGQsXG4gICAgdG1wVGhyZXNob2xkLFxuICBdKVxuXG4gIC8vIE9uY2UgdGhlIHBvcG92ZXIgdHJpZ2dlciBpcyBhdmFpbGFibGUgd2UgaGF2ZSB0bzpcbiAgLy8gLSB0byBnZXQgdGhlIHBvcG92ZXIgdHJpZ2dlciB3aWR0aCBzbyB0aGUgbGFzdCB2aXNpYmxlIHRhZ3MgY2FuIGhhdmUgZWxsaXBzaXMgaWYgbmVlZGVkXG4gIC8vIC0gcmVtb3ZlIHRoZSBsYXN0IHRhZyBpZiB0aGUgcG9wb3ZlciBoYXZlIG5vIHBsYWNlIGFuZCBwdXNoIGl0IGluIHRvIHRoZSBoaWRkZW4gdGFncyBsaXN0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1JlYWR5ICYmIHBvcG92ZXJUcmlnZ2VyUmVmLmN1cnJlbnQ/Lm9mZnNldFdpZHRoKSB7XG4gICAgICBjb25zdCBuZXdQb3BvdmVyVHJpZ2dlcldpZHRoID0gcG9wb3ZlclRyaWdnZXJSZWYuY3VycmVudC5vZmZzZXRXaWR0aFxuXG4gICAgICAvLyBTZXQgcG9wb3ZlciB0cmlnZ2VyIHdpZHRoXG4gICAgICBzZXRQb3BvdmVyVHJpZ2dlcldpZHRoKG5ld1BvcG92ZXJUcmlnZ2VyV2lkdGgpXG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCB0YWcgaWYgd2UgaGF2ZSBhIHBvcG92ZXIgYW5kIGFkZCBpdCB0byB0aGUgaGlkZGVuIHRhZ3NcbiAgICAgIGNvbnN0IHRhZ3NDb250YWluZXIgPSBjb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgdGFnc0NvbnRhaW5lcldpZHRoID0gY29udGFpbmVyUmVmLmN1cnJlbnQ/Lm9mZnNldFdpZHRoIHx8IDBcbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gdGFnc0NvbnRhaW5lcj8ucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGggfHwgMFxuXG4gICAgICBpZiAoXG4gICAgICAgIHZpc2libGVUYWdzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaGlkZGVuVGFncy5sZW5ndGggPiAwICYmXG4gICAgICAgIHRhZ3NDb250YWluZXJXaWR0aCArIG5ld1BvcG92ZXJUcmlnZ2VyV2lkdGggPiBwYXJlbnRXaWR0aFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHZpc2libGVUYWdzQ29weSA9IHZpc2libGVUYWdzLmZpbHRlcihcbiAgICAgICAgICAoXywgaW5kZXgpID0+IGluZGV4IDwgdmlzaWJsZVRhZ3MubGVuZ3RoIC0gMSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCB0YWdUb01vdmUgPSB2aXNpYmxlVGFnc1t2aXNpYmxlVGFncy5sZW5ndGggLSAxXVxuXG4gICAgICAgIHNldFZpc2libGVUYWdzKHZpc2libGVUYWdzQ29weSlcbiAgICAgICAgc2V0SGlkZGVuVGFncyhbdGFnVG9Nb3ZlLCAuLi5oaWRkZW5UYWdzXSlcbiAgICAgIH1cblxuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuICAgIH1cbiAgfSwgW2hpZGRlblRhZ3MsIGlzUmVhZHksIHRocmVzaG9sZCwgdmlzaWJsZVRhZ3MsIHZpc2libGVUYWdzLmxlbmd0aF0pXG5cbiAgLy8gUmVtb3ZlIHRoZSBoaWRkZW4gZGl2IHRoYXQgc2VydmVkIHRvIG1lYXN1cmUgdGhlIHJlbmRlcmVkIHRhZ3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSZWFkeSAmJiBtZWFzdXJlUmVmLmN1cnJlbnQ/LnBhcmVudE5vZGUpIHtcbiAgICAgIG1lYXN1cmVSZWYuY3VycmVudC5yZW1vdmUoKVxuICAgIH1cbiAgfSwgW2lzUmVhZHldKVxuXG4gIGlmICghdGFncy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgcmVuZGVyVGFnID0gKHRhZzogVGFnVHlwZSwgaW5kZXg6IG51bWJlciwgaXNFbGxpcHNpcyA9IGZhbHNlKSA9PiAoXG4gICAgPFRhZ1xuICAgICAgLy8gdXNlZnVsIHdoZW4gdHdvIHRhZ3MgYXJlIGlkZW50aWNhbCBgJHt0YWd9LSR7aW5kZXh9YFxuICAgICAga2V5PXtgJHtnZXRUYWdMYWJlbCh0YWcpfS0ke2luZGV4fWB9XG4gICAgICBjb3BpYWJsZT17Y29waWFibGV9XG4gICAgICBjb3B5VGV4dD17Y29weVRleHR9XG4gICAgICBjb3BpZWRUZXh0PXtjb3BpZWRUZXh0fVxuICAgICAgaWNvbj17dHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcuaWNvbiA6IHVuZGVmaW5lZH1cbiAgICAgIGNsYXNzTmFtZT17aXNFbGxpcHNpcyA/ICdlbGxpcHNlZCcgOiAnJ31cbiAgICA+XG4gICAgICB7Z2V0VGFnTGFiZWwodGFnKX1cbiAgICA8L1RhZz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHZpc2liaWxpdHk6IGlzUmVhZHkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lclxuICAgICAgICBnYXA9e1RBR1NfR0FQfVxuICAgICAgICBtdWx0aWxpbmU9e211bHRpbGluZX1cbiAgICAgICAgcG9wb3ZlclRyaWdnZXJXaWR0aD17cG9wb3ZlclRyaWdnZXJXaWR0aH1cbiAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICA+XG4gICAgICAgIHt2aXNpYmxlVGFncy5tYXAoKHRhZywgaW5kZXgpID0+XG4gICAgICAgICAgcmVuZGVyVGFnKFxuICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAvLyBhZGQgZWxsaXBzaXMgdG8gbGFzdCB0YWdcbiAgICAgICAgICAgIGluZGV4ID09PSB2aXNpYmxlVGFncy5sZW5ndGggLSAxLFxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgIHsvKiBBIGhpZGRlbiBkaXYgd2hpY2ggcmVuZGVycyB0aGUgdGFncyBzbyB3ZSBjYW4gbWVhc3VyZSB0aGVtICovfVxuICAgICAgPGRpdlxuICAgICAgICByZWY9e21lYXN1cmVSZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRUYWdDb250YWluZXIgZ2FwPXtUQUdTX0dBUH0+XG4gICAgICAgICAge3BvdGVudGlhbGx5VmlzaWJsZVRhZ3MubWFwKCh0YWcsIGluZGV4KSA9PiByZW5kZXJUYWcodGFnLCBpbmRleCkpfVxuICAgICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hpZGRlblRhZ3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgdGl0bGU9e3BvcG92ZXJUaXRsZX1cbiAgICAgICAgICB2aXNpYmxlPXtpc1BvcG92ZXJWaXNpYmxlfVxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNQb3BvdmVyVmlzaWJsZShmYWxzZSl9XG4gICAgICAgICAgcGxhY2VtZW50PXtwb3BvdmVyUGxhY2VtZW50fVxuICAgICAgICAgIGNvbnRlbnQ9e1xuICAgICAgICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lciBtdWx0aWxpbmUgZ2FwPXtUQUdTX0dBUH0+XG4gICAgICAgICAgICAgIHtoaWRkZW5UYWdzLm1hcCgodGFnLCBpbmRleCkgPT4gcmVuZGVyVGFnKHRhZywgaW5kZXgpKX1cbiAgICAgICAgICAgIDwvU3R5bGVkVGFnQ29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWdzV3JhcHBlclxuICAgICAgICAgICAgcmVmPXtwb3BvdmVyVHJpZ2dlclJlZn1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgJHtkYXRhVGVzdElkID8/ICd0YWdsaXN0J30tb3BlbmB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1BvcG92ZXJWaXNpYmxlKHRydWUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICt7aGlkZGVuVGFncy5sZW5ndGh9XG4gICAgICAgICAgPC9UYWdzV3JhcHBlcj5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgKVxufVxuIl19 */"));
35
37
  const StyledTagContainer = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
36
38
  target: "eb6op480"
37
39
  } : {
@@ -40,10 +42,22 @@ const StyledTagContainer = /* @__PURE__ */ _styled__default.default("div", proce
40
42
  })("display:flex;align-items:center;color:", ({
41
43
  theme
42
44
  }) => theme.colors.neutral.text, ";gap:", ({
43
- theme
44
- }) => theme.space["1"], ";", ({
45
+ gap
46
+ }) => gap, ";", ({
45
47
  multiline
46
- }) => multiline && `flex-wrap: wrap;`, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1RhZ0xpc3QvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCOEQiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvVGFnTGlzdC9pbmRleC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFByb3BzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vUG9wb3ZlcidcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL1RhZydcblxuY29uc3QgU3R5bGVkQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbmBcblxuY29uc3QgVGFnc1dyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMucHJpbWFyeS50ZXh0fTtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiAzNTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xuYFxuXG5jb25zdCBTdHlsZWRUYWdDb250YWluZXIgPSBzdHlsZWQuZGl2PHsgbXVsdGlsaW5lPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGdhcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMSddfTtcbiAgJHsoeyBtdWx0aWxpbmUgfSkgPT4gbXVsdGlsaW5lICYmIGBmbGV4LXdyYXA6IHdyYXA7YH07XG5gXG5cbnR5cGUgVGFnTGlzdFByb3BzID0ge1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSBjaGFyYWN0ZXJzIGxlbmd0aCBvZiBhbGwgdGFncyB1bnRpbCBpdCBoaWRlIHRhZ3MgaW50byB0b29sdGlwLlxuICAgKi9cbiAgbWF4TGVuZ3RoPzogbnVtYmVyXG4gIHRhZ3M/OiAoXG4gICAgfCBzdHJpbmdcbiAgICB8IHsgbGFiZWw6IHN0cmluZzsgaWNvbjogTm9uTnVsbGFibGU8Q29tcG9uZW50UHJvcHM8dHlwZW9mIFRhZz5bJ2ljb24nXT4gfVxuICApW11cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGVmaW5lIG1heGltdW0gY2hhcmFjdGVycyBsZW5ndGggb2YgYWxsIHRhZ3MgdW50aWwgaXQgaGlkZSB0YWdzIGludG8gdG9vbHRpcC5cbiAgICovXG4gIHRocmVzaG9sZD86IG51bWJlclxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSB3aWR0aCBvZiBlYWNoIHRhZy4gVGhpcyBkb2Vzbid0IGFwcGx5IGZvciB0YWdzIGluIHRvb2x0aXAuXG4gICAqL1xuICBtdWx0aWxpbmU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSB0aGUgdGl0bGUgb2YgdGhlIFBvcG92ZXIsIHdoZW4gc29tZSB0YWdzIGFyZSBoaWRkZW4gYmVjYXVzZSBvZiB0aGUgdGhyZXNob2xkLlxuICAgKi9cbiAgcG9wb3ZlclRpdGxlOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBwb3BvdmVyIHdpbGwgYmUgcGxhY2VkIGF1dG9tYXRpY2FsbHkgYnkgZGVmYXVsdC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3ZlciB0aHJvdWdoXG4gICAqIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBwb3BvdmVyUGxhY2VtZW50PzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcG92ZXI+WydwbGFjZW1lbnQnXVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xufSAmIFBpY2s8Q29tcG9uZW50UHJvcHM8dHlwZW9mIFRhZz4sICdjb3BpYWJsZScgfCAnY29weVRleHQnIHwgJ2NvcGllZFRleHQnPlxuXG5jb25zdCBERUZBVUxUX1RBR1M6IFRhZ0xpc3RQcm9wc1sndGFncyddID0gW11cblxuY29uc3QgZ2V0VGFnTGFiZWwgPSAodGFnOiBOb25OdWxsYWJsZTxUYWdMaXN0UHJvcHNbJ3RhZ3MnXT5bbnVtYmVyXSkgPT5cbiAgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcubGFiZWwgOiB0YWdcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHRhZ3Mgd2l0aCBhIHRocmVzaG9sZCBhbmQgYSBwb3BvdmVyIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHRhZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBUYWdMaXN0ID0gKHtcbiAgbWF4TGVuZ3RoID0gNjAwLFxuICB0YWdzID0gREVGQVVMVF9UQUdTLFxuICB0aHJlc2hvbGQgPSAxLFxuICBtdWx0aWxpbmUgPSBmYWxzZSxcbiAgcG9wb3ZlclRpdGxlLFxuICBwb3BvdmVyUGxhY2VtZW50LFxuICBjb3BpYWJsZSxcbiAgY29weVRleHQsXG4gIGNvcGllZFRleHQsXG4gIGNsYXNzTmFtZSxcbiAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbn06IFRhZ0xpc3RQcm9wcykgPT4ge1xuICBsZXQgdG1wVGhyZXNob2xkID0gdGhyZXNob2xkXG4gIGlmIChcbiAgICB0YWdzLmxlbmd0aCA+IDAgJiZcbiAgICB0YWdzXG4gICAgICAuc2xpY2UoMCwgdG1wVGhyZXNob2xkKVxuICAgICAgLnJlZHVjZTxzdHJpbmc+KChhY2MsIHRhZykgPT4gYWNjICsgZ2V0VGFnTGFiZWwodGFnKSwgJycpLmxlbmd0aCA+XG4gICAgICBtYXhMZW5ndGhcbiAgKSB7XG4gICAgLy8gSWYgdG90YWwgdGFncyBsZW5ndGggaW4gY2hhcmFjdGVycyBpcyBhYm92ZSBtYXhMZW5ndGgsXG4gICAgLy8gdGhyZXNob2xkIGlzIGRlY3JlbWVudGVkIGluIG9yZGVyIHRvIHByZXZlbnQgdG9vIG1hbnkgbG9uZyB0YWdzIGRpc3BsYXllZC5cbiAgICB0bXBUaHJlc2hvbGQgLT0gMVxuICB9XG4gIGNvbnN0IGhhc01hbnlUYWdzID0gdGFncy5sZW5ndGggPiB0bXBUaHJlc2hvbGQgfHwgZmFsc2VcbiAgY29uc3QgdmlzaWJsZVRhZ3NDb3VudCA9IGhhc01hbnlUYWdzID8gdG1wVGhyZXNob2xkIDogdGFncy5sZW5ndGhcblxuICBjb25zdCBbaXNWaXNpYmxlLCBzZXRJc1Zpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgaWYgKCF0YWdzLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDb250YWluZXIgY2xhc3NOYW1lPXtjbGFzc05hbWV9IGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfT5cbiAgICAgIDxTdHlsZWRUYWdDb250YWluZXIgbXVsdGlsaW5lPXttdWx0aWxpbmV9PlxuICAgICAgICB7dGFncy5zbGljZSgwLCB2aXNpYmxlVGFnc0NvdW50KS5tYXAoKHRhZywgaW5kZXgpID0+IChcbiAgICAgICAgICA8VGFnXG4gICAgICAgICAgICAvLyB1c2VmdWwgd2hlbiB0d28gdGFncyBhcmUgaWRlbnRpY2FsIGAke3RhZ30tJHtpbmRleH1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgICBrZXk9e2Ake2dldFRhZ0xhYmVsKHRhZyl9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgIGNvcGlhYmxlPXtjb3BpYWJsZX1cbiAgICAgICAgICAgIGNvcHlUZXh0PXtjb3B5VGV4dH1cbiAgICAgICAgICAgIGNvcGllZFRleHQ9e2NvcGllZFRleHR9XG4gICAgICAgICAgICBpY29uPXt0eXBlb2YgdGFnID09PSAnb2JqZWN0JyA/IHRhZy5pY29uIDogdW5kZWZpbmVkfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtnZXRUYWdMYWJlbCh0YWcpfVxuICAgICAgICAgIDwvVGFnPlxuICAgICAgICApKX1cbiAgICAgIDwvU3R5bGVkVGFnQ29udGFpbmVyPlxuICAgICAge2hhc01hbnlUYWdzID8gKFxuICAgICAgICA8UG9wb3ZlclxuICAgICAgICAgIHRpdGxlPXtwb3BvdmVyVGl0bGV9XG4gICAgICAgICAgdmlzaWJsZT17aXNWaXNpYmxlfVxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNWaXNpYmxlKGZhbHNlKX1cbiAgICAgICAgICBwbGFjZW1lbnQ9e3BvcG92ZXJQbGFjZW1lbnR9XG4gICAgICAgICAgY29udGVudD17XG4gICAgICAgICAgICA8U3R5bGVkVGFnQ29udGFpbmVyIG11bHRpbGluZT5cbiAgICAgICAgICAgICAge3RhZ3Muc2xpY2UodmlzaWJsZVRhZ3NDb3VudCkubWFwKCh0YWcsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhZ1xuICAgICAgICAgICAgICAgICAgLy8gdXNlZnVsIHdoZW4gdHdvIHRhZ3MgYXJlIGlkZW50aWNhbCBgJHt0YWd9LSR7aW5kZXh9YFxuICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgICAgICAgICAga2V5PXtgJHtnZXRUYWdMYWJlbCh0YWcpfS0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICBjb3BpYWJsZT17Y29waWFibGV9XG4gICAgICAgICAgICAgICAgICBjb3B5VGV4dD17Y29weVRleHR9XG4gICAgICAgICAgICAgICAgICBjb3BpZWRUZXh0PXtjb3BpZWRUZXh0fVxuICAgICAgICAgICAgICAgICAgaWNvbj17dHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcuaWNvbiA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7Z2V0VGFnTGFiZWwodGFnKX1cbiAgICAgICAgICAgICAgICA8L1RhZz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8VGFnc1dyYXBwZXJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgJHtkYXRhVGVzdElkID8/ICd0YWdsaXN0J30tb3BlbmB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1Zpc2libGUodHJ1ZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgK3t0YWdzLmxlbmd0aCAtIHRtcFRocmVzaG9sZH1cbiAgICAgICAgICA8L1RhZ3NXcmFwcGVyPlxuICAgICAgICA8L1BvcG92ZXI+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgKVxufVxuIl19 */"));
48
+ }) => multiline && `flex-wrap: wrap;`, ";", ({
49
+ popoverTriggerWidth
50
+ }) => popoverTriggerWidth && `
51
+ &:has(.ellipsed) {
52
+ width: calc(100% - ${popoverTriggerWidth}px); // to let space for the +X button
53
+ max-width: fit-content;
54
+ }
55
+
56
+ & span, div {
57
+ width: 100%;
58
+ max-width: fit-content;
59
+ }
60
+ `, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1RhZ0xpc3QvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDRSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9UYWdMaXN0L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgY29uc29sZUxpZ2h0VGhlbWUgfSBmcm9tICdAdWx0cmF2aW9sZXQvdGhlbWVzJ1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFByb3BzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vUG9wb3ZlcidcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL1RhZydcblxuY29uc3QgVEFHU19HQVAgPSBjb25zb2xlTGlnaHRUaGVtZS5zcGFjZVsnMSddXG5cbmNvbnN0IFN0eWxlZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gXG5cbmNvbnN0IFRhZ3NXcmFwcGVyID0gc3R5bGVkLnNwYW5gXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gIG1heC13aWR0aDogMzUwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbmBcblxuY29uc3QgU3R5bGVkVGFnQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7XG4gIGdhcDogc3RyaW5nXG4gIG11bHRpbGluZT86IGJvb2xlYW5cbiAgcG9wb3ZlclRyaWdnZXJXaWR0aD86IG51bWJlclxufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBnYXA6ICR7KHsgZ2FwIH0pID0+IGdhcH07XG4gICR7KHsgbXVsdGlsaW5lIH0pID0+IG11bHRpbGluZSAmJiBgZmxleC13cmFwOiB3cmFwO2B9O1xuXG4gIC8vIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIG9uZSB0YWcgYW5kIHdlIG5lZWQgdG8gZWxsaXBzaXMgaXRcbiAgJHsoeyBwb3BvdmVyVHJpZ2dlcldpZHRoIH0pID0+XG4gICAgcG9wb3ZlclRyaWdnZXJXaWR0aCAmJlxuICAgIGBcbiAgICAgICY6aGFzKC5lbGxpcHNlZCkge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gJHtwb3BvdmVyVHJpZ2dlcldpZHRofXB4KTsgLy8gdG8gbGV0IHNwYWNlIGZvciB0aGUgK1ggYnV0dG9uXG4gICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgICYgc3BhbiwgZGl2IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICB9XG4gIGB9O1xuYFxuXG5leHBvcnQgdHlwZSBUYWdUeXBlID1cbiAgfCBzdHJpbmdcbiAgfCB7IGxhYmVsOiBzdHJpbmc7IGljb246IE5vbk51bGxhYmxlPENvbXBvbmVudFByb3BzPHR5cGVvZiBUYWc+WydpY29uJ10+IH1cblxudHlwZSBUYWdMaXN0UHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSBtYXhpbXVtIGNoYXJhY3RlcnMgbGVuZ3RoIG9mIGFsbCB0YWdzIHVudGlsIGl0IGhpZGUgdGFncyBpbnRvIHRvb2x0aXAuXG4gICAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgdGFncz86IFRhZ1R5cGVbXVxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSBjaGFyYWN0ZXJzIGxlbmd0aCBvZiBhbGwgdGFncyB1bnRpbCBpdCBoaWRlIHRhZ3MgaW50byB0b29sdGlwLlxuICAgKiBOQjogdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gaWYgdGhlIHBhcmVudCB3aWR0aCBpcyBzbWFsbGVyIGFuZCBjYW5ub3Qgc2hvdyBhbGwgdGhlIHRhZ3NcbiAgICovXG4gIHRocmVzaG9sZD86IG51bWJlclxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmUgbWF4aW11bSB3aWR0aCBvZiBlYWNoIHRhZy4gVGhpcyBkb2Vzbid0IGFwcGx5IGZvciB0YWdzIGluIHRvb2x0aXAuXG4gICAqL1xuICBtdWx0aWxpbmU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZSB0aGUgdGl0bGUgb2YgdGhlIFBvcG92ZXIsIHdoZW4gc29tZSB0YWdzIGFyZSBoaWRkZW4gYmVjYXVzZSBvZiB0aGUgdGhyZXNob2xkLlxuICAgKi9cbiAgcG9wb3ZlclRpdGxlOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBwb3BvdmVyIHdpbGwgYmUgcGxhY2VkIGF1dG9tYXRpY2FsbHkgYnkgZGVmYXVsdC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3ZlciB0aHJvdWdoXG4gICAqIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBwb3BvdmVyUGxhY2VtZW50PzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcG92ZXI+WydwbGFjZW1lbnQnXVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xufSAmIFBpY2s8Q29tcG9uZW50UHJvcHM8dHlwZW9mIFRhZz4sICdjb3BpYWJsZScgfCAnY29weVRleHQnIHwgJ2NvcGllZFRleHQnPlxuXG5jb25zdCBERUZBVUxUX1RBR1M6IFRhZ0xpc3RQcm9wc1sndGFncyddID0gW11cblxuY29uc3QgZ2V0VGFnTGFiZWwgPSAodGFnOiBOb25OdWxsYWJsZTxUYWdMaXN0UHJvcHNbJ3RhZ3MnXT5bbnVtYmVyXSkgPT5cbiAgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcubGFiZWwgOiB0YWdcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHRhZ3Mgd2l0aCBhIHRocmVzaG9sZCBhbmQgYSBwb3BvdmVyIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHRhZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBUYWdMaXN0ID0gKHtcbiAgbWF4TGVuZ3RoID0gNjAwLFxuICB0YWdzID0gREVGQVVMVF9UQUdTLFxuICB0aHJlc2hvbGQgPSAxLFxuICBtdWx0aWxpbmUgPSBmYWxzZSxcbiAgcG9wb3ZlclRpdGxlLFxuICBwb3BvdmVyUGxhY2VtZW50LFxuICBjb3BpYWJsZSxcbiAgY29weVRleHQsXG4gIGNvcGllZFRleHQsXG4gIGNsYXNzTmFtZSxcbiAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbn06IFRhZ0xpc3RQcm9wcykgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IG1lYXN1cmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJUcmlnZ2VyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIC8vIEEgZmxhZyB0byBrZWVwIG9mIHdoZW4gd2Ugc2hvdyB0aGUgY29tcG9uZW50IGFzIHdlIHdlIG1pZ2h0IHVwZGF0ZSB0aGUgdmlzaWJsZSB0YWdzIGxpc3RcbiAgLy8gYWZ0ZXIgdGhlIGZpcnN0IHJlbmRlciAoIHRvIGtub3cgaWYgd2Ugc2hvdWxkIGFkZCBlbGxpcHNpcyB0byB0aGUgbGFzdCB2aXNpYmxlIHRhZ1xuICAvLyBvciByZWFkanVzdCB0aGUgdGFncyB3aGVuIGpvaW5lZCB3aXRoIHRoZSBwb3BvdmVyIHRyaWdnZXIgbWlnaHQgb3ZlcmZsb3cgdGhlIHBhcmVudCApXG4gIC8vIGFuZCB0aGlzIGNhdXNlcyBzb21lIGZsaWNrZXJpbmdcbiAgY29uc3QgW2lzUmVhZHksIHNldElzUmVhZHldID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW2lzUG9wb3ZlclZpc2libGUsIHNldElzUG9wb3ZlclZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyVHJpZ2dlcldpZHRoLCBzZXRQb3BvdmVyVHJpZ2dlcldpZHRoXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt2aXNpYmxlVGFncywgc2V0VmlzaWJsZVRhZ3NdID0gdXNlU3RhdGU8VGFnVHlwZVtdPihbXSlcbiAgY29uc3QgW2hpZGRlblRhZ3MsIHNldEhpZGRlblRhZ3NdID0gdXNlU3RhdGU8VGFnVHlwZVtdPihbXSlcblxuICAvLyBDb21wdXRlIHRtcFRocmVzaG9sZCwgcG90ZW50aWFsbHkgdmlzaWJsZSB0YWdzIGFuZCBzdXJlbHkgaGlkZGVuIHRhZ3NcbiAgY29uc3QgbWVtb2l6ZWRSZXN1bHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdG1wVGhyZXNob2xkID0gdGhyZXNob2xkXG4gICAgaWYgKFxuICAgICAgdGFncy5sZW5ndGggPiAwICYmXG4gICAgICB0YWdzXG4gICAgICAgIC5zbGljZSgwLCB0bXBUaHJlc2hvbGQpXG4gICAgICAgIC5yZWR1Y2U8c3RyaW5nPigoYWNjLCB0YWcpID0+IGFjYyArIGdldFRhZ0xhYmVsKHRhZyksICcnKS5sZW5ndGggPlxuICAgICAgICBtYXhMZW5ndGhcbiAgICApIHtcbiAgICAgIHRtcFRocmVzaG9sZCAtPSAxXG4gICAgfVxuXG4gICAgY29uc3QgcG90ZW50aWFsbHlWaXNpYmxlVGFnc0xlbmd0aCA9XG4gICAgICB0YWdzLmxlbmd0aCA+IHRtcFRocmVzaG9sZCB8fCBmYWxzZSA/IHRtcFRocmVzaG9sZCA6IHRhZ3MubGVuZ3RoXG4gICAgY29uc3QgcG90ZW50aWFsbHlWaXNpYmxlVGFncyA9IHRhZ3Muc2xpY2UoMCwgcG90ZW50aWFsbHlWaXNpYmxlVGFnc0xlbmd0aClcbiAgICBjb25zdCBzdXJlbHlIaWRkZW5UYWdzID0gdGFncy5zbGljZShwb3RlbnRpYWxseVZpc2libGVUYWdzTGVuZ3RoKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRtcFRocmVzaG9sZCxcbiAgICAgIHBvdGVudGlhbGx5VmlzaWJsZVRhZ3MsXG4gICAgICBzdXJlbHlIaWRkZW5UYWdzLFxuICAgIH1cbiAgfSwgW21heExlbmd0aCwgdGFncywgdGhyZXNob2xkXSlcblxuICBjb25zdCB7IHRtcFRocmVzaG9sZCwgcG90ZW50aWFsbHlWaXNpYmxlVGFncywgc3VyZWx5SGlkZGVuVGFncyB9ID1cbiAgICBtZW1vaXplZFJlc3VsdFxuXG4gIC8vIENvbXB1dGUgdmlzaWJsZSB0YWdzIGFuZCBoaWRkZW4gb25lcyBiYXNlZCBvbiB0aGUgY29udGFpbmVyIHdpZHRoIGFuZFxuICAvLyB3aGF0IGNhbiBmaXQgaW50byBpdCBmcm9tIHRoZSBwb3RlbnRpYWxseSB2aXNpYmxlIHRhZ3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhZ3MubGVuZ3RoIHx8ICFjb250YWluZXJSZWYuY3VycmVudCB8fCAhbWVhc3VyZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICBzZXRWaXNpYmxlVGFncyhwb3RlbnRpYWxseVZpc2libGVUYWdzKVxuICAgICAgc2V0SGlkZGVuVGFncyhzdXJlbHlIaWRkZW5UYWdzKVxuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRXaWR0aCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRoIHx8IDBcblxuICAgIGNvbnN0IHRvTWVhc3VyZUVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbiA9XG4gICAgICBtZWFzdXJlUmVmLmN1cnJlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5cblxuICAgIGNvbnN0IFtmaXJzdFRhZywgLi4ucmVzdE9mVG9NZWFzdXJlRWxlbWVudHNdID0gWy4uLnRvTWVhc3VyZUVsZW1lbnRzXVxuXG4gICAgY29uc3QgeyBtZWFzdXJlZFZpc2libGVUYWdzLCBtZWFzdXJlZEhpZGRlblRhZ3MgfSA9XG4gICAgICByZXN0T2ZUb01lYXN1cmVFbGVtZW50cy5yZWR1Y2UoXG4gICAgICAgIChcbiAgICAgICAgICBhY2N1bXVsYXRvcjoge1xuICAgICAgICAgICAgbWVhc3VyZWRWaXNpYmxlVGFnczogVGFnVHlwZVtdXG4gICAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFRhZ1R5cGVbXVxuICAgICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDogbnVtYmVyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICk6IHtcbiAgICAgICAgICBtZWFzdXJlZFZpc2libGVUYWdzOiBUYWdUeXBlW11cbiAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFRhZ1R5cGVbXVxuICAgICAgICAgIGFjY3VtdWxhdGVkV2lkdGg6IG51bWJlclxuICAgICAgICB9ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdBY2N1bXVsYXRlZFdpZHRoID1cbiAgICAgICAgICAgIGFjY3VtdWxhdG9yLmFjY3VtdWxhdGVkV2lkdGggK1xuICAgICAgICAgICAgKGN1cnJlbnRWYWx1ZSBhcyBIVE1MRGl2RWxlbWVudCkub2Zmc2V0V2lkdGggK1xuICAgICAgICAgICAgcGFyc2VJbnQoVEFHU19HQVAsIDEwKVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1lYXN1cmVkVmlzaWJsZVRhZ3M6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IubWVhc3VyZWRWaXNpYmxlVGFncyxcbiAgICAgICAgICAgICAgbmV3QWNjdW11bGF0ZWRXaWR0aCA8PSBwYXJlbnRXaWR0aCAmJiB0YWdzW2luZGV4ICsgMV0sXG4gICAgICAgICAgICBdLmZpbHRlcihCb29sZWFuKSBhcyBUYWdUeXBlW10sXG4gICAgICAgICAgICBtZWFzdXJlZEhpZGRlblRhZ3M6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IubWVhc3VyZWRIaWRkZW5UYWdzLFxuICAgICAgICAgICAgICBuZXdBY2N1bXVsYXRlZFdpZHRoID4gcGFyZW50V2lkdGggJiYgdGFnc1tpbmRleCArIDFdLFxuICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikgYXMgVGFnVHlwZVtdLFxuICAgICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDogbmV3QWNjdW11bGF0ZWRXaWR0aCxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtZWFzdXJlZFZpc2libGVUYWdzOiBbdGFnc1swXV0sIC8vIHdlIG5lZWQgdG8gYWx3YXlzIHNob3cgb25lIHRhZ1xuICAgICAgICAgIG1lYXN1cmVkSGlkZGVuVGFnczogW10sXG4gICAgICAgICAgYWNjdW11bGF0ZWRXaWR0aDpcbiAgICAgICAgICAgIChmaXJzdFRhZyBhcyBIVE1MRGl2RWxlbWVudCkub2Zmc2V0V2lkdGggKyBwYXJzZUludChUQUdTX0dBUCwgMTApLFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgY29uc3QgZmluYWxIaWRkZW5UYWdzID0gbWVhc3VyZWRIaWRkZW5UYWdzLmNvbmNhdChzdXJlbHlIaWRkZW5UYWdzKVxuXG4gICAgc2V0VmlzaWJsZVRhZ3MobWVhc3VyZWRWaXNpYmxlVGFncylcbiAgICBzZXRIaWRkZW5UYWdzKGZpbmFsSGlkZGVuVGFncylcblxuICAgIGlmICghZmluYWxIaWRkZW5UYWdzLmxlbmd0aCkge1xuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuICAgIH1cbiAgfSwgW1xuICAgIG11bHRpbGluZSxcbiAgICBwb3RlbnRpYWxseVZpc2libGVUYWdzLFxuICAgIHN1cmVseUhpZGRlblRhZ3MsXG4gICAgdGFncyxcbiAgICB0aHJlc2hvbGQsXG4gICAgdG1wVGhyZXNob2xkLFxuICBdKVxuXG4gIC8vIE9uY2UgdGhlIHBvcG92ZXIgdHJpZ2dlciBpcyBhdmFpbGFibGUgd2UgaGF2ZSB0bzpcbiAgLy8gLSB0byBnZXQgdGhlIHBvcG92ZXIgdHJpZ2dlciB3aWR0aCBzbyB0aGUgbGFzdCB2aXNpYmxlIHRhZ3MgY2FuIGhhdmUgZWxsaXBzaXMgaWYgbmVlZGVkXG4gIC8vIC0gcmVtb3ZlIHRoZSBsYXN0IHRhZyBpZiB0aGUgcG9wb3ZlciBoYXZlIG5vIHBsYWNlIGFuZCBwdXNoIGl0IGluIHRvIHRoZSBoaWRkZW4gdGFncyBsaXN0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1JlYWR5ICYmIHBvcG92ZXJUcmlnZ2VyUmVmLmN1cnJlbnQ/Lm9mZnNldFdpZHRoKSB7XG4gICAgICBjb25zdCBuZXdQb3BvdmVyVHJpZ2dlcldpZHRoID0gcG9wb3ZlclRyaWdnZXJSZWYuY3VycmVudC5vZmZzZXRXaWR0aFxuXG4gICAgICAvLyBTZXQgcG9wb3ZlciB0cmlnZ2VyIHdpZHRoXG4gICAgICBzZXRQb3BvdmVyVHJpZ2dlcldpZHRoKG5ld1BvcG92ZXJUcmlnZ2VyV2lkdGgpXG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCB0YWcgaWYgd2UgaGF2ZSBhIHBvcG92ZXIgYW5kIGFkZCBpdCB0byB0aGUgaGlkZGVuIHRhZ3NcbiAgICAgIGNvbnN0IHRhZ3NDb250YWluZXIgPSBjb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgdGFnc0NvbnRhaW5lcldpZHRoID0gY29udGFpbmVyUmVmLmN1cnJlbnQ/Lm9mZnNldFdpZHRoIHx8IDBcbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gdGFnc0NvbnRhaW5lcj8ucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGggfHwgMFxuXG4gICAgICBpZiAoXG4gICAgICAgIHZpc2libGVUYWdzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaGlkZGVuVGFncy5sZW5ndGggPiAwICYmXG4gICAgICAgIHRhZ3NDb250YWluZXJXaWR0aCArIG5ld1BvcG92ZXJUcmlnZ2VyV2lkdGggPiBwYXJlbnRXaWR0aFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHZpc2libGVUYWdzQ29weSA9IHZpc2libGVUYWdzLmZpbHRlcihcbiAgICAgICAgICAoXywgaW5kZXgpID0+IGluZGV4IDwgdmlzaWJsZVRhZ3MubGVuZ3RoIC0gMSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCB0YWdUb01vdmUgPSB2aXNpYmxlVGFnc1t2aXNpYmxlVGFncy5sZW5ndGggLSAxXVxuXG4gICAgICAgIHNldFZpc2libGVUYWdzKHZpc2libGVUYWdzQ29weSlcbiAgICAgICAgc2V0SGlkZGVuVGFncyhbdGFnVG9Nb3ZlLCAuLi5oaWRkZW5UYWdzXSlcbiAgICAgIH1cblxuICAgICAgc2V0SXNSZWFkeSh0cnVlKVxuICAgIH1cbiAgfSwgW2hpZGRlblRhZ3MsIGlzUmVhZHksIHRocmVzaG9sZCwgdmlzaWJsZVRhZ3MsIHZpc2libGVUYWdzLmxlbmd0aF0pXG5cbiAgLy8gUmVtb3ZlIHRoZSBoaWRkZW4gZGl2IHRoYXQgc2VydmVkIHRvIG1lYXN1cmUgdGhlIHJlbmRlcmVkIHRhZ3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSZWFkeSAmJiBtZWFzdXJlUmVmLmN1cnJlbnQ/LnBhcmVudE5vZGUpIHtcbiAgICAgIG1lYXN1cmVSZWYuY3VycmVudC5yZW1vdmUoKVxuICAgIH1cbiAgfSwgW2lzUmVhZHldKVxuXG4gIGlmICghdGFncy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgcmVuZGVyVGFnID0gKHRhZzogVGFnVHlwZSwgaW5kZXg6IG51bWJlciwgaXNFbGxpcHNpcyA9IGZhbHNlKSA9PiAoXG4gICAgPFRhZ1xuICAgICAgLy8gdXNlZnVsIHdoZW4gdHdvIHRhZ3MgYXJlIGlkZW50aWNhbCBgJHt0YWd9LSR7aW5kZXh9YFxuICAgICAga2V5PXtgJHtnZXRUYWdMYWJlbCh0YWcpfS0ke2luZGV4fWB9XG4gICAgICBjb3BpYWJsZT17Y29waWFibGV9XG4gICAgICBjb3B5VGV4dD17Y29weVRleHR9XG4gICAgICBjb3BpZWRUZXh0PXtjb3BpZWRUZXh0fVxuICAgICAgaWNvbj17dHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgPyB0YWcuaWNvbiA6IHVuZGVmaW5lZH1cbiAgICAgIGNsYXNzTmFtZT17aXNFbGxpcHNpcyA/ICdlbGxpcHNlZCcgOiAnJ31cbiAgICA+XG4gICAgICB7Z2V0VGFnTGFiZWwodGFnKX1cbiAgICA8L1RhZz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHZpc2liaWxpdHk6IGlzUmVhZHkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lclxuICAgICAgICBnYXA9e1RBR1NfR0FQfVxuICAgICAgICBtdWx0aWxpbmU9e211bHRpbGluZX1cbiAgICAgICAgcG9wb3ZlclRyaWdnZXJXaWR0aD17cG9wb3ZlclRyaWdnZXJXaWR0aH1cbiAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICA+XG4gICAgICAgIHt2aXNpYmxlVGFncy5tYXAoKHRhZywgaW5kZXgpID0+XG4gICAgICAgICAgcmVuZGVyVGFnKFxuICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAvLyBhZGQgZWxsaXBzaXMgdG8gbGFzdCB0YWdcbiAgICAgICAgICAgIGluZGV4ID09PSB2aXNpYmxlVGFncy5sZW5ndGggLSAxLFxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgIHsvKiBBIGhpZGRlbiBkaXYgd2hpY2ggcmVuZGVycyB0aGUgdGFncyBzbyB3ZSBjYW4gbWVhc3VyZSB0aGVtICovfVxuICAgICAgPGRpdlxuICAgICAgICByZWY9e21lYXN1cmVSZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRUYWdDb250YWluZXIgZ2FwPXtUQUdTX0dBUH0+XG4gICAgICAgICAge3BvdGVudGlhbGx5VmlzaWJsZVRhZ3MubWFwKCh0YWcsIGluZGV4KSA9PiByZW5kZXJUYWcodGFnLCBpbmRleCkpfVxuICAgICAgICA8L1N0eWxlZFRhZ0NvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hpZGRlblRhZ3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgdGl0bGU9e3BvcG92ZXJUaXRsZX1cbiAgICAgICAgICB2aXNpYmxlPXtpc1BvcG92ZXJWaXNpYmxlfVxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNQb3BvdmVyVmlzaWJsZShmYWxzZSl9XG4gICAgICAgICAgcGxhY2VtZW50PXtwb3BvdmVyUGxhY2VtZW50fVxuICAgICAgICAgIGNvbnRlbnQ9e1xuICAgICAgICAgICAgPFN0eWxlZFRhZ0NvbnRhaW5lciBtdWx0aWxpbmUgZ2FwPXtUQUdTX0dBUH0+XG4gICAgICAgICAgICAgIHtoaWRkZW5UYWdzLm1hcCgodGFnLCBpbmRleCkgPT4gcmVuZGVyVGFnKHRhZywgaW5kZXgpKX1cbiAgICAgICAgICAgIDwvU3R5bGVkVGFnQ29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWdzV3JhcHBlclxuICAgICAgICAgICAgcmVmPXtwb3BvdmVyVHJpZ2dlclJlZn1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgJHtkYXRhVGVzdElkID8/ICd0YWdsaXN0J30tb3BlbmB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1BvcG92ZXJWaXNpYmxlKHRydWUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICt7aGlkZGVuVGFncy5sZW5ndGh9XG4gICAgICAgICAgPC9UYWdzV3JhcHBlcj5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgKVxufVxuIl19 */"));
47
61
  const DEFAULT_TAGS = [];
48
62
  const getTagLabel = (tag) => typeof tag === "object" ? tag.label : tag;
49
63
  const TagList = ({
@@ -59,42 +73,123 @@ const TagList = ({
59
73
  className,
60
74
  "data-testid": dataTestId
61
75
  }) => {
62
- let tmpThreshold = threshold;
63
- if (tags.length > 0 && tags.slice(0, tmpThreshold).reduce((acc, tag) => acc + getTagLabel(tag), "").length > maxLength) {
64
- tmpThreshold -= 1;
65
- }
66
- const hasManyTags = tags.length > tmpThreshold || false;
67
- const visibleTagsCount = hasManyTags ? tmpThreshold : tags.length;
68
- const [isVisible, setIsVisible] = React.useState(false);
76
+ const containerRef = React.useRef(null);
77
+ const measureRef = React.useRef(null);
78
+ const popoverTriggerRef = React.useRef(null);
79
+ const [isReady, setIsReady] = React.useState(false);
80
+ const [isPopoverVisible, setIsPopoverVisible] = React.useState(false);
81
+ const [popoverTriggerWidth, setPopoverTriggerWidth] = React.useState(0);
82
+ const [visibleTags, setVisibleTags] = React.useState([]);
83
+ const [hiddenTags, setHiddenTags] = React.useState([]);
84
+ const memoizedResult = React.useMemo(() => {
85
+ let tmpThreshold2 = threshold;
86
+ if (tags.length > 0 && tags.slice(0, tmpThreshold2).reduce((acc, tag) => acc + getTagLabel(tag), "").length > maxLength) {
87
+ tmpThreshold2 -= 1;
88
+ }
89
+ const potentiallyVisibleTagsLength = tags.length > tmpThreshold2 || false ? tmpThreshold2 : tags.length;
90
+ const potentiallyVisibleTags2 = tags.slice(0, potentiallyVisibleTagsLength);
91
+ const surelyHiddenTags2 = tags.slice(potentiallyVisibleTagsLength);
92
+ return {
93
+ tmpThreshold: tmpThreshold2,
94
+ potentiallyVisibleTags: potentiallyVisibleTags2,
95
+ surelyHiddenTags: surelyHiddenTags2
96
+ };
97
+ }, [maxLength, tags, threshold]);
98
+ const {
99
+ tmpThreshold,
100
+ potentiallyVisibleTags,
101
+ surelyHiddenTags
102
+ } = memoizedResult;
103
+ React.useEffect(() => {
104
+ if (!tags.length || !containerRef.current || !measureRef.current) {
105
+ return;
106
+ }
107
+ if (multiline) {
108
+ setVisibleTags(potentiallyVisibleTags);
109
+ setHiddenTags(surelyHiddenTags);
110
+ setIsReady(true);
111
+ return;
112
+ }
113
+ const parentWidth = containerRef.current.parentElement?.offsetWidth || 0;
114
+ const toMeasureElements = measureRef.current.children[0].children;
115
+ const [firstTag, ...restOfToMeasureElements] = [...toMeasureElements];
116
+ const {
117
+ measuredVisibleTags,
118
+ measuredHiddenTags
119
+ } = restOfToMeasureElements.reduce((accumulator, currentValue, index2) => {
120
+ const newAccumulatedWidth = accumulator.accumulatedWidth + currentValue.offsetWidth + parseInt(TAGS_GAP, 10);
121
+ return {
122
+ measuredVisibleTags: [...accumulator.measuredVisibleTags, newAccumulatedWidth <= parentWidth && tags[index2 + 1]].filter(Boolean),
123
+ measuredHiddenTags: [...accumulator.measuredHiddenTags, newAccumulatedWidth > parentWidth && tags[index2 + 1]].filter(Boolean),
124
+ accumulatedWidth: newAccumulatedWidth
125
+ };
126
+ }, {
127
+ measuredVisibleTags: [tags[0]],
128
+ // we need to always show one tag
129
+ measuredHiddenTags: [],
130
+ accumulatedWidth: firstTag.offsetWidth + parseInt(TAGS_GAP, 10)
131
+ });
132
+ const finalHiddenTags = measuredHiddenTags.concat(surelyHiddenTags);
133
+ setVisibleTags(measuredVisibleTags);
134
+ setHiddenTags(finalHiddenTags);
135
+ if (!finalHiddenTags.length) {
136
+ setIsReady(true);
137
+ }
138
+ }, [multiline, potentiallyVisibleTags, surelyHiddenTags, tags, threshold, tmpThreshold]);
139
+ React.useEffect(() => {
140
+ if (!isReady && popoverTriggerRef.current?.offsetWidth) {
141
+ const newPopoverTriggerWidth = popoverTriggerRef.current.offsetWidth;
142
+ setPopoverTriggerWidth(newPopoverTriggerWidth);
143
+ const tagsContainer = containerRef.current;
144
+ const tagsContainerWidth = containerRef.current?.offsetWidth || 0;
145
+ const parentWidth = tagsContainer?.parentElement?.offsetWidth || 0;
146
+ if (visibleTags.length > 1 && hiddenTags.length > 0 && tagsContainerWidth + newPopoverTriggerWidth > parentWidth) {
147
+ const visibleTagsCopy = visibleTags.filter((_, index2) => index2 < visibleTags.length - 1);
148
+ const tagToMove = visibleTags[visibleTags.length - 1];
149
+ setVisibleTags(visibleTagsCopy);
150
+ setHiddenTags([tagToMove, ...hiddenTags]);
151
+ }
152
+ setIsReady(true);
153
+ }
154
+ }, [hiddenTags, isReady, threshold, visibleTags, visibleTags.length]);
155
+ React.useEffect(() => {
156
+ if (isReady && measureRef.current?.parentNode) {
157
+ measureRef.current.remove();
158
+ }
159
+ }, [isReady]);
69
160
  if (!tags.length) {
70
161
  return null;
71
162
  }
72
- return /* @__PURE__ */ jsxRuntime.jsxs(StyledContainer, { className, "data-testid": dataTestId, children: [
73
- /* @__PURE__ */ jsxRuntime.jsx(StyledTagContainer, { multiline, children: tags.slice(0, visibleTagsCount).map((tag, index$12) => /* @__PURE__ */ jsxRuntime.jsx(
74
- index.Tag,
75
- {
76
- copiable,
77
- copyText,
78
- copiedText,
79
- icon: typeof tag === "object" ? tag.icon : void 0,
80
- children: getTagLabel(tag)
81
- },
82
- `${getTagLabel(tag)}-${index$12}`
163
+ const renderTag = (tag, index2, isEllipsis = false) => /* @__PURE__ */ jsxRuntime.jsx(
164
+ index$1.Tag,
165
+ {
166
+ copiable,
167
+ copyText,
168
+ copiedText,
169
+ icon: typeof tag === "object" ? tag.icon : void 0,
170
+ className: isEllipsis ? "ellipsed" : "",
171
+ children: getTagLabel(tag)
172
+ },
173
+ `${getTagLabel(tag)}-${index2}`
174
+ );
175
+ return /* @__PURE__ */ jsxRuntime.jsxs(StyledContainer, { className, "data-testid": dataTestId, style: {
176
+ visibility: isReady ? "visible" : "hidden"
177
+ }, children: [
178
+ /* @__PURE__ */ jsxRuntime.jsx(StyledTagContainer, { gap: TAGS_GAP, multiline, popoverTriggerWidth, ref: containerRef, children: visibleTags.map((tag, index2) => renderTag(
179
+ tag,
180
+ index2,
181
+ // add ellipsis to last tag
182
+ index2 === visibleTags.length - 1
83
183
  )) }),
84
- hasManyTags ? /* @__PURE__ */ jsxRuntime.jsx(index$1.Popover, { title: popoverTitle, visible: isVisible, size: "small", onClose: () => setIsVisible(false), placement: popoverPlacement, content: /* @__PURE__ */ jsxRuntime.jsx(StyledTagContainer, { multiline: true, children: tags.slice(visibleTagsCount).map((tag, index$12) => /* @__PURE__ */ jsxRuntime.jsx(
85
- index.Tag,
86
- {
87
- copiable,
88
- copyText,
89
- copiedText,
90
- icon: typeof tag === "object" ? tag.icon : void 0,
91
- children: getTagLabel(tag)
92
- },
93
- `${getTagLabel(tag)}-${index$12}`
94
- )) }), children: /* @__PURE__ */ jsxRuntime.jsxs(TagsWrapper, { "data-testid": `${dataTestId ?? "taglist"}-open`, onClick: () => setIsVisible(true), children: [
184
+ /* @__PURE__ */ jsxRuntime.jsx("div", { ref: measureRef, style: {
185
+ visibility: "hidden",
186
+ position: "absolute",
187
+ whiteSpace: "nowrap"
188
+ }, children: /* @__PURE__ */ jsxRuntime.jsx(StyledTagContainer, { gap: TAGS_GAP, children: potentiallyVisibleTags.map((tag, index2) => renderTag(tag, index2)) }) }),
189
+ hiddenTags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(index.Popover, { title: popoverTitle, visible: isPopoverVisible, size: "small", onClose: () => setIsPopoverVisible(false), placement: popoverPlacement, content: /* @__PURE__ */ jsxRuntime.jsx(StyledTagContainer, { multiline: true, gap: TAGS_GAP, children: hiddenTags.map((tag, index2) => renderTag(tag, index2)) }), children: /* @__PURE__ */ jsxRuntime.jsxs(TagsWrapper, { ref: popoverTriggerRef, "data-testid": `${dataTestId ?? "taglist"}-open`, onClick: () => setIsPopoverVisible(true), children: [
95
190
  "+",
96
- tags.length - tmpThreshold
97
- ] }) }) : null
191
+ hiddenTags.length
192
+ ] }) })
98
193
  ] });
99
194
  };
100
195
  exports.TagList = TagList;
@@ -1,17 +1,19 @@
1
1
  import type { ComponentProps } from 'react';
2
2
  import { Popover } from '../Popover';
3
3
  import { Tag } from '../Tag';
4
+ export type TagType = string | {
5
+ label: string;
6
+ icon: NonNullable<ComponentProps<typeof Tag>['icon']>;
7
+ };
4
8
  type TagListProps = {
5
9
  /**
6
10
  * This property define maximum characters length of all tags until it hide tags into tooltip.
7
11
  */
8
12
  maxLength?: number;
9
- tags?: (string | {
10
- label: string;
11
- icon: NonNullable<ComponentProps<typeof Tag>['icon']>;
12
- })[];
13
+ tags?: TagType[];
13
14
  /**
14
15
  * This property define maximum characters length of all tags until it hide tags into tooltip.
16
+ * NB: this will be overridden if the parent width is smaller and cannot show all the tags
15
17
  */
16
18
  threshold?: number;
17
19
  /**