@pie-element/select-text 6.5.23 → 6.5.26-next.1

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 (40) hide show
  1. package/CHANGELOG.md +0 -44
  2. package/configure/CHANGELOG.md +0 -40
  3. package/configure/lib/__tests__/design.test.js +219 -0
  4. package/configure/lib/defaultConfiguration.js +6 -1
  5. package/configure/lib/defaultConfiguration.js.map +1 -1
  6. package/configure/lib/design.js +62 -10
  7. package/configure/lib/design.js.map +1 -1
  8. package/configure/lib/index.js +3 -3
  9. package/configure/lib/utils.js +3 -3
  10. package/configure/package.json +5 -5
  11. package/controller/CHANGELOG.md +0 -24
  12. package/controller/lib/__tests__/index.test.js +833 -0
  13. package/controller/lib/defaults.js +1 -1
  14. package/controller/lib/index.js +38 -5
  15. package/controller/lib/index.js.map +1 -1
  16. package/controller/package.json +2 -2
  17. package/docs/config-schema.json +16 -0
  18. package/docs/config-schema.json.md +12 -0
  19. package/docs/demo/generate.js +61 -61
  20. package/docs/demo/pie.manifest.json +11 -0
  21. package/docs/pie-schema.json +6 -0
  22. package/docs/pie-schema.json.md +4 -0
  23. package/lib/__tests__/index.test.js +91 -0
  24. package/lib/__tests__/main.test.js +83 -0
  25. package/lib/index.js +3 -3
  26. package/lib/main.js +3 -3
  27. package/lib/print.js +3 -2
  28. package/lib/print.js.map +1 -1
  29. package/lib/utils.js +3 -3
  30. package/package.json +6 -6
  31. package/LICENSE.md +0 -5
  32. package/module/configure.js +0 -2727
  33. package/module/controller.js +0 -19141
  34. package/module/demo.js +0 -287
  35. package/module/element.js +0 -2518
  36. package/module/index.html +0 -21
  37. package/module/manifest.json +0 -14
  38. package/module/print-demo.js +0 -325
  39. package/module/print.html +0 -18
  40. package/module/print.js +0 -2480
package/CHANGELOG.md CHANGED
@@ -3,50 +3,6 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [6.5.23](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.22...@pie-element/select-text@6.5.23) (2022-03-08)
7
-
8
- **Note:** Version bump only for package @pie-element/select-text
9
-
10
-
11
-
12
-
13
-
14
- ## [6.5.22](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.21...@pie-element/select-text@6.5.22) (2022-02-21)
15
-
16
- **Note:** Version bump only for package @pie-element/select-text
17
-
18
-
19
-
20
-
21
-
22
- ## [6.5.21](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.20...@pie-element/select-text@6.5.21) (2022-02-17)
23
-
24
- **Note:** Version bump only for package @pie-element/select-text
25
-
26
-
27
-
28
-
29
-
30
- ## [6.5.20](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.19...@pie-element/select-text@6.5.20) (2022-02-04)
31
-
32
- **Note:** Version bump only for package @pie-element/select-text
33
-
34
-
35
-
36
-
37
-
38
- ## [6.5.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.18...@pie-element/select-text@6.5.19) (2022-01-24)
39
-
40
-
41
- ### Bug Fixes
42
-
43
- * Try to re-trigger ([04e6e41](https://github.com/pie-framework/pie-elements/commit/04e6e41d36a630b5d11abb8683d6b08ec0d2b3ec))
44
- * use preview prompt for prompt, rationale and teacher instructions to fix table rendering PD-1456 ([f330601](https://github.com/pie-framework/pie-elements/commit/f3306019a2d1c8ce3e2783823dfe9ef0a0394e4f))
45
-
46
-
47
-
48
-
49
-
50
6
  ## [6.5.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.17...@pie-element/select-text@6.5.18) (2022-01-10)
51
7
 
52
8
  **Note:** Version bump only for package @pie-element/select-text
@@ -3,46 +3,6 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [5.2.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.18...@pie-element/select-text-configure@5.2.19) (2022-03-08)
7
-
8
- **Note:** Version bump only for package @pie-element/select-text-configure
9
-
10
-
11
-
12
-
13
-
14
- ## [5.2.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.17...@pie-element/select-text-configure@5.2.18) (2022-02-21)
15
-
16
- **Note:** Version bump only for package @pie-element/select-text-configure
17
-
18
-
19
-
20
-
21
-
22
- ## [5.2.17](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.16...@pie-element/select-text-configure@5.2.17) (2022-02-17)
23
-
24
- **Note:** Version bump only for package @pie-element/select-text-configure
25
-
26
-
27
-
28
-
29
-
30
- ## [5.2.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.15...@pie-element/select-text-configure@5.2.16) (2022-02-04)
31
-
32
- **Note:** Version bump only for package @pie-element/select-text-configure
33
-
34
-
35
-
36
-
37
-
38
- ## [5.2.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.14...@pie-element/select-text-configure@5.2.15) (2022-01-24)
39
-
40
- **Note:** Version bump only for package @pie-element/select-text-configure
41
-
42
-
43
-
44
-
45
-
46
6
  ## [5.2.14](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.13...@pie-element/select-text-configure@5.2.14) (2022-01-10)
47
7
 
48
8
  **Note:** Version bump only for package @pie-element/select-text-configure
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _design = require("../design");
12
+
13
+ var _defaultConfiguration = _interopRequireDefault(require("../defaultConfiguration"));
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ jest.mock('@pie-lib/config-ui', function () {
20
+ return {
21
+ layout: {
22
+ ConfigLayout: function ConfigLayout(props) {
23
+ return /*#__PURE__*/_react["default"].createElement("div", null, props.children);
24
+ }
25
+ },
26
+ settings: {
27
+ Panel: function Panel(props) {
28
+ return /*#__PURE__*/_react["default"].createElement("div", {
29
+ oChangeModel: props.onChange
30
+ });
31
+ },
32
+ toggle: jest.fn(),
33
+ radio: jest.fn()
34
+ }
35
+ };
36
+ });
37
+ jest.mock('lodash/debounce', function () {
38
+ return function (fn) {
39
+ return fn;
40
+ };
41
+ });
42
+ describe('design', function () {
43
+ var w;
44
+ var onChange;
45
+ var onPromptChanged;
46
+ var onRationaleChanged;
47
+
48
+ var getModel = function getModel() {
49
+ return {
50
+ tokens: []
51
+ };
52
+ };
53
+
54
+ beforeEach(function () {
55
+ onChange = jest.fn();
56
+ onPromptChanged = jest.fn();
57
+ onRationaleChanged = jest.fn();
58
+ w = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
59
+ model: getModel(),
60
+ configuration: _defaultConfiguration["default"].configuration,
61
+ classes: {},
62
+ className: 'foo',
63
+ onModelChanged: onChange,
64
+ onPromptChanged: onPromptChanged,
65
+ onRationaleChanged: onRationaleChanged
66
+ }));
67
+ });
68
+ describe('snapshot', function () {
69
+ it('renders all items with defaultProps', function () {
70
+ expect(w).toMatchSnapshot();
71
+ });
72
+ it('tokenizer renders with html entities', function () {
73
+ expect((0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
74
+ model: {
75
+ text: '<p>&#8220;Lucy?&#63; Are you using your time wisely to plan your project?&#33;&#33;&#33;&#8221; Mr. Wilson asked.</p><p>Lucy looked a little confused at first. &#195; Then she grinned and proudly stated, &#8220;Why, yes I am! I plan to make a bird feeder for that tree out our window!&#8221;</p>',
76
+ tokens: []
77
+ },
78
+ configuration: _defaultConfiguration["default"].configuration,
79
+ classes: {},
80
+ className: 'foo',
81
+ onModelChanged: onChange,
82
+ onPromptChanged: onPromptChanged,
83
+ onRationaleChanged: onRationaleChanged
84
+ }))).toMatchSnapshot();
85
+ });
86
+ it('renders all items except feedback', function () {
87
+ var defaultConfiguration = _defaultConfiguration["default"].configuration;
88
+ defaultConfiguration.feedback.settings = false;
89
+ var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
90
+ model: getModel(),
91
+ configuration: defaultConfiguration,
92
+ classes: {},
93
+ className: 'foo',
94
+ onModelChanged: onChange,
95
+ onPromptChanged: onPromptChanged,
96
+ onRationaleChanged: onRationaleChanged
97
+ }));
98
+ expect(wrapper).toMatchSnapshot();
99
+ });
100
+ it('renders all items except the content input', function () {
101
+ var defaultConfiguration = _defaultConfiguration["default"].configuration;
102
+ defaultConfiguration.text.settings = false;
103
+ var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
104
+ model: getModel(),
105
+ configuration: defaultConfiguration,
106
+ classes: {},
107
+ className: 'foo',
108
+ onModelChanged: onChange,
109
+ onPromptChanged: onPromptChanged,
110
+ onRationaleChanged: onRationaleChanged
111
+ }));
112
+ expect(wrapper).toMatchSnapshot();
113
+ });
114
+ });
115
+ describe('logic', function () {
116
+ var assert = function assert(fn, args, expected) {
117
+ var e = expected(getModel());
118
+ it("".concat(fn, " ").concat(JSON.stringify(args), " => ").concat(JSON.stringify(e)), function () {
119
+ var instance = w.instance();
120
+ instance[fn].apply(instance, args); //jest.runAllTimers();
121
+
122
+ expect(onChange).toBeCalledWith(e);
123
+ });
124
+ };
125
+
126
+ describe('changeText', function () {
127
+ assert('changeText', [{
128
+ target: {
129
+ value: 'foo'
130
+ }
131
+ }], function (m) {
132
+ return _objectSpread(_objectSpread({}, m), {}, {
133
+ text: 'foo'
134
+ });
135
+ });
136
+ });
137
+ describe('changeTokens', function () {
138
+ assert('changeTokens', [[{
139
+ start: 0,
140
+ end: 1,
141
+ text: 'f'
142
+ }], 'words'], function (m) {
143
+ return _objectSpread(_objectSpread({}, m), {}, {
144
+ maxSelections: 0,
145
+ tokens: [{
146
+ start: 0,
147
+ end: 1,
148
+ text: 'f'
149
+ }],
150
+ mode: 'words'
151
+ });
152
+ });
153
+ assert('changeTokens', [[{
154
+ start: 0,
155
+ end: 8,
156
+ text: 'Foo bar.',
157
+ correct: true
158
+ }], 'sentences'], function (m) {
159
+ return _objectSpread(_objectSpread({}, m), {}, {
160
+ maxSelections: 1,
161
+ tokens: [{
162
+ start: 0,
163
+ end: 8,
164
+ text: 'Foo bar.',
165
+ correct: true
166
+ }],
167
+ mode: 'sentences'
168
+ });
169
+ });
170
+ });
171
+ describe('changeMaxSelections', function () {
172
+ assert('changeMaxSelections', [{}, 4], function (m) {
173
+ return _objectSpread(_objectSpread({}, m), {}, {
174
+ maxSelections: 4
175
+ });
176
+ });
177
+ });
178
+ describe('changeFeedback', function () {
179
+ assert('changeFeedback', [{
180
+ correctFeedbackType: 'none'
181
+ }], function (m) {
182
+ return _objectSpread(_objectSpread({}, m), {}, {
183
+ feedback: {
184
+ correctFeedbackType: 'none'
185
+ }
186
+ });
187
+ });
188
+ });
189
+ describe('changePartialScoring', function () {
190
+ assert('changePartialScoring', [true], function (m) {
191
+ return _objectSpread(_objectSpread({}, m), {}, {
192
+ partialScoring: true
193
+ });
194
+ });
195
+ });
196
+ describe('changePrompt', function () {
197
+ assert('onPromptChanged', ['New Prompt'], function (m) {
198
+ return _objectSpread(_objectSpread({}, m), {}, {
199
+ prompt: 'New Prompt'
200
+ });
201
+ });
202
+ });
203
+ describe('changeTeacherInstructions', function () {
204
+ assert('onTeacherInstructionsChanged', ['New Teacher Instructions'], function (m) {
205
+ return _objectSpread(_objectSpread({}, m), {}, {
206
+ teacherInstructions: 'New Teacher Instructions'
207
+ });
208
+ });
209
+ });
210
+ describe('changeRationale', function () {
211
+ assert('onRationaleChanged', ['New Rationale'], function (m) {
212
+ return _objectSpread(_objectSpread({}, m), {}, {
213
+ rationale: 'New Rationale'
214
+ });
215
+ });
216
+ });
217
+ });
218
+ });
219
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vZGVzaWduLnRlc3QuanN4Il0sIm5hbWVzIjpbImplc3QiLCJtb2NrIiwibGF5b3V0IiwiQ29uZmlnTGF5b3V0IiwicHJvcHMiLCJjaGlsZHJlbiIsInNldHRpbmdzIiwiUGFuZWwiLCJvbkNoYW5nZSIsInRvZ2dsZSIsImZuIiwicmFkaW8iLCJkZXNjcmliZSIsInciLCJvblByb21wdENoYW5nZWQiLCJvblJhdGlvbmFsZUNoYW5nZWQiLCJnZXRNb2RlbCIsInRva2VucyIsImJlZm9yZUVhY2giLCJkZWZhdWx0VmFsdWVzIiwiY29uZmlndXJhdGlvbiIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidGV4dCIsImRlZmF1bHRDb25maWd1cmF0aW9uIiwiZmVlZGJhY2siLCJ3cmFwcGVyIiwiYXNzZXJ0IiwiYXJncyIsImV4cGVjdGVkIiwiZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbnN0YW5jZSIsImFwcGx5IiwidG9CZUNhbGxlZFdpdGgiLCJ0YXJnZXQiLCJ2YWx1ZSIsIm0iLCJzdGFydCIsImVuZCIsIm1heFNlbGVjdGlvbnMiLCJtb2RlIiwiY29ycmVjdCIsImNvcnJlY3RGZWVkYmFja1R5cGUiLCJwYXJ0aWFsU2NvcmluZyIsInByb21wdCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJyYXRpb25hbGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUsb0JBQVYsRUFBZ0M7QUFBQSxTQUFPO0FBQ3JDQyxJQUFBQSxNQUFNLEVBQUU7QUFDTkMsTUFBQUEsWUFBWSxFQUFFLHNCQUFDQyxLQUFEO0FBQUEsNEJBQVcsNkNBQU1BLEtBQUssQ0FBQ0MsUUFBWixDQUFYO0FBQUE7QUFEUixLQUQ2QjtBQUlyQ0MsSUFBQUEsUUFBUSxFQUFFO0FBQ1JDLE1BQUFBLEtBQUssRUFBRSxlQUFDSCxLQUFEO0FBQUEsNEJBQVc7QUFBSyxV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T0FBakMsQ0FBTjtBQUlELEtBTE8sQ0FBUjtBQU9BbEMsSUFBQUEsUUFBUSxDQUFDLGNBQUQsRUFBaUIsWUFBTTtBQUM3QmdCLE1BQUFBLE1BQU0sQ0FBQyxpQkFBRCxFQUFvQixDQUFDLFlBQUQsQ0FBcEIsRUFBb0MsVUFBQ1csQ0FBRDtBQUFBLCtDQUNyQ0EsQ0FEcUM7QUFFeENRLFVBQUFBLE1BQU0sRUFBRTtBQUZnQztBQUFBLE9BQXBDLENBQU47QUFJRCxLQUxPLENBQVI7QUFPQW5DLElBQUFBLFFBQVEsQ0FBQywyQkFBRCxFQUE4QixZQUFNO0FBQzFDZ0IsTUFBQUEsTUFBTSxDQUNKLDhCQURJLEVBRUosQ0FBQywwQkFBRCxDQUZJLEVBR0osVUFBQ1csQ0FBRDtBQUFBLCtDQUNLQSxDQURMO0FBRUVTLFVBQUFBLG1CQUFtQixFQUFFO0FBRnZCO0FBQUEsT0FISSxDQUFOO0FBUUQsS0FUTyxDQUFSO0FBV0FwQyxJQUFBQSxRQUFRLENBQUMsaUJBQUQsRUFBb0IsWUFBTTtBQUNoQ2dCLE1BQUFBLE1BQU0sQ0FBQyxvQkFBRCxFQUF1QixDQUFDLGVBQUQsQ0FBdkIsRUFBMEMsVUFBQ1csQ0FBRDtBQUFBLCtDQUMzQ0EsQ0FEMkM7QUFFOUNVLFVBQUFBLFNBQVMsRUFBRTtBQUZtQztBQUFBLE9BQTFDLENBQU47QUFJRCxLQUxPLENBQVI7QUFNRCxHQXpGTyxDQUFSO0FBMEZELENBdExPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEZXNpZ24gfSBmcm9tICcuLi9kZXNpZ24nO1xuaW1wb3J0IGRlZmF1bHRWYWx1ZXMgZnJvbSAnLi4vZGVmYXVsdENvbmZpZ3VyYXRpb24nO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2NvbmZpZy11aScsICgpID0+ICh7XG4gIGxheW91dDoge1xuICAgIENvbmZpZ0xheW91dDogKHByb3BzKSA9PiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj4sXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IChwcm9wcykgPT4gPGRpdiBvQ2hhbmdlTW9kZWw9e3Byb3BzLm9uQ2hhbmdlfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpLFxuICB9LFxufSkpO1xuXG5qZXN0Lm1vY2soJ2xvZGFzaC9kZWJvdW5jZScsICgpID0+IChmbikgPT4gZm4pO1xuXG5kZXNjcmliZSgnZGVzaWduJywgKCkgPT4ge1xuICBsZXQgdztcbiAgbGV0IG9uQ2hhbmdlO1xuICBsZXQgb25Qcm9tcHRDaGFuZ2VkO1xuICBsZXQgb25SYXRpb25hbGVDaGFuZ2VkO1xuXG4gIGNvbnN0IGdldE1vZGVsID0gKCkgPT4gKHtcbiAgICB0b2tlbnM6IFtdLFxuICB9KTtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgb25Qcm9tcHRDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgIG9uUmF0aW9uYWxlQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgICB3ID0gc2hhbGxvdyhcbiAgICAgIDxEZXNpZ25cbiAgICAgICAgbW9kZWw9e2dldE1vZGVsKCl9XG4gICAgICAgIGNvbmZpZ3VyYXRpb249e2RlZmF1bHRWYWx1ZXMuY29uZmlndXJhdGlvbn1cbiAgICAgICAgY2xhc3Nlcz17e319XG4gICAgICAgIGNsYXNzTmFtZT17J2Zvbyd9XG4gICAgICAgIG9uTW9kZWxDaGFuZ2VkPXtvbkNoYW5nZX1cbiAgICAgICAgb25Qcm9tcHRDaGFuZ2VkPXtvblByb21wdENoYW5nZWR9XG4gICAgICAgIG9uUmF0aW9uYWxlQ2hhbmdlZD17b25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgLz5cbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgYWxsIGl0ZW1zIHdpdGggZGVmYXVsdFByb3BzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rva2VuaXplciByZW5kZXJzIHdpdGggaHRtbCBlbnRpdGllcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgc2hhbGxvdyhcbiAgICAgICAgICA8RGVzaWduXG4gICAgICAgICAgICBtb2RlbD17e1xuICAgICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgICc8cD4mIzgyMjA7THVjeT8mIzYzOyBBcmUgeW91IHVzaW5nIHlvdXIgdGltZSB3aXNlbHkgdG8gcGxhbiB5b3VyIHByb2plY3Q/JiMzMzsmIzMzOyYjMzM7JiM4MjIxOyBNci4gV2lsc29uIGFza2VkLjwvcD48cD5MdWN5IGxvb2tlZCBhIGxpdHRsZSBjb25mdXNlZCBhdCBmaXJzdC4gJiMxOTU7IFRoZW4gc2hlIGdyaW5uZWQgYW5kIHByb3VkbHkgc3RhdGVkLCAmIzgyMjA7V2h5LCB5ZXMgSSBhbSEgSSBwbGFuIHRvIG1ha2UgYSBiaXJkIGZlZWRlciBmb3IgdGhhdCB0cmVlIG91dCBvdXIgd2luZG93ISYjODIyMTs8L3A+JyxcbiAgICAgICAgICAgICAgdG9rZW5zOiBbXSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uPXtkZWZhdWx0VmFsdWVzLmNvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICBjbGFzc2VzPXt7fX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17J2Zvbyd9XG4gICAgICAgICAgICBvbk1vZGVsQ2hhbmdlZD17b25DaGFuZ2V9XG4gICAgICAgICAgICBvblByb21wdENoYW5nZWQ9e29uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICAgIG9uUmF0aW9uYWxlQ2hhbmdlZD17b25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhbGwgaXRlbXMgZXhjZXB0IGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdENvbmZpZ3VyYXRpb24gPSBkZWZhdWx0VmFsdWVzLmNvbmZpZ3VyYXRpb247XG5cbiAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uLmZlZWRiYWNrLnNldHRpbmdzID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBzaGFsbG93KFxuICAgICAgICA8RGVzaWduXG4gICAgICAgICAgbW9kZWw9e2dldE1vZGVsKCl9XG4gICAgICAgICAgY29uZmlndXJhdGlvbj17ZGVmYXVsdENvbmZpZ3VyYXRpb259XG4gICAgICAgICAgY2xhc3Nlcz17e319XG4gICAgICAgICAgY2xhc3NOYW1lPXsnZm9vJ31cbiAgICAgICAgICBvbk1vZGVsQ2hhbmdlZD17b25DaGFuZ2V9XG4gICAgICAgICAgb25Qcm9tcHRDaGFuZ2VkPXtvblByb21wdENoYW5nZWR9XG4gICAgICAgICAgb25SYXRpb25hbGVDaGFuZ2VkPXtvblJhdGlvbmFsZUNoYW5nZWR9XG4gICAgICAgIC8+XG4gICAgICApO1xuXG4gICAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhbGwgaXRlbXMgZXhjZXB0IHRoZSBjb250ZW50IGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdENvbmZpZ3VyYXRpb24gPSBkZWZhdWx0VmFsdWVzLmNvbmZpZ3VyYXRpb247XG5cbiAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uLnRleHQuc2V0dGluZ3MgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgd3JhcHBlciA9IHNoYWxsb3coXG4gICAgICAgIDxEZXNpZ25cbiAgICAgICAgICBtb2RlbD17Z2V0TW9kZWwoKX1cbiAgICAgICAgICBjb25maWd1cmF0aW9uPXtkZWZhdWx0Q29uZmlndXJhdGlvbn1cbiAgICAgICAgICBjbGFzc2VzPXt7fX1cbiAgICAgICAgICBjbGFzc05hbWU9eydmb28nfVxuICAgICAgICAgIG9uTW9kZWxDaGFuZ2VkPXtvbkNoYW5nZX1cbiAgICAgICAgICBvblByb21wdENoYW5nZWQ9e29uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICBvblJhdGlvbmFsZUNoYW5nZWQ9e29uUmF0aW9uYWxlQ2hhbmdlZH1cbiAgICAgICAgLz5cbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydCA9IChmbiwgYXJncywgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGNvbnN0IGUgPSBleHBlY3RlZChnZXRNb2RlbCgpKTtcblxuICAgICAgaXQoYCR7Zm59ICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9ID0+ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHcuaW5zdGFuY2UoKTtcbiAgICAgICAgaW5zdGFuY2VbZm5dLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcblxuICAgICAgICAvL2plc3QucnVuQWxsVGltZXJzKCk7XG5cbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0JlQ2FsbGVkV2l0aChlKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlVGV4dCcsICgpID0+IHtcbiAgICAgIGFzc2VydCgnY2hhbmdlVGV4dCcsIFt7IHRhcmdldDogeyB2YWx1ZTogJ2ZvbycgfSB9XSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHRleHQ6ICdmb28nLFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZVRva2VucycsICgpID0+IHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgJ2NoYW5nZVRva2VucycsXG4gICAgICAgIFtbeyBzdGFydDogMCwgZW5kOiAxLCB0ZXh0OiAnZicgfV0sICd3b3JkcyddLFxuICAgICAgICAobSkgPT4gKHtcbiAgICAgICAgICAuLi5tLFxuICAgICAgICAgIG1heFNlbGVjdGlvbnM6IDAsXG4gICAgICAgICAgdG9rZW5zOiBbeyBzdGFydDogMCwgZW5kOiAxLCB0ZXh0OiAnZicgfV0sXG4gICAgICAgICAgbW9kZTogJ3dvcmRzJyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBhc3NlcnQoXG4gICAgICAgICdjaGFuZ2VUb2tlbnMnLFxuICAgICAgICBbW3sgc3RhcnQ6IDAsIGVuZDogOCwgdGV4dDogJ0ZvbyBiYXIuJywgY29ycmVjdDogdHJ1ZSB9XSwgJ3NlbnRlbmNlcyddLFxuICAgICAgICAobSkgPT4gKHtcbiAgICAgICAgICAuLi5tLFxuICAgICAgICAgIG1heFNlbGVjdGlvbnM6IDEsXG4gICAgICAgICAgdG9rZW5zOiBbeyBzdGFydDogMCwgZW5kOiA4LCB0ZXh0OiAnRm9vIGJhci4nLCBjb3JyZWN0OiB0cnVlIH1dLFxuICAgICAgICAgIG1vZGU6ICdzZW50ZW5jZXMnLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjaGFuZ2VNYXhTZWxlY3Rpb25zJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KCdjaGFuZ2VNYXhTZWxlY3Rpb25zJywgW3t9LCA0XSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIG1heFNlbGVjdGlvbnM6IDQsXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlRmVlZGJhY2snLCAoKSA9PiB7XG4gICAgICBhc3NlcnQoJ2NoYW5nZUZlZWRiYWNrJywgW3sgY29ycmVjdEZlZWRiYWNrVHlwZTogJ25vbmUnIH1dLCAobSkgPT4gKHtcbiAgICAgICAgLi4ubSxcbiAgICAgICAgZmVlZGJhY2s6IHsgY29ycmVjdEZlZWRiYWNrVHlwZTogJ25vbmUnIH0sXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlUGFydGlhbFNjb3JpbmcnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQoJ2NoYW5nZVBhcnRpYWxTY29yaW5nJywgW3RydWVdLCAobSkgPT4gKHtcbiAgICAgICAgLi4ubSxcbiAgICAgICAgcGFydGlhbFNjb3Jpbmc6IHRydWUsXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlUHJvbXB0JywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KCdvblByb21wdENoYW5nZWQnLCBbJ05ldyBQcm9tcHQnXSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHByb21wdDogJ05ldyBQcm9tcHQnLFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZVRlYWNoZXJJbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQoXG4gICAgICAgICdvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkJyxcbiAgICAgICAgWydOZXcgVGVhY2hlciBJbnN0cnVjdGlvbnMnXSxcbiAgICAgICAgKG0pID0+ICh7XG4gICAgICAgICAgLi4ubSxcbiAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlUmF0aW9uYWxlJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KCdvblJhdGlvbmFsZUNoYW5nZWQnLCBbJ05ldyBSYXRpb25hbGUnXSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHJhdGlvbmFsZTogJ05ldyBSYXRpb25hbGUnLFxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -79,6 +79,11 @@ var _default = {
79
79
  settings: true,
80
80
  label: 'Feedback'
81
81
  },
82
+ spellCheck: {
83
+ label: 'Spellcheck',
84
+ settings: false,
85
+ enabled: true
86
+ },
82
87
  partialScoring: {
83
88
  settings: false,
84
89
  label: 'Allow Partial Scoring'
@@ -90,4 +95,4 @@ var _default = {
90
95
  }
91
96
  };
92
97
  exports["default"] = _default;
93
- //# sourceMappingURL=defaultConfiguration.js.map
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0Q29uZmlndXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJ0b2tlbnMiLCJ0ZXh0Iiwic3RhcnQiLCJlbmQiLCJtb2RlbCIsImhpZ2hsaWdodENob2ljZXMiLCJwYXJ0aWFsU2NvcmluZyIsIm1heFNlbGVjdGlvbnMiLCJtb2RlIiwicHJvbXB0Iiwic2NvcmluZ1R5cGUiLCJmZWVkYmFja0VuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwicHJvbXB0RW5hYmxlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkIiwic3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQiLCJ0b29sYmFyRWRpdG9yUG9zaXRpb24iLCJjb25maWd1cmF0aW9uIiwic2VsZWN0aW9uQ291bnQiLCJzZXR0aW5ncyIsImxhYmVsIiwiY29ycmVjdEFuc3dlciIsInNlbGVjdGlvbnMiLCJyYXRpb25hbGUiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zIiwidGVhY2hlckluc3RydWN0aW9ucyIsImZlZWRiYWNrIiwic3BlbGxDaGVjayIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFNQSxNQUFNLEdBQUcsU0FBVEEsTUFBUztBQUFBLFNBQU0sQ0FDbkI7QUFDRUMsSUFBQUEsSUFBSSxFQUFFLEVBRFI7QUFFRUMsSUFBQUEsS0FBSyxFQUFFLENBRlQ7QUFHRUMsSUFBQUEsR0FBRyxFQUFFO0FBSFAsR0FEbUIsQ0FBTjtBQUFBLENBQWY7O2VBUWU7QUFDYkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0xDLElBQUFBLGdCQUFnQixFQUFFLEtBRGI7QUFFTEMsSUFBQUEsY0FBYyxFQUFFLEtBRlg7QUFHTEMsSUFBQUEsYUFBYSxFQUFFLENBSFY7QUFJTEMsSUFBQUEsSUFBSSxFQUFFLFVBSkQ7QUFLTEMsSUFBQUEsTUFBTSxFQUFFLDJCQUxIO0FBTUxSLElBQUFBLElBQUksRUFBRSxFQU5EO0FBT0xELElBQUFBLE1BQU0sRUFBRUEsTUFBTSxFQVBUO0FBUUxVLElBQUFBLFdBQVcsRUFBRSxNQVJSO0FBU0xDLElBQUFBLGVBQWUsRUFBRSxJQVRaO0FBVUxDLElBQUFBLGdCQUFnQixFQUFFLElBVmI7QUFXTEMsSUFBQUEsYUFBYSxFQUFFLElBWFY7QUFZTEMsSUFBQUEsMEJBQTBCLEVBQUUsSUFadkI7QUFhTEMsSUFBQUEsMEJBQTBCLEVBQUUsSUFidkI7QUFjTEMsSUFBQUEscUJBQXFCLEVBQUU7QUFkbEIsR0FETTtBQWlCYkMsRUFBQUEsYUFBYSxFQUFFO0FBQ2JDLElBQUFBLGNBQWMsRUFBRTtBQUNkQyxNQUFBQSxRQUFRLEVBQUUsSUFESTtBQUVkQyxNQUFBQSxLQUFLLEVBQUU7QUFGTyxLQURIO0FBS2JDLElBQUFBLGFBQWEsRUFBRTtBQUNiRixNQUFBQSxRQUFRLEVBQUUsSUFERztBQUViQyxNQUFBQSxLQUFLLEVBQUU7QUFGTSxLQUxGO0FBU2JFLElBQUFBLFVBQVUsRUFBRTtBQUNWSCxNQUFBQSxRQUFRLEVBQUUsSUFEQTtBQUVWQyxNQUFBQSxLQUFLLEVBQUU7QUFGRyxLQVRDO0FBYWJmLElBQUFBLGdCQUFnQixFQUFFO0FBQ2hCYyxNQUFBQSxRQUFRLEVBQUUsSUFETTtBQUVoQkMsTUFBQUEsS0FBSyxFQUFFO0FBRlMsS0FiTDtBQWlCYkcsSUFBQUEsU0FBUyxFQUFFO0FBQ1RKLE1BQUFBLFFBQVEsRUFBRSxJQUREO0FBRVRDLE1BQUFBLEtBQUssRUFBRTtBQUZFLEtBakJFO0FBcUJiVixJQUFBQSxXQUFXLEVBQUU7QUFDWFMsTUFBQUEsUUFBUSxFQUFFLEtBREM7QUFFWEMsTUFBQUEsS0FBSyxFQUFFO0FBRkksS0FyQkE7QUF5QmJJLElBQUFBLG1CQUFtQixFQUFFO0FBQ25CTCxNQUFBQSxRQUFRLEVBQUUsS0FEUztBQUVuQkMsTUFBQUEsS0FBSyxFQUFFO0FBRlksS0F6QlI7QUE2QmJLLElBQUFBLG1CQUFtQixFQUFFO0FBQ25CTixNQUFBQSxRQUFRLEVBQUUsSUFEUztBQUVuQkMsTUFBQUEsS0FBSyxFQUFFO0FBRlksS0E3QlI7QUFpQ2JYLElBQUFBLE1BQU0sRUFBRTtBQUNOVyxNQUFBQSxLQUFLLEVBQUUsUUFERDtBQUVORCxNQUFBQSxRQUFRLEVBQUU7QUFGSixLQWpDSztBQXFDYmxCLElBQUFBLElBQUksRUFBRTtBQUNKa0IsTUFBQUEsUUFBUSxFQUFFLElBRE47QUFFSkMsTUFBQUEsS0FBSyxFQUFFO0FBRkgsS0FyQ087QUF5Q2JwQixJQUFBQSxNQUFNLEVBQUU7QUFDTm1CLE1BQUFBLFFBQVEsRUFBRSxJQURKO0FBRU5DLE1BQUFBLEtBQUssRUFBRTtBQUZELEtBekNLO0FBNkNiTSxJQUFBQSxRQUFRLEVBQUU7QUFDUlAsTUFBQUEsUUFBUSxFQUFFLElBREY7QUFFUkMsTUFBQUEsS0FBSyxFQUFFO0FBRkMsS0E3Q0c7QUFpRGJPLElBQUFBLFVBQVUsRUFBRTtBQUNWUCxNQUFBQSxLQUFLLEVBQUUsWUFERztBQUVWRCxNQUFBQSxRQUFRLEVBQUMsS0FGQztBQUdWUyxNQUFBQSxPQUFPLEVBQUM7QUFIRSxLQWpEQztBQXNEYnRCLElBQUFBLGNBQWMsRUFBRTtBQUNkYSxNQUFBQSxRQUFRLEVBQUUsS0FESTtBQUVkQyxNQUFBQSxLQUFLLEVBQUU7QUFGTyxLQXRESDtBQTBEYlosSUFBQUEsSUFBSSxFQUFFO0FBQ0pXLE1BQUFBLFFBQVEsRUFBRSxJQUROO0FBRUpDLE1BQUFBLEtBQUssRUFBRTtBQUZIO0FBMURPO0FBakJGLEMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB0b2tlbnMgPSAoKSA9PiBbXG4gIHtcbiAgICB0ZXh0OiAnJyxcbiAgICBzdGFydDogMCxcbiAgICBlbmQ6IDBcbiAgfVxuXTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtb2RlbDoge1xuICAgIGhpZ2hsaWdodENob2ljZXM6IGZhbHNlLFxuICAgIHBhcnRpYWxTY29yaW5nOiBmYWxzZSxcbiAgICBtYXhTZWxlY3Rpb25zOiAyLFxuICAgIG1vZGU6ICdzZW50ZW5jZScsXG4gICAgcHJvbXB0OiAnUXVlc3Rpb24gUHJvbXB0IGdvZXMgaGVyZScsXG4gICAgdGV4dDogJycsXG4gICAgdG9rZW5zOiB0b2tlbnMoKSxcbiAgICBzY29yaW5nVHlwZTogJ2F1dG8nLFxuICAgIGZlZWRiYWNrRW5hYmxlZDogdHJ1ZSxcbiAgICByYXRpb25hbGVFbmFibGVkOiB0cnVlLFxuICAgIHByb21wdEVuYWJsZWQ6IHRydWUsXG4gICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gICAgc3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gICAgdG9vbGJhckVkaXRvclBvc2l0aW9uOiAnYm90dG9tJ1xuICB9LFxuICBjb25maWd1cmF0aW9uOiB7XG4gICAgc2VsZWN0aW9uQ291bnQ6IHtcbiAgICAgIHNldHRpbmdzOiB0cnVlLFxuICAgICAgbGFiZWw6ICdTZWxlY3Rpb24gY291bnQnXG4gICAgfSxcbiAgICBjb3JyZWN0QW5zd2VyOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnQ29ycmVjdCBBbnN3ZXJzJ1xuICAgIH0sXG4gICAgc2VsZWN0aW9uczoge1xuICAgICAgc2V0dGluZ3M6IHRydWUsXG4gICAgICBsYWJlbDogJ1NlbGVjdGlvbnMgQXZhaWxhYmxlJ1xuICAgIH0sXG4gICAgaGlnaGxpZ2h0Q2hvaWNlczoge1xuICAgICAgc2V0dGluZ3M6IHRydWUsXG4gICAgICBsYWJlbDogJ0hpZ2hsaWdodCBjaG9pY2VzJ1xuICAgIH0sXG4gICAgcmF0aW9uYWxlOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnUmF0aW9uYWxlJ1xuICAgIH0sXG4gICAgc2NvcmluZ1R5cGU6IHtcbiAgICAgIHNldHRpbmdzOiBmYWxzZSxcbiAgICAgIGxhYmVsOiAnU2NvcmluZyBUeXBlJ1xuICAgIH0sXG4gICAgc3R1ZGVudEluc3RydWN0aW9uczoge1xuICAgICAgc2V0dGluZ3M6IGZhbHNlLFxuICAgICAgbGFiZWw6ICdTdHVkZW50IEluc3RydWN0aW9ucydcbiAgICB9LFxuICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IHtcbiAgICAgIHNldHRpbmdzOiB0cnVlLFxuICAgICAgbGFiZWw6ICdUZWFjaGVyIEluc3RydWN0aW9ucydcbiAgICB9LFxuICAgIHByb21wdDoge1xuICAgICAgbGFiZWw6ICdQcm9tcHQnLFxuICAgICAgc2V0dGluZ3M6IHRydWVcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHNldHRpbmdzOiB0cnVlLFxuICAgICAgbGFiZWw6ICdDb250ZW50J1xuICAgIH0sXG4gICAgdG9rZW5zOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnVG9rZW5zJ1xuICAgIH0sXG4gICAgZmVlZGJhY2s6IHtcbiAgICAgIHNldHRpbmdzOiB0cnVlLFxuICAgICAgbGFiZWw6ICdGZWVkYmFjaydcbiAgICB9LFxuICAgIHNwZWxsQ2hlY2s6IHtcbiAgICAgIGxhYmVsOiAnU3BlbGxjaGVjaycsXG4gICAgICBzZXR0aW5nczpmYWxzZSxcbiAgICAgIGVuYWJsZWQ6dHJ1ZVxuICAgIH0sXG4gICAgcGFydGlhbFNjb3Jpbmc6IHtcbiAgICAgIHNldHRpbmdzOiBmYWxzZSxcbiAgICAgIGxhYmVsOiAnQWxsb3cgUGFydGlhbCBTY29yaW5nJ1xuICAgIH0sXG4gICAgbW9kZToge1xuICAgICAgc2V0dGluZ3M6IHRydWUsXG4gICAgICBsYWJlbDogJ01vZGUnXG4gICAgfVxuICB9XG59O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaultConfiguration.js"],"names":["tokens","text","start","end","model","highlightChoices","partialScoring","maxSelections","mode","prompt","scoringType","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","selectionCount","settings","label","correctAnswer","selections","rationale","studentInstructions","teacherInstructions","feedback"],"mappings":";;;;;;;AAAA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAM,CACnB;AACEC,IAAAA,IAAI,EAAE,EADR;AAEEC,IAAAA,KAAK,EAAE,CAFT;AAGEC,IAAAA,GAAG,EAAE;AAHP,GADmB,CAAN;AAAA,CAAf;;eAQe;AACbC,EAAAA,KAAK,EAAE;AACLC,IAAAA,gBAAgB,EAAE,KADb;AAELC,IAAAA,cAAc,EAAE,KAFX;AAGLC,IAAAA,aAAa,EAAE,CAHV;AAILC,IAAAA,IAAI,EAAE,UAJD;AAKLC,IAAAA,MAAM,EAAE,2BALH;AAMLR,IAAAA,IAAI,EAAE,EAND;AAOLD,IAAAA,MAAM,EAAEA,MAAM,EAPT;AAQLU,IAAAA,WAAW,EAAE,MARR;AASLC,IAAAA,eAAe,EAAE,IATZ;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,aAAa,EAAE,IAXV;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,qBAAqB,EAAE;AAdlB,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,cAAc,EAAE;AACdC,MAAAA,QAAQ,EAAE,IADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KADH;AAKbC,IAAAA,aAAa,EAAE;AACbF,MAAAA,QAAQ,EAAE,IADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KALF;AASbE,IAAAA,UAAU,EAAE;AACVH,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KATC;AAabf,IAAAA,gBAAgB,EAAE;AAChBc,MAAAA,QAAQ,EAAE,IADM;AAEhBC,MAAAA,KAAK,EAAE;AAFS,KAbL;AAiBbG,IAAAA,SAAS,EAAE;AACTJ,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAjBE;AAqBbV,IAAAA,WAAW,EAAE;AACXS,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KArBA;AAyBbI,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAzBR;AA6BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA7BR;AAiCbX,IAAAA,MAAM,EAAE;AACNW,MAAAA,KAAK,EAAE,QADD;AAEND,MAAAA,QAAQ,EAAE;AAFJ,KAjCK;AAqCblB,IAAAA,IAAI,EAAE;AACJkB,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH,KArCO;AAyCbpB,IAAAA,MAAM,EAAE;AACNmB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAzCK;AA6CbM,IAAAA,QAAQ,EAAE;AACRP,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA7CG;AAiDbd,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAjDH;AAqDbZ,IAAAA,IAAI,EAAE;AACJW,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH;AArDO;AAjBF,C","sourcesContent":["const tokens = () => [\n {\n text: '',\n start: 0,\n end: 0\n }\n];\n\nexport default {\n model: {\n highlightChoices: false,\n partialScoring: false,\n maxSelections: 2,\n mode: 'sentence',\n prompt: 'Question Prompt goes here',\n text: '',\n tokens: tokens(),\n scoringType: 'auto',\n feedbackEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom'\n },\n configuration: {\n selectionCount: {\n settings: true,\n label: 'Selection count'\n },\n correctAnswer: {\n settings: true,\n label: 'Correct Answers'\n },\n selections: {\n settings: true,\n label: 'Selections Available'\n },\n highlightChoices: {\n settings: true,\n label: 'Highlight choices'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n prompt: {\n label: 'Prompt',\n settings: true\n },\n text: {\n settings: true,\n label: 'Content'\n },\n tokens: {\n settings: true,\n label: 'Tokens'\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n mode: {\n settings: true,\n label: 'Mode'\n }\n }\n};\n"],"file":"defaultConfiguration.js"}
1
+ {"version":3,"sources":["../src/defaultConfiguration.js"],"names":["tokens","text","start","end","model","highlightChoices","partialScoring","maxSelections","mode","prompt","scoringType","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","selectionCount","settings","label","correctAnswer","selections","rationale","studentInstructions","teacherInstructions","feedback","spellCheck","enabled"],"mappings":";;;;;;;AAAA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAM,CACnB;AACEC,IAAAA,IAAI,EAAE,EADR;AAEEC,IAAAA,KAAK,EAAE,CAFT;AAGEC,IAAAA,GAAG,EAAE;AAHP,GADmB,CAAN;AAAA,CAAf;;eAQe;AACbC,EAAAA,KAAK,EAAE;AACLC,IAAAA,gBAAgB,EAAE,KADb;AAELC,IAAAA,cAAc,EAAE,KAFX;AAGLC,IAAAA,aAAa,EAAE,CAHV;AAILC,IAAAA,IAAI,EAAE,UAJD;AAKLC,IAAAA,MAAM,EAAE,2BALH;AAMLR,IAAAA,IAAI,EAAE,EAND;AAOLD,IAAAA,MAAM,EAAEA,MAAM,EAPT;AAQLU,IAAAA,WAAW,EAAE,MARR;AASLC,IAAAA,eAAe,EAAE,IATZ;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,aAAa,EAAE,IAXV;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,qBAAqB,EAAE;AAdlB,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,cAAc,EAAE;AACdC,MAAAA,QAAQ,EAAE,IADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KADH;AAKbC,IAAAA,aAAa,EAAE;AACbF,MAAAA,QAAQ,EAAE,IADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KALF;AASbE,IAAAA,UAAU,EAAE;AACVH,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KATC;AAabf,IAAAA,gBAAgB,EAAE;AAChBc,MAAAA,QAAQ,EAAE,IADM;AAEhBC,MAAAA,KAAK,EAAE;AAFS,KAbL;AAiBbG,IAAAA,SAAS,EAAE;AACTJ,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAjBE;AAqBbV,IAAAA,WAAW,EAAE;AACXS,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KArBA;AAyBbI,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAzBR;AA6BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA7BR;AAiCbX,IAAAA,MAAM,EAAE;AACNW,MAAAA,KAAK,EAAE,QADD;AAEND,MAAAA,QAAQ,EAAE;AAFJ,KAjCK;AAqCblB,IAAAA,IAAI,EAAE;AACJkB,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH,KArCO;AAyCbpB,IAAAA,MAAM,EAAE;AACNmB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAzCK;AA6CbM,IAAAA,QAAQ,EAAE;AACRP,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA7CG;AAiDbO,IAAAA,UAAU,EAAE;AACVP,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAC,KAFC;AAGVS,MAAAA,OAAO,EAAC;AAHE,KAjDC;AAsDbtB,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAtDH;AA0DbZ,IAAAA,IAAI,EAAE;AACJW,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH;AA1DO;AAjBF,C","sourcesContent":["const tokens = () => [\n {\n text: '',\n start: 0,\n end: 0\n }\n];\n\nexport default {\n model: {\n highlightChoices: false,\n partialScoring: false,\n maxSelections: 2,\n mode: 'sentence',\n prompt: 'Question Prompt goes here',\n text: '',\n tokens: tokens(),\n scoringType: 'auto',\n feedbackEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom'\n },\n configuration: {\n selectionCount: {\n settings: true,\n label: 'Selection count'\n },\n correctAnswer: {\n settings: true,\n label: 'Correct Answers'\n },\n selections: {\n settings: true,\n label: 'Selections Available'\n },\n highlightChoices: {\n settings: true,\n label: 'Highlight choices'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n prompt: {\n label: 'Prompt',\n settings: true\n },\n text: {\n settings: true,\n label: 'Content'\n },\n tokens: {\n settings: true,\n label: 'Tokens'\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n mode: {\n settings: true,\n label: 'Mode'\n }\n }\n};\n"],"file":"defaultConfiguration.js"}
@@ -39,13 +39,17 @@ var _configUi = require("@pie-lib/config-ui");
39
39
 
40
40
  var _Chip = _interopRequireDefault(require("@material-ui/core/Chip"));
41
41
 
42
+ var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
43
+
42
44
  var _debug = _interopRequireDefault(require("debug"));
43
45
 
44
46
  var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
45
47
 
46
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
48
+ var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
49
+
50
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
47
51
 
48
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
52
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
49
53
 
50
54
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
51
55
 
@@ -200,16 +204,31 @@ var Design = /*#__PURE__*/function (_React$Component) {
200
204
  rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
201
205
  _ref$scoringType = _ref.scoringType,
202
206
  scoringType = _ref$scoringType === void 0 ? {} : _ref$scoringType,
207
+ _ref$spellCheck = _ref.spellCheck,
208
+ spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
203
209
  _ref$highlightChoices = _ref.highlightChoices,
204
- highlightChoices = _ref$highlightChoices === void 0 ? {} : _ref$highlightChoices;
210
+ highlightChoices = _ref$highlightChoices === void 0 ? {} : _ref$highlightChoices,
211
+ minTokens = _ref.minTokens,
212
+ maxTokens = _ref.maxTokens,
213
+ maxSelections = _ref.maxSelections;
205
214
 
206
215
  var _ref2 = model || {},
207
216
  teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
208
217
  promptEnabled = _ref2.promptEnabled,
209
218
  rationaleEnabled = _ref2.rationaleEnabled,
210
- feedbackEnabled = _ref2.feedbackEnabled;
219
+ spellCheckEnabled = _ref2.spellCheckEnabled,
220
+ feedbackEnabled = _ref2.feedbackEnabled,
221
+ errors = _ref2.errors;
211
222
 
212
223
  var toolbarOpts = {};
224
+ var configSettings = maxSelections || minTokens || maxTokens;
225
+ var maxSelectionsValidation = maxSelections ? "\nNo more than ".concat(maxSelections, " tokens should be selected.") : '';
226
+ var minTokensValidation = minTokens ? "\nThere should be at least ".concat(minTokens, " tokens defined.") : '';
227
+ var maxTokensValidation = maxTokens ? "\nNo more than ".concat(maxTokens, " tokens should be defined.") : '';
228
+
229
+ var _ref3 = errors || {},
230
+ tokensError = _ref3.tokensError,
231
+ selectionsError = _ref3.selectionsError;
213
232
 
214
233
  switch (model.toolbarEditorPosition) {
215
234
  case 'top':
@@ -243,6 +262,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
243
262
  studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
244
263
  promptEnabled: prompt.settings && toggle(prompt.label),
245
264
  rationaleEnabled: rationale.settings && toggle(rationale.label),
265
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
246
266
  scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
247
267
  }
248
268
  }
@@ -258,7 +278,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
258
278
  onChange: this.onTeacherInstructionsChanged,
259
279
  imageSupport: imageSupport,
260
280
  nonEmpty: false,
261
- toolbarOpts: toolbarOpts
281
+ toolbarOpts: toolbarOpts,
282
+ spellCheck: spellCheckEnabled
262
283
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
263
284
  label: prompt.label || '',
264
285
  className: classes.promptHolder
@@ -267,7 +288,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
267
288
  markup: model.prompt,
268
289
  onChange: this.onPromptChanged,
269
290
  imageSupport: imageSupport,
270
- toolbarOpts: toolbarOpts
291
+ toolbarOpts: toolbarOpts,
292
+ spellCheck: spellCheckEnabled
271
293
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
272
294
  label: rationale.label || '',
273
295
  className: classes.promptHolder
@@ -276,14 +298,34 @@ var Design = /*#__PURE__*/function (_React$Component) {
276
298
  markup: model.rationale || '',
277
299
  onChange: this.onRationaleChanged,
278
300
  imageSupport: imageSupport,
279
- toolbarOpts: toolbarOpts
301
+ toolbarOpts: toolbarOpts,
302
+ spellCheck: spellCheckEnabled
280
303
  })), text.settings && /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
281
304
  label: text.label,
282
305
  className: classes.input,
283
306
  multiline: true,
284
307
  value: textValue,
285
- onChange: this.changeText
286
- }), tokens.settings && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
308
+ onChange: this.changeText,
309
+ spellCheck: spellCheckEnabled
310
+ }), configSettings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
311
+ classes: {
312
+ tooltip: classes.tooltip
313
+ },
314
+ disableFocusListener: true,
315
+ disableTouchListener: true,
316
+ placement: 'left',
317
+ title: "Validation requirements:".concat(maxSelectionsValidation).concat(minTokensValidation).concat(maxTokensValidation)
318
+ }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
319
+ fontSize: 'small',
320
+ color: 'primary',
321
+ style: {
322
+ "float": 'right'
323
+ }
324
+ })), tokensError && /*#__PURE__*/_react["default"].createElement("div", {
325
+ className: classes.errorText
326
+ }, tokensModel), selectionsError && /*#__PURE__*/_react["default"].createElement("div", {
327
+ className: classes.errorText
328
+ }, selectionsError), tokens.settings && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
287
329
  label: tokens.label || '',
288
330
  className: classes.tokenizerContainer
289
331
  }, /*#__PURE__*/_react["default"].createElement(_textSelect.Tokenizer, {
@@ -381,9 +423,19 @@ var _default = (0, _styles.withStyles)(function (theme) {
381
423
  },
382
424
  numberField: {
383
425
  width: '180px'
426
+ },
427
+ tooltip: {
428
+ fontSize: '12px',
429
+ whiteSpace: 'pre',
430
+ maxWidth: '500px'
431
+ },
432
+ errorText: {
433
+ fontSize: '12px',
434
+ color: 'red',
435
+ padding: '5px 0'
384
436
  }
385
437
  };
386
438
  })(Design);
387
439
 
388
440
  exports["default"] = _default;
389
- //# sourceMappingURL=design.js.map
441
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXNpZ24uanN4Il0sIm5hbWVzIjpbIlBhbmVsIiwic2V0dGluZ3MiLCJ0b2dnbGUiLCJyYWRpbyIsImxvZyIsIkRlc2lnbiIsInByb3BzIiwidmFsIiwiYXBwbHkiLCJ1IiwidGV4dCIsInRva2VucyIsImV2ZW50IiwidmFsdWUiLCJ0YXJnZXQiLCJwcmVwYXJlZFRleHQiLCJzZXRTdGF0ZSIsInVwZGF0ZVRleHQiLCJtb2RlIiwiY29ycmVjdFRva2VuQ291bnQiLCJmaWx0ZXIiLCJ0IiwiY29ycmVjdCIsImxlbmd0aCIsIm1heCIsImlzRmluaXRlIiwibWF4U2VsZWN0aW9ucyIsIk1hdGgiLCJmbiIsIm9uTW9kZWxDaGFuZ2VkIiwibW9kZWwiLCJ1cGRhdGUiLCJmZWVkYmFjayIsInBhcnRpYWxTY29yaW5nIiwicHJvbXB0IiwidGVhY2hlckluc3RydWN0aW9ucyIsInJhdGlvbmFsZSIsInN0YXRlIiwiblByb3BzIiwidGV4dFZhbHVlIiwiY2xhc3NlcyIsImltYWdlU3VwcG9ydCIsImNvbmZpZ3VyYXRpb24iLCJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIiwic2VsZWN0aW9ucyIsInNlbGVjdGlvbkNvdW50IiwiY29ycmVjdEFuc3dlciIsInN0dWRlbnRJbnN0cnVjdGlvbnMiLCJzY29yaW5nVHlwZSIsInNwZWxsQ2hlY2siLCJoaWdobGlnaHRDaG9pY2VzIiwibWluVG9rZW5zIiwibWF4VG9rZW5zIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJwcm9tcHRFbmFibGVkIiwicmF0aW9uYWxlRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwiZmVlZGJhY2tFbmFibGVkIiwiZXJyb3JzIiwidG9vbGJhck9wdHMiLCJjb25maWdTZXR0aW5ncyIsIm1heFNlbGVjdGlvbnNWYWxpZGF0aW9uIiwibWluVG9rZW5zVmFsaWRhdGlvbiIsIm1heFRva2Vuc1ZhbGlkYXRpb24iLCJ0b2tlbnNFcnJvciIsInNlbGVjdGlvbnNFcnJvciIsInRvb2xiYXJFZGl0b3JQb3NpdGlvbiIsInBvc2l0aW9uIiwidG9rZW5zTW9kZWwiLCJTZXR0aW5ncyIsImxhYmVsIiwiUHJvcGVydGllcyIsInN0dWRlbnRJbnN0cnVjdGlvbnNFbmFibGVkIiwiY29udGFpbmVyIiwicHJvbXB0SG9sZGVyIiwib25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCIsIm9uUHJvbXB0Q2hhbmdlZCIsIm9uUmF0aW9uYWxlQ2hhbmdlZCIsImlucHV0IiwiY2hhbmdlVGV4dCIsInRvb2x0aXAiLCJlcnJvclRleHQiLCJ0b2tlbml6ZXJDb250YWluZXIiLCJ0b2tlbml6ZXIiLCJjaGFuZ2VUb2tlbnMiLCJjaGlwIiwiY2hhbmdlTWF4U2VsZWN0aW9ucyIsIm51bWJlckZpZWxkIiwiY2hhbmdlRmVlZGJhY2siLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJmdW5jIiwic2hhcGUiLCJhZGQiLCJ0aGVtZSIsInBhZGRpbmdUb3AiLCJzcGFjaW5nIiwidW5pdCIsInBhZGRpbmdSaWdodCIsIm1hcmdpblJpZ2h0IiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiaGVpZ2h0IiwiY29udGVudCIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsIm1hcmdpbkJvdHRvbSIsIndpZHRoIiwicGFkZGluZ0JvdHRvbSIsIm1hcmdpblRvcCIsIm1haW5PcHRzIiwianVzdGlmeUNvbnRlbnQiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImZvbnRTaXplIiwid2hpdGVTcGFjZSIsIm1heFdpZHRoIiwiY29sb3IiLCJwYWRkaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsSUFBUUEsS0FBUixHQUFpQ0Msa0JBQWpDLENBQVFELEtBQVI7QUFBQSxJQUFlRSxNQUFmLEdBQWlDRCxrQkFBakMsQ0FBZUMsTUFBZjtBQUFBLElBQXVCQyxLQUF2QixHQUFpQ0Ysa0JBQWpDLENBQXVCRSxLQUF2QjtBQUVBLElBQU1DLEdBQUcsR0FBRyx1QkFBTSxvQ0FBTixDQUFaOztJQUVhQyxNOzs7OztBQWVYLGtCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7QUFDakIsOEJBQU1BLEtBQU47QUFEaUIsbUdBb0JOLDBCQUFTLFVBQUFDLEdBQUcsRUFBSTtBQUMzQixZQUFLQyxLQUFMLENBQVcsVUFBQUMsQ0FBQyxFQUFJO0FBQ2RBLFFBQUFBLENBQUMsQ0FBQ0MsSUFBRixHQUFTSCxHQUFUO0FBQ0FFLFFBQUFBLENBQUMsQ0FBQ0UsTUFBRixHQUFXLEVBQVg7QUFDRCxPQUhEO0FBSUQsS0FMWSxFQUtWLEdBTFUsQ0FwQk07QUFBQSxtR0EyQk4sVUFBQUMsS0FBSyxFQUFJO0FBQ3BCLFVBQU1DLEtBQUssR0FBR0QsS0FBSyxDQUFDRSxNQUFOLENBQWFELEtBQTNCO0FBQ0EsVUFBTUUsWUFBWSxHQUFHRixLQUFyQjs7QUFFQSxZQUFLRyxRQUFMLENBQWM7QUFDWk4sUUFBQUEsSUFBSSxFQUFFRztBQURNLE9BQWQ7O0FBR0EsWUFBS0ksVUFBTCxDQUFnQkYsWUFBaEI7QUFDRCxLQW5Da0I7QUFBQSxxR0FxQ0osVUFBQ0osTUFBRCxFQUFTTyxJQUFULEVBQWtCO0FBQy9CLFlBQUtWLEtBQUwsQ0FBVyxVQUFBQyxDQUFDLEVBQUk7QUFDZEEsUUFBQUEsQ0FBQyxDQUFDRSxNQUFGLEdBQVdBLE1BQVg7QUFDQUYsUUFBQUEsQ0FBQyxDQUFDUyxJQUFGLEdBQVNBLElBQVQ7QUFFQSxZQUFNQyxpQkFBaUIsR0FBR1IsTUFBTSxDQUFDUyxNQUFQLENBQWMsVUFBQUMsQ0FBQztBQUFBLGlCQUFJQSxDQUFDLENBQUNDLE9BQU47QUFBQSxTQUFmLEVBQThCQyxNQUF4RDtBQUNBLFlBQU1DLEdBQUcsR0FBR0MsUUFBUSxDQUFDaEIsQ0FBQyxDQUFDaUIsYUFBSCxDQUFSLEdBQTRCakIsQ0FBQyxDQUFDaUIsYUFBOUIsR0FBOEMsQ0FBMUQ7QUFFQWpCLFFBQUFBLENBQUMsQ0FBQ2lCLGFBQUYsR0FBa0JDLElBQUksQ0FBQ0gsR0FBTCxDQUFTQSxHQUFULEVBQWNMLGlCQUFkLENBQWxCO0FBQ0QsT0FSRDtBQVNELEtBL0NrQjtBQUFBLDRHQWlERyxVQUFDUCxLQUFELEVBQVFZLEdBQVIsRUFBZ0I7QUFDcEMsWUFBS2hCLEtBQUwsQ0FBVyxVQUFBQyxDQUFDO0FBQUEsZUFBS0EsQ0FBQyxDQUFDaUIsYUFBRixHQUFrQkYsR0FBdkI7QUFBQSxPQUFaO0FBQ0QsS0FuRGtCO0FBQUEsOEZBcURYLFVBQUFJLEVBQUUsRUFBSTtBQUNaLHdCQUFrQyxNQUFLdEIsS0FBdkM7QUFBQSxVQUFRdUIsY0FBUixlQUFRQSxjQUFSO0FBQUEsVUFBd0JDLEtBQXhCLGVBQXdCQSxLQUF4QjtBQUNBLFVBQU1DLE1BQU0sR0FBRywyQkFBVUQsS0FBVixDQUFmO0FBQ0FGLE1BQUFBLEVBQUUsQ0FBQ0csTUFBRCxDQUFGO0FBQ0FGLE1BQUFBLGNBQWMsQ0FBQ0UsTUFBRCxDQUFkO0FBQ0QsS0ExRGtCO0FBQUEsdUdBNERGLFVBQUFDLFFBQVEsRUFBSTtBQUMzQixZQUFLeEIsS0FBTCxDQUFXLFVBQUFDLENBQUM7QUFBQSxlQUFLQSxDQUFDLENBQUN1QixRQUFGLEdBQWFBLFFBQWxCO0FBQUEsT0FBWjtBQUNELEtBOURrQjtBQUFBLDZHQWdFSSxVQUFBQyxjQUFjLEVBQUk7QUFDdkMseUJBQWtDLE1BQUszQixLQUF2QztBQUFBLFVBQVF1QixjQUFSLGdCQUFRQSxjQUFSO0FBQUEsVUFBd0JDLEtBQXhCLGdCQUF3QkEsS0FBeEI7QUFDQSxVQUFNQyxNQUFNLEdBQUcsMkJBQVVELEtBQVYsQ0FBZjtBQUNBQyxNQUFBQSxNQUFNLENBQUNFLGNBQVAsR0FBd0JBLGNBQXhCO0FBQ0FKLE1BQUFBLGNBQWMsQ0FBQ0UsTUFBRCxDQUFkO0FBQ0QsS0FyRWtCO0FBQUEsd0dBdUVELFVBQUFHLE1BQU0sRUFBSTtBQUMxQix5QkFBa0MsTUFBSzVCLEtBQXZDO0FBQUEsVUFBUXVCLGNBQVIsZ0JBQVFBLGNBQVI7QUFBQSxVQUF3QkMsS0FBeEIsZ0JBQXdCQSxLQUF4QjtBQUNBLFVBQU1DLE1BQU0sR0FBRywyQkFBVUQsS0FBVixDQUFmO0FBRUFDLE1BQUFBLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQkEsTUFBaEI7QUFDQUwsTUFBQUEsY0FBYyxDQUFDRSxNQUFELENBQWQ7QUFDRCxLQTdFa0I7QUFBQSxxSEErRVksVUFBQUksbUJBQW1CLEVBQUk7QUFDcEQseUJBQWtDLE1BQUs3QixLQUF2QztBQUFBLFVBQVF1QixjQUFSLGdCQUFRQSxjQUFSO0FBQUEsVUFBd0JDLEtBQXhCLGdCQUF3QkEsS0FBeEI7QUFDQSxVQUFNQyxNQUFNLEdBQUcsMkJBQVVELEtBQVYsQ0FBZjtBQUVBQyxNQUFBQSxNQUFNLENBQUNJLG1CQUFQLEdBQTZCQSxtQkFBN0I7QUFDQU4sTUFBQUEsY0FBYyxDQUFDRSxNQUFELENBQWQ7QUFDRCxLQXJGa0I7QUFBQSwyR0F1RkUsVUFBQUssU0FBUyxFQUFJO0FBQ2hDLHlCQUFrQyxNQUFLOUIsS0FBdkM7QUFBQSxVQUFRdUIsY0FBUixnQkFBUUEsY0FBUjtBQUFBLFVBQXdCQyxLQUF4QixnQkFBd0JBLEtBQXhCO0FBRUFELE1BQUFBLGNBQWMsaUNBQ1RDLEtBRFM7QUFFWk0sUUFBQUEsU0FBUyxFQUFUQTtBQUZZLFNBQWQ7QUFJRCxLQTlGa0I7QUFHakIsUUFBUU4sTUFBUixHQUFrQixNQUFLeEIsS0FBdkIsQ0FBUXdCLEtBQVI7QUFFQSxVQUFLTyxLQUFMLEdBQWE7QUFDWDNCLE1BQUFBLElBQUksRUFBR29CLE1BQUssSUFBSUEsTUFBSyxDQUFDcEIsSUFBaEIsSUFBeUI7QUFEcEIsS0FBYjtBQUxpQjtBQVFsQjs7OztXQUVELDBDQUFpQzRCLE1BQWpDLEVBQXlDO0FBQ3ZDLFVBQVFSLEtBQVIsR0FBa0JRLE1BQWxCLENBQVFSLEtBQVI7O0FBRUEsVUFBSUEsS0FBSyxJQUFJQSxLQUFLLENBQUNwQixJQUFuQixFQUF5QjtBQUN2QixhQUFLTSxRQUFMLENBQWM7QUFDWk4sVUFBQUEsSUFBSSxFQUFFb0IsS0FBSyxDQUFDcEI7QUFEQSxTQUFkO0FBR0Q7QUFDRjs7O1dBOEVELGtCQUFTO0FBQ1AsVUFBYzZCLFNBQWQsR0FBNEIsS0FBS0YsS0FBakMsQ0FBUTNCLElBQVI7QUFDQSx5QkFPSSxLQUFLSixLQVBUO0FBQUEsVUFDRXdCLEtBREYsZ0JBQ0VBLEtBREY7QUFBQSxVQUVFVSxPQUZGLGdCQUVFQSxPQUZGO0FBQUEsVUFHRUMsWUFIRixnQkFHRUEsWUFIRjtBQUFBLFVBSUVaLGNBSkYsZ0JBSUVBLGNBSkY7QUFBQSxVQUtFYSxhQUxGLGdCQUtFQSxhQUxGO0FBQUEsVUFNRUMsc0JBTkYsZ0JBTUVBLHNCQU5GOztBQVFBLGlCQW1CSUQsYUFBYSxJQUFJLEVBbkJyQjtBQUFBLDZCQUNFUixNQURGO0FBQUEsVUFDRUEsTUFERiw0QkFDVyxFQURYO0FBQUEsMkJBRUV4QixJQUZGO0FBQUEsVUFFRUEsSUFGRiwwQkFFUyxFQUZUO0FBQUEsNkJBR0VDLE1BSEY7QUFBQSxVQUdFQSxNQUhGLDRCQUdXLEVBSFg7QUFBQSwyQkFJRU8sSUFKRjtBQUFBLFVBSUVBLElBSkYsMEJBSVMsRUFKVDtBQUFBLCtCQUtFYyxRQUxGO0FBQUEsVUFLRUEsUUFMRiw4QkFLYSxFQUxiO0FBQUEscUNBTUVDLGNBTkY7QUFBQSxVQU1FQSxjQU5GLG9DQU1tQixFQU5uQjtBQUFBLGlDQU9FVyxVQVBGO0FBQUEsVUFPRUEsVUFQRixnQ0FPZSxFQVBmO0FBQUEscUNBUUVDLGNBUkY7QUFBQSxVQVFFQSxjQVJGLG9DQVFtQixFQVJuQjtBQUFBLG9DQVNFQyxhQVRGO0FBQUEsVUFTRUEsYUFURixtQ0FTa0IsRUFUbEI7QUFBQSx1Q0FVRVgsbUJBVkY7QUFBQSxVQVVFQSxtQkFWRixzQ0FVd0IsRUFWeEI7QUFBQSx1Q0FXRVksbUJBWEY7QUFBQSxVQVdFQSxtQkFYRixzQ0FXd0IsRUFYeEI7QUFBQSxnQ0FZRVgsU0FaRjtBQUFBLFVBWUVBLFNBWkYsK0JBWWMsRUFaZDtBQUFBLGtDQWFFWSxXQWJGO0FBQUEsVUFhRUEsV0FiRixpQ0FhZ0IsRUFiaEI7QUFBQSxpQ0FjRUMsVUFkRjtBQUFBLFVBY0VBLFVBZEYsZ0NBY2UsRUFkZjtBQUFBLHVDQWVFQyxnQkFmRjtBQUFBLFVBZUVBLGdCQWZGLHNDQWVxQixFQWZyQjtBQUFBLFVBZ0JFQyxTQWhCRixRQWdCRUEsU0FoQkY7QUFBQSxVQWlCRUMsU0FqQkYsUUFpQkVBLFNBakJGO0FBQUEsVUFrQkUxQixhQWxCRixRQWtCRUEsYUFsQkY7O0FBb0JBLGtCQUVJSSxLQUFLLElBQUksRUFGYjtBQUFBLFVBQ0V1QiwwQkFERixTQUNFQSwwQkFERjtBQUFBLFVBQzhCQyxhQUQ5QixTQUM4QkEsYUFEOUI7QUFBQSxVQUM2Q0MsZ0JBRDdDLFNBQzZDQSxnQkFEN0M7QUFBQSxVQUMrREMsaUJBRC9ELFNBQytEQSxpQkFEL0Q7QUFBQSxVQUNrRkMsZUFEbEYsU0FDa0ZBLGVBRGxGO0FBQUEsVUFDbUdDLE1BRG5HLFNBQ21HQSxNQURuRzs7QUFHQSxVQUFNQyxXQUFXLEdBQUcsRUFBcEI7QUFDQSxVQUFNQyxjQUFjLEdBQUdsQyxhQUFhLElBQUl5QixTQUFqQixJQUErQkMsU0FBdEQ7QUFDQSxVQUFNUyx1QkFBdUIsR0FBR25DLGFBQWEsNEJBQXFCQSxhQUFyQixtQ0FBa0UsRUFBL0c7QUFDQSxVQUFNb0MsbUJBQW1CLEdBQUdYLFNBQVMsd0NBQWlDQSxTQUFqQyx3QkFBK0QsRUFBcEc7QUFDQSxVQUFNWSxtQkFBbUIsR0FBR1gsU0FBUyw0QkFBcUJBLFNBQXJCLGtDQUE2RCxFQUFsRzs7QUFFQSxrQkFBeUNNLE1BQU0sSUFBSSxFQUFuRDtBQUFBLFVBQVFNLFdBQVIsU0FBUUEsV0FBUjtBQUFBLFVBQXFCQyxlQUFyQixTQUFxQkEsZUFBckI7O0FBRUEsY0FBUW5DLEtBQUssQ0FBQ29DLHFCQUFkO0FBQ0UsYUFBSyxLQUFMO0FBQ0VQLFVBQUFBLFdBQVcsQ0FBQ1EsUUFBWixHQUF1QixLQUF2QjtBQUNBOztBQUNGO0FBQ0VSLFVBQUFBLFdBQVcsQ0FBQ1EsUUFBWixHQUF1QixRQUF2QjtBQUNBO0FBTko7O0FBUUEsVUFBY0MsV0FBZCxHQUE4QnRDLEtBQTlCLENBQU1uQixNQUFOO0FBQ0F5RCxNQUFBQSxXQUFXLEdBQUdBLFdBQVcsSUFBSSxFQUE3QjtBQUVBaEUsTUFBQUEsR0FBRyxDQUFDLHlCQUFELEVBQTRCMEIsS0FBSyxDQUFDSixhQUFsQyxDQUFIO0FBRUEsMEJBQ0UsZ0NBQUMsZ0JBQUQsQ0FBUSxZQUFSO0FBQ0UsUUFBQSxRQUFRLGVBQ04sZ0NBQUMsS0FBRDtBQUNFLFVBQUEsS0FBSyxFQUFFSSxLQURUO0FBRUUsVUFBQSxhQUFhLEVBQUVZLGFBRmpCO0FBR0UsVUFBQSxhQUFhLEVBQUUsdUJBQUFaLEtBQUs7QUFBQSxtQkFBSUQsY0FBYyxDQUFDQyxLQUFELENBQWxCO0FBQUEsV0FIdEI7QUFJRSxVQUFBLHFCQUFxQixFQUFFYSxzQkFKekI7QUFLRSxVQUFBLE1BQU0sRUFBRTtBQUNOMEIsWUFBQUEsUUFBUSxFQUFFO0FBQ1JwQyxjQUFBQSxjQUFjLEVBQ1pBLGNBQWMsQ0FBQ2hDLFFBQWYsSUFBMkJDLE1BQU0sQ0FBQytCLGNBQWMsQ0FBQ3FDLEtBQWhCLENBRjNCO0FBR1JwQixjQUFBQSxnQkFBZ0IsRUFDZEEsZ0JBQWdCLENBQUNqRCxRQUFqQixJQUE2QkMsTUFBTSxDQUFDZ0QsZ0JBQWdCLENBQUNvQixLQUFsQixDQUo3QjtBQUtSYixjQUFBQSxlQUFlLEVBQ2J6QixRQUFRLENBQUMvQixRQUFULElBQXFCQyxNQUFNLENBQUM4QixRQUFRLENBQUNzQyxLQUFWO0FBTnJCLGFBREo7QUFTTkMsWUFBQUEsVUFBVSxFQUFFO0FBQ1ZsQixjQUFBQSwwQkFBMEIsRUFDeEJsQixtQkFBbUIsQ0FBQ2xDLFFBQXBCLElBQ0FDLE1BQU0sQ0FBQ2lDLG1CQUFtQixDQUFDbUMsS0FBckIsQ0FIRTtBQUlWRSxjQUFBQSwwQkFBMEIsRUFDeEJ6QixtQkFBbUIsQ0FBQzlDLFFBQXBCLElBQ0FDLE1BQU0sQ0FBQzZDLG1CQUFtQixDQUFDdUIsS0FBckIsQ0FORTtBQU9WaEIsY0FBQUEsYUFBYSxFQUFFcEIsTUFBTSxDQUFDakMsUUFBUCxJQUFtQkMsTUFBTSxDQUFDZ0MsTUFBTSxDQUFDb0MsS0FBUixDQVA5QjtBQVFWZixjQUFBQSxnQkFBZ0IsRUFBRW5CLFNBQVMsQ0FBQ25DLFFBQVYsSUFBc0JDLE1BQU0sQ0FBQ2tDLFNBQVMsQ0FBQ2tDLEtBQVgsQ0FScEM7QUFTVmQsY0FBQUEsaUJBQWlCLEVBQ2JQLFVBQVUsQ0FBQ2hELFFBQVgsSUFBdUJDLE1BQU0sQ0FBQytDLFVBQVUsQ0FBQ3FCLEtBQVosQ0FWdkI7QUFXVnRCLGNBQUFBLFdBQVcsRUFDVEEsV0FBVyxDQUFDL0MsUUFBWixJQUNBRSxLQUFLLENBQUM2QyxXQUFXLENBQUNzQixLQUFiLEVBQW9CLENBQUMsTUFBRCxFQUFTLFFBQVQsQ0FBcEI7QUFiRztBQVROO0FBTFY7QUFGSixzQkFtQ0U7QUFBSyxRQUFBLFNBQVMsRUFBRTlCLE9BQU8sQ0FBQ2lDO0FBQXhCLFNBQ0dwQiwwQkFBMEIsaUJBQ3pCLGdDQUFDLHdCQUFEO0FBQ0UsUUFBQSxLQUFLLEVBQUVsQixtQkFBbUIsQ0FBQ21DLEtBRDdCO0FBRUUsUUFBQSxTQUFTLEVBQUU5QixPQUFPLENBQUNrQztBQUZyQixzQkFJRSxnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFbEMsT0FBTyxDQUFDTixNQURyQjtBQUVFLFFBQUEsTUFBTSxFQUFFSixLQUFLLENBQUNLLG1CQUFOLElBQTZCLEVBRnZDO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBS3dDLDRCQUhqQjtBQUlFLFFBQUEsWUFBWSxFQUFFbEMsWUFKaEI7QUFLRSxRQUFBLFFBQVEsRUFBRSxLQUxaO0FBTUUsUUFBQSxXQUFXLEVBQUVrQixXQU5mO0FBT0UsUUFBQSxVQUFVLEVBQUVIO0FBUGQsUUFKRixDQUZKLEVBa0JHRixhQUFhLGlCQUNaLGdDQUFDLHdCQUFEO0FBQ0UsUUFBQSxLQUFLLEVBQUVwQixNQUFNLENBQUNvQyxLQUFQLElBQWdCLEVBRHpCO0FBRUUsUUFBQSxTQUFTLEVBQUU5QixPQUFPLENBQUNrQztBQUZyQixzQkFJRSxnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFbEMsT0FBTyxDQUFDTixNQURyQjtBQUVFLFFBQUEsTUFBTSxFQUFFSixLQUFLLENBQUNJLE1BRmhCO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBSzBDLGVBSGpCO0FBSUUsUUFBQSxZQUFZLEVBQUVuQyxZQUpoQjtBQUtFLFFBQUEsV0FBVyxFQUFFa0IsV0FMZjtBQU1FLFFBQUEsVUFBVSxFQUFFSDtBQU5kLFFBSkYsQ0FuQkosRUFrQ0dELGdCQUFnQixpQkFDZixnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsS0FBSyxFQUFFbkIsU0FBUyxDQUFDa0MsS0FBVixJQUFtQixFQUQ1QjtBQUVFLFFBQUEsU0FBUyxFQUFFOUIsT0FBTyxDQUFDa0M7QUFGckIsc0JBSUUsZ0NBQUMsd0JBQUQ7QUFDRSxRQUFBLFNBQVMsRUFBRWxDLE9BQU8sQ0FBQ04sTUFEckI7QUFFRSxRQUFBLE1BQU0sRUFBRUosS0FBSyxDQUFDTSxTQUFOLElBQW1CLEVBRjdCO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBS3lDLGtCQUhqQjtBQUlFLFFBQUEsWUFBWSxFQUFFcEMsWUFKaEI7QUFLRSxRQUFBLFdBQVcsRUFBRWtCLFdBTGY7QUFNRSxRQUFBLFVBQVUsRUFBRUg7QUFOZCxRQUpGLENBbkNKLEVBa0RHOUMsSUFBSSxDQUFDVCxRQUFMLGlCQUNDLGdDQUFDLHFCQUFEO0FBQ0UsUUFBQSxLQUFLLEVBQUVTLElBQUksQ0FBQzRELEtBRGQ7QUFFRSxRQUFBLFNBQVMsRUFBRTlCLE9BQU8sQ0FBQ3NDLEtBRnJCO0FBR0UsUUFBQSxTQUFTLE1BSFg7QUFJRSxRQUFBLEtBQUssRUFBRXZDLFNBSlQ7QUFLRSxRQUFBLFFBQVEsRUFBRSxLQUFLd0MsVUFMakI7QUFNRSxRQUFBLFVBQVUsRUFBRXZCO0FBTmQsUUFuREosRUE2REdJLGNBQWMsaUJBQUksZ0NBQUMsbUJBQUQ7QUFDakIsUUFBQSxPQUFPLEVBQUU7QUFBQ29CLFVBQUFBLE9BQU8sRUFBRXhDLE9BQU8sQ0FBQ3dDO0FBQWxCLFNBRFE7QUFFakIsUUFBQSxvQkFBb0IsTUFGSDtBQUdqQixRQUFBLG9CQUFvQixNQUhIO0FBSWpCLFFBQUEsU0FBUyxFQUFFLE1BSk07QUFLakIsUUFBQSxLQUFLLG9DQUE2Qm5CLHVCQUE3QixTQUF1REMsbUJBQXZELFNBQTZFQyxtQkFBN0U7QUFMWSxzQkFPakIsZ0NBQUMsZ0JBQUQ7QUFBTSxRQUFBLFFBQVEsRUFBRSxPQUFoQjtBQUF5QixRQUFBLEtBQUssRUFBRSxTQUFoQztBQUEyQyxRQUFBLEtBQUssRUFBRTtBQUFFLG1CQUFPO0FBQVQ7QUFBbEQsUUFQaUIsQ0E3RHJCLEVBdUVHQyxXQUFXLGlCQUFJO0FBQUssUUFBQSxTQUFTLEVBQUV4QixPQUFPLENBQUN5QztBQUF4QixTQUFvQ2IsV0FBcEMsQ0F2RWxCLEVBd0VHSCxlQUFlLGlCQUFJO0FBQUssUUFBQSxTQUFTLEVBQUV6QixPQUFPLENBQUN5QztBQUF4QixTQUFvQ2hCLGVBQXBDLENBeEV0QixFQTBFR3RELE1BQU0sQ0FBQ1YsUUFBUCxpQkFDQyxnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsS0FBSyxFQUFFVSxNQUFNLENBQUMyRCxLQUFQLElBQWdCLEVBRHpCO0FBRUUsUUFBQSxTQUFTLEVBQUU5QixPQUFPLENBQUMwQztBQUZyQixzQkFJRSxnQ0FBQyxxQkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFMUMsT0FBTyxDQUFDMkMsU0FEckI7QUFFRSxRQUFBLElBQUksRUFBRXJELEtBQUssQ0FBQ3BCLElBRmQ7QUFHRSxRQUFBLE1BQU0sRUFBRTBELFdBSFY7QUFJRSxRQUFBLFFBQVEsRUFBRSxLQUFLZ0I7QUFKakIsUUFKRixDQTNFSixFQXdGR2xFLElBQUksQ0FBQ2pCLFFBQUwsaUJBQ0MsZ0NBQUMsZ0JBQUQ7QUFDRSxRQUFBLEtBQUssWUFBS2lCLElBQUksQ0FBQ29ELEtBQVYsZUFBb0J4QyxLQUFLLENBQUNaLElBQU4sR0FBYVksS0FBSyxDQUFDWixJQUFuQixHQUEwQixNQUE5QyxDQURQO0FBRUUsUUFBQSxTQUFTLEVBQUVzQixPQUFPLENBQUM2QztBQUZyQixRQXpGSixFQStGR3pDLFVBQVUsQ0FBQzNDLFFBQVgsaUJBQ0MsZ0NBQUMsZ0JBQUQ7QUFDRSxRQUFBLEtBQUssWUFBSzJDLFVBQVUsQ0FBQzBCLEtBQWhCLGVBQTBCRixXQUFXLENBQUM3QyxNQUF0QyxDQURQO0FBRUUsUUFBQSxTQUFTLEVBQUVpQixPQUFPLENBQUM2QztBQUZyQixRQWhHSixFQXNHR3ZDLGFBQWEsQ0FBQzdDLFFBQWQsaUJBQ0MsZ0NBQUMsZ0JBQUQ7QUFDRSxRQUFBLEtBQUssWUFBSzZDLGFBQWEsQ0FBQ3dCLEtBQW5CLGVBQ0hGLFdBQVcsQ0FBQ2hELE1BQVosQ0FBbUIsVUFBQUMsQ0FBQztBQUFBLGlCQUFJQSxDQUFDLENBQUNDLE9BQU47QUFBQSxTQUFwQixFQUFtQ0MsTUFEaEMsQ0FEUDtBQUlFLFFBQUEsU0FBUyxFQUFFaUIsT0FBTyxDQUFDNkM7QUFKckIsUUF2R0osRUErR0d4QyxjQUFjLENBQUM1QyxRQUFmLGlCQUNDLGdDQUFDLHlCQUFEO0FBQ0UsUUFBQSxHQUFHLEVBQUVtRSxXQUFXLENBQUNoRCxNQUFaLENBQW1CLFVBQUFDLENBQUM7QUFBQSxpQkFBSUEsQ0FBQyxDQUFDQyxPQUFOO0FBQUEsU0FBcEIsRUFBbUNDLE1BQW5DLElBQTZDLENBRHBEO0FBRUUsUUFBQSxLQUFLLFlBQUtzQixjQUFjLENBQUN5QixLQUFwQixhQUZQO0FBR0UsUUFBQSxHQUFHLEVBQUVGLFdBQVcsQ0FBQzdDLE1BSG5CO0FBSUUsUUFBQSxLQUFLLEVBQUVPLEtBQUssQ0FBQ0osYUFKZjtBQUtFLFFBQUEsUUFBUSxFQUFFLEtBQUs0RCxtQkFMakI7QUFNRSxRQUFBLFNBQVMsRUFBRTlDLE9BQU8sQ0FBQytDO0FBTnJCLFFBaEhKLEVBMEhHOUIsZUFBZSxpQkFDZCxnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsUUFBUSxFQUFFM0IsS0FBSyxDQUFDRSxRQURsQjtBQUVFLFFBQUEsUUFBUSxFQUFFLEtBQUt3RCxjQUZqQjtBQUdFLFFBQUEsV0FBVyxFQUFFN0I7QUFIZixRQTNISixDQW5DRixDQURGO0FBd0tEOzs7RUE3VXlCOEIsa0JBQU1DLFM7OztpQ0FBckJyRixNLGVBQ1E7QUFDakJ5QixFQUFBQSxLQUFLLEVBQUU2RCxzQkFBVUMsTUFBVixDQUFpQkMsVUFEUDtBQUVqQm5ELEVBQUFBLGFBQWEsRUFBRWlELHNCQUFVQyxNQUFWLENBQWlCQyxVQUZmO0FBR2pCckQsRUFBQUEsT0FBTyxFQUFFbUQsc0JBQVVDLE1BQVYsQ0FBaUJDLFVBSFQ7QUFJakJoRSxFQUFBQSxjQUFjLEVBQUU4RCxzQkFBVUcsSUFBVixDQUFlRCxVQUpkO0FBS2pCbEQsRUFBQUEsc0JBQXNCLEVBQUVnRCxzQkFBVUcsSUFBVixDQUFlRCxVQUx0QjtBQU1qQnBELEVBQUFBLFlBQVksRUFBRWtELHNCQUFVSSxLQUFWLENBQWdCO0FBQzVCQyxJQUFBQSxHQUFHLEVBQUVMLHNCQUFVRyxJQUFWLENBQWVELFVBRFE7QUFFNUIsY0FBUUYsc0JBQVVHLElBQVYsQ0FBZUQ7QUFGSyxHQUFoQjtBQU5HLEM7aUNBRFJ4RixNLGtCQWFXLEU7O2VBa1VULHdCQUFXLFVBQUE0RixLQUFLO0FBQUEsU0FBSztBQUNsQ3hCLElBQUFBLFNBQVMsRUFBRTtBQUNUeUIsTUFBQUEsVUFBVSxFQUFFRCxLQUFLLENBQUNFLE9BQU4sQ0FBY0M7QUFEakIsS0FEdUI7QUFJbENsQixJQUFBQSxrQkFBa0IsRUFBRTtBQUNsQm1CLE1BQUFBLFlBQVksRUFBRSxDQURJO0FBRWxCQyxNQUFBQSxXQUFXLEVBQUUsQ0FGSztBQUdsQixpQkFBVztBQUNUbkMsUUFBQUEsUUFBUSxFQUFFLFVBREQ7QUFFVG9DLFFBQUFBLE1BQU0sRUFBRSxDQUZDO0FBR1RDLFFBQUFBLElBQUksRUFBRSxDQUhHO0FBSVRDLFFBQUFBLEtBQUssRUFBRSxDQUpFO0FBS1RDLFFBQUFBLE1BQU0sRUFBRSxLQUxDO0FBTVRDLFFBQUFBLE9BQU8sRUFBRSxJQU5BO0FBT1RDLFFBQUFBLGVBQWUsRUFBRVgsS0FBSyxDQUFDWSxPQUFOLENBQWNDLE9BQWQsQ0FBc0JDO0FBUDlCLE9BSE87QUFZbEJDLE1BQUFBLFlBQVksRUFBRWYsS0FBSyxDQUFDRSxPQUFOLENBQWNDO0FBWlYsS0FKYztBQWtCbENmLElBQUFBLElBQUksRUFBRTtBQUNKaUIsTUFBQUEsV0FBVyxFQUFFTCxLQUFLLENBQUNFLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQjtBQUQ5QixLQWxCNEI7QUFxQmxDdEIsSUFBQUEsS0FBSyxFQUFFO0FBQ0xtQyxNQUFBQSxLQUFLLEVBQUUsTUFERjtBQUVMQyxNQUFBQSxhQUFhLEVBQUVqQixLQUFLLENBQUNFLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQjtBQUYvQixLQXJCMkI7QUF5QmxDakIsSUFBQUEsU0FBUyxFQUFFO0FBQ1RnQyxNQUFBQSxTQUFTLEVBQUVsQixLQUFLLENBQUNFLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQjtBQUR2QixLQXpCdUI7QUE0QmxDZ0IsSUFBQUEsUUFBUSxFQUFFO0FBQ1JILE1BQUFBLEtBQUssRUFBRSxNQURDO0FBRVJJLE1BQUFBLGNBQWMsRUFBRSxlQUZSO0FBR1JDLE1BQUFBLE9BQU8sRUFBRSxNQUhEO0FBSVJDLE1BQUFBLFVBQVUsRUFBRTtBQUpKLEtBNUJ3QjtBQWtDbEM3QyxJQUFBQSxZQUFZLEVBQUU7QUFDWnVDLE1BQUFBLEtBQUssRUFBRSxNQURLO0FBRVpDLE1BQUFBLGFBQWEsRUFBRWpCLEtBQUssQ0FBQ0UsT0FBTixDQUFjQyxJQUFkLEdBQXFCLENBRnhCO0FBR1pZLE1BQUFBLFlBQVksRUFBRWYsS0FBSyxDQUFDRSxPQUFOLENBQWNDLElBQWQsR0FBcUI7QUFIdkIsS0FsQ29CO0FBdUNsQ2xFLElBQUFBLE1BQU0sRUFBRTtBQUNOZ0UsTUFBQUEsVUFBVSxFQUFFRCxLQUFLLENBQUNFLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQixDQUQzQjtBQUVOYSxNQUFBQSxLQUFLLEVBQUU7QUFGRCxLQXZDMEI7QUEyQ2xDMUIsSUFBQUEsV0FBVyxFQUFFO0FBQ1gwQixNQUFBQSxLQUFLLEVBQUU7QUFESSxLQTNDcUI7QUE4Q2xDakMsSUFBQUEsT0FBTyxFQUFFO0FBQ1B3QyxNQUFBQSxRQUFRLEVBQUUsTUFESDtBQUVQQyxNQUFBQSxVQUFVLEVBQUUsS0FGTDtBQUdQQyxNQUFBQSxRQUFRLEVBQUU7QUFISCxLQTlDeUI7QUFtRGxDekMsSUFBQUEsU0FBUyxFQUFFO0FBQ1R1QyxNQUFBQSxRQUFRLEVBQUUsTUFERDtBQUVURyxNQUFBQSxLQUFLLEVBQUUsS0FGRTtBQUdUQyxNQUFBQSxPQUFPLEVBQUU7QUFIQTtBQW5EdUIsR0FBTDtBQUFBLENBQWhCLEVBd0RYdkgsTUF4RFcsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFRleHRGaWVsZCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UZXh0RmllbGQnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgeyBUb2tlbml6ZXIgfSBmcm9tICdAcGllLWxpYi90ZXh0LXNlbGVjdCc7XG5pbXBvcnQge1xuICBJbnB1dENvbnRhaW5lcixcbiAgTnVtYmVyVGV4dEZpZWxkLFxuICBGZWVkYmFja0NvbmZpZyxcbiAgc2V0dGluZ3MsXG4gIGxheW91dFxufSBmcm9tICdAcGllLWxpYi9jb25maWctdWknO1xuaW1wb3J0IENoaXAgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQ2hpcCc7XG5pbXBvcnQgSW5mbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvSW5mbyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IEVkaXRhYmxlSHRtbCBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1Rvb2x0aXAnO1xuXG5jb25zdCB7IFBhbmVsLCB0b2dnbGUsIHJhZGlvIH0gPSBzZXR0aW5ncztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtZWxlbWVudDpzZWxlY3QtdGV4dDpjb25maWd1cmUnKTtcblxuZXhwb3J0IGNsYXNzIERlc2lnbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb25maWd1cmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIG9uTW9kZWxDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgaW1hZ2VTdXBwb3J0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgYWRkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgZGVsZXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gICAgfSlcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge307XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICBjb25zdCB7IG1vZGVsIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHRleHQ6IChtb2RlbCAmJiBtb2RlbC50ZXh0KSB8fCAnJ1xuICAgIH07XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuUHJvcHMpIHtcbiAgICBjb25zdCB7IG1vZGVsIH0gPSBuUHJvcHM7XG5cbiAgICBpZiAobW9kZWwgJiYgbW9kZWwudGV4dCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHRleHQ6IG1vZGVsLnRleHRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRleHQgPSBkZWJvdW5jZSh2YWwgPT4ge1xuICAgIHRoaXMuYXBwbHkodSA9PiB7XG4gICAgICB1LnRleHQgPSB2YWw7XG4gICAgICB1LnRva2VucyA9IFtdO1xuICAgIH0pO1xuICB9LCAyMDApO1xuXG4gIGNoYW5nZVRleHQgPSBldmVudCA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgcHJlcGFyZWRUZXh0ID0gdmFsdWU7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHRleHQ6IHZhbHVlXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVUZXh0KHByZXBhcmVkVGV4dCk7XG4gIH07XG5cbiAgY2hhbmdlVG9rZW5zID0gKHRva2VucywgbW9kZSkgPT4ge1xuICAgIHRoaXMuYXBwbHkodSA9PiB7XG4gICAgICB1LnRva2VucyA9IHRva2VucztcbiAgICAgIHUubW9kZSA9IG1vZGU7XG5cbiAgICAgIGNvbnN0IGNvcnJlY3RUb2tlbkNvdW50ID0gdG9rZW5zLmZpbHRlcih0ID0+IHQuY29ycmVjdCkubGVuZ3RoO1xuICAgICAgY29uc3QgbWF4ID0gaXNGaW5pdGUodS5tYXhTZWxlY3Rpb25zKSA/IHUubWF4U2VsZWN0aW9ucyA6IDA7XG5cbiAgICAgIHUubWF4U2VsZWN0aW9ucyA9IE1hdGgubWF4KG1heCwgY29ycmVjdFRva2VuQ291bnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNoYW5nZU1heFNlbGVjdGlvbnMgPSAoZXZlbnQsIG1heCkgPT4ge1xuICAgIHRoaXMuYXBwbHkodSA9PiAodS5tYXhTZWxlY3Rpb25zID0gbWF4KSk7XG4gIH07XG5cbiAgYXBwbHkgPSBmbiA9PiB7XG4gICAgY29uc3QgeyBvbk1vZGVsQ2hhbmdlZCwgbW9kZWwgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdXBkYXRlID0gY2xvbmVEZWVwKG1vZGVsKTtcbiAgICBmbih1cGRhdGUpO1xuICAgIG9uTW9kZWxDaGFuZ2VkKHVwZGF0ZSk7XG4gIH07XG5cbiAgY2hhbmdlRmVlZGJhY2sgPSBmZWVkYmFjayA9PiB7XG4gICAgdGhpcy5hcHBseSh1ID0+ICh1LmZlZWRiYWNrID0gZmVlZGJhY2spKTtcbiAgfTtcblxuICBjaGFuZ2VQYXJ0aWFsU2NvcmluZyA9IHBhcnRpYWxTY29yaW5nID0+IHtcbiAgICBjb25zdCB7IG9uTW9kZWxDaGFuZ2VkLCBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGUgPSBjbG9uZURlZXAobW9kZWwpO1xuICAgIHVwZGF0ZS5wYXJ0aWFsU2NvcmluZyA9IHBhcnRpYWxTY29yaW5nO1xuICAgIG9uTW9kZWxDaGFuZ2VkKHVwZGF0ZSk7XG4gIH07XG5cbiAgb25Qcm9tcHRDaGFuZ2VkID0gcHJvbXB0ID0+IHtcbiAgICBjb25zdCB7IG9uTW9kZWxDaGFuZ2VkLCBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGUgPSBjbG9uZURlZXAobW9kZWwpO1xuXG4gICAgdXBkYXRlLnByb21wdCA9IHByb21wdDtcbiAgICBvbk1vZGVsQ2hhbmdlZCh1cGRhdGUpO1xuICB9O1xuXG4gIG9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgPSB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0+IHtcbiAgICBjb25zdCB7IG9uTW9kZWxDaGFuZ2VkLCBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGUgPSBjbG9uZURlZXAobW9kZWwpO1xuXG4gICAgdXBkYXRlLnRlYWNoZXJJbnN0cnVjdGlvbnMgPSB0ZWFjaGVySW5zdHJ1Y3Rpb25zO1xuICAgIG9uTW9kZWxDaGFuZ2VkKHVwZGF0ZSk7XG4gIH07XG5cbiAgb25SYXRpb25hbGVDaGFuZ2VkID0gcmF0aW9uYWxlID0+IHtcbiAgICBjb25zdCB7IG9uTW9kZWxDaGFuZ2VkLCBtb2RlbCB9ID0gdGhpcy5wcm9wcztcblxuICAgIG9uTW9kZWxDaGFuZ2VkKHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgcmF0aW9uYWxlXG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgdGV4dDogdGV4dFZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGVsLFxuICAgICAgY2xhc3NlcyxcbiAgICAgIGltYWdlU3VwcG9ydCxcbiAgICAgIG9uTW9kZWxDaGFuZ2VkLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWRcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7XG4gICAgICBwcm9tcHQgPSB7fSxcbiAgICAgIHRleHQgPSB7fSxcbiAgICAgIHRva2VucyA9IHt9LFxuICAgICAgbW9kZSA9IHt9LFxuICAgICAgZmVlZGJhY2sgPSB7fSxcbiAgICAgIHBhcnRpYWxTY29yaW5nID0ge30sXG4gICAgICBzZWxlY3Rpb25zID0ge30sXG4gICAgICBzZWxlY3Rpb25Db3VudCA9IHt9LFxuICAgICAgY29ycmVjdEFuc3dlciA9IHt9LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IHt9LFxuICAgICAgc3R1ZGVudEluc3RydWN0aW9ucyA9IHt9LFxuICAgICAgcmF0aW9uYWxlID0ge30sXG4gICAgICBzY29yaW5nVHlwZSA9IHt9LFxuICAgICAgc3BlbGxDaGVjayA9IHt9LFxuICAgICAgaGlnaGxpZ2h0Q2hvaWNlcyA9IHt9LFxuICAgICAgbWluVG9rZW5zLFxuICAgICAgbWF4VG9rZW5zLFxuICAgICAgbWF4U2VsZWN0aW9uc1xuICAgIH0gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkLCBwcm9tcHRFbmFibGVkLCByYXRpb25hbGVFbmFibGVkLCBzcGVsbENoZWNrRW5hYmxlZCwgZmVlZGJhY2tFbmFibGVkLCBlcnJvcnNcbiAgICB9ID0gbW9kZWwgfHwge307XG4gICAgY29uc3QgdG9vbGJhck9wdHMgPSB7fTtcbiAgICBjb25zdCBjb25maWdTZXR0aW5ncyA9IG1heFNlbGVjdGlvbnMgfHwgbWluVG9rZW5zIHx8ICBtYXhUb2tlbnM7XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uc1ZhbGlkYXRpb24gPSBtYXhTZWxlY3Rpb25zID8gYFxcbk5vIG1vcmUgdGhhbiAke21heFNlbGVjdGlvbnN9IHRva2VucyBzaG91bGQgYmUgc2VsZWN0ZWQuYCA6ICcnO1xuICAgIGNvbnN0IG1pblRva2Vuc1ZhbGlkYXRpb24gPSBtaW5Ub2tlbnMgPyBgXFxuVGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0ICR7bWluVG9rZW5zfSB0b2tlbnMgZGVmaW5lZC5gIDogJyc7XG4gICAgY29uc3QgbWF4VG9rZW5zVmFsaWRhdGlvbiA9IG1heFRva2VucyA/IGBcXG5ObyBtb3JlIHRoYW4gJHttYXhUb2tlbnN9IHRva2VucyBzaG91bGQgYmUgZGVmaW5lZC5gIDogJyc7XG5cbiAgICBjb25zdCB7IHRva2Vuc0Vycm9yLCBzZWxlY3Rpb25zRXJyb3IgfSA9IGVycm9ycyB8fCB7fTtcblxuICAgIHN3aXRjaCAobW9kZWwudG9vbGJhckVkaXRvclBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICB0b29sYmFyT3B0cy5wb3NpdGlvbiA9ICd0b3AnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRvb2xiYXJPcHRzLnBvc2l0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgeyB0b2tlbnM6IHRva2Vuc01vZGVsIH0gPSBtb2RlbDtcbiAgICB0b2tlbnNNb2RlbCA9IHRva2Vuc01vZGVsIHx8IFtdO1xuXG4gICAgbG9nKCdbcmVuZGVyXSBtYXhTZWxlY3Rpb25zOicsIG1vZGVsLm1heFNlbGVjdGlvbnMpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxsYXlvdXQuQ29uZmlnTGF5b3V0XG4gICAgICAgIHNldHRpbmdzPXtcbiAgICAgICAgICA8UGFuZWxcbiAgICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249e2NvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICBvbkNoYW5nZU1vZGVsPXttb2RlbCA9PiBvbk1vZGVsQ2hhbmdlZChtb2RlbCl9XG4gICAgICAgICAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb249e29uQ29uZmlndXJhdGlvbkNoYW5nZWR9XG4gICAgICAgICAgICBncm91cHM9e3tcbiAgICAgICAgICAgICAgU2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZzpcbiAgICAgICAgICAgICAgICAgIHBhcnRpYWxTY29yaW5nLnNldHRpbmdzICYmIHRvZ2dsZShwYXJ0aWFsU2NvcmluZy5sYWJlbCksXG4gICAgICAgICAgICAgICAgaGlnaGxpZ2h0Q2hvaWNlczpcbiAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENob2ljZXMuc2V0dGluZ3MgJiYgdG9nZ2xlKGhpZ2hsaWdodENob2ljZXMubGFiZWwpLFxuICAgICAgICAgICAgICAgIGZlZWRiYWNrRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgIGZlZWRiYWNrLnNldHRpbmdzICYmIHRvZ2dsZShmZWVkYmFjay5sYWJlbClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgdGVhY2hlckluc3RydWN0aW9ucy5zZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgdG9nZ2xlKHRlYWNoZXJJbnN0cnVjdGlvbnMubGFiZWwpLFxuICAgICAgICAgICAgICAgIHN0dWRlbnRJbnN0cnVjdGlvbnNFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgc3R1ZGVudEluc3RydWN0aW9ucy5zZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgdG9nZ2xlKHN0dWRlbnRJbnN0cnVjdGlvbnMubGFiZWwpLFxuICAgICAgICAgICAgICAgIHByb21wdEVuYWJsZWQ6IHByb21wdC5zZXR0aW5ncyAmJiB0b2dnbGUocHJvbXB0LmxhYmVsKSxcbiAgICAgICAgICAgICAgICByYXRpb25hbGVFbmFibGVkOiByYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKHJhdGlvbmFsZS5sYWJlbCksXG4gICAgICAgICAgICAgICAgc3BlbGxDaGVja0VuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2suc2V0dGluZ3MgJiYgdG9nZ2xlKHNwZWxsQ2hlY2subGFiZWwpLFxuICAgICAgICAgICAgICAgIHNjb3JpbmdUeXBlOlxuICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGUuc2V0dGluZ3MgJiZcbiAgICAgICAgICAgICAgICAgIHJhZGlvKHNjb3JpbmdUeXBlLmxhYmVsLCBbJ2F1dG8nLCAncnVicmljJ10pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJ9PlxuICAgICAgICAgIHt0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgbGFiZWw9e3RlYWNoZXJJbnN0cnVjdGlvbnMubGFiZWx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0fVxuICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwudGVhY2hlckluc3RydWN0aW9ucyB8fCAnJ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkfVxuICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7cHJvbXB0RW5hYmxlZCAmJiAoXG4gICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgbGFiZWw9e3Byb21wdC5sYWJlbCB8fCAnJ31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5wcm9tcHR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25Qcm9tcHRDaGFuZ2VkfVxuICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtyYXRpb25hbGVFbmFibGVkICYmIChcbiAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICBsYWJlbD17cmF0aW9uYWxlLmxhYmVsIHx8ICcnfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnJhdGlvbmFsZSB8fCAnJ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblJhdGlvbmFsZUNoYW5nZWR9XG4gICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3RleHQuc2V0dGluZ3MgJiYgKFxuICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICBsYWJlbD17dGV4dC5sYWJlbH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmlucHV0fVxuICAgICAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICAgICAgdmFsdWU9e3RleHRWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuY2hhbmdlVGV4dH1cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7Y29uZmlnU2V0dGluZ3MgJiYgPFRvb2x0aXBcbiAgICAgICAgICAgIGNsYXNzZXM9e3t0b29sdGlwOiBjbGFzc2VzLnRvb2x0aXB9fVxuICAgICAgICAgICAgZGlzYWJsZUZvY3VzTGlzdGVuZXJcbiAgICAgICAgICAgIGRpc2FibGVUb3VjaExpc3RlbmVyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9eydsZWZ0J31cbiAgICAgICAgICAgIHRpdGxlPXtgVmFsaWRhdGlvbiByZXF1aXJlbWVudHM6JHttYXhTZWxlY3Rpb25zVmFsaWRhdGlvbn0ke21pblRva2Vuc1ZhbGlkYXRpb259JHttYXhUb2tlbnNWYWxpZGF0aW9ufWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEluZm8gZm9udFNpemU9eydzbWFsbCd9IGNvbG9yPXsncHJpbWFyeSd9IHN0eWxlPXt7IGZsb2F0OiAncmlnaHQnIH19Lz5cbiAgICAgICAgICA8L1Rvb2x0aXA+fVxuXG4gICAgICAgICAge3Rva2Vuc0Vycm9yICYmIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+e3Rva2Vuc01vZGVsfTwvZGl2Pn1cbiAgICAgICAgICB7c2VsZWN0aW9uc0Vycm9yICYmIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+e3NlbGVjdGlvbnNFcnJvcn08L2Rpdj59XG5cbiAgICAgICAgICB7dG9rZW5zLnNldHRpbmdzICYmIChcbiAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICBsYWJlbD17dG9rZW5zLmxhYmVsIHx8ICcnfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudG9rZW5pemVyQ29udGFpbmVyfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VG9rZW5pemVyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnRva2VuaXplcn1cbiAgICAgICAgICAgICAgICB0ZXh0PXttb2RlbC50ZXh0fVxuICAgICAgICAgICAgICAgIHRva2Vucz17dG9rZW5zTW9kZWx9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuY2hhbmdlVG9rZW5zfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge21vZGUuc2V0dGluZ3MgJiYgKFxuICAgICAgICAgICAgPENoaXBcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake21vZGUubGFiZWx9OiAke21vZGVsLm1vZGUgPyBtb2RlbC5tb2RlIDogJ05vbmUnfWB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5jaGlwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3NlbGVjdGlvbnMuc2V0dGluZ3MgJiYgKFxuICAgICAgICAgICAgPENoaXBcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake3NlbGVjdGlvbnMubGFiZWx9OiAke3Rva2Vuc01vZGVsLmxlbmd0aH1gfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY2hpcH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtjb3JyZWN0QW5zd2VyLnNldHRpbmdzICYmIChcbiAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgIGxhYmVsPXtgJHtjb3JyZWN0QW5zd2VyLmxhYmVsfTogJHtcbiAgICAgICAgICAgICAgICB0b2tlbnNNb2RlbC5maWx0ZXIodCA9PiB0LmNvcnJlY3QpLmxlbmd0aFxuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmNoaXB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7c2VsZWN0aW9uQ291bnQuc2V0dGluZ3MgJiYgKFxuICAgICAgICAgICAgPE51bWJlclRleHRGaWVsZFxuICAgICAgICAgICAgICBtaW49e3Rva2Vuc01vZGVsLmZpbHRlcih0ID0+IHQuY29ycmVjdCkubGVuZ3RoIHx8IDB9XG4gICAgICAgICAgICAgIGxhYmVsPXtgJHtzZWxlY3Rpb25Db3VudC5sYWJlbH0gKDA6YW55KWB9XG4gICAgICAgICAgICAgIG1heD17dG9rZW5zTW9kZWwubGVuZ3RofVxuICAgICAgICAgICAgICB2YWx1ZT17bW9kZWwubWF4U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuY2hhbmdlTWF4U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm51bWJlckZpZWxkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge2ZlZWRiYWNrRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICA8RmVlZGJhY2tDb25maWdcbiAgICAgICAgICAgICAgZmVlZGJhY2s9e21vZGVsLmZlZWRiYWNrfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2VGZWVkYmFja31cbiAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGF5b3V0LkNvbmZpZ0xheW91dD5cbiAgICApO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHRoZW1lID0+ICh7XG4gIGNvbnRhaW5lcjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdFxuICB9LFxuICB0b2tlbml6ZXJDb250YWluZXI6IHtcbiAgICBwYWRkaW5nUmlnaHQ6IDAsXG4gICAgbWFyZ2luUmlnaHQ6IDAsXG4gICAgJyY6YWZ0ZXInOiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluXG4gICAgfSxcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdFxuICB9LFxuICBjaGlwOiB7XG4gICAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDJcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgdG9rZW5pemVyOiB7XG4gICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyXG4gIH0sXG4gIG1haW5PcHRzOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnXG4gIH0sXG4gIHByb21wdEhvbGRlcjoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDJcbiAgfSxcbiAgcHJvbXB0OiB7XG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sXG4gIG51bWJlckZpZWxkOiB7XG4gICAgd2lkdGg6ICcxODBweCdcbiAgfSxcbiAgdG9vbHRpcDoge1xuICAgIGZvbnRTaXplOiAnMTJweCcsXG4gICAgd2hpdGVTcGFjZTogJ3ByZScsXG4gICAgbWF4V2lkdGg6ICc1MDBweCcsXG4gIH0sXG4gIGVycm9yVGV4dDoge1xuICAgIGZvbnRTaXplOiAnMTJweCcsXG4gICAgY29sb3I6ICdyZWQnLFxuICAgIHBhZGRpbmc6ICc1cHggMCdcbiAgfVxufSkpKERlc2lnbik7XG4iXX0=