@1money/component-ui 0.1.16 → 0.1.18

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 (82) hide show
  1. package/es/business/Filter/Account/Account.js +5 -2
  2. package/es/business/Filter/Account/interface.d.ts +7 -0
  3. package/es/business/Filter/DateRange/DateRange.js +30 -13
  4. package/es/business/Filter/DateRange/style/DateRange.css +80 -9
  5. package/es/components/Calendar/Calendar.js +14 -10
  6. package/es/components/Calendar/style/Calendar.css +14 -0
  7. package/es/components/Dialog/hooks.d.ts +1 -2
  8. package/es/components/Dialog/hooks.js +2 -21
  9. package/es/components/Drawer/hooks/useDialogFocus.d.ts +1 -2
  10. package/es/components/Drawer/hooks/useDialogFocus.js +2 -22
  11. package/es/components/Input/Mask/Mask.js +2 -6
  12. package/es/components/Input/Search/Search.js +2 -2
  13. package/es/components/Pagination/Pagination.js +9 -5
  14. package/es/components/Pagination/constants.d.ts +1 -0
  15. package/es/components/Pagination/constants.js +2 -1
  16. package/es/components/Pagination/interface.d.ts +4 -0
  17. package/es/components/Pagination/style/Pagination.css +12 -0
  18. package/es/components/Select/Select.js +15 -4
  19. package/es/components/Select/SelectSearchControl.d.ts +2 -1
  20. package/es/components/Select/SelectSearchControl.js +15 -1
  21. package/es/components/Select/style/Select.css +11 -0
  22. package/es/components/Select/utils.js +27 -3
  23. package/es/components/Table/internal/kernel/Table.js +14 -14
  24. package/es/components/Table/internal/kernel/utils/getScrollBarSize.js +12 -2
  25. package/es/components/Table/style/Table.css +6 -0
  26. package/es/components/Tooltip/Tooltip.js +9 -2
  27. package/es/components/Tooltip/style/Tooltip.css +2 -0
  28. package/es/components/Typography/constants.d.ts +0 -1
  29. package/es/components/Typography/constants.js +1 -2
  30. package/es/components/Typography/useTypographyEnhancements.js +5 -7
  31. package/es/hooks/useDialogFocus.d.ts +2 -0
  32. package/es/hooks/useDialogFocus.js +22 -0
  33. package/es/index.css +1 -1
  34. package/es/locale/en_US/business.js +2 -1
  35. package/es/locale/interface.d.ts +1 -0
  36. package/es/locale/pt_BR/business.js +2 -1
  37. package/es/locale/zh_CN/business.js +2 -1
  38. package/lib/business/Filter/Account/Account.js +5 -2
  39. package/lib/business/Filter/Account/interface.d.ts +7 -0
  40. package/lib/business/Filter/DateRange/DateRange.js +29 -12
  41. package/lib/business/Filter/DateRange/style/DateRange.css +80 -9
  42. package/lib/components/Calendar/Calendar.js +14 -10
  43. package/lib/components/Calendar/style/Calendar.css +14 -0
  44. package/lib/components/Dialog/hooks.d.ts +1 -2
  45. package/lib/components/Dialog/hooks.js +10 -22
  46. package/lib/components/Drawer/hooks/useDialogFocus.d.ts +1 -2
  47. package/lib/components/Drawer/hooks/useDialogFocus.js +8 -23
  48. package/lib/components/Input/Mask/Mask.js +2 -6
  49. package/lib/components/Input/Search/Search.js +2 -2
  50. package/lib/components/Pagination/Pagination.js +9 -5
  51. package/lib/components/Pagination/constants.d.ts +1 -0
  52. package/lib/components/Pagination/constants.js +2 -1
  53. package/lib/components/Pagination/interface.d.ts +4 -0
  54. package/lib/components/Pagination/style/Pagination.css +12 -0
  55. package/lib/components/Select/Select.js +14 -3
  56. package/lib/components/Select/SelectSearchControl.d.ts +2 -1
  57. package/lib/components/Select/SelectSearchControl.js +15 -1
  58. package/lib/components/Select/style/Select.css +11 -0
  59. package/lib/components/Select/utils.js +27 -3
  60. package/lib/components/Table/internal/kernel/Table.js +14 -14
  61. package/lib/components/Table/internal/kernel/utils/getScrollBarSize.js +12 -2
  62. package/lib/components/Table/style/Table.css +6 -0
  63. package/lib/components/Tooltip/Tooltip.js +9 -2
  64. package/lib/components/Tooltip/style/Tooltip.css +2 -0
  65. package/lib/components/Typography/constants.d.ts +0 -1
  66. package/lib/components/Typography/constants.js +2 -3
  67. package/lib/components/Typography/useTypographyEnhancements.js +4 -6
  68. package/lib/hooks/useDialogFocus.d.ts +2 -0
  69. package/lib/hooks/useDialogFocus.js +28 -0
  70. package/lib/index.css +1 -1
  71. package/lib/locale/en_US/business.js +2 -1
  72. package/lib/locale/interface.d.ts +1 -0
  73. package/lib/locale/pt_BR/business.js +2 -1
  74. package/lib/locale/zh_CN/business.js +2 -1
  75. package/package.json +1 -12
  76. package/scripts/mcp-server/README.md +5 -0
  77. package/scripts/mcp-server/examples.generated.json +18 -0
  78. package/scripts/mcp-server/index.generated.json +28 -0
  79. package/scripts/mcp-server/index.mjs +2 -1
  80. package/scripts/mcp-server/tools/get-symbol.mjs +5 -25
  81. package/scripts/mcp-server/tools/resolve-import.mjs +5 -19
  82. package/scripts/mcp-server/tools/symbol-lookups.mjs +29 -0
@@ -146,6 +146,9 @@ var Select = exports.Select = function Select(props) {
146
146
  var selectedOptions = (0, _react2.useMemo)(function () {
147
147
  return (0, _utils.getSelectedOptions)(allFlatOptions, innerValue, multiple);
148
148
  }, [allFlatOptions, innerValue, multiple]);
149
+ // Rebuild per render: controlled arrays may be mutated in place, and option
150
+ // membership previously read their current contents on every render.
151
+ var selectedValues = (0, _utils.isSelectMultipleValue)(innerValue, multiple) ? new Set(innerValue) : null;
149
152
  var selectedIndex = (0, _react2.useMemo)(function () {
150
153
  if (selectedOptions.length === 0) {
151
154
  return null;
@@ -349,10 +352,17 @@ var Select = exports.Select = function Select(props) {
349
352
  var handleSearchBlur = (0, _useEventCallback["default"])(function (event) {
350
353
  notifyBlurIfOutside(event.relatedTarget, event);
351
354
  });
352
- var handleSearchChange = (0, _useEventCallback["default"])(function (nextValue, _event) {
355
+ var handleSearchChange = (0, _useEventCallback["default"])(function (nextValue) {
353
356
  setInnerSearchValue(nextValue);
354
357
  onSearchChange === null || onSearchChange === void 0 ? void 0 : onSearchChange(nextValue);
355
358
  });
359
+ var handleSearchClear = (0, _useEventCallback["default"])(function () {
360
+ var _a;
361
+ handleSearchChange('');
362
+ (_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus({
363
+ preventScroll: true
364
+ });
365
+ });
356
366
  var findEnabledIndex = (0, _useEventCallback["default"])(function (current, direction) {
357
367
  var _a;
358
368
  var length = visibleFlatOptions.length;
@@ -508,6 +518,7 @@ var Select = exports.Select = function Select(props) {
508
518
  activeDescendant: activeOptionId,
509
519
  onBlur: handleSearchBlur,
510
520
  onChange: handleSearchChange,
521
+ onClear: handleSearchClear,
511
522
  onKeyDown: handleSearchKeyDown
512
523
  }), (0, _jsxRuntime.jsxs)("div", {
513
524
  className: classes('panel-body'),
@@ -536,7 +547,7 @@ var Select = exports.Select = function Select(props) {
536
547
  }), group.options.map(function (option) {
537
548
  var optionFlatIndex = flatIndex;
538
549
  flatIndex += 1;
539
- var selected = (0, _utils.isOptionSelected)(innerValue, multiple, option.value);
550
+ var selected = selectedValues ? selectedValues.has(option.value) : (0, _utils.isOptionSelected)(innerValue, multiple, option.value);
540
551
  var active = activeIndex === optionFlatIndex;
541
552
  var optionMeta = {
542
553
  active: active,
@@ -593,4 +604,4 @@ var Select = exports.Select = function Select(props) {
593
604
  };
594
605
  Select.displayName = 'Select';
595
606
  var _default = exports["default"] = /*#__PURE__*/(0, _react2.memo)(Select);
596
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0MiIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX0NvbmZpZ1Byb3ZpZGVyIiwiX2NvbnRleHQiLCJfSWNvbnMiLCJfU3Bpbm5lciIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9TZWxlY3RGaWVsZFNoZWxsIiwiX1NlbGVjdE9wdGlvbkNvbnRlbnQiLCJfU2VsZWN0U2VhcmNoQ29udHJvbCIsIl9TZWxlY3RWYWx1ZUNvbnRlbnQiLCJfdXNlU2VsZWN0U2hlbGwyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwiZXhwb3J0cyIsInByb3BzIiwiX2EiLCJsb2NhbGUiLCJ1c2VMb2NhbGUiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwic2l6ZVByb3AiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwiX3Byb3BzJGZpbHRlcklucHV0QXV0IiwiZmlsdGVySW5wdXRBdXRvRm9jdXMiLCJsYWJlbCIsImxhYmVsQ2xhc3NOYW1lIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEhlYWRlciIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiZ3JvdXBMYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsIm9mZnNldCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Db250ZW50IiwicmVuZGVyVmFsdWUiLCJyZWYiLCJjb250ZXh0U2l6ZSIsInVzZUZvcm1Db250cm9sU2l6ZSIsImludGVyYWN0aXZlIiwiY2xhc3NlcyIsInJvb3RDbGFzc25hbWVzIiwiYXV0b0lkIiwidXNlSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJvcHRpb25JZFByZWZpeCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwibm9ybWFsaXplU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsInVzZU1lbW8iLCJub3JtYWxpemVPcHRpb25Hcm91cHMiLCJhbGxGbGF0T3B0aW9ucyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwiZmlsdGVyT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwiZ2V0U2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJ1c2VSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsInVzZUV2ZW50Q2FsbGJhY2siLCJub2RlIiwiY3VycmVudCIsIl91c2VTZWxlY3RTaGVsbCIsInVzZVNlbGVjdFNoZWxsIiwiaW5uZXJPcGVuIiwiaXNPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsInNldE9wZW4iLCJyZWZzIiwiY29udGV4dCIsImZsb2F0aW5nU3R5bGVzIiwidHJhbnNpdGlvblN0eWxlcyIsImlzTW91bnRlZCIsImJhc2VJbnRlcmFjdGlvbnMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImxpc3ROYXZpZ2F0aW9uIiwidXNlTGlzdE5hdmlnYXRpb24iLCJvbk5hdmlnYXRlIiwiZW5hYmxlZCIsImxvb3AiLCJ2aXJ0dWFsIiwidHlwZWFoZWFkIiwidXNlVHlwZWFoZWFkIiwib25NYXRjaCIsIl91c2VJbnRlcmFjdGlvbnMiLCJ1c2VJbnRlcmFjdGlvbnMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJ1c2VFZmZlY3QiLCJwcmV2IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwic2xpY2UiLCJzZXRTZWFyY2hJbnB1dFJlZiIsIm5vdGlmeUJsdXJJZk91dHNpZGUiLCJyZWxhdGVkVGFyZ2V0IiwiZXZlbnQiLCJfYiIsIm5leHRUYXJnZXQiLCJ3aXRoaW5UcmlnZ2VyIiwiY29udGFpbnMiLCJ3aXRoaW5GbG9hdGluZyIsImhhbmRsZVRyaWdnZXJCbHVyIiwiaGFuZGxlT3B0aW9uQmx1ciIsImNvbW1pdENoYW5nZSIsIm5leHRWYWx1ZSIsIm5leHRPcHRpb24iLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwibmV4dE9wdGlvbnMiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJnZXRNdWx0aXBsZVZhbHVlIiwiaW5jbHVkZXMiLCJyZW1vdmVNdWx0aXBsZVZhbHVlIiwiaGFuZGxlVHJpZ2dlcktleURvd24iLCJrZXkiLCJLRVlCT0FSRCIsIkVOVEVSIiwiU1BBQ0UiLCJwcmV2ZW50RGVmYXVsdCIsIkFSUk9XX0RPV04iLCJBUlJPV19VUCIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaW5kZXgiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJmaW5kRW5hYmxlZEluZGV4IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJzdGVwIiwiY2FuZGlkYXRlIiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIm5leHQiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJmb250U2l6ZSIsImdldEZvbnRTaXplIiwidmFsdWVMYWJlbENsYXNzIiwiaXNNdWx0aXBsZVZhbHVlRmlsbGVkIiwidHJpZ2dlckNsYXNzTmFtZSIsImpvaW5DbHMiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJfanN4cyIsIlNlbGVjdEZpZWxkU2hlbGwiLCJjaGlsZHJlbiIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJfanN4IiwiU2VsZWN0VmFsdWVDb250ZW50Iiwib25SZW1vdmUiLCJvblJlbW92ZUNsaWNrIiwib25SZW1vdmVNb3VzZURvd24iLCJTcGlubmVyIiwic3Ryb2tlV2lkdGgiLCJJY29ucyIsImNvbG9yIiwicGFuZWxOb2RlIiwiRmxvYXRpbmdGb2N1c01hbmFnZXIiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiU2VsZWN0U2VhcmNoQ29udHJvbCIsImFjdGl2ZURlc2NlbmRhbnQiLCJUeXBvZ3JhcGh5Qm9keSIsIlNFTEVDVF9UWVBPR1JBUEhZIiwiZW1wdHkiLCJmbGF0SW5kZXgiLCJtYXAiLCJncm91cCIsIlR5cG9ncmFwaHlMYWJlbCIsImdyb3VwTGFiZWwiLCJzdHJvbmciLCJvcHRpb25GbGF0SW5kZXgiLCJzZWxlY3RlZCIsImlzT3B0aW9uU2VsZWN0ZWQiLCJhY3RpdmUiLCJvcHRpb25NZXRhIiwiZXh0cmFjdE9wdGlvblRleHQiLCJyb2xlIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIlNlbGVjdE9wdGlvbkNvbnRlbnQiLCJjb250ZW50IiwiRmxvYXRpbmdQb3J0YWwiLCJkaXNwbGF5TmFtZSIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ0FBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQU9BLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsV0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsV0FBQSxHQUFBQyx1QkFBQSxDQUFBWixPQUFBO0FBZ0JBLElBQUFhLGlCQUFBLEdBQUFULHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBYyxvQkFBQSxHQUFBVixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQWUsb0JBQUEsR0FBQVgsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFnQixtQkFBQSxHQUFBWixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQWlCLGdCQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLFVBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFBbUIsTUFBQSxHQUFBbkIsT0FBQTtBQWNBQSxPQUFBO0FBQWlCLFNBQUFZLHdCQUFBUSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBVix1QkFBQSxZQUFBQSx3QkFBQVEsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsSUFBQUQsQ0FBQSxHQUFBVyxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbkIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFNLEVBQUEsRUFBQVAsQ0FBQSxJQUFBQyxDQUFBLENBQUFNLEVBQUEsSUFBQWQsQ0FBQSxDQUFBYyxFQUFBLFdBQUFOLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBRWpCLElBQU1tQixrQkFBa0IsR0FBRyxHQUFHO0FBRXZCLElBQU1DLE1BQU0sR0FBQUMsT0FBQSxDQUFBRCxNQUFBLEdBQW9CLFNBQTFCQSxNQUFNQSxDQUFxQkUsS0FBSyxFQUFJO0VEbEM3QyxJQUFJQyxFQUFFO0VDbUNSLElBQU1DLE1BQU0sR0FBRyxJQUFBQyx5QkFBUyxFQUFDLFFBQVEsQ0FBQztFQUNsQyxJQUFBQyxnQkFBQSxHQXNESUosS0FBSyxDQXJEUEssU0FBUztJQUFUQSxTQUFTLEdBQUFELGdCQUFBLGNBQUcsRUFBRSxHQUFBQSxnQkFBQTtJQUFBRSxnQkFBQSxHQXFEWk4sS0FBSyxDQXBEUE8sU0FBUztJQUFUQSxTQUFTLEdBQUFELGdCQUFBLGNBQUcsUUFBUSxHQUFBQSxnQkFBQTtJQUNwQkUsS0FBSyxHQW1ESFIsS0FBSyxDQW5EUFEsS0FBSztJQUNMQyxFQUFFLEdBa0RBVCxLQUFLLENBbERQUyxFQUFFO0lBQ0ZDLElBQUksR0FpREZWLEtBQUssQ0FqRFBVLElBQUk7SUFDVUMsU0FBUyxHQWdEckJYLEtBQUssQ0FoRFAsWUFBWTtJQUNPWSxjQUFjLEdBK0MvQlosS0FBSyxDQS9DUCxpQkFBaUI7SUFBQWEsa0JBQUEsR0ErQ2ZiLEtBQUssQ0E5Q1BjLFdBQVc7SUFBWEEsV0FBVyxHQUFBRCxrQkFBQSxjQUFHWCxNQUFNLENBQUNZLFdBQVcsR0FBQUQsa0JBQUE7SUFBQUUsY0FBQSxHQThDOUJmLEtBQUssQ0E3Q1BnQixPQUFPO0lBQVBBLE9BQU8sR0FBQUQsY0FBQSxjQUFHLEVBQUUsR0FBQUEsY0FBQTtJQUNaRSxLQUFLLEdBNENIakIsS0FBSyxDQTVDUGlCLEtBQUs7SUFDTEMsWUFBWSxHQTJDVmxCLEtBQUssQ0EzQ1BrQixZQUFZO0lBQ05DLFFBQVEsR0EwQ1puQixLQUFLLENBMUNQb0IsSUFBSTtJQUFBQyxhQUFBLEdBMENGckIsS0FBSyxDQXpDUHNCLE1BQU07SUFBTkEsTUFBTSxHQUFBRCxhQUFBLGNBQUcsU0FBUyxHQUFBQSxhQUFBO0lBQUFFLGNBQUEsR0F5Q2hCdkIsS0FBSyxDQXhDUHdCLE9BQU87SUFBUEEsT0FBTyxHQUFBRCxjQUFBLGNBQUcsTUFBTSxHQUFBQSxjQUFBO0lBQUFFLGVBQUEsR0F3Q2R6QixLQUFLLENBdkNQMEIsUUFBUTtJQUFFQyxZQUFZLEdBQUFGLGVBQUEsY0FBRyxLQUFLLEdBQUFBLGVBQUE7SUFBQUcsZUFBQSxHQXVDNUI1QixLQUFLLENBdENQNkIsUUFBUTtJQUFSQSxRQUFRLEdBQUFELGVBQUEsY0FBRyxLQUFLLEdBQUFBLGVBQUE7SUFBQUUsY0FBQSxHQXNDZDlCLEtBQUssQ0FyQ1ArQixPQUFPO0lBQVBBLE9BQU8sR0FBQUQsY0FBQSxjQUFHLEtBQUssR0FBQUEsY0FBQTtJQUFBRSxlQUFBLEdBcUNiaEMsS0FBSyxDQXBDUGlDLFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxlQUFBLGNBQUcsS0FBSyxHQUFBQSxlQUFBO0lBQ2hCRSxnQkFBZ0IsR0FtQ2RsQyxLQUFLLENBbkNQa0MsZ0JBQWdCO0lBQUFDLGlCQUFBLEdBbUNkbkMsS0FBSyxDQWxDUG9DLFVBQVU7SUFBVkEsVUFBVSxHQUFBRCxpQkFBQSxjQUFHLEtBQUssR0FBQUEsaUJBQUE7SUFBQUUscUJBQUEsR0FrQ2hCckMsS0FBSyxDQWpDUHNDLGlCQUFpQjtJQUFqQkEsaUJBQWlCLEdBQUFELHFCQUFBLGNBQUduQyxNQUFNLENBQUNvQyxpQkFBaUIsR0FBQUQscUJBQUE7SUFDNUNFLFdBQVcsR0FnQ1R2QyxLQUFLLENBaENQdUMsV0FBVztJQUFBQyxxQkFBQSxHQWdDVHhDLEtBQUssQ0EvQlB5QyxrQkFBa0I7SUFBbEJBLGtCQUFrQixHQUFBRCxxQkFBQSxjQUFHLEVBQUUsR0FBQUEscUJBQUE7SUFBQUUscUJBQUEsR0ErQnJCMUMsS0FBSyxDQTlCUDJDLG9CQUFvQjtJQUFwQkEsb0JBQW9CLEdBQUFELHFCQUFBLGNBQUcsSUFBSSxHQUFBQSxxQkFBQTtJQUMzQkUsS0FBSyxHQTZCSDVDLEtBQUssQ0E3QlA0QyxLQUFLO0lBQ0xDLGNBQWMsR0E0Qlo3QyxLQUFLLENBNUJQNkMsY0FBYztJQUNkQyxJQUFJLEdBMkJGOUMsS0FBSyxDQTNCUDhDLElBQUk7SUFDSkMsV0FBVyxHQTBCVC9DLEtBQUssQ0ExQlArQyxXQUFXO0lBQ1hDLFFBQVEsR0F5Qk5oRCxLQUFLLENBekJQZ0QsUUFBUTtJQUFBQyxlQUFBLEdBeUJOakQsS0FBSyxDQXhCUGtELFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxlQUFBLGNBQUcsSUFBSSxHQUFBQSxlQUFBO0lBQ2ZFLE1BQU0sR0F1QkpuRCxLQUFLLENBdkJQbUQsTUFBTTtJQUFBQyxtQkFBQSxHQXVCSnBELEtBQUssQ0F0QlBxRCxZQUFZO0lBQVpBLFlBQVksR0FBQUQsbUJBQUEsY0FBR2xELE1BQU0sQ0FBQ21ELFlBQVksR0FBQUQsbUJBQUE7SUFDbENFLFdBQVcsR0FxQlR0RCxLQUFLLENBckJQc0QsV0FBVztJQUNYQyxXQUFXLEdBb0JUdkQsS0FBSyxDQXBCUHVELFdBQVc7SUFDWEMsSUFBSSxHQW1CRnhELEtBQUssQ0FuQlB3RCxJQUFJO0lBQUFDLGtCQUFBLEdBbUJGekQsS0FBSyxDQWxCUDBELFdBQVc7SUFBWEEsV0FBVyxHQUFBRCxrQkFBQSxjQUFHLEtBQUssR0FBQUEsa0JBQUE7SUFBQUUsYUFBQSxHQWtCakIzRCxLQUFLLENBakJQNEQsTUFBTTtJQUFOQSxNQUFNLEdBQUFELGFBQUEsY0FBRyxJQUFJLEdBQUFBLGFBQUE7SUFBQUUsb0JBQUEsR0FpQlg3RCxLQUFLLENBaEJQOEQsYUFBYTtJQUFiQSxhQUFhLEdBQUFELG9CQUFBLGNBQUcsS0FBSyxHQUFBQSxvQkFBQTtJQUNyQkUsY0FBYyxHQWVaL0QsS0FBSyxDQWZQK0QsY0FBYztJQUNkQyxlQUFlLEdBY2JoRSxLQUFLLENBZFBnRSxlQUFlO0lBQ2ZDLG1CQUFtQixHQWFqQmpFLEtBQUssQ0FiUGlFLG1CQUFtQjtJQUFBQyxvQkFBQSxHQWFqQmxFLEtBQUssQ0FaUG1FLGFBQWE7SUFBYkEsYUFBYSxHQUFBRCxvQkFBQSxjQUFHckUsa0JBQWtCLEdBQUFxRSxvQkFBQTtJQUNsQ0UsTUFBTSxHQVdKcEUsS0FBSyxDQVhQb0UsTUFBTTtJQUNOQyxTQUFTLEdBVVByRSxLQUFLLENBVlBxRSxTQUFTO0lBQ1RDLFFBQVEsR0FTTnRFLEtBQUssQ0FUUHNFLFFBQVE7SUFDUkMsWUFBWSxHQVFWdkUsS0FBSyxDQVJQdUUsWUFBWTtJQUNaQyxjQUFjLEdBT1p4RSxLQUFLLENBUFB3RSxjQUFjO0lBQ2RDLE1BQU0sR0FNSnpFLEtBQUssQ0FOUHlFLE1BQU07SUFDTkMsWUFBWSxHQUtWMUUsS0FBSyxDQUxQMEUsWUFBWTtJQUNaQyxZQUFZLEdBSVYzRSxLQUFLLENBSlAyRSxZQUFZO0lBQ1pDLG1CQUFtQixHQUdqQjVFLEtBQUssQ0FIUDRFLG1CQUFtQjtJQUNuQkMsV0FBVyxHQUVUN0UsS0FBSyxDQUZQNkUsV0FBVztJQUNYQyxHQUFHLEdBQ0Q5RSxLQUFLLENBRFA4RSxHQUFHO0VBRUw7RUFDQTtFQUNBLElBQU1DLFdBQVcsR0FBRyxJQUFBQywyQkFBa0IsRUFBQSxDQUFFO0VBQ3hDLElBQU01RCxJQUFJLEdBQUcsQ0FBQW5CLEVBQUEsR0FBQWtCLFFBQVEsS0FBQSxJQUFBLElBQVJBLFFBQVEsS0FBQSxLQUFBLENBQUEsR0FBUkEsUUFBUSxHQUFJNEQsV0FBVyxNQUFBLElBQUEsSUFBQTlFLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLE9BQU87RUFDL0MsSUFBTXlCLFFBQVEsR0FBR0MsWUFBWSxJQUFJSSxPQUFPO0VBQ3hDLElBQU1rRCxXQUFXLEdBQUcsQ0FBQ3ZELFFBQVEsSUFBSSxDQUFDRyxRQUFRO0VBRTFDLElBQU1xRCxPQUFPLEdBQUcsSUFBQUMsc0JBQWMsRUFBQzVFLFNBQVMsQ0FBQztFQUN6QyxJQUFNNkUsTUFBTSxHQUFHLElBQUFDLGFBQUssRUFBQSxDQUFFO0VBQ3RCLElBQU1DLFNBQVMsR0FBRzdFLEVBQUUsS0FBQSxJQUFBLElBQUZBLEVBQUUsS0FBQSxLQUFBLENBQUEsR0FBRkEsRUFBRSxHQUFJMkUsTUFBTTtFQUM5QixJQUFNRyxPQUFPLEdBQUcsSUFBQUYsYUFBSyxFQUFBLENBQUU7RUFDdkIsSUFBTUcsYUFBYSxHQUFHLElBQUFILGFBQUssRUFBQSxDQUFFO0VBQzdCLElBQU1JLFVBQVUsR0FBRyxJQUFBSixhQUFLLEVBQUEsQ0FBRTtFQUMxQixJQUFNSyxjQUFjLEdBQUcsSUFBQUwsYUFBSyxFQUFBLENBQUU7RUFDOUIsSUFBQU0sbUJBQUEsR0FBb0MsSUFBQUMsK0JBQWtCLEVBQ3BEMUUsWUFBWSxLQUFBLElBQUEsSUFBWkEsWUFBWSxLQUFBLEtBQUEsQ0FBQSxHQUFaQSxZQUFZLEdBQUtlLFFBQVEsR0FBRyxFQUFFLEdBQUc0RCxTQUFVLEVBQzNDNUUsS0FBSyxDQUNOO0lBQUE2RSxvQkFBQSxPQUFBQyxlQUFBLGFBQUFKLG1CQUFBO0lBSE1LLFVBQVUsR0FBQUYsb0JBQUE7SUFBRUcsYUFBYSxHQUFBSCxvQkFBQTtFQUloQyxJQUFBSSxvQkFBQSxHQUFnRCxJQUFBTiwrQkFBa0IsRUFDaEVuRCxrQkFBa0IsRUFDbEJGLFdBQVcsQ0FDWjtJQUFBNEQsb0JBQUEsT0FBQUosZUFBQSxhQUFBRyxvQkFBQTtJQUhNRSxnQkFBZ0IsR0FBQUQsb0JBQUE7SUFBRUUsbUJBQW1CLEdBQUFGLG9CQUFBO0VBSTVDLElBQUFHLFNBQUEsR0FBc0MsSUFBQUMsZ0JBQVEsRUFBZ0IsSUFBSSxDQUFDO0lBQUFDLFVBQUEsT0FBQVQsZUFBQSxhQUFBTyxTQUFBO0lBQTVERyxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBRWxDLElBQU1HLGNBQWMsR0FBRyxJQUFBQyxvQkFBYSxFQUFDeEYsSUFBSSxDQUFDO0VBQzFDLElBQU15RixlQUFlLEdBQUcsSUFBQUMsZUFBTyxFQUM3QjtJQUFBLE9BQU0sSUFBQUMsNEJBQXFCLEVBQUMvRixPQUFPLENBQUM7RUFBQSxHQUNwQyxDQUFDQSxPQUFPLENBQUMsQ0FDVjtFQUNELElBQU1nRyxjQUFjLEdBQUcsSUFBQUYsZUFBTyxFQUM1QjtJQUFBLE9BQU0sSUFBQUcsMEJBQW1CLEVBQUNKLGVBQWUsQ0FBQztFQUFBLEdBQzFDLENBQUNBLGVBQWUsQ0FBQyxDQUNsQjtFQUNELElBQU1LLG1CQUFtQixHQUFHLElBQUFKLGVBQU8sRUFDakM7SUFBQSxPQUNFMUUsVUFBVSxHQUNOLElBQUErRSx5QkFBa0IsRUFBQ04sZUFBZSxFQUFFVCxnQkFBZ0IsRUFBRTFCLFlBQVksQ0FBQyxHQUNuRW1DLGVBQWU7RUFBQSxDQUNwQixFQUNELENBQUNBLGVBQWUsRUFBRW5DLFlBQVksRUFBRTBCLGdCQUFnQixFQUFFaEUsVUFBVSxDQUFDLENBQzlEO0VBQ0QsSUFBTWdGLGtCQUFrQixHQUFHLElBQUFOLGVBQU8sRUFDaEM7SUFBQSxPQUFNLElBQUFHLDBCQUFtQixFQUFDQyxtQkFBbUIsQ0FBQztFQUFBLEdBQzlDLENBQUNBLG1CQUFtQixDQUFDLENBQ3RCO0VBQ0QsSUFBTUcsZUFBZSxHQUFHLElBQUFQLGVBQU8sRUFDN0I7SUFBQSxPQUFNLElBQUFRLHlCQUFrQixFQUFDTixjQUFjLEVBQUVoQixVQUFVLEVBQUUvRCxRQUFRLENBQUM7RUFBQSxHQUM5RCxDQUFDK0UsY0FBYyxFQUFFaEIsVUFBVSxFQUFFL0QsUUFBUSxDQUFDLENBQ3ZDO0VBQ0QsSUFBTXNGLGFBQWEsR0FBRyxJQUFBVCxlQUFPLEVBQUMsWUFBSztJQUNqQyxJQUFJTyxlQUFlLENBQUNHLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDaEMsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFNQyxZQUFZLEdBQUdMLGtCQUFrQixDQUFDTSxTQUFTLENBQy9DLFVBQUNDLE1BQU07TUFBQSxPQUFLQSxNQUFNLENBQUMxRyxLQUFLLEtBQUtvRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUNwRyxLQUFLO0lBQUEsRUFDdEQ7SUFFRCxPQUFPd0csWUFBWSxJQUFJLENBQUMsR0FBR0EsWUFBWSxHQUFHLElBQUk7RUFDaEQsQ0FBQyxFQUFFLENBQUNKLGVBQWUsRUFBRUQsa0JBQWtCLENBQUMsQ0FBQztFQUN6QyxJQUFNUSxZQUFZLEdBQUdQLGVBQWUsQ0FBQ0csTUFBTSxHQUFHLENBQUM7RUFDL0MsSUFBTUssT0FBTyxHQUFHLElBQUFDLGNBQU0sRUFBa0MsRUFBRSxDQUFDO0VBQzNELElBQU1DLGNBQWMsR0FBRyxJQUFBRCxjQUFNLEVBQXVCLEVBQUUsQ0FBQztFQUN2RCxJQUFNRSxXQUFXLEdBQUcsSUFBQUYsY0FBTSxFQUF3QixJQUFJLENBQUM7RUFDdkQsSUFBTUcsVUFBVSxHQUFHLElBQUFILGNBQU0sRUFBMkIsSUFBSSxDQUFDO0VBQ3pELElBQU1JLGNBQWMsR0FBRyxJQUFBSixjQUFNLEVBQTBCLElBQUksQ0FBQztFQUU1RCxJQUFNSyxnQkFBZ0IsR0FBRyxJQUFBQyw0QkFBZ0IsRUFBQyxVQUFDQyxJQUE4QixFQUFJO0lBQzNFSixVQUFVLENBQUNLLE9BQU8sR0FBR0QsSUFBSTtJQUN6QixJQUFJdkQsR0FBRyxFQUFFO01BQ05BLEdBQTZDLENBQUN3RCxPQUFPLEdBQUdELElBQUk7SUFDL0Q7RUFDRixDQUFDLENBQUM7RUFFRixJQUFBRSxlQUFBLEdBU0ksSUFBQUMsK0JBQWMsRUFBb0I7TUFDcENoRixJQUFJLEVBQUpBLElBQUk7TUFDSkUsV0FBVyxFQUFYQSxXQUFXO01BQ1hhLFlBQVksRUFBWkEsWUFBWTtNQUNaN0MsUUFBUSxFQUFSQSxRQUFRO01BQ1JHLFFBQVEsRUFBUkEsUUFBUTtNQUNSc0MsYUFBYSxFQUFiQSxhQUFhO01BQ2JFLFNBQVMsRUFBVEEsU0FBUztNQUNURCxNQUFNLEVBQU5BO0lEL0hBLENDZ0lELENBQUM7SUFqQlFxRSxTQUFTLEdBQUFGLGVBQUEsQ0FBakJHLE1BQU07SUFDR0MsZ0JBQWdCLEdBQUFKLGVBQUEsQ0FBekJLLE9BQU87SUFDUEMsSUFBSSxHQUFBTixlQUFBLENBQUpNLElBQUk7SUFDSkMsT0FBTyxHQUFBUCxlQUFBLENBQVBPLE9BQU87SUFDUEMsY0FBYyxHQUFBUixlQUFBLENBQWRRLGNBQWM7SUFDZEMsZ0JBQWdCLEdBQUFULGVBQUEsQ0FBaEJTLGdCQUFnQjtJQUNoQkMsU0FBUyxHQUFBVixlQUFBLENBQVRVLFNBQVM7SUFDVEMsZ0JBQWdCLEdBQUFYLGVBQUEsQ0FBaEJXLGdCQUFnQjtFQVlsQixJQUFNQyxZQUFZLEdBQUcsSUFBQWYsNEJBQWdCLEVBQUMsVUFBQ0MsSUFBOEIsRUFBSTtJQUN2RVEsSUFBSSxDQUFDTSxZQUFZLENBQUNkLElBQUksQ0FBQztJQUN2QkYsZ0JBQWdCLENBQUNFLElBQUksQ0FBQztFQUN4QixDQUFDLENBQUM7RUFFRixJQUFNZSxXQUFXLEdBQUcsSUFBQWhCLDRCQUFnQixFQUFDLFVBQUNDLElBQTJCLEVBQUk7SUFDbkVRLElBQUksQ0FBQ08sV0FBVyxDQUFDZixJQUFJLENBQUM7SUFDdEJMLFdBQVcsQ0FBQ00sT0FBTyxHQUFHRCxJQUFJO0VBQzVCLENBQUMsQ0FBQztFQUVGLElBQU1nQixjQUFjLEdBQUcsSUFBQUMsd0JBQWlCLEVBQUNSLE9BQU8sRUFBRTtJQUNoRGpCLE9BQU8sRUFBUEEsT0FBTztJQUNQcEIsV0FBVyxFQUFYQSxXQUFXO0lBQ1hjLGFBQWEsRUFBYkEsYUFBYTtJQUNiZ0MsVUFBVSxFQUFFN0MsY0FBYztJQUMxQjhDLE9BQU8sRUFBRWYsU0FBUztJQUNsQmdCLElBQUksRUFBRSxJQUFJO0lBQ1ZDLE9BQU8sRUFBRXRIO0VEbElULENDbUlELENBQUM7RUFDRixJQUFNdUgsU0FBUyxHQUFHLElBQUFDLG1CQUFZLEVBQUNkLE9BQU8sRUFBRTtJQUN0Q2pCLE9BQU8sRUFBRUUsY0FBYztJQUN2QnRCLFdBQVcsRUFBWEEsV0FBVztJQUNYYyxhQUFhLEVBQWJBLGFBQWE7SUFDYmlDLE9BQU8sRUFBRWYsU0FBUyxJQUFJLENBQUNyRyxVQUFVO0lBQ2pDeUgsT0FBTyxFQUFFbkQ7RURsSVQsQ0NtSUQsQ0FBQztFQUNGLElBQUFvRCxnQkFBQSxHQUE4RCxJQUFBQyxzQkFBZSxLQUFBQyxNQUFBLEtBQUFDLG1CQUFBLGFBQ3hFZixnQkFBZ0IsSUFDbkJHLGNBQWMsRUFDZE0sU0FBUyxFQUNWLENBQUM7SUFKTU8saUJBQWlCLEdBQUFKLGdCQUFBLENBQWpCSSxpQkFBaUI7SUFBRUMsZ0JBQWdCLEdBQUFMLGdCQUFBLENBQWhCSyxnQkFBZ0I7SUFBRUMsWUFBWSxHQUFBTixnQkFBQSxDQUFaTSxZQUFZO0VBTXpELElBQU1DLGlCQUFpQixHQUFHLElBQUF2RCxlQUFPLEVBQy9CO0lBQUEsT0FBTU0sa0JBQWtCLENBQUNNLFNBQVMsQ0FBQyxVQUFDQyxNQUFNO01BQUEsT0FBSyxDQUFDQSxNQUFNLENBQUNqRyxRQUFRO0lBQUEsRUFBQztFQUFBLEdBQ2hFLENBQUMwRixrQkFBa0IsQ0FBQyxDQUNyQjtFQUVELElBQUFrRCxpQkFBUyxFQUFDLFlBQUs7SUFDYixJQUFJLENBQUM3QixTQUFTLEVBQUU7TUFDZC9CLGNBQWMsQ0FBQ2EsYUFBYSxDQUFDO01BQzdCO0lBQ0Y7SUFFQWIsY0FBYyxDQUFDLFVBQUM2RCxJQUFJLEVBQUk7TUFDdEIsSUFBSUEsSUFBSSxLQUFLLElBQUksSUFBSW5ELGtCQUFrQixDQUFDbUQsSUFBSSxDQUFDLElBQUksQ0FBQ25ELGtCQUFrQixDQUFDbUQsSUFBSSxDQUFDLENBQUM3SSxRQUFRLEVBQUU7UUFDbkYsT0FBTzZJLElBQUk7TUFDYjtNQUVBLElBQ0VoRCxhQUFhLEtBQUssSUFBSSxJQUN0Qkgsa0JBQWtCLENBQUNHLGFBQWEsQ0FBQyxJQUNqQyxDQUFDSCxrQkFBa0IsQ0FBQ0csYUFBYSxDQUFDLENBQUM3RixRQUFRLEVBQzNDO1FBQ0EsT0FBTzZGLGFBQWE7TUFDdEI7TUFFQSxPQUFPOEMsaUJBQWlCLElBQUksQ0FBQyxHQUFHQSxpQkFBaUIsR0FBRyxJQUFJO0lBQzFELENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDQSxpQkFBaUIsRUFBRTVCLFNBQVMsRUFBRWxCLGFBQWEsRUFBRUgsa0JBQWtCLENBQUMsQ0FBQztFQUVyRSxJQUFBa0QsaUJBQVMsRUFBQyxZQUFLO0lEN0lULElBQUlySyxFQUFFO0lDOElWLElBQUksQ0FBQ3dJLFNBQVMsSUFBSWhDLFdBQVcsS0FBSyxJQUFJLElBQUlyRSxVQUFVLEVBQUU7TUFDcEQ7SUFDRjtJQUVBLENBQUFuQyxFQUFBLEdBQUE0SCxPQUFPLENBQUNTLE9BQU8sQ0FBQzdCLFdBQVcsQ0FBQyxNQUFBLElBQUEsSUFBQXhHLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFdUssS0FBSyxDQUFDO01BQUVDLGFBQWEsRUFBRTtJQUFJLENBQUUsQ0FBQztFQUM5RCxDQUFDLEVBQUUsQ0FBQ2hFLFdBQVcsRUFBRWdDLFNBQVMsRUFBRXJHLFVBQVUsQ0FBQyxDQUFDO0VBRXhDLElBQUFrSSxpQkFBUyxFQUFDLFlBQUs7SUFDYnpDLE9BQU8sQ0FBQ1MsT0FBTyxHQUFHVCxPQUFPLENBQUNTLE9BQU8sQ0FBQ29DLEtBQUssQ0FBQyxDQUFDLEVBQUV0RCxrQkFBa0IsQ0FBQ0ksTUFBTSxDQUFDO0lBQ3JFTyxjQUFjLENBQUNPLE9BQU8sR0FBR1AsY0FBYyxDQUFDTyxPQUFPLENBQUNvQyxLQUFLLENBQUMsQ0FBQyxFQUFFdEQsa0JBQWtCLENBQUNJLE1BQU0sQ0FBQztFQUNyRixDQUFDLEVBQUUsQ0FBQ0osa0JBQWtCLENBQUNJLE1BQU0sQ0FBQyxDQUFDO0VBRS9CLElBQU1tRCxpQkFBaUIsR0FBRyxJQUFBdkMsNEJBQWdCLEVBQUMsVUFBQ0MsSUFBNkIsRUFBSTtJQUMzRUgsY0FBYyxDQUFDSSxPQUFPLEdBQUdELElBQUk7SUFDN0IsSUFBSUEsSUFBSSxJQUFJSSxTQUFTLElBQUk5RixvQkFBb0IsRUFBRTtNQUM3QzBGLElBQUksQ0FBQ21DLEtBQUssQ0FBQztRQUFFQyxhQUFhLEVBQUU7TUFBSSxDQUFFLENBQUM7SUFDckM7RUFDRixDQUFDLENBQUM7RUFFRixJQUFNRyxtQkFBbUIsR0FBRyxJQUFBeEMsNEJBQWdCLEVBQUMsVUFBQ3lDLGFBQWlDLEVBQUVDLEtBQStCLEVBQUk7SURoSjlHLElBQUk3SyxFQUFFLEVBQUU4SyxFQUFFO0lDaUpkLElBQU1DLFVBQVUsR0FBR0gsYUFBNEI7SUFDL0MsSUFBTUksYUFBYSxHQUFHLENBQUMsRUFBRUQsVUFBVSxLQUFJLENBQUEvSyxFQUFBLEdBQUFnSSxVQUFVLENBQUNLLE9BQU8sTUFBQSxJQUFBLElBQUFySSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRWlMLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDLENBQUEsQ0FBQztJQUNoRixJQUFNRyxjQUFjLEdBQUcsQ0FBQyxFQUFFSCxVQUFVLEtBQUksQ0FBQUQsRUFBQSxHQUFBL0MsV0FBVyxDQUFDTSxPQUFPLE1BQUEsSUFBQSxJQUFBeUMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVHLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDLENBQUEsQ0FBQztJQUVsRixJQUFJLENBQUNDLGFBQWEsSUFBSSxDQUFDRSxjQUFjLEVBQUU7TUFDckMxRyxNQUFNLEtBQUEsSUFBQSxJQUFOQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE1BQU0sQ0FBR3FHLEtBQUssQ0FBQztJQUNqQjtFQUNGLENBQUMsQ0FBQztFQUVGLElBQU1NLGlCQUFpQixHQUFHLElBQUFoRCw0QkFBZ0IsRUFBQyxVQUFDMEMsS0FBb0MsRUFBSTtJQUNsRkYsbUJBQW1CLENBQUNFLEtBQUssQ0FBQ0QsYUFBYSxFQUFFQyxLQUFnQyxDQUFDO0VBQzVFLENBQUMsQ0FBQztFQUVGLElBQU1PLGdCQUFnQixHQUFHLElBQUFqRCw0QkFBZ0IsRUFBQyxVQUFDMEMsS0FBb0MsRUFBSTtJQUNqRkYsbUJBQW1CLENBQUNFLEtBQUssQ0FBQ0QsYUFBYSxFQUFFQyxLQUFnQyxDQUFDO0VBQzVFLENBQUMsQ0FBQztFQUVGLElBQU1RLFlBQVksR0FBRyxJQUFBbEQsNEJBQWdCLEVBQUMsVUFBQ21ELFNBQXNCLEVBQUVDLFVBQTBDLEVBQUk7SUFDM0d2RixhQUFhLENBQUNzRixTQUFTLENBQUM7SUFDeEJqSCxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsQ0FBR2lILFNBQVMsRUFBRUMsVUFBVSxFQUFFOUssSUFBSSxDQUFDO0VBQ3pDLENBQUMsQ0FBQztFQUVGLElBQU0rSyxrQkFBa0IsR0FBRyxJQUFBckQsNEJBQWdCLEVBQUMsVUFBQ1QsTUFBb0IsRUFBSTtJRHBKL0QsSUFBSTFILEVBQUUsRUFBRThLLEVBQUU7SUNxSmQsSUFBSXBELE1BQU0sQ0FBQ2pHLFFBQVEsRUFBRTtNQUNuQjtJQUNGO0lBRUEsSUFBSU8sUUFBUSxFQUFFO01BQ1osSUFBTXNKLFNBQVMsR0FBRyxJQUFBRywwQkFBbUIsRUFBQzFGLFVBQVUsRUFBRTJCLE1BQU0sQ0FBQzFHLEtBQUssQ0FBQztNQUMvRCxJQUFNMEssV0FBVyxHQUFHLElBQUFDLHlCQUFrQixFQUFDNUUsY0FBYyxFQUFFdUUsU0FBUyxDQUFDO01BQ2pFRCxZQUFZLENBQUNDLFNBQVMsRUFBRUksV0FBVyxDQUFDO01BQ3BDO0lBQ0Y7SUFFQSxJQUFJN0gsYUFBYSxJQUFJa0MsVUFBVSxLQUFLMkIsTUFBTSxDQUFDMUcsS0FBSyxFQUFFO01BQ2hEcUssWUFBWSxDQUFDekYsU0FBUyxFQUFFQSxTQUFTLENBQUM7TUFDbEM4QyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7TUFDdkJsRSxNQUFNLEtBQUEsSUFBQSxJQUFOQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE1BQU0sQ0FBQSxDQUFJO01BQ1YsQ0FBQXhFLEVBQUEsR0FBQWdJLFVBQVUsQ0FBQ0ssT0FBTyxNQUFBLElBQUEsSUFBQXJJLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFdUssS0FBSyxDQUFDO1FBQUVDLGFBQWEsRUFBRTtNQUFJLENBQUUsQ0FBQztNQUNsRDtJQUNGO0lBRUFhLFlBQVksQ0FBQzNELE1BQU0sQ0FBQzFHLEtBQUssRUFBRTBHLE1BQU0sQ0FBQztJQUNsQ2dCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN2QmxFLE1BQU0sS0FBQSxJQUFBLElBQU5BLE1BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsTUFBTSxDQUFBLENBQUk7SUFDVixDQUFBc0csRUFBQSxHQUFBOUMsVUFBVSxDQUFDSyxPQUFPLE1BQUEsSUFBQSxJQUFBeUMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVQLEtBQUssQ0FBQztNQUFFQyxhQUFhLEVBQUU7SUFBSSxDQUFFLENBQUM7RUFDcEQsQ0FBQyxDQUFDO0VBRUYsSUFBTW9CLHlCQUF5QixHQUFHLElBQUF6RCw0QkFBZ0IsRUFBQyxVQUFDMEQsV0FBOEIsRUFBSTtJQUNwRixJQUFJLENBQUM3SixRQUFRLEVBQUU7TUFDYjtJQUNGO0lBRUEsSUFBSSxDQUFDLElBQUE4Six1QkFBZ0IsRUFBQy9GLFVBQVUsQ0FBQyxDQUFDZ0csUUFBUSxDQUFDRixXQUFXLENBQUMsRUFBRTtNQUN2RDtJQUNGO0lBRUEsSUFBTVAsU0FBUyxHQUFHLElBQUFVLDBCQUFtQixFQUFDakcsVUFBVSxFQUFFOEYsV0FBVyxDQUFDO0lBQzlELElBQU1ILFdBQVcsR0FBRyxJQUFBQyx5QkFBa0IsRUFBQzVFLGNBQWMsRUFBRXVFLFNBQVMsQ0FBQztJQUNqRUQsWUFBWSxDQUFDQyxTQUFTLEVBQUVJLFdBQVcsQ0FBQztFQUN0QyxDQUFDLENBQUM7RUFFRixJQUFNTyxvQkFBb0IsR0FBRyxJQUFBOUQsNEJBQWdCLEVBQUMsVUFBQzBDLEtBQTRDLEVBQUk7SUFDN0YsSUFBSSxDQUFDN0YsV0FBVyxFQUFFO01BQ2hCO0lBQ0Y7SUFFQSxJQUFJNkYsS0FBSyxDQUFDcUIsR0FBRyxLQUFLQyxtQkFBUSxDQUFDQyxLQUFLLElBQUl2QixLQUFLLENBQUNxQixHQUFHLEtBQUtDLG1CQUFRLENBQUNFLEtBQUssRUFBRTtNQUNoRSxJQUNFN0QsU0FBUyxJQUNUaEMsV0FBVyxLQUFLLElBQUksSUFDcEJXLGtCQUFrQixDQUFDWCxXQUFXLENBQUMsSUFDL0IsQ0FBQ1csa0JBQWtCLENBQUNYLFdBQVcsQ0FBQyxDQUFDL0UsUUFBUSxFQUN6QztRQUNBb0osS0FBSyxDQUFDeUIsY0FBYyxDQUFBLENBQUU7UUFDdEJkLGtCQUFrQixDQUFDckUsa0JBQWtCLENBQUNYLFdBQVcsQ0FBQyxDQUFDO1FBQ25EO01BQ0Y7TUFDQXFFLEtBQUssQ0FBQ3lCLGNBQWMsQ0FBQSxDQUFFO01BQ3RCNUQsZ0JBQWdCLENBQUMsQ0FBQ0YsU0FBUyxDQUFDO01BQzVCO0lBQ0Y7SUFFQSxJQUFJcUMsS0FBSyxDQUFDcUIsR0FBRyxLQUFLQyxtQkFBUSxDQUFDSSxVQUFVLElBQUkxQixLQUFLLENBQUNxQixHQUFHLEtBQUtDLG1CQUFRLENBQUNLLFFBQVEsRUFBRTtNQUN4RTNCLEtBQUssQ0FBQ3lCLGNBQWMsQ0FBQSxDQUFFO01BQ3RCLElBQUksQ0FBQzlELFNBQVMsRUFBRTtRQUNkRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFDeEI7SUFDRjtFQUNGLENBQUMsQ0FBQztFQUVGLElBQU0rRCxvQkFBb0IsR0FBRyxJQUFBdEUsNEJBQWdCLEVBQUMsVUFBQ3VFLEtBQWEsRUFBSTtJRC9KMUQsSUFBSTFNLEVBQUU7SUNnS1YsSUFBSSxFQUFDLENBQUFBLEVBQUEsR0FBQW1ILGtCQUFrQixDQUFDdUYsS0FBSyxDQUFDLE1BQUEsSUFBQSxJQUFBMU0sRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUV5QixRQUFRLENBQUEsRUFBRTtNQUN4Q2dGLGNBQWMsQ0FBQ2lHLEtBQUssQ0FBQztJQUN2QjtFQUNGLENBQUMsQ0FBQztFQUVGLElBQU1DLHdCQUF3QixHQUFHLElBQUF4RSw0QkFBZ0IsRUFBQyxVQUFDMEMsS0FBdUMsRUFBSTtJQUM1RkEsS0FBSyxDQUFDeUIsY0FBYyxDQUFBLENBQUU7SUFDdEJ6QixLQUFLLENBQUMrQixlQUFlLENBQUEsQ0FBRTtFQUN6QixDQUFDLENBQUM7RUFFRixJQUFNQyxvQkFBb0IsR0FBRyxJQUFBMUUsNEJBQWdCLEVBQUMsVUFBQzBDLEtBQXVDLEVBQUk7SUFDeEZBLEtBQUssQ0FBQ3lCLGNBQWMsQ0FBQSxDQUFFO0lBQ3RCekIsS0FBSyxDQUFDK0IsZUFBZSxDQUFBLENBQUU7RUFDekIsQ0FBQyxDQUFDO0VBRUYsSUFBTUUsZ0JBQWdCLEdBQUcsSUFBQTNFLDRCQUFnQixFQUFDLFVBQUMwQyxLQUFtQyxFQUFJO0lBQ2hGRixtQkFBbUIsQ0FBQ0UsS0FBSyxDQUFDRCxhQUFhLEVBQUVDLEtBQWdDLENBQUM7RUFDNUUsQ0FBQyxDQUFDO0VBRUYsSUFBTWtDLGtCQUFrQixHQUFHLElBQUE1RSw0QkFBZ0IsRUFBQyxVQUFDbUQsU0FBaUIsRUFBRTBCLE1BQXFDLEVBQUk7SUFDdkc1RyxtQkFBbUIsQ0FBQ2tGLFNBQVMsQ0FBQztJQUM5Qi9HLGNBQWMsS0FBQSxJQUFBLElBQWRBLGNBQWMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBZEEsY0FBYyxDQUFHK0csU0FBUyxDQUFDO0VBQzdCLENBQUMsQ0FBQztFQUVGLElBQU0yQixnQkFBZ0IsR0FBRyxJQUFBOUUsNEJBQWdCLEVBQUMsVUFBQ0UsT0FBc0IsRUFBRTZFLFNBQWlCLEVBQW1CO0lEbktqRyxJQUFJbE4sRUFBRTtJQ29LVixJQUFNdUgsTUFBTSxHQUFHSixrQkFBa0IsQ0FBQ0ksTUFBTTtJQUN4QyxJQUFJQSxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBTTRGLEtBQUssR0FBRzlFLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxHQUFLNkUsU0FBUyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRzNGLE1BQU87SUFDeEQsS0FBSyxJQUFJNkYsSUFBSSxHQUFHLENBQUMsRUFBRUEsSUFBSSxJQUFJN0YsTUFBTSxFQUFFNkYsSUFBSSxJQUFJLENBQUMsRUFBRTtNQUM1QyxJQUFNQyxTQUFTLEdBQUcsQ0FBQyxDQUFDRixLQUFLLEdBQUdELFNBQVMsR0FBR0UsSUFBSSxJQUFJN0YsTUFBTSxHQUFHQSxNQUFNLElBQUlBLE1BQU07TUFDekUsSUFBSSxFQUFDLENBQUF2SCxFQUFBLEdBQUFtSCxrQkFBa0IsQ0FBQ2tHLFNBQVMsQ0FBQyxNQUFBLElBQUEsSUFBQXJOLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFeUIsUUFBUSxDQUFBLEVBQUU7UUFDNUMsT0FBTzRMLFNBQVM7TUFDbEI7SUFDRjtJQUNBLE9BQU8sSUFBSTtFQUNiLENBQUMsQ0FBQztFQUVGLElBQU1DLG1CQUFtQixHQUFHLElBQUFuRiw0QkFBZ0IsRUFBQyxVQUFDMEMsS0FBMkMsRUFBSTtJRHBLdkYsSUFBSTdLLEVBQUU7SUNxS1YsSUFBSTZLLEtBQUssQ0FBQ3FCLEdBQUcsS0FBS0MsbUJBQVEsQ0FBQ0ksVUFBVSxFQUFFO01BQ3JDMUIsS0FBSyxDQUFDeUIsY0FBYyxDQUFBLENBQUU7TUFDdEIsSUFBTWlCLElBQUksR0FBR04sZ0JBQWdCLENBQUN6RyxXQUFXLEVBQUUsQ0FBQyxDQUFDO01BQzdDLElBQUkrRyxJQUFJLEtBQUssSUFBSSxFQUFFO1FBQ2pCOUcsY0FBYyxDQUFDOEcsSUFBSSxDQUFDO01BQ3RCO01BQ0E7SUFDRjtJQUVBLElBQUkxQyxLQUFLLENBQUNxQixHQUFHLEtBQUtDLG1CQUFRLENBQUNLLFFBQVEsRUFBRTtNQUNuQzNCLEtBQUssQ0FBQ3lCLGNBQWMsQ0FBQSxDQUFFO01BQ3RCLElBQU1oQyxJQUFJLEdBQUcyQyxnQkFBZ0IsQ0FBQ3pHLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUM5QyxJQUFJOEQsSUFBSSxLQUFLLElBQUksRUFBRTtRQUNqQjdELGNBQWMsQ0FBQzZELElBQUksQ0FBQztNQUN0QjtNQUNBO0lBQ0Y7SUFFQSxJQUFJTyxLQUFLLENBQUNxQixHQUFHLEtBQUtDLG1CQUFRLENBQUNDLEtBQUssRUFBRTtNQUNoQyxJQUNFNUYsV0FBVyxLQUFLLElBQUksSUFDcEJXLGtCQUFrQixDQUFDWCxXQUFXLENBQUMsSUFDL0IsQ0FBQ1csa0JBQWtCLENBQUNYLFdBQVcsQ0FBQyxDQUFDL0UsUUFBUSxFQUN6QztRQUNBb0osS0FBSyxDQUFDeUIsY0FBYyxDQUFBLENBQUU7UUFDdEJkLGtCQUFrQixDQUFDckUsa0JBQWtCLENBQUNYLFdBQVcsQ0FBQyxDQUFDO01BQ3JEO01BQ0E7SUFDRjtJQUVBLElBQUlxRSxLQUFLLENBQUNxQixHQUFHLEtBQUtDLG1CQUFRLENBQUNxQixNQUFNLEVBQUU7TUFDakMzQyxLQUFLLENBQUN5QixjQUFjLENBQUEsQ0FBRTtNQUN0QjVELGdCQUFnQixDQUFDLEtBQUssQ0FBQztNQUN2QixDQUFBMUksRUFBQSxHQUFBZ0ksVUFBVSxDQUFDSyxPQUFPLE1BQUEsSUFBQSxJQUFBckksRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUV1SyxLQUFLLENBQUM7UUFBRUMsYUFBYSxFQUFFO01BQUksQ0FBRSxDQUFDO0lBQ3BEO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFBTWlELGVBQWUsR0FBMEI7SUFDN0NoTSxRQUFRLEVBQVJBLFFBQVE7SUFDUkcsUUFBUSxFQUFSQSxRQUFRO0lBQ1JJLFFBQVEsRUFBUkEsUUFBUTtJQUNSQyxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtJQUNoQnNCLElBQUksRUFBRWlGLFNBQVM7SUFDZjNILFdBQVcsRUFBRSxDQUFDOEcsWUFBWTtJQUMxQlAsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZqRyxJQUFJLEVBQUV1RixjQUFjO0lBQ3BCZ0gsUUFBUSxFQUFFLElBQUFDLGtCQUFXLEVBQUNqSCxjQUFjO0VEektwQyxDQzBLRDtFQUNELElBQU1rSCxlQUFlLEdBQUdqRyxZQUFZLEdBQUcsT0FBTyxHQUFHLGFBQWE7RUFDOUQsSUFBTWtHLHFCQUFxQixHQUN6QjdMLFFBQVEsSUFDUjJGLFlBQVksSUFDWjFGLGdCQUFnQixLQUFLMkQsU0FBUztFQUM5QjtFQUNBO0VBQ0E7RUFDQSxDQUFDaEIsV0FDRjtFQUNELElBQU1rSixnQkFBZ0IsR0FBRzdJLE9BQU8sQ0FDOUIsU0FBUyxFQUNULElBQUE4SSxtQkFBTyxFQUNMOUksT0FBTyxZQUFBOEUsTUFBQSxDQUFZckQsY0FBYyxDQUFFLENBQUMsRUFDcEN6QixPQUFPLFlBQUE4RSxNQUFBLENBQVl4SSxPQUFPLENBQUUsQ0FBQyxFQUM3QmlILFNBQVMsSUFBSXZELE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFDcEM0SSxxQkFBcUIsSUFBSTVJLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxFQUMzRDBDLFlBQVksR0FBRzFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHQSxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFDekU1RCxNQUFNLEtBQUssU0FBUyxJQUFJNEQsT0FBTyxZQUFBOEUsTUFBQSxDQUFZMUksTUFBTSxDQUFFLENBQUMsRUFDcERJLFFBQVEsSUFBSXdELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUN2Q3JELFFBQVEsSUFBSSxDQUFDSCxRQUFRLElBQUl3RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FDckQsQ0FDRjtFQUNELElBQU0rSSxRQUFRLEdBQUd0SCxjQUFjLEtBQUssT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFO0VBQ3JELElBQU11SCxjQUFjLEdBQ2xCOUwsVUFBVSxJQUFJcUcsU0FBUyxJQUFJaEMsV0FBVyxLQUFLLElBQUksTUFBQXVELE1BQUEsQ0FDeEN0RSxjQUFjLE9BQUFzRSxNQUFBLENBQUl2RCxXQUFXLElBQ2hDWixTQUFTO0VBQ2YsSUFBTXNJLHNCQUFzQixHQUFHdk4sY0FBYyxLQUFBLElBQUEsSUFBZEEsY0FBYyxLQUFBLEtBQUEsQ0FBQSxHQUFkQSxjQUFjLEdBQUtnQyxLQUFLLEdBQUcyQyxPQUFPLEdBQUdNLFNBQVU7RUFDOUUsSUFBTXVJLGNBQWMsR0FBRyxDQUNyQnJMLFdBQVcsR0FBR3lDLGFBQWEsR0FBRyxJQUFJLEVBQ2xDeEMsUUFBUSxHQUFHeUMsVUFBVSxHQUFHLElBQUksQ0FDN0IsQ0FBQzRJLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLENBQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTFJLFNBQVM7RUFFeEMsT0FDRSxJQUFBMkksZ0JBQUEsRUFBQ0MsNEJBQWdCLEVBQUE7SUFDZnZKLE9BQU8sRUFBRUEsT0FBTztJQUNoQjdFLFNBQVMsRUFBRUEsU0FBUztJQUNwQmUsSUFBSSxFQUFFdUYsY0FBYztJQUNwQm5GLE9BQU8sRUFBRUEsT0FBTztJQUNoQkYsTUFBTSxFQUFFQSxNQUFNO0lBQ2RJLFFBQVEsRUFBRUEsUUFBUTtJQUNsQkcsUUFBUSxFQUFFQSxRQUFRO0lBQ2xCRSxPQUFPLEVBQUVBLE9BQU87SUFDaEJhLEtBQUssRUFBRUEsS0FBSztJQUNaQyxjQUFjLEVBQUVBLGNBQWM7SUFDOUJDLElBQUksRUFBRUEsSUFBSTtJQUNWQyxXQUFXLEVBQUVBLFdBQVc7SUFDeEJDLFFBQVEsRUFBRUEsUUFBUTtJQUNsQkUsUUFBUSxFQUFFQSxRQUFRO0lBQ2xCcUMsT0FBTyxFQUFFQSxPQUFPO0lBQ2hCQyxhQUFhLEVBQUVBLGFBQWE7SUFDNUJDLFVBQVUsRUFBRUEsVUFBVTtJQUFBaUosUUFBQSxFQUFBLENBRXRCLElBQUFGLGdCQUFBLEVBQUEsUUFBQSxFQUFBOU8sTUFBQSxDQUFBaVAsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNNekUsaUJBQWlCLENBQUM7TUFDcEJwRixHQUFHLEVBQUVxRSxZQUFZO01BQ2pCMUksRUFBRSxFQUFFNkUsU0FBUztNQUNic0osSUFBSSxFQUFFLFFBQVE7TUFDZGxPLElBQUksRUFBSkEsSUFBSTtNQUNKZ0IsUUFBUSxFQUFSQSxRQUFRO01BQ1IsZUFBZSxFQUFFRyxRQUFRLElBQUlnRSxTQUFTO01BQ3RDeEYsU0FBUyxFQUFFME4sZ0JBQWdCO01BQzNCYyxTQUFTLEVBQUUzQyxvQkFBb0I7TUFDL0J6SCxNQUFNLEVBQUUyRyxpQkFBaUI7TUFDekIsWUFBWSxFQUFFekssU0FBUztNQUN2QixpQkFBaUIsRUFBRXdOLHNCQUFzQjtNQUN6QyxrQkFBa0IsRUFBRUM7SUQ5TWxCLENDK01ILENBQUMsRUFBQTtNQUFBTSxRQUFBLEVBQUEsQ0FFRixJQUFBRixnQkFBQSxFQUFBLE1BQUEsRUFBQTtRQUFNbk8sU0FBUyxFQUFFNkUsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUFBd0osUUFBQSxFQUFBLENBQ2hDdkwsTUFBTSxJQUFJLElBQUEyTCxlQUFBLEVBQUEsTUFBQSxFQUFBO1VBQU16TyxTQUFTLEVBQUU2RSxPQUFPLENBQUMsUUFBUSxDQUFDO1VBQUF3SixRQUFBLEVBQUd2TDtRQUFNLENBQUEsQ0FBUSxFQUM5RCxJQUFBMkwsZUFBQSxFQUFBLE1BQUEsRUFBQTtVQUNFek8sU0FBUyxFQUFFNkUsT0FBTyxDQUNoQjJJLGVBQWUsRUFDZixJQUFBRyxtQkFBTyxFQUNMOUksT0FBTyxJQUFBOEUsTUFBQSxDQUFJNkQsZUFBZSxPQUFBN0QsTUFBQSxDQUFJckQsY0FBYyxDQUFFLENBQUMsRUFDL0NtSCxxQkFBcUIsSUFBSTVJLE9BQU8sSUFBQThFLE1BQUEsQ0FBSTZELGVBQWUsY0FBVyxDQUFDLEVBQy9Ebk0sUUFBUSxJQUFJd0QsT0FBTyxJQUFBOEUsTUFBQSxDQUFJNkQsZUFBZSxjQUFXLENBQUMsQ0FDbkQsQ0FDRjtVQUFBYSxRQUFBLEVBRUQsSUFBQUksZUFBQSxFQUFDQyw4QkFBa0IsRUFBQTtZQUNqQjdKLE9BQU8sRUFBRUEsT0FBTztZQUNoQjBDLFlBQVksRUFBRUEsWUFBWTtZQUMxQjNGLFFBQVEsRUFBRUEsUUFBUTtZQUNsQm5CLFdBQVcsRUFBRUEsV0FBVztZQUN4QitELFdBQVcsRUFBRUEsV0FBVztZQUN4QjZJLGVBQWUsRUFBRUEsZUFBZTtZQUNoQ3JHLGVBQWUsRUFBRUEsZUFBZTtZQUNoQ25GLGdCQUFnQixFQUFFQSxnQkFBZ0I7WUFDbEM4TSxRQUFRLEVBQUVuRCx5QkFBeUI7WUFDbkNvRCxhQUFhLEVBQUVuQyxvQkFBb0I7WUFDbkNvQyxpQkFBaUIsRUFBRXRDO1VBQXdCLENBQUE7UUFDM0MsQ0FBQSxDQUNHO01BQUEsQ0FBQSxDQUNGLEVBQ1AsSUFBQWtDLGVBQUEsRUFBQSxNQUFBLEVBQUE7UUFBTXpPLFNBQVMsRUFBRTZFLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFBQXdKLFFBQUEsRUFFNUIzTSxPQUFPLEdBQ0YsSUFBQStNLGVBQUEsRUFBQ0ssZ0JBQU8sRUFBQTtVQUFDL04sSUFBSSxFQUFFNk0sUUFBUTtVQUFFbUIsV0FBVyxFQUFFO1FBQUMsQ0FBQSxDQUFJLEdBQzVDdk4sUUFBUSxHQUNMLElBQUksR0FDSixJQUFBaU4sZUFBQSxFQUFDTyxZQUFLLEVBQUE7VUFBRTNPLElBQUksRUFBRStILFNBQVMsR0FBRyxXQUFXLEdBQUcsYUFBYTtVQUFFckgsSUFBSSxFQUFFNk0sUUFBUTtVQUFHcUIsS0FBSyxFQUFDO1FBQWMsQ0FBQTtNQUFFLENBQUEsQ0FFbEc7SUFBQSxDQUFBLENBQUEsQ0FDQSxFQUVSckcsU0FBUyxJQUFJaEUsV0FBVyxJQUFLLFlBQUs7TUFDakMsSUFBTXNLLFNBQVMsR0FDYixJQUFBVCxlQUFBLEVBQUNVLDJCQUFvQixFQUFBO1FBQUMxRyxPQUFPLEVBQUVBLE9BQU87UUFBRTJHLEtBQUssRUFBRSxLQUFLO1FBQUVDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFBRUMsV0FBVyxFQUFFLEtBQUs7UUFBQWpCLFFBQUEsRUFDeEYsSUFBQUYsZ0JBQUEsRUFBQSxLQUFBLEVBQUE5TyxNQUFBLENBQUFpUCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ014RSxnQkFBZ0IsQ0FBQztVQUNuQnJGLEdBQUcsRUFBRXNFLFdBQVc7VUFDaEIvSSxTQUFTLEVBQUUsSUFBQTJOLG1CQUFPLEVBQUM5SSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUVuQixjQUFjLENBQUM7VUFDcER2RCxLQUFLLEVBQUFkLE1BQUEsQ0FBQWlQLE1BQUEsQ0FBQWpQLE1BQUEsQ0FBQWlQLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTzVGLGNBQWMsQ0FBQSxFQUFLQyxnQkFBZ0I7UURyUDNDLENDc1BMLENBQUMsRUFBQTtVQUFBMEYsUUFBQSxFQUFBLENBRUR0TSxVQUFVLElBQ1QsSUFBQTBNLGVBQUEsRUFBQ2MsK0JBQW1CLEVBQUE7WUFDbEI5SyxHQUFHLEVBQUU2RixpQkFBaUI7WUFDdEJ6RixPQUFPLEVBQUVBLE9BQU87WUFDaEI7WUFDQTlELElBQUksRUFBQyxPQUFPO1lBQ1pOLFdBQVcsRUFBRXdCLGlCQUFpQjtZQUM5QnJCLEtBQUssRUFBRW1GLGdCQUFnQjtZQUN2QnlKLGdCQUFnQixFQUFFM0IsY0FBYztZQUNoQ3pKLE1BQU0sRUFBRXNJLGdCQUFnQjtZQUN4QnpJLFFBQVEsRUFBRTBJLGtCQUFrQjtZQUM1QjZCLFNBQVMsRUFBRXRCO1VBQW1CLENBQUEsQ0FFakMsRUFDRCxJQUFBaUIsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7WUFBS25PLFNBQVMsRUFBRTZFLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFBQXdKLFFBQUEsRUFBQSxDQUNsQ3BMLFdBQVcsSUFBSSxJQUFJLElBQ2xCLElBQUF3TCxlQUFBLEVBQUEsS0FBQSxFQUFBO2NBQUt6TyxTQUFTLEVBQUU2RSxPQUFPLENBQUMsY0FBYyxDQUFDO2NBQUF3SixRQUFBLEVBQUdwTDtZQUFXLENBQUEsQ0FDdEQsRUFDQThELGtCQUFrQixDQUFDSSxNQUFNLEtBQUssQ0FBQyxHQUM5QixJQUFBc0gsZUFBQSxFQUFBLEtBQUEsRUFBQTtjQUFLek8sU0FBUyxFQUFFNkUsT0FBTyxDQUFDLE9BQU8sQ0FBQztjQUFBd0osUUFBQSxFQUM5QixJQUFBSSxlQUFBLEVBQUNnQiwwQkFBYyxFQUFBO2dCQUFDMU8sSUFBSSxFQUFFMk8sNEJBQWlCLENBQUNDLEtBQUssQ0FBQzVPLElBQUk7Z0JBQUVrTyxLQUFLLEVBQUVTLDRCQUFpQixDQUFDQyxLQUFLLENBQUNWLEtBQUs7Z0JBQUFaLFFBQUEsRUFBR3JMO2NBQVksQ0FBQTtZQUFrQixDQUFBLENBQ3JILEdBRUwsWUFBSztjQUNKLElBQUk0TSxTQUFTLEdBQUcsQ0FBQztjQUVqQixPQUFPL0ksbUJBQW1CLENBQUNnSixHQUFHLENBQUMsVUFBQ0MsS0FBSztnQkFBQSxPQUNuQyxJQUFBM0IsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7a0JBQXFCbk8sU0FBUyxFQUFFNkUsT0FBTyxDQUFDLE9BQU8sQ0FBQztrQkFBQXdKLFFBQUEsRUFBQSxDQUM3Q3lCLEtBQUssQ0FBQ3ZOLEtBQUssSUFDVixJQUFBa00sZUFBQSxFQUFBLEtBQUEsRUFBQTtvQkFBS3pPLFNBQVMsRUFBRTZFLE9BQU8sQ0FBQyxhQUFhLEVBQUVqQixtQkFBbUIsQ0FBQztvQkFBQXlLLFFBQUEsRUFDekQsSUFBQUksZUFBQSxFQUFDc0IsMkJBQWUsRUFBQTtzQkFBQ2hQLElBQUksRUFBRTJPLDRCQUFpQixDQUFDTSxVQUFVLENBQUNqUCxJQUFJO3NCQUFFa1AsTUFBTSxFQUFBLElBQUE7c0JBQUE1QixRQUFBLEVBQUV5QixLQUFLLENBQUN2TjtvQkFBSyxDQUFBO2tCQUFtQixDQUFBLENBRW5HLEVBQ0F1TixLQUFLLENBQUNuUCxPQUFPLENBQUNrUCxHQUFHLENBQUMsVUFBQ3ZJLE1BQU0sRUFBSTtvQkFDNUIsSUFBTTRJLGVBQWUsR0FBR04sU0FBUztvQkFDakNBLFNBQVMsSUFBSSxDQUFDO29CQUVkLElBQU1PLFFBQVEsR0FBRyxJQUFBQyx1QkFBZ0IsRUFBQ3pLLFVBQVUsRUFBRS9ELFFBQVEsRUFBRTBGLE1BQU0sQ0FBQzFHLEtBQUssQ0FBQztvQkFDckUsSUFBTXlQLE1BQU0sR0FBR2pLLFdBQVcsS0FBSzhKLGVBQWU7b0JBQzlDLElBQU1JLFVBQVUsR0FBMkI7c0JBQ3pDRCxNQUFNLEVBQU5BLE1BQU07c0JBQ05oUCxRQUFRLEVBQUUsQ0FBQyxDQUFDaUcsTUFBTSxDQUFDakcsUUFBUTtzQkFDM0JpTCxLQUFLLEVBQUU0RCxlQUFlO3NCQUN0QnRPLFFBQVEsRUFBUkEsUUFBUTtzQkFDUnVCLElBQUksRUFBRWlGLFNBQVM7c0JBQ2YrSCxRQUFRLEVBQVJBLFFBQVE7c0JBQ1I3QyxRQUFRLEVBQUUsSUFBQUMsa0JBQVcsRUFBQ2pILGNBQWM7b0JEclJaLENDc1J6QjtvQkFFRG9CLGNBQWMsQ0FBQ08sT0FBTyxDQUFDaUksZUFBZSxDQUFDLEdBQUcsSUFBQUssd0JBQWlCLEVBQUNqSixNQUFNLENBQUM7b0JBRW5FLE9BQ0UsSUFBQW1ILGVBQUEsRUFBQSxRQUFBLEVBQUFwUCxNQUFBLENBQUFpUCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBRU12RSxZQUFZLENBQUM7c0JBQ2Z0RixHQUFHLFdBQUhBLEdBQUdBLENBQUN1RCxJQUE4QixFQUFBO3dCQUNoQ1IsT0FBTyxDQUFDUyxPQUFPLENBQUNpSSxlQUFlLENBQUMsR0FBR2xJLElBQUk7c0JBQ3pDLENBQUM7c0JBQ0Q1SCxFQUFFLEtBQUF1SixNQUFBLENBQUt0RSxjQUFjLE9BQUFzRSxNQUFBLENBQUl1RyxlQUFlLENBQUU7c0JBQzFDM0IsSUFBSSxFQUFFLFFBQVE7c0JBQ2RpQyxJQUFJLEVBQUUsUUFBUTtzQkFDZHhRLFNBQVMsRUFBRTZFLE9BQU8sQ0FDaEIsUUFBUSxFQUNSLElBQUE4SSxtQkFBTyxFQUNMMEMsTUFBTSxJQUFJeEwsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUNsQ3NMLFFBQVEsSUFBSXRMLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUN0Q3lDLE1BQU0sQ0FBQ2pHLFFBQVEsSUFBSXdELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUM3Q2xCLGVBQWUsQ0FDaEIsQ0FDRjtzQkFDRHRDLFFBQVEsRUFBRWlHLE1BQU0sQ0FBQ2pHLFFBQVE7c0JBQ3pCLGVBQWUsRUFBRThPLFFBQVE7c0JBQ3pCTSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBR2hHLEtBQXlDLEVBQUk7d0JBQ3JEQSxLQUFLLENBQUN5QixjQUFjLENBQUEsQ0FBRTt3QkFDdEJkLGtCQUFrQixDQUFDOUQsTUFBTSxDQUFDO3NCQUM1QixDQUFDO3NCQUNEb0osWUFBWSxFQUFFLFNBQWRBLFlBQVlBLENBQUE7d0JBQUEsT0FBUXJFLG9CQUFvQixDQUFDNkQsZUFBZSxDQUFDO3NCQUFBO3NCQUN6RDlMLE1BQU0sRUFBRTRHO29CRGxTWSxDQ21TckIsQ0FBQyxFQUFBO3NCQUFBcUQsUUFBQSxFQUVEL0osWUFBWSxHQUNYQSxZQUFZLENBQUNnRCxNQUFNLEVBQUVnSixVQUFVLENBQUMsR0FFaEMsSUFBQTdCLGVBQUEsRUFBQ2tDLCtCQUFtQixFQUFBO3dCQUNsQjlMLE9BQU8sRUFBRUEsT0FBTzt3QkFDaEJ5QyxNQUFNLEVBQUVBLE1BQU07d0JBQ2Q2SSxRQUFRLEVBQUVBLFFBQVE7d0JBQ2xCcFAsSUFBSSxFQUFFdUYsY0FBYzt3QkFDcEJzSyxPQUFPLEVBQUVyTSxtQkFBbUIsS0FBQSxJQUFBLElBQW5CQSxtQkFBbUIsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBbkJBLG1CQUFtQixDQUFHK0MsTUFBTSxFQUFFZ0osVUFBVTtzQkFBQyxDQUFBO29CQUVyRCxDQUFBLENBQUEsS0FBQTNHLE1BQUEsQ0FyQ09tRyxLQUFLLENBQUNoRSxHQUFHLE9BQUFuQyxNQUFBLENBQUlyQyxNQUFNLENBQUMxRyxLQUFLLENBQUUsQ0FzQzVCO2tCQUViLENBQUMsQ0FBQztnQkFBQSxDQUFBLEVBbEVNa1AsS0FBSyxDQUFDaEUsR0FBRyxDQW1FYjtjQUFBLENBQ1AsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNIO1VBQUEsQ0FBQSxDQUNHLEVBQ0w1SSxXQUFXLElBQUksSUFBSSxJQUNsQixJQUFBdUwsZUFBQSxFQUFBLEtBQUEsRUFBQTtZQUFLek8sU0FBUyxFQUFFNkUsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUFBd0osUUFBQSxFQUFHbkw7VUFBVyxDQUFBLENBQ3REO1FBQUEsQ0FBQSxDQUFBO01BQ0csQ0FBQSxDQUVUO01BRUQsT0FBT0ssTUFBTSxHQUFHLElBQUFrTCxlQUFBLEVBQUNvQyxxQkFBYyxFQUFBO1FBQUF4QyxRQUFBLEVBQUVhO01BQVMsQ0FBQSxDQUFrQixHQUFHQSxTQUFTO0lBQzFFLENBQUMsQ0FBQyxDQUFFO0VBQUEsQ0FBQSxDQUNhO0FBRXZCLENBQUM7QUFFRHpQLE1BQU0sQ0FBQ3FSLFdBQVcsR0FBRyxRQUFRO0FBQUMsSUFBQUMsUUFBQSxHQUFBclIsT0FBQSwyQkFFZixJQUFBc1IsWUFBSSxFQUFDdlIsTUFBTSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdQb3J0YWwsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uL0NvbmZpZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHVzZUZvcm1Db250cm9sU2l6ZSB9IGZyb20gJy4uL0Zvcm1MYXlvdXQvY29udGV4dCc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMsIGRlZmF1bHQgYXMgcm9vdENsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCBTZWxlY3RGaWVsZFNoZWxsIGZyb20gJy4vU2VsZWN0RmllbGRTaGVsbCc7XG5pbXBvcnQgU2VsZWN0T3B0aW9uQ29udGVudCBmcm9tICcuL1NlbGVjdE9wdGlvbkNvbnRlbnQnO1xuaW1wb3J0IFNlbGVjdFNlYXJjaENvbnRyb2wgZnJvbSAnLi9TZWxlY3RTZWFyY2hDb250cm9sJztcbmltcG9ydCBTZWxlY3RWYWx1ZUNvbnRlbnQgZnJvbSAnLi9TZWxlY3RWYWx1ZUNvbnRlbnQnO1xuaW1wb3J0IHsgdXNlU2VsZWN0U2hlbGwgfSBmcm9tICcuL3VzZVNlbGVjdFNoZWxsJztcbmltcG9ydCB7IEtFWUJPQVJELCBTRUxFQ1RfVFlQT0dSQVBIWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RPcHRpb25UZXh0LCBmaWx0ZXJPcHRpb25Hcm91cHMsIGZsYXR0ZW5PcHRpb25Hcm91cHMsIGdldE11bHRpcGxlVmFsdWUsIGdldEZvbnRTaXplLCBnZXRPcHRpb25zQnlWYWx1ZXMsIGdldFNlbGVjdGVkT3B0aW9ucywgaXNPcHRpb25TZWxlY3RlZCwgbm9ybWFsaXplU2l6ZSwgbm9ybWFsaXplT3B0aW9uR3JvdXBzLCByZW1vdmVNdWx0aXBsZVZhbHVlLCB0b2dnbGVNdWx0aXBsZVZhbHVlLCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IERFRkFVTFRfTUFYX0hFSUdIVCA9IDMyMDtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbG9jYWxlID0gdXNlTG9jYWxlKCdTZWxlY3QnKTtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9IGxvY2FsZS5wbGFjZWhvbGRlciwgb3B0aW9ucyA9IFtdLCB2YWx1ZSwgZGVmYXVsdFZhbHVlLCBzaXplOiBzaXplUHJvcCwgc3RhdHVzID0gJ2RlZmF1bHQnLCB2YXJpYW50ID0gJ2ZpbGwnLCBkaXNhYmxlZDogZGlzYWJsZWRQcm9wID0gZmFsc2UsIHJlYWRPbmx5ID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbXVsdGlwbGUgPSBmYWxzZSwgbWF4VmlzaWJsZVZhbHVlcywgc2VhcmNoYWJsZSA9IGZhbHNlLCBzZWFyY2hQbGFjZWhvbGRlciA9IGxvY2FsZS5zZWFyY2hQbGFjZWhvbGRlciwgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBmaWx0ZXJJbnB1dEF1dG9Gb2N1cyA9IHRydWUsIGxhYmVsLCBsYWJlbENsYXNzTmFtZSwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IHRydWUsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gbG9jYWxlLmVtcHR5Q29udGVudCwgcGFuZWxIZWFkZXIsIHBhbmVsRm9vdGVyLCBvcGVuLCBkZWZhdWx0T3BlbiA9IGZhbHNlLCBwb3J0YWwgPSB0cnVlLCBhbGxvd0Rlc2VsZWN0ID0gZmFsc2UsIHBhbmVsQ2xhc3NOYW1lLCBvcHRpb25DbGFzc05hbWUsIGdyb3VwTGFiZWxDbGFzc05hbWUsIGxpc3RNYXhIZWlnaHQgPSBERUZBVUxUX01BWF9IRUlHSFQsIG9mZnNldCwgYW5pbWF0aW9uLCBvbkNoYW5nZSwgb25PcGVuQ2hhbmdlLCBvblNlYXJjaENoYW5nZSwgb25CbHVyLCBmaWx0ZXJPcHRpb24sIHJlbmRlck9wdGlvbiwgcmVuZGVyT3B0aW9uQ29udGVudCwgcmVuZGVyVmFsdWUsIHJlZiwgfSA9IHByb3BzO1xuICAgIC8vIEJhcmUtY29udHJvbCBzaXplIGRlZmF1bHQ6IGFuIGV4cGxpY2l0IGBzaXplYCB3aW5zOyBpbnNpZGUgYSBGb3JtTGF5b3V0XG4gICAgLy8gdGhlIHZhcmlhbnQncyBjb250cm9sU2l6ZSBhcHBsaWVzOyBlbHNld2hlcmUgJ2xhcmdlJy5cbiAgICBjb25zdCBjb250ZXh0U2l6ZSA9IHVzZUZvcm1Db250cm9sU2l6ZSgpO1xuICAgIGNvbnN0IHNpemUgPSAoX2EgPSBzaXplUHJvcCAhPT0gbnVsbCAmJiBzaXplUHJvcCAhPT0gdm9pZCAwID8gc2l6ZVByb3AgOiBjb250ZXh0U2l6ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2xhcmdlJztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGludGVyYWN0aXZlID0gIWRpc2FibGVkICYmICFyZWFkT25seTtcbiAgICBjb25zdCBjbGFzc2VzID0gcm9vdENsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9IGlkICE9PSBudWxsICYmIGlkICE9PSB2b2lkIDAgPyBpZCA6IGF1dG9JZDtcbiAgICBjb25zdCBsYWJlbElkID0gdXNlSWQoKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbklkID0gdXNlSWQoKTtcbiAgICBjb25zdCBmZWVkYmFja0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBvcHRpb25JZFByZWZpeCA9IHVzZUlkKCk7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkKSwgdmFsdWUpO1xuICAgIGNvbnN0IFtpbm5lclNlYXJjaFZhbHVlLCBzZXRJbm5lclNlYXJjaFZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U2VhcmNoVmFsdWUsIHNlYXJjaFZhbHVlKTtcbiAgICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0gbm9ybWFsaXplU2l6ZShzaXplKTtcbiAgICBjb25zdCBhbGxPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSwgW29wdGlvbnNdKTtcbiAgICBjb25zdCBhbGxGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gKHNlYXJjaGFibGVcbiAgICAgICAgPyBmaWx0ZXJPcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzLCBpbm5lclNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pXG4gICAgICAgIDogYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3VwcywgZmlsdGVyT3B0aW9uLCBpbm5lclNlYXJjaFZhbHVlLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3QgdmlzaWJsZUZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKHZpc2libGVPcHRpb25Hcm91cHMpLCBbdmlzaWJsZU9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2VsZWN0ZWRPcHRpb25zKGFsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZSksIFthbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGVdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRjaGVkSW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJbmRleCA+PSAwID8gbWF0Y2hlZEluZGV4IDogbnVsbDtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb25zLCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsaXN0UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBsaXN0Q29udGVudFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgZmxvYXRpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyUmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB7IGlzT3BlbjogaW5uZXJPcGVuLCBzZXRPcGVuOiBoYW5kbGVPcGVuQ2hhbmdlLCByZWZzLCBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgdHJhbnNpdGlvblN0eWxlcywgaXNNb3VudGVkLCBiYXNlSW50ZXJhY3Rpb25zLCB9ID0gdXNlU2VsZWN0U2hlbGwoe1xuICAgICAgICBvcGVuLFxuICAgICAgICBkZWZhdWx0T3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIGxpc3RNYXhIZWlnaHQsXG4gICAgICAgIGFuaW1hdGlvbixcbiAgICAgICAgb2Zmc2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgdmlydHVhbDogc2VhcmNoYWJsZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICAuLi5iYXNlSW50ZXJhY3Rpb25zLFxuICAgICAgICBsaXN0TmF2aWdhdGlvbixcbiAgICAgICAgdHlwZWFoZWFkLFxuICAgIF0pO1xuICAgIGNvbnN0IGZpcnN0RW5hYmxlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpLCBbdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCAmJiB2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0gJiYgIXZpc2libGVGbGF0T3B0aW9uc1twcmV2XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RFbmFibGVkSW5kZXggPj0gMCA/IGZpcnN0RW5hYmxlZEluZGV4IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZpcnN0RW5hYmxlZEluZGV4LCBpbm5lck9wZW4sIHNlbGVjdGVkSW5kZXgsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4gfHwgYWN0aXZlSW5kZXggPT09IG51bGwgfHwgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFthY3RpdmVJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSwgW2FjdGl2ZUluZGV4LCBpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQgPSBsaXN0UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnQgPSBsaXN0Q29udGVudFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoXSk7XG4gICAgY29uc3Qgc2V0U2VhcmNoSW5wdXRSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZSAmJiBpbm5lck9wZW4gJiYgZmlsdGVySW5wdXRBdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIG5vZGUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgbm90aWZ5Qmx1cklmT3V0c2lkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHJlbGF0ZWRUYXJnZXQsIGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICBjb25zdCB3aXRoaW5UcmlnZ2VyID0gISEobmV4dFRhcmdldCAmJiAoKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgY29uc3Qgd2l0aGluRmxvYXRpbmcgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2IgPSBmbG9hdGluZ1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgaWYgKCF3aXRoaW5UcmlnZ2VyICYmICF3aXRoaW5GbG9hdGluZykge1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3B0aW9uQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgbmV4dE9wdGlvbikgPT4ge1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb24sIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0b2dnbGVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dEZXNlbGVjdCAmJiBpbm5lclZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdENoYW5nZShvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgKF9iID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFnZXRNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUpLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHJlbW92ZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uVmFsdWUpO1xuICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuU1BBQ0UpIHtcbiAgICAgICAgICAgIGlmIChpbm5lck9wZW4gJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKCFpbm5lck9wZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1Nb3VzZUVudGVyID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIF9ldmVudCkgPT4ge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uU2VhcmNoQ2hhbmdlID09PSBudWxsIHx8IG9uU2VhcmNoQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlYXJjaENoYW5nZShuZXh0VmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmRFbmFibGVkSW5kZXggPSB1c2VFdmVudENhbGxiYWNrKChjdXJyZW50LCBkaXJlY3Rpb24pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydCA9IGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwID8gY3VycmVudCA6IChkaXJlY3Rpb24gPT09IDEgPyAtMSA6IGxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAxOyBzdGVwIDw9IGxlbmd0aDsgc3RlcCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSAoKHN0YXJ0ICsgZGlyZWN0aW9uICogc3RlcCkgJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2NhbmRpZGF0ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KG5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIC0xKTtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIHBsYWNlaG9sZGVyOiAhaGFzU2VsZWN0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIHNpemU6IG5vcm1hbGl6ZWRTaXplLFxuICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgIH07XG4gICAgY29uc3QgdmFsdWVMYWJlbENsYXNzID0gaGFzU2VsZWN0aW9uID8gJ3ZhbHVlJyA6ICdwbGFjZWhvbGRlcic7XG4gICAgY29uc3QgaXNNdWx0aXBsZVZhbHVlRmlsbGVkID0gKG11bHRpcGxlICYmXG4gICAgICAgIGhhc1NlbGVjdGlvbiAmJlxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgLy8gQSBjdXN0b20gYHJlbmRlclZhbHVlYCBwcm9kdWNlcyBpdHMgb3duIHNpbmdsZS1saW5lIHN1bW1hcnksIHNvIHRoZVxuICAgICAgICAvLyBtdWx0aS12YWx1ZSBjaGlwIGxheW91dCAoaGVpZ2h0OmF1dG8gKyB2ZXJ0aWNhbCBwYWRkaW5nICsgZmxleC13cmFwKVxuICAgICAgICAvLyBtdXN0IG5vdCBraWNrIGluIGFuZCBpbmZsYXRlIHRoZSB0cmlnZ2VyIGhlaWdodC5cbiAgICAgICAgIXJlbmRlclZhbHVlKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpLCByZWFkT25seSAmJiAhZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1yZWFkb25seScpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ2xhcmdlJyA/IDIwIDogMTY7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uSWQgPSBzZWFyY2hhYmxlICYmIGlubmVyT3BlbiAmJiBhY3RpdmVJbmRleCAhPT0gbnVsbFxuICAgICAgICA/IGAke29wdGlvbklkUHJlZml4fS0ke2FjdGl2ZUluZGV4fWBcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgaW5mbzogaW5mbywgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBmZWVkYmFjazogZmVlZGJhY2ssIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWxJZDogbGFiZWxJZCwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCwgZmVlZGJhY2tJZDogZmVlZGJhY2tJZCwgY2hpbGRyZW46IFtfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRSZWZlcmVuY2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgcmVmOiBzZXRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgaWQ6IHRyaWdnZXJJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdhcmlhLXJlYWRvbmx5JzogcmVhZE9ubHkgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHJpZ2dlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBvbktleURvd246IGhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlVHJpZ2dlckJsdXIsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnksXG4gICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkZXNjcmliZWRCeUlkcyxcbiAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModmFsdWVMYWJlbENsYXNzLCBqb2luQ2xzKGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS0ke25vcm1hbGl6ZWRTaXplfWApLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LW11bHRpcGxlYCksIGRpc2FibGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1kaXNhYmxlZGApKSksIGNoaWxkcmVuOiBfanN4KFNlbGVjdFZhbHVlQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBoYXNTZWxlY3Rpb246IGhhc1NlbGVjdGlvbiwgbXVsdGlwbGU6IG11bHRpcGxlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlbmRlclZhbHVlOiByZW5kZXJWYWx1ZSwgcmVuZGVyVmFsdWVNZXRhOiByZW5kZXJWYWx1ZU1ldGEsIHNlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRPcHRpb25zLCBtYXhWaXNpYmxlVmFsdWVzOiBtYXhWaXNpYmxlVmFsdWVzLCBvblJlbW92ZTogaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSwgb25SZW1vdmVDbGljazogaGFuZGxlVGFnUmVtb3ZlQ2xpY2ssIG9uUmVtb3ZlTW91c2VEb3duOiBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gfSkgfSldIH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2pzeChTcGlubmVyLCB7IHNpemU6IGljb25TaXplLCBzdHJva2VXaWR0aDogMiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiBpbm5lck9wZW4gPyAnY2hldnJvblVwJyA6ICdjaGV2cm9uRG93bicsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KV0gfSkpLCBpc01vdW50ZWQgJiYgaW50ZXJhY3RpdmUgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNldFNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZT17bm9ybWFsaXplZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLCB2YWx1ZTogaW5uZXJTZWFyY2hWYWx1ZSwgYWN0aXZlRGVzY2VuZGFudDogYWN0aXZlT3B0aW9uSWQsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IFtwYW5lbEhlYWRlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IHBhbmVsSGVhZGVyIH0pKSwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcsIGdyb3VwTGFiZWxDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpc09wdGlvblNlbGVjdGVkKGlubmVyVmFsdWUsIG11bHRpcGxlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBvcHRpb25GbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGAke29wdGlvbklkUHJlZml4fS0ke29wdGlvbkZsYXRJbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpLCBvcHRpb25DbGFzc05hbWUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVPcHRpb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiByZW5kZXJPcHRpb24gPyAocmVuZGVyT3B0aW9uKG9wdGlvbiwgb3B0aW9uTWV0YSkpIDogKF9qc3goU2VsZWN0T3B0aW9uQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBvcHRpb246IG9wdGlvbiwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgY29udGVudDogcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gbnVsbCB8fCByZW5kZXJPcHRpb25Db250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZW5kZXJPcHRpb25Db250ZW50KG9wdGlvbiwgb3B0aW9uTWV0YSkgfSkpIH0pLCBgJHtncm91cC5rZXl9LSR7b3B0aW9uLnZhbHVlfWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXSB9LCBncm91cC5rZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKV0gfSksIHBhbmVsRm9vdGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWZvb3RlcicpLCBjaGlsZHJlbjogcGFuZWxGb290ZXIgfSkpXSB9KSkgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3J0YWwgPyBfanN4KEZsb2F0aW5nUG9ydGFsLCB7IGNoaWxkcmVuOiBwYW5lbE5vZGUgfSkgOiBwYW5lbE5vZGU7XG4gICAgICAgICAgICB9KSgpXSB9KSk7XG59O1xuU2VsZWN0LmRpc3BsYXlOYW1lID0gJ1NlbGVjdCc7XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
607
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0MiIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX0NvbmZpZ1Byb3ZpZGVyIiwiX2NvbnRleHQiLCJfSWNvbnMiLCJfU3Bpbm5lciIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9TZWxlY3RGaWVsZFNoZWxsIiwiX1NlbGVjdE9wdGlvbkNvbnRlbnQiLCJfU2VsZWN0U2VhcmNoQ29udHJvbCIsIl9TZWxlY3RWYWx1ZUNvbnRlbnQiLCJfdXNlU2VsZWN0U2hlbGwyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwiZXhwb3J0cyIsInByb3BzIiwiX2EiLCJsb2NhbGUiLCJ1c2VMb2NhbGUiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwic2l6ZVByb3AiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwiX3Byb3BzJGZpbHRlcklucHV0QXV0IiwiZmlsdGVySW5wdXRBdXRvRm9jdXMiLCJsYWJlbCIsImxhYmVsQ2xhc3NOYW1lIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEhlYWRlciIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiZ3JvdXBMYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsIm9mZnNldCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Db250ZW50IiwicmVuZGVyVmFsdWUiLCJyZWYiLCJjb250ZXh0U2l6ZSIsInVzZUZvcm1Db250cm9sU2l6ZSIsImludGVyYWN0aXZlIiwiY2xhc3NlcyIsInJvb3RDbGFzc25hbWVzIiwiYXV0b0lkIiwidXNlSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJvcHRpb25JZFByZWZpeCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwibm9ybWFsaXplU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsInVzZU1lbW8iLCJub3JtYWxpemVPcHRpb25Hcm91cHMiLCJhbGxGbGF0T3B0aW9ucyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwiZmlsdGVyT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwiZ2V0U2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRWYWx1ZXMiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJTZXQiLCJzZWxlY3RlZEluZGV4IiwibGVuZ3RoIiwibWF0Y2hlZEluZGV4IiwiZmluZEluZGV4Iiwib3B0aW9uIiwiaGFzU2VsZWN0aW9uIiwibGlzdFJlZiIsInVzZVJlZiIsImxpc3RDb250ZW50UmVmIiwiZmxvYXRpbmdSZWYiLCJ0cmlnZ2VyUmVmIiwic2VhcmNoSW5wdXRSZWYiLCJoYW5kbGVUcmlnZ2VyUmVmIiwidXNlRXZlbnRDYWxsYmFjayIsIm5vZGUiLCJjdXJyZW50IiwiX3VzZVNlbGVjdFNoZWxsIiwidXNlU2VsZWN0U2hlbGwiLCJpbm5lck9wZW4iLCJpc09wZW4iLCJoYW5kbGVPcGVuQ2hhbmdlIiwic2V0T3BlbiIsInJlZnMiLCJjb250ZXh0IiwiZmxvYXRpbmdTdHlsZXMiLCJ0cmFuc2l0aW9uU3R5bGVzIiwiaXNNb3VudGVkIiwiYmFzZUludGVyYWN0aW9ucyIsInNldFJlZmVyZW5jZSIsInNldEZsb2F0aW5nIiwibGlzdE5hdmlnYXRpb24iLCJ1c2VMaXN0TmF2aWdhdGlvbiIsIm9uTmF2aWdhdGUiLCJlbmFibGVkIiwibG9vcCIsInZpcnR1YWwiLCJ0eXBlYWhlYWQiLCJ1c2VUeXBlYWhlYWQiLCJvbk1hdGNoIiwiX3VzZUludGVyYWN0aW9ucyIsInVzZUludGVyYWN0aW9ucyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZXRSZWZlcmVuY2VQcm9wcyIsImdldEZsb2F0aW5nUHJvcHMiLCJnZXRJdGVtUHJvcHMiLCJmaXJzdEVuYWJsZWRJbmRleCIsInVzZUVmZmVjdCIsInByZXYiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJzbGljZSIsInNldFNlYXJjaElucHV0UmVmIiwibm90aWZ5Qmx1cklmT3V0c2lkZSIsInJlbGF0ZWRUYXJnZXQiLCJldmVudCIsIl9iIiwibmV4dFRhcmdldCIsIndpdGhpblRyaWdnZXIiLCJjb250YWlucyIsIndpdGhpbkZsb2F0aW5nIiwiaGFuZGxlVHJpZ2dlckJsdXIiLCJoYW5kbGVPcHRpb25CbHVyIiwiY29tbWl0Q2hhbmdlIiwibmV4dFZhbHVlIiwibmV4dE9wdGlvbiIsImhhbmRsZVNlbGVjdE9wdGlvbiIsInRvZ2dsZU11bHRpcGxlVmFsdWUiLCJuZXh0T3B0aW9ucyIsImdldE9wdGlvbnNCeVZhbHVlcyIsImhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUiLCJvcHRpb25WYWx1ZSIsImdldE11bHRpcGxlVmFsdWUiLCJpbmNsdWRlcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJoYW5kbGVUcmlnZ2VyS2V5RG93biIsImtleSIsIktFWUJPQVJEIiwiRU5URVIiLCJTUEFDRSIsInByZXZlbnREZWZhdWx0IiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJpbmRleCIsImhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVRhZ1JlbW92ZUNsaWNrIiwiaGFuZGxlU2VhcmNoQmx1ciIsImhhbmRsZVNlYXJjaENoYW5nZSIsImhhbmRsZVNlYXJjaENsZWFyIiwiZmluZEVuYWJsZWRJbmRleCIsImRpcmVjdGlvbiIsInN0YXJ0Iiwic3RlcCIsImNhbmRpZGF0ZSIsImhhbmRsZVNlYXJjaEtleURvd24iLCJuZXh0IiwiRVNDQVBFIiwicmVuZGVyVmFsdWVNZXRhIiwiZm9udFNpemUiLCJnZXRGb250U2l6ZSIsInZhbHVlTGFiZWxDbGFzcyIsImlzTXVsdGlwbGVWYWx1ZUZpbGxlZCIsInRyaWdnZXJDbGFzc05hbWUiLCJqb2luQ2xzIiwiaWNvblNpemUiLCJhY3RpdmVPcHRpb25JZCIsImZsb2F0aW5nQXJpYUxhYmVsbGVkQnkiLCJkZXNjcmliZWRCeUlkcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiX2pzeHMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiY2hpbGRyZW4iLCJhc3NpZ24iLCJ0eXBlIiwib25LZXlEb3duIiwiX2pzeCIsIlNlbGVjdFZhbHVlQ29udGVudCIsIm9uUmVtb3ZlIiwib25SZW1vdmVDbGljayIsIm9uUmVtb3ZlTW91c2VEb3duIiwiU3Bpbm5lciIsInN0cm9rZVdpZHRoIiwiSWNvbnMiLCJjb2xvciIsInBhbmVsTm9kZSIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwibW9kYWwiLCJpbml0aWFsRm9jdXMiLCJyZXR1cm5Gb2N1cyIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJhY3RpdmVEZXNjZW5kYW50Iiwib25DbGVhciIsIlR5cG9ncmFwaHlCb2R5IiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJlbXB0eSIsImZsYXRJbmRleCIsIm1hcCIsImdyb3VwIiwiVHlwb2dyYXBoeUxhYmVsIiwiZ3JvdXBMYWJlbCIsInN0cm9uZyIsIm9wdGlvbkZsYXRJbmRleCIsInNlbGVjdGVkIiwiaXNPcHRpb25TZWxlY3RlZCIsImFjdGl2ZSIsIm9wdGlvbk1ldGEiLCJleHRyYWN0T3B0aW9uVGV4dCIsInJvbGUiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsImNvbnRlbnQiLCJGbG9hdGluZ1BvcnRhbCIsImRpc3BsYXlOYW1lIiwiX2RlZmF1bHQiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBT0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxXQUFBLEdBQUFDLHVCQUFBLENBQUFaLE9BQUE7QUFlQSxJQUFBYSxpQkFBQSxHQUFBVCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQWMsb0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFlLG9CQUFBLEdBQUFYLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBZ0IsbUJBQUEsR0FBQVosc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFpQixnQkFBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixVQUFBLEdBQUFsQixPQUFBO0FBQ0EsSUFBQW1CLE1BQUEsR0FBQW5CLE9BQUE7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QTJKLFFBQUEsRUFBR3RMO1VBQVcsQ0FBQSxDQUN0RDtRQUFBLENBQUEsQ0FBQTtNQUNHLENBQUEsQ0FFVDtNQUVELE9BQU9LLE1BQU0sR0FBRyxJQUFBcUwsZUFBQSxFQUFDcUMscUJBQWMsRUFBQTtRQUFBekMsUUFBQSxFQUFFYTtNQUFTLENBQUEsQ0FBa0IsR0FBR0EsU0FBUztJQUMxRSxDQUFDLENBQUMsQ0FBRTtFQUFBLENBQUEsQ0FDYTtBQUV2QixDQUFDO0FBRUQ1UCxNQUFNLENBQUN5UixXQUFXLEdBQUcsUUFBUTtBQUFDLElBQUFDLFFBQUEsR0FBQXpSLE9BQUEsMkJBRWYsSUFBQTBSLFlBQUksRUFBQzNSLE1BQU0sQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1NlbGVjdC9TZWxlY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nUG9ydGFsLCB1c2VJbnRlcmFjdGlvbnMsIHVzZUxpc3ROYXZpZ2F0aW9uLCB1c2VUeXBlYWhlYWQsIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlSWQsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi9Db25maWdQcm92aWRlcic7XG5pbXBvcnQgeyB1c2VGb3JtQ29udHJvbFNpemUgfSBmcm9tICcuLi9Gb3JtTGF5b3V0L2NvbnRleHQnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUxhYmVsIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBqb2luQ2xzLCBkZWZhdWx0IGFzIHJvb3RDbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VsZWN0RmllbGRTaGVsbCBmcm9tICcuL1NlbGVjdEZpZWxkU2hlbGwnO1xuaW1wb3J0IFNlbGVjdE9wdGlvbkNvbnRlbnQgZnJvbSAnLi9TZWxlY3RPcHRpb25Db250ZW50JztcbmltcG9ydCBTZWxlY3RTZWFyY2hDb250cm9sIGZyb20gJy4vU2VsZWN0U2VhcmNoQ29udHJvbCc7XG5pbXBvcnQgU2VsZWN0VmFsdWVDb250ZW50IGZyb20gJy4vU2VsZWN0VmFsdWVDb250ZW50JztcbmltcG9ydCB7IHVzZVNlbGVjdFNoZWxsIH0gZnJvbSAnLi91c2VTZWxlY3RTaGVsbCc7XG5pbXBvcnQgeyBLRVlCT0FSRCwgU0VMRUNUX1RZUE9HUkFQSFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0T3B0aW9uVGV4dCwgZmlsdGVyT3B0aW9uR3JvdXBzLCBmbGF0dGVuT3B0aW9uR3JvdXBzLCBnZXRNdWx0aXBsZVZhbHVlLCBnZXRGb250U2l6ZSwgZ2V0T3B0aW9uc0J5VmFsdWVzLCBnZXRTZWxlY3RlZE9wdGlvbnMsIGlzT3B0aW9uU2VsZWN0ZWQsIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSwgbm9ybWFsaXplU2l6ZSwgbm9ybWFsaXplT3B0aW9uR3JvdXBzLCByZW1vdmVNdWx0aXBsZVZhbHVlLCB0b2dnbGVNdWx0aXBsZVZhbHVlLCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IERFRkFVTFRfTUFYX0hFSUdIVCA9IDMyMDtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbG9jYWxlID0gdXNlTG9jYWxlKCdTZWxlY3QnKTtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9IGxvY2FsZS5wbGFjZWhvbGRlciwgb3B0aW9ucyA9IFtdLCB2YWx1ZSwgZGVmYXVsdFZhbHVlLCBzaXplOiBzaXplUHJvcCwgc3RhdHVzID0gJ2RlZmF1bHQnLCB2YXJpYW50ID0gJ2ZpbGwnLCBkaXNhYmxlZDogZGlzYWJsZWRQcm9wID0gZmFsc2UsIHJlYWRPbmx5ID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbXVsdGlwbGUgPSBmYWxzZSwgbWF4VmlzaWJsZVZhbHVlcywgc2VhcmNoYWJsZSA9IGZhbHNlLCBzZWFyY2hQbGFjZWhvbGRlciA9IGxvY2FsZS5zZWFyY2hQbGFjZWhvbGRlciwgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBmaWx0ZXJJbnB1dEF1dG9Gb2N1cyA9IHRydWUsIGxhYmVsLCBsYWJlbENsYXNzTmFtZSwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IHRydWUsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gbG9jYWxlLmVtcHR5Q29udGVudCwgcGFuZWxIZWFkZXIsIHBhbmVsRm9vdGVyLCBvcGVuLCBkZWZhdWx0T3BlbiA9IGZhbHNlLCBwb3J0YWwgPSB0cnVlLCBhbGxvd0Rlc2VsZWN0ID0gZmFsc2UsIHBhbmVsQ2xhc3NOYW1lLCBvcHRpb25DbGFzc05hbWUsIGdyb3VwTGFiZWxDbGFzc05hbWUsIGxpc3RNYXhIZWlnaHQgPSBERUZBVUxUX01BWF9IRUlHSFQsIG9mZnNldCwgYW5pbWF0aW9uLCBvbkNoYW5nZSwgb25PcGVuQ2hhbmdlLCBvblNlYXJjaENoYW5nZSwgb25CbHVyLCBmaWx0ZXJPcHRpb24sIHJlbmRlck9wdGlvbiwgcmVuZGVyT3B0aW9uQ29udGVudCwgcmVuZGVyVmFsdWUsIHJlZiwgfSA9IHByb3BzO1xuICAgIC8vIEJhcmUtY29udHJvbCBzaXplIGRlZmF1bHQ6IGFuIGV4cGxpY2l0IGBzaXplYCB3aW5zOyBpbnNpZGUgYSBGb3JtTGF5b3V0XG4gICAgLy8gdGhlIHZhcmlhbnQncyBjb250cm9sU2l6ZSBhcHBsaWVzOyBlbHNld2hlcmUgJ2xhcmdlJy5cbiAgICBjb25zdCBjb250ZXh0U2l6ZSA9IHVzZUZvcm1Db250cm9sU2l6ZSgpO1xuICAgIGNvbnN0IHNpemUgPSAoX2EgPSBzaXplUHJvcCAhPT0gbnVsbCAmJiBzaXplUHJvcCAhPT0gdm9pZCAwID8gc2l6ZVByb3AgOiBjb250ZXh0U2l6ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2xhcmdlJztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGludGVyYWN0aXZlID0gIWRpc2FibGVkICYmICFyZWFkT25seTtcbiAgICBjb25zdCBjbGFzc2VzID0gcm9vdENsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9IGlkICE9PSBudWxsICYmIGlkICE9PSB2b2lkIDAgPyBpZCA6IGF1dG9JZDtcbiAgICBjb25zdCBsYWJlbElkID0gdXNlSWQoKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbklkID0gdXNlSWQoKTtcbiAgICBjb25zdCBmZWVkYmFja0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBvcHRpb25JZFByZWZpeCA9IHVzZUlkKCk7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkKSwgdmFsdWUpO1xuICAgIGNvbnN0IFtpbm5lclNlYXJjaFZhbHVlLCBzZXRJbm5lclNlYXJjaFZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U2VhcmNoVmFsdWUsIHNlYXJjaFZhbHVlKTtcbiAgICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0gbm9ybWFsaXplU2l6ZShzaXplKTtcbiAgICBjb25zdCBhbGxPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSwgW29wdGlvbnNdKTtcbiAgICBjb25zdCBhbGxGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gKHNlYXJjaGFibGVcbiAgICAgICAgPyBmaWx0ZXJPcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzLCBpbm5lclNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pXG4gICAgICAgIDogYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3VwcywgZmlsdGVyT3B0aW9uLCBpbm5lclNlYXJjaFZhbHVlLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3QgdmlzaWJsZUZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKHZpc2libGVPcHRpb25Hcm91cHMpLCBbdmlzaWJsZU9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2VsZWN0ZWRPcHRpb25zKGFsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZSksIFthbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGVdKTtcbiAgICAvLyBSZWJ1aWxkIHBlciByZW5kZXI6IGNvbnRyb2xsZWQgYXJyYXlzIG1heSBiZSBtdXRhdGVkIGluIHBsYWNlLCBhbmQgb3B0aW9uXG4gICAgLy8gbWVtYmVyc2hpcCBwcmV2aW91c2x5IHJlYWQgdGhlaXIgY3VycmVudCBjb250ZW50cyBvbiBldmVyeSByZW5kZXIuXG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSBpc1NlbGVjdE11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgbXVsdGlwbGUpID8gbmV3IFNldChpbm5lclZhbHVlKSA6IG51bGw7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hlZEluZGV4ID0gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVkSW5kZXggPj0gMCA/IG1hdGNoZWRJbmRleCA6IG51bGw7XG4gICAgfSwgW3NlbGVjdGVkT3B0aW9ucywgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgY29uc3QgaGFzU2VsZWN0aW9uID0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgbGlzdENvbnRlbnRSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGZsb2F0aW5nUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VhcmNoSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlclJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgeyBpc09wZW46IGlubmVyT3Blbiwgc2V0T3BlbjogaGFuZGxlT3BlbkNoYW5nZSwgcmVmcywgY29udGV4dCwgZmxvYXRpbmdTdHlsZXMsIHRyYW5zaXRpb25TdHlsZXMsIGlzTW91bnRlZCwgYmFzZUludGVyYWN0aW9ucywgfSA9IHVzZVNlbGVjdFNoZWxsKHtcbiAgICAgICAgb3BlbixcbiAgICAgICAgZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZSxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBsaXN0TWF4SGVpZ2h0LFxuICAgICAgICBhbmltYXRpb24sXG4gICAgICAgIG9mZnNldCxcbiAgICB9KTtcbiAgICBjb25zdCBzZXRSZWZlcmVuY2UgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgICAgICBoYW5kbGVUcmlnZ2VyUmVmKG5vZGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZsb2F0aW5nID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldEZsb2F0aW5nKG5vZGUpO1xuICAgICAgICBmbG9hdGluZ1JlZi5jdXJyZW50ID0gbm9kZTtcbiAgICB9KTtcbiAgICBjb25zdCBsaXN0TmF2aWdhdGlvbiA9IHVzZUxpc3ROYXZpZ2F0aW9uKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIG9uTmF2aWdhdGU6IHNldEFjdGl2ZUluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4sXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHZpcnR1YWw6IHNlYXJjaGFibGUsXG4gICAgfSk7XG4gICAgY29uc3QgdHlwZWFoZWFkID0gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZjogbGlzdENvbnRlbnRSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4gJiYgIXNlYXJjaGFibGUsXG4gICAgICAgIG9uTWF0Y2g6IHNldEFjdGl2ZUluZGV4LFxuICAgIH0pO1xuICAgIGNvbnN0IHsgZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wcyB9ID0gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICAgICAgLi4uYmFzZUludGVyYWN0aW9ucyxcbiAgICAgICAgbGlzdE5hdmlnYXRpb24sXG4gICAgICAgIHR5cGVhaGVhZCxcbiAgICBdKTtcbiAgICBjb25zdCBmaXJzdEVuYWJsZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKSwgW3Zpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRBY3RpdmVJbmRleCgocHJldikgPT4ge1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwgJiYgdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdICYmICF2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0RW5hYmxlZEluZGV4ID49IDAgPyBmaXJzdEVuYWJsZWRJbmRleCA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH0sIFtmaXJzdEVuYWJsZWRJbmRleCwgaW5uZXJPcGVuLCBzZWxlY3RlZEluZGV4LCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghaW5uZXJPcGVuIHx8IGFjdGl2ZUluZGV4ID09PSBudWxsIHx8IHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSBsaXN0UmVmLmN1cnJlbnRbYWN0aXZlSW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0sIFthY3RpdmVJbmRleCwgaW5uZXJPcGVuLCBzZWFyY2hhYmxlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGlzdFJlZi5jdXJyZW50ID0gbGlzdFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50ID0gbGlzdENvbnRlbnRSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICB9LCBbdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aF0pO1xuICAgIGNvbnN0IHNldFNlYXJjaElucHV0UmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUgJiYgaW5uZXJPcGVuICYmIGZpbHRlcklucHV0QXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICBub2RlLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG5vdGlmeUJsdXJJZk91dHNpZGUgPSB1c2VFdmVudENhbGxiYWNrKChyZWxhdGVkVGFyZ2V0LCBldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBuZXh0VGFyZ2V0ID0gcmVsYXRlZFRhcmdldDtcbiAgICAgICAgY29uc3Qgd2l0aGluVHJpZ2dlciA9ICEhKG5leHRUYXJnZXQgJiYgKChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKG5leHRUYXJnZXQpKSk7XG4gICAgICAgIGNvbnN0IHdpdGhpbkZsb2F0aW5nID0gISEobmV4dFRhcmdldCAmJiAoKF9iID0gZmxvYXRpbmdSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKG5leHRUYXJnZXQpKSk7XG4gICAgICAgIGlmICghd2l0aGluVHJpZ2dlciAmJiAhd2l0aGluRmxvYXRpbmcpIHtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihldmVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZU9wdGlvbkJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21taXRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIG5leHRPcHRpb24pID0+IHtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9uLCBuYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb24pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gdG9nZ2xlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93RGVzZWxlY3QgJiYgaW5uZXJWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgICAgIChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb21taXRDaGFuZ2Uob3B0aW9uLnZhbHVlLCBvcHRpb24pO1xuICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgIChfYiA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZ2V0TXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlKS5pbmNsdWRlcyhvcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSByZW1vdmVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvblZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaW50ZXJhY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELlNQQUNFKSB7XG4gICAgICAgICAgICBpZiAoaW5uZXJPcGVuICYmXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbih2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSghaW5uZXJPcGVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTW91c2VFbnRlciA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElubmVyU2VhcmNoVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25TZWFyY2hDaGFuZ2UgPT09IG51bGwgfHwgb25TZWFyY2hDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VhcmNoQ2hhbmdlKG5leHRWYWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2xlYXIgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBoYW5kbGVTZWFyY2hDaGFuZ2UoJycpO1xuICAgICAgICAoX2EgPSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmRFbmFibGVkSW5kZXggPSB1c2VFdmVudENhbGxiYWNrKChjdXJyZW50LCBkaXJlY3Rpb24pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydCA9IGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwID8gY3VycmVudCA6IChkaXJlY3Rpb24gPT09IDEgPyAtMSA6IGxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAxOyBzdGVwIDw9IGxlbmd0aDsgc3RlcCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSAoKHN0YXJ0ICsgZGlyZWN0aW9uICogc3RlcCkgJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2NhbmRpZGF0ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KG5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIC0xKTtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIHBsYWNlaG9sZGVyOiAhaGFzU2VsZWN0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIHNpemU6IG5vcm1hbGl6ZWRTaXplLFxuICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgIH07XG4gICAgY29uc3QgdmFsdWVMYWJlbENsYXNzID0gaGFzU2VsZWN0aW9uID8gJ3ZhbHVlJyA6ICdwbGFjZWhvbGRlcic7XG4gICAgY29uc3QgaXNNdWx0aXBsZVZhbHVlRmlsbGVkID0gKG11bHRpcGxlICYmXG4gICAgICAgIGhhc1NlbGVjdGlvbiAmJlxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgLy8gQSBjdXN0b20gYHJlbmRlclZhbHVlYCBwcm9kdWNlcyBpdHMgb3duIHNpbmdsZS1saW5lIHN1bW1hcnksIHNvIHRoZVxuICAgICAgICAvLyBtdWx0aS12YWx1ZSBjaGlwIGxheW91dCAoaGVpZ2h0OmF1dG8gKyB2ZXJ0aWNhbCBwYWRkaW5nICsgZmxleC13cmFwKVxuICAgICAgICAvLyBtdXN0IG5vdCBraWNrIGluIGFuZCBpbmZsYXRlIHRoZSB0cmlnZ2VyIGhlaWdodC5cbiAgICAgICAgIXJlbmRlclZhbHVlKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpLCByZWFkT25seSAmJiAhZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1yZWFkb25seScpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ2xhcmdlJyA/IDIwIDogMTY7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uSWQgPSBzZWFyY2hhYmxlICYmIGlubmVyT3BlbiAmJiBhY3RpdmVJbmRleCAhPT0gbnVsbFxuICAgICAgICA/IGAke29wdGlvbklkUHJlZml4fS0ke2FjdGl2ZUluZGV4fWBcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgaW5mbzogaW5mbywgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBmZWVkYmFjazogZmVlZGJhY2ssIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWxJZDogbGFiZWxJZCwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCwgZmVlZGJhY2tJZDogZmVlZGJhY2tJZCwgY2hpbGRyZW46IFtfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRSZWZlcmVuY2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgcmVmOiBzZXRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgaWQ6IHRyaWdnZXJJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdhcmlhLXJlYWRvbmx5JzogcmVhZE9ubHkgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHJpZ2dlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBvbktleURvd246IGhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlVHJpZ2dlckJsdXIsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnksXG4gICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkZXNjcmliZWRCeUlkcyxcbiAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModmFsdWVMYWJlbENsYXNzLCBqb2luQ2xzKGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS0ke25vcm1hbGl6ZWRTaXplfWApLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LW11bHRpcGxlYCksIGRpc2FibGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1kaXNhYmxlZGApKSksIGNoaWxkcmVuOiBfanN4KFNlbGVjdFZhbHVlQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBoYXNTZWxlY3Rpb246IGhhc1NlbGVjdGlvbiwgbXVsdGlwbGU6IG11bHRpcGxlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlbmRlclZhbHVlOiByZW5kZXJWYWx1ZSwgcmVuZGVyVmFsdWVNZXRhOiByZW5kZXJWYWx1ZU1ldGEsIHNlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRPcHRpb25zLCBtYXhWaXNpYmxlVmFsdWVzOiBtYXhWaXNpYmxlVmFsdWVzLCBvblJlbW92ZTogaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSwgb25SZW1vdmVDbGljazogaGFuZGxlVGFnUmVtb3ZlQ2xpY2ssIG9uUmVtb3ZlTW91c2VEb3duOiBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gfSkgfSldIH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2pzeChTcGlubmVyLCB7IHNpemU6IGljb25TaXplLCBzdHJva2VXaWR0aDogMiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiBpbm5lck9wZW4gPyAnY2hldnJvblVwJyA6ICdjaGV2cm9uRG93bicsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KV0gfSkpLCBpc01vdW50ZWQgJiYgaW50ZXJhY3RpdmUgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNldFNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZT17bm9ybWFsaXplZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLCB2YWx1ZTogaW5uZXJTZWFyY2hWYWx1ZSwgYWN0aXZlRGVzY2VuZGFudDogYWN0aXZlT3B0aW9uSWQsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25DbGVhcjogaGFuZGxlU2VhcmNoQ2xlYXIsIG9uS2V5RG93bjogaGFuZGxlU2VhcmNoS2V5RG93biB9KSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1ib2R5JyksIGNoaWxkcmVuOiBbcGFuZWxIZWFkZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyJyksIGNoaWxkcmVuOiBwYW5lbEhlYWRlciB9KSksIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGggPT09IDAgPyAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZW1wdHknKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuc2l6ZSwgY29sb3I6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LmNvbG9yLCBjaGlsZHJlbjogZW1wdHlDb250ZW50IH0pIH0pKSA6ICgoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmbGF0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2aXNpYmxlT3B0aW9uR3JvdXBzLm1hcCgoZ3JvdXApID0+IChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZ3JvdXAnKSwgY2hpbGRyZW46IFtncm91cC5sYWJlbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZ3JvdXAtbGFiZWwnLCBncm91cExhYmVsQ2xhc3NOYW1lKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IHNpemU6IFNFTEVDVF9UWVBPR1JBUEhZLmdyb3VwTGFiZWwuc2l6ZSwgc3Ryb25nOiB0cnVlLCBjaGlsZHJlbjogZ3JvdXAubGFiZWwgfSkgfSkpLCBncm91cC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uRmxhdEluZGV4ID0gZmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXRJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxlY3RlZFZhbHVlcy5oYXMob3B0aW9uLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzT3B0aW9uU2VsZWN0ZWQoaW5uZXJWYWx1ZSwgbXVsdGlwbGUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gYWN0aXZlSW5kZXggPT09IG9wdGlvbkZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25NZXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIW9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG9wdGlvbkZsYXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBnZXRGb250U2l6ZShub3JtYWxpemVkU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRJdGVtUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYCR7b3B0aW9uSWRQcmVmaXh9LSR7b3B0aW9uRmxhdEluZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzKCdvcHRpb24nLCBqb2luQ2xzKGFjdGl2ZSAmJiBjbGFzc2VzKCdvcHRpb24tYWN0aXZlJyksIHNlbGVjdGVkICYmIGNsYXNzZXMoJ29wdGlvbi1zZWxlY3RlZCcpLCBvcHRpb24uZGlzYWJsZWQgJiYgY2xhc3Nlcygnb3B0aW9uLWRpc2FibGVkJyksIG9wdGlvbkNsYXNzTmFtZSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBoYW5kbGVJdGVtTW91c2VFbnRlcihvcHRpb25GbGF0SW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZU9wdGlvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IHJlbmRlck9wdGlvbiA/IChyZW5kZXJPcHRpb24ob3B0aW9uLCBvcHRpb25NZXRhKSkgOiAoX2pzeChTZWxlY3RPcHRpb25Db250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIG9wdGlvbjogb3B0aW9uLCBzZWxlY3RlZDogc2VsZWN0ZWQsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCBjb250ZW50OiByZW5kZXJPcHRpb25Db250ZW50ID09PSBudWxsIHx8IHJlbmRlck9wdGlvbkNvbnRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlbmRlck9wdGlvbkNvbnRlbnQob3B0aW9uLCBvcHRpb25NZXRhKSB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldIH0sIGdyb3VwLmtleSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCkpXSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsTm9kZSB9KSA6IHBhbmVsTm9kZTtcbiAgICAgICAgICAgIH0pKCldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -7,8 +7,9 @@ interface SelectSearchControlProps {
7
7
  placeholder: string;
8
8
  value: string;
9
9
  activeDescendant?: string;
10
- onBlur: (event: ReactFocusEvent<HTMLInputElement>) => void;
10
+ onBlur: (event: ReactFocusEvent<HTMLElement>) => void;
11
11
  onChange: (value: string, event: ChangeEvent<HTMLInputElement>) => void;
12
+ onClear: () => void;
12
13
  onKeyDown: (event: ReactKeyboardEvent<HTMLInputElement>) => void;
13
14
  }
14
15
  export declare const SelectSearchControl: import("react").NamedExoticComponent<SelectSearchControlProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = exports.SelectSearchControl = void 0;
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _react = require("react");
9
+ var _ConfigProvider = require("../ConfigProvider");
9
10
  var _Icons = require("../Icons");
10
11
  var _classnames = require("../../utils/classnames");
11
12
  var SelectSearchControlBase = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
@@ -16,7 +17,9 @@ var SelectSearchControlBase = /*#__PURE__*/(0, _react.forwardRef)(function (_ref
16
17
  activeDescendant = _ref.activeDescendant,
17
18
  onBlur = _ref.onBlur,
18
19
  _onChange = _ref.onChange,
20
+ onClear = _ref.onClear,
19
21
  onKeyDown = _ref.onKeyDown;
22
+ var locale = (0, _ConfigProvider.useLocale)('Input');
20
23
  var iconSize = size === 'large' ? 20 : 16;
21
24
  return (0, _jsxRuntime.jsxs)("div", {
22
25
  className: classes('search', (0, _classnames.joinCls)(classes("search-".concat(size)))),
@@ -40,10 +43,21 @@ var SelectSearchControlBase = /*#__PURE__*/(0, _react.forwardRef)(function (_ref
40
43
  onChange: function onChange(event) {
41
44
  return _onChange(event.target.value, event);
42
45
  }
46
+ }), value.length > 0 && (0, _jsxRuntime.jsx)("button", {
47
+ type: "button",
48
+ className: classes('search-clear', classes('search-icon')),
49
+ "aria-label": locale.clearSearchAria,
50
+ onBlur: onBlur,
51
+ onClick: onClear,
52
+ children: (0, _jsxRuntime.jsx)(_Icons.Icons, {
53
+ name: "cross",
54
+ size: iconSize,
55
+ color: "currentColor"
56
+ })
43
57
  })]
44
58
  });
45
59
  });
46
60
  SelectSearchControlBase.displayName = 'SelectSearchControl';
47
61
  var SelectSearchControl = exports.SelectSearchControl = /*#__PURE__*/(0, _react.memo)(SelectSearchControlBase);
48
62
  var _default = exports["default"] = SelectSearchControl;
49
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdFNlYXJjaENvbnRyb2wuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3RTZWFyY2hDb250cm9sLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfSWNvbnMiLCJfY2xhc3NuYW1lcyIsIlNlbGVjdFNlYXJjaENvbnRyb2xCYXNlIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJjbGFzc2VzIiwic2l6ZSIsInBsYWNlaG9sZGVyIiwidmFsdWUiLCJhY3RpdmVEZXNjZW5kYW50Iiwib25CbHVyIiwib25DaGFuZ2UiLCJvbktleURvd24iLCJpY29uU2l6ZSIsIl9qc3hzIiwiY2xhc3NOYW1lIiwiam9pbkNscyIsImNvbmNhdCIsImNoaWxkcmVuIiwiX2pzeCIsIkljb25zIiwibmFtZSIsImNvbG9yIiwidHlwZSIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGxheU5hbWUiLCJTZWxlY3RTZWFyY2hDb250cm9sIiwiZXhwb3J0cyIsIm1lbW8iLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBb0JBLElBQU1JLHVCQUF1QixnQkFBRyxJQUFBQyxpQkFBVSxFQUN4QyxVQUFBQyxJQUFBLEVBV0VDLEdBQUcsRUFDRDtFQUFBLElBVkFDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQ1BDLElBQUksR0FBQUgsSUFBQSxDQUFKRyxJQUFJO0lBQ0pDLFdBQVcsR0FBQUosSUFBQSxDQUFYSSxXQUFXO0lBQ1hDLEtBQUssR0FBQUwsSUFBQSxDQUFMSyxLQUFLO0lBQ0xDLGdCQUFnQixHQUFBTixJQUFBLENBQWhCTSxnQkFBZ0I7SUFDaEJDLE1BQU0sR0FBQVAsSUFBQSxDQUFOTyxNQUFNO0lBQ05DLFNBQVEsR0FBQVIsSUFBQSxDQUFSUSxRQUFRO0lBQ1JDLFNBQVMsR0FBQVQsSUFBQSxDQUFUUyxTQUFTO0VBSVgsSUFBTUMsUUFBUSxHQUFHUCxJQUFJLEtBQUssT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFO0VBRTNDLE9BQ0UsSUFBQVEsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7SUFBS0MsU0FBUyxFQUFFVixPQUFPLENBQUMsUUFBUSxFQUFFLElBQUFXLG1CQUFPLEVBQUNYLE9BQU8sV0FBQVksTUFBQSxDQUFXWCxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQVksUUFBQSxFQUFBLENBQ25FLElBQUFDLGVBQUEsRUFBQSxNQUFBLEVBQUE7TUFBTUosU0FBUyxFQUFFVixPQUFPLENBQUMsYUFBYSxDQUFDO01BQUFhLFFBQUEsRUFDckMsSUFBQUMsZUFBQSxFQUFDQyxZQUFLLEVBQUE7UUFBQ0MsSUFBSSxFQUFDLFFBQVE7UUFBQ2YsSUFBSSxFQUFFTyxRQUFRO1FBQUVTLEtBQUssRUFBQztNQUFjLENBQUE7SUFBRyxDQUFBLENBQ3ZELEVBQ1AsSUFBQUgsZUFBQSxFQUFBLE9BQUEsRUFBQTtNQUNFZixHQUFHLEVBQUVBLEdBQUc7TUFDUm1CLElBQUksRUFBQyxNQUFNO01BQ1hmLEtBQUssRUFBRUEsS0FBSztNQUNaRCxXQUFXLEVBQUVBLFdBQVc7TUFBQSxZQUFBLEVBQ1pBLFdBQVc7TUFBQSx1QkFBQSxFQUNBRSxnQkFBZ0I7TUFDdkNNLFNBQVMsRUFBRVYsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFBVyxtQkFBTyxFQUFDWCxPQUFPLGlCQUFBWSxNQUFBLENBQWlCWCxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUM7TUFDNUVJLE1BQU0sRUFBRUEsTUFBTTtNQUNkRSxTQUFTLEVBQUVBLFNBQVM7TUFDcEJELFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFHYSxLQUFLO1FBQUEsT0FBS2IsU0FBUSxDQUFDYSxLQUFLLENBQUNDLE1BQU0sQ0FBQ2pCLEtBQUssRUFBRWdCLEtBQUssQ0FBQztNQUFBO0lBQUEsQ0FBQSxDQUN4RDtFQUFBLENBQUEsQ0FDRTtBQUVWLENBQUMsQ0FDRjtBQUVEdkIsdUJBQXVCLENBQUN5QixXQUFXLEdBQUcscUJBQXFCO0FBRXBELElBQU1DLG1CQUFtQixHQUFBQyxPQUFBLENBQUFELG1CQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQzVCLHVCQUF1QixDQUFDO0FBQUMsSUFBQTZCLFFBQUEsR0FBQUYsT0FBQSxjQUVsREQsbUJBQW1CIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdFNlYXJjaENvbnRyb2wuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgU2VsZWN0U2VhcmNoQ29udHJvbEJhc2UgPSBmb3J3YXJkUmVmKCh7IGNsYXNzZXMsIHNpemUsIHBsYWNlaG9sZGVyLCB2YWx1ZSwgYWN0aXZlRGVzY2VuZGFudCwgb25CbHVyLCBvbkNoYW5nZSwgb25LZXlEb3duLCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpY29uU2l6ZSA9IHNpemUgPT09ICdsYXJnZScgPyAyMCA6IDE2O1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NlYXJjaCcsIGpvaW5DbHMoY2xhc3Nlcyhgc2VhcmNoLSR7c2l6ZX1gKSkpLCBjaGlsZHJlbjogW19qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzZWFyY2gtaWNvbicpLCBjaGlsZHJlbjogX2pzeChJY29ucywgeyBuYW1lOiBcInNlYXJjaFwiLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSksIF9qc3goXCJpbnB1dFwiLCB7IHJlZjogcmVmLCB0eXBlOiBcInRleHRcIiwgdmFsdWU6IHZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIFwiYXJpYS1sYWJlbFwiOiBwbGFjZWhvbGRlciwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYWN0aXZlRGVzY2VuZGFudCwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzZWFyY2gtaW5wdXQnLCBqb2luQ2xzKGNsYXNzZXMoYHNlYXJjaC1pbnB1dC0ke3NpemV9YCkpKSwgb25CbHVyOiBvbkJsdXIsIG9uS2V5RG93bjogb25LZXlEb3duLCBvbkNoYW5nZTogKGV2ZW50KSA9PiBvbkNoYW5nZShldmVudC50YXJnZXQudmFsdWUsIGV2ZW50KSB9KV0gfSkpO1xufSk7XG5TZWxlY3RTZWFyY2hDb250cm9sQmFzZS5kaXNwbGF5TmFtZSA9ICdTZWxlY3RTZWFyY2hDb250cm9sJztcbmV4cG9ydCBjb25zdCBTZWxlY3RTZWFyY2hDb250cm9sID0gbWVtbyhTZWxlY3RTZWFyY2hDb250cm9sQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBTZWxlY3RTZWFyY2hDb250cm9sOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
63
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdFNlYXJjaENvbnRyb2wuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3RTZWFyY2hDb250cm9sLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfQ29uZmlnUHJvdmlkZXIiLCJfSWNvbnMiLCJfY2xhc3NuYW1lcyIsIlNlbGVjdFNlYXJjaENvbnRyb2xCYXNlIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJjbGFzc2VzIiwic2l6ZSIsInBsYWNlaG9sZGVyIiwidmFsdWUiLCJhY3RpdmVEZXNjZW5kYW50Iiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkNsZWFyIiwib25LZXlEb3duIiwibG9jYWxlIiwidXNlTG9jYWxlIiwiaWNvblNpemUiLCJfanN4cyIsImNsYXNzTmFtZSIsImpvaW5DbHMiLCJjb25jYXQiLCJjaGlsZHJlbiIsIl9qc3giLCJJY29ucyIsIm5hbWUiLCJjb2xvciIsInR5cGUiLCJldmVudCIsInRhcmdldCIsImxlbmd0aCIsImNsZWFyU2VhcmNoQXJpYSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJleHBvcnRzIiwibWVtbyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFxQkEsSUFBTUssdUJBQXVCLGdCQUFHLElBQUFDLGlCQUFVLEVBQ3hDLFVBQUFDLElBQUEsRUFZRUMsR0FBRyxFQUNEO0VBQUEsSUFYQUMsT0FBTyxHQUFBRixJQUFBLENBQVBFLE9BQU87SUFDUEMsSUFBSSxHQUFBSCxJQUFBLENBQUpHLElBQUk7SUFDSkMsV0FBVyxHQUFBSixJQUFBLENBQVhJLFdBQVc7SUFDWEMsS0FBSyxHQUFBTCxJQUFBLENBQUxLLEtBQUs7SUFDTEMsZ0JBQWdCLEdBQUFOLElBQUEsQ0FBaEJNLGdCQUFnQjtJQUNoQkMsTUFBTSxHQUFBUCxJQUFBLENBQU5PLE1BQU07SUFDTkMsU0FBUSxHQUFBUixJQUFBLENBQVJRLFFBQVE7SUFDUkMsT0FBTyxHQUFBVCxJQUFBLENBQVBTLE9BQU87SUFDUEMsU0FBUyxHQUFBVixJQUFBLENBQVRVLFNBQVM7RUFJWCxJQUFNQyxNQUFNLEdBQUcsSUFBQUMseUJBQVMsRUFBQyxPQUFPLENBQUM7RUFDakMsSUFBTUMsUUFBUSxHQUFHVixJQUFJLEtBQUssT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFO0VBRTNDLE9BQ0UsSUFBQVcsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7SUFBS0MsU0FBUyxFQUFFYixPQUFPLENBQUMsUUFBUSxFQUFFLElBQUFjLG1CQUFPLEVBQUNkLE9BQU8sV0FBQWUsTUFBQSxDQUFXZCxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQWUsUUFBQSxFQUFBLENBQ25FLElBQUFDLGVBQUEsRUFBQSxNQUFBLEVBQUE7TUFBTUosU0FBUyxFQUFFYixPQUFPLENBQUMsYUFBYSxDQUFDO01BQUFnQixRQUFBLEVBQ3JDLElBQUFDLGVBQUEsRUFBQ0MsWUFBSyxFQUFBO1FBQUNDLElBQUksRUFBQyxRQUFRO1FBQUNsQixJQUFJLEVBQUVVLFFBQVE7UUFBRVMsS0FBSyxFQUFDO01BQWMsQ0FBQTtJQUFHLENBQUEsQ0FDdkQsRUFDUCxJQUFBSCxlQUFBLEVBQUEsT0FBQSxFQUFBO01BQ0VsQixHQUFHLEVBQUVBLEdBQUc7TUFDUnNCLElBQUksRUFBQyxNQUFNO01BQ1hsQixLQUFLLEVBQUVBLEtBQUs7TUFDWkQsV0FBVyxFQUFFQSxXQUFXO01BQUEsWUFBQSxFQUNaQSxXQUFXO01BQUEsdUJBQUEsRUFDQUUsZ0JBQWdCO01BQ3ZDUyxTQUFTLEVBQUViLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBQWMsbUJBQU8sRUFBQ2QsT0FBTyxpQkFBQWUsTUFBQSxDQUFpQmQsSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDO01BQzVFSSxNQUFNLEVBQUVBLE1BQU07TUFDZEcsU0FBUyxFQUFFQSxTQUFTO01BQ3BCRixRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBR2dCLEtBQUs7UUFBQSxPQUFLaEIsU0FBUSxDQUFDZ0IsS0FBSyxDQUFDQyxNQUFNLENBQUNwQixLQUFLLEVBQUVtQixLQUFLLENBQUM7TUFBQTtJQUFBLENBQUEsQ0FDeEQsRUFDRG5CLEtBQUssQ0FBQ3FCLE1BQU0sR0FBRyxDQUFDLElBQ2YsSUFBQVAsZUFBQSxFQUFBLFFBQUEsRUFBQTtNQUNFSSxJQUFJLEVBQUMsUUFBUTtNQUNiUixTQUFTLEVBQUViLE9BQU8sQ0FBQyxjQUFjLEVBQUVBLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztNQUFBLFlBQUEsRUFDOUNTLE1BQU0sQ0FBQ2dCLGVBQWU7TUFDbENwQixNQUFNLEVBQUVBLE1BQU07TUFDZHFCLE9BQU8sRUFBRW5CLE9BQU87TUFBQVMsUUFBQSxFQUVoQixJQUFBQyxlQUFBLEVBQUNDLFlBQUssRUFBQTtRQUFDQyxJQUFJLEVBQUMsT0FBTztRQUFDbEIsSUFBSSxFQUFFVSxRQUFRO1FBQUVTLEtBQUssRUFBQztNQUFjLENBQUE7SUFBRyxDQUFBLENBRTlEO0VBQUEsQ0FBQSxDQUNHO0FBRVYsQ0FBQyxDQUNGO0FBRUR4Qix1QkFBdUIsQ0FBQytCLFdBQVcsR0FBRyxxQkFBcUI7QUFFcEQsSUFBTUMsbUJBQW1CLEdBQUFDLE9BQUEsQ0FBQUQsbUJBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDbEMsdUJBQXVCLENBQUM7QUFBQyxJQUFBbUMsUUFBQSxHQUFBRixPQUFBLGNBRWxERCxtQkFBbUIiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0U2VhcmNoQ29udHJvbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vQ29uZmlnUHJvdmlkZXInO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5jb25zdCBTZWxlY3RTZWFyY2hDb250cm9sQmFzZSA9IGZvcndhcmRSZWYoKHsgY2xhc3Nlcywgc2l6ZSwgcGxhY2Vob2xkZXIsIHZhbHVlLCBhY3RpdmVEZXNjZW5kYW50LCBvbkJsdXIsIG9uQ2hhbmdlLCBvbkNsZWFyLCBvbktleURvd24sIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGxvY2FsZSA9IHVzZUxvY2FsZSgnSW5wdXQnKTtcbiAgICBjb25zdCBpY29uU2l6ZSA9IHNpemUgPT09ICdsYXJnZScgPyAyMCA6IDE2O1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NlYXJjaCcsIGpvaW5DbHMoY2xhc3Nlcyhgc2VhcmNoLSR7c2l6ZX1gKSkpLCBjaGlsZHJlbjogW19qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzZWFyY2gtaWNvbicpLCBjaGlsZHJlbjogX2pzeChJY29ucywgeyBuYW1lOiBcInNlYXJjaFwiLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSksIF9qc3goXCJpbnB1dFwiLCB7IHJlZjogcmVmLCB0eXBlOiBcInRleHRcIiwgdmFsdWU6IHZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIFwiYXJpYS1sYWJlbFwiOiBwbGFjZWhvbGRlciwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYWN0aXZlRGVzY2VuZGFudCwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzZWFyY2gtaW5wdXQnLCBqb2luQ2xzKGNsYXNzZXMoYHNlYXJjaC1pbnB1dC0ke3NpemV9YCkpKSwgb25CbHVyOiBvbkJsdXIsIG9uS2V5RG93bjogb25LZXlEb3duLCBvbkNoYW5nZTogKGV2ZW50KSA9PiBvbkNoYW5nZShldmVudC50YXJnZXQudmFsdWUsIGV2ZW50KSB9KSwgdmFsdWUubGVuZ3RoID4gMCAmJiAoX2pzeChcImJ1dHRvblwiLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNsYXNzTmFtZTogY2xhc3Nlcygnc2VhcmNoLWNsZWFyJywgY2xhc3Nlcygnc2VhcmNoLWljb24nKSksIFwiYXJpYS1sYWJlbFwiOiBsb2NhbGUuY2xlYXJTZWFyY2hBcmlhLCBvbkJsdXI6IG9uQmx1ciwgb25DbGljazogb25DbGVhciwgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJjcm9zc1wiLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSkpXSB9KSk7XG59KTtcblNlbGVjdFNlYXJjaENvbnRyb2xCYXNlLmRpc3BsYXlOYW1lID0gJ1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuZXhwb3J0IGNvbnN0IFNlbGVjdFNlYXJjaENvbnRyb2wgPSBtZW1vKFNlbGVjdFNlYXJjaENvbnRyb2xCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFNlbGVjdFNlYXJjaENvbnRyb2w7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -354,6 +354,17 @@
354
354
  justify-content: center;
355
355
  color: var(--om-icon-default, #131313);
356
356
  }
357
+ .om-component-ui-select-search-clear {
358
+ padding: 0;
359
+ cursor: pointer;
360
+ background: transparent;
361
+ border: 0;
362
+ border-radius: var(--om-radius-100, 4px);
363
+ }
364
+ .om-component-ui-select-search-clear:focus-visible {
365
+ outline: 2px solid var(--om-border-brand, #073387);
366
+ outline-offset: 2px;
367
+ }
357
368
  .om-component-ui-select-search-input {
358
369
  flex: 1 1 auto;
359
370
  min-width: 0;
@@ -21,6 +21,9 @@ exports.normalizeSize = normalizeSize;
21
21
  exports.removeMultipleValue = removeMultipleValue;
22
22
  exports.toggleMultipleValue = toggleMultipleValue;
23
23
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
24
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
24
27
  function normalizeSize(size) {
25
28
  if (size === 'small' || size === 'extra-small') return size;
26
29
  return 'large';
@@ -64,8 +67,28 @@ function findOptionByValue(options, value) {
64
67
  }
65
68
  function getSelectedOptions(options, value, multiple) {
66
69
  if (isSelectMultipleValue(value, multiple)) {
70
+ if (value.length === 0) return [];
71
+ var optionsByValue = new Map();
72
+ var _iterator = _createForOfIteratorHelper(options),
73
+ _step;
74
+ try {
75
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
76
+ var option = _step.value;
77
+ var optionValue = option.value;
78
+ // `find` used strict equality: NaN never matched, and duplicate values
79
+ // resolved to the first option. Map alone would change both rules.
80
+ if (!Number.isNaN(optionValue) && !optionsByValue.has(optionValue)) {
81
+ optionsByValue.set(optionValue, option);
82
+ }
83
+ }
84
+ } catch (err) {
85
+ _iterator.e(err);
86
+ } finally {
87
+ _iterator.f();
88
+ }
67
89
  return value.map(function (item) {
68
- return findOptionByValue(options, item);
90
+ var _a;
91
+ return (_a = optionsByValue.get(item)) !== null && _a !== void 0 ? _a : null;
69
92
  }).filter(function (option) {
70
93
  return option !== null;
71
94
  });
@@ -152,8 +175,9 @@ function getMultipleValue(value) {
152
175
  return Array.isArray(value) ? value : [];
153
176
  }
154
177
  function getOptionsByValues(options, values) {
178
+ var selectedValues = new Set(values);
155
179
  return options.filter(function (option) {
156
- return values.includes(option.value);
180
+ return selectedValues.has(option.value);
157
181
  });
158
182
  }
159
183
  function toggleMultipleValue(currentValue, optionValue) {
@@ -173,4 +197,4 @@ function removeMultipleValue(currentValue, optionValue) {
173
197
  function isOptionSelected(value, multiple, optionValue) {
174
198
  return isSelectMultipleValue(value, multiple) ? value.includes(optionValue) : value === optionValue;
175
199
  }
176
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L3V0aWxzLnRzIiwiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplU2l6ZSIsInNpemUiLCJGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiZ2V0Rm9udFNpemUiLCJleHRyYWN0T3B0aW9uVGV4dCIsIm9wdGlvbiIsImxhYmVsIiwiU3RyaW5nIiwidmFsdWUiLCJleHRyYWN0Tm9kZVRleHQiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJtdWx0aXBsZSIsIkFycmF5IiwiaXNBcnJheSIsImlzU2VsZWN0T3B0aW9uR3JvdXAiLCJvcHRpb25zIiwiZmluZE9wdGlvbkJ5VmFsdWUiLCJfYSIsImZpbmQiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJtYXAiLCJpdGVtIiwiZmlsdGVyIiwidW5kZWZpbmVkIiwibWF0Y2hlZCIsImdldE9wdGlvblRhZ0xhYmVsIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiZ3JvdXBzIiwidW5ncm91cGVkT3B0aW9ucyIsInVuZ3JvdXBlZEdyb3VwSW5kZXgiLCJwdXNoVW5ncm91cGVkT3B0aW9ucyIsImxlbmd0aCIsInB1c2giLCJrZXkiLCJjb25jYXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwiZmxhdE1hcCIsImdyb3VwIiwiZ2V0T3B0aW9uU2VhcmNoVGV4dCIsImRlc2NyaXB0aW9uIiwic2VhcmNoVGV4dCIsIkJvb2xlYW4iLCJqb2luIiwidHJpbSIsIm1hdGNoZXNPcHRpb25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsImZpbHRlck9wdGlvbiIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmaWx0ZXJPcHRpb25Hcm91cHMiLCJub3JtYWxpemVkU2VhcmNoVmFsdWUiLCJyZWR1Y2UiLCJyZXN1bHQiLCJncm91cExhYmVsVGV4dCIsIm1hdGNoZWRPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0TXVsdGlwbGVWYWx1ZSIsImdldE9wdGlvbnNCeVZhbHVlcyIsInZhbHVlcyIsInRvZ2dsZU11bHRpcGxlVmFsdWUiLCJjdXJyZW50VmFsdWUiLCJvcHRpb25WYWx1ZSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZW1vdmVNdWx0aXBsZVZhbHVlIiwiaXNPcHRpb25TZWxlY3RlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQk0sU0FBVUEsYUFBYUEsQ0FBQ0MsSUFBMEIsRUFBQTtFQUN0RCxJQUFJQSxJQUFJLEtBQUssT0FBTyxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFLE9BQU9BLElBQUk7RUFDM0QsT0FBTyxPQUFPO0FBQ2hCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHdCQUF3QixHQUEyQztFQUN2RUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWCxhQUFhLEVBQUU7QUNsQmpCLENEbUJDO0FBRUssU0FBVUMsV0FBV0EsQ0FBQ0osSUFBZ0IsRUFBQTtFQUMxQyxPQUFPQyx3QkFBd0IsQ0FBQ0QsSUFBSSxDQUFDO0FBQ3ZDO0FBRU0sU0FBVUssaUJBQWlCQSxDQUFDQyxNQUFvQixFQUFBO0VBQ3BELElBQUksT0FBT0EsTUFBTSxDQUFDQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU9ELE1BQU0sQ0FBQ0MsS0FBSyxLQUFLLFFBQVEsRUFBRTtJQUN4RSxPQUFPQyxNQUFNLENBQUNGLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0VBQzdCO0VBRUEsT0FBT0MsTUFBTSxDQUFDRixNQUFNLENBQUNHLEtBQUssQ0FBQztBQUM3QjtBQUVBLFNBQVNDLGVBQWVBLENBQUNELEtBQTJELEVBQUE7RUFDbEYsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDMUQsT0FBT0QsTUFBTSxDQUFDQyxLQUFLLENBQUM7RUFDdEI7RUFFQSxPQUFPLEVBQUU7QUFD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LEVBQUU7QUFDMUM7QUFFTSxTQUFVb0Qsa0JBQWtCQSxDQUNoQzdDLE9BQXVCLEVBQ3ZCOEMsTUFBMkIsRUFBQTtFQUUzQixPQUFPOUMsT0FBTyxDQUFDTyxNQUFNLENBQUMsVUFBQ2pCLE1BQU07SUFBQSxPQUFLd0QsTUFBTSxDQUFDWCxRQUFRLENBQUM3QyxNQUFNLENBQUNHLEtBQUssQ0FBQztFQUFBLEVBQUM7QUFDbEU7QUFFTSxTQUFVc0QsbUJBQW1CQSxDQUNqQ0MsWUFBeUIsRUFDekJDLFdBQThCLEVBQUE7RUFFOUIsSUFBTUgsTUFBTSxHQUFHRixnQkFBZ0IsQ0FBQ0ksWUFBWSxDQUFDO0VBRTdDLElBQUlGLE1BQU0sQ0FBQ1gsUUFBUSxDQUFDYyxXQUFXLENBQUMsRUFBRTtJQUNoQyxPQUFPSCxNQUFNLENBQUN2QyxNQUFNLENBQUMsVUFBQ0QsSUFBSTtNQUFBLE9BQUtBLElBQUksS0FBSzJDLFdBQVc7SUFBQSxFQUFDO0VBQ3REO0VBRUEsVUFBQTlCLE1BQUEsS0FBQStCLG1CQUFBLGFBQVdKLE1BQU0sSUFBRUcsV0FBVztBQUNoQztBQUVNLFNBQVVFLG1CQUFtQkEsQ0FDakNILFlBQXlCLEVBQ3pCQyxXQUE4QixFQUFBO0VBRTlCLE9BQU9MLGdCQUFnQixDQUFDSSxZQUFZLENBQUMsQ0FBQ3pDLE1BQU0sQ0FBQyxVQUFDRCxJQUFJO0lBQUEsT0FBS0EsSUFBSSxLQUFLMkMsV0FBVztFQUFBLEVBQUM7QUFDOUU7QUFFTSxTQUFVRyxnQkFBZ0JBLENBQzlCM0QsS0FBa0IsRUFDbEJHLFFBQWlCLEVBQ2pCcUQsV0FBOEIsRUFBQTtFQUU5QixPQUFPdEQscUJBQXFCLENBQUNGLEtBQUssRUFBRUcsUUFBUSxDQUFDLEdBQ3pDSCxLQUFLLENBQUMwQyxRQUFRLENBQUNjLFdBQVcsQ0FBQyxHQUMzQnhELEtBQUssS0FBS3dELFdBQVc7QUFDM0IiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTaXplKHNpemUpIHtcbiAgICBpZiAoc2l6ZSA9PT0gJ3NtYWxsJyB8fCBzaXplID09PSAnZXh0cmEtc21hbGwnKVxuICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICByZXR1cm4gJ2xhcmdlJztcbn1cbi8vIGBleHRyYS1zbWFsbGAgaXMgYSAzMnB4IHRyaWdnZXIgdGhhdCByZW5kZXJzIGl0cyB2YWx1ZSBhdCBgYm9keSBzbWAgKDEycHgpIHNvXG4vLyB0aGUgY29sbGFwc2VkIHRyaWdnZXIgbWF0Y2hlcyB0aGUgMTJweCBvcHRpb24gcm93cyB0aGUgRmlsdGVyIGRyb3Bkb3duc1xuLy8gKE9wdGlvbkZpbHRlci9EYXRlUmFuZ2UvQXNzZXQvQWNjb3VudCkgcmVuZGVyIGluIHRoZSBvcGVuIHBhbmVsLiBUaGlzIHNpemVcbi8vIGFsc28gZmxvd3MgaW50byBgcmVuZGVyVmFsdWVNZXRhLmZvbnRTaXplYCwga2VlcGluZyBjdXN0b20gdHJpZ2dlci9vcHRpb25cbi8vIGNvbnRlbnQgYWxpZ25lZCB3aXRoIHRoZSB0cmlnZ2VyIHR5cG9ncmFwaHkuXG5jb25zdCBGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUgPSB7XG4gICAgbGFyZ2U6ICdsZycsXG4gICAgc21hbGw6ICdtZCcsXG4gICAgJ2V4dHJhLXNtYWxsJzogJ3NtJyxcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoc2l6ZSkge1xuICAgIHJldHVybiBGT05UX1NJWkVfQllfU0VMRUNUX1NJWkVbc2l6ZV07XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcob3B0aW9uLmxhYmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhvcHRpb24udmFsdWUpO1xufVxuZnVuY3Rpb24gZXh0cmFjdE5vZGVUZXh0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpIHtcbiAgICByZXR1cm4gbXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pIHtcbiAgICByZXR1cm4gJ29wdGlvbnMnIGluIG9wdGlvbiAmJiBBcnJheS5pc0FycmF5KG9wdGlvbi5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdGlvbnMsIHZhbHVlLCBtdWx0aXBsZSkge1xuICAgIGlmIChpc1NlbGVjdE11bHRpcGxlVmFsdWUodmFsdWUsIG11bHRpcGxlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIGl0ZW0pKVxuICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG51bGwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZCA/IFttYXRjaGVkXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblRhZ0xhYmVsKG9wdGlvbikge1xuICAgIHJldHVybiBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXBzID0gW107XG4gICAgbGV0IHVuZ3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgICBsZXQgdW5ncm91cGVkR3JvdXBJbmRleCA9IDA7XG4gICAgY29uc3QgcHVzaFVuZ3JvdXBlZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh1bmdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogYHVuZ3JvdXBlZC0ke3VuZ3JvdXBlZEdyb3VwSW5kZXh9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHVuZ3JvdXBlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1bmdyb3VwZWRPcHRpb25zID0gW107XG4gICAgICAgIHVuZ3JvdXBlZEdyb3VwSW5kZXggKz0gMTtcbiAgICB9O1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICBwdXNoVW5ncm91cGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSA/IFN0cmluZyhvcHRpb24ua2V5KSA6IGBncm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZ3JvdXBlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHB1c2hVbmdyb3VwZWRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9uR3JvdXBzKGdyb3Vwcykge1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNlYXJjaFRleHQob3B0aW9uKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSxcbiAgICAgICAgZXh0cmFjdE5vZGVUZXh0KG9wdGlvbi5kZXNjcmlwdGlvbiksXG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0LFxuICAgICAgICBTdHJpbmcob3B0aW9uLnZhbHVlKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudHJpbSgpO1xufVxuZnVuY3Rpb24gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3B0aW9uU2VhcmNoVGV4dChvcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wdGlvbkdyb3Vwcyhncm91cHMsIHNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgocmVzdWx0LCBncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cExhYmVsVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChncm91cC5sYWJlbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbnMgPSBncm91cExhYmVsVGV4dC5pbmNsdWRlcyhub3JtYWxpemVkU2VhcmNoVmFsdWUpXG4gICAgICAgICAgICA/IGdyb3VwLm9wdGlvbnNcbiAgICAgICAgICAgIDogZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pKTtcbiAgICAgICAgaWYgKG1hdGNoZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdyb3VwKSwgeyBvcHRpb25zOiBtYXRjaGVkT3B0aW9ucyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpcGxlVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvbnNCeVZhbHVlcyhvcHRpb25zLCB2YWx1ZXMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gdmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGdldE11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gb3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnZhbHVlcywgb3B0aW9uVmFsdWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIHJldHVybiBnZXRNdWx0aXBsZVZhbHVlKGN1cnJlbnRWYWx1ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25WYWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZCh2YWx1ZSwgbXVsdGlwbGUsIG9wdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpXG4gICAgICAgID8gdmFsdWUuaW5jbHVkZXMob3B0aW9uVmFsdWUpXG4gICAgICAgIDogdmFsdWUgPT09IG9wdGlvblZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
200
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L3V0aWxzLnRzIiwiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplU2l6ZSIsInNpemUiLCJGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiZ2V0Rm9udFNpemUiLCJleHRyYWN0T3B0aW9uVGV4dCIsIm9wdGlvbiIsImxhYmVsIiwiU3RyaW5nIiwidmFsdWUiLCJleHRyYWN0Tm9kZVRleHQiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJtdWx0aXBsZSIsIkFycmF5IiwiaXNBcnJheSIsImlzU2VsZWN0T3B0aW9uR3JvdXAiLCJvcHRpb25zIiwiZmluZE9wdGlvbkJ5VmFsdWUiLCJfYSIsImZpbmQiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJsZW5ndGgiLCJvcHRpb25zQnlWYWx1ZSIsIk1hcCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJvcHRpb25WYWx1ZSIsIk51bWJlciIsImlzTmFOIiwiaGFzIiwic2V0IiwiZXJyIiwiZSIsImYiLCJtYXAiLCJpdGVtIiwiZ2V0IiwiZmlsdGVyIiwidW5kZWZpbmVkIiwibWF0Y2hlZCIsImdldE9wdGlvblRhZ0xhYmVsIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiZ3JvdXBzIiwidW5ncm91cGVkT3B0aW9ucyIsInVuZ3JvdXBlZEdyb3VwSW5kZXgiLCJwdXNoVW5ncm91cGVkT3B0aW9ucyIsInB1c2giLCJrZXkiLCJjb25jYXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwiZmxhdE1hcCIsImdyb3VwIiwiZ2V0T3B0aW9uU2VhcmNoVGV4dCIsImRlc2NyaXB0aW9uIiwic2VhcmNoVGV4dCIsIkJvb2xlYW4iLCJqb2luIiwidHJpbSIsIm1hdGNoZXNPcHRpb25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsImZpbHRlck9wdGlvbiIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmaWx0ZXJPcHRpb25Hcm91cHMiLCJub3JtYWxpemVkU2VhcmNoVmFsdWUiLCJyZWR1Y2UiLCJyZXN1bHQiLCJncm91cExhYmVsVGV4dCIsIm1hdGNoZWRPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0TXVsdGlwbGVWYWx1ZSIsImdldE9wdGlvbnNCeVZhbHVlcyIsInZhbHVlcyIsInNlbGVjdGVkVmFsdWVzIiwiU2V0IiwidG9nZ2xlTXVsdGlwbGVWYWx1ZSIsImN1cnJlbnRWYWx1ZSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZW1vdmVNdWx0aXBsZVZhbHVlIiwiaXNPcHRpb25TZWxlY3RlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQk0sU0FBVUEsYUFBYUEsQ0FBQ0MsSUFBMEIsRUFBQTtFQUN0RCxJQUFJQSxJQUFJLEtBQUssT0FBTyxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFLE9BQU9BLElBQUk7RUFDM0QsT0FBTyxPQUFPO0FBQ2hCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHdCQUF3QixHQUEyQztFQUN2RUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWCxhQUFhLEVBQUU7QUNsQmpCLENEbUJDO0FBRUssU0FBVUMsV0FBV0EsQ0FBQ0osSUFBZ0IsRUFBQTtFQUMxQyxPQUFPQyx3QkFBd0IsQ0FBQ0QsSUFBSSxDQUFDO0FBQ3ZDO0FBRU0sU0FBVUssaUJBQWlCQSxDQUFDQyxNQUFvQixFQUFBO0VBQ3BELElBQUksT0FBT0EsTUFBTSxDQUFDQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU9ELE1BQU0sQ0FBQ0MsS0FBSyxLQUFLLFFBQVEsRUFBRTtJQUN4RSxPQUFPQyxNQUFNLENBQUNGLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0VBQzdCO0VBRUEsT0FBT0MsTUFBTSxDQUFDRixNQUFNLENBQUNHLEtBQUssQ0FB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QixFQUFBO0VBRTNCLElBQU1DLGNBQWMsR0FBRyxJQUFJQyxHQUFHLENBQUNGLE1BQU0sQ0FBQztFQUN0QyxPQUFPL0QsT0FBTyxDQUFDeUIsTUFBTSxDQUFDLFVBQUNuQyxNQUFNO0lBQUEsT0FBSzBFLGNBQWMsQ0FBQy9DLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQ0csS0FBSyxDQUFDO0VBQUEsRUFBQztBQUNyRTtBQUVNLFNBQVV5RSxtQkFBbUJBLENBQ2pDQyxZQUF5QixFQUN6QnJELFdBQThCLEVBQUE7RUFFOUIsSUFBTWlELE1BQU0sR0FBR0YsZ0JBQWdCLENBQUNNLFlBQVksQ0FBQztFQUU3QyxJQUFJSixNQUFNLENBQUNYLFFBQVEsQ0FBQ3RDLFdBQVcsQ0FBQyxFQUFFO0lBQ2hDLE9BQU9pRCxNQUFNLENBQUN0QyxNQUFNLENBQUMsVUFBQ0YsSUFBSTtNQUFBLE9BQUtBLElBQUksS0FBS1QsV0FBVztJQUFBLEVBQUM7RUFDdEQ7RUFFQSxVQUFBc0IsTUFBQSxLQUFBZ0MsbUJBQUEsYUFBV0wsTUFBTSxJQUFFakQsV0FBVztBQUNoQztBQUVNLFNBQVV1RCxtQkFBbUJBLENBQ2pDRixZQUF5QixFQUN6QnJELFdBQThCLEVBQUE7RUFFOUIsT0FBTytDLGdCQUFnQixDQUFDTSxZQUFZLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxVQUFDRixJQUFJO0lBQUEsT0FBS0EsSUFBSSxLQUFLVCxXQUFXO0VBQUEsRUFBQztBQUM5RTtBQUVNLFNBQVV3RCxnQkFBZ0JBLENBQzlCN0UsS0FBa0IsRUFDbEJHLFFBQWlCLEVBQ2pCa0IsV0FBOEIsRUFBQTtFQUU5QixPQUFPbkIscUJBQXFCLENBQUNGLEtBQUssRUFBRUcsUUFBUSxDQUFDLEdBQ3pDSCxLQUFLLENBQUMyRCxRQUFRLENBQUN0QyxXQUFXLENBQUMsR0FDM0JyQixLQUFLLEtBQUtxQixXQUFXO0FBQzNCIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2l6ZShzaXplKSB7XG4gICAgaWYgKHNpemUgPT09ICdzbWFsbCcgfHwgc2l6ZSA9PT0gJ2V4dHJhLXNtYWxsJylcbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgcmV0dXJuICdsYXJnZSc7XG59XG4vLyBgZXh0cmEtc21hbGxgIGlzIGEgMzJweCB0cmlnZ2VyIHRoYXQgcmVuZGVycyBpdHMgdmFsdWUgYXQgYGJvZHkgc21gICgxMnB4KSBzb1xuLy8gdGhlIGNvbGxhcHNlZCB0cmlnZ2VyIG1hdGNoZXMgdGhlIDEycHggb3B0aW9uIHJvd3MgdGhlIEZpbHRlciBkcm9wZG93bnNcbi8vIChPcHRpb25GaWx0ZXIvRGF0ZVJhbmdlL0Fzc2V0L0FjY291bnQpIHJlbmRlciBpbiB0aGUgb3BlbiBwYW5lbC4gVGhpcyBzaXplXG4vLyBhbHNvIGZsb3dzIGludG8gYHJlbmRlclZhbHVlTWV0YS5mb250U2l6ZWAsIGtlZXBpbmcgY3VzdG9tIHRyaWdnZXIvb3B0aW9uXG4vLyBjb250ZW50IGFsaWduZWQgd2l0aCB0aGUgdHJpZ2dlciB0eXBvZ3JhcGh5LlxuY29uc3QgRk9OVF9TSVpFX0JZX1NFTEVDVF9TSVpFID0ge1xuICAgIGxhcmdlOiAnbGcnLFxuICAgIHNtYWxsOiAnbWQnLFxuICAgICdleHRyYS1zbWFsbCc6ICdzbScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbnRTaXplKHNpemUpIHtcbiAgICByZXR1cm4gRk9OVF9TSVpFX0JZX1NFTEVDVF9TSVpFW3NpemVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uLmxhYmVsID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3B0aW9uLmxhYmVsID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9wdGlvbi5sYWJlbCk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3ROb2RlVGV4dCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdE11bHRpcGxlVmFsdWUodmFsdWUsIG11bHRpcGxlKSB7XG4gICAgcmV0dXJuIG11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0T3B0aW9uR3JvdXAob3B0aW9uKSB7XG4gICAgcmV0dXJuICdvcHRpb25zJyBpbiBvcHRpb24gJiYgQXJyYXkuaXNBcnJheShvcHRpb24ub3B0aW9ucyk7XG59XG5mdW5jdGlvbiBmaW5kT3B0aW9uQnlWYWx1ZShvcHRpb25zLCB2YWx1ZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGVkT3B0aW9ucyhvcHRpb25zLCB2YWx1ZSwgbXVsdGlwbGUpIHtcbiAgICBpZiAoaXNTZWxlY3RNdWx0aXBsZVZhbHVlKHZhbHVlLCBtdWx0aXBsZSkpIHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0J5VmFsdWUgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgICAgLy8gYGZpbmRgIHVzZWQgc3RyaWN0IGVxdWFsaXR5OiBOYU4gbmV2ZXIgbWF0Y2hlZCwgYW5kIGR1cGxpY2F0ZSB2YWx1ZXNcbiAgICAgICAgICAgIC8vIHJlc29sdmVkIHRvIHRoZSBmaXJzdCBvcHRpb24uIE1hcCBhbG9uZSB3b3VsZCBjaGFuZ2UgYm90aCBydWxlcy5cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG9wdGlvblZhbHVlKSAmJiAhb3B0aW9uc0J5VmFsdWUuaGFzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNCeVZhbHVlLnNldChvcHRpb25WYWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gb3B0aW9uc0J5VmFsdWUuZ2V0KGl0ZW0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsOyB9KVxuICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG51bGwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZCA/IFttYXRjaGVkXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblRhZ0xhYmVsKG9wdGlvbikge1xuICAgIHJldHVybiBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXBzID0gW107XG4gICAgbGV0IHVuZ3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgICBsZXQgdW5ncm91cGVkR3JvdXBJbmRleCA9IDA7XG4gICAgY29uc3QgcHVzaFVuZ3JvdXBlZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh1bmdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogYHVuZ3JvdXBlZC0ke3VuZ3JvdXBlZEdyb3VwSW5kZXh9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHVuZ3JvdXBlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1bmdyb3VwZWRPcHRpb25zID0gW107XG4gICAgICAgIHVuZ3JvdXBlZEdyb3VwSW5kZXggKz0gMTtcbiAgICB9O1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICBwdXNoVW5ncm91cGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSA/IFN0cmluZyhvcHRpb24ua2V5KSA6IGBncm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZ3JvdXBlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHB1c2hVbmdyb3VwZWRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9uR3JvdXBzKGdyb3Vwcykge1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNlYXJjaFRleHQob3B0aW9uKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSxcbiAgICAgICAgZXh0cmFjdE5vZGVUZXh0KG9wdGlvbi5kZXNjcmlwdGlvbiksXG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0LFxuICAgICAgICBTdHJpbmcob3B0aW9uLnZhbHVlKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudHJpbSgpO1xufVxuZnVuY3Rpb24gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3B0aW9uU2VhcmNoVGV4dChvcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wdGlvbkdyb3Vwcyhncm91cHMsIHNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgocmVzdWx0LCBncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cExhYmVsVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChncm91cC5sYWJlbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbnMgPSBncm91cExhYmVsVGV4dC5pbmNsdWRlcyhub3JtYWxpemVkU2VhcmNoVmFsdWUpXG4gICAgICAgICAgICA/IGdyb3VwLm9wdGlvbnNcbiAgICAgICAgICAgIDogZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pKTtcbiAgICAgICAgaWYgKG1hdGNoZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdyb3VwKSwgeyBvcHRpb25zOiBtYXRjaGVkT3B0aW9ucyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpcGxlVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvbnNCeVZhbHVlcyhvcHRpb25zLCB2YWx1ZXMpIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IG5ldyBTZXQodmFsdWVzKTtcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gc2VsZWN0ZWRWYWx1ZXMuaGFzKG9wdGlvbi52YWx1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGdldE11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gb3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnZhbHVlcywgb3B0aW9uVmFsdWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIHJldHVybiBnZXRNdWx0aXBsZVZhbHVlKGN1cnJlbnRWYWx1ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25WYWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZCh2YWx1ZSwgbXVsdGlwbGUsIG9wdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpXG4gICAgICAgID8gdmFsdWUuaW5jbHVkZXMob3B0aW9uVmFsdWUpXG4gICAgICAgIDogdmFsdWUgPT09IG9wdGlvblZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=