merchi_checkout 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,13 @@
1
1
  'use client';
2
2
 
3
3
  import React from 'react';
4
+ import { FaFilePdf } from 'react-icons/fa';
4
5
  import { formatCurrency, currencyTotalCostShowIncTax } from './currency';
5
- import { isInstructionsType, isProductSupplierMOD, isSelectable } from '../utils';
6
+ import { isInstructionsType, isProductSupplierMOD, isSelectable, FieldType } from '../utils';
6
7
  import { useMerchiCheckboutContext } from './MerchiCheckoutProvider';
7
- import { jsxs as _jsxs } from "react/jsx-runtime";
8
+ import { SummaryAmountRow, SummaryFieldRow } from './CheckoutSummaryFields';
8
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
11
  import { Fragment as _Fragment } from "react/jsx-runtime";
10
12
  function formatCost(product, cost) {
11
13
  var currency = product.currency ? product.currency : 'AUD';
@@ -14,12 +16,87 @@ function formatCost(product, cost) {
14
16
  showCodeIfNoSymbol: false
15
17
  });
16
18
  }
17
- function ProductCostRow(_ref) {
18
- var job = _ref.job;
19
- var quantity = job ? job.quantity : 0;
20
- return /*#__PURE__*/_jsxs("p", {
21
- className: "d-block mt-4 mb-0",
22
- children: ["Total Quantity: ", quantity]
19
+ function isPdf(file) {
20
+ var mimetype = (file === null || file === void 0 ? void 0 : file.mimetype) || '';
21
+ return mimetype === 'application/pdf' || mimetype === 'application/x-pdf';
22
+ }
23
+ function isImageFile(file) {
24
+ var mimetype = (file === null || file === void 0 ? void 0 : file.mimetype) || '';
25
+ if (mimetype.startsWith('image/')) return true;
26
+ var name = ((file === null || file === void 0 ? void 0 : file.name) || '').toLowerCase();
27
+ return /\.(jpe?g|png|gif|webp|svg|bmp)$/.test(name);
28
+ }
29
+ function optionImageUrl(option) {
30
+ var _option$linkedFile;
31
+ return (option === null || option === void 0 || (_option$linkedFile = option.linkedFile) === null || _option$linkedFile === void 0 ? void 0 : _option$linkedFile.viewUrl) || '';
32
+ }
33
+ function findMatchingOption(option) {
34
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
35
+ return options.find(function (o) {
36
+ return String(o.optionId) === String(option === null || option === void 0 ? void 0 : option.optionId);
37
+ });
38
+ }
39
+ function resolveOptionColour(option) {
40
+ var _option$colour, _findMatchingOption, _findMatchingOption2;
41
+ var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
42
+ var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
43
+ var direct = option === null || option === void 0 || (_option$colour = option.colour) === null || _option$colour === void 0 ? void 0 : _option$colour.trim();
44
+ if (direct) return direct;
45
+ var fromSelectable = (_findMatchingOption = findMatchingOption(option, selectableOptions)) === null || _findMatchingOption === void 0 || (_findMatchingOption = _findMatchingOption.colour) === null || _findMatchingOption === void 0 ? void 0 : _findMatchingOption.trim();
46
+ if (fromSelectable) return fromSelectable;
47
+ return ((_findMatchingOption2 = findMatchingOption(option, fieldOptions)) === null || _findMatchingOption2 === void 0 || (_findMatchingOption2 = _findMatchingOption2.colour) === null || _findMatchingOption2 === void 0 ? void 0 : _findMatchingOption2.trim()) || '';
48
+ }
49
+ function resolveOptionImageUrl(option) {
50
+ var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
51
+ var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
52
+ var direct = optionImageUrl(option);
53
+ if (direct) return direct;
54
+ var fromSelectable = optionImageUrl(findMatchingOption(option, selectableOptions));
55
+ if (fromSelectable) return fromSelectable;
56
+ return optionImageUrl(findMatchingOption(option, fieldOptions));
57
+ }
58
+ function formatOptionCost(product, option, sellerProductEditable) {
59
+ if (!(option !== null && option !== void 0 && option.totalCost) || sellerProductEditable) return null;
60
+ return " + ".concat(formatCost(product, option.totalCost));
61
+ }
62
+ function VariationFilePreview(_ref) {
63
+ var file = _ref.file;
64
+ var fileUrl = (file === null || file === void 0 ? void 0 : file.viewUrl) || (file === null || file === void 0 ? void 0 : file.downloadUrl) || '';
65
+ var fileName = (file === null || file === void 0 ? void 0 : file.name) || 'File';
66
+ if (isPdf(file)) {
67
+ return /*#__PURE__*/_jsxs("a", {
68
+ className: "merchi-checkout-summary-file-link",
69
+ href: fileUrl,
70
+ target: "_blank",
71
+ rel: "noopener noreferrer",
72
+ title: fileName,
73
+ children: [/*#__PURE__*/_jsx(FaFilePdf, {
74
+ "aria-hidden": true
75
+ }), /*#__PURE__*/_jsx("span", {
76
+ children: fileName
77
+ })]
78
+ });
79
+ }
80
+ if (isImageFile(file) && fileUrl) {
81
+ return /*#__PURE__*/_jsx("img", {
82
+ className: "modal-merchi-checkout-job-info-content-img",
83
+ src: fileUrl,
84
+ alt: fileName,
85
+ title: fileName
86
+ });
87
+ }
88
+ if (fileUrl) {
89
+ return /*#__PURE__*/_jsx("a", {
90
+ className: "merchi-checkout-summary-file-link",
91
+ href: fileUrl,
92
+ target: "_blank",
93
+ rel: "noopener noreferrer",
94
+ title: fileName,
95
+ children: fileName
96
+ });
97
+ }
98
+ return /*#__PURE__*/_jsx("span", {
99
+ children: fileName
23
100
  });
24
101
  }
25
102
  function VariationInfoBody(_ref2) {
@@ -29,172 +106,310 @@ function VariationInfoBody(_ref2) {
29
106
  value = _ref2.value,
30
107
  files = _ref2.files,
31
108
  type = _ref2.type;
109
+ var isColourPicker = type === FieldType.COLOUR_PICKER;
110
+ var isFileUpload = type === FieldType.FILE_UPLOAD;
111
+ var hasFiles = Boolean(files === null || files === void 0 ? void 0 : files.length);
112
+ var displayValue = isColourPicker || isFileUpload && hasFiles ? null : value;
32
113
  return /*#__PURE__*/_jsxs("div", {
33
- children: [/*#__PURE__*/_jsx("small", {
34
- className: "mb-1",
114
+ className: "merchi-checkout-summary-variation-row",
115
+ children: [/*#__PURE__*/_jsx("div", {
116
+ className: "merchi-checkout-summary-variation-label",
35
117
  children: name
36
118
  }), /*#__PURE__*/_jsxs("div", {
37
- className: "mb-0",
38
- children: [/*#__PURE__*/_jsx("div", {
39
- className: "d-flex",
40
- style: {
41
- gap: '0.5rem'
42
- },
43
- children: files && files.map(function (file) {
44
- return /*#__PURE__*/_jsx("img", {
45
- className: "modal-merchi-checkout-job-info-content-img",
46
- src: file.viewUrl,
47
- alt: file.name
48
- }, file.viewUrl);
119
+ className: "merchi-checkout-summary-variation-value",
120
+ children: [hasFiles && /*#__PURE__*/_jsx("div", {
121
+ className: "merchi-checkout-summary-file-previews",
122
+ children: files.map(function (file, index) {
123
+ return /*#__PURE__*/_jsx(VariationFilePreview, {
124
+ file: file
125
+ }, file.viewUrl || file.id || "".concat(name, "-file-").concat(index));
49
126
  })
50
- }), type === 10 && /*#__PURE__*/_jsx("div", {
51
- style: {
52
- backgroundColor: "".concat(value)
53
- },
54
- className: "color-indicator"
55
- }), value && value, " ", cost ? "+ ".concat(formatCost(product, cost)) : '', files.length == 0 && !value && '-']
127
+ }), isColourPicker && value && /*#__PURE__*/_jsxs("div", {
128
+ className: "merchi-checkout-summary-colour-value",
129
+ children: [/*#__PURE__*/_jsx("span", {
130
+ style: {
131
+ backgroundColor: value
132
+ },
133
+ className: "color-indicator"
134
+ }), /*#__PURE__*/_jsx("span", {
135
+ children: value
136
+ })]
137
+ }), displayValue && displayValue, cost ? " + ".concat(formatCost(product, cost)) : '', !hasFiles && !value && '-']
138
+ })]
139
+ });
140
+ }
141
+ function VariationInfo(_ref3) {
142
+ var product = _ref3.product,
143
+ variation = _ref3.variation;
144
+ var selectedOptions = variation.selectedOptions,
145
+ variationField = variation.variationField,
146
+ variationFiles = variation.variationFiles,
147
+ selectableOptions = variation.selectableOptions;
148
+ var fieldType = variationField.fieldType,
149
+ sellerProductEditable = variationField.sellerProductEditable,
150
+ _variationField$optio = variationField.options,
151
+ fieldOptions = _variationField$optio === void 0 ? [] : _variationField$optio;
152
+ var isVariationSelectable = isSelectable(fieldType);
153
+ var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
154
+ var options = selectedOptions;
155
+ var useSelectableDisplay = isVariationSelectable && (Boolean(options === null || options === void 0 ? void 0 : options.length) || isTurnaroundTime && variation.value);
156
+ return /*#__PURE__*/_jsx("div", {
157
+ className: "merchi-checkout-summary-variation",
158
+ children: useSelectableDisplay ? /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
159
+ name: variationField.name,
160
+ fieldType: fieldType,
161
+ value: variation.value,
162
+ product: product,
163
+ files: variationFiles,
164
+ selectedOptions: options,
165
+ variation: variation,
166
+ selectableOptions: selectableOptions,
167
+ fieldOptions: fieldOptions,
168
+ sellerProductEditable: sellerProductEditable
169
+ }) : /*#__PURE__*/_jsx(VariationInfoBody, {
170
+ name: variationField.name,
171
+ type: variationField.fieldType,
172
+ value: variation.value,
173
+ files: variationFiles,
174
+ product: product,
175
+ cost: sellerProductEditable ? 0 : variation.cost
176
+ })
177
+ });
178
+ }
179
+ function ColourSelectOption(_ref4) {
180
+ var _option$value;
181
+ var option = _ref4.option,
182
+ selectableOptions = _ref4.selectableOptions,
183
+ fieldOptions = _ref4.fieldOptions;
184
+ var label = (option === null || option === void 0 || (_option$value = option.value) === null || _option$value === void 0 ? void 0 : _option$value.trim()) || '';
185
+ var hex = resolveOptionColour(option, selectableOptions, fieldOptions);
186
+ return /*#__PURE__*/_jsxs("span", {
187
+ className: "merchi-checkout-summary-colour-option",
188
+ children: [hex && /*#__PURE__*/_jsx("span", {
189
+ style: {
190
+ backgroundColor: hex
191
+ },
192
+ className: "color-indicator"
193
+ }), /*#__PURE__*/_jsx("span", {
194
+ children: label || hex || '–'
56
195
  })]
57
196
  });
58
197
  }
59
- function VariationOptionsInfoBody(_ref3) {
60
- var name = _ref3.name,
61
- selectedOptions = _ref3.selectedOptions,
62
- sellerProductEditable = _ref3.sellerProductEditable,
63
- product = _ref3.product;
64
- var firstOption = selectedOptions[0];
198
+ function ImageSelectOption(_ref5) {
199
+ var _option$value2;
200
+ var option = _ref5.option,
201
+ selectableOptions = _ref5.selectableOptions,
202
+ fieldOptions = _ref5.fieldOptions,
203
+ product = _ref5.product,
204
+ sellerProductEditable = _ref5.sellerProductEditable;
205
+ var imageUrl = resolveOptionImageUrl(option, selectableOptions, fieldOptions);
206
+ var label = (option === null || option === void 0 || (_option$value2 = option.value) === null || _option$value2 === void 0 ? void 0 : _option$value2.trim()) || '';
207
+ var cost = formatOptionCost(product, option, sellerProductEditable);
208
+ return /*#__PURE__*/_jsxs("span", {
209
+ className: "merchi-checkout-summary-image-select-option",
210
+ children: [imageUrl ? /*#__PURE__*/_jsx("img", {
211
+ className: "modal-merchi-checkout-job-info-content-img",
212
+ src: imageUrl,
213
+ alt: label || 'Selected option',
214
+ title: label || undefined
215
+ }) : null, /*#__PURE__*/_jsxs("span", {
216
+ children: [label || '–', cost || '']
217
+ })]
218
+ });
219
+ }
220
+ function getOptionId(option) {
221
+ var _option$optionId;
222
+ return (_option$optionId = option === null || option === void 0 ? void 0 : option.optionId) !== null && _option$optionId !== void 0 ? _option$optionId : option === null || option === void 0 ? void 0 : option.id;
223
+ }
224
+ function resolveTurnaroundSelectedOption(variation) {
225
+ var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
226
+ var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
227
+ var _variation$selectedOp = variation.selectedOptions,
228
+ selectedOptions = _variation$selectedOp === void 0 ? [] : _variation$selectedOp,
229
+ value = variation.value;
230
+ if (selectedOptions.length > 0) {
231
+ return selectedOptions[0];
232
+ }
233
+ var valueStr = value != null && value !== '' ? String(value).trim() : '';
234
+ if (!valueStr) return null;
235
+ var pools = [selectableOptions, fieldOptions];
236
+ for (var _i = 0, _pools = pools; _i < _pools.length; _i++) {
237
+ var pool = _pools[_i];
238
+ var byId = pool.find(function (o) {
239
+ return String(getOptionId(o)) === valueStr;
240
+ });
241
+ if (byId) return byId;
242
+ var byValue = pool.find(function (o) {
243
+ var _o$value;
244
+ return String((_o$value = o.value) !== null && _o$value !== void 0 ? _o$value : '') === valueStr;
245
+ });
246
+ if (byValue) return byValue;
247
+ }
248
+ return null;
249
+ }
250
+ function formatTurnaroundDeadline(userDeadline) {
251
+ if (!userDeadline) return null;
252
+ var seconds = Number(userDeadline);
253
+ if (!Number.isFinite(seconds) || seconds <= 0) return null;
254
+ return new Date(seconds * 1000).toLocaleDateString('en-AU', {
255
+ weekday: 'long',
256
+ year: 'numeric',
257
+ month: 'long',
258
+ day: 'numeric'
259
+ });
260
+ }
261
+ function TurnaroundOptionLabel(_ref6) {
262
+ var _option$value3, _option$value4;
263
+ var option = _ref6.option,
264
+ variationField = _ref6.variationField,
265
+ product = _ref6.product,
266
+ sellerProductEditable = _ref6.sellerProductEditable;
267
+ var days = parseInt(String((_option$value3 = option === null || option === void 0 ? void 0 : option.value) !== null && _option$value3 !== void 0 ? _option$value3 : ''), 10) || 0;
268
+ var deadline = formatTurnaroundDeadline(option === null || option === void 0 ? void 0 : option.userDeadline);
269
+ var shippingTimeIncluded = Boolean(variationField === null || variationField === void 0 ? void 0 : variationField.shippingTimeIncluded);
270
+ var deadlineLabel = shippingTimeIncluded ? 'Delivery by' : 'Produced by';
271
+ var cost = formatOptionCost(product, option, sellerProductEditable);
272
+ return /*#__PURE__*/_jsxs("span", {
273
+ className: "merchi-checkout-summary-turnaround-value",
274
+ children: [/*#__PURE__*/_jsx("span", {
275
+ className: "merchi-checkout-summary-turnaround-days",
276
+ children: days > 0 ? "".concat(days, " business day").concat(days !== 1 ? 's' : '') : (option === null || option === void 0 || (_option$value4 = option.value) === null || _option$value4 === void 0 ? void 0 : _option$value4.trim()) || '–'
277
+ }), deadline && /*#__PURE__*/_jsxs("span", {
278
+ className: "merchi-checkout-summary-turnaround-deadline",
279
+ children: [deadlineLabel, " ", deadline]
280
+ }), cost || '']
281
+ });
282
+ }
283
+ function VariationOptionsInfoBody(_ref7) {
284
+ var _variation$variationF;
285
+ var name = _ref7.name,
286
+ selectedOptions = _ref7.selectedOptions,
287
+ sellerProductEditable = _ref7.sellerProductEditable,
288
+ product = _ref7.product,
289
+ fieldType = _ref7.fieldType,
290
+ variation = _ref7.variation,
291
+ _ref7$selectableOptio = _ref7.selectableOptions,
292
+ selectableOptions = _ref7$selectableOptio === void 0 ? [] : _ref7$selectableOptio,
293
+ _ref7$fieldOptions = _ref7.fieldOptions,
294
+ fieldOptions = _ref7$fieldOptions === void 0 ? [] : _ref7$fieldOptions;
295
+ var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
296
+ var firstOption = isTurnaroundTime ? resolveTurnaroundSelectedOption({
297
+ selectedOptions: selectedOptions,
298
+ value: variation === null || variation === void 0 ? void 0 : variation.value
299
+ }, selectableOptions, fieldOptions) : selectedOptions[0];
300
+ var isColourSelect = fieldType === FieldType.COLOUR_SELECT;
301
+ var isImageSelect = fieldType === FieldType.IMAGE_SELECT;
302
+ var variationField = (_variation$variationF = variation === null || variation === void 0 ? void 0 : variation.variationField) !== null && _variation$variationF !== void 0 ? _variation$variationF : {};
303
+ function renderOptionLabel(o) {
304
+ var _o$value2;
305
+ if (isTurnaroundTime) {
306
+ return /*#__PURE__*/_jsx(TurnaroundOptionLabel, {
307
+ option: o,
308
+ variationField: variationField,
309
+ product: product,
310
+ sellerProductEditable: sellerProductEditable
311
+ });
312
+ }
313
+ if (isColourSelect) {
314
+ return /*#__PURE__*/_jsx(ColourSelectOption, {
315
+ option: o,
316
+ selectableOptions: selectableOptions,
317
+ fieldOptions: fieldOptions
318
+ });
319
+ }
320
+ if (isImageSelect) {
321
+ return /*#__PURE__*/_jsx(ImageSelectOption, {
322
+ option: o,
323
+ selectableOptions: selectableOptions,
324
+ fieldOptions: fieldOptions,
325
+ product: product,
326
+ sellerProductEditable: sellerProductEditable
327
+ });
328
+ }
329
+ return /*#__PURE__*/_jsxs(_Fragment, {
330
+ children: [((_o$value2 = o.value) === null || _o$value2 === void 0 ? void 0 : _o$value2.trim()) || '–', formatOptionCost(product, o, sellerProductEditable) || '']
331
+ });
332
+ }
65
333
  return /*#__PURE__*/_jsx(_Fragment, {
66
- children: selectedOptions.length > 1 ? /*#__PURE__*/_jsxs("div", {
67
- children: [/*#__PURE__*/_jsx("small", {
68
- className: "mb-1",
334
+ children: selectedOptions.length > 1 && !isTurnaroundTime ? /*#__PURE__*/_jsxs("div", {
335
+ className: "merchi-checkout-summary-variation-row",
336
+ children: [/*#__PURE__*/_jsx("div", {
337
+ className: "merchi-checkout-summary-variation-label",
69
338
  children: name
70
339
  }), /*#__PURE__*/_jsx("ul", {
71
- className: "list-unstyled m-0 m-b-5",
340
+ className: "merchi-checkout-summary-variation-value list-unstyled m-0",
72
341
  children: selectedOptions.map(function (o, i) {
73
- return /*#__PURE__*/_jsxs("li", {
74
- children: [o.value, ' ', Boolean(o.totalCost && !sellerProductEditable) ? " + ".concat(formatCost(product, o.totalCost)) : '']
75
- }, "".concat(i, "-option-key-").concat(o.optionId));
342
+ var _o$optionId;
343
+ return /*#__PURE__*/_jsx("li", {
344
+ children: renderOptionLabel(o)
345
+ }, "".concat(i, "-option-key-").concat((_o$optionId = o.optionId) !== null && _o$optionId !== void 0 ? _o$optionId : i));
76
346
  })
77
347
  })]
78
348
  }) : firstOption ? /*#__PURE__*/_jsxs("div", {
79
- children: [/*#__PURE__*/_jsx("small", {
80
- className: "mb-1",
349
+ className: "merchi-checkout-summary-variation-row",
350
+ children: [/*#__PURE__*/_jsx("div", {
351
+ className: "merchi-checkout-summary-variation-label",
81
352
  children: name
82
- }), /*#__PURE__*/_jsxs("p", {
83
- className: "mb-0",
84
- children: [firstOption.value, Boolean(firstOption.totalCost) ? " + ".concat(formatCost(product, firstOption.totalCost)) : '']
353
+ }), /*#__PURE__*/_jsx("div", {
354
+ className: "merchi-checkout-summary-variation-value",
355
+ children: renderOptionLabel(firstOption)
85
356
  })]
86
357
  }) : /*#__PURE__*/_jsxs("div", {
87
- children: [/*#__PURE__*/_jsx("small", {
88
- className: "mb-1",
358
+ className: "merchi-checkout-summary-variation-row",
359
+ children: [/*#__PURE__*/_jsx("div", {
360
+ className: "merchi-checkout-summary-variation-label",
89
361
  children: name
90
- }), /*#__PURE__*/_jsx("p", {
91
- className: "mb-0",
362
+ }), /*#__PURE__*/_jsx("div", {
363
+ className: "merchi-checkout-summary-variation-value",
92
364
  children: "-"
93
365
  })]
94
366
  })
95
367
  });
96
368
  }
97
- function VariationInfo(_ref4) {
98
- var product = _ref4.product,
99
- variation = _ref4.variation;
100
- var selectedOptions = variation.selectedOptions,
101
- variationField = variation.variationField,
102
- variationFiles = variation.variationFiles;
103
- var fieldType = variationField.fieldType,
104
- sellerProductEditable = variationField.sellerProductEditable;
105
- var isVariationSelectable = isSelectable(fieldType);
106
- var options = selectedOptions;
369
+ function VariationsInfo(_ref8) {
370
+ var product = _ref8.product,
371
+ quantity = _ref8.quantity,
372
+ _ref8$variations = _ref8.variations,
373
+ variations = _ref8$variations === void 0 ? [] : _ref8$variations;
107
374
  return /*#__PURE__*/_jsx("div", {
108
- children: isVariationSelectable && options ? /*#__PURE__*/_jsx(_Fragment, {
109
- children: /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
110
- name: variationField.name,
111
- type: variationField.fieldType,
112
- value: variation.value,
113
- product: product,
114
- files: variationFiles,
115
- selectedOptions: options,
116
- sellerProductEditable: sellerProductEditable
117
- })
118
- }) : /*#__PURE__*/_jsx(_Fragment, {
119
- children: /*#__PURE__*/_jsx(VariationInfoBody, {
120
- name: variationField.name,
121
- type: variationField.fieldType,
122
- value: variation.value,
123
- files: variationFiles,
124
- product: product,
125
- cost: sellerProductEditable ? 0 : variation.cost
126
- })
127
- })
128
- });
129
- }
130
- function VariationsInfo(_ref5) {
131
- var product = _ref5.product,
132
- quantity = _ref5.quantity,
133
- _ref5$variations = _ref5.variations,
134
- variations = _ref5$variations === void 0 ? [] : _ref5$variations;
135
- return /*#__PURE__*/_jsx("div", {
136
- className: "d-flex flex-column",
137
- style: {
138
- gap: '1rem'
139
- },
375
+ className: "merchi-checkout-summary-variations",
140
376
  children: variations.map(function (v, i) {
141
377
  return !isInstructionsType(v.variationField.fieldType) ? /*#__PURE__*/_jsx(VariationInfo, {
142
378
  quantity: quantity,
143
379
  variation: v,
144
380
  product: product
145
- }, i) : '';
381
+ }, i) : null;
146
382
  })
147
383
  });
148
384
  }
149
- function VariationGroupInfo(_ref6) {
150
- var group = _ref6.group,
151
- index = _ref6.index,
152
- product = _ref6.product,
153
- groupArrayLength = _ref6.groupArrayLength;
385
+ function VariationGroupInfo(_ref9) {
386
+ var group = _ref9.group,
387
+ index = _ref9.index,
388
+ product = _ref9.product;
154
389
  var isResell = isProductSupplierMOD(product);
155
390
  var quantity = group.quantity,
156
391
  variations = group.variations;
157
- return /*#__PURE__*/_jsx("div", {
158
- className: "quote-summary-card ".concat(groupArrayLength === 1 && ' w-100'),
159
- children: /*#__PURE__*/_jsxs("div", {
160
- className: "mt-2 d-flex flex-column justify-content-between text-left h-100",
161
- children: [/*#__PURE__*/_jsxs("div", {
162
- children: [/*#__PURE__*/_jsxs("small", {
163
- className: "text-muted",
164
- children: ["Group ", index + 1]
165
- }), /*#__PURE__*/_jsx("small", {
166
- className: "text-muted",
167
- children: !isResell && " | Quantity: ".concat(quantity)
168
- })]
169
- }), /*#__PURE__*/_jsxs("div", {
170
- className: "pt-2",
171
- children: [!!(variations && variations.length) && /*#__PURE__*/_jsxs("div", {
172
- children: [/*#__PURE__*/_jsxs("strong", {
173
- children: ["Group ", index + 1, " Detail"]
174
- }), ' ']
175
- }), /*#__PURE__*/_jsx(VariationsInfo, {
176
- quantity: quantity,
177
- variations: variations,
178
- product: product
179
- })]
180
- }), /*#__PURE__*/_jsx("div", {
181
- className: "pt-3",
182
- children: /*#__PURE__*/_jsxs("div", {
183
- className: "pt-1",
184
- style: {
185
- borderTop: '1px solid #d7d7d7',
186
- height: '24px'
187
- },
188
- children: [/*#__PURE__*/_jsxs("strong", {
189
- className: "mb-0 float-left float-start",
190
- children: [isResell ? 'Unit' : "Group", " Cost ", ' ']
191
- }), /*#__PURE__*/_jsx("strong", {
192
- className: "mb-0 ml-2 float-right float-end",
193
- children: formatCost(product, group.groupCost)
194
- })]
195
- })
196
- })]
197
- })
392
+ var visibleVariations = (variations !== null && variations !== void 0 ? variations : []).filter(function (v) {
393
+ var _v$variationField;
394
+ return !isInstructionsType(v === null || v === void 0 || (_v$variationField = v.variationField) === null || _v$variationField === void 0 ? void 0 : _v$variationField.fieldType);
395
+ });
396
+ var costLabel = isResell ? 'Unit Cost' : 'Group Cost';
397
+ return /*#__PURE__*/_jsxs("section", {
398
+ className: "merchi-checkout-summary-group",
399
+ children: [/*#__PURE__*/_jsxs("strong", {
400
+ className: "merchi-checkout-summary-order-detail-title",
401
+ children: ["Group ", index + 1, " Detail"]
402
+ }), !isResell && quantity > 0 && /*#__PURE__*/_jsx(SummaryFieldRow, {
403
+ label: "Quantity",
404
+ value: quantity
405
+ }), visibleVariations.length > 0 && /*#__PURE__*/_jsx(VariationsInfo, {
406
+ quantity: quantity,
407
+ variations: variations,
408
+ product: product
409
+ }), /*#__PURE__*/_jsxs("strong", {
410
+ className: "merchi-checkout-summary-group-cost",
411
+ children: [costLabel, ": ", formatCost(product, group.groupCost)]
412
+ })]
198
413
  });
199
414
  }
200
415
  export default function JobInfoContent() {
@@ -211,60 +426,63 @@ export default function JobInfoContent() {
211
426
  var totalCost = currencyTotalCostShowIncTax(job);
212
427
  var isResell = isProductSupplierMOD(product);
213
428
  var hasGroups = variationsGroups.length > 0;
429
+ var jobLevelVariations = (variations !== null && variations !== void 0 ? variations : []).filter(function (v) {
430
+ var _v$variationField2;
431
+ return !isInstructionsType(v === null || v === void 0 || (_v$variationField2 = v.variationField) === null || _v$variationField2 === void 0 ? void 0 : _v$variationField2.fieldType);
432
+ });
433
+ var totalQuantity = hasGroups ? variationsGroups.reduce(function (sum, g) {
434
+ return sum + (Number(g.quantity) || 0);
435
+ }, 0) : Number(quantity) || 0;
214
436
  return /*#__PURE__*/_jsxs("div", {
215
- className: "modal-merchi-checkout-job-info-content",
216
- children: [/*#__PURE__*/_jsx("strong", {
437
+ className: "modal-merchi-checkout-job-info-content merchi-checkout-summary",
438
+ children: [/*#__PURE__*/_jsx("div", {
439
+ className: "merchi-checkout-summary-section-title",
217
440
  children: product.name
218
- }), variationsGroups.length > 0 && /*#__PURE__*/_jsx("div", {
219
- className: "d-flex flex-wrap justify-content-between",
220
- style: {
221
- gap: 30
222
- },
441
+ }), hasGroups && /*#__PURE__*/_jsx("div", {
442
+ className: "merchi-checkout-summary-groups",
223
443
  children: variationsGroups.map(function (g, i) {
224
- return g.quantity ? /*#__PURE__*/_jsx("div", {
225
- className: "w-100",
226
- children: /*#__PURE__*/_jsx(VariationGroupInfo, {
227
- groupArrayLength: variationsGroups.length,
228
- group: g,
229
- index: i,
230
- job: job,
231
- product: product
232
- }, i)
233
- }, "".concat(i, "-job-info-content")) : '';
444
+ return g.quantity ? /*#__PURE__*/_jsx(VariationGroupInfo, {
445
+ group: g,
446
+ index: i,
447
+ product: product
448
+ }, "".concat(i, "-job-info-content")) : null;
234
449
  })
235
- }), /*#__PURE__*/_jsx("div", {
236
- className: "d-flex justify-content-center parent-variation-card",
237
- children: /*#__PURE__*/_jsxs("div", {
238
- className: "text-left mt-1 w-100",
239
- children: [/*#__PURE__*/_jsx(ProductCostRow, {
240
- job: job,
241
- product: product,
242
- quantity: quantity
243
- }), /*#__PURE__*/_jsxs("div", {
244
- children: [!!(variations && variations.length) && /*#__PURE__*/_jsx("strong", {
245
- className: "mb-0",
246
- children: "Order Detail"
247
- }), /*#__PURE__*/_jsx(VariationsInfo, {
248
- quantity: quantity,
249
- variations: variations,
250
- product: product
251
- })]
252
- }), !isResell && /*#__PURE__*/_jsxs("div", {
253
- className: "pt-2 mt-3 total-order-cost-container",
254
- children: [/*#__PURE__*/_jsx("small", {
255
- className: "mb-0",
256
- children: "Total Order Cost"
257
- }), ' ', needsShipping && /*#__PURE__*/_jsxs(_Fragment, {
258
- children: [/*#__PURE__*/_jsx("small", {
259
- className: "mb-0 ml-1 font-italic",
260
- children: "ex Shipment"
261
- }), ' ']
262
- }), /*#__PURE__*/_jsx("strong", {
263
- className: "mb-0 d-block",
264
- children: totalCost
265
- })]
450
+ }), !hasGroups && /*#__PURE__*/_jsx("div", {
451
+ className: "merchi-checkout-summary-standalone",
452
+ children: jobLevelVariations.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
453
+ children: [/*#__PURE__*/_jsx("strong", {
454
+ className: "merchi-checkout-summary-order-detail-title",
455
+ children: "Order Detail"
456
+ }), /*#__PURE__*/_jsx(VariationsInfo, {
457
+ quantity: quantity,
458
+ variations: variations,
459
+ product: product
266
460
  })]
267
461
  })
462
+ }), hasGroups && jobLevelVariations.length > 0 && /*#__PURE__*/_jsxs("div", {
463
+ className: "merchi-checkout-summary-standalone",
464
+ children: [/*#__PURE__*/_jsx("strong", {
465
+ className: "merchi-checkout-summary-order-detail-title",
466
+ children: "Order Detail"
467
+ }), /*#__PURE__*/_jsx(VariationsInfo, {
468
+ quantity: quantity,
469
+ variations: variations,
470
+ product: product
471
+ })]
472
+ }), !isResell && /*#__PURE__*/_jsxs("div", {
473
+ className: "merchi-checkout-summary-total",
474
+ children: [totalQuantity > 0 && /*#__PURE__*/_jsx(SummaryAmountRow, {
475
+ className: "merchi-checkout-summary-total-quantity",
476
+ label: "Total Quantity",
477
+ amount: totalQuantity
478
+ }), /*#__PURE__*/_jsx(SummaryAmountRow, {
479
+ label: "Total Order Cost",
480
+ labelExtra: needsShipping ? /*#__PURE__*/_jsx("small", {
481
+ className: "merchi-checkout-summary-total-note",
482
+ children: " ex Shipment"
483
+ }) : undefined,
484
+ amount: totalCost
485
+ })]
268
486
  }), !!(isResell && !hasGroups) && /*#__PURE__*/_jsxs("div", {
269
487
  children: [/*#__PURE__*/_jsxs("strong", {
270
488
  className: "mb-0",
@@ -276,4 +494,4 @@ export default function JobInfoContent() {
276
494
  })]
277
495
  });
278
496
  }
279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwianN4cyIsIl9qc3hzIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiZm9ybWF0Q29zdCIsInByb2R1Y3QiLCJjb3N0IiwiY3VycmVuY3kiLCJzaG93Q29kZUlmTm9TeW1ib2wiLCJQcm9kdWN0Q29zdFJvdyIsIl9yZWYiLCJqb2IiLCJxdWFudGl0eSIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiVmFyaWF0aW9uSW5mb0JvZHkiLCJfcmVmMiIsIm5hbWUiLCJ2YWx1ZSIsImZpbGVzIiwidHlwZSIsInN0eWxlIiwiZ2FwIiwibWFwIiwiZmlsZSIsInNyYyIsInZpZXdVcmwiLCJhbHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb25jYXQiLCJsZW5ndGgiLCJWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkiLCJfcmVmMyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGxlclByb2R1Y3RFZGl0YWJsZSIsImZpcnN0T3B0aW9uIiwibyIsImkiLCJCb29sZWFuIiwidG90YWxDb3N0Iiwib3B0aW9uSWQiLCJWYXJpYXRpb25JbmZvIiwiX3JlZjQiLCJ2YXJpYXRpb24iLCJ2YXJpYXRpb25GaWVsZCIsInZhcmlhdGlvbkZpbGVzIiwiZmllbGRUeXBlIiwiaXNWYXJpYXRpb25TZWxlY3RhYmxlIiwib3B0aW9ucyIsIlZhcmlhdGlvbnNJbmZvIiwiX3JlZjUiLCJfcmVmNSR2YXJpYXRpb25zIiwidmFyaWF0aW9ucyIsInYiLCJWYXJpYXRpb25Hcm91cEluZm8iLCJfcmVmNiIsImdyb3VwIiwiaW5kZXgiLCJncm91cEFycmF5TGVuZ3RoIiwiaXNSZXNlbGwiLCJib3JkZXJUb3AiLCJoZWlnaHQiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9Kb2JJbmZvQ29udGVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXggfSBmcm9tICcuL2N1cnJlbmN5JztcbmltcG9ydCB7XG4gIGlzSW5zdHJ1Y3Rpb25zVHlwZSxcbiAgaXNQcm9kdWN0U3VwcGxpZXJNT0QsXG4gIGlzU2VsZWN0YWJsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCB9IGZyb20gJy4vTWVyY2hpQ2hlY2tvdXRQcm92aWRlcic7XG5cbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcbiAgY29uc3QgY3VycmVuY3kgPSBwcm9kdWN0LmN1cnJlbmN5ID8gcHJvZHVjdC5jdXJyZW5jeSA6ICdBVUQnO1xuICByZXR1cm4gZm9ybWF0Q3VycmVuY3koY29zdCwge1xuICAgIGN1cnJlbmN5LFxuICAgIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBQcm9kdWN0Q29zdFJvdyh7IGpvYiB9OiBhbnkpIHtcbiAgY29uc3QgcXVhbnRpdHkgPSBqb2IgPyBqb2IucXVhbnRpdHkgOiAwO1xuICByZXR1cm4gPHAgY2xhc3NOYW1lPSdkLWJsb2NrIG10LTQgbWItMCc+VG90YWwgUXVhbnRpdHk6IHtxdWFudGl0eX08L3A+O1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25JbmZvQm9keSh7IGNvc3QsIG5hbWUsIHByb2R1Y3QsIHZhbHVlLCBmaWxlcywgdHlwZSB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWItMSc+e25hbWV9PC9zbWFsbD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J2QtZmxleCcgc3R5bGU9e3sgZ2FwOiAnMC41cmVtJyB9fT5cbiAgICAgICAgICB7ZmlsZXMgJiZcbiAgICAgICAgICAgIGZpbGVzLm1hcCgoZmlsZTogYW55KSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBrZXk9e2ZpbGUudmlld1VybH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50LWltZydcbiAgICAgICAgICAgICAgICBzcmM9e2ZpbGUudmlld1VybH1cbiAgICAgICAgICAgICAgICBhbHQ9e2ZpbGUubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3R5cGUgPT09IDEwICYmIChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGAke3ZhbHVlfWAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT0nY29sb3ItaW5kaWNhdG9yJ1xuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt2YWx1ZSAmJiB2YWx1ZX0ge2Nvc3QgPyBgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgY29zdCl9YCA6ICcnfVxuICAgICAgICB7ZmlsZXMubGVuZ3RoID09IDAgJiYgIXZhbHVlICYmICctJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkoe1xuICBuYW1lLFxuICBzZWxlY3RlZE9wdGlvbnMsXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcbiAgcHJvZHVjdCxcbn06IGFueSkge1xuICBjb25zdCBmaXJzdE9wdGlvbiA9IHNlbGVjdGVkT3B0aW9uc1swXTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAxID8gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT0nbGlzdC11bnN0eWxlZCBtLTAgbS1iLTUnPlxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkfWB9PlxuICAgICAgICAgICAgICAgIHtvLnZhbHVlfXsnICd9XG4gICAgICAgICAgICAgICAge0Jvb2xlYW4oby50b3RhbENvc3QgJiYgIXNlbGxlclByb2R1Y3RFZGl0YWJsZSlcbiAgICAgICAgICAgICAgICAgID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBvLnRvdGFsQ29zdCl9YFxuICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IGZpcnN0T3B0aW9uID8gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgICAgIHtmaXJzdE9wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgIHtCb29sZWFuKGZpcnN0T3B0aW9uLnRvdGFsQ29zdClcbiAgICAgICAgICAgICAgPyBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIGZpcnN0T3B0aW9uLnRvdGFsQ29zdCl9YFxuICAgICAgICAgICAgICA6ICcnfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPSdtYi0wJz4tPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm8oeyBwcm9kdWN0LCB2YXJpYXRpb24gfTogYW55KSB7XG4gIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb25zLCB2YXJpYXRpb25GaWVsZCwgdmFyaWF0aW9uRmlsZXMgfSA9IHZhcmlhdGlvbjtcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSB9ID0gdmFyaWF0aW9uRmllbGQ7XG4gIGNvbnN0IGlzVmFyaWF0aW9uU2VsZWN0YWJsZSA9IGlzU2VsZWN0YWJsZShmaWVsZFR5cGUpO1xuICBjb25zdCBvcHRpb25zID0gc2VsZWN0ZWRPcHRpb25zO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7aXNWYXJpYXRpb25TZWxlY3RhYmxlICYmIG9wdGlvbnMgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgICBmaWxlcz17dmFyaWF0aW9uRmlsZXN9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgY29zdD17c2VsbGVyUHJvZHVjdEVkaXRhYmxlID8gMCA6IHZhcmlhdGlvbi5jb3N0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWF0aW9uc0luZm8oeyBwcm9kdWN0LCBxdWFudGl0eSwgdmFyaWF0aW9ucyA9IFtdIH06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdkLWZsZXggZmxleC1jb2x1bW4nIHN0eWxlPXt7IGdhcDogJzFyZW0nIH19PlxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXG4gICAgICAgICAgPFZhcmlhdGlvbkluZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAnJ1xuICAgICAgICApXG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25Hcm91cEluZm8oeyBncm91cCwgaW5kZXgsIHByb2R1Y3QsIGdyb3VwQXJyYXlMZW5ndGggfTogYW55KSB7XG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XG4gIGNvbnN0IHsgcXVhbnRpdHksIHZhcmlhdGlvbnMgfSA9IGdyb3VwO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgcXVvdGUtc3VtbWFyeS1jYXJkICR7Z3JvdXBBcnJheUxlbmd0aCA9PT0gMSAmJiAnIHctMTAwJ31gfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtdC0yIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB0ZXh0LWxlZnQgaC0xMDAnPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J3RleHQtbXV0ZWQnPkdyb3VwIHtpbmRleCArIDF9PC9zbWFsbD5cbiAgICAgICAgICA8c21hbGwgY2xhc3NOYW1lPSd0ZXh0LW11dGVkJz5cbiAgICAgICAgICAgIHshaXNSZXNlbGwgJiYgYCB8IFF1YW50aXR5OiAke3F1YW50aXR5fWB9XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdwdC0yJz5cbiAgICAgICAgICB7ISEodmFyaWF0aW9ucyAmJiB2YXJpYXRpb25zLmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHN0cm9uZz5Hcm91cCB7aW5kZXggKyAxfSBEZXRhaWw8L3N0cm9uZz57JyAnfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHQtMyc+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPSdwdC0xJ1xuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNkN2Q3ZDcnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZmxvYXQtbGVmdCBmbG9hdC1zdGFydCc+XG4gICAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdVbml0JyA6IGBHcm91cGB9IENvc3QgeycgJ31cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgbWwtMiBmbG9hdC1yaWdodCBmbG9hdC1lbmQnPlxuICAgICAgICAgICAgICB7Zm9ybWF0Q29zdChwcm9kdWN0LCBncm91cC5ncm91cENvc3QpfVxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEpvYkluZm9Db250ZW50KCkge1xuICBjb25zdCB7IGpvYiB9ID0gdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCgpO1xuICBjb25zdCB7IHByb2R1Y3QsIHF1YW50aXR5ID0gMCwgdmFyaWF0aW9ucyA9IFtdLCB2YXJpYXRpb25zR3JvdXBzID0gW10gfSA9IGpvYjtcbiAgY29uc3QgeyBuZWVkc1NoaXBwaW5nIH0gPSBwcm9kdWN0O1xuICBjb25zdCB0b3RhbENvc3QgPSBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXgoam9iKTtcbiAgY29uc3QgaXNSZXNlbGwgPSBpc1Byb2R1Y3RTdXBwbGllck1PRChwcm9kdWN0KTtcbiAgY29uc3QgaGFzR3JvdXBzID0gdmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudCc+XG4gICAgICA8c3Ryb25nPntwcm9kdWN0Lm5hbWV9PC9zdHJvbmc+XG4gICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT0nZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbidcbiAgICAgICAgICBzdHlsZT17eyBnYXA6IDMwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5tYXAoKGc6IGFueSwgaTogbnVtYmVyKSA9PlxuICAgICAgICAgICAgZy5xdWFudGl0eSA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3ctMTAwJyBrZXk9e2Ake2l9LWpvYi1pbmZvLWNvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXG4gICAgICAgICAgICAgICAgICBncm91cEFycmF5TGVuZ3RoPXt2YXJpYXRpb25zR3JvdXBzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgIGdyb3VwPXtnfVxuICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBqb2I9e2pvYn1cbiAgICAgICAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBwYXJlbnQtdmFyaWF0aW9uLWNhcmQnPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndGV4dC1sZWZ0IG10LTEgdy0xMDAnPlxuICAgICAgICAgIDxQcm9kdWN0Q29zdFJvdyBqb2I9e2pvYn0gcHJvZHVjdD17cHJvZHVjdH0gcXVhbnRpdHk9e3F1YW50aXR5fSAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7ISEodmFyaWF0aW9ucyAmJiB2YXJpYXRpb25zLmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCc+T3JkZXIgRGV0YWlsPC9zdHJvbmc+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFZhcmlhdGlvbnNJbmZvXG4gICAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgeyFpc1Jlc2VsbCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHQtMiBtdC0zIHRvdGFsLW9yZGVyLWNvc3QtY29udGFpbmVyJz5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWItMCc+VG90YWwgT3JkZXIgQ29zdDwvc21hbGw+eycgJ31cbiAgICAgICAgICAgICAge25lZWRzU2hpcHBpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+PHNtYWxsIGNsYXNzTmFtZT0nbWItMCBtbC0xIGZvbnQtaXRhbGljJz5leCBTaGlwbWVudDwvc21hbGw+eycgJ308Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZC1ibG9jayc+e3RvdGFsQ29zdH08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB7ISEoaXNSZXNlbGwgJiYgIWhhc0dyb3VwcykgJiYgKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdBcHByb3hpbWF0ZSBVbml0JyA6ICdUb3RhbCd9IENvc3RcbiAgICAgICAgICA8L3N0cm9uZz57JyAnfVxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wIGQtYmxvY2snPnt0b3RhbENvc3R9PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFTQyxjQUFjLEVBQUVDLDJCQUEyQixRQUFRLFlBQVk7QUFDeEUsU0FDRUMsa0JBQWtCLEVBQ2xCQyxvQkFBb0IsRUFDcEJDLFlBQVksUUFDUCxVQUFVO0FBQ2pCLFNBQVNDLHlCQUF5QixRQUFRLDBCQUEwQjtBQUFDLFNBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUFBLFNBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUVyRSxTQUFTQyxVQUFVQSxDQUFDQyxPQUFZLEVBQUVDLElBQVksRUFBRTtFQUM5QyxJQUFNQyxRQUFRLEdBQUdGLE9BQU8sQ0FBQ0UsUUFBUSxHQUFHRixPQUFPLENBQUNFLFFBQVEsR0FBRyxLQUFLO0VBQzVELE9BQU9mLGNBQWMsQ0FBQ2MsSUFBSSxFQUFFO0lBQzFCQyxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxTQUFTQyxjQUFjQSxDQUFBQyxJQUFBLEVBQWU7RUFBQSxJQUFaQyxHQUFHLEdBQUFELElBQUEsQ0FBSEMsR0FBRztFQUMzQixJQUFNQyxRQUFRLEdBQUdELEdBQUcs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
497
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkZhRmlsZVBkZiIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJGaWVsZFR5cGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwiU3VtbWFyeUFtb3VudFJvdyIsIlN1bW1hcnlGaWVsZFJvdyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImZvcm1hdENvc3QiLCJwcm9kdWN0IiwiY29zdCIsImN1cnJlbmN5Iiwic2hvd0NvZGVJZk5vU3ltYm9sIiwiaXNQZGYiLCJmaWxlIiwibWltZXR5cGUiLCJpc0ltYWdlRmlsZSIsInN0YXJ0c1dpdGgiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJ0ZXN0Iiwib3B0aW9uSW1hZ2VVcmwiLCJvcHRpb24iLCJfb3B0aW9uJGxpbmtlZEZpbGUiLCJsaW5rZWRGaWxlIiwidmlld1VybCIsImZpbmRNYXRjaGluZ09wdGlvbiIsIm9wdGlvbnMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJmaW5kIiwibyIsIlN0cmluZyIsIm9wdGlvbklkIiwicmVzb2x2ZU9wdGlvbkNvbG91ciIsIl9vcHRpb24kY29sb3VyIiwiX2ZpbmRNYXRjaGluZ09wdGlvbiIsIl9maW5kTWF0Y2hpbmdPcHRpb24yIiwic2VsZWN0YWJsZU9wdGlvbnMiLCJmaWVsZE9wdGlvbnMiLCJkaXJlY3QiLCJjb2xvdXIiLCJ0cmltIiwiZnJvbVNlbGVjdGFibGUiLCJyZXNvbHZlT3B0aW9uSW1hZ2VVcmwiLCJmb3JtYXRPcHRpb25Db3N0Iiwic2VsbGVyUHJvZHVjdEVkaXRhYmxlIiwidG90YWxDb3N0IiwiY29uY2F0IiwiVmFyaWF0aW9uRmlsZVByZXZpZXciLCJfcmVmIiwiZmlsZVVybCIsImRvd25sb2FkVXJsIiwiZmlsZU5hbWUiLCJjbGFzc05hbWUiLCJocmVmIiwidGFyZ2V0IiwicmVsIiwidGl0bGUiLCJjaGlsZHJlbiIsInNyYyIsImFsdCIsIlZhcmlhdGlvbkluZm9Cb2R5IiwiX3JlZjIiLCJ2YWx1ZSIsImZpbGVzIiwidHlwZSIsImlzQ29sb3VyUGlja2VyIiwiQ09MT1VSX1BJQ0tFUiIsImlzRmlsZVVwbG9hZCIsIkZJTEVfVVBMT0FEIiwiaGFzRmlsZXMiLCJCb29sZWFuIiwiZGlzcGxheVZhbHVlIiwibWFwIiwiaW5kZXgiLCJpZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiVmFyaWF0aW9uSW5mbyIsIl9yZWYzIiwidmFyaWF0aW9uIiwic2VsZWN0ZWRPcHRpb25zIiwidmFyaWF0aW9uRmllbGQiLCJ2YXJpYXRpb25GaWxlcyIsImZpZWxkVHlwZSIsIl92YXJpYXRpb25GaWVsZCRvcHRpbyIsImlzVmFyaWF0aW9uU2VsZWN0YWJsZSIsImlzVHVybmFyb3VuZFRpbWUiLCJUVVJOQVJPVU5EX1RJTUUiLCJ1c2VTZWxlY3RhYmxlRGlzcGxheSIsIlZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keSIsIkNvbG91clNlbGVjdE9wdGlvbiIsIl9yZWY0IiwiX29wdGlvbiR2YWx1ZSIsImxhYmVsIiwiaGV4IiwiSW1hZ2VTZWxlY3RPcHRpb24iLCJfcmVmNSIsIl9vcHRpb24kdmFsdWUyIiwiaW1hZ2VVcmwiLCJnZXRPcHRpb25JZCIsIl9vcHRpb24kb3B0aW9uSWQiLCJyZXNvbHZlVHVybmFyb3VuZFNlbGVjdGVkT3B0aW9uIiwiX3ZhcmlhdGlvbiRzZWxlY3RlZE9wIiwidmFsdWVTdHIiLCJwb29scyIsIl9pIiwiX3Bvb2xzIiwicG9vbCIsImJ5SWQiLCJieVZhbHVlIiwiX28kdmFsdWUiLCJmb3JtYXRUdXJuYXJvdW5kRGVhZGxpbmUiLCJ1c2VyRGVhZGxpbmUiLCJzZWNvbmRzIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwid2Vla2RheSIsInllYXIiLCJtb250aCIsImRheSIsIlR1cm5hcm91bmRPcHRpb25MYWJlbCIsIl9yZWY2IiwiX29wdGlvbiR2YWx1ZTMiLCJfb3B0aW9uJHZhbHVlNCIsImRheXMiLCJwYXJzZUludCIsImRlYWRsaW5lIiwic2hpcHBpbmdUaW1lSW5jbHVkZWQiLCJkZWFkbGluZUxhYmVsIiwiX3JlZjciLCJfdmFyaWF0aW9uJHZhcmlhdGlvbkYiLCJfcmVmNyRzZWxlY3RhYmxlT3B0aW8iLCJfcmVmNyRmaWVsZE9wdGlvbnMiLCJmaXJzdE9wdGlvbiIsImlzQ29sb3VyU2VsZWN0IiwiQ09MT1VSX1NFTEVDVCIsImlzSW1hZ2VTZWxlY3QiLCJJTUFHRV9TRUxFQ1QiLCJyZW5kZXJPcHRpb25MYWJlbCIsIl9vJHZhbHVlMiIsImkiLCJfbyRvcHRpb25JZCIsIlZhcmlhdGlvbnNJbmZvIiwiX3JlZjgiLCJxdWFudGl0eSIsIl9yZWY4JHZhcmlhdGlvbnMiLCJ2YXJpYXRpb25zIiwidiIsIlZhcmlhdGlvbkdyb3VwSW5mbyIsIl9yZWY5IiwiZ3JvdXAiLCJpc1Jlc2VsbCIsInZpc2libGVWYXJpYXRpb25zIiwiZmlsdGVyIiwiX3YkdmFyaWF0aW9uRmllbGQiLCJjb3N0TGFiZWwiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsImpvYiIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImpvYkxldmVsVmFyaWF0aW9ucyIsIl92JHZhcmlhdGlvbkZpZWxkMiIsInRvdGFsUXVhbnRpdHkiLCJyZWR1Y2UiLCJzdW0iLCJnIiwiYW1vdW50IiwibGFiZWxFeHRyYSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0pvYkluZm9Db250ZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmFGaWxlUGRmIH0gZnJvbSAncmVhY3QtaWNvbnMvZmEnO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3ksIGN1cnJlbmN5VG90YWxDb3N0U2hvd0luY1RheCB9IGZyb20gJy4vY3VycmVuY3knO1xuaW1wb3J0IHtcbiAgaXNJbnN0cnVjdGlvbnNUeXBlLFxuICBpc1Byb2R1Y3RTdXBwbGllck1PRCxcbiAgaXNTZWxlY3RhYmxlLFxuICBGaWVsZFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHVzZU1lcmNoaUNoZWNrYm91dENvbnRleHQgfSBmcm9tICcuL01lcmNoaUNoZWNrb3V0UHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgU3VtbWFyeUFtb3VudFJvdyxcbiAgU3VtbWFyeUZpZWxkUm93LFxufSBmcm9tICcuL0NoZWNrb3V0U3VtbWFyeUZpZWxkcyc7XG5cbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcbiAgY29uc3QgY3VycmVuY3kgPSBwcm9kdWN0LmN1cnJlbmN5ID8gcHJvZHVjdC5jdXJyZW5jeSA6ICdBVUQnO1xuICByZXR1cm4gZm9ybWF0Q3VycmVuY3koY29zdCwge1xuICAgIGN1cnJlbmN5LFxuICAgIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1BkZihmaWxlOiBhbnkpIHtcbiAgY29uc3QgbWltZXR5cGUgPSBmaWxlPy5taW1ldHlwZSB8fCAnJztcbiAgcmV0dXJuIG1pbWV0eXBlID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBtaW1ldHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtcGRmJztcbn1cblxuZnVuY3Rpb24gaXNJbWFnZUZpbGUoZmlsZTogYW55KSB7XG4gIGNvbnN0IG1pbWV0eXBlID0gZmlsZT8ubWltZXR5cGUgfHwgJyc7XG4gIGlmIChtaW1ldHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IG5hbWUgPSAoZmlsZT8ubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIC9cXC4oanBlP2d8cG5nfGdpZnx3ZWJwfHN2Z3xibXApJC8udGVzdChuYW1lKTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uSW1hZ2VVcmwob3B0aW9uOiBhbnkpIHtcbiAgcmV0dXJuIG9wdGlvbj8ubGlua2VkRmlsZT8udmlld1VybCB8fCAnJztcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbjogYW55LCBvcHRpb25zOiBhbnlbXSA9IFtdKSB7XG4gIHJldHVybiBvcHRpb25zLmZpbmQoKG8pID0+IFN0cmluZyhvLm9wdGlvbklkKSA9PT0gU3RyaW5nKG9wdGlvbj8ub3B0aW9uSWQpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU9wdGlvbkNvbG91cihcbiAgb3B0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCBkaXJlY3QgPSBvcHRpb24/LmNvbG91cj8udHJpbSgpO1xuICBpZiAoZGlyZWN0KSByZXR1cm4gZGlyZWN0O1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKT8uY29sb3VyPy50cmltKCk7XG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xuICByZXR1cm4gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgZmllbGRPcHRpb25zKT8uY29sb3VyPy50cmltKCkgfHwgJyc7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPcHRpb25JbWFnZVVybChcbiAgb3B0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCBkaXJlY3QgPSBvcHRpb25JbWFnZVVybChvcHRpb24pO1xuICBpZiAoZGlyZWN0KSByZXR1cm4gZGlyZWN0O1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IG9wdGlvbkltYWdlVXJsKFxuICAgIGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKVxuICApO1xuICBpZiAoZnJvbVNlbGVjdGFibGUpIHJldHVybiBmcm9tU2VsZWN0YWJsZTtcbiAgcmV0dXJuIG9wdGlvbkltYWdlVXJsKGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIGZpZWxkT3B0aW9ucykpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRPcHRpb25Db3N0KFxuICBwcm9kdWN0OiBhbnksXG4gIG9wdGlvbjogYW55LFxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW5cbikge1xuICBpZiAoIW9wdGlvbj8udG90YWxDb3N0IHx8IHNlbGxlclByb2R1Y3RFZGl0YWJsZSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIG9wdGlvbi50b3RhbENvc3QpfWA7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkZpbGVQcmV2aWV3KHsgZmlsZSB9OiB7IGZpbGU6IGFueSB9KSB7XG4gIGNvbnN0IGZpbGVVcmwgPSBmaWxlPy52aWV3VXJsIHx8IGZpbGU/LmRvd25sb2FkVXJsIHx8ICcnO1xuICBjb25zdCBmaWxlTmFtZSA9IGZpbGU/Lm5hbWUgfHwgJ0ZpbGUnO1xuXG4gIGlmIChpc1BkZihmaWxlKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8YVxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtbGluaydcbiAgICAgICAgaHJlZj17ZmlsZVVybH1cbiAgICAgICAgdGFyZ2V0PSdfYmxhbmsnXG4gICAgICAgIHJlbD0nbm9vcGVuZXIgbm9yZWZlcnJlcidcbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxuICAgICAgPlxuICAgICAgICA8RmFGaWxlUGRmIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgIDxzcGFuPntmaWxlTmFtZX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc0ltYWdlRmlsZShmaWxlKSAmJiBmaWxlVXJsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudC1pbWcnXG4gICAgICAgIHNyYz17ZmlsZVVybH1cbiAgICAgICAgYWx0PXtmaWxlTmFtZX1cbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgaWYgKGZpbGVVcmwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLWxpbmsnXG4gICAgICAgIGhyZWY9e2ZpbGVVcmx9XG4gICAgICAgIHRhcmdldD0nX2JsYW5rJ1xuICAgICAgICByZWw9J25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cbiAgICAgID5cbiAgICAgICAge2ZpbGVOYW1lfVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj47XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm9Cb2R5KHsgY29zdCwgbmFtZSwgcHJvZHVjdCwgdmFsdWUsIGZpbGVzLCB0eXBlIH06IGFueSkge1xuICBjb25zdCBpc0NvbG91clBpY2tlciA9IHR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSO1xuICBjb25zdCBpc0ZpbGVVcGxvYWQgPSB0eXBlID09PSBGaWVsZFR5cGUuRklMRV9VUExPQUQ7XG4gIGNvbnN0IGhhc0ZpbGVzID0gQm9vbGVhbihmaWxlcz8ubGVuZ3RoKTtcbiAgY29uc3QgZGlzcGxheVZhbHVlID0gaXNDb2xvdXJQaWNrZXIgfHwgKGlzRmlsZVVwbG9hZCAmJiBoYXNGaWxlcykgPyBudWxsIDogdmFsdWU7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXJvdyc+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPlxuICAgICAgICB7aGFzRmlsZXMgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLXByZXZpZXdzJz5cbiAgICAgICAgICAgIHtmaWxlcy5tYXAoKGZpbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKFxuICAgICAgICAgICAgICA8VmFyaWF0aW9uRmlsZVByZXZpZXdcbiAgICAgICAgICAgICAgICBrZXk9e2ZpbGUudmlld1VybCB8fCBmaWxlLmlkIHx8IGAke25hbWV9LWZpbGUtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgIGZpbGU9e2ZpbGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2lzQ29sb3VyUGlja2VyICYmIHZhbHVlICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLXZhbHVlJz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogdmFsdWUgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+e3ZhbHVlfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Rpc3BsYXlWYWx1ZSAmJiBkaXNwbGF5VmFsdWV9XG4gICAgICAgIHtjb3N0ID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBjb3N0KX1gIDogJyd9XG4gICAgICAgIHshaGFzRmlsZXMgJiYgIXZhbHVlICYmICctJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25JbmZvKHsgcHJvZHVjdCwgdmFyaWF0aW9uIH06IGFueSkge1xuICBjb25zdCB7IHNlbGVjdGVkT3B0aW9ucywgdmFyaWF0aW9uRmllbGQsIHZhcmlhdGlvbkZpbGVzLCBzZWxlY3RhYmxlT3B0aW9ucyB9ID1cbiAgICB2YXJpYXRpb247XG4gIGNvbnN0IHsgZmllbGRUeXBlLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUsIG9wdGlvbnM6IGZpZWxkT3B0aW9ucyA9IFtdIH0gPVxuICAgIHZhcmlhdGlvbkZpZWxkO1xuICBjb25zdCBpc1ZhcmlhdGlvblNlbGVjdGFibGUgPSBpc1NlbGVjdGFibGUoZmllbGRUeXBlKTtcbiAgY29uc3QgaXNUdXJuYXJvdW5kVGltZSA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlRVUk5BUk9VTkRfVElNRTtcbiAgY29uc3Qgb3B0aW9ucyA9IHNlbGVjdGVkT3B0aW9ucztcbiAgY29uc3QgdXNlU2VsZWN0YWJsZURpc3BsYXkgPVxuICAgIGlzVmFyaWF0aW9uU2VsZWN0YWJsZSAmJlxuICAgIChCb29sZWFuKG9wdGlvbnM/Lmxlbmd0aCkgfHwgKGlzVHVybmFyb3VuZFRpbWUgJiYgdmFyaWF0aW9uLnZhbHVlKSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbic+XG4gICAgICB7dXNlU2VsZWN0YWJsZURpc3BsYXkgPyAoXG4gICAgICAgIDxWYXJpYXRpb25PcHRpb25zSW5mb0JvZHlcbiAgICAgICAgICBuYW1lPXt2YXJpYXRpb25GaWVsZC5uYW1lfVxuICAgICAgICAgIGZpZWxkVHlwZT17ZmllbGRUeXBlfVxuICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICBmaWxlcz17dmFyaWF0aW9uRmlsZXN9XG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgIHZhcmlhdGlvbj17dmFyaWF0aW9ufVxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cbiAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGU9e3NlbGxlclByb2R1Y3RFZGl0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxuICAgICAgICAgIG5hbWU9e3ZhcmlhdGlvbkZpZWxkLm5hbWV9XG4gICAgICAgICAgdHlwZT17dmFyaWF0aW9uRmllbGQuZmllbGRUeXBlfVxuICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgY29zdD17c2VsbGVyUHJvZHVjdEVkaXRhYmxlID8gMCA6IHZhcmlhdGlvbi5jb3N0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQ29sb3VyU2VsZWN0T3B0aW9uKHtcbiAgb3B0aW9uLFxuICBzZWxlY3RhYmxlT3B0aW9ucyxcbiAgZmllbGRPcHRpb25zLFxufToge1xuICBvcHRpb246IGFueTtcbiAgc2VsZWN0YWJsZU9wdGlvbnM/OiBhbnlbXTtcbiAgZmllbGRPcHRpb25zPzogYW55W107XG59KSB7XG4gIGNvbnN0IGxhYmVsID0gb3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICcnO1xuICBjb25zdCBoZXggPSByZXNvbHZlT3B0aW9uQ29sb3VyKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9ucyk7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1jb2xvdXItb3B0aW9uJz5cbiAgICAgIHtoZXggJiYgKFxuICAgICAgICA8c3BhblxuICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogaGV4IH19XG4gICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPHNwYW4+e2xhYmVsIHx8IGhleCB8fCAn4oCTJ308L3NwYW4+XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5mdW5jdGlvbiBJbWFnZVNlbGVjdE9wdGlvbih7XG4gIG9wdGlvbixcbiAgc2VsZWN0YWJsZU9wdGlvbnMsXG4gIGZpZWxkT3B0aW9ucyxcbiAgcHJvZHVjdCxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxufToge1xuICBvcHRpb246IGFueTtcbiAgc2VsZWN0YWJsZU9wdGlvbnM/OiBhbnlbXTtcbiAgZmllbGRPcHRpb25zPzogYW55W107XG4gIHByb2R1Y3Q6IGFueTtcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlOiBib29sZWFuO1xufSkge1xuICBjb25zdCBpbWFnZVVybCA9IHJlc29sdmVPcHRpb25JbWFnZVVybChvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zLCBmaWVsZE9wdGlvbnMpO1xuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgb3B0aW9uLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1pbWFnZS1zZWxlY3Qtb3B0aW9uJz5cbiAgICAgIHtpbWFnZVVybCA/IChcbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzTmFtZT0nbW9kYWwtbWVyY2hpLWNoZWNrb3V0LWpvYi1pbmZvLWNvbnRlbnQtaW1nJ1xuICAgICAgICAgIHNyYz17aW1hZ2VVcmx9XG4gICAgICAgICAgYWx0PXtsYWJlbCB8fCAnU2VsZWN0ZWQgb3B0aW9uJ31cbiAgICAgICAgICB0aXRsZT17bGFiZWwgfHwgdW5kZWZpbmVkfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8c3Bhbj57bGFiZWwgfHwgJ+KAkyd9e2Nvc3QgfHwgJyd9PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3B0aW9uSWQob3B0aW9uOiBhbnkpIHtcbiAgcmV0dXJuIG9wdGlvbj8ub3B0aW9uSWQgPz8gb3B0aW9uPy5pZDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVR1cm5hcm91bmRTZWxlY3RlZE9wdGlvbihcbiAgdmFyaWF0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCB7IHNlbGVjdGVkT3B0aW9ucyA9IFtdLCB2YWx1ZSB9ID0gdmFyaWF0aW9uO1xuICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zWzBdO1xuICB9XG4gIGNvbnN0IHZhbHVlU3RyID0gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycgPyBTdHJpbmcodmFsdWUpLnRyaW0oKSA6ICcnO1xuICBpZiAoIXZhbHVlU3RyKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBwb29scyA9IFtzZWxlY3RhYmxlT3B0aW9ucywgZmllbGRPcHRpb25zXTtcbiAgZm9yIChjb25zdCBwb29sIG9mIHBvb2xzKSB7XG4gICAgY29uc3QgYnlJZCA9IHBvb2wuZmluZChcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhnZXRPcHRpb25JZChvKSkgPT09IHZhbHVlU3RyXG4gICAgKTtcbiAgICBpZiAoYnlJZCkgcmV0dXJuIGJ5SWQ7XG4gICAgY29uc3QgYnlWYWx1ZSA9IHBvb2wuZmluZChcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhvLnZhbHVlID8/ICcnKSA9PT0gdmFsdWVTdHJcbiAgICApO1xuICAgIGlmIChieVZhbHVlKSByZXR1cm4gYnlWYWx1ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VHVybmFyb3VuZERlYWRsaW5lKHVzZXJEZWFkbGluZTogYW55KSB7XG4gIGlmICghdXNlckRlYWRsaW5lKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih1c2VyRGVhZGxpbmUpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShzZWNvbmRzKSB8fCBzZWNvbmRzIDw9IDApIHJldHVybiBudWxsO1xuICByZXR1cm4gbmV3IERhdGUoc2Vjb25kcyAqIDEwMDApLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQVUnLCB7XG4gICAgd2Vla2RheTogJ2xvbmcnLFxuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ2xvbmcnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gVHVybmFyb3VuZE9wdGlvbkxhYmVsKHtcbiAgb3B0aW9uLFxuICB2YXJpYXRpb25GaWVsZCxcbiAgcHJvZHVjdCxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxufToge1xuICBvcHRpb246IGFueTtcbiAgdmFyaWF0aW9uRmllbGQ6IGFueTtcbiAgcHJvZHVjdDogYW55O1xuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGRheXMgPSBwYXJzZUludChTdHJpbmcob3B0aW9uPy52YWx1ZSA/PyAnJyksIDEwKSB8fCAwO1xuICBjb25zdCBkZWFkbGluZSA9IGZvcm1hdFR1cm5hcm91bmREZWFkbGluZShvcHRpb24/LnVzZXJEZWFkbGluZSk7XG4gIGNvbnN0IHNoaXBwaW5nVGltZUluY2x1ZGVkID0gQm9vbGVhbih2YXJpYXRpb25GaWVsZD8uc2hpcHBpbmdUaW1lSW5jbHVkZWQpO1xuICBjb25zdCBkZWFkbGluZUxhYmVsID0gc2hpcHBpbmdUaW1lSW5jbHVkZWQgPyAnRGVsaXZlcnkgYnknIDogJ1Byb2R1Y2VkIGJ5JztcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgb3B0aW9uLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10dXJuYXJvdW5kLXZhbHVlJz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kYXlzJz5cbiAgICAgICAge2RheXMgPiAwXG4gICAgICAgICAgPyBgJHtkYXlzfSBidXNpbmVzcyBkYXkke2RheXMgIT09IDEgPyAncycgOiAnJ31gXG4gICAgICAgICAgOiAob3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICfigJMnKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtkZWFkbGluZSAmJiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kZWFkbGluZSc+XG4gICAgICAgICAge2RlYWRsaW5lTGFiZWx9IHtkZWFkbGluZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICAgIHtjb3N0IHx8ICcnfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWF0aW9uT3B0aW9uc0luZm9Cb2R5KHtcbiAgbmFtZSxcbiAgc2VsZWN0ZWRPcHRpb25zLFxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXG4gIHByb2R1Y3QsXG4gIGZpZWxkVHlwZSxcbiAgdmFyaWF0aW9uLFxuICBzZWxlY3RhYmxlT3B0aW9ucyA9IFtdLFxuICBmaWVsZE9wdGlvbnMgPSBbXSxcbn06IGFueSkge1xuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xuICBjb25zdCBmaXJzdE9wdGlvbiA9IGlzVHVybmFyb3VuZFRpbWVcbiAgICA/IHJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24oXG4gICAgICAgIHsgc2VsZWN0ZWRPcHRpb25zLCB2YWx1ZTogdmFyaWF0aW9uPy52YWx1ZSB9LFxuICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucyxcbiAgICAgICAgZmllbGRPcHRpb25zXG4gICAgICApXG4gICAgOiBzZWxlY3RlZE9wdGlvbnNbMF07XG4gIGNvbnN0IGlzQ29sb3VyU2VsZWN0ID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX1NFTEVDVDtcbiAgY29uc3QgaXNJbWFnZVNlbGVjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLklNQUdFX1NFTEVDVDtcbiAgY29uc3QgdmFyaWF0aW9uRmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkID8/IHt9O1xuXG4gIGZ1bmN0aW9uIHJlbmRlck9wdGlvbkxhYmVsKG86IGFueSkge1xuICAgIGlmIChpc1R1cm5hcm91bmRUaW1lKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VHVybmFyb3VuZE9wdGlvbkxhYmVsXG4gICAgICAgICAgb3B0aW9uPXtvfVxuICAgICAgICAgIHZhcmlhdGlvbkZpZWxkPXt2YXJpYXRpb25GaWVsZH1cbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzQ29sb3VyU2VsZWN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sb3VyU2VsZWN0T3B0aW9uXG4gICAgICAgICAgb3B0aW9uPXtvfVxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0ltYWdlU2VsZWN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SW1hZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgICBvcHRpb249e299XG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge28udmFsdWU/LnRyaW0oKSB8fCAn4oCTJ31cbiAgICAgICAge2Zvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgbywgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKSB8fCAnJ31cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDEgJiYgIWlzVHVybmFyb3VuZFRpbWUgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUgbGlzdC11bnN0eWxlZCBtLTAnPlxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkID8/IGl9YH0+XG4gICAgICAgICAgICAgICAge3JlbmRlck9wdGlvbkxhYmVsKG8pfVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogZmlyc3RPcHRpb24gPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz5cbiAgICAgICAgICAgIHtyZW5kZXJPcHRpb25MYWJlbChmaXJzdE9wdGlvbil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPi08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25zSW5mbyh7IHByb2R1Y3QsIHF1YW50aXR5LCB2YXJpYXRpb25zID0gW10gfTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbnMnPlxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXG4gICAgICAgICAgPFZhcmlhdGlvbkluZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IG51bGxcbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkdyb3VwSW5mbyh7IGdyb3VwLCBpbmRleCwgcHJvZHVjdCB9OiBhbnkpIHtcbiAgY29uc3QgaXNSZXNlbGwgPSBpc1Byb2R1Y3RTdXBwbGllck1PRChwcm9kdWN0KTtcbiAgY29uc3QgeyBxdWFudGl0eSwgdmFyaWF0aW9ucyB9ID0gZ3JvdXA7XG4gIGNvbnN0IHZpc2libGVWYXJpYXRpb25zID0gKHZhcmlhdGlvbnMgPz8gW10pLmZpbHRlcihcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXG4gICk7XG4gIGNvbnN0IGNvc3RMYWJlbCA9IGlzUmVzZWxsID8gJ1VuaXQgQ29zdCcgOiAnR3JvdXAgQ29zdCc7XG5cbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWdyb3VwJz5cbiAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxuICAgICAgICBHcm91cCB7aW5kZXggKyAxfSBEZXRhaWxcbiAgICAgIDwvc3Ryb25nPlxuICAgICAgeyFpc1Jlc2VsbCAmJiBxdWFudGl0eSA+IDAgJiYgKFxuICAgICAgICA8U3VtbWFyeUZpZWxkUm93IGxhYmVsPSdRdWFudGl0eScgdmFsdWU9e3F1YW50aXR5fSAvPlxuICAgICAgKX1cbiAgICAgIHt2aXNpYmxlVmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPFZhcmlhdGlvbnNJbmZvXG4gICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxuICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZ3JvdXAtY29zdCc+XG4gICAgICAgIHtjb3N0TGFiZWx9OiB7Zm9ybWF0Q29zdChwcm9kdWN0LCBncm91cC5ncm91cENvc3QpfVxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBKb2JJbmZvQ29udGVudCgpIHtcbiAgY29uc3QgeyBqb2IgfSA9IHVzZU1lcmNoaUNoZWNrYm91dENvbnRleHQoKTtcbiAgY29uc3QgeyBwcm9kdWN0LCBxdWFudGl0eSA9IDAsIHZhcmlhdGlvbnMgPSBbXSwgdmFyaWF0aW9uc0dyb3VwcyA9IFtdIH0gPSBqb2I7XG4gIGNvbnN0IHsgbmVlZHNTaGlwcGluZyB9ID0gcHJvZHVjdDtcbiAgY29uc3QgdG90YWxDb3N0ID0gY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4KGpvYik7XG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XG4gIGNvbnN0IGhhc0dyb3VwcyA9IHZhcmlhdGlvbnNHcm91cHMubGVuZ3RoID4gMDtcbiAgY29uc3Qgam9iTGV2ZWxWYXJpYXRpb25zID0gKHZhcmlhdGlvbnMgPz8gW10pLmZpbHRlcihcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXG4gICk7XG4gIGNvbnN0IHRvdGFsUXVhbnRpdHkgPSBoYXNHcm91cHNcbiAgICA/IHZhcmlhdGlvbnNHcm91cHMucmVkdWNlKFxuICAgICAgICAoc3VtOiBudW1iZXIsIGc6IGFueSkgPT4gc3VtICsgKE51bWJlcihnLnF1YW50aXR5KSB8fCAwKSxcbiAgICAgICAgMFxuICAgICAgKVxuICAgIDogTnVtYmVyKHF1YW50aXR5KSB8fCAwO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50IG1lcmNoaS1jaGVja291dC1zdW1tYXJ5Jz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zZWN0aW9uLXRpdGxlJz57cHJvZHVjdC5uYW1lfTwvZGl2PlxuICAgICAge2hhc0dyb3VwcyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1ncm91cHMnPlxuICAgICAgICAgIHt2YXJpYXRpb25zR3JvdXBzLm1hcCgoZzogYW55LCBpOiBudW1iZXIpID0+XG4gICAgICAgICAgICBnLnF1YW50aXR5ID8gKFxuICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXG4gICAgICAgICAgICAgICAgZ3JvdXA9e2d9XG4gICAgICAgICAgICAgICAga2V5PXtgJHtpfS1qb2ItaW5mby1jb250ZW50YH1cbiAgICAgICAgICAgICAgICBpbmRleD17aX1cbiAgICAgICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7IWhhc0dyb3VwcyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cbiAgICAgICAgICB7am9iTGV2ZWxWYXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LW9yZGVyLWRldGFpbC10aXRsZSc+XG4gICAgICAgICAgICAgICAgT3JkZXIgRGV0YWlsXG4gICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cbiAgICAgICAgICAgICAgICBxdWFudGl0eT17cXVhbnRpdHl9XG4gICAgICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2hhc0dyb3VwcyAmJiBqb2JMZXZlbFZhcmlhdGlvbnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktb3JkZXItZGV0YWlsLXRpdGxlJz5cbiAgICAgICAgICAgIE9yZGVyIERldGFpbFxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDxWYXJpYXRpb25zSW5mb1xuICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxuICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgeyFpc1Jlc2VsbCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbCc+XG4gICAgICAgICAge3RvdGFsUXVhbnRpdHkgPiAwICYmIChcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdG90YWwtcXVhbnRpdHknXG4gICAgICAgICAgICAgIGxhYmVsPSdUb3RhbCBRdWFudGl0eSdcbiAgICAgICAgICAgICAgYW1vdW50PXt0b3RhbFF1YW50aXR5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XG4gICAgICAgICAgICBsYWJlbD0nVG90YWwgT3JkZXIgQ29zdCdcbiAgICAgICAgICAgIGxhYmVsRXh0cmE9e1xuICAgICAgICAgICAgICBuZWVkc1NoaXBwaW5nID8gKFxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXRvdGFsLW5vdGUnPiBleCBTaGlwbWVudDwvc21hbGw+XG4gICAgICAgICAgICAgICkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFtb3VudD17dG90YWxDb3N0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIHshIShpc1Jlc2VsbCAmJiAhaGFzR3JvdXBzKSAmJiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAnPlxuICAgICAgICAgICAge2lzUmVzZWxsID8gJ0FwcHJveGltYXRlIFVuaXQnIDogJ1RvdGFsJ30gQ29zdFxuICAgICAgICAgIDwvc3Ryb25nPnsnICd9XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZC1ibG9jayc+e3RvdGFsQ29zdH08L3N0cm9uZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUNaLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FB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