@onepercentio/one-ui 1.0.0 → 1.0.2

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.
Files changed (33) hide show
  1. package/dist/components/Form/Form.hook.d.ts +10 -10
  2. package/dist/components/Form/Form.hook.js +1 -1
  3. package/dist/components/Form/Form.types.d.ts +3 -3
  4. package/dist/components/Form/Form.types.js +1 -1
  5. package/dist/components/Form/FormField/FormField.js +1 -1
  6. package/dist/components/Form/FormField/FormField.types.d.ts +1 -1
  7. package/dist/components/Form/FormField/FormField.types.js +1 -1
  8. package/dist/context/OneUIProvider.d.ts +1 -1
  9. package/dist/context/OneUIProvider.js +1 -1
  10. package/dist/hooks/useHero.js +6 -2
  11. package/dist/index.d.ts +3 -2
  12. package/dist/index.js +22 -10
  13. package/dist/index.preprocess.js +4 -3
  14. package/dist-ts/components/Form/Form.hook.d.ts +10 -10
  15. package/dist-ts/components/Form/Form.hook.js.map +1 -1
  16. package/dist-ts/components/Form/Form.types.d.ts +3 -3
  17. package/dist-ts/components/Form/FormField/FormField.js +1 -1
  18. package/dist-ts/components/Form/FormField/FormField.js.map +1 -1
  19. package/dist-ts/components/Form/FormField/FormField.types.d.ts +1 -1
  20. package/dist-ts/context/OneUIProvider.d.ts +1 -1
  21. package/dist-ts/hooks/useHero.js +3 -1
  22. package/dist-ts/hooks/useHero.js.map +1 -1
  23. package/dist-ts/index.d.ts +3 -2
  24. package/dist-ts/index.js +3 -2
  25. package/dist-ts/index.js.map +1 -1
  26. package/dist-ts/index.preprocess.js +16 -12
  27. package/dist-ts/index.preprocess.js.map +1 -1
  28. package/package.json +2 -2
  29. package/dist/test.d.ts +0 -0
  30. package/dist/test.js +0 -2
  31. package/dist-ts/test.d.ts +0 -0
  32. package/dist-ts/test.js +0 -2
  33. package/dist-ts/test.js.map +0 -1
@@ -137,7 +137,11 @@ function useHero(id) {
137
137
  const coordinates = otherElement.getBoundingClientRect();
138
138
  const currentCoordinates = heroRef.current.getBoundingClientRect();
139
139
  const itWontMove = !willTheHeroMove(coordinates, currentCoordinates);
140
- if (itWontMove) return;
140
+ if (itWontMove) {
141
+ var _events$onHeroEnd;
142
+ (_events$onHeroEnd = events.onHeroEnd) === null || _events$onHeroEnd === void 0 || _events$onHeroEnd.call(events);
143
+ return;
144
+ }
141
145
  if (!oldClone) {
142
146
  /** Set the clone over the starting element */
143
147
  setCloneToCoordinatesOf(otherElement);
@@ -266,4 +270,4 @@ const TRANSITION_FACTORY = exports.TRANSITION_FACTORY = {
266
270
  }
267
271
  })
268
272
  };
269
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIiLCJvcmlnaW4iLCJpZHNUaGF0V2lsbEFwcGVhciIsIm1hcCIsImEiLCJnZXRBdHRyaWJ1dGUiLCJwcmVleGlzdGluZ0NvbXBvbmVudHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlZEVsZW1lbnRzIiwiZWwiLCJpbmNsdWRlcyIsImVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQiLCJoZWlnaHRLZXkiLCJzdHlsZSIsImNsaWVudEhlaWdodCIsInNldFRpbWVvdXQiLCJvcGFjaXR5IiwiY29tcG9uZW50VGhhdFdpbGxBcHBlYXIiLCJhbHJlYWR5SW5qZWN0ZWRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlY3Vyc2l2ZUJ1aWxkUGF0aCIsImZyb21FbGVtZW50IiwicGF0aFN1ZmZpeCIsInVuZGVmaW5lZCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwYXJlbnRDaGlsZHMiLCJjaGlsZHJlbiIsImVsQ2hpbGRTZWxlY3RvciIsImluZGV4T2YiLCJ3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQiLCJpbnNlcnRBdEluZGV4IiwidGFyZ2V0RWxlbWVudENsb25lIiwiY2xvbmVOb2RlIiwic2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCIsInJlbWFpbmluZ0luZGV4ZXMiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJjaGlsZE5vZGVzIiwiaXRlbSIsIkFMV0FZU19UUkFOU0lUSU9OIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9wIiwiZGF0YVByZWZmaXgiLCJyZXBlYXRhYmxlIiwidXNlTWVtbyIsInAiLCJyZXBsYWNlIiwiXyIsInZhbCIsInRvTG93ZXJDYXNlIiwiX2RhdGFQcmVmZml4IiwiZGF0YVByb3BlcnR5IiwiaGVyb1JlZiIsInVzZVJlZiIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzZXRBdHRyaWJ1dGUiLCJnZXRIZXJvc09uU2NyZWVuIiwidXNlQ2FsbGJhY2siLCJvdGhlckVsZW1lbnRzIiwiZG9jdW1lbnQiLCJ0cmlnZ2VySGVyb0FuaW1hdGlvbiIsImFsbFByb3BzVG9UcmFuc2l0aW9uIiwib3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbGVtZW50IiwiY3VycmVudEVsQ29vcmRpbmF0ZXMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIm90aGVyRWxlbWVudCIsImZpbmQiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJvbkJlZm9yZVRyYW5zaXRpb24iLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwid2lsbFRoZUhlcm9Nb3ZlIiwidGFyZ2V0Iiwid2lsbEl0TW92ZSIsIk1hdGgiLCJ0cnVuYyIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsInNldENsb25lVG9Db29yZGluYXRlc09mIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJ3aWxsTW92ZSIsInBvc2l0aW9uIiwiaXRXb250TW92ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInByb3BUb1RyYW5zaXRpb24iLCJnZXRDb21wdXRlZFN0eWxlIiwidHJhbnNpdGlvbiIsInByb3AiLCJzdWIiLCJqb2luIiwiZWxJdFdpbGxUcmFuc2l0aW9uVG8iLCJjbGVhbnVwIiwib25IZXJvRW5kIiwicmVtb3ZlIiwib25IZXJvU3RhcnQiLCJpbml0aWFsT2Zmc2V0IiwicyIsIl9yZWYiLCJkIiwiY29udGFpbnMiLCJzY3JvbGxUb3AiLCJtYXJnaW5Ub3AiLCJ0cmFuc2l0aW9uRW5kQ2IiLCJvd25FdmVudCIsIl9yZWYyIiwiY3VycmVudFRhcmdldCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25DYW5jZWxDYiIsInVzZUVmZmVjdCIsInRyaWdnZXIiLCJoZXJvQ29tcG9uZW50UmVmIiwiY29tcG9uZW50SWQiLCJlbFJlZiIsImNsYXNzTGlzdCIsImFkZCIsIlN0eWxlcyIsImNvbXBvbmVudCIsImlzRWxlbWVudE91dHNpZGVWaWV3cG9ydCIsImVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCIsImVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQiLCJjb250YWluZXIiLCJWaXN1YWxWaWV3cG9ydCIsImNvbnRhaW5lckJvdW5kcyIsImlzQ29udGFpbmVyT3V0c2lkZVZpZXdwb3J0IiwiY2VudGVyUG9pbnQiLCJyZWN0IiwiYW5nbGUiLCJwb2ludEEiLCJwb2ludEIiLCJhdGFuMiIsIlBJIiwidG9GaXhlZCIsIlRSQU5TSVRJT05fRkFDVE9SWSIsImV4cG9ydHMiLCJBQ0NFTEVSQVRJT04iLCJhY2NlbGVyYXRpb24iLCJjZW50ZXJQb2ludE9yaWdpbiIsImNlbnRlclBvaW50RGVzdGluYXRpb24iLCJhbmdsZUJldHdlZW5FbGVtZW50cyIsInZlY3RvclgiLCJzaW4iLCJ2ZWN0b3JZIiwiY29zIiwicm90YXRlWSIsIm9yaWdpblgiLCJyb3RhdGVYIiwib3JpZ2luWSIsInNldFByb3BlcnR5IiwicGVyc3BlY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlSGVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi91dGlscy9vd25FdmVudFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi91c2VIZXJvLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IElEID0gKGlkOiBzdHJpbmcpID0+IGAke2lkfS1oZXJvYDtcbnR5cGUgU2hvdWxkU2tpcCA9IGJvb2xlYW47XG50eXBlIFJlc3VsdCA9IFtcbiAgb3JpZ2luQ29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnQsXG4gIHRhcmdldENvbnRhaW5lcjogRWxlbWVudCB8IFZpc3VhbFZpZXdwb3J0XG5dO1xuY29uc3Qgdmlld3BvcnQgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQhO1xuY29uc3QgREFUQV9UQUdfSEVST19DT01QT05FTlQgPSBcImRhdGEtaGVyby1jb21wb25lbnRcIjtcblxuZnVuY3Rpb24gdHJpZ2dlckR5bmFtaWNDb21wb25lbnRzKFxuICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXI6IEhUTUxEaXZFbGVtZW50W10sXG4gIG9yaWdpbjogSFRNTERpdkVsZW1lbnRcbikge1xuICBjb25zdCBpZHNUaGF0V2lsbEFwcGVhciA9IGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIubWFwKChhKSA9PlxuICAgIGEuZ2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UKVxuICApO1xuICBjb25zdCBwcmVleGlzdGluZ0NvbXBvbmVudHMgPSBBcnJheS5mcm9tKFxuICAgIGNsb25lLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfV1gKVxuICApIGFzIEhUTUxEaXZFbGVtZW50W107XG4gIGNvbnN0IHJlbW92ZWRFbGVtZW50czogSFRNTERpdkVsZW1lbnRbXSA9IHByZWV4aXN0aW5nQ29tcG9uZW50cy5maWx0ZXIoXG4gICAgKGVsKSA9PlxuICAgICAgIWlkc1RoYXRXaWxsQXBwZWFyLmluY2x1ZGVzKGVsLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCkpXG4gICk7XG5cbiAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZVtcbiAgICAgICAgaGVpZ2h0S2V5XG4gICAgICBdID0gYCR7ZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5jbGllbnRIZWlnaHR9cHhgO1xuICB9XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGZvciAobGV0IGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQgb2YgcmVtb3ZlZEVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlW2hlaWdodEtleV0gPSBgMHB4YDtcbiAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGUub3BhY2l0eSA9IGAwYDtcbiAgICB9XG4gIH0sIDApO1xuXG4gIGZvciAobGV0IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyIG9mIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIpIHtcbiAgICBjb25zdCBhbHJlYWR5SW5qZWN0ZWRFbGVtZW50ID0gISFjbG9uZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfT1cIiR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuZ2V0QXR0cmlidXRlKFxuICAgICAgICBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVFxuICAgICAgKX1cIl1gXG4gICAgKTtcbiAgICBpZiAoIWFscmVhZHlJbmplY3RlZEVsZW1lbnQpIHtcbiAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgZnJvbUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgICBwYXRoU3VmZml4OiBzdHJpbmcgPSBcIlwiXG4gICAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoZnJvbUVsZW1lbnQgPT09IG9yaWdpbikgcmV0dXJuIHBhdGhTdWZmaXg7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGZyb21FbGVtZW50LnBhcmVudEVsZW1lbnQhO1xuICAgICAgICBjb25zdCBwYXJlbnRDaGlsZHMgPSBBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbik7XG4gICAgICAgIGNvbnN0IGVsQ2hpbGRTZWxlY3RvciA9IGA6bnRoLWNoaWxkKCR7XG4gICAgICAgICAgcGFyZW50Q2hpbGRzLmluZGV4T2YoZnJvbUVsZW1lbnQpICsgMVxuICAgICAgICB9KWA7XG5cbiAgICAgICAgaWYgKGZyb21FbGVtZW50ICE9PSBvcmlnaW4pXG4gICAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgIGAke2VsQ2hpbGRTZWxlY3Rvcn0ke3BhdGhTdWZmaXggPyBgPiR7cGF0aFN1ZmZpeH1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gcGF0aFN1ZmZpeDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCA9IHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIucGFyZW50RWxlbWVudCFcbiAgICAgICk7XG4gICAgICBjb25zdCBpbnNlcnRBdEluZGV4ID0gQXJyYXkuZnJvbShcbiAgICAgICAgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIucGFyZW50RWxlbWVudCEuY2hpbGRyZW5cbiAgICAgICkuaW5kZXhPZihjb21wb25lbnRUaGF0V2lsbEFwcGVhcik7XG5cbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRDbG9uZSA9IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmNsb25lTm9kZShcbiAgICAgICAgdHJ1ZVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZVtoZWlnaHRLZXldID0gXCIwcHhcIjtcbiAgICAgIGNvbnN0IHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQgPSB3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnRcbiAgICAgICAgPyBjbG9uZS5xdWVyeVNlbGVjdG9yKHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCkhXG4gICAgICAgIDogY2xvbmU7XG4gICAgICBjb25zdCByZW1haW5pbmdJbmRleGVzID0gQXJyYXkuZnJvbShzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmNoaWxkcmVuKVxuICAgICAgICAubWFwKChlbCwgaSkgPT5cbiAgICAgICAgICByZW1vdmVkRWxlbWVudHMuaW5jbHVkZXMoZWwgYXMgSFRNTERpdkVsZW1lbnQpID8gdW5kZWZpbmVkIDogaVxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKGUpID0+IGUgIT09IHVuZGVmaW5lZCkgYXMgbnVtYmVyW107XG5cbiAgICAgIGlmIChpbnNlcnRBdEluZGV4ID09PSByZW1haW5pbmdJbmRleGVzLmxlbmd0aClcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5hcHBlbmQodGFyZ2V0RWxlbWVudENsb25lKTtcbiAgICAgIGVsc2VcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLFxuICAgICAgICAgIHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuY2hpbGROb2Rlcy5pdGVtKFxuICAgICAgICAgICAgcmVtYWluaW5nSW5kZXhlc1tpbnNlcnRBdEluZGV4XVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZVtcbiAgICAgICAgICAgIGhlaWdodEtleVxuICAgICAgICAgIF0gPSBgJHtjb21wb25lbnRUaGF0V2lsbEFwcGVhci5jbGllbnRIZWlnaHR9cHhgO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IEFMV0FZU19UUkFOU0lUSU9OID0gW1widG9wXCIsIFwibGVmdFwiXTtcblxuLyoqXG4gKiBUaGlzIGhvb2sgaW1wbGVtZW50cyB0aGUgbG9naWMgZm9yIGEgaGVybyBhbmltYXRpb24gYmV0d2VlbiAyIGVsZW1lbnRzIHNoYXJpbmcgdGhlIHNhbWUgaWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSGVybyhcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogUGFydGlhbDx7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IEV4Y2x1ZGU8XG4gICAgICBrZXlvZiBDU1NQcm9wZXJ0aWVzLFxuICAgICAgXCJ3aWR0aFwiIHwgXCJoZWlnaHRcIiB8IFwidG9wXCIgfCBcImxlZnRcIlxuICAgID5bXTtcbiAgICAvKiogSWYgc2V0LCB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzICh3aWR0aCwgaGVpZ2h0LCBldGMuLi4pIHdpbGwgbm90IHRyYW5zaXRpb24sIGFuZCBwcm9wc1RvVHJhbnNpdGlvbiB3aWxsIGJlIHRoZSBvbmx5IG9uZXMgdGhhdCB3aWxsIGJlIHRyYW5zaXRpb25lZCAqL1xuICAgIG92ZXJyaWRlUHJvcHNUb1RyYW5zaXRpb246IGJvb2xlYW47XG5cbiAgICBcImRhdGEtcHJlZmZpeFwiOiBzdHJpbmc7XG4gICAgLyoqIFRoaXMgaW5kaWNhdGVzIHRoaXMgaGVybyBhbmltYXRpb24gd2lsbCBwcm9iYWJseSBiZSByZXBlYXRlZCBtdWx0aXBsZSB0aW1lICovXG4gICAgcmVwZWF0YWJsZTogYm9vbGVhbjtcbiAgfT4gPSB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IFtdLFxuICB9LFxuICBldmVudHM6IHtcbiAgICAvKipcbiAgICAgKiBTaG91bGQgcmV0dXJuIGlmIHRoZSBkZXRlY3RlZCBlbGVtZW50IHNob3VsZCBiZSBcImhlcm9lZFwiXG4gICAgICpcbiAgICAgKiBVc2VmdWxsIGZvciB3aGVuIHRoZSBoZXJvIGhhcyAyIHBvc3NpYmxlIG9yaWdpbnMuXG4gICAgICogRm9yIGV4YW1wbGUsIG9uZSBjb3VsZCBoZXJvIG9ubHkgdGhlIGN1cnJlbnQgaG92ZXJlZCBlbGVtZW50IHdpdGggZWwubWF0Y2hlcyhcIjpob3ZlclwiKVxuICAgICAqL1xuICAgIG9uSGVyb0RldGVjdD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRG8gc29tZXRoaW5nIHdoZW4gdGhlIGhlcm8gZW5kc1xuICAgICAqXG4gICAgICogVXNlZnVsbCBmb3IgdHJpZ2dlcmluZyBzZWNvbmRhcnkgYW5pbWF0aW9uc1xuICAgICAqL1xuICAgIG9uSGVyb0VuZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRG8gc29tZXRoaWduIHdpdGggdGhlIGNsb25lIGJlZm9yZSBpdCBnb2VzIHRvIHRoZSBodG1sICovXG4gICAgb25IZXJvQ2xvbmVkPzogKGNsb25lOiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIERvIHNvbWV0aGluZyB3aGVuIHRoZSBoZXJvIHN0YXJ0cyB0aGUgdHJhbnNpdGlvblxuICAgICAqIEhlcmUgaXQncyB1c2VmdWxsIHRvIHN3aXRjaCBjbGFzc05hbWVzIHdpdGggdGhlIHRhcmdldC5cbiAgICAgKlxuICAgICAqIElmIGRvbmUgY29ycmVjdGx5LCBpdCB3aWxsIHRyYW5zaXRpb24gZnJvbSBzdGF0ZSBhIHRvIGIgc21vb3RobHlcbiAgICAgKi9cbiAgICBvbkhlcm9TdGFydD86IChcbiAgICAgIGNsb25lOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW4gdGhlIGhlcm8gaXMgY29taW5nL2dvaW5nIG91dHNpZGUgdGhlIHZpZXdwb3J0XG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0IGl0J3Mgc2V0IHRvIHNraXAgYWxsIGhlcm9lcyB0aGF0IGhhdmUgdGhlc2UgY29uZGl0aW9uc1xuICAgICAqXG4gICAgICogQHJldHVybnMgSWYgdGhlIGhlcm8gc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90XG4gICAgICovXG4gICAgb25IZXJvU2tpcD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBTaG91bGRTa2lwO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gYSBoZXJvIGlzIHNraXBwZWRcbiAgICAgKi9cbiAgICBvbkhlcm9Ta2lwcGVkPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEJlZm9yZSB0cmFuc2l0aW9uIHN0YXJ0LCBzZXR1cCB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgaGVybyBhbmltYXRpb25cbiAgICAgKiBAcmV0dXJucyBUaGUgY29udGFpbmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBoZXJvIGlzIG91dCBvciBpbiB0aGUgdmlld1xuICAgICAqL1xuICAgIG9uQmVmb3JlVHJhbnNpdGlvbj86IChcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiBSZXN1bHQgfCBSZWFkb25seTxSZXN1bHQ+O1xuICB9ID0ge31cbikge1xuICBjb25zdCB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IF9wID0gW10sXG4gICAgXCJkYXRhLXByZWZmaXhcIjogZGF0YVByZWZmaXgsXG4gICAgcmVwZWF0YWJsZSxcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByb3BzVG9UcmFuc2l0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgX3AubWFwKChwKSA9PiBwLnJlcGxhY2UoLyhbQS1aXSkvZywgKF8sIHZhbCkgPT4gYC0ke3ZhbC50b0xvd2VyQ2FzZSgpfWApKSxcbiAgICBbX3BdXG4gICk7XG4gIGNvbnN0IF9kYXRhUHJlZmZpeCA9IGRhdGFQcmVmZml4ID8gYC0ke2RhdGFQcmVmZml4fWAgOiBcIlwiO1xuICBjb25zdCBkYXRhUHJvcGVydHkgPSBgZGF0YSR7X2RhdGFQcmVmZml4fS1oZXJvYDtcbiAgY29uc3QgaGVyb1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBoZXJvUmVmLmN1cnJlbnQhLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgfSwgW2lkXSk7XG5cbiAgY29uc3QgZ2V0SGVyb3NPblNjcmVlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBvdGhlckVsZW1lbnRzID0gKFxuICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgWyR7ZGF0YVByb3BlcnR5fT1cIiR7aWR9XCJdYClcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnRbXVxuICAgICkuZmlsdGVyKChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCk7XG4gICAgcmV0dXJuIG90aGVyRWxlbWVudHM7XG4gIH0sIFtpZF0pO1xuXG4gIGZ1bmN0aW9uIHRyaWdnZXJIZXJvQW5pbWF0aW9uKCkge1xuICAgIGNvbnN0IGFsbFByb3BzVG9UcmFuc2l0aW9uID0gb3B0aW9ucy5vdmVycmlkZVByb3BzVG9UcmFuc2l0aW9uXG4gICAgICA/IFsuLi5BTFdBWVNfVFJBTlNJVElPTiwgLi4ucHJvcHNUb1RyYW5zaXRpb25dXG4gICAgICA6IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIC4uLkFMV0FZU19UUkFOU0lUSU9OLCAuLi5wcm9wc1RvVHJhbnNpdGlvbl07XG4gICAgY29uc3Qgc2hvdWxkSGVyb0ZuID0gZXZlbnRzLm9uSGVyb0RldGVjdCB8fCAoKC4uLmE6IGFueVtdKSA9PiB0cnVlKTtcbiAgICBjb25zdCBvdGhlckVsZW1lbnRzID0gZ2V0SGVyb3NPblNjcmVlbigpLmZpbHRlcigoZWwpID0+XG4gICAgICBzaG91bGRIZXJvRm4oZWwsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGhlcm9SZWYuY3VycmVudCE7XG4gICAgY29uc3QgY3VycmVudEVsQ29vcmRpbmF0ZXMgPSBjdXJyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIG90aGVyRWxlbWVudHMubGVuZ3RoID4gMilcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJUaGVyZSBhcmUgdG9vIG1hbnkgZWxlbWVudHMgdG8gdHJhbnNpdGlvbiB0bywgSSB3aWxsIHRyYW5zaXRpb24gdG8gdGhlIGZpcnN0IEkgZmluZFwiLFxuICAgICAgICBvdGhlckVsZW1lbnRzXG4gICAgICApO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudCA9IG90aGVyRWxlbWVudHMuZmluZChcbiAgICAgIChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCFcbiAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgaWYgKG90aGVyRWxlbWVudCkge1xuICAgICAgY29uc3QgW29yaWdpbkNvbnRhaW5lciwgdGFyZ2V0Q29udGFpbmVyXSA9IGV2ZW50cy5vbkJlZm9yZVRyYW5zaXRpb25cbiAgICAgICAgPyBldmVudHMub25CZWZvcmVUcmFuc2l0aW9uKG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICAgICAgOiBbdmlld3BvcnQsIHZpZXdwb3J0XTtcbiAgICAgIGNvbnN0IHNob3VsZFNraXAgPVxuICAgICAgICBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKHRhcmdldENvbnRhaW5lciwgY3VycmVudEVsQ29vcmRpbmF0ZXMpIHx8XG4gICAgICAgIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIoXG4gICAgICAgICAgb3JpZ2luQ29udGFpbmVyLFxuICAgICAgICAgIG90aGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICApXG4gICAgICAgICAgPyAoZXZlbnRzLm9uSGVyb1NraXAgfHwgKCgpID0+IHRydWUpKShvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIGlmIChzaG91bGRTa2lwKSB7XG4gICAgICAgIGV2ZW50cy5vbkhlcm9Ta2lwcGVkPy4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2xkQ2xvbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgWyR7ZGF0YVByb3BlcnR5fS1jbG9uZT1cIiR7SUQoaWQpfVwiXWBcbiAgICAgICk7XG4gICAgICBjb25zdCBjbG9uZSA9IChvbGRDbG9uZSB8fFxuICAgICAgICBvdGhlckVsZW1lbnQuY2xvbmVOb2RlKHRydWUpKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgaWYgKGV2ZW50cy5vbkhlcm9DbG9uZWQgJiYgIW9sZENsb25lKSBldmVudHMub25IZXJvQ2xvbmVkKGNsb25lKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgdGhvcyBwcm9wZXJ0aWVzIHRoYXQgY2FuIGNhdXNlIGNvbmZ1c2lvbiBzaW5jZSBpdCdzIGEgY2xvbmVcbiAgICAgIGNsb25lLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgY2xvbmUucmVtb3ZlQXR0cmlidXRlKGRhdGFQcm9wZXJ0eSk7XG5cbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShgJHtkYXRhUHJvcGVydHl9LWNsb25lYCwgSUQoaWQpKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBJZiBpdCdzIHJlcGVhdGFibGUsIHdlIHNob3VsZCBrZWVwIHRoZSBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBoZXJvIGV4aXN0YW5jZVxuICAgICAgICovXG4gICAgICBpZiAoIXJlcGVhdGFibGUpXG4gICAgICAgIC8vIFNpbmNlIGEgdHJhbnNpdGlvbiBpcyBub3cgdHJpZ2dlcmluZyBmcm9tIHRoZSBvbGQgZWxlbWVudCwgaGUgY2Fubm90IGJlIGNvbnNpZGVyZWQgZm9yIG90aGVyIHRyYW5zaXRpb25zXG4gICAgICAgIG90aGVyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoZGF0YVByb3BlcnR5KTtcblxuICAgICAgZnVuY3Rpb24gd2lsbFRoZUhlcm9Nb3ZlKG9yaWdpbjogRE9NUmVjdCwgdGFyZ2V0OiBET01SZWN0KSB7XG4gICAgICAgIGNvbnN0IHdpbGxJdE1vdmUgPSAhKFxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLnRvcCkgPT09IE1hdGgudHJ1bmModGFyZ2V0LnRvcCkgJiZcbiAgICAgICAgICBNYXRoLnRydW5jKG9yaWdpbi5sZWZ0KSA9PT0gTWF0aC50cnVuYyh0YXJnZXQubGVmdCkgJiZcbiAgICAgICAgICBNYXRoLnRydW5jKG9yaWdpbi53aWR0aCkgPT09IE1hdGgudHJ1bmModGFyZ2V0LndpZHRoKSAmJlxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLmhlaWdodCkgPT09IE1hdGgudHJ1bmModGFyZ2V0LmhlaWdodClcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB3aWxsSXRNb3ZlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gZWxcbiAgICAgICAqIEByZXR1cm5zIFJldHVybnMgaWYgaXQgd2lsbCBtb3ZlXG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIHNldENsb25lVG9Db29yZGluYXRlc09mKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBjbG9uZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgd2lsbE1vdmUgPSB3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG5cbiAgICAgICAgY2xvbmUuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2Nvb3JkaW5hdGVzLnRvcH1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtjb29yZGluYXRlcy5sZWZ0fXB4YDtcbiAgICAgICAgaWYgKGFsbFByb3BzVG9UcmFuc2l0aW9uLmluY2x1ZGVzKFwid2lkdGhcIikpXG4gICAgICAgICAgY2xvbmUuc3R5bGUud2lkdGggPSBgJHtjb29yZGluYXRlcy53aWR0aH1weGA7XG4gICAgICAgIGlmIChhbGxQcm9wc1RvVHJhbnNpdGlvbi5pbmNsdWRlcyhcImhlaWdodFwiKSlcbiAgICAgICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtjb29yZGluYXRlcy5oZWlnaHR9cHhgO1xuXG4gICAgICAgIHJldHVybiB3aWxsTW92ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBoZXJvUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaXRXb250TW92ZSA9ICF3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG4gICAgICBpZiAoaXRXb250TW92ZSkgcmV0dXJuO1xuXG4gICAgICBpZiAoIW9sZENsb25lKSB7XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQgKi9cbiAgICAgICAgc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2Yob3RoZXJFbGVtZW50KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB9XG4gICAgICBoZXJvUmVmLmN1cnJlbnQhLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3RoZXJFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuXG4gICAgICBmb3IgKGxldCBwcm9wVG9UcmFuc2l0aW9uIG9mIHByb3BzVG9UcmFuc2l0aW9uKSB7XG4gICAgICAgIGNsb25lLnN0eWxlW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XSA9XG4gICAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUob3RoZXJFbGVtZW50KVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV07XG4gICAgICB9XG5cbiAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgJHthbGxQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgICAubWFwKFxuICAgICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgICAgYCR7cHJvcC5yZXBsYWNlKFxuICAgICAgICAgICAgICAvW0EtWl0vZyxcbiAgICAgICAgICAgICAgKHN1YikgPT4gYC0ke3N1Yi50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICl9IHZhcigtLWFuaW1hdGlvbi0tc3BlZWQtZmFzdCwgMjUwbXMpIGVhc2Utb3V0YFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiLCBcIil9YDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsSXRXaWxsVHJhbnNpdGlvblRvID0gaGVyb1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudHMub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAgICAgICAgaWYgKGVsSXRXaWxsVHJhbnNpdGlvblRvKSB7XG4gICAgICAgICAgICBpZiAocmVwZWF0YWJsZSlcbiAgICAgICAgICAgICAgZWxJdFdpbGxUcmFuc2l0aW9uVG8hLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgICAgICAgICAgIGVsSXRXaWxsVHJhbnNpdGlvblRvLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9O1xuICAgICAgICB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gICAgICAgICAgY2xvbmUsXG4gICAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICAgIGhlcm9SZWYuY3VycmVudCEucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICAgICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdLFxuICAgICAgICAgIGN1cnJlbnRFbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIGlmIChldmVudHMub25IZXJvU3RhcnQpIHtcbiAgICAgICAgICBldmVudHMub25IZXJvU3RhcnQoY2xvbmUsIG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbEl0V2lsbFRyYW5zaXRpb25Ubykge1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgbmV3IHBvc2l0aW9uICovXG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWxJdFdpbGxUcmFuc2l0aW9uVG8pO1xuICAgICAgICBpZiAoIXdpbGxNb3ZlKSBjbGVhbnVwKCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IHByb3BUb1RyYW5zaXRpb24gb2YgcHJvcHNUb1RyYW5zaXRpb24pXG4gICAgICAgICAgICBjbG9uZS5zdHlsZVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV0gPVxuICAgICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbEl0V2lsbFRyYW5zaXRpb25UbylbXG4gICAgICAgICAgICAgICAgcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnlcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBsZXQgaW5pdGlhbE9mZnNldDogbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IHMgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChkLmNvbnRhaW5zKGVsSXRXaWxsVHJhbnNpdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhbE9mZnNldCA9PT0gdW5kZWZpbmVkKSBpbml0aWFsT2Zmc2V0ID0gZC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbG9uZS5zdHlsZS5tYXJnaW5Ub3AgPSBgJHstKGQuc2Nyb2xsVG9wIC0gaW5pdGlhbE9mZnNldCl9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvbkVuZENiID0gb3duRXZlbnQoXG4gICAgICAgICAgICAoeyB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfTogVHJhbnNpdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzIGFzIGFueSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCB0cmFuc2l0aW9uRW5kQ2IpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uc3RhcnRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25DYW5jZWxDYiA9IG93bkV2ZW50KChlKSA9PiB7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmNhbmNlbFwiLCBvbkNhbmNlbENiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cmlnZ2VySGVyb0FuaW1hdGlvbigpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZXJvUmVmLFxuICAgIGdldEhlcm9zT25TY3JlZW4sXG4gICAgdHJpZ2dlcjogdHJpZ2dlckhlcm9BbmltYXRpb24sXG4gICAgaGVyb0NvbXBvbmVudFJlZjpcbiAgICAgIChjb21wb25lbnRJZDogc3RyaW5nKSA9PiAoZWxSZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZWxSZWYpIHtcbiAgICAgICAgICBlbFJlZi5zZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQsIGNvbXBvbmVudElkKTtcbiAgICAgICAgICBlbFJlZi5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29vcmRpbmF0ZXM6IERPTVJlY3QpIHtcbiAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICBjb29yZGluYXRlcy5sZWZ0ID49IHZpZXdwb3J0LndpZHRoIHx8IGNvb3JkaW5hdGVzLnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQ7XG4gIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPD0gLWNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgY29vcmRpbmF0ZXMudG9wIDw9IC1jb29yZGluYXRlcy5oZWlnaHQ7XG4gIHJldHVybiBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydDtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgY29udGFpbmVyOiBWaXN1YWxWaWV3cG9ydCB8IEVsZW1lbnQsXG4gIGNvb3JkaW5hdGVzOiBET01SZWN0XG4pIHtcbiAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIFZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlcyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGFpbmVyQm91bmRzID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQgPVxuICAgICAgaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvbnRhaW5lckJvdW5kcyk7XG5cbiAgICBpZiAoaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29udGFpbmVyQm91bmRzLmxlZnQgKyBjb250YWluZXJCb3VuZHMud2lkdGggfHxcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCA+PSBjb250YWluZXJCb3VuZHMudG9wICsgY29udGFpbmVyQm91bmRzLmhlaWdodDtcblxuICAgIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29udGFpbmVyQm91bmRzLmxlZnQgLSBjb29yZGluYXRlcy5sZWZ0ID49IGNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgICBjb250YWluZXJCb3VuZHMudG9wIC0gY29vcmRpbmF0ZXMudG9wID49IGNvb3JkaW5hdGVzLmhlaWdodDtcblxuICAgIHJldHVybiBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0IHx8IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydDtcbiAgfVxufVxuXG50eXBlIEVWRU5UU19JTlRFUkZBQ0UgPSBQYXJhbWV0ZXJzPHR5cGVvZiB1c2VIZXJvPlsyXTtcbnR5cGUgVFJBTlNJVElPTl9UWVBFUyA9IFwiQUNDRUxFUkFUSU9OXCI7XG5mdW5jdGlvbiBjZW50ZXJQb2ludChyZWN0OiBET01SZWN0KSB7XG4gIHJldHVybiBbcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyXSBhcyBjb25zdDtcbn1cbmNvbnN0IGFuZ2xlID0gKFxuICBwb2ludEE6IHJlYWRvbmx5IFt4OiBudW1iZXIsIHk6IG51bWJlcl0sXG4gIHBvaW50QjogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXVxuKSA9PlxuICBOdW1iZXIoXG4gICAgKFxuICAgICAgTWF0aC5hdGFuMihwb2ludEFbMV0gLSBwb2ludEJbMV0sIHBvaW50QVswXSAtIHBvaW50QlswXSkgKlxuICAgICAgKDE3OS4wOCAvIE1hdGguUEkpXG4gICAgKS50b0ZpeGVkKDUpXG4gICk7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9GQUNUT1JZOiB7XG4gIFtuIGluIFRSQU5TSVRJT05fVFlQRVNdOiAoZXZlbnRzPzogRVZFTlRTX0lOVEVSRkFDRSkgPT4gRVZFTlRTX0lOVEVSRkFDRTtcbn0gPSB7XG4gIEFDQ0VMRVJBVElPTjogKGV2ZW50cykgPT4gKHtcbiAgICAuLi5ldmVudHMsXG4gICAgb25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KSB7XG4gICAgICBpZiAoZXZlbnRzPy5vbkhlcm9TdGFydCkgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvcmlnaW4sIHRhcmdldCk7XG4gICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5hY2NlbGVyYXRpb24pO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnRPcmlnaW4gPSBjZW50ZXJQb2ludChvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnREZXN0aW5hdGlvbiA9IGNlbnRlclBvaW50KFxuICAgICAgICB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICk7XG4gICAgICBjb25zdCBhbmdsZUJldHdlZW5FbGVtZW50cyA9IGFuZ2xlKFxuICAgICAgICBjZW50ZXJQb2ludE9yaWdpbixcbiAgICAgICAgY2VudGVyUG9pbnREZXN0aW5hdGlvblxuICAgICAgKTtcbiAgICAgIGNvbnN0IHZlY3RvclggPSBNYXRoLnNpbihhbmdsZUJldHdlZW5FbGVtZW50cyk7XG4gICAgICBjb25zdCB2ZWN0b3JZID0gTWF0aC5jb3MoYW5nbGVCZXR3ZWVuRWxlbWVudHMpO1xuXG4gICAgICBjb25zdCByb3RhdGVZID0gKDEwICogdmVjdG9yWSkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblggPSAodmVjdG9yWSArIDEpICogNTA7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVggPSAtKDEwICogdmVjdG9yWCkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblkgPSAodmVjdG9yWCArIDEpICogNTA7XG5cbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMVwiLFxuICAgICAgICBgcm90YXRlWSgke3JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LXJvdGF0ZVh9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXN0YWdlLTJcIixcbiAgICAgICAgYHJvdGF0ZVkoJHstcm90YXRlWSAqIDAuM31kZWcpIHJvdGF0ZVgoJHtyb3RhdGVYICogMC4zfWRlZylgXG4gICAgICApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXCItLW9yaWdpbi0xXCIsIGAke29yaWdpblh9JSAke29yaWdpbll9JWApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1vcmlnaW4tMlwiLFxuICAgICAgICBgJHsxMDAgLSBvcmlnaW5YfSUgJHsxMDAgLSBvcmlnaW5ZfSVgXG4gICAgICApO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiMTAwdndcIjtcbiAgICB9LFxuICAgIG9uSGVyb0VuZCgpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiXCI7XG4gICAgfSxcbiAgfSksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUEsSUFBQUMsU0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQTJDLFNBQUFFLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFI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QztNQUM5QyxNQUFNRyxPQUFPLEdBQUd4RSxJQUFJLENBQUN5RSxHQUFHLENBQUNKLG9CQUFvQixDQUFDO01BRTlDLE1BQU1LLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBR0YsT0FBTyxFQUFFVixPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ3pDLE1BQU1hLE9BQU8sR0FBRyxDQUFDSCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUU7TUFFbEMsTUFBTUksT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUdOLE9BQU8sRUFBRVIsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUMxQyxNQUFNZSxPQUFPLEdBQUcsQ0FBQ1AsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFO01BRWxDeEssS0FBSyxDQUFDZ0IsS0FBSyxDQUFDZ0ssV0FBVyxDQUNyQixXQUFXLGFBQUF0TCxNQUFBLENBQ0FrTCxPQUFPLG1CQUFBbEwsTUFBQSxDQUFnQixDQUFDb0wsT0FBTyxTQUM1QyxDQUFDO01BQ0Q5SyxLQUFLLENBQUNnQixLQUFLLENBQUNnSyxXQUFXLENBQ3JCLFdBQVcsYUFBQXRMLE1BQUEsQ0FDQSxDQUFDa0wsT0FBTyxHQUFHLEdBQUcsbUJBQUFsTCxNQUFBLENBQWdCb0wsT0FBTyxHQUFHLEdBQUcsU0FDeEQsQ0FBQztNQUNEOUssS0FBSyxDQUFDZ0IsS0FBSyxDQUFDZ0ssV0FBVyxDQUFDLFlBQVksS0FBQXRMLE1BQUEsQ0FBS21MLE9BQU8sUUFBQW5MLE1BQUEsQ0FBS3FMLE9BQU8sTUFBRyxDQUFDO01BQ2hFL0ssS0FBSyxDQUFDZ0IsS0FBSyxDQUFDZ0ssV0FBVyxDQUNyQixZQUFZLEtBQUF0TCxNQUFBLENBQ1QsR0FBRyxHQUFHbUwsT0FBTyxRQUFBbkwsTUFBQSxDQUFLLEdBQUcsR0FBR3FMLE9BQU8sTUFDcEMsQ0FBQztNQUNENUcsUUFBUSxDQUFDMkMsSUFBSSxDQUFDOUYsS0FBSyxDQUFDaUssV0FBVyxHQUFHLE9BQU87SUFDM0MsQ0FBQztJQUNEekQsU0FBU0EsQ0FBQSxFQUFHO01BQ1YsSUFBSXpFLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUV5RSxTQUFTLEVBQUV6RSxNQUFNLENBQUN5RSxTQUFTLENBQUMsQ0FBQztNQUN6Q3JELFFBQVEsQ0FBQzJDLElBQUksQ0FBQzlGLEtBQUssQ0FBQ2lLLFdBQVcsR0FBRyxFQUFFO0lBQ3RDO0VBQUM7QUFFTCxDQUFDIiwiaWdub3JlTGlzdCI6W119
273
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIiLCJvcmlnaW4iLCJpZHNUaGF0V2lsbEFwcGVhciIsIm1hcCIsImEiLCJnZXRBdHRyaWJ1dGUiLCJwcmVleGlzdGluZ0NvbXBvbmVudHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlZEVsZW1lbnRzIiwiZWwiLCJpbmNsdWRlcyIsImVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQiLCJoZWlnaHRLZXkiLCJzdHlsZSIsImNsaWVudEhlaWdodCIsInNldFRpbWVvdXQiLCJvcGFjaXR5IiwiY29tcG9uZW50VGhhdFdpbGxBcHBlYXIiLCJhbHJlYWR5SW5qZWN0ZWRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlY3Vyc2l2ZUJ1aWxkUGF0aCIsImZyb21FbGVtZW50IiwicGF0aFN1ZmZpeCIsInVuZGVmaW5lZCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwYXJlbnRDaGlsZHMiLCJjaGlsZHJlbiIsImVsQ2hpbGRTZWxlY3RvciIsImluZGV4T2YiLCJ3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQiLCJpbnNlcnRBdEluZGV4IiwidGFyZ2V0RWxlbWVudENsb25lIiwiY2xvbmVOb2RlIiwic2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCIsInJlbWFpbmluZ0luZGV4ZXMiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJjaGlsZE5vZGVzIiwiaXRlbSIsIkFMV0FZU19UUkFOU0lUSU9OIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9wIiwiZGF0YVByZWZmaXgiLCJyZXBlYXRhYmxlIiwidXNlTWVtbyIsInAiLCJyZXBsYWNlIiwiXyIsInZhbCIsInRvTG93ZXJDYXNlIiwiX2RhdGFQcmVmZml4IiwiZGF0YVByb3BlcnR5IiwiaGVyb1JlZiIsInVzZVJlZiIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzZXRBdHRyaWJ1dGUiLCJnZXRIZXJvc09uU2NyZWVuIiwidXNlQ2FsbGJhY2siLCJvdGhlckVsZW1lbnRzIiwiZG9jdW1lbnQiLCJ0cmlnZ2VySGVyb0FuaW1hdGlvbiIsImFsbFByb3BzVG9UcmFuc2l0aW9uIiwib3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbGVtZW50IiwiY3VycmVudEVsQ29vcmRpbmF0ZXMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIm90aGVyRWxlbWVudCIsImZpbmQiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJvbkJlZm9yZVRyYW5zaXRpb24iLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwid2lsbFRoZUhlcm9Nb3ZlIiwidGFyZ2V0Iiwid2lsbEl0TW92ZSIsIk1hdGgiLCJ0cnVuYyIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsInNldENsb25lVG9Db29yZGluYXRlc09mIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJ3aWxsTW92ZSIsInBvc2l0aW9uIiwiaXRXb250TW92ZSIsIl9ldmVudHMkb25IZXJvRW5kIiwib25IZXJvRW5kIiwiYm9keSIsImFwcGVuZENoaWxkIiwicHJvcFRvVHJhbnNpdGlvbiIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9uIiwicHJvcCIsInN1YiIsImpvaW4iLCJlbEl0V2lsbFRyYW5zaXRpb25UbyIsImNsZWFudXAiLCJyZW1vdmUiLCJvbkhlcm9TdGFydCIsImluaXRpYWxPZmZzZXQiLCJzIiwiX3JlZiIsImQiLCJjb250YWlucyIsInNjcm9sbFRvcCIsIm1hcmdpblRvcCIsInRyYW5zaXRpb25FbmRDYiIsIm93bkV2ZW50IiwiX3JlZjIiLCJjdXJyZW50VGFyZ2V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkNhbmNlbENiIiwidXNlRWZmZWN0IiwidHJpZ2dlciIsImhlcm9Db21wb25lbnRSZWYiLCJjb21wb25lbnRJZCIsImVsUmVmIiwiY2xhc3NMaXN0IiwiYWRkIiwiU3R5bGVzIiwiY29tcG9uZW50IiwiaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0IiwiZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0IiwiZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCIsImNvbnRhaW5lciIsIlZpc3VhbFZpZXdwb3J0IiwiY29udGFpbmVyQm91bmRzIiwiaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQiLCJjZW50ZXJQb2ludCIsInJlY3QiLCJhbmdsZSIsInBvaW50QSIsInBvaW50QiIsImF0YW4yIiwiUEkiLCJ0b0ZpeGVkIiwiVFJBTlNJVElPTl9GQUNUT1JZIiwiZXhwb3J0cyIsIkFDQ0VMRVJBVElPTiIsImFjY2VsZXJhdGlvbiIsImNlbnRlclBvaW50T3JpZ2luIiwiY2VudGVyUG9pbnREZXN0aW5hdGlvbiIsImFuZ2xlQmV0d2VlbkVsZW1lbnRzIiwidmVjdG9yWCIsInNpbiIsInZlY3RvclkiLCJjb3MiLCJyb3RhdGVZIiwib3JpZ2luWCIsInJvdGF0ZVgiLCJvcmlnaW5ZIiwic2V0UHJvcGVydHkiLCJwZXJzcGVjdGl2ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VIZXJvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBDU1NQcm9wZXJ0aWVzLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgb3duRXZlbnQgZnJvbSBcIi4uL3V0aWxzL293bkV2ZW50XCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL3VzZUhlcm8ubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgSUQgPSAoaWQ6IHN0cmluZykgPT4gYCR7aWR9LWhlcm9gO1xudHlwZSBTaG91bGRTa2lwID0gYm9vbGVhbjtcbnR5cGUgUmVzdWx0ID0gW1xuICBvcmlnaW5Db250YWluZXI6IEVsZW1lbnQgfCBWaXN1YWxWaWV3cG9ydCxcbiAgdGFyZ2V0Q29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnRcbl07XG5jb25zdCB2aWV3cG9ydCA9IHdpbmRvdy52aXN1YWxWaWV3cG9ydCE7XG5jb25zdCBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCA9IFwiZGF0YS1oZXJvLWNvbXBvbmVudFwiO1xuXG5mdW5jdGlvbiB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gIGNsb25lOiBIVE1MRGl2RWxlbWVudCxcbiAgY29tcG9uZW50c0Zyb21PcmlnaW5UaGF0V2lsbEFwcGVhcjogSFRNTERpdkVsZW1lbnRbXSxcbiAgb3JpZ2luOiBIVE1MRGl2RWxlbWVudFxuKSB7XG4gIGNvbnN0IGlkc1RoYXRXaWxsQXBwZWFyID0gY29tcG9uZW50c0Zyb21PcmlnaW5UaGF0V2lsbEFwcGVhci5tYXAoKGEpID0+XG4gICAgYS5nZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQpXG4gICk7XG4gIGNvbnN0IHByZWV4aXN0aW5nQ29tcG9uZW50cyA9IEFycmF5LmZyb20oXG4gICAgY2xvbmUucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICkgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgY29uc3QgcmVtb3ZlZEVsZW1lbnRzOiBIVE1MRGl2RWxlbWVudFtdID0gcHJlZXhpc3RpbmdDb21wb25lbnRzLmZpbHRlcihcbiAgICAoZWwpID0+XG4gICAgICAhaWRzVGhhdFdpbGxBcHBlYXIuaW5jbHVkZXMoZWwuZ2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UKSlcbiAgKTtcblxuICBmb3IgKGxldCBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkIG9mIHJlbW92ZWRFbGVtZW50cykge1xuICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlW1xuICAgICAgICBoZWlnaHRLZXlcbiAgICAgIF0gPSBgJHtlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLmNsaWVudEhlaWdodH1weGA7XG4gIH1cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGVbaGVpZ2h0S2V5XSA9IGAwcHhgO1xuICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZS5vcGFjaXR5ID0gYDBgO1xuICAgIH1cbiAgfSwgMCk7XG5cbiAgZm9yIChsZXQgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIgb2YgY29tcG9uZW50c0Zyb21PcmlnaW5UaGF0V2lsbEFwcGVhcikge1xuICAgIGNvbnN0IGFscmVhZHlJbmplY3RlZEVsZW1lbnQgPSAhIWNsb25lLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9PVwiJHtjb21wb25lbnRUaGF0V2lsbEFwcGVhci5nZXRBdHRyaWJ1dGUoXG4gICAgICAgIERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UXG4gICAgICApfVwiXWBcbiAgICApO1xuICAgIGlmICghYWxyZWFkeUluamVjdGVkRWxlbWVudCkge1xuICAgICAgZnVuY3Rpb24gcmVjdXJzaXZlQnVpbGRQYXRoKFxuICAgICAgICBmcm9tRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgIHBhdGhTdWZmaXg6IHN0cmluZyA9IFwiXCJcbiAgICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChmcm9tRWxlbWVudCA9PT0gb3JpZ2luKSByZXR1cm4gcGF0aFN1ZmZpeDtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gZnJvbUVsZW1lbnQucGFyZW50RWxlbWVudCE7XG4gICAgICAgIGNvbnN0IHBhcmVudENoaWxkcyA9IEFycmF5LmZyb20ocGFyZW50LmNoaWxkcmVuKTtcbiAgICAgICAgY29uc3QgZWxDaGlsZFNlbGVjdG9yID0gYDpudGgtY2hpbGQoJHtcbiAgICAgICAgICBwYXJlbnRDaGlsZHMuaW5kZXhPZihmcm9tRWxlbWVudCkgKyAxXG4gICAgICAgIH0pYDtcblxuICAgICAgICBpZiAoZnJvbUVsZW1lbnQgIT09IG9yaWdpbilcbiAgICAgICAgICByZXR1cm4gcmVjdXJzaXZlQnVpbGRQYXRoKFxuICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgYCR7ZWxDaGlsZFNlbGVjdG9yfSR7cGF0aFN1ZmZpeCA/IGA+JHtwYXRoU3VmZml4fWAgOiBcIlwifWBcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlIHJldHVybiBwYXRoU3VmZml4O1xuICAgICAgfVxuICAgICAgY29uc3Qgd2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50ID0gcmVjdXJzaXZlQnVpbGRQYXRoKFxuICAgICAgICBjb21wb25lbnRUaGF0V2lsbEFwcGVhci5wYXJlbnRFbGVtZW50IVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGluc2VydEF0SW5kZXggPSBBcnJheS5mcm9tKFxuICAgICAgICBjb21wb25lbnRUaGF0V2lsbEFwcGVhci5wYXJlbnRFbGVtZW50IS5jaGlsZHJlblxuICAgICAgKS5pbmRleE9mKGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyKTtcblxuICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudENsb25lID0gY29tcG9uZW50VGhhdFdpbGxBcHBlYXIuY2xvbmVOb2RlKFxuICAgICAgICB0cnVlXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgZm9yIChsZXQgaGVpZ2h0S2V5IG9mIFtcImhlaWdodFwiLCBcIm1pbkhlaWdodFwiLCBcIm1heEhlaWdodFwiXSBhcyBjb25zdClcbiAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLnN0eWxlW2hlaWdodEtleV0gPSBcIjBweFwiO1xuICAgICAgY29uc3Qgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCA9IHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudFxuICAgICAgICA/IGNsb25lLnF1ZXJ5U2VsZWN0b3Iod2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50KSFcbiAgICAgICAgOiBjbG9uZTtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0luZGV4ZXMgPSBBcnJheS5mcm9tKHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuY2hpbGRyZW4pXG4gICAgICAgIC5tYXAoKGVsLCBpKSA9PlxuICAgICAgICAgIHJlbW92ZWRFbGVtZW50cy5pbmNsdWRlcyhlbCBhcyBIVE1MRGl2RWxlbWVudCkgPyB1bmRlZmluZWQgOiBpXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigoZSkgPT4gZSAhPT0gdW5kZWZpbmVkKSBhcyBudW1iZXJbXTtcblxuICAgICAgaWYgKGluc2VydEF0SW5kZXggPT09IHJlbWFpbmluZ0luZGV4ZXMubGVuZ3RoKVxuICAgICAgICBzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmFwcGVuZCh0YXJnZXRFbGVtZW50Q2xvbmUpO1xuICAgICAgZWxzZVxuICAgICAgICBzaG91bGRCZUluc2VydGVkQXRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICB0YXJnZXRFbGVtZW50Q2xvbmUsXG4gICAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5jaGlsZE5vZGVzLml0ZW0oXG4gICAgICAgICAgICByZW1haW5pbmdJbmRleGVzW2luc2VydEF0SW5kZXhdXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLnN0eWxlW1xuICAgICAgICAgICAgaGVpZ2h0S2V5XG4gICAgICAgICAgXSA9IGAke2NvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmNsaWVudEhlaWdodH1weGA7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgQUxXQVlTX1RSQU5TSVRJT04gPSBbXCJ0b3BcIiwgXCJsZWZ0XCJdO1xuXG4vKipcbiAqIFRoaXMgaG9vayBpbXBsZW1lbnRzIHRoZSBsb2dpYyBmb3IgYSBoZXJvIGFuaW1hdGlvbiBiZXR3ZWVuIDIgZWxlbWVudHMgc2hhcmluZyB0aGUgc2FtZSBpZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VIZXJvKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zOiBQYXJ0aWFsPHtcbiAgICBwcm9wc1RvVHJhbnNpdGlvbjogRXhjbHVkZTxcbiAgICAgIGtleW9mIENTU1Byb3BlcnRpZXMsXG4gICAgICBcIndpZHRoXCIgfCBcImhlaWdodFwiIHwgXCJ0b3BcIiB8IFwibGVmdFwiXG4gICAgPltdO1xuICAgIC8qKiBJZiBzZXQsIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgKHdpZHRoLCBoZWlnaHQsIGV0Yy4uLikgd2lsbCBub3QgdHJhbnNpdGlvbiwgYW5kIHByb3BzVG9UcmFuc2l0aW9uIHdpbGwgYmUgdGhlIG9ubHkgb25lcyB0aGF0IHdpbGwgYmUgdHJhbnNpdGlvbmVkICovXG4gICAgb3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbjogYm9vbGVhbjtcblxuICAgIFwiZGF0YS1wcmVmZml4XCI6IHN0cmluZztcbiAgICAvKiogVGhpcyBpbmRpY2F0ZXMgdGhpcyBoZXJvIGFuaW1hdGlvbiB3aWxsIHByb2JhYmx5IGJlIHJlcGVhdGVkIG11bHRpcGxlIHRpbWUgKi9cbiAgICByZXBlYXRhYmxlOiBib29sZWFuO1xuICB9PiA9IHtcbiAgICBwcm9wc1RvVHJhbnNpdGlvbjogW10sXG4gIH0sXG4gIGV2ZW50czoge1xuICAgIC8qKlxuICAgICAqIFNob3VsZCByZXR1cm4gaWYgdGhlIGRldGVjdGVkIGVsZW1lbnQgc2hvdWxkIGJlIFwiaGVyb2VkXCJcbiAgICAgKlxuICAgICAqIFVzZWZ1bGwgZm9yIHdoZW4gdGhlIGhlcm8gaGFzIDIgcG9zc2libGUgb3JpZ2lucy5cbiAgICAgKiBGb3IgZXhhbXBsZSwgb25lIGNvdWxkIGhlcm8gb25seSB0aGUgY3VycmVudCBob3ZlcmVkIGVsZW1lbnQgd2l0aCBlbC5tYXRjaGVzKFwiOmhvdmVyXCIpXG4gICAgICovXG4gICAgb25IZXJvRGV0ZWN0PzogKG9yaWdpbjogSFRNTERpdkVsZW1lbnQsIHRhcmdldDogSFRNTERpdkVsZW1lbnQpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBEbyBzb21ldGhpbmcgd2hlbiB0aGUgaGVybyBlbmRzXG4gICAgICpcbiAgICAgKiBVc2VmdWxsIGZvciB0cmlnZ2VyaW5nIHNlY29uZGFyeSBhbmltYXRpb25zXG4gICAgICovXG4gICAgb25IZXJvRW5kPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBEbyBzb21ldGhpZ24gd2l0aCB0aGUgY2xvbmUgYmVmb3JlIGl0IGdvZXMgdG8gdGhlIGh0bWwgKi9cbiAgICBvbkhlcm9DbG9uZWQ/OiAoY2xvbmU6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogRG8gc29tZXRoaW5nIHdoZW4gdGhlIGhlcm8gc3RhcnRzIHRoZSB0cmFuc2l0aW9uXG4gICAgICogSGVyZSBpdCdzIHVzZWZ1bGwgdG8gc3dpdGNoIGNsYXNzTmFtZXMgd2l0aCB0aGUgdGFyZ2V0LlxuICAgICAqXG4gICAgICogSWYgZG9uZSBjb3JyZWN0bHksIGl0IHdpbGwgdHJhbnNpdGlvbiBmcm9tIHN0YXRlIGEgdG8gYiBzbW9vdGhseVxuICAgICAqL1xuICAgIG9uSGVyb1N0YXJ0PzogKFxuICAgICAgY2xvbmU6IEhUTUxEaXZFbGVtZW50LFxuICAgICAgb3JpZ2luOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIHRhcmdldDogSFRNTERpdkVsZW1lbnRcbiAgICApID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBJcyBjYWxsZWQgd2hlbiB0aGUgaGVybyBpcyBjb21pbmcvZ29pbmcgb3V0c2lkZSB0aGUgdmlld3BvcnRcbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQgaXQncyBzZXQgdG8gc2tpcCBhbGwgaGVyb2VzIHRoYXQgaGF2ZSB0aGVzZSBjb25kaXRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBJZiB0aGUgaGVybyBzaG91bGQgYmUgc2tpcHBlZCBvciBub3RcbiAgICAgKi9cbiAgICBvbkhlcm9Ta2lwPzogKG9yaWdpbjogSFRNTERpdkVsZW1lbnQsIHRhcmdldDogSFRNTERpdkVsZW1lbnQpID0+IFNob3VsZFNraXA7XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgd2hlbiBhIGhlcm8gaXMgc2tpcHBlZFxuICAgICAqL1xuICAgIG9uSGVyb1NraXBwZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQmVmb3JlIHRyYW5zaXRpb24gc3RhcnQsIHNldHVwIHRoZSBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBoZXJvIGFuaW1hdGlvblxuICAgICAqIEByZXR1cm5zIFRoZSBjb250YWluZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIGhlcm8gaXMgb3V0IG9yIGluIHRoZSB2aWV3XG4gICAgICovXG4gICAgb25CZWZvcmVUcmFuc2l0aW9uPzogKFxuICAgICAgb3JpZ2luOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIHRhcmdldDogSFRNTERpdkVsZW1lbnRcbiAgICApID0+IFJlc3VsdCB8IFJlYWRvbmx5PFJlc3VsdD47XG4gIH0gPSB7fVxuKSB7XG4gIGNvbnN0IHtcbiAgICBwcm9wc1RvVHJhbnNpdGlvbjogX3AgPSBbXSxcbiAgICBcImRhdGEtcHJlZmZpeFwiOiBkYXRhUHJlZmZpeCxcbiAgICByZXBlYXRhYmxlLFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcHJvcHNUb1RyYW5zaXRpb24gPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBfcC5tYXAoKHApID0+IHAucmVwbGFjZSgvKFtBLVpdKS9nLCAoXywgdmFsKSA9PiBgLSR7dmFsLnRvTG93ZXJDYXNlKCl9YCkpLFxuICAgIFtfcF1cbiAgKTtcbiAgY29uc3QgX2RhdGFQcmVmZml4ID0gZGF0YVByZWZmaXggPyBgLSR7ZGF0YVByZWZmaXh9YCA6IFwiXCI7XG4gIGNvbnN0IGRhdGFQcm9wZXJ0eSA9IGBkYXRhJHtfZGF0YVByZWZmaXh9LWhlcm9gO1xuICBjb25zdCBoZXJvUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGhlcm9SZWYuY3VycmVudCEuc2V0QXR0cmlidXRlKGRhdGFQcm9wZXJ0eSwgaWQpO1xuICB9LCBbaWRdKTtcblxuICBjb25zdCBnZXRIZXJvc09uU2NyZWVuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG90aGVyRWxlbWVudHMgPSAoXG4gICAgICBBcnJheS5mcm9tKFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbJHtkYXRhUHJvcGVydHl9PVwiJHtpZH1cIl1gKVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdXG4gICAgKS5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gaGVyb1JlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gb3RoZXJFbGVtZW50cztcbiAgfSwgW2lkXSk7XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckhlcm9BbmltYXRpb24oKSB7XG4gICAgY29uc3QgYWxsUHJvcHNUb1RyYW5zaXRpb24gPSBvcHRpb25zLm92ZXJyaWRlUHJvcHNUb1RyYW5zaXRpb25cbiAgICAgID8gWy4uLkFMV0FZU19UUkFOU0lUSU9OLCAuLi5wcm9wc1RvVHJhbnNpdGlvbl1cbiAgICAgIDogW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgLi4uQUxXQVlTX1RSQU5TSVRJT04sIC4uLnByb3BzVG9UcmFuc2l0aW9uXTtcbiAgICBjb25zdCBzaG91bGRIZXJvRm4gPSBldmVudHMub25IZXJvRGV0ZWN0IHx8ICgoLi4uYTogYW55W10pID0+IHRydWUpO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudHMgPSBnZXRIZXJvc09uU2NyZWVuKCkuZmlsdGVyKChlbCkgPT5cbiAgICAgIHNob3VsZEhlcm9GbihlbCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICApO1xuICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gaGVyb1JlZi5jdXJyZW50ITtcbiAgICBjb25zdCBjdXJyZW50RWxDb29yZGluYXRlcyA9IGN1cnJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIgJiYgb3RoZXJFbGVtZW50cy5sZW5ndGggPiAyKVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlRoZXJlIGFyZSB0b28gbWFueSBlbGVtZW50cyB0byB0cmFuc2l0aW9uIHRvLCBJIHdpbGwgdHJhbnNpdGlvbiB0byB0aGUgZmlyc3QgSSBmaW5kXCIsXG4gICAgICAgIG90aGVyRWxlbWVudHNcbiAgICAgICk7XG4gICAgY29uc3Qgb3RoZXJFbGVtZW50ID0gb3RoZXJFbGVtZW50cy5maW5kKFxuICAgICAgKGVsKSA9PiBlbCAhPT0gaGVyb1JlZi5jdXJyZW50IVxuICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBpZiAob3RoZXJFbGVtZW50KSB7XG4gICAgICBjb25zdCBbb3JpZ2luQ29udGFpbmVyLCB0YXJnZXRDb250YWluZXJdID0gZXZlbnRzLm9uQmVmb3JlVHJhbnNpdGlvblxuICAgICAgICA/IGV2ZW50cy5vbkJlZm9yZVRyYW5zaXRpb24ob3RoZXJFbGVtZW50LCBoZXJvUmVmLmN1cnJlbnQhKVxuICAgICAgICA6IFt2aWV3cG9ydCwgdmlld3BvcnRdO1xuICAgICAgY29uc3Qgc2hvdWxkU2tpcCA9XG4gICAgICAgIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIodGFyZ2V0Q29udGFpbmVyLCBjdXJyZW50RWxDb29yZGluYXRlcykgfHxcbiAgICAgICAgaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgICAgICAgICBvcmlnaW5Db250YWluZXIsXG4gICAgICAgICAgb3RoZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIClcbiAgICAgICAgICA/IChldmVudHMub25IZXJvU2tpcCB8fCAoKCkgPT4gdHJ1ZSkpKG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICAgICAgICA6IGZhbHNlO1xuICAgICAgaWYgKHNob3VsZFNraXApIHtcbiAgICAgICAgZXZlbnRzLm9uSGVyb1NraXBwZWQ/LigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBvbGRDbG9uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIGBbJHtkYXRhUHJvcGVydHl9LWNsb25lPVwiJHtJRChpZCl9XCJdYFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNsb25lID0gKG9sZENsb25lIHx8XG4gICAgICAgIG90aGVyRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkpIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICBpZiAoZXZlbnRzLm9uSGVyb0Nsb25lZCAmJiAhb2xkQ2xvbmUpIGV2ZW50cy5vbkhlcm9DbG9uZWQoY2xvbmUpO1xuXG4gICAgICAvLyBDbGVhbiB1cCB0aG9zIHByb3BlcnRpZXMgdGhhdCBjYW4gY2F1c2UgY29uZnVzaW9uIHNpbmNlIGl0J3MgYSBjbG9uZVxuICAgICAgY2xvbmUuc3R5bGUudmlzaWJpbGl0eSA9IFwiXCI7XG4gICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoZGF0YVByb3BlcnR5KTtcblxuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKGAke2RhdGFQcm9wZXJ0eX0tY2xvbmVgLCBJRChpZCkpO1xuXG4gICAgICAvKipcbiAgICAgICAqIElmIGl0J3MgcmVwZWF0YWJsZSwgd2Ugc2hvdWxkIGtlZXAgdGhlIGZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhlIGhlcm8gZXhpc3RhbmNlXG4gICAgICAgKi9cbiAgICAgIGlmICghcmVwZWF0YWJsZSlcbiAgICAgICAgLy8gU2luY2UgYSB0cmFuc2l0aW9uIGlzIG5vdyB0cmlnZ2VyaW5nIGZyb20gdGhlIG9sZCBlbGVtZW50LCBoZSBjYW5ub3QgYmUgY29uc2lkZXJlZCBmb3Igb3RoZXIgdHJhbnNpdGlvbnNcbiAgICAgICAgb3RoZXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShkYXRhUHJvcGVydHkpO1xuXG4gICAgICBmdW5jdGlvbiB3aWxsVGhlSGVyb01vdmUob3JpZ2luOiBET01SZWN0LCB0YXJnZXQ6IERPTVJlY3QpIHtcbiAgICAgICAgY29uc3Qgd2lsbEl0TW92ZSA9ICEoXG4gICAgICAgICAgTWF0aC50cnVuYyhvcmlnaW4udG9wKSA9PT0gTWF0aC50cnVuYyh0YXJnZXQudG9wKSAmJlxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLmxlZnQpID09PSBNYXRoLnRydW5jKHRhcmdldC5sZWZ0KSAmJlxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLndpZHRoKSA9PT0gTWF0aC50cnVuYyh0YXJnZXQud2lkdGgpICYmXG4gICAgICAgICAgTWF0aC50cnVuYyhvcmlnaW4uaGVpZ2h0KSA9PT0gTWF0aC50cnVuYyh0YXJnZXQuaGVpZ2h0KVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB3aWxsSXRNb3ZlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gZWxcbiAgICAgICAqIEByZXR1cm5zIFJldHVybnMgaWYgaXQgd2lsbCBtb3ZlXG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIHNldENsb25lVG9Db29yZGluYXRlc09mKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBjbG9uZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgd2lsbE1vdmUgPSB3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG5cbiAgICAgICAgY2xvbmUuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2Nvb3JkaW5hdGVzLnRvcH1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtjb29yZGluYXRlcy5sZWZ0fXB4YDtcbiAgICAgICAgaWYgKGFsbFByb3BzVG9UcmFuc2l0aW9uLmluY2x1ZGVzKFwid2lkdGhcIikpXG4gICAgICAgICAgY2xvbmUuc3R5bGUud2lkdGggPSBgJHtjb29yZGluYXRlcy53aWR0aH1weGA7XG4gICAgICAgIGlmIChhbGxQcm9wc1RvVHJhbnNpdGlvbi5pbmNsdWRlcyhcImhlaWdodFwiKSlcbiAgICAgICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtjb29yZGluYXRlcy5oZWlnaHR9cHhgO1xuXG4gICAgICAgIHJldHVybiB3aWxsTW92ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBoZXJvUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaXRXb250TW92ZSA9ICF3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG4gICAgICBpZiAoaXRXb250TW92ZSkge1xuICAgICAgICBldmVudHMub25IZXJvRW5kPy4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW9sZENsb25lKSB7XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQgKi9cbiAgICAgICAgc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2Yob3RoZXJFbGVtZW50KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB9XG4gICAgICBoZXJvUmVmLmN1cnJlbnQhLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3RoZXJFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuXG4gICAgICBmb3IgKGxldCBwcm9wVG9UcmFuc2l0aW9uIG9mIHByb3BzVG9UcmFuc2l0aW9uKSB7XG4gICAgICAgIGNsb25lLnN0eWxlW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XSA9XG4gICAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUob3RoZXJFbGVtZW50KVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV07XG4gICAgICB9XG5cbiAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgJHthbGxQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgICAubWFwKFxuICAgICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgICAgYCR7cHJvcC5yZXBsYWNlKFxuICAgICAgICAgICAgICAvW0EtWl0vZyxcbiAgICAgICAgICAgICAgKHN1YikgPT4gYC0ke3N1Yi50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICl9IHZhcigtLWFuaW1hdGlvbi0tc3BlZWQtZmFzdCwgMjUwbXMpIGVhc2Utb3V0YFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiLCBcIil9YDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsSXRXaWxsVHJhbnNpdGlvblRvID0gaGVyb1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudHMub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAgICAgICAgaWYgKGVsSXRXaWxsVHJhbnNpdGlvblRvKSB7XG4gICAgICAgICAgICBpZiAocmVwZWF0YWJsZSlcbiAgICAgICAgICAgICAgZWxJdFdpbGxUcmFuc2l0aW9uVG8hLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgICAgICAgICAgIGVsSXRXaWxsVHJhbnNpdGlvblRvLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9O1xuICAgICAgICB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gICAgICAgICAgY2xvbmUsXG4gICAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICAgIGhlcm9SZWYuY3VycmVudCEucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICAgICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdLFxuICAgICAgICAgIGN1cnJlbnRFbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIGlmIChldmVudHMub25IZXJvU3RhcnQpIHtcbiAgICAgICAgICBldmVudHMub25IZXJvU3RhcnQoY2xvbmUsIG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbEl0V2lsbFRyYW5zaXRpb25Ubykge1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgbmV3IHBvc2l0aW9uICovXG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWxJdFdpbGxUcmFuc2l0aW9uVG8pO1xuICAgICAgICBpZiAoIXdpbGxNb3ZlKSBjbGVhbnVwKCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IHByb3BUb1RyYW5zaXRpb24gb2YgcHJvcHNUb1RyYW5zaXRpb24pXG4gICAgICAgICAgICBjbG9uZS5zdHlsZVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV0gPVxuICAgICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbEl0V2lsbFRyYW5zaXRpb25UbylbXG4gICAgICAgICAgICAgICAgcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnlcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBsZXQgaW5pdGlhbE9mZnNldDogbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IHMgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChkLmNvbnRhaW5zKGVsSXRXaWxsVHJhbnNpdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhbE9mZnNldCA9PT0gdW5kZWZpbmVkKSBpbml0aWFsT2Zmc2V0ID0gZC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbG9uZS5zdHlsZS5tYXJnaW5Ub3AgPSBgJHstKGQuc2Nyb2xsVG9wIC0gaW5pdGlhbE9mZnNldCl9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvbkVuZENiID0gb3duRXZlbnQoXG4gICAgICAgICAgICAoeyB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfTogVHJhbnNpdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzIGFzIGFueSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCB0cmFuc2l0aW9uRW5kQ2IpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uc3RhcnRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25DYW5jZWxDYiA9IG93bkV2ZW50KChlKSA9PiB7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmNhbmNlbFwiLCBvbkNhbmNlbENiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cmlnZ2VySGVyb0FuaW1hdGlvbigpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZXJvUmVmLFxuICAgIGdldEhlcm9zT25TY3JlZW4sXG4gICAgdHJpZ2dlcjogdHJpZ2dlckhlcm9BbmltYXRpb24sXG4gICAgaGVyb0NvbXBvbmVudFJlZjpcbiAgICAgIChjb21wb25lbnRJZDogc3RyaW5nKSA9PiAoZWxSZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZWxSZWYpIHtcbiAgICAgICAgICBlbFJlZi5zZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQsIGNvbXBvbmVudElkKTtcbiAgICAgICAgICBlbFJlZi5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29vcmRpbmF0ZXM6IERPTVJlY3QpIHtcbiAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICBjb29yZGluYXRlcy5sZWZ0ID49IHZpZXdwb3J0LndpZHRoIHx8IGNvb3JkaW5hdGVzLnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQ7XG4gIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPD0gLWNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgY29vcmRpbmF0ZXMudG9wIDw9IC1jb29yZGluYXRlcy5oZWlnaHQ7XG4gIHJldHVybiBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydDtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgY29udGFpbmVyOiBWaXN1YWxWaWV3cG9ydCB8IEVsZW1lbnQsXG4gIGNvb3JkaW5hdGVzOiBET01SZWN0XG4pIHtcbiAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIFZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlcyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGFpbmVyQm91bmRzID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQgPVxuICAgICAgaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvbnRhaW5lckJvdW5kcyk7XG5cbiAgICBpZiAoaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29udGFpbmVyQm91bmRzLmxlZnQgKyBjb250YWluZXJCb3VuZHMud2lkdGggfHxcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCA+PSBjb250YWluZXJCb3VuZHMudG9wICsgY29udGFpbmVyQm91bmRzLmhlaWdodDtcblxuICAgIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29udGFpbmVyQm91bmRzLmxlZnQgLSBjb29yZGluYXRlcy5sZWZ0ID49IGNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgICBjb250YWluZXJCb3VuZHMudG9wIC0gY29vcmRpbmF0ZXMudG9wID49IGNvb3JkaW5hdGVzLmhlaWdodDtcblxuICAgIHJldHVybiBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0IHx8IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydDtcbiAgfVxufVxuXG50eXBlIEVWRU5UU19JTlRFUkZBQ0UgPSBQYXJhbWV0ZXJzPHR5cGVvZiB1c2VIZXJvPlsyXTtcbnR5cGUgVFJBTlNJVElPTl9UWVBFUyA9IFwiQUNDRUxFUkFUSU9OXCI7XG5mdW5jdGlvbiBjZW50ZXJQb2ludChyZWN0OiBET01SZWN0KSB7XG4gIHJldHVybiBbcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyXSBhcyBjb25zdDtcbn1cbmNvbnN0IGFuZ2xlID0gKFxuICBwb2ludEE6IHJlYWRvbmx5IFt4OiBudW1iZXIsIHk6IG51bWJlcl0sXG4gIHBvaW50QjogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXVxuKSA9PlxuICBOdW1iZXIoXG4gICAgKFxuICAgICAgTWF0aC5hdGFuMihwb2ludEFbMV0gLSBwb2ludEJbMV0sIHBvaW50QVswXSAtIHBvaW50QlswXSkgKlxuICAgICAgKDE3OS4wOCAvIE1hdGguUEkpXG4gICAgKS50b0ZpeGVkKDUpXG4gICk7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9GQUNUT1JZOiB7XG4gIFtuIGluIFRSQU5TSVRJT05fVFlQRVNdOiAoZXZlbnRzPzogRVZFTlRTX0lOVEVSRkFDRSkgPT4gRVZFTlRTX0lOVEVSRkFDRTtcbn0gPSB7XG4gIEFDQ0VMRVJBVElPTjogKGV2ZW50cykgPT4gKHtcbiAgICAuLi5ldmVudHMsXG4gICAgb25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KSB7XG4gICAgICBpZiAoZXZlbnRzPy5vbkhlcm9TdGFydCkgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvcmlnaW4sIHRhcmdldCk7XG4gICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5hY2NlbGVyYXRpb24pO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnRPcmlnaW4gPSBjZW50ZXJQb2ludChvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnREZXN0aW5hdGlvbiA9IGNlbnRlclBvaW50KFxuICAgICAgICB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICk7XG4gICAgICBjb25zdCBhbmdsZUJldHdlZW5FbGVtZW50cyA9IGFuZ2xlKFxuICAgICAgICBjZW50ZXJQb2ludE9yaWdpbixcbiAgICAgICAgY2VudGVyUG9pbnREZXN0aW5hdGlvblxuICAgICAgKTtcbiAgICAgIGNvbnN0IHZlY3RvclggPSBNYXRoLnNpbihhbmdsZUJldHdlZW5FbGVtZW50cyk7XG4gICAgICBjb25zdCB2ZWN0b3JZID0gTWF0aC5jb3MoYW5nbGVCZXR3ZWVuRWxlbWVudHMpO1xuXG4gICAgICBjb25zdCByb3RhdGVZID0gKDEwICogdmVjdG9yWSkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblggPSAodmVjdG9yWSArIDEpICogNTA7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVggPSAtKDEwICogdmVjdG9yWCkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblkgPSAodmVjdG9yWCArIDEpICogNTA7XG5cbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMVwiLFxuICAgICAgICBgcm90YXRlWSgke3JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LXJvdGF0ZVh9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXN0YWdlLTJcIixcbiAgICAgICAgYHJvdGF0ZVkoJHstcm90YXRlWSAqIDAuM31kZWcpIHJvdGF0ZVgoJHtyb3RhdGVYICogMC4zfWRlZylgXG4gICAgICApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXCItLW9yaWdpbi0xXCIsIGAke29yaWdpblh9JSAke29yaWdpbll9JWApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1vcmlnaW4tMlwiLFxuICAgICAgICBgJHsxMDAgLSBvcmlnaW5YfSUgJHsxMDAgLSBvcmlnaW5ZfSVgXG4gICAgICApO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiMTAwdndcIjtcbiAgICB9LFxuICAgIG9uSGVyb0VuZCgpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiXCI7XG4gICAgfSxcbiAgfSksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUEsSUFBQUMsU0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQTJDLFNBQUFFLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFB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
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./type-utils";
1
2
  export * from "./context/AsyncProcess";
2
3
  export { default as AsyncProcess } from "./context/AsyncProcess";
3
4
  export * from "./context/CustomBrowserRouter";
@@ -21,14 +22,14 @@ export * from "./components/FlowController/index";
21
22
  export { default as FlowController } from "./components/FlowController/index";
22
23
  export * from "./components/Transition/index";
23
24
  export { default as Transition } from "./components/Transition/index";
25
+ export * from "./components/Form/index";
26
+ export { default as Form } from "./components/Form/index";
24
27
  export * from "./components/Form/FormField/index";
25
28
  export { default as FormField } from "./components/Form/FormField/index";
26
29
  export * from "./components/Form/FormField/Extensions/PhoneField/index";
27
30
  export { default as PhoneField } from "./components/Form/FormField/Extensions/PhoneField/index";
28
31
  export * from "./components/Form/FormField/Extensions/DateField/index";
29
32
  export { default as DateField } from "./components/Form/FormField/Extensions/DateField/index";
30
- export * from "./components/Form/index";
31
- export { default as Form } from "./components/Form/index";
32
33
  export * from "./components/InstantCounter/index";
33
34
  export { default as InstantCounter } from "./components/InstantCounter/index";
34
35
  export * from "./components/LinkToId/index";