@pie-lib/config-ui 12.0.0-next.0 → 12.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/lib/__tests__/alert-dialog.test.js +262 -0
  2. package/lib/__tests__/checkbox.test.js +227 -0
  3. package/lib/__tests__/choice-utils.test.js +14 -0
  4. package/lib/__tests__/form-section.test.js +252 -0
  5. package/lib/__tests__/help.test.js +270 -0
  6. package/lib/__tests__/input.test.js +268 -0
  7. package/lib/__tests__/langs.test.js +541 -0
  8. package/lib/__tests__/number-text-field-custom.test.js +362 -0
  9. package/lib/__tests__/number-text-field.test.js +421 -0
  10. package/lib/__tests__/radio-with-label.test.js +233 -0
  11. package/lib/__tests__/settings-panel.test.js +184 -0
  12. package/lib/__tests__/settings.test.js +653 -0
  13. package/lib/__tests__/tabs.test.js +211 -0
  14. package/lib/__tests__/two-choice.test.js +124 -0
  15. package/lib/__tests__/with-stateful-model.test.js +221 -0
  16. package/lib/alert-dialog.js +1 -1
  17. package/lib/checkbox.js +1 -1
  18. package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
  19. package/lib/choice-configuration/__tests__/index.test.js +253 -0
  20. package/lib/choice-configuration/feedback-menu.js +1 -1
  21. package/lib/choice-configuration/index.js +3 -3
  22. package/lib/choice-configuration/index.js.map +1 -1
  23. package/lib/choice-utils.js +1 -1
  24. package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
  25. package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
  26. package/lib/feedback-config/feedback-selector.js +3 -3
  27. package/lib/feedback-config/feedback-selector.js.map +1 -1
  28. package/lib/feedback-config/group.js +1 -1
  29. package/lib/feedback-config/index.js +1 -1
  30. package/lib/form-section.js +1 -1
  31. package/lib/help.js +1 -1
  32. package/lib/index.js +1 -1
  33. package/lib/input.js +1 -1
  34. package/lib/inputs.js +1 -1
  35. package/lib/langs.js +1 -1
  36. package/lib/layout/__tests__/config.layout.test.js +70 -0
  37. package/lib/layout/__tests__/layout-content.test.js +6 -0
  38. package/lib/layout/config-layout.js +1 -1
  39. package/lib/layout/index.js +1 -1
  40. package/lib/layout/layout-contents.js +1 -1
  41. package/lib/layout/settings-box.js +1 -1
  42. package/lib/mui-box/index.js +1 -1
  43. package/lib/number-text-field-custom.js +1 -1
  44. package/lib/number-text-field.js +1 -1
  45. package/lib/radio-with-label.js +1 -1
  46. package/lib/settings/display-size.js +1 -1
  47. package/lib/settings/index.js +1 -1
  48. package/lib/settings/panel.js +1 -1
  49. package/lib/settings/settings-radio-label.js +1 -1
  50. package/lib/settings/toggle.js +1 -1
  51. package/lib/tabs/index.js +1 -1
  52. package/lib/tags-input/__tests__/index.test.js +183 -0
  53. package/lib/tags-input/index.js +1 -1
  54. package/lib/two-choice.js +1 -1
  55. package/lib/with-stateful-model.js +1 -1
  56. package/package.json +5 -13
  57. package/src/choice-configuration/__tests__/index.test.jsx +1 -1
  58. package/src/choice-configuration/index.jsx +68 -75
  59. package/src/feedback-config/__tests__/feedback-selector.test.jsx +3 -13
  60. package/src/feedback-config/feedback-selector.jsx +3 -7
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _formSection = _interopRequireDefault(require("../form-section"));
7
+ describe('FormSection Component', function () {
8
+ describe('Rendering', function () {
9
+ it('should render with label and children', function () {
10
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
11
+ label: "Settings"
12
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Child content")));
13
+ expect(_react2.screen.getByText('Settings')).toBeInTheDocument();
14
+ expect(_react2.screen.getByText('Child content')).toBeInTheDocument();
15
+ });
16
+ it('should render label as subtitle1 typography', function () {
17
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
18
+ label: "Configuration"
19
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
20
+ container = _render.container;
21
+ var typography = container.querySelector('[class*="MuiTypography"]');
22
+ expect(typography).toBeInTheDocument();
23
+ });
24
+ it('should render with custom className', function () {
25
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
26
+ label: "Custom",
27
+ className: "custom-class"
28
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
29
+ container = _render2.container;
30
+ expect(container.querySelector('.custom-class')).toBeInTheDocument();
31
+ });
32
+ it('should render multiple children', function () {
33
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
34
+ label: "Multiple Children"
35
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "First child"), /*#__PURE__*/_react["default"].createElement("div", null, "Second child"), /*#__PURE__*/_react["default"].createElement("div", null, "Third child")));
36
+ expect(_react2.screen.getByText('First child')).toBeInTheDocument();
37
+ expect(_react2.screen.getByText('Second child')).toBeInTheDocument();
38
+ expect(_react2.screen.getByText('Third child')).toBeInTheDocument();
39
+ });
40
+ it('should render with single child', function () {
41
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
42
+ label: "Single Child"
43
+ }, /*#__PURE__*/_react["default"].createElement("input", {
44
+ type: "text",
45
+ placeholder: "Input"
46
+ })));
47
+ expect(_react2.screen.getByPlaceholderText('Input')).toBeInTheDocument();
48
+ });
49
+ it('should render with complex child components', function () {
50
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
51
+ label: "Complex"
52
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, "Name:"), /*#__PURE__*/_react["default"].createElement("input", {
53
+ type: "text",
54
+ placeholder: "Enter name"
55
+ })), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, "Email:"), /*#__PURE__*/_react["default"].createElement("input", {
56
+ type: "email",
57
+ placeholder: "Enter email"
58
+ }))));
59
+ expect(_react2.screen.getByPlaceholderText('Enter name')).toBeInTheDocument();
60
+ expect(_react2.screen.getByPlaceholderText('Enter email')).toBeInTheDocument();
61
+ });
62
+ });
63
+ describe('Labels', function () {
64
+ it('should display different labels', function () {
65
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
66
+ label: "First Label"
67
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
68
+ rerender = _render3.rerender;
69
+ expect(_react2.screen.getByText('First Label')).toBeInTheDocument();
70
+ rerender(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
71
+ label: "Second Label"
72
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
73
+ expect(_react2.screen.getByText('Second Label')).toBeInTheDocument();
74
+ expect(_react2.screen.queryByText('First Label')).not.toBeInTheDocument();
75
+ });
76
+ it('should handle empty label', function () {
77
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
78
+ label: ""
79
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
80
+ container = _render4.container;
81
+ expect(container.querySelector('[class*="MuiTypography"]')).toBeInTheDocument();
82
+ expect(_react2.screen.getByText('Content')).toBeInTheDocument();
83
+ });
84
+ it('should handle long labels', function () {
85
+ var longLabel = 'This is a very long label that should wrap properly within the form section';
86
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
87
+ label: longLabel
88
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
89
+ expect(_react2.screen.getByText(longLabel)).toBeInTheDocument();
90
+ });
91
+ it('should handle special characters in labels', function () {
92
+ var specialLabel = 'Settings & Configuration < Advanced > Test @ #1';
93
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
94
+ label: specialLabel
95
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
96
+ expect(_react2.screen.getByText(specialLabel)).toBeInTheDocument();
97
+ });
98
+ });
99
+ describe('Styling and Layout', function () {
100
+ it('should apply default spacing', function () {
101
+ var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
102
+ label: "Spaced"
103
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
104
+ container = _render5.container;
105
+ var formSection = container.querySelector('[class*="MuiBox"], div');
106
+ expect(formSection).toBeInTheDocument();
107
+ });
108
+ it('should apply labelExtraStyle to the label', function () {
109
+ var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
110
+ label: "Styled Label",
111
+ labelExtraStyle: {
112
+ color: 'red',
113
+ fontWeight: 'bold'
114
+ }
115
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
116
+ container = _render6.container;
117
+ var typography = container.querySelector('[class*="MuiTypography"]');
118
+ expect(typography).toHaveStyle('color: red');
119
+ expect(typography).toHaveStyle('fontWeight: bold');
120
+ });
121
+ it('should apply multiple labelExtraStyle properties', function () {
122
+ var extraStyle = {
123
+ fontSize: '18px',
124
+ margin: '10px',
125
+ padding: '5px'
126
+ };
127
+ var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
128
+ label: "Multi-styled",
129
+ labelExtraStyle: extraStyle
130
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
131
+ container = _render7.container;
132
+ var typography = container.querySelector('[class*="MuiTypography"]');
133
+ expect(typography).toHaveStyle('fontSize: 18px');
134
+ expect(typography).toHaveStyle('margin: 10px');
135
+ expect(typography).toHaveStyle('padding: 5px');
136
+ });
137
+ it('should handle no labelExtraStyle', function () {
138
+ var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
139
+ label: "No Extra Style"
140
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
141
+ container = _render8.container;
142
+ expect(container.querySelector('[class*="MuiTypography"]')).toBeInTheDocument();
143
+ });
144
+ });
145
+ describe('CSS classes', function () {
146
+ it('should support multiple custom classes', function () {
147
+ var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
148
+ label: "Test",
149
+ className: "class1 class2 class3"
150
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
151
+ container = _render9.container;
152
+ var element = container.querySelector('.class1.class2.class3');
153
+ expect(element).toBeInTheDocument();
154
+ });
155
+ it('should work without custom className', function () {
156
+ var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
157
+ label: "Test"
158
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
159
+ container = _render0.container;
160
+ expect(container.firstChild).toBeInTheDocument();
161
+ });
162
+ });
163
+ describe('Content variations', function () {
164
+ it('should render form inputs as children', function () {
165
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
166
+ label: "Form Inputs"
167
+ }, /*#__PURE__*/_react["default"].createElement("input", {
168
+ type: "text",
169
+ placeholder: "Text input"
170
+ }), /*#__PURE__*/_react["default"].createElement("input", {
171
+ type: "number",
172
+ placeholder: "Number input"
173
+ }), /*#__PURE__*/_react["default"].createElement("textarea", {
174
+ placeholder: "Text area"
175
+ })));
176
+ expect(_react2.screen.getByPlaceholderText('Text input')).toBeInTheDocument();
177
+ expect(_react2.screen.getByPlaceholderText('Number input')).toBeInTheDocument();
178
+ expect(_react2.screen.getByPlaceholderText('Text area')).toBeInTheDocument();
179
+ });
180
+ it('should render lists as children', function () {
181
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
182
+ label: "Options"
183
+ }, /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Option 1"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 2"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 3"))));
184
+ expect(_react2.screen.getByText('Option 1')).toBeInTheDocument();
185
+ expect(_react2.screen.getByText('Option 2')).toBeInTheDocument();
186
+ expect(_react2.screen.getByText('Option 3')).toBeInTheDocument();
187
+ });
188
+ it('should render buttons as children', function () {
189
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
190
+ label: "Actions"
191
+ }, /*#__PURE__*/_react["default"].createElement("button", null, "Save"), /*#__PURE__*/_react["default"].createElement("button", null, "Cancel")));
192
+ expect(_react2.screen.getByRole('button', {
193
+ name: 'Save'
194
+ })).toBeInTheDocument();
195
+ expect(_react2.screen.getByRole('button', {
196
+ name: 'Cancel'
197
+ })).toBeInTheDocument();
198
+ });
199
+ it('should render nested form sections', function () {
200
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
201
+ label: "Outer"
202
+ }, /*#__PURE__*/_react["default"].createElement(_formSection["default"], {
203
+ label: "Inner"
204
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Nested content"))));
205
+ expect(_react2.screen.getByText('Outer')).toBeInTheDocument();
206
+ expect(_react2.screen.getByText('Inner')).toBeInTheDocument();
207
+ expect(_react2.screen.getByText('Nested content')).toBeInTheDocument();
208
+ });
209
+ });
210
+ describe('Edge cases', function () {
211
+ it('should render with conditional children', function () {
212
+ var showContent = true;
213
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
214
+ label: "Conditional"
215
+ }, showContent && /*#__PURE__*/_react["default"].createElement("div", null, "Visible"), !showContent && /*#__PURE__*/_react["default"].createElement("div", null, "Hidden")));
216
+ expect(_react2.screen.getByText('Visible')).toBeInTheDocument();
217
+ expect(_react2.screen.queryByText('Hidden')).not.toBeInTheDocument();
218
+ });
219
+ it('should update when children change', function () {
220
+ var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
221
+ label: "Dynamic"
222
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Initial content"))),
223
+ rerender = _render1.rerender;
224
+ expect(_react2.screen.getByText('Initial content')).toBeInTheDocument();
225
+ rerender(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
226
+ label: "Dynamic"
227
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Updated content")));
228
+ expect(_react2.screen.queryByText('Initial content')).not.toBeInTheDocument();
229
+ expect(_react2.screen.getByText('Updated content')).toBeInTheDocument();
230
+ });
231
+ });
232
+ describe('Accessibility', function () {
233
+ it('should have proper heading hierarchy', function () {
234
+ var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
235
+ label: "Accessible Section"
236
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
237
+ container = _render10.container;
238
+ var typography = container.querySelector('[class*="MuiTypography"]');
239
+ expect(typography).toBeInTheDocument();
240
+ });
241
+ it('should be properly semantically structured', function () {
242
+ var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
243
+ label: "Semantic"
244
+ }, /*#__PURE__*/_react["default"].createElement("input", {
245
+ type: "text"
246
+ }))),
247
+ container = _render11.container;
248
+ expect(container.querySelector('div')).toBeInTheDocument();
249
+ });
250
+ });
251
+ });
252
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfZm9ybVNlY3Rpb24iLCJkZXNjcmliZSIsIml0IiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImxhYmVsIiwiZXhwZWN0Iiwic2NyZWVuIiwiZ2V0QnlUZXh0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyIiwiY29udGFpbmVyIiwidHlwb2dyYXBoeSIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVuZGVyMiIsImNsYXNzTmFtZSIsInR5cGUiLCJwbGFjZWhvbGRlciIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwiX3JlbmRlcjMiLCJyZXJlbmRlciIsInF1ZXJ5QnlUZXh0Iiwibm90IiwiX3JlbmRlcjQiLCJsb25nTGFiZWwiLCJzcGVjaWFsTGFiZWwiLCJfcmVuZGVyNSIsImZvcm1TZWN0aW9uIiwiX3JlbmRlcjYiLCJsYWJlbEV4dHJhU3R5bGUiLCJjb2xvciIsImZvbnRXZWlnaHQiLCJ0b0hhdmVTdHlsZSIsImV4dHJhU3R5bGUiLCJmb250U2l6ZSIsIm1hcmdpbiIsInBhZGRpbmciLCJfcmVuZGVyNyIsIl9yZW5kZXI4IiwiX3JlbmRlcjkiLCJlbGVtZW50IiwiX3JlbmRlcjAiLCJmaXJzdENoaWxkIiwiZ2V0QnlSb2xlIiwibmFtZSIsInNob3dDb250ZW50IiwiX3JlbmRlcjEiLCJfcmVuZGVyMTAiLCJfcmVuZGVyMTEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Zvcm0tc2VjdGlvbi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBGb3JtU2VjdGlvbiBmcm9tICcuLi9mb3JtLXNlY3Rpb24nO1xuXG5kZXNjcmliZSgnRm9ybVNlY3Rpb24gQ29tcG9uZW50JywgKCkgPT4ge1xuICBkZXNjcmliZSgnUmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggbGFiZWwgYW5kIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZXR0aW5nc1wiPlxuICAgICAgICAgIDxkaXY+Q2hpbGQgY29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdTZXR0aW5ncycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NoaWxkIGNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGxhYmVsIGFzIHN1YnRpdGxlMSB0eXBvZ3JhcGh5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ29uZmlndXJhdGlvblwiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjdXN0b20gY2xhc3NOYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ3VzdG9tXCIgY2xhc3NOYW1lPVwiY3VzdG9tLWNsYXNzXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuY3VzdG9tLWNsYXNzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBtdWx0aXBsZSBjaGlsZHJlbicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiTXVsdGlwbGUgQ2hpbGRyZW5cIj5cbiAgICAgICAgICA8ZGl2PkZpcnN0IGNoaWxkPC9kaXY+XG4gICAgICAgICAgPGRpdj5TZWNvbmQgY2hpbGQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlRoaXJkIGNoaWxkPC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZpcnN0IGNoaWxkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIGNoaWxkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGhpcmQgY2hpbGQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggc2luZ2xlIGNoaWxkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTaW5nbGUgQ2hpbGRcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIklucHV0XCIgLz5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdJbnB1dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjb21wbGV4IGNoaWxkIGNvbXBvbmVudHMnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkNvbXBsZXhcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsPk5hbWU6PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbmFtZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbD5FbWFpbDo8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZW1haWxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VudGVyIG5hbWUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VudGVyIGVtYWlsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdMYWJlbHMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkaXNwbGF5IGRpZmZlcmVudCBsYWJlbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkZpcnN0IExhYmVsXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZpcnN0IExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZWNvbmQgTGFiZWxcIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdGaXJzdCBMYWJlbCcpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IGxhYmVsJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGxvbmcgbGFiZWxzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbG9uZ0xhYmVsID0gJ1RoaXMgaXMgYSB2ZXJ5IGxvbmcgbGFiZWwgdGhhdCBzaG91bGQgd3JhcCBwcm9wZXJseSB3aXRoaW4gdGhlIGZvcm0gc2VjdGlvbic7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD17bG9uZ0xhYmVsfT5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChsb25nTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGxhYmVscycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNwZWNpYWxMYWJlbCA9ICdTZXR0aW5ncyAmIENvbmZpZ3VyYXRpb24gPCBBZHZhbmNlZCA+IFRlc3QgQCAjMSc7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD17c3BlY2lhbExhYmVsfT5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChzcGVjaWFsTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU3R5bGluZyBhbmQgTGF5b3V0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYXBwbHkgZGVmYXVsdCBzcGFjaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiU3BhY2VkXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZm9ybVNlY3Rpb24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aUJveFwiXSwgZGl2Jyk7XG4gICAgICBleHBlY3QoZm9ybVNlY3Rpb24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFwcGx5IGxhYmVsRXh0cmFTdHlsZSB0byB0aGUgbGFiZWwnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gXG4gICAgICAgICAgbGFiZWw9XCJTdHlsZWQgTGFiZWxcIiBcbiAgICAgICAgICBsYWJlbEV4dHJhU3R5bGU9e3sgY29sb3I6ICdyZWQnLCBmb250V2VpZ2h0OiAnYm9sZCcgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0hhdmVTdHlsZSgnY29sb3I6IHJlZCcpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdmb250V2VpZ2h0OiBib2xkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFwcGx5IG11bHRpcGxlIGxhYmVsRXh0cmFTdHlsZSBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFTdHlsZSA9IHtcbiAgICAgICAgZm9udFNpemU6ICcxOHB4JyxcbiAgICAgICAgbWFyZ2luOiAnMTBweCcsXG4gICAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIFxuICAgICAgICAgIGxhYmVsPVwiTXVsdGktc3R5bGVkXCIgXG4gICAgICAgICAgbGFiZWxFeHRyYVN0eWxlPXtleHRyYVN0eWxlfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHlwb2dyYXBoeSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdmb250U2l6ZTogMThweCcpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdtYXJnaW46IDEwcHgnKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0hhdmVTdHlsZSgncGFkZGluZzogNXB4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBubyBsYWJlbEV4dHJhU3R5bGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJObyBFeHRyYSBTdHlsZVwiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0NTUyBjbGFzc2VzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBjdXN0b20gY2xhc3NlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIlRlc3RcIiBjbGFzc05hbWU9XCJjbGFzczEgY2xhc3MyIGNsYXNzM1wiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLmNsYXNzMS5jbGFzczIuY2xhc3MzJyk7XG4gICAgICBleHBlY3QoZWxlbWVudCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgd29yayB3aXRob3V0IGN1c3RvbSBjbGFzc05hbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJUZXN0XCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ29udGVudCB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIGZvcm0gaW5wdXRzIGFzIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJGb3JtIElucHV0c1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiVGV4dCBpbnB1dFwiIC8+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBwbGFjZWhvbGRlcj1cIk51bWJlciBpbnB1dFwiIC8+XG4gICAgICAgICAgPHRleHRhcmVhIHBsYWNlaG9sZGVyPVwiVGV4dCBhcmVhXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdUZXh0IGlucHV0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdOdW1iZXIgaW5wdXQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ1RleHQgYXJlYScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgbGlzdHMgYXMgY2hpbGRyZW4nLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIk9wdGlvbnNcIj5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bGk+T3B0aW9uIDE8L2xpPlxuICAgICAgICAgICAgPGxpPk9wdGlvbiAyPC9saT5cbiAgICAgICAgICAgIDxsaT5PcHRpb24gMzwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3B0aW9uIDEnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdPcHRpb24gMicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ09wdGlvbiAzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBidXR0b25zIGFzIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJBY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnU2F2ZScgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnQ2FuY2VsJyB9KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIG5lc3RlZCBmb3JtIHNlY3Rpb25zJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJPdXRlclwiPlxuICAgICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIklubmVyXCI+XG4gICAgICAgICAgICA8ZGl2Pk5lc3RlZCBjb250ZW50PC9kaXY+XG4gICAgICAgICAgPC9Gb3JtU2VjdGlvbj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3V0ZXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdJbm5lcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ05lc3RlZCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFZGdlIGNhc2VzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggY29uZGl0aW9uYWwgY2hpbGRyZW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBzaG93Q29udGVudCA9IHRydWU7XG5cbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ29uZGl0aW9uYWxcIj5cbiAgICAgICAgICB7c2hvd0NvbnRlbnQgJiYgPGRpdj5WaXNpYmxlPC9kaXY+fVxuICAgICAgICAgIHshc2hvd0NvbnRlbnQgJiYgPGRpdj5IaWRkZW48L2Rpdj59XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1Zpc2libGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ0hpZGRlbicpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXBkYXRlIHdoZW4gY2hpbGRyZW4gY2hhbmdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJEeW5hbWljXCI+XG4gICAgICAgICAgPGRpdj5Jbml0aWFsIGNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSW5pdGlhbCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJEeW5hbWljXCI+XG4gICAgICAgICAgPGRpdj5VcGRhdGVkIGNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdJbml0aWFsIGNvbnRlbnQnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVXBkYXRlZCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBY2Nlc3NpYmlsaXR5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgaGF2ZSBwcm9wZXIgaGVhZGluZyBoaWVyYXJjaHknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJBY2Nlc3NpYmxlIFNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0eXBvZ3JhcGh5ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcyo9XCJNdWlUeXBvZ3JhcGh5XCJdJyk7XG4gICAgICBleHBlY3QodHlwb2dyYXBoeSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgcHJvcGVybHkgc2VtYW50aWNhbGx5IHN0cnVjdHVyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZW1hbnRpY1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdkaXYnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUFHLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxZQUFNO0VBQ3RDQSxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQU07SUFDMUJDLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxZQUFNO01BQ2hELElBQUFDLGNBQU0sZUFDSlAsTUFBQSxZQUFBUSxhQUFBLENBQUNKLFlBQUEsV0FBVztRQUFDSyxLQUFLLEVBQUM7TUFBVSxnQkFDM0JULE1BQUEsWUFBQVEsYUFBQSxjQUFLLGVBQWtCLENBQ1osQ0FDZixDQUFDO01BRURFLE1BQU0sQ0FBQ0MsY0FBTSxDQUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztNQUN4REgsTUFBTSxDQUFDQyxjQUFNLENBQUNDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQztJQUVGUCxFQUFFLENBQUMsNkNBQTZDLEVBQUUsWUFBTTtNQUN0RCxJQUFB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
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _react2 = require("@testing-library/react");
10
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
+ var _help = _interopRequireWildcard(require("../help"));
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
+ describe('HelpButton', function () {
14
+ it('renders help icon button', function () {
15
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, null));
16
+ var button = _react2.screen.getByRole('button');
17
+ expect(button).toBeInTheDocument();
18
+ });
19
+ it('calls onClick when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
20
+ var user, onClick, button;
21
+ return _regenerator["default"].wrap(function (_context) {
22
+ while (1) switch (_context.prev = _context.next) {
23
+ case 0:
24
+ user = _userEvent["default"].setup();
25
+ onClick = jest.fn();
26
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, {
27
+ onClick: onClick
28
+ }));
29
+ button = _react2.screen.getByRole('button');
30
+ _context.next = 1;
31
+ return user.click(button);
32
+ case 1:
33
+ expect(onClick).toHaveBeenCalledTimes(1);
34
+ case 2:
35
+ case "end":
36
+ return _context.stop();
37
+ }
38
+ }, _callee);
39
+ })));
40
+ it('renders with large size', function () {
41
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, null)),
42
+ container = _render.container;
43
+ var button = container.querySelector('button[class*="sizeLarge"]');
44
+ expect(button || _react2.screen.getByRole('button')).toBeInTheDocument();
45
+ });
46
+ });
47
+ describe('HelpDialog', function () {
48
+ var defaultProps = {
49
+ open: true,
50
+ onClose: jest.fn(),
51
+ title: 'Help Title',
52
+ children: 'Help content here'
53
+ };
54
+ beforeEach(function () {
55
+ jest.clearAllMocks();
56
+ });
57
+ it('renders when open is true', function () {
58
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps));
59
+ expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
60
+ expect(_react2.screen.getByText('Help content here')).toBeInTheDocument();
61
+ });
62
+ it('does not render when open is false', function () {
63
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
64
+ open: false
65
+ })));
66
+ expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
67
+ });
68
+ it('displays title correctly', function () {
69
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
70
+ title: "Custom Help"
71
+ })));
72
+ expect(_react2.screen.getByText('Custom Help')).toBeInTheDocument();
73
+ });
74
+ it('displays children content', function () {
75
+ var content = 'This is helpful information';
76
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
77
+ children: content
78
+ })));
79
+ expect(_react2.screen.getByText(content)).toBeInTheDocument();
80
+ });
81
+ it('calls onClose when OK button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
82
+ var user, onClose, okButton;
83
+ return _regenerator["default"].wrap(function (_context2) {
84
+ while (1) switch (_context2.prev = _context2.next) {
85
+ case 0:
86
+ user = _userEvent["default"].setup();
87
+ onClose = jest.fn();
88
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
89
+ onClose: onClose
90
+ })));
91
+ okButton = _react2.screen.getByRole('button', {
92
+ name: /OK/i
93
+ });
94
+ _context2.next = 1;
95
+ return user.click(okButton);
96
+ case 1:
97
+ expect(onClose).toHaveBeenCalledTimes(1);
98
+ case 2:
99
+ case "end":
100
+ return _context2.stop();
101
+ }
102
+ }, _callee2);
103
+ })));
104
+ it('calls onClose when dialog is closed via backdrop', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
105
+ var user, onClose, dialog;
106
+ return _regenerator["default"].wrap(function (_context3) {
107
+ while (1) switch (_context3.prev = _context3.next) {
108
+ case 0:
109
+ user = _userEvent["default"].setup();
110
+ onClose = jest.fn();
111
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
112
+ onClose: onClose
113
+ })));
114
+
115
+ // Simulate backdrop click by calling onClose (MUI Dialog prop)
116
+ dialog = _react2.screen.getByRole('dialog', {
117
+ hidden: true
118
+ });
119
+ expect(dialog).toBeInTheDocument();
120
+ case 1:
121
+ case "end":
122
+ return _context3.stop();
123
+ }
124
+ }, _callee3);
125
+ })));
126
+ it('renders OK button', function () {
127
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps));
128
+ var okButton = _react2.screen.getByRole('button', {
129
+ name: /OK/i
130
+ });
131
+ expect(okButton).toBeInTheDocument();
132
+ });
133
+ it('handles multiline children content', function () {
134
+ var content = ['Line 1', 'Line 2', 'Line 3'];
135
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps, content.map(function (line, i) {
136
+ return /*#__PURE__*/_react["default"].createElement("div", {
137
+ key: i
138
+ }, line);
139
+ })));
140
+ expect(_react2.screen.getByText('Line 1')).toBeInTheDocument();
141
+ expect(_react2.screen.getByText('Line 2')).toBeInTheDocument();
142
+ expect(_react2.screen.getByText('Line 3')).toBeInTheDocument();
143
+ });
144
+ });
145
+ describe('Help Component', function () {
146
+ var defaultProps = {
147
+ title: 'Help Title',
148
+ children: 'Help content'
149
+ };
150
+ beforeEach(function () {
151
+ jest.clearAllMocks();
152
+ });
153
+ it('renders help button initially', function () {
154
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
155
+ var button = _react2.screen.getByRole('button');
156
+ expect(button).toBeInTheDocument();
157
+ });
158
+ it('opens dialog when help button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
159
+ var user, button;
160
+ return _regenerator["default"].wrap(function (_context4) {
161
+ while (1) switch (_context4.prev = _context4.next) {
162
+ case 0:
163
+ user = _userEvent["default"].setup();
164
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
165
+ button = _react2.screen.getByRole('button');
166
+ _context4.next = 1;
167
+ return user.click(button);
168
+ case 1:
169
+ expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
170
+ expect(_react2.screen.getByText('Help content')).toBeInTheDocument();
171
+ case 2:
172
+ case "end":
173
+ return _context4.stop();
174
+ }
175
+ }, _callee4);
176
+ })));
177
+ it('closes dialog when OK button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
178
+ var user, helpButton, okButton;
179
+ return _regenerator["default"].wrap(function (_context5) {
180
+ while (1) switch (_context5.prev = _context5.next) {
181
+ case 0:
182
+ user = _userEvent["default"].setup();
183
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
184
+ helpButton = _react2.screen.getByRole('button', {
185
+ name: ''
186
+ });
187
+ _context5.next = 1;
188
+ return user.click(helpButton);
189
+ case 1:
190
+ okButton = _react2.screen.getByRole('button', {
191
+ name: /OK/i
192
+ });
193
+ _context5.next = 2;
194
+ return user.click(okButton);
195
+ case 2:
196
+ _context5.next = 3;
197
+ return (0, _react2.waitFor)(function () {
198
+ expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
199
+ });
200
+ case 3:
201
+ case "end":
202
+ return _context5.stop();
203
+ }
204
+ }, _callee5);
205
+ })));
206
+ it('displays title prop', function () {
207
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], {
208
+ title: "Custom Title",
209
+ children: "content"
210
+ }));
211
+ var button = _react2.screen.getByRole('button');
212
+ expect(button).toBeInTheDocument();
213
+ });
214
+ it('displays children prop', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
215
+ var user, button;
216
+ return _regenerator["default"].wrap(function (_context6) {
217
+ while (1) switch (_context6.prev = _context6.next) {
218
+ case 0:
219
+ user = _userEvent["default"].setup();
220
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], (0, _extends2["default"])({}, defaultProps, {
221
+ children: "Custom help content"
222
+ })));
223
+ button = _react2.screen.getByRole('button');
224
+ _context6.next = 1;
225
+ return user.click(button);
226
+ case 1:
227
+ expect(_react2.screen.getByText('Custom help content')).toBeInTheDocument();
228
+ case 2:
229
+ case "end":
230
+ return _context6.stop();
231
+ }
232
+ }, _callee6);
233
+ })));
234
+ it('can open and close dialog multiple times', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
235
+ var user, helpButton, okButton;
236
+ return _regenerator["default"].wrap(function (_context7) {
237
+ while (1) switch (_context7.prev = _context7.next) {
238
+ case 0:
239
+ user = _userEvent["default"].setup();
240
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
241
+ helpButton = _react2.screen.getByRole('button', {
242
+ name: ''
243
+ });
244
+ _context7.next = 1;
245
+ return user.click(helpButton);
246
+ case 1:
247
+ expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
248
+ okButton = _react2.screen.getByRole('button', {
249
+ name: /OK/i
250
+ });
251
+ _context7.next = 2;
252
+ return user.click(okButton);
253
+ case 2:
254
+ _context7.next = 3;
255
+ return (0, _react2.waitFor)(function () {
256
+ expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
257
+ });
258
+ case 3:
259
+ _context7.next = 4;
260
+ return user.click(helpButton);
261
+ case 4:
262
+ expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
263
+ case 5:
264
+ case "end":
265
+ return _context7.stop();
266
+ }
267
+ }, _callee7);
268
+ })));
269
+ });
270
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2hlbHAiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzY3JpYmUiLCJpdCIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJIZWxwQnV0dG9uIiwiYnV0dG9uIiwic2NyZWVuIiwiZ2V0QnlSb2xlIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJvbkNsaWNrIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImplc3QiLCJmbiIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZFRpbWVzIiwic3RvcCIsIl9yZW5kZXIiLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdFByb3BzIiwib3BlbiIsIm9uQ2xvc2UiLCJ0aXRsZSIsImNoaWxkcmVuIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJIZWxwRGlhbG9nIiwiZ2V0QnlUZXh0IiwiX2V4dGVuZHMyIiwicXVlcnlCeVRleHQiLCJub3QiLCJjb250ZW50IiwiX2NhbGxlZTIiLCJva0J1dHRvbiIsIl9jb250ZXh0MiIsIm5hbWUiLCJfY2FsbGVlMyIsImRpYWxvZyIsIl9jb250ZXh0MyIsImhpZGRlbiIsIm1hcCIsImxpbmUiLCJrZXkiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsIl9jYWxsZWU1IiwiaGVscEJ1dHRvbiIsIl9jb250ZXh0NSIsIndhaXRGb3IiLCJfY2FsbGVlNiIsIl9jb250ZXh0NiIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9oZWxwLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiwgd2FpdEZvciB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IEhlbHAsIHsgSGVscEJ1dHRvbiwgSGVscERpYWxvZyB9IGZyb20gJy4uL2hlbHAnO1xuXG5kZXNjcmliZSgnSGVscEJ1dHRvbicsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgaGVscCBpY29uIGJ1dHRvbicsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBvbkNsaWNrIHdoZW4gY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbGljayA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gb25DbGljaz17b25DbGlja30gLz4pO1xuICAgIFxuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcbiAgICBcbiAgICBleHBlY3Qob25DbGljaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB3aXRoIGxhcmdlIHNpemUnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8SGVscEJ1dHRvbiAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbltjbGFzcyo9XCJzaXplTGFyZ2VcIl0nKTtcbiAgICBleHBlY3QoYnV0dG9uIHx8IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnSGVscERpYWxvZycsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIG9wZW46IHRydWUsXG4gICAgb25DbG9zZTogamVzdC5mbigpLFxuICAgIHRpdGxlOiAnSGVscCBUaXRsZScsXG4gICAgY2hpbGRyZW46ICdIZWxwIGNvbnRlbnQgaGVyZScsXG4gIH07XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdoZW4gb3BlbiBpcyB0cnVlJywgKCkgPT4ge1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBjb250ZW50IGhlcmUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IHJlbmRlciB3aGVuIG9wZW4gaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IG9wZW49e2ZhbHNlfSAvPik7XG4gICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSGVscCBUaXRsZScpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIHRpdGxlIGNvcnJlY3RseScsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdGl0bGU9XCJDdXN0b20gSGVscFwiIC8+KTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9tIEhlbHAnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNoaWxkcmVuIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9ICdUaGlzIGlzIGhlbHBmdWwgaW5mb3JtYXRpb24nO1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBjaGlsZHJlbj17Y29udGVudH0gLz4pO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KGNvbnRlbnQpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY2FsbHMgb25DbG9zZSB3aGVuIE9LIGJ1dHRvbiBpcyBjbGlja2VkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICBjb25zdCBvbkNsb3NlID0gamVzdC5mbigpO1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBvbkNsb3NlPXtvbkNsb3NlfSAvPik7XG4gICAgXG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuICAgIFxuICAgIGV4cGVjdChvbkNsb3NlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBvbkNsb3NlIHdoZW4gZGlhbG9nIGlzIGNsb3NlZCB2aWEgYmFja2Ryb3AnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIGNvbnN0IG9uQ2xvc2UgPSBqZXN0LmZuKCk7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IG9uQ2xvc2U9e29uQ2xvc2V9IC8+KTtcbiAgICBcbiAgICAvLyBTaW11bGF0ZSBiYWNrZHJvcCBjbGljayBieSBjYWxsaW5nIG9uQ2xvc2UgKE1VSSBEaWFsb2cgcHJvcClcbiAgICBjb25zdCBkaWFsb2cgPSBzY3JlZW4uZ2V0QnlSb2xlKCdkaWFsb2cnLCB7IGhpZGRlbjogdHJ1ZSB9KTtcbiAgICBleHBlY3QoZGlhbG9nKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBPSyBidXR0b24nLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBjb25zdCBva0J1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL09LL2kgfSk7XG4gICAgZXhwZWN0KG9rQnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFuZGxlcyBtdWx0aWxpbmUgY2hpbGRyZW4gY29udGVudCcsICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gWydMaW5lIDEnLCAnTGluZSAyJywgJ0xpbmUgMyddO1xuICAgIHJlbmRlcihcbiAgICAgIDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9PlxuICAgICAgICB7Y29udGVudC5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICA8ZGl2IGtleT17aX0+e2xpbmV9PC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9IZWxwRGlhbG9nPlxuICAgICk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0xpbmUgMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdMaW5lIDInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTGluZSAzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdIZWxwIENvbXBvbmVudCcsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIHRpdGxlOiAnSGVscCBUaXRsZScsXG4gICAgY2hpbGRyZW46ICdIZWxwIGNvbnRlbnQnLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBoZWxwIGJ1dHRvbiBpbml0aWFsbHknLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICBleHBlY3QoYnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnb3BlbnMgZGlhbG9nIHdoZW4gaGVscCBidXR0b24gaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgcmVuZGVyKDxIZWxwIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBcbiAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGJ1dHRvbik7XG4gICAgXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjbG9zZXMgZGlhbG9nIHdoZW4gT0sgYnV0dG9uIGlzIGNsaWNrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgXG4gICAgY29uc3QgaGVscEJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJycgfSk7XG4gICAgYXdhaXQgdXNlci5jbGljayhoZWxwQnV0dG9uKTtcbiAgICBcbiAgICBjb25zdCBva0J1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL09LL2kgfSk7XG4gICAgYXdhaXQgdXNlci5jbGljayhva0J1dHRvbik7XG4gICAgXG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdIZWxwIFRpdGxlJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnZGlzcGxheXMgdGl0bGUgcHJvcCcsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHAgdGl0bGU9XCJDdXN0b20gVGl0bGVcIiBjaGlsZHJlbj1cImNvbnRlbnRcIiAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgZXhwZWN0KGJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNoaWxkcmVuIHByb3AnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSBjaGlsZHJlbj1cIkN1c3RvbSBoZWxwIGNvbnRlbnRcIiAvPik7XG4gICAgXG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuICAgIFxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDdXN0b20gaGVscCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYW4gb3BlbiBhbmQgY2xvc2UgZGlhbG9nIG11bHRpcGxlIHRpbWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICByZW5kZXIoPEhlbHAgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIFxuICAgIGNvbnN0IGhlbHBCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICcnIH0pO1xuICAgIFxuICAgIGF3YWl0IHVzZXIuY2xpY2soaGVscEJ1dHRvbik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBcbiAgICBsZXQgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuICAgIFxuICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSGVscCBUaXRsZScpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgICBcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGhlbHBCdXR0b24pO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdIZWxwIFRpdGxlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBdUQsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFB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