@kando-env/kando-ui 1.2.47-alpha.16 → 1.2.47-alpha.17

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.
@@ -9,172 +9,48 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.SamplingPropertiesForm = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
13
-
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
15
-
16
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
17
13
 
18
14
  var _react = _interopRequireWildcard(require("react"));
19
15
 
20
- var _axios = _interopRequireDefault(require("axios"));
21
-
22
16
  var _reactBootstrap = require("react-bootstrap");
23
17
 
24
- var _formik = require("formik");
25
-
26
18
  var _reactDeviceDetect = require("react-device-detect");
27
19
 
28
- var _reactRouterDom = require("react-router-dom");
29
-
30
- var _reactRedux = require("react-redux");
20
+ var _lodash = require("lodash");
31
21
 
32
- var _samplingPropertiesUtils = require("pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils");
22
+ var _samplingPropertiesUtils = require("./samplingPropertiesUtils");
33
23
 
34
24
  var _ImageUpload = _interopRequireDefault(require("pages/SamplingsPage/SamplingProperties/ImageUpload"));
35
25
 
36
26
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
37
27
 
38
- var _useQueryURL = _interopRequireDefault(require("hooks/useQueryURL"));
39
-
40
28
  var _uiKit = require("ui-kit");
41
29
 
42
30
  var _theme = require("styles/theme/theme");
43
31
 
44
- var _urls = require("utilities/urls");
45
-
46
32
  var _useInitializeHeaders = require("hooks/useInitializeHeaders");
47
33
 
48
- require("./bootstrap.overrides.scss");
49
-
50
34
  var _styleModule = _interopRequireDefault(require("../style.module.scss"));
51
35
 
52
- var _lodash = require("lodash");
53
-
54
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
55
37
 
56
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
57
39
 
58
40
  var SamplingPropertiesForm = function SamplingPropertiesForm(props) {
41
+ var _samplingProperties$l;
42
+
59
43
  var samplingProperties = props.samplingProperties,
60
44
  sampling = props.sampling,
61
- currentDate = props.currentDate,
62
- setSamplingUpdated = props.setSamplingUpdated,
63
- pageType = props.pageType;
64
-
65
- var _useState = (0, _react.useState)([]),
66
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
67
- photos = _useState2[0],
68
- setPhotos = _useState2[1];
69
-
70
- var _useState3 = (0, _react.useState)([]),
71
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
72
- photosToDelete = _useState4[0],
73
- setPhotosToDelete = _useState4[1];
74
-
75
- var _useState5 = (0, _react.useState)(_i18n.default.t('buttons.save')),
76
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
77
- savingMsg = _useState6[0],
78
- setSavingMsg = _useState6[1];
79
-
80
- var history = (0, _reactRouterDom.useHistory)();
81
- var query = (0, _useQueryURL.default)();
82
- var waterAuthorityIdFromUrl = parseInt(query.get('water_authority_id') || '0');
83
- var navContext = (0, _reactRedux.useSelector)(function (state) {
84
- return state.nav_context_data.navContext;
85
- });
86
- var validationSchema = pageType === 'collect' ? _samplingPropertiesUtils.propertiesValidationSchema : _samplingPropertiesUtils.cancellationValidationSchema;
87
- var collectionTime = pageType === 'collect' ? currentDate : samplingProperties.sampling.collection_time;
88
- var isCanceled = pageType === 'cancel' ? true : pageType === 'collect' ? false : samplingProperties.sampling.is_canceled;
89
- var formik = (0, _formik.useFormik)({
90
- initialValues: {
91
- lab_id: samplingProperties.sampling.lab_id,
92
- collection_time: collectionTime,
93
- pump_sampling_volume: samplingProperties.sampling.pump_sampling_volume,
94
- pump_battery_level: samplingProperties.sampling.pump_battery_level,
95
- description: samplingProperties.sampling.description,
96
- kando_rep: samplingProperties.sampling.kando_rep,
97
- sampling_plan_id: samplingProperties.sampling.sampling_plan_id,
98
- cancellation_reason: samplingProperties.sampling.cancellation_reason,
99
- is_canceled: isCanceled
100
- },
101
- validationSchema: validationSchema,
102
- validateOnChange: true,
103
- validateOnBlur: true,
104
- onSubmit: function onSubmit(values) {
105
- handleSubmit(values);
106
- }
107
- });
108
-
109
- var setOriginalSaveMessageWithTimeout = function setOriginalSaveMessageWithTimeout() {
110
- setTimeout(function () {
111
- setSavingMsg(_i18n.default.t('buttons.save'));
112
- }, 3000);
113
- };
114
-
115
- var formDataBuilder = function formDataBuilder(values) {
116
- var formData = new FormData();
117
-
118
- for (var key in values) {
119
- if (key !== 'pictures_attributes') {
120
- var value = values[key] === null ? '' : values[key];
121
- formData.append("sampling[".concat(key, "]"), value);
122
- }
123
- }
124
-
125
- var uniquePhotosToDelete = (0, _toConsumableArray2.default)(new Set(photosToDelete));
126
- uniquePhotosToDelete.length !== 0 && uniquePhotosToDelete.forEach(function (id, index) {
127
- formData.append("sampling[pictures_attributes][".concat(index, "][id]"), JSON.stringify(id));
128
- formData.append("sampling[pictures_attributes][".concat(index, "][_destroy]"), 'true');
129
- });
130
- return formData;
131
- };
132
-
133
- var updateOrCreate = function updateOrCreate(formData) {
134
- if (samplingProperties.sampling.id === null) {
135
- formData.append("sampling[date]", currentDate);
136
-
137
- _axios.default.post((0, _urls.urls)().samplingProperties.createSampling.url, formData).then(function () {
138
- setSavingMsg(_i18n.default.t('buttons.created'));
139
- setSamplingUpdated(true);
140
- setOriginalSaveMessageWithTimeout();
141
- handleClose();
142
- }).catch(function () {
143
- setSavingMsg(_i18n.default.t('buttons.error'));
144
- setOriginalSaveMessageWithTimeout();
145
- });
146
- } else {
147
- _axios.default.put((0, _urls.urls)({
148
- samplingId: samplingProperties.sampling.id
149
- }).samplingProperties.updateSampling.url, formData).then(function () {
150
- setSavingMsg(_i18n.default.t('buttons.updated'));
151
- setOriginalSaveMessageWithTimeout();
152
- handleClose();
153
- }).catch(function () {
154
- setSavingMsg(_i18n.default.t('buttons.error'));
155
- setOriginalSaveMessageWithTimeout();
156
- });
157
- }
158
- };
159
-
160
- var handleSubmit = function handleSubmit() {
161
- var values = formik.values;
162
- setSavingMsg(_i18n.default.t('buttons.saving'));
163
- values.pictures_attributes = photos;
164
- var saveFormData = formDataBuilder(values);
165
- updateOrCreate(saveFormData);
166
- };
167
-
168
- var handleClose = function handleClose() {
169
- var samplingsListRoute = (0, _urls.urls)({
170
- locale: navContext.locale,
171
- waterAuthorityId: waterAuthorityIdFromUrl
172
- }).samplingsPage.samplingsListRoute.url;
173
- history.push(samplingsListRoute);
174
- };
175
-
45
+ formik = props.formik,
46
+ pageType = props.pageType,
47
+ savingMsg = props.savingMsg,
48
+ handleClose = props.handleClose,
49
+ setPhotos = props.setPhotos,
50
+ photos = props.photos,
51
+ setPhotosToDelete = props.setPhotosToDelete;
176
52
  (0, _useInitializeHeaders.useInitializeHeaders)();
177
- (0, _react.useEffect)(function () {}, [samplingProperties]);
53
+ (0, _react.useEffect)(function () {}, [samplingProperties, formik]);
178
54
 
179
55
  var CancellationReasons = function CancellationReasons() {
180
56
  var manualReasons = _samplingPropertiesUtils.manualReasonsKeys.map(function (key) {
@@ -206,114 +82,104 @@ var SamplingPropertiesForm = function SamplingPropertiesForm(props) {
206
82
  })));
207
83
  };
208
84
 
209
- return /*#__PURE__*/_react.default.createElement(FormStyle, null, /*#__PURE__*/_react.default.createElement(_formik.Formik, {
210
- initialValues: _samplingPropertiesUtils.samplingProperty,
211
- onSubmit: handleSubmit
212
- }, function () {
213
- return /*#__PURE__*/_react.default.createElement("form", {
214
- onSubmit: formik.handleSubmit
215
- }, /*#__PURE__*/_react.default.createElement(FormContainerStyle, null, /*#__PURE__*/_react.default.createElement(FieldsContainer, null, pageType === 'collect' && /*#__PURE__*/_react.default.createElement(Start, null, /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
216
- handleChange: formik.handleChange,
217
- handleBlur: formik.handleBlur,
218
- inputTitle: _i18n.default.t('activerecord.models.lab'),
219
- name: "lab_id",
220
- type: "select",
221
- value: formik.values.lab_id,
222
- isInvalid: !!formik.errors.lab_id,
223
- mandatory: true
224
- }, /*#__PURE__*/_react.default.createElement("option", {
225
- value: undefined
226
- }), samplingProperties.labs !== undefined && samplingProperties.labs.map(function (lab) {
227
- return /*#__PURE__*/_react.default.createElement("option", {
228
- value: lab.id,
229
- selected: lab.id === (0, _lodash.toSafeInteger)(formik.values.lab_id)
230
- }, lab.name);
231
- })), formik.errors.lab_id && /*#__PURE__*/_react.default.createElement("div", {
232
- className: 'hint'
233
- }, formik.errors.lab_id)), /*#__PURE__*/_react.default.createElement(FormRowStyle, null, /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
234
- isInvalid: !!formik.errors.pump_sampling_volume,
235
- handleChange: formik.handleChange,
236
- handleBlur: formik.handleBlur,
237
- inputTitle: _i18n.default.t('pump_scheduled_days_configuration.volume'),
238
- name: "pump_sampling_volume",
239
- type: "number",
240
- value: formik.values.pump_sampling_volume,
241
- symbol: "ml",
242
- mandatory: true
243
- }), formik.errors.pump_sampling_volume && /*#__PURE__*/_react.default.createElement("div", {
244
- className: 'hint hint--upper'
245
- }, formik.errors.pump_sampling_volume)), /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
246
- isInvalid: !!formik.errors.pump_battery_level,
247
- handleChange: formik.handleChange,
248
- handleBlur: formik.handleBlur,
249
- inputTitle: _i18n.default.t('sampling_screen.pump_battery_level'),
250
- name: "pump_battery_level",
251
- type: "number",
252
- value: formik.values.pump_battery_level,
253
- symbol: "%",
254
- mandatory: true
255
- }), formik.errors.pump_battery_level && /*#__PURE__*/_react.default.createElement("div", {
256
- className: 'hint hint--upper'
257
- }, formik.errors.pump_battery_level)))), /*#__PURE__*/_react.default.createElement(End, {
258
- pageType: pageType
259
- }, pageType === 'collect' && /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
260
- isInvalid: !!formik.errors.kando_rep,
261
- handleChange: formik.handleChange,
262
- handleBlur: formik.handleBlur,
263
- inputTitle: _i18n.default.t('samplings_page.samplings_properties.reporter'),
264
- name: "kando_rep",
265
- type: "text",
266
- placeholder: _i18n.default.t('samplings_page.samplings_properties.placeholder_reporter'),
267
- value: formik.values.kando_rep,
268
- mandatory: true
269
- }), formik.errors.kando_rep && /*#__PURE__*/_react.default.createElement("div", {
270
- className: 'hint'
271
- }, formik.errors.kando_rep)), pageType === 'cancel' && /*#__PURE__*/_react.default.createElement("div", {
272
- className: _styleModule.default.cancellationTitle
273
- }, _i18n.default.t('samplings_page.cancellation_title'), ":"), /*#__PURE__*/_react.default.createElement("div", {
274
- className: _styleModule.default.reasonsListWrapper
275
- }, pageType === 'cancel' && /*#__PURE__*/_react.default.createElement("div", {
276
- className: _styleModule.default.reasonsWrapper
277
- }, formik.touched.cancellation_reason && formik.errors.cancellation_reason && /*#__PURE__*/_react.default.createElement("div", {
278
- className: _styleModule.default.validationError
279
- }, _i18n.default.t('general.please_select')), /*#__PURE__*/_react.default.createElement(CancellationReasons, null)), /*#__PURE__*/_react.default.createElement(Description, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
280
- handleChange: formik.handleChange,
281
- handleBlur: formik.handleBlur,
282
- inputTitle: _i18n.default.t('water_meter.description'),
283
- name: "description",
284
- type: "textarea",
285
- placeholder: _i18n.default.t('samplings_page.samplings_properties.general_description'),
286
- value: formik.values.description,
287
- isInvalid: !!formik.errors.description,
288
- mandatory: false
289
- }))))), /*#__PURE__*/_react.default.createElement("input", {
290
- type: 'hidden',
291
- name: 'collection_time',
292
- value: formik.values.collection_time
293
- }), /*#__PURE__*/_react.default.createElement("input", {
294
- type: 'hidden',
295
- name: 'sampling_plan_id',
296
- value: formik.values.sampling_plan_id
297
- }), /*#__PURE__*/_react.default.createElement(BottomFormStyle, null), /*#__PURE__*/_react.default.createElement(_ImageUpload.default, {
298
- setPhotos: setPhotos,
299
- photos: photos,
300
- sampling: samplingProperties,
301
- setPhotosToDelete: setPhotosToDelete
302
- }), /*#__PURE__*/_react.default.createElement(ButtonsRow, null, /*#__PURE__*/_react.default.createElement(_uiKit.Button, {
303
- onClick: handleClose,
304
- width: "150px",
305
- variant: "none",
306
- rounded: true,
307
- className: _styleModule.default.closeBtn
308
- }, _i18n.default.t('close')), /*#__PURE__*/_react.default.createElement(_uiKit.Button, {
309
- variant: "primary",
310
- rounded: true,
311
- disabled: false,
312
- type: "submit",
313
- width: "150px",
314
- className: _styleModule.default.submitBtn
315
- }, savingMsg))));
316
- }));
85
+ return /*#__PURE__*/_react.default.createElement(FormStyle, null, /*#__PURE__*/_react.default.createElement(FormContainerStyle, null, /*#__PURE__*/_react.default.createElement(FieldsContainer, null, pageType === 'collect' && /*#__PURE__*/_react.default.createElement(Start, null, /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
86
+ handleChange: formik.handleChange,
87
+ handleBlur: formik.handleBlur,
88
+ inputTitle: _i18n.default.t('activerecord.models.lab'),
89
+ value: formik.values.lab_id,
90
+ isInvalid: !!formik.errors.lab_id,
91
+ name: "lab_id",
92
+ type: "select",
93
+ mandatory: true
94
+ }, /*#__PURE__*/_react.default.createElement("option", {
95
+ value: undefined
96
+ }), samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$l = samplingProperties.labs) === null || _samplingProperties$l === void 0 ? void 0 : _samplingProperties$l.map(function (lab) {
97
+ return /*#__PURE__*/_react.default.createElement("option", {
98
+ key: "opt-".concat(lab.id),
99
+ value: lab.id || '',
100
+ defaultValue: lab.id === (0, _lodash.toSafeInteger)(formik.values.lab_id)
101
+ }, lab.name);
102
+ })), formik.errors.lab_id && /*#__PURE__*/_react.default.createElement("div", {
103
+ className: 'hint'
104
+ }, formik.errors.lab_id)), /*#__PURE__*/_react.default.createElement(FormRowStyle, null, /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
105
+ isInvalid: !!formik.errors.pump_sampling_volume,
106
+ handleChange: formik.handleChange,
107
+ handleBlur: formik.handleBlur,
108
+ inputTitle: _i18n.default.t('pump_scheduled_days_configuration.volume'),
109
+ name: "pump_sampling_volume",
110
+ type: "number",
111
+ value: formik.values.pump_sampling_volume,
112
+ symbol: "ml"
113
+ }), formik.errors.pump_sampling_volume && /*#__PURE__*/_react.default.createElement("div", {
114
+ className: 'hint hint--upper'
115
+ }, formik.errors.pump_sampling_volume)), /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
116
+ isInvalid: !!formik.errors.pump_battery_level,
117
+ handleChange: formik.handleChange,
118
+ handleBlur: formik.handleBlur,
119
+ inputTitle: _i18n.default.t('sampling_screen.pump_battery_level'),
120
+ name: "pump_battery_level",
121
+ type: "number",
122
+ value: formik.values.pump_battery_level,
123
+ symbol: "%"
124
+ }), formik.errors.pump_battery_level && /*#__PURE__*/_react.default.createElement("div", {
125
+ className: 'hint hint--upper'
126
+ }, formik.errors.pump_battery_level)))), /*#__PURE__*/_react.default.createElement(End, {
127
+ pageType: pageType
128
+ }, pageType === 'collect' && /*#__PURE__*/_react.default.createElement(InputWrapper, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
129
+ isInvalid: !!formik.errors.kando_rep,
130
+ handleChange: formik.handleChange,
131
+ handleBlur: formik.handleBlur,
132
+ inputTitle: _i18n.default.t('samplings_page.samplings_properties.reporter'),
133
+ name: "kando_rep",
134
+ type: "text",
135
+ placeholder: _i18n.default.t('samplings_page.samplings_properties.placeholder_reporter'),
136
+ value: formik.values.kando_rep
137
+ }), formik.errors.kando_rep && /*#__PURE__*/_react.default.createElement("div", {
138
+ className: 'hint'
139
+ }, formik.errors.kando_rep)), pageType === 'cancel' && /*#__PURE__*/_react.default.createElement("div", {
140
+ className: _styleModule.default.cancellationTitle
141
+ }, _i18n.default.t('samplings_page.cancellation_title'), ":"), /*#__PURE__*/_react.default.createElement("div", {
142
+ className: _styleModule.default.reasonsListWrapper
143
+ }, pageType === 'cancel' && /*#__PURE__*/_react.default.createElement("div", {
144
+ className: _styleModule.default.reasonsWrapper
145
+ }, formik.touched.cancellation_reason && formik.errors.cancellation_reason && /*#__PURE__*/_react.default.createElement("div", {
146
+ className: _styleModule.default.validationError
147
+ }, _i18n.default.t('general.please_select')), /*#__PURE__*/_react.default.createElement(CancellationReasons, null)), /*#__PURE__*/_react.default.createElement(Description, null, /*#__PURE__*/_react.default.createElement(_uiKit.MobileInput, {
148
+ handleChange: formik.handleChange,
149
+ handleBlur: formik.handleBlur,
150
+ inputTitle: _i18n.default.t('water_meter.description'),
151
+ name: "description",
152
+ type: "textarea",
153
+ placeholder: _i18n.default.t('samplings_page.samplings_properties.general_description'),
154
+ value: formik.values.description,
155
+ isInvalid: !!formik.errors.description
156
+ }))))), /*#__PURE__*/_react.default.createElement("input", {
157
+ type: 'hidden',
158
+ name: 'collection_time',
159
+ value: formik.values.collection_time || ''
160
+ }), /*#__PURE__*/_react.default.createElement("input", {
161
+ type: 'hidden',
162
+ name: 'sampling_plan_id',
163
+ value: formik.values.sampling_plan_id || ''
164
+ }), /*#__PURE__*/_react.default.createElement(BottomFormStyle, null), /*#__PURE__*/_react.default.createElement(_ImageUpload.default, {
165
+ setPhotos: setPhotos,
166
+ photos: photos,
167
+ sampling: samplingProperties,
168
+ setPhotosToDelete: setPhotosToDelete
169
+ }), /*#__PURE__*/_react.default.createElement(ButtonsRow, null, /*#__PURE__*/_react.default.createElement(_uiKit.Button, {
170
+ onClick: handleClose,
171
+ width: "150px",
172
+ variant: "none",
173
+ rounded: true,
174
+ className: _styleModule.default.closeBtn
175
+ }, _i18n.default.t('close')), /*#__PURE__*/_react.default.createElement(_uiKit.Button, {
176
+ variant: "primary",
177
+ rounded: true,
178
+ disabled: false,
179
+ type: "submit",
180
+ width: "150px",
181
+ className: _styleModule.default.submitBtn
182
+ }, savingMsg))));
317
183
  };
318
184
 
319
185
  exports.SamplingPropertiesForm = SamplingPropertiesForm;
@@ -371,4 +237,4 @@ var BottomFormStyle = _styledComponents.default.div.withConfig({
371
237
  displayName: "SamplingPropertiesForm__BottomFormStyle",
372
238
  componentId: "sc-11w8cbo-9"
373
239
  })(["padding:0 0 6px;"]);
374
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtLnRzeCJdLCJuYW1lcyI6WyJTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIiwicHJvcHMiLCJzYW1wbGluZ1Byb3BlcnRpZXMiLCJzYW1wbGluZyIsImN1cnJlbnREYXRlIiwic2V0U2FtcGxpbmdVcGRhdGVkIiwicGFnZVR5cGUiLCJwaG90b3MiLCJzZXRQaG90b3MiLCJwaG90b3NUb0RlbGV0ZSIsInNldFBob3Rvc1RvRGVsZXRlIiwiaTE4biIsInQiLCJzYXZpbmdNc2ciLCJzZXRTYXZpbmdNc2ciLCJoaXN0b3J5IiwicXVlcnkiLCJ3YXRlckF1dGhvcml0eUlkRnJvbVVybCIsInBhcnNlSW50IiwiZ2V0IiwibmF2Q29udGV4dCIsInN0YXRlIiwibmF2X2NvbnRleHRfZGF0YSIsInZhbGlkYXRpb25TY2hlbWEiLCJwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSIsImNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWEiLCJjb2xsZWN0aW9uVGltZSIsImNvbGxlY3Rpb25fdGltZSIsImlzQ2FuY2VsZWQiLCJpc19jYW5jZWxlZCIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJsYWJfaWQiLCJwdW1wX3NhbXBsaW5nX3ZvbHVtZSIsInB1bXBfYmF0dGVyeV9sZXZlbCIsImRlc2NyaXB0aW9uIiwia2FuZG9fcmVwIiwic2FtcGxpbmdfcGxhbl9pZCIsImNhbmNlbGxhdGlvbl9yZWFzb24iLCJ2YWxpZGF0ZU9uQ2hhbmdlIiwidmFsaWRhdGVPbkJsdXIiLCJvblN1Ym1pdCIsInZhbHVlcyIsImhhbmRsZVN1Ym1pdCIsInNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCIsInNldFRpbWVvdXQiLCJmb3JtRGF0YUJ1aWxkZXIiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwia2V5IiwidmFsdWUiLCJhcHBlbmQiLCJ1bmlxdWVQaG90b3NUb0RlbGV0ZSIsIlNldCIsImxlbmd0aCIsImZvckVhY2giLCJpZCIsImluZGV4IiwiSlNPTiIsInN0cmluZ2lmeSIsInVwZGF0ZU9yQ3JlYXRlIiwiYXhpb3MiLCJwb3N0IiwiY3JlYXRlU2FtcGxpbmciLCJ1cmwiLCJ0aGVuIiwiaGFuZGxlQ2xvc2UiLCJjYXRjaCIsInB1dCIsInNhbXBsaW5nSWQiLCJ1cGRhdGVTYW1wbGluZyIsInBpY3R1cmVzX2F0dHJpYnV0ZXMiLCJzYXZlRm9ybURhdGEiLCJzYW1wbGluZ3NMaXN0Um91dGUiLCJsb2NhbGUiLCJ3YXRlckF1dGhvcml0eUlkIiwic2FtcGxpbmdzUGFnZSIsInB1c2giLCJDYW5jZWxsYXRpb25SZWFzb25zIiwibWFudWFsUmVhc29ucyIsIm1hbnVhbFJlYXNvbnNLZXlzIiwibWFwIiwiYXV0b1JlYXNvbnMiLCJhdXRvUmVhc29uc0tleXMiLCJyZWFzb25zIiwibWFjaGluZV90eXBlIiwibWFjaGluZVJlYXNvbnMiLCJTdHlsZSIsImNhbmNlbGxhdGlvblJlYXNvbkdyb3VwIiwicmVhc29uIiwiaWR4IiwiY2FuY2VsbGF0aW9uUmVhc29uIiwiaGFuZGxlQ2hhbmdlIiwiaGFuZGxlQmx1ciIsInNhbXBsaW5nUHJvcGVydHkiLCJlcnJvcnMiLCJ1bmRlZmluZWQiLCJsYWJzIiwibGFiIiwibmFtZSIsImNhbmNlbGxhdGlvblRpdGxlIiwicmVhc29uc0xpc3RXcmFwcGVyIiwicmVhc29uc1dyYXBwZXIiLCJ0b3VjaGVkIiwidmFsaWRhdGlvbkVycm9yIiwiY2xvc2VCdG4iLCJzdWJtaXRCdG4iLCJJbnB1dFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJ0aGVtZSIsImNvbG9yU2NoZW1lIiwiZGF0YSIsIlIxMDAiLCJGaWVsZHNDb250YWluZXIiLCJpc01vYmlsZSIsIlN0YXJ0IiwiRW5kIiwiYXR0cnMiLCJpc1Byb3BlcnRpZXNQYWdlIiwiRGVzY3JpcHRpb24iLCJGb3JtU3R5bGUiLCJGb3JtUm93U3R5bGUiLCJSb3ciLCJCdXR0b25z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QUFDckgsS0FBRDtBQUFBLFNBQXNCO0FBQ2pEc0gsSUFBQUEsZ0JBQWdCLEVBQUV0SCxLQUFLLENBQUNLLFFBQU4sS0FBbUI7QUFEWSxHQUF0QjtBQUFBLENBQWpCLENBQUg7QUFBQTtBQUFBO0FBQUEsOERBR0UsVUFBQ0wsS0FBRDtBQUFBLFNBQ1BrSCw4QkFBVyxPQUFYLEdBQXFCbEgsS0FBSyxDQUFDc0gsZ0JBQU4sR0FBeUIsS0FBekIsR0FBaUMsTUFEL0M7QUFBQSxDQUhGLEVBS2lCSiw4QkFBVyxRQUFYLEdBQXNCLE9BTHZDLEVBTVFBLDhCQUFXLFFBQVgsR0FBc0IsT0FOOUIsQ0FBVDs7QUFTQSxJQUFNSyxXQUFXLEdBQUdaLDBCQUFPQyxHQUFWO0FBQUE7QUFBQTtBQUFBLHdMQVFETSw4QkFBVyxpQkFBWCxHQUErQixrQkFSOUIsQ0FBakI7O0FBa0JBLElBQU1NLFNBQVMsR0FBR2IsMEJBQU9DLEdBQVY7QUFBQTtBQUFBO0FBQUEsd0JBQWY7O0FBSUEsSUFBTWEsWUFBWSxHQUFHLCtCQUFPQyxtQkFBUCxDQUFIO0FBQUE7QUFBQTtBQUFBLGlLQUlMUiw4QkFBVyxNQUFYLEdBQW9CLE9BSmYsRUFPU0EsOEJBQVcsT0FBWCxHQUFxQixJQVA5QixFQVdXQSw4QkFBVyxPQUFYLEdBQXFCLElBWGhDLENBQWxCO0FBb0JBLElBQU1TLFVBQVUsR0FBRywrQkFBT0QsbUJBQVAsQ0FBSDtBQUFBO0FBQUE7QUFBQSx5RkFJSlIsOEJBQVcsQ0FBWCxHQUFlLE9BSlgsRUFPVkEsOEJBQVcsRUFBWCxHQUFnQixlQVBOLENBQWhCO0FBV0EsSUFBTVUsa0JBQWtCLEdBQUcsK0JBQU9DLHlCQUFQLENBQUg7QUFBQTtBQUFBO0FBQUEsa0NBQXhCOztBQUtBLElBQU1DLGVBQWUsR0FBR25CLDBCQUFPQyxHQUFWO0FBQUE7QUFBQTtBQUFBLHdCQUFyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGQywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB7IENvbnRhaW5lciwgRm9ybSwgUm93IH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1paywgdXNlRm9ybWlrIH0gZnJvbSAnZm9ybWlrJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAncmVhY3QtZGV2aWNlLWRldGVjdCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7XG4gIHNhbXBsaW5nUHJvcGVydHksXG4gIHByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hLFxuICBjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hLFxuICBhdXRvUmVhc29uc0tleXMsXG4gIG1hbnVhbFJlYXNvbnNLZXlzLFxufSBmcm9tICdzcmMvcGFnZXMvU2FtcGxpbmdzUGFnZS9TYW1wbGluZ1Byb3BlcnRpZXMvc2FtcGxpbmdQcm9wZXJ0aWVzVXRpbHMnO1xuXG5pbXBvcnQgSW1hZ2VVcGxvYWQgZnJvbSAnc3JjL3BhZ2VzL1NhbXBsaW5nc1BhZ2UvU2FtcGxpbmdQcm9wZXJ0aWVzL0ltYWdlVXBsb2FkJztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnc3JjL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCB7IE1vYmlsZUlucHV0LCBCdXR0b24gfSBmcm9tICdzcmMvdWkta2l0JztcbmltcG9ydCB7IFNhbXBsaW5nRmV0Y2hEYXRhIH0gZnJvbSAnc3JjL3BhZ2VzL1NhbXBsaW5nc1BhZ2Uvc2FtcGxpbmdzUGFnZVV0aWxzJztcbmltcG9ydCB7IFRTYW1wbGluZ1Byb3BlcnRpZXMgfSBmcm9tICcuL1NhbXBsaW5nTW9iaWxlUHJvcGVydGllcyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnc3JjL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnc3JjL3N0eWxlcy90aGVtZS90aGVtZSc7XG5pbXBvcnQgeyB1cmxzIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91cmxzJztcbmltcG9ydCB7IHVzZUluaXRpYWxpemVIZWFkZXJzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUluaXRpYWxpemVIZWFkZXJzJztcblxuaW1wb3J0ICcuL2Jvb3RzdHJhcC5vdmVycmlkZXMuc2Nzcyc7XG5pbXBvcnQgU3R5bGUgZnJvbSAnLi4vc3R5bGUubW9kdWxlLnNjc3MnO1xuaW1wb3J0IHsgdG9TYWZlSW50ZWdlciB9IGZyb20gJ2xvZGFzaCc7XG5cbnR5cGUgcHJvcHMgPSB7XG4gIHNhbXBsaW5nUHJvcGVydGllczogVFNhbXBsaW5nUHJvcGVydGllcztcbiAgc2FtcGxpbmc6IFNhbXBsaW5nRmV0Y2hEYXRhO1xuICBjdXJyZW50RGF0ZTogc3RyaW5nO1xuICBzZXRTYW1wbGluZ1VwZGF0ZWQ6IFJlYWN0LkRpc3BhdGNoPFJlYWN0LlNldFN0YXRlQWN0aW9uPGJvb2xlYW4+PjtcbiAgcGFnZVR5cGU6IHN0cmluZztcbn07XG5cbnR5cGUgRm9ybVR5cGUgPSB7XG4gIGxhYl9pZDogbnVtYmVyO1xuICBjb2xsZWN0aW9uX3RpbWU6IHN0cmluZztcbiAgcHVtcF9zYW1wbGluZ192b2x1bWU6IG51bWJlcjtcbiAgcHVtcF9iYXR0ZXJ5X2xldmVsOiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGthbmRvX3JlcDogc3RyaW5nO1xuICBzYW1wbGluZ19wbGFuX2lkOiBudW1iZXI7XG4gIGNhbmNlbGxhdGlvbl9yZWFzb246IHN0cmluZztcbiAgaXNfY2FuY2VsZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybTogRkM8cHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzYW1wbGluZ1Byb3BlcnRpZXMsXG4gICAgc2FtcGxpbmcsXG4gICAgY3VycmVudERhdGUsXG4gICAgc2V0U2FtcGxpbmdVcGRhdGVkLFxuICAgIHBhZ2VUeXBlLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtwaG90b3MsIHNldFBob3Rvc10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBCbG9iIHwgYW55PihbXSk7XG4gIGNvbnN0IFtwaG90b3NUb0RlbGV0ZSwgc2V0UGhvdG9zVG9EZWxldGVdID0gdXNlU3RhdGU8bnVtYmVyW10+KFtdKTtcbiAgY29uc3QgW3NhdmluZ01zZywgc2V0U2F2aW5nTXNnXSA9IHVzZVN0YXRlPHN0cmluZz4oaTE4bi50KCdidXR0b25zLnNhdmUnKSk7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZEZyb21VcmwgPSBwYXJzZUludChcbiAgICBxdWVyeS5nZXQoJ3dhdGVyX2F1dGhvcml0eV9pZCcpIHx8ICcwJyxcbiAgKTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcblxuICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID1cbiAgICBwYWdlVHlwZSA9PT0gJ2NvbGxlY3QnXG4gICAgICA/IHByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hXG4gICAgICA6IGNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWE7XG5cbiAgY29uc3QgY29sbGVjdGlvblRpbWUgPVxuICAgIHBhZ2VUeXBlID09PSAnY29sbGVjdCdcbiAgICAgID8gY3VycmVudERhdGVcbiAgICAgIDogc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZTtcblxuICBjb25zdCBpc0NhbmNlbGVkID1cbiAgICBwYWdlVHlwZSA9PT0gJ2NhbmNlbCdcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBwYWdlVHlwZSA9PT0gJ2NvbGxlY3QnXG4gICAgICA/IGZhbHNlXG4gICAgICA6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5pc19jYW5jZWxlZDtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWs8Rm9ybVR5cGU+KHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBsYWJfaWQ6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5sYWJfaWQsXG4gICAgICBjb2xsZWN0aW9uX3RpbWU6IGNvbGxlY3Rpb25UaW1lLFxuICAgICAgcHVtcF9zYW1wbGluZ192b2x1bWU6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5wdW1wX3NhbXBsaW5nX3ZvbHVtZSxcbiAgICAgIHB1bXBfYmF0dGVyeV9sZXZlbDogc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLnB1bXBfYmF0dGVyeV9sZXZlbCxcbiAgICAgIGRlc2NyaXB0aW9uOiBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuZGVzY3JpcHRpb24sXG4gICAgICBrYW5kb19yZXA6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5rYW5kb19yZXAsXG4gICAgICBzYW1wbGluZ19wbGFuX2lkOiBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuc2FtcGxpbmdfcGxhbl9pZCxcbiAgICAgIGNhbmNlbGxhdGlvbl9yZWFzb246IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5jYW5jZWxsYXRpb25fcmVhc29uLFxuICAgICAgaXNfY2FuY2VsZWQ6IGlzQ2FuY2VsZWQsXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB2YWxpZGF0aW9uU2NoZW1hLFxuICAgIHZhbGlkYXRlT25DaGFuZ2U6IHRydWUsXG4gICAgdmFsaWRhdGVPbkJsdXI6IHRydWUsXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGhhbmRsZVN1Ym1pdCh2YWx1ZXMpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgICB9LCAzMDAwKTtcbiAgfTtcblxuICBjb25zdCBmb3JtRGF0YUJ1aWxkZXIgPSAodmFsdWVzKSA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgIGlmIChrZXkgIT09ICdwaWN0dXJlc19hdHRyaWJ1dGVzJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldID09PSBudWxsID8gJycgOiB2YWx1ZXNba2V5XTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1ske2tleX1dYCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB1bmlxdWVQaG90b3NUb0RlbGV0ZSA9IFsuLi5uZXcgU2V0KHBob3Rvc1RvRGVsZXRlKV07XG4gICAgdW5pcXVlUGhvdG9zVG9EZWxldGUubGVuZ3RoICE9PSAwICYmXG4gICAgICB1bmlxdWVQaG90b3NUb0RlbGV0ZS5mb3JFYWNoKChpZCwgaW5kZXgpID0+IHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgIGBzYW1wbGluZ1twaWN0dXJlc19hdHRyaWJ1dGVzXVske2luZGV4fV1baWRdYCxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShpZCksXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgIGBzYW1wbGluZ1twaWN0dXJlc19hdHRyaWJ1dGVzXVske2luZGV4fV1bX2Rlc3Ryb3ldYCxcbiAgICAgICAgICAndHJ1ZScsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVPckNyZWF0ZSA9IChmb3JtRGF0YSkgPT4ge1xuICAgIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuaWQgPT09IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChgc2FtcGxpbmdbZGF0ZV1gLCBjdXJyZW50RGF0ZSk7XG4gICAgICBheGlvc1xuICAgICAgICAucG9zdCh1cmxzKCkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCwgZm9ybURhdGEpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmNyZWF0ZWQnKSk7XG4gICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkKHRydWUpO1xuICAgICAgICAgIHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCgpO1xuICAgICAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF4aW9zXG4gICAgICAgIC5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5pZCB9KVxuICAgICAgICAgICAgLnNhbXBsaW5nUHJvcGVydGllcy51cGRhdGVTYW1wbGluZy51cmwsXG4gICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMudXBkYXRlZCcpKTtcbiAgICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuZXJyb3InKSk7XG4gICAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XG4gICAgY29uc3QgdmFsdWVzOiBhbnkgPSBmb3JtaWsudmFsdWVzO1xuICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuc2F2aW5nJykpO1xuICAgIHZhbHVlcy5waWN0dXJlc19hdHRyaWJ1dGVzID0gcGhvdG9zO1xuICAgIGNvbnN0IHNhdmVGb3JtRGF0YSA9IGZvcm1EYXRhQnVpbGRlcih2YWx1ZXMpO1xuICAgIHVwZGF0ZU9yQ3JlYXRlKHNhdmVGb3JtRGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2FtcGxpbmdzTGlzdFJvdXRlID0gdXJscyh7XG4gICAgICBsb2NhbGU6IG5hdkNvbnRleHQubG9jYWxlLFxuICAgICAgd2F0ZXJBdXRob3JpdHlJZDogd2F0ZXJBdXRob3JpdHlJZEZyb21VcmwsXG4gICAgfSkuc2FtcGxpbmdzUGFnZS5zYW1wbGluZ3NMaXN0Um91dGUudXJsO1xuICAgIGhpc3RvcnkucHVzaChzYW1wbGluZ3NMaXN0Um91dGUpO1xuICB9O1xuXG4gIHVzZUluaXRpYWxpemVIZWFkZXJzKCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7fSwgW3NhbXBsaW5nUHJvcGVydGllc10pO1xuXG4gIGNvbnN0IENhbmNlbGxhdGlvblJlYXNvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgbWFudWFsUmVhc29ucyA9IG1hbnVhbFJlYXNvbnNLZXlzLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBpMThuLnQoYGNhbmNlbGxhdGlvbl9yZWFzb25zLiR7a2V5fWApO1xuICAgIH0pO1xuICAgIGNvbnN0IGF1dG9SZWFzb25zID0gYXV0b1JlYXNvbnNLZXlzLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBpMThuLnQoYGNhbmNlbGxhdGlvbl9yZWFzb25zLmF1dG9tYXRlZC4ke2tleX1gKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlYXNvbnMgPVxuICAgICAgc2FtcGxpbmcubWFjaGluZV90eXBlID09PSAnc2FtcGxpbmdfdHlwZV9yYXBpZCdcbiAgICAgICAgPyBtYW51YWxSZWFzb25zXG4gICAgICAgIDogYXV0b1JlYXNvbnM7XG5cbiAgICBjb25zdCBtYWNoaW5lUmVhc29ucyA9XG4gICAgICBzYW1wbGluZy5tYWNoaW5lX3R5cGUgPT09ICdzYW1wbGluZ190eXBlX3JhcGlkJ1xuICAgICAgICA/IG1hbnVhbFJlYXNvbnNLZXlzXG4gICAgICAgIDogYXV0b1JlYXNvbnNLZXlzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxGb3JtLkdyb3VwIGNsYXNzTmFtZT17U3R5bGUuY2FuY2VsbGF0aW9uUmVhc29uR3JvdXB9PlxuICAgICAgICAgIHtyZWFzb25zLm1hcCgocmVhc29uLCBpZHgpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtgb3B0LSR7aWR4fWB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YG1iLTMgJHtTdHlsZS5jYW5jZWxsYXRpb25SZWFzb259YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEZvcm0uQ2hlY2tcbiAgICAgICAgICAgICAgICB2YWx1ZT17bWFjaGluZVJlYXNvbnNbaWR4XX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtyZWFzb259XG4gICAgICAgICAgICAgICAgbmFtZT1cImNhbmNlbGxhdGlvbl9yZWFzb25cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgaWQ9e3JlYXNvbn1cbiAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgIG1hY2hpbmVSZWFzb25zW2lkeF0gPT09IGZvcm1pay52YWx1ZXMuY2FuY2VsbGF0aW9uX3JlYXNvblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm0uR3JvdXA+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEZvcm1TdHlsZT5cbiAgICAgIDxGb3JtaWsgaW5pdGlhbFZhbHVlcz17c2FtcGxpbmdQcm9wZXJ0eX0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG4gICAgICAgIHsoKSA9PiAoXG4gICAgICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9PlxuICAgICAgICAgICAgPEZvcm1Db250YWluZXJTdHlsZT5cbiAgICAgICAgICAgICAgPEZpZWxkc0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB7cGFnZVR5cGUgPT09ICdjb2xsZWN0JyAmJiAoXG4gICAgICAgICAgICAgICAgICA8U3RhcnQ+XG4gICAgICAgICAgICAgICAgICAgIDxJbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVCbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VGl0bGU9e2kxOG4udCgnYWN0aXZlcmVjb3JkLm1vZGVscy5sYWInKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYWJfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5sYWJfaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ludmFsaWQ9eyEhZm9ybWlrLmVycm9ycy5sYWJfaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT17dW5kZWZpbmVkfT48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMubGFicyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5sYWJzLm1hcCgobGFiOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bGFiLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiLmlkID09PSB0b1NhZmVJbnRlZ2VyKGZvcm1pay52YWx1ZXMubGFiX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsYWIubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIDwvTW9iaWxlSW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMubGFiX2lkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnaGludCd9Pntmb3JtaWsuZXJyb3JzLmxhYl9pZH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0lucHV0V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1Sb3dTdHlsZT5cbiAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZD17ISFmb3JtaWsuZXJyb3JzLnB1bXBfc2FtcGxpbmdfdm9sdW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFRpdGxlPXtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B1bXBfc2NoZWR1bGVkX2RheXNfY29uZmlndXJhdGlvbi52b2x1bWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHVtcF9zYW1wbGluZ192b2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucHVtcF9zYW1wbGluZ192b2x1bWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbD1cIm1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JtaWsuZXJyb3JzLnB1bXBfc2FtcGxpbmdfdm9sdW1lICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydoaW50IGhpbnQtLXVwcGVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMucHVtcF9zYW1wbGluZ192b2x1bWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0lucHV0V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZD17ISFmb3JtaWsuZXJyb3JzLnB1bXBfYmF0dGVyeV9sZXZlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVCbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRUaXRsZT17aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGluZ19zY3JlZW4ucHVtcF9iYXR0ZXJ5X2xldmVsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInB1bXBfYmF0dGVyeV9sZXZlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wdW1wX2JhdHRlcnlfbGV2ZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbD1cIiVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMucHVtcF9iYXR0ZXJ5X2xldmVsICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydoaW50IGhpbnQtLXVwcGVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMucHVtcF9iYXR0ZXJ5X2xldmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9JbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvRm9ybVJvd1N0eWxlPlxuICAgICAgICAgICAgICAgICAgPC9TdGFydD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxFbmQgcGFnZVR5cGU9e3BhZ2VUeXBlfT5cbiAgICAgICAgICAgICAgICAgIHtwYWdlVHlwZSA9PT0gJ2NvbGxlY3QnICYmIChcbiAgICAgICAgICAgICAgICAgICAgPElucHV0V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8TW9iaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZD17ISFmb3JtaWsuZXJyb3JzLmthbmRvX3JlcH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRUaXRsZT17aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdzX3Byb3BlcnRpZXMucmVwb3J0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJrYW5kb19yZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc19wcm9wZXJ0aWVzLnBsYWNlaG9sZGVyX3JlcG9ydGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5rYW5kb19yZXB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWlrLmVycm9ycy5rYW5kb19yZXAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydoaW50J30+e2Zvcm1pay5lcnJvcnMua2FuZG9fcmVwfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3BhZ2VUeXBlID09PSAnY2FuY2VsJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtTdHlsZS5jYW5jZWxsYXRpb25UaXRsZX0+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnc2FtcGxpbmdzX3BhZ2UuY2FuY2VsbGF0aW9uX3RpdGxlJyl9OlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtTdHlsZS5yZWFzb25zTGlzdFdyYXBwZXJ9PlxuICAgICAgICAgICAgICAgICAgICB7cGFnZVR5cGUgPT09ICdjYW5jZWwnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17U3R5bGUucmVhc29uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAge2Zvcm1pay50b3VjaGVkLmNhbmNlbGxhdGlvbl9yZWFzb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5jYW5jZWxsYXRpb25fcmVhc29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17U3R5bGUudmFsaWRhdGlvbkVycm9yfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2dlbmVyYWwucGxlYXNlX3NlbGVjdCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPENhbmNlbGxhdGlvblJlYXNvbnMgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVCbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VGl0bGU9e2kxOG4udCgnd2F0ZXJfbWV0ZXIuZGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc19wcm9wZXJ0aWVzLmdlbmVyYWxfZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNJbnZhbGlkPXshIWZvcm1pay5lcnJvcnMuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0VuZD5cbiAgICAgICAgICAgICAgPC9GaWVsZHNDb250YWluZXI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9eydoaWRkZW4nfVxuICAgICAgICAgICAgICAgIG5hbWU9eydjb2xsZWN0aW9uX3RpbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmNvbGxlY3Rpb25fdGltZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT17J2hpZGRlbid9XG4gICAgICAgICAgICAgICAgbmFtZT17J3NhbXBsaW5nX3BsYW5faWQnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnNhbXBsaW5nX3BsYW5faWR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCb3R0b21Gb3JtU3R5bGUgLz5cbiAgICAgICAgICAgICAgPEltYWdlVXBsb2FkXG4gICAgICAgICAgICAgICAgc2V0UGhvdG9zPXtzZXRQaG90b3N9XG4gICAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgICBzZXRQaG90b3NUb0RlbGV0ZT17c2V0UGhvdG9zVG9EZWxldGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25zUm93PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNTBweFwiXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICByb3VuZGVkPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtTdHlsZS5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdjbG9zZScpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHJvdW5kZWQ9e3RydWV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTUwcHhcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtTdHlsZS5zdWJtaXRCdG59XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3NhdmluZ01zZ31cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9CdXR0b25zUm93PlxuICAgICAgICAgICAgPC9Gb3JtQ29udGFpbmVyU3R5bGU+XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICApfVxuICAgICAgPC9Gb3JtaWs+XG4gICAgPC9Gb3JtU3R5bGU+XG4gICk7XG59O1xuXG5jb25zdCBJbnB1dFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMTtcblxuICAuaW5wdXQtZ3JvdXAsXG4gIHNlbGVjdCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIHRvcDogLTRweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmhpbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0xNnB4O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHt0aGVtZS5jb2xvclNjaGVtZS5kYXRhLlIxMDB9O1xuXG4gICAgJi0tdXBwZXIge1xuICAgICAgYm90dG9tOiAtMXB4O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgRmllbGRzQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7aXNNb2JpbGUgPyAnY29sdW1uOycgOiAncm93Oyd9XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmNvbnN0IFN0YXJ0ID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6ICR7aXNNb2JpbGUgPyAndW5zZXQ7JyA6ICc1MCU7J31cbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAke2lzTW9iaWxlID8gJ3Vuc2V0OycgOiAnMTBweDsnfVxuICBwYWRkaW5nLXRvcDogJHtpc01vYmlsZSA/ICd1bnNldDsnIDogJzEwcHg7J31cbiAgXG5gO1xuaW50ZXJmYWNlIEVuZFByb3BzIHtcbiAgcGFnZVR5cGU6IHN0cmluZztcbn1cbmNvbnN0IEVuZCA9IHN0eWxlZC5kaXYuYXR0cnMoKHByb3BzOiBFbmRQcm9wcykgPT4gKHtcbiAgaXNQcm9wZXJ0aWVzUGFnZTogcHJvcHMucGFnZVR5cGUgPT09ICdjb2xsZWN0Jyxcbn0pKWBcbiAgd2lkdGg6ICR7KHByb3BzKSA9PlxuICAgIGlzTW9iaWxlID8gJ3Vuc2V0JyA6IHByb3BzLmlzUHJvcGVydGllc1BhZ2UgPyAnNTAlJyA6ICcxMDAlJ307XG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke2lzTW9iaWxlID8gJ3Vuc2V0OycgOiAnMTBweDsnfVxuICBwYWRkaW5nLXRvcDogJHtpc01vYmlsZSA/ICd1bnNldDsnIDogJzEwcHg7J31cbmA7XG5cbmNvbnN0IERlc2NyaXB0aW9uID0gc3R5bGVkLmRpdmBcbiAgZmxleC1ncm93OiAxO1xuXG4gIGZpZWxkc2V0IHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbiAgICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICAgIHRleHRhcmVhIHtcbiAgICAgIHRyYW5zaXRpb246IGN1YmljLWJlemllcigwLjY1LCAwLjA1LCAwLjM2LCAxKSAwLjJzO1xuICAgICAgaGVpZ2h0OiAke2lzTW9iaWxlID8gJzc1cHggIWltcG9ydGFudCcgOiAnMTA1cHggIWltcG9ydGFudCd9O1xuICAgIH1cblxuICAgIGRpdiB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgRm9ybVN0eWxlID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMCAwIDZweDtcbmA7XG5cbmNvbnN0IEZvcm1Sb3dTdHlsZSA9IHN0eWxlZChSb3cpYFxuICBtYXJnaW46IDA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZGl2IHtcbiAgICB3aWR0aDogJHtpc01vYmlsZSA/ICc0NSU7JyA6ICcxMDAlOyd9O1xuXG4gICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAke2lzTW9iaWxlID8gJzEwcHg7JyA6ICcwOyd9O1xuICAgIH1cblxuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICR7aXNNb2JpbGUgPyAnMTBweDsnIDogJzA7J307XG4gICAgfVxuXG4gICAgZGl2IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQnV0dG9uc1JvdyA9IHN0eWxlZChSb3cpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi10b3A6IDMwcHg7XG4gIG1hcmdpbjogJHtpc01vYmlsZSA/IDAgOiAnOXB4IDAnfTtcblxuICBkaXYge1xuICAgICR7aXNNb2JpbGUgPyAnJyA6ICdtYXJnaW46IDAgNnB4J31cbiAgfVxuYDtcblxuY29uc3QgRm9ybUNvbnRhaW5lclN0eWxlID0gc3R5bGVkKENvbnRhaW5lcilgXG4gIG1hcmdpbjogMjBweCAwIDA7XG4gIHBhZGRpbmc6IDA7XG5gO1xuXG5jb25zdCBCb3R0b21Gb3JtU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAwIDAgNnB4O1xuYDtcbiJdfQ==
240
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtLnRzeCJdLCJuYW1lcyI6WyJTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIiwicHJvcHMiLCJzYW1wbGluZ1Byb3BlcnRpZXMiLCJzYW1wbGluZyIsImZvcm1payIsInBhZ2VUeXBlIiwic2F2aW5nTXNnIiwiaGFuZGxlQ2xvc2UiLCJzZXRQaG90b3MiLCJwaG90b3MiLCJzZXRQaG90b3NUb0RlbGV0ZSIsIkNhbmNlbGxhdGlvblJlYXNvbnMiLCJtYW51YWxSZWFzb25zIiwibWFudWFsUmVhc29uc0tleXMiLCJtYXAiLCJrZXkiLCJpMThuIiwidCIsImF1dG9SZWFzb25zIiwiYXV0b1JlYXNvbnNLZXlzIiwicmVhc29ucyIsIm1hY2hpbmVfdHlwZSIsIm1hY2hpbmVSZWFzb25zIiwiU3R5bGUiLCJjYW5jZWxsYXRpb25SZWFzb25Hcm91cCIsInJlYXNvbiIsImlkeCIsImNhbmNlbGxhdGlvblJlYXNvbiIsImhhbmRsZUNoYW5nZSIsImhhbmRsZUJsdXIiLCJ2YWx1ZXMiLCJjYW5jZWxsYXRpb25fcmVhc29uIiwibGFiX2lkIiwiZXJyb3JzIiwidW5kZWZpbmVkIiwibGFicyIsImxhYiIsImlkIiwibmFtZSIsInB1bXBfc2FtcGxpbmdfdm9sdW1lIiwicHVtcF9iYXR0ZXJ5X2xldmVsIiwia2FuZG9fcmVwIiwiY2FuY2VsbGF0aW9uVGl0bGUiLCJyZWFzb25zTGlzdFdyYXBwZXIiLCJyZWFzb25zV3JhcHBlciIsInRvdWNoZWQiLCJ2YWxpZGF0aW9uRXJyb3IiLCJkZXNjcmlwdGlvbiIsImNvbGxlY3Rpb25fdGltZSIsInNhbXBsaW5nX3BsYW5faWQiLCJjbG9zZUJ0biIsInN1Ym1pdEJ0biIsIklucHV0V3JhcHBlciIsInN0eWxlZCIsImRpdiIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJkYXRhIiwiUjEwMCIsIkZpZWxkc0NvbnRhaW5lciIsImlzTW9iaWxlIiwiU3RhcnQiLCJFbmQiLCJhdHRycyIsImlzUHJvcGVydGllc1BhZ2UiLCJEZXNjcmlwdGlvbiIsIkZvcm1TdHlsZSIsIkZvcm1Sb3dTdHlsZSIsIlJvdyIsIkJ1dHRvbnNSb3ciLCJGb3JtQ29udGFpbmVyU3R5bGUiLCJDb250YWluZXIiLCJCb3R0b21Gb3JtU3R5bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFNQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRU8sSUFBTUEsc0JBQW1ELEdBQUcsU0FBdERBLHNCQUFzRCxDQUFDQyxLQUFELEVBQVc7QUFBQTs7QUFDNUUsTUFDRUMsa0JBREYsR0FVSUQsS0FWSixDQUNFQyxrQkFERjtBQUFBLE1BRUVDLFFBRkYsR0FVSUYsS0FWSixDQUVFRSxRQUZGO0FBQUEsTUFHRUMsTUFIRixHQVVJSCxLQVZKLENBR0VHLE1BSEY7QUFBQSxNQUlFQyxRQUpGLEdBVUlKLEtBVkosQ0FJRUksUUFKRjtBQUFBLE1BS0VDLFNBTEYsR0FVSUwsS0FWSixDQUtFSyxTQUxGO0FBQUEsTUFNRUMsV0FORixHQVVJTixLQVZKLENBTUVNLFdBTkY7QUFBQSxNQU9FQyxTQVBGLEdBVUlQLEtBVkosQ0FPRU8sU0FQRjtBQUFBLE1BUUVDLE1BUkYsR0FVSVIsS0FWSixDQVFFUSxNQVJGO0FBQUEsTUFTRUMsaUJBVEYsR0FVSVQsS0FWSixDQVNFUyxpQkFURjtBQVlBO0FBQ0Esd0JBQVUsWUFBTSxDQUFFLENBQWxCLEVBQW9CLENBQUNSLGtCQUFELEVBQXFCRSxNQUFyQixDQUFwQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLEdBQU07QUFDaEMsUUFBTUMsYUFBYSxHQUFHQywyQ0FBa0JDLEdBQWxCLENBQXNCLFVBQUNDLEdBQUQsRUFBaUI7QUFDM0QsYUFBT0MsY0FBS0MsQ0FBTCxnQ0FBK0JGLEdBQS9CLEVBQVA7QUFDRCxLQUZxQixD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QU4sS0FBbUI7QUFEWSxHQUF0QjtBQUFBLENBQWpCLENBQUg7QUFBQTtBQUFBO0FBQUEsOERBR0UsVUFBQ0osS0FBRDtBQUFBLFNBQ1AyRCw4QkFBVyxPQUFYLEdBQXFCM0QsS0FBSyxDQUFDK0QsZ0JBQU4sR0FBeUIsS0FBekIsR0FBaUMsTUFEL0M7QUFBQSxDQUhGLEVBS2lCSiw4QkFBVyxRQUFYLEdBQXNCLE9BTHZDLEVBTVFBLDhCQUFXLFFBQVgsR0FBc0IsT0FOOUIsQ0FBVDs7QUFTQSxJQUFNSyxXQUFXLEdBQUdaLDBCQUFPQyxHQUFWO0FBQUE7QUFBQTtBQUFBLHdMQVFETSw4QkFBVyxpQkFBWCxHQUErQixrQkFSOUIsQ0FBakI7O0FBa0JBLElBQU1NLFNBQVMsR0FBR2IsMEJBQU9DLEdBQVY7QUFBQTtBQUFBO0FBQUEsd0JBQWY7O0FBSUEsSUFBTWEsWUFBWSxHQUFHLCtCQUFPQyxtQkFBUCxDQUFIO0FBQUE7QUFBQTtBQUFBLGlLQUlMUiw4QkFBVyxNQUFYLEdBQW9CLE9BSmYsRUFPU0EsOEJBQVcsT0FBWCxHQUFxQixJQVA5QixFQVdXQSw4QkFBVyxPQUFYLEdBQXFCLElBWGhDLENBQWxCO0FBb0JBLElBQU1TLFVBQVUsR0FBRywrQkFBT0QsbUJBQVAsQ0FBSDtBQUFBO0FBQUE7QUFBQSx5RkFJSlIsOEJBQVcsQ0FBWCxHQUFlLE9BSlgsRUFPVkEsOEJBQVcsRUFBWCxHQUFnQixlQVBOLENBQWhCO0FBV0EsSUFBTVUsa0JBQWtCLEdBQUcsK0JBQU9DLHlCQUFQLENBQUg7QUFBQTtBQUFBO0FBQUEsa0NBQXhCOztBQUtBLElBQU1DLGVBQWUsR0FBR25CLDBCQUFPQyxHQUFWO0FBQUE7QUFBQTtBQUFBLHdCQUFyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGQywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cy9tYWNybyc7XG5pbXBvcnQgeyBDb250YWluZXIsIEZvcm0sIFJvdyB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJ3JlYWN0LWRldmljZS1kZXRlY3QnO1xuaW1wb3J0IHsgdG9TYWZlSW50ZWdlciB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7XG4gIGF1dG9SZWFzb25zS2V5cyxcbiAgbWFudWFsUmVhc29uc0tleXMsXG4gIFNhbXBsaW5nUHJvcGVydGllc1Byb3BzLFxufSBmcm9tICcuL3NhbXBsaW5nUHJvcGVydGllc1V0aWxzJztcblxuaW1wb3J0IEltYWdlVXBsb2FkIGZyb20gJ3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9JbWFnZVVwbG9hZCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgTW9iaWxlSW5wdXQsIEJ1dHRvbiB9IGZyb20gJ3NyYy91aS1raXQnO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICdzcmMvc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCB7IHVzZUluaXRpYWxpemVIZWFkZXJzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUluaXRpYWxpemVIZWFkZXJzJztcblxuaW1wb3J0IFN0eWxlIGZyb20gJy4uL3N0eWxlLm1vZHVsZS5zY3NzJztcblxuZXhwb3J0IGNvbnN0IFNhbXBsaW5nUHJvcGVydGllc0Zvcm06IEZDPFNhbXBsaW5nUHJvcGVydGllc1Byb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2FtcGxpbmdQcm9wZXJ0aWVzLFxuICAgIHNhbXBsaW5nLFxuICAgIGZvcm1payxcbiAgICBwYWdlVHlwZSxcbiAgICBzYXZpbmdNc2csXG4gICAgaGFuZGxlQ2xvc2UsXG4gICAgc2V0UGhvdG9zLFxuICAgIHBob3RvcyxcbiAgICBzZXRQaG90b3NUb0RlbGV0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIHVzZUluaXRpYWxpemVIZWFkZXJzKCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7fSwgW3NhbXBsaW5nUHJvcGVydGllcywgZm9ybWlrXSk7XG5cbiAgY29uc3QgQ2FuY2VsbGF0aW9uUmVhc29ucyA9ICgpID0+IHtcbiAgICBjb25zdCBtYW51YWxSZWFzb25zID0gbWFudWFsUmVhc29uc0tleXMubWFwKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGkxOG4udChgY2FuY2VsbGF0aW9uX3JlYXNvbnMuJHtrZXl9YCk7XG4gICAgfSk7XG4gICAgY29uc3QgYXV0b1JlYXNvbnMgPSBhdXRvUmVhc29uc0tleXMubWFwKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGkxOG4udChgY2FuY2VsbGF0aW9uX3JlYXNvbnMuYXV0b21hdGVkLiR7a2V5fWApO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVhc29ucyA9XG4gICAgICBzYW1wbGluZy5tYWNoaW5lX3R5cGUgPT09ICdzYW1wbGluZ190eXBlX3JhcGlkJ1xuICAgICAgICA/IG1hbnVhbFJlYXNvbnNcbiAgICAgICAgOiBhdXRvUmVhc29ucztcblxuICAgIGNvbnN0IG1hY2hpbmVSZWFzb25zID1cbiAgICAgIHNhbXBsaW5nLm1hY2hpbmVfdHlwZSA9PT0gJ3NhbXBsaW5nX3R5cGVfcmFwaWQnXG4gICAgICAgID8gbWFudWFsUmVhc29uc0tleXNcbiAgICAgICAgOiBhdXRvUmVhc29uc0tleXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPEZvcm0uR3JvdXAgY2xhc3NOYW1lPXtTdHlsZS5jYW5jZWxsYXRpb25SZWFzb25Hcm91cH0+XG4gICAgICAgICAge3JlYXNvbnMubWFwKChyZWFzb24sIGlkeCkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2BvcHQtJHtpZHh9YH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgbWItMyAke1N0eWxlLmNhbmNlbGxhdGlvblJlYXNvbn1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Rm9ybS5DaGVja1xuICAgICAgICAgICAgICAgIHZhbHVlPXttYWNoaW5lUmVhc29uc1tpZHhdfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgbGFiZWw9e3JlYXNvbn1cbiAgICAgICAgICAgICAgICBuYW1lPVwiY2FuY2VsbGF0aW9uX3JlYXNvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBpZD17cmVhc29ufVxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgbWFjaGluZVJlYXNvbnNbaWR4XSA9PT0gZm9ybWlrLnZhbHVlcy5jYW5jZWxsYXRpb25fcmVhc29uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybS5Hcm91cD5cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Rm9ybVN0eWxlPlxuICAgICAgPEZvcm1Db250YWluZXJTdHlsZT5cbiAgICAgICAgPEZpZWxkc0NvbnRhaW5lcj5cbiAgICAgICAgICB7cGFnZVR5cGUgPT09ICdjb2xsZWN0JyAmJiAoXG4gICAgICAgICAgICA8U3RhcnQ+XG4gICAgICAgICAgICAgIDxJbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVCbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgIGlucHV0VGl0bGU9e2kxOG4udCgnYWN0aXZlcmVjb3JkLm1vZGVscy5sYWInKX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmxhYl9pZH1cbiAgICAgICAgICAgICAgICAgIGlzSW52YWxpZD17ISFmb3JtaWsuZXJyb3JzLmxhYl9pZH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYWJfaWRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT17dW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAge3NhbXBsaW5nUHJvcGVydGllcz8ubGFicz8ubWFwKChsYWI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YG9wdC0ke2xhYi5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bGFiLmlkIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYi5pZCA9PT0gdG9TYWZlSW50ZWdlcihmb3JtaWsudmFsdWVzLmxhYl9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bGFiLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L01vYmlsZUlucHV0PlxuICAgICAgICAgICAgICAgIHtmb3JtaWsuZXJyb3JzLmxhYl9pZCAmJiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2hpbnQnfT57Zm9ybWlrLmVycm9ycy5sYWJfaWR9PC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9JbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxGb3JtUm93U3R5bGU+XG4gICAgICAgICAgICAgICAgPElucHV0V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgIDxNb2JpbGVJbnB1dFxuICAgICAgICAgICAgICAgICAgICBpc0ludmFsaWQ9eyEhZm9ybWlrLmVycm9ycy5wdW1wX3NhbXBsaW5nX3ZvbHVtZX1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVCbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgaW5wdXRUaXRsZT17aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICdwdW1wX3NjaGVkdWxlZF9kYXlzX2NvbmZpZ3VyYXRpb24udm9sdW1lJyxcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInB1bXBfc2FtcGxpbmdfdm9sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnB1bXBfc2FtcGxpbmdfdm9sdW1lfVxuICAgICAgICAgICAgICAgICAgICBzeW1ib2w9XCJtbFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMucHVtcF9zYW1wbGluZ192b2x1bWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2hpbnQgaGludC0tdXBwZXInfT5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWlrLmVycm9ycy5wdW1wX3NhbXBsaW5nX3ZvbHVtZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxJbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICA8TW9iaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaXNJbnZhbGlkPXshIWZvcm1pay5lcnJvcnMucHVtcF9iYXR0ZXJ5X2xldmVsfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgICAgICAgICAgICBpbnB1dFRpdGxlPXtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsaW5nX3NjcmVlbi5wdW1wX2JhdHRlcnlfbGV2ZWwnLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHVtcF9iYXR0ZXJ5X2xldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnB1bXBfYmF0dGVyeV9sZXZlbH1cbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sPVwiJVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMucHVtcF9iYXR0ZXJ5X2xldmVsICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydoaW50IGhpbnQtLXVwcGVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1pay5lcnJvcnMucHVtcF9iYXR0ZXJ5X2xldmVsfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9JbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgIDwvRm9ybVJvd1N0eWxlPlxuICAgICAgICAgICAgPC9TdGFydD5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxFbmQgcGFnZVR5cGU9e3BhZ2VUeXBlfT5cbiAgICAgICAgICAgIHtwYWdlVHlwZSA9PT0gJ2NvbGxlY3QnICYmIChcbiAgICAgICAgICAgICAgPElucHV0V3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8TW9iaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIGlzSW52YWxpZD17ISFmb3JtaWsuZXJyb3JzLmthbmRvX3JlcH1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgICAgICAgICAgaW5wdXRUaXRsZT17aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdzX3Byb3BlcnRpZXMucmVwb3J0ZXInLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJrYW5kb19yZXBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc19wcm9wZXJ0aWVzLnBsYWNlaG9sZGVyX3JlcG9ydGVyJyxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5rYW5kb19yZXB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7Zm9ybWlrLmVycm9ycy5rYW5kb19yZXAgJiYgKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydoaW50J30+e2Zvcm1pay5lcnJvcnMua2FuZG9fcmVwfTwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3BhZ2VUeXBlID09PSAnY2FuY2VsJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtTdHlsZS5jYW5jZWxsYXRpb25UaXRsZX0+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnc2FtcGxpbmdzX3BhZ2UuY2FuY2VsbGF0aW9uX3RpdGxlJyl9OlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtTdHlsZS5yZWFzb25zTGlzdFdyYXBwZXJ9PlxuICAgICAgICAgICAgICB7cGFnZVR5cGUgPT09ICdjYW5jZWwnICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17U3R5bGUucmVhc29uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgICAge2Zvcm1pay50b3VjaGVkLmNhbmNlbGxhdGlvbl9yZWFzb24gJiZcbiAgICAgICAgICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5jYW5jZWxsYXRpb25fcmVhc29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17U3R5bGUudmFsaWRhdGlvbkVycm9yfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2dlbmVyYWwucGxlYXNlX3NlbGVjdCcpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPENhbmNlbGxhdGlvblJlYXNvbnMgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVCbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgIGlucHV0VGl0bGU9e2kxOG4udCgnd2F0ZXJfbWV0ZXIuZGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc19wcm9wZXJ0aWVzLmdlbmVyYWxfZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgaXNJbnZhbGlkPXshIWZvcm1pay5lcnJvcnMuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9EZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvRW5kPlxuICAgICAgICA8L0ZpZWxkc0NvbnRhaW5lcj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT17J2hpZGRlbid9XG4gICAgICAgICAgbmFtZT17J2NvbGxlY3Rpb25fdGltZSd9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuY29sbGVjdGlvbl90aW1lIHx8ICcnfVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPXsnaGlkZGVuJ31cbiAgICAgICAgICBuYW1lPXsnc2FtcGxpbmdfcGxhbl9pZCd9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuc2FtcGxpbmdfcGxhbl9pZCB8fCAnJ31cbiAgICAgICAgLz5cbiAgICAgICAgPEJvdHRvbUZvcm1TdHlsZSAvPlxuICAgICAgICA8SW1hZ2VVcGxvYWRcbiAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICBwaG90b3M9e3Bob3Rvc31cbiAgICAgICAgICBzYW1wbGluZz17c2FtcGxpbmdQcm9wZXJ0aWVzfVxuICAgICAgICAgIHNldFBob3Rvc1RvRGVsZXRlPXtzZXRQaG90b3NUb0RlbGV0ZX1cbiAgICAgICAgLz5cbiAgICAgICAgPEJ1dHRvbnNSb3c+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xvc2V9XG4gICAgICAgICAgICB3aWR0aD1cIjE1MHB4XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJub25lXCJcbiAgICAgICAgICAgIHJvdW5kZWQ9e3RydWV9XG4gICAgICAgICAgICBjbGFzc05hbWU9e1N0eWxlLmNsb3NlQnRufVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuLnQoJ2Nsb3NlJyl9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgcm91bmRlZD17dHJ1ZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgd2lkdGg9XCIxNTBweFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e1N0eWxlLnN1Ym1pdEJ0bn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2F2aW5nTXNnfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0J1dHRvbnNSb3c+XG4gICAgICA8L0Zvcm1Db250YWluZXJTdHlsZT5cbiAgICA8L0Zvcm1TdHlsZT5cbiAgKTtcbn07XG5cbmNvbnN0IElucHV0V3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1ncm93OiAxO1xuXG4gIC5pbnB1dC1ncm91cCxcbiAgc2VsZWN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgdG9wOiAtNHB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAuaGludCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTE2cHg7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGNvbG9yOiAke3RoZW1lLmNvbG9yU2NoZW1lLmRhdGEuUjEwMH07XG5cbiAgICAmLS11cHBlciB7XG4gICAgICBib3R0b206IC0xcHg7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBGaWVsZHNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtpc01vYmlsZSA/ICdjb2x1bW47JyA6ICdyb3c7J31cbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuY29uc3QgU3RhcnQgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogJHtpc01vYmlsZSA/ICd1bnNldDsnIDogJzUwJTsnfVxuICBwYWRkaW5nLWlubGluZS1lbmQ6ICR7aXNNb2JpbGUgPyAndW5zZXQ7JyA6ICcxMHB4Oyd9XG4gIHBhZGRpbmctdG9wOiAke2lzTW9iaWxlID8gJ3Vuc2V0OycgOiAnMTBweDsnfVxuICBcbmA7XG5pbnRlcmZhY2UgRW5kUHJvcHMge1xuICBwYWdlVHlwZTogc3RyaW5nO1xufVxuY29uc3QgRW5kID0gc3R5bGVkLmRpdi5hdHRycygocHJvcHM6IEVuZFByb3BzKSA9PiAoe1xuICBpc1Byb3BlcnRpZXNQYWdlOiBwcm9wcy5wYWdlVHlwZSA9PT0gJ2NvbGxlY3QnLFxufSkpYFxuICB3aWR0aDogJHsocHJvcHMpID0+XG4gICAgaXNNb2JpbGUgPyAndW5zZXQnIDogcHJvcHMuaXNQcm9wZXJ0aWVzUGFnZSA/ICc1MCUnIDogJzEwMCUnfTtcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7aXNNb2JpbGUgPyAndW5zZXQ7JyA6ICcxMHB4Oyd9XG4gIHBhZGRpbmctdG9wOiAke2lzTW9iaWxlID8gJ3Vuc2V0OycgOiAnMTBweDsnfVxuYDtcblxuY29uc3QgRGVzY3JpcHRpb24gPSBzdHlsZWQuZGl2YFxuICBmbGV4LWdyb3c6IDE7XG5cbiAgZmllbGRzZXQge1xuICAgIHBhZGRpbmc6IDVweCAwO1xuICAgIGhlaWdodDogbWF4LWNvbnRlbnQ7XG4gICAgdGV4dGFyZWEge1xuICAgICAgdHJhbnNpdGlvbjogY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpIDAuMnM7XG4gICAgICBoZWlnaHQ6ICR7aXNNb2JpbGUgPyAnNzVweCAhaW1wb3J0YW50JyA6ICcxMDVweCAhaW1wb3J0YW50J307XG4gICAgfVxuXG4gICAgZGl2IHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBGb3JtU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAwIDAgNnB4O1xuYDtcblxuY29uc3QgRm9ybVJvd1N0eWxlID0gc3R5bGVkKFJvdylgXG4gIG1hcmdpbjogMDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBkaXYge1xuICAgIHdpZHRoOiAke2lzTW9iaWxlID8gJzQ1JTsnIDogJzEwMCU7J307XG5cbiAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6ICR7aXNNb2JpbGUgPyAnMTBweDsnIDogJzA7J307XG4gICAgfVxuXG4gICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtpc01vYmlsZSA/ICcxMHB4OycgOiAnMDsnfTtcbiAgICB9XG5cbiAgICBkaXYge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBCdXR0b25zUm93ID0gc3R5bGVkKFJvdylgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgbWFyZ2luOiAke2lzTW9iaWxlID8gMCA6ICc5cHggMCd9O1xuXG4gIGRpdiB7XG4gICAgJHtpc01vYmlsZSA/ICcnIDogJ21hcmdpbjogMCA2cHgnfVxuICB9XG5gO1xuXG5jb25zdCBGb3JtQ29udGFpbmVyU3R5bGUgPSBzdHlsZWQoQ29udGFpbmVyKWBcbiAgbWFyZ2luOiAyMHB4IDAgMDtcbiAgcGFkZGluZzogMDtcbmA7XG5cbmNvbnN0IEJvdHRvbUZvcm1TdHlsZSA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDAgMCA2cHg7XG5gO1xuIl19