merchi_checkout 1.2.6 → 1.2.7
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.
- package/README.md +196 -196
- package/lib/actions/customer.js +1 -1
- package/lib/actions/domain.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/helpers.js +1 -1
- package/lib/actions/invoice.js +1 -1
- package/lib/actions/shipping.js +39 -0
- package/lib/area.js +298 -0
- package/lib/checkoutSession.js +1 -1
- package/lib/components/Alerts.js +1 -1
- package/lib/components/CancelOrderConfirmModal.js +1 -1
- package/lib/components/CheckoutSummaryFields.js +1 -1
- package/lib/components/Collapse.js +1 -1
- package/lib/components/DiscountCode.js +254 -0
- package/lib/components/DiscountInputGroup.js +1 -1
- package/lib/components/DraftImageUploaded.js +1 -1
- package/lib/components/FooterButtons.js +1 -1
- package/lib/components/InvoiceInfo.js +1 -1
- package/lib/components/JobInfoContent.js +240 -78
- package/lib/components/MerchiCheckout.js +1 -1
- package/lib/components/MerchiCheckoutProvider.js +1 -1
- package/lib/components/MerchiCheckoutTabs.js +1 -1
- package/lib/components/TabPane.js +1 -1
- package/lib/components/TabPaneAddress.js +1 -1
- package/lib/components/TabPaneConfirm.js +1 -1
- package/lib/components/TabPaneContainer.js +1 -1
- package/lib/components/TabPaneCustomer.js +1 -1
- package/lib/components/TabPaneDrafting.js +117 -0
- package/lib/components/TabPaneNewDomain.js +1 -1
- package/lib/components/TabPanePayment.js +1 -1
- package/lib/components/TabPaneSubmitted.js +1 -1
- package/lib/components/TitleStep.js +1 -1
- package/lib/components/buttons/ButtonInvoiceDownload.js +1 -1
- package/lib/components/buttons/ButtonNext.js +1 -1
- package/lib/components/buttons/ButtonPrevious.js +1 -1
- package/lib/components/buttons/index.js +1 -1
- package/lib/components/currency.js +8 -8
- package/lib/components/forms/CheckboxBillingAddressSameAsShippingAddress.js +1 -1
- package/lib/components/forms/FormAddresses.js +1 -1
- package/lib/components/forms/FormCustomerNew.js +1 -1
- package/lib/components/forms/FormCustomerReturning.js +1 -1
- package/lib/components/forms/FormDomainNew.js +1 -1
- package/lib/components/forms/InputAcceptUserTermsAndConditions.js +1 -1
- package/lib/components/forms/InputCheckStoreName.js +1 -1
- package/lib/components/forms/InputError.js +1 -1
- package/lib/components/forms/InputFileUpload.js +1 -1
- package/lib/components/forms/InputSelect.js +1 -1
- package/lib/components/forms/InputText.js +1 -1
- package/lib/components/forms/InputsAddress.js +1 -1
- package/lib/components/forms/index.js +1 -1
- package/lib/components/lists/ListShipmentQuoteOptions.js +1 -1
- package/lib/components/lists/index.js +1 -1
- package/lib/components/merchi_image_editor/EditorImages.js +73 -0
- package/lib/components/merchi_image_editor/ImageEditor.js +253 -0
- package/lib/components/merchi_image_editor/MerchiImageEditor.js +40 -0
- package/lib/components/merchi_image_editor/actions/file.js +132 -0
- package/lib/components/merchi_image_editor/utils.js +4 -0
- package/lib/index.js +1 -1
- package/lib/merchi_source.js +1 -1
- package/lib/styles/globals.css +8 -2
- package/lib/styles/globals.css.map +1 -1
- package/lib/styles/globals.scss +2663 -2656
- package/lib/tabs_utils.js +1 -1
- package/lib/types.js +1 -1
- package/lib/utils.js +10 -8
- package/package.json +91 -91
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
7
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
8
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
9
|
+
import React, { useState } from 'react';
|
|
10
|
+
import { FaFilePdf, FaRegImage } from 'react-icons/fa';
|
|
5
11
|
import { formatCurrency, currencyTotalCostShowIncTax } from './currency';
|
|
6
12
|
import { isInstructionsType, isProductSupplierMOD, isSelectable, FieldType } from '../utils';
|
|
13
|
+
import { estimateAreaCosts, formatAreaSummary, localePrefersImperial } from '../area';
|
|
7
14
|
import { useMerchiCheckboutContext } from './MerchiCheckoutProvider';
|
|
8
15
|
import { SummaryAmountRow, SummaryFieldRow } from './CheckoutSummaryFields';
|
|
9
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -16,6 +23,37 @@ function formatCost(product, cost) {
|
|
|
16
23
|
showCodeIfNoSymbol: false
|
|
17
24
|
});
|
|
18
25
|
}
|
|
26
|
+
function parseCostAmount(value) {
|
|
27
|
+
var amount = parseFloat(value);
|
|
28
|
+
return Number.isFinite(amount) && amount > 0 ? amount : 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Match product-form wording: "+ $X once off" / "+ $Y per unit". */
|
|
32
|
+
function formatOnceOffUnitCostDetail(product, onceOffCost, unitCost) {
|
|
33
|
+
var currency = (product === null || product === void 0 ? void 0 : product.currency) || 'AUD';
|
|
34
|
+
var parts = [];
|
|
35
|
+
var onceOff = parseCostAmount(onceOffCost);
|
|
36
|
+
var unit = parseCostAmount(unitCost);
|
|
37
|
+
if (onceOff) {
|
|
38
|
+
parts.push(" + ".concat(formatCurrency(onceOff, {
|
|
39
|
+
currency: currency,
|
|
40
|
+
showCodeIfNoSymbol: false
|
|
41
|
+
}), " once off"));
|
|
42
|
+
}
|
|
43
|
+
if (unit) {
|
|
44
|
+
parts.push(" + ".concat(formatCurrency(unit, {
|
|
45
|
+
currency: currency,
|
|
46
|
+
showCodeIfNoSymbol: false
|
|
47
|
+
}), " per unit"));
|
|
48
|
+
}
|
|
49
|
+
return parts.join('');
|
|
50
|
+
}
|
|
51
|
+
function optionOnceOff(option) {
|
|
52
|
+
return parseCostAmount(option === null || option === void 0 ? void 0 : option.onceOffCost) || parseCostAmount(option === null || option === void 0 ? void 0 : option.variationCost) || 0;
|
|
53
|
+
}
|
|
54
|
+
function optionUnit(option) {
|
|
55
|
+
return parseCostAmount(option === null || option === void 0 ? void 0 : option.unitCost) || parseCostAmount(option === null || option === void 0 ? void 0 : option.variationUnitCost) || 0;
|
|
56
|
+
}
|
|
19
57
|
|
|
20
58
|
/** Product setup fee shown next to unit price, matching product-form wording. */
|
|
21
59
|
function productSetupSuffix(product) {
|
|
@@ -37,9 +75,24 @@ function isImageFile(file) {
|
|
|
37
75
|
var name = ((file === null || file === void 0 ? void 0 : file.name) || '').toLowerCase();
|
|
38
76
|
return /\.(jpe?g|png|gif|webp|svg|bmp)$/.test(name);
|
|
39
77
|
}
|
|
40
|
-
function
|
|
41
|
-
var
|
|
42
|
-
|
|
78
|
+
function absolutizeFileUrl(raw, urlApi) {
|
|
79
|
+
var url = (raw || '').trim();
|
|
80
|
+
if (!url || url === 'undefined' || url === 'null') return '';
|
|
81
|
+
if (/^(https?:|blob:|data:)/i.test(url)) return url;
|
|
82
|
+
if (!urlApi) return url;
|
|
83
|
+
try {
|
|
84
|
+
var base = new URL(urlApi);
|
|
85
|
+
return new URL(url, "".concat(base.origin, "/")).href;
|
|
86
|
+
} catch (_unused) {
|
|
87
|
+
return url;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function resolveFileUrl(file, urlApi) {
|
|
91
|
+
return absolutizeFileUrl((file === null || file === void 0 ? void 0 : file.viewUrl) || (file === null || file === void 0 ? void 0 : file.downloadUrl) || '', urlApi);
|
|
92
|
+
}
|
|
93
|
+
function optionImageUrl(option, urlApi) {
|
|
94
|
+
var _option$linkedFile, _option$linkedFile2;
|
|
95
|
+
return absolutizeFileUrl((option === null || option === void 0 || (_option$linkedFile = option.linkedFile) === null || _option$linkedFile === void 0 ? void 0 : _option$linkedFile.viewUrl) || (option === null || option === void 0 || (_option$linkedFile2 = option.linkedFile) === null || _option$linkedFile2 === void 0 ? void 0 : _option$linkedFile2.downloadUrl) || '', urlApi);
|
|
43
96
|
}
|
|
44
97
|
function findMatchingOption(option) {
|
|
45
98
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
@@ -60,24 +113,71 @@ function resolveOptionColour(option) {
|
|
|
60
113
|
function resolveOptionImageUrl(option) {
|
|
61
114
|
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
62
115
|
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
63
|
-
var
|
|
116
|
+
var urlApi = arguments.length > 3 ? arguments[3] : undefined;
|
|
117
|
+
var direct = optionImageUrl(option, urlApi);
|
|
64
118
|
if (direct) return direct;
|
|
65
|
-
var fromSelectable = optionImageUrl(findMatchingOption(option, selectableOptions));
|
|
119
|
+
var fromSelectable = optionImageUrl(findMatchingOption(option, selectableOptions), urlApi);
|
|
66
120
|
if (fromSelectable) return fromSelectable;
|
|
67
|
-
return optionImageUrl(findMatchingOption(option, fieldOptions));
|
|
121
|
+
return optionImageUrl(findMatchingOption(option, fieldOptions), urlApi);
|
|
68
122
|
}
|
|
69
123
|
function formatOptionCost(product, option, sellerProductEditable) {
|
|
70
|
-
if (
|
|
71
|
-
|
|
124
|
+
if (sellerProductEditable || !option) return null;
|
|
125
|
+
var onceOffUnit = formatOnceOffUnitCostDetail(product, optionOnceOff(option), optionUnit(option));
|
|
126
|
+
if (onceOffUnit) return onceOffUnit;
|
|
127
|
+
if (option.totalCost) {
|
|
128
|
+
return " + ".concat(formatCost(product, option.totalCost));
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
72
131
|
}
|
|
73
|
-
function
|
|
74
|
-
var
|
|
75
|
-
var
|
|
132
|
+
function variationCostDetail(product, variation, sellerProductEditable) {
|
|
133
|
+
var _variation$onceOffCos, _variation$unitCost;
|
|
134
|
+
var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
135
|
+
_ref$includeSelectedO = _ref.includeSelectedOptionCosts,
|
|
136
|
+
includeSelectedOptionCosts = _ref$includeSelectedO === void 0 ? true : _ref$includeSelectedO,
|
|
137
|
+
_ref$fieldCostsOnly = _ref.fieldCostsOnly,
|
|
138
|
+
fieldCostsOnly = _ref$fieldCostsOnly === void 0 ? false : _ref$fieldCostsOnly;
|
|
139
|
+
if (sellerProductEditable) return '';
|
|
140
|
+
var field = (variation === null || variation === void 0 ? void 0 : variation.variationField) || {};
|
|
141
|
+
var fieldType = Number(field.fieldType);
|
|
142
|
+
if (fieldType === FieldType.AREA) {
|
|
143
|
+
var areaCosts = estimateAreaCosts(field, variation === null || variation === void 0 ? void 0 : variation.value);
|
|
144
|
+
if (areaCosts) {
|
|
145
|
+
return formatOnceOffUnitCostDetail(product, areaCosts.onceOffCost, areaCosts.unitCost);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (fieldCostsOnly) {
|
|
149
|
+
return formatOnceOffUnitCostDetail(product, field.variationCost, field.variationUnitCost);
|
|
150
|
+
}
|
|
151
|
+
var selected = Array.isArray(variation === null || variation === void 0 ? void 0 : variation.selectedOptions) ? variation.selectedOptions : [];
|
|
152
|
+
if (includeSelectedOptionCosts && selected.length) {
|
|
153
|
+
var fieldOnce = fieldType === FieldType.COLOUR_EXTRACT ? parseCostAmount(field.variationCost) : 0;
|
|
154
|
+
var fieldUnit = fieldType === FieldType.COLOUR_EXTRACT ? parseCostAmount(field.variationUnitCost) : 0;
|
|
155
|
+
return formatOnceOffUnitCostDetail(product, fieldOnce + selected.reduce(function (sum, option) {
|
|
156
|
+
return sum + optionOnceOff(option);
|
|
157
|
+
}, 0), fieldUnit + selected.reduce(function (sum, option) {
|
|
158
|
+
return sum + optionUnit(option);
|
|
159
|
+
}, 0));
|
|
160
|
+
}
|
|
161
|
+
var onceOffUnit = formatOnceOffUnitCostDetail(product, (_variation$onceOffCos = variation === null || variation === void 0 ? void 0 : variation.onceOffCost) !== null && _variation$onceOffCos !== void 0 ? _variation$onceOffCos : field.variationCost, (_variation$unitCost = variation === null || variation === void 0 ? void 0 : variation.unitCost) !== null && _variation$unitCost !== void 0 ? _variation$unitCost : field.variationUnitCost);
|
|
162
|
+
if (onceOffUnit) return onceOffUnit;
|
|
163
|
+
if (variation !== null && variation !== void 0 && variation.cost) {
|
|
164
|
+
return " + ".concat(formatCost(product, variation.cost));
|
|
165
|
+
}
|
|
166
|
+
return '';
|
|
167
|
+
}
|
|
168
|
+
function VariationFilePreview(_ref2) {
|
|
169
|
+
var file = _ref2.file,
|
|
170
|
+
urlApi = _ref2.urlApi;
|
|
171
|
+
var fileUrl = resolveFileUrl(file, urlApi);
|
|
76
172
|
var fileName = (file === null || file === void 0 ? void 0 : file.name) || 'File';
|
|
173
|
+
var _useState = useState(false),
|
|
174
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
175
|
+
imageFailed = _useState2[0],
|
|
176
|
+
setImageFailed = _useState2[1];
|
|
77
177
|
if (isPdf(file)) {
|
|
78
178
|
return /*#__PURE__*/_jsxs("a", {
|
|
79
179
|
className: "merchi-checkout-summary-file-link",
|
|
80
|
-
href: fileUrl,
|
|
180
|
+
href: fileUrl || undefined,
|
|
81
181
|
target: "_blank",
|
|
82
182
|
rel: "noopener noreferrer",
|
|
83
183
|
title: fileName,
|
|
@@ -88,12 +188,26 @@ function VariationFilePreview(_ref) {
|
|
|
88
188
|
})]
|
|
89
189
|
});
|
|
90
190
|
}
|
|
91
|
-
if (isImageFile(file) && fileUrl) {
|
|
191
|
+
if (isImageFile(file) && fileUrl && !imageFailed) {
|
|
92
192
|
return /*#__PURE__*/_jsx("img", {
|
|
93
193
|
className: "modal-merchi-checkout-job-info-content-img",
|
|
94
194
|
src: fileUrl,
|
|
95
195
|
alt: fileName,
|
|
96
|
-
title: fileName
|
|
196
|
+
title: fileName,
|
|
197
|
+
onError: function onError() {
|
|
198
|
+
return setImageFailed(true);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
if (isImageFile(file)) {
|
|
203
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
204
|
+
className: "merchi-checkout-summary-file-fallback",
|
|
205
|
+
title: fileName,
|
|
206
|
+
children: [/*#__PURE__*/_jsx(FaRegImage, {
|
|
207
|
+
"aria-hidden": true
|
|
208
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
209
|
+
children: fileName
|
|
210
|
+
})]
|
|
97
211
|
});
|
|
98
212
|
}
|
|
99
213
|
if (fileUrl) {
|
|
@@ -110,15 +224,16 @@ function VariationFilePreview(_ref) {
|
|
|
110
224
|
children: fileName
|
|
111
225
|
});
|
|
112
226
|
}
|
|
113
|
-
function VariationInfoBody(
|
|
114
|
-
var
|
|
115
|
-
name =
|
|
116
|
-
product =
|
|
117
|
-
value =
|
|
118
|
-
files =
|
|
119
|
-
type =
|
|
227
|
+
function VariationInfoBody(_ref3) {
|
|
228
|
+
var costDetail = _ref3.costDetail,
|
|
229
|
+
name = _ref3.name,
|
|
230
|
+
product = _ref3.product,
|
|
231
|
+
value = _ref3.value,
|
|
232
|
+
files = _ref3.files,
|
|
233
|
+
type = _ref3.type,
|
|
234
|
+
urlApi = _ref3.urlApi;
|
|
120
235
|
var isColourPicker = type === FieldType.COLOUR_PICKER;
|
|
121
|
-
var isFileUpload = type === FieldType.FILE_UPLOAD;
|
|
236
|
+
var isFileUpload = type === FieldType.FILE_UPLOAD || type === FieldType.COLOUR_EXTRACT;
|
|
122
237
|
var hasFiles = Boolean(files === null || files === void 0 ? void 0 : files.length);
|
|
123
238
|
var displayValue = isColourPicker || isFileUpload && hasFiles ? null : value;
|
|
124
239
|
return /*#__PURE__*/_jsxs("div", {
|
|
@@ -132,7 +247,8 @@ function VariationInfoBody(_ref2) {
|
|
|
132
247
|
className: "merchi-checkout-summary-file-previews",
|
|
133
248
|
children: files.map(function (file, index) {
|
|
134
249
|
return /*#__PURE__*/_jsx(VariationFilePreview, {
|
|
135
|
-
file: file
|
|
250
|
+
file: file,
|
|
251
|
+
urlApi: urlApi
|
|
136
252
|
}, file.viewUrl || file.id || "".concat(name, "-file-").concat(index));
|
|
137
253
|
})
|
|
138
254
|
}), isColourPicker && value && /*#__PURE__*/_jsxs("div", {
|
|
@@ -145,13 +261,15 @@ function VariationInfoBody(_ref2) {
|
|
|
145
261
|
}), /*#__PURE__*/_jsx("span", {
|
|
146
262
|
children: value
|
|
147
263
|
})]
|
|
148
|
-
}), displayValue && displayValue,
|
|
264
|
+
}), displayValue && displayValue, costDetail || '', !hasFiles && !value && !costDetail && '-']
|
|
149
265
|
})]
|
|
150
266
|
});
|
|
151
267
|
}
|
|
152
|
-
function VariationInfo(
|
|
153
|
-
var product =
|
|
154
|
-
variation =
|
|
268
|
+
function VariationInfo(_ref4) {
|
|
269
|
+
var product = _ref4.product,
|
|
270
|
+
variation = _ref4.variation;
|
|
271
|
+
var _useMerchiCheckboutCo = useMerchiCheckboutContext(),
|
|
272
|
+
urlApi = _useMerchiCheckboutCo.urlApi;
|
|
155
273
|
var selectedOptions = variation.selectedOptions,
|
|
156
274
|
variationField = variation.variationField,
|
|
157
275
|
variationFiles = variation.variationFiles,
|
|
@@ -162,11 +280,38 @@ function VariationInfo(_ref3) {
|
|
|
162
280
|
fieldOptions = _variationField$optio === void 0 ? [] : _variationField$optio;
|
|
163
281
|
var isVariationSelectable = isSelectable(fieldType);
|
|
164
282
|
var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
|
|
283
|
+
var isColourExtract = fieldType === FieldType.COLOUR_EXTRACT;
|
|
165
284
|
var options = selectedOptions;
|
|
166
285
|
var useSelectableDisplay = isVariationSelectable && (Boolean(options === null || options === void 0 ? void 0 : options.length) || isTurnaroundTime && variation.value);
|
|
167
286
|
return /*#__PURE__*/_jsx("div", {
|
|
168
287
|
className: "merchi-checkout-summary-variation",
|
|
169
|
-
children:
|
|
288
|
+
children: isColourExtract ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
289
|
+
children: [/*#__PURE__*/_jsx(VariationInfoBody, {
|
|
290
|
+
name: variationField.name,
|
|
291
|
+
type: fieldType,
|
|
292
|
+
value: null,
|
|
293
|
+
files: variationFiles,
|
|
294
|
+
product: product,
|
|
295
|
+
urlApi: urlApi,
|
|
296
|
+
costDetail: variationCostDetail(product, variation, sellerProductEditable,
|
|
297
|
+
// Options list shows each colour cost; keep field base cost here.
|
|
298
|
+
options !== null && options !== void 0 && options.length ? {
|
|
299
|
+
fieldCostsOnly: true
|
|
300
|
+
} : {
|
|
301
|
+
includeSelectedOptionCosts: false
|
|
302
|
+
})
|
|
303
|
+
}), options !== null && options !== void 0 && options.length ? /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
|
|
304
|
+
name: "".concat(variationField.name, " colours"),
|
|
305
|
+
fieldType: fieldType,
|
|
306
|
+
value: variation.value,
|
|
307
|
+
product: product,
|
|
308
|
+
selectedOptions: options,
|
|
309
|
+
variation: variation,
|
|
310
|
+
selectableOptions: selectableOptions,
|
|
311
|
+
fieldOptions: fieldOptions,
|
|
312
|
+
sellerProductEditable: sellerProductEditable
|
|
313
|
+
}) : null]
|
|
314
|
+
}) : useSelectableDisplay ? /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
|
|
170
315
|
name: variationField.name,
|
|
171
316
|
fieldType: fieldType,
|
|
172
317
|
value: variation.value,
|
|
@@ -180,20 +325,26 @@ function VariationInfo(_ref3) {
|
|
|
180
325
|
}) : /*#__PURE__*/_jsx(VariationInfoBody, {
|
|
181
326
|
name: variationField.name,
|
|
182
327
|
type: variationField.fieldType,
|
|
183
|
-
value: variation.value,
|
|
328
|
+
value: fieldType === FieldType.AREA && variation.value ? formatAreaSummary(variation.value, localePrefersImperial() ? 'imperial' : 'metric', variationField.areaUnit || 'mm') || variation.value : variation.value,
|
|
184
329
|
files: variationFiles,
|
|
185
330
|
product: product,
|
|
186
|
-
|
|
331
|
+
urlApi: urlApi,
|
|
332
|
+
costDetail: variationCostDetail(product, variation, sellerProductEditable, {
|
|
333
|
+
includeSelectedOptionCosts: false
|
|
334
|
+
})
|
|
187
335
|
})
|
|
188
336
|
});
|
|
189
337
|
}
|
|
190
|
-
function ColourSelectOption(
|
|
338
|
+
function ColourSelectOption(_ref5) {
|
|
191
339
|
var _option$value;
|
|
192
|
-
var option =
|
|
193
|
-
selectableOptions =
|
|
194
|
-
fieldOptions =
|
|
340
|
+
var option = _ref5.option,
|
|
341
|
+
selectableOptions = _ref5.selectableOptions,
|
|
342
|
+
fieldOptions = _ref5.fieldOptions,
|
|
343
|
+
product = _ref5.product,
|
|
344
|
+
sellerProductEditable = _ref5.sellerProductEditable;
|
|
195
345
|
var label = (option === null || option === void 0 || (_option$value = option.value) === null || _option$value === void 0 ? void 0 : _option$value.trim()) || '';
|
|
196
346
|
var hex = resolveOptionColour(option, selectableOptions, fieldOptions);
|
|
347
|
+
var cost = formatOptionCost(product, option, Boolean(sellerProductEditable));
|
|
197
348
|
return /*#__PURE__*/_jsxs("span", {
|
|
198
349
|
className: "merchi-checkout-summary-colour-option",
|
|
199
350
|
children: [hex && /*#__PURE__*/_jsx("span", {
|
|
@@ -201,28 +352,37 @@ function ColourSelectOption(_ref4) {
|
|
|
201
352
|
backgroundColor: hex
|
|
202
353
|
},
|
|
203
354
|
className: "color-indicator"
|
|
204
|
-
}), /*#__PURE__*/
|
|
205
|
-
children: label || hex || '–'
|
|
355
|
+
}), /*#__PURE__*/_jsxs("span", {
|
|
356
|
+
children: [label || hex || '–', cost || '']
|
|
206
357
|
})]
|
|
207
358
|
});
|
|
208
359
|
}
|
|
209
|
-
function ImageSelectOption(
|
|
360
|
+
function ImageSelectOption(_ref6) {
|
|
210
361
|
var _option$value2;
|
|
211
|
-
var option =
|
|
212
|
-
selectableOptions =
|
|
213
|
-
fieldOptions =
|
|
214
|
-
product =
|
|
215
|
-
sellerProductEditable =
|
|
216
|
-
var
|
|
362
|
+
var option = _ref6.option,
|
|
363
|
+
selectableOptions = _ref6.selectableOptions,
|
|
364
|
+
fieldOptions = _ref6.fieldOptions,
|
|
365
|
+
product = _ref6.product,
|
|
366
|
+
sellerProductEditable = _ref6.sellerProductEditable;
|
|
367
|
+
var _useMerchiCheckboutCo2 = useMerchiCheckboutContext(),
|
|
368
|
+
urlApi = _useMerchiCheckboutCo2.urlApi;
|
|
369
|
+
var imageUrl = resolveOptionImageUrl(option, selectableOptions, fieldOptions, urlApi);
|
|
217
370
|
var label = (option === null || option === void 0 || (_option$value2 = option.value) === null || _option$value2 === void 0 ? void 0 : _option$value2.trim()) || '';
|
|
218
371
|
var cost = formatOptionCost(product, option, sellerProductEditable);
|
|
372
|
+
var _useState3 = useState(false),
|
|
373
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
374
|
+
imageFailed = _useState4[0],
|
|
375
|
+
setImageFailed = _useState4[1];
|
|
219
376
|
return /*#__PURE__*/_jsxs("span", {
|
|
220
377
|
className: "merchi-checkout-summary-image-select-option",
|
|
221
|
-
children: [imageUrl ? /*#__PURE__*/_jsx("img", {
|
|
378
|
+
children: [imageUrl && !imageFailed ? /*#__PURE__*/_jsx("img", {
|
|
222
379
|
className: "modal-merchi-checkout-job-info-content-img",
|
|
223
380
|
src: imageUrl,
|
|
224
381
|
alt: label || 'Selected option',
|
|
225
|
-
title: label || undefined
|
|
382
|
+
title: label || undefined,
|
|
383
|
+
onError: function onError() {
|
|
384
|
+
return setImageFailed(true);
|
|
385
|
+
}
|
|
226
386
|
}) : null, /*#__PURE__*/_jsxs("span", {
|
|
227
387
|
children: [label || '–', cost || '']
|
|
228
388
|
})]
|
|
@@ -269,12 +429,12 @@ function formatTurnaroundDeadline(userDeadline) {
|
|
|
269
429
|
day: 'numeric'
|
|
270
430
|
});
|
|
271
431
|
}
|
|
272
|
-
function TurnaroundOptionLabel(
|
|
432
|
+
function TurnaroundOptionLabel(_ref7) {
|
|
273
433
|
var _option$value3, _option$value4;
|
|
274
|
-
var option =
|
|
275
|
-
variationField =
|
|
276
|
-
product =
|
|
277
|
-
sellerProductEditable =
|
|
434
|
+
var option = _ref7.option,
|
|
435
|
+
variationField = _ref7.variationField,
|
|
436
|
+
product = _ref7.product,
|
|
437
|
+
sellerProductEditable = _ref7.sellerProductEditable;
|
|
278
438
|
var days = parseInt(String((_option$value3 = option === null || option === void 0 ? void 0 : option.value) !== null && _option$value3 !== void 0 ? _option$value3 : ''), 10) || 0;
|
|
279
439
|
var deadline = formatTurnaroundDeadline(option === null || option === void 0 ? void 0 : option.userDeadline);
|
|
280
440
|
var shippingTimeIncluded = Boolean(variationField === null || variationField === void 0 ? void 0 : variationField.shippingTimeIncluded);
|
|
@@ -291,24 +451,24 @@ function TurnaroundOptionLabel(_ref6) {
|
|
|
291
451
|
}), cost || '']
|
|
292
452
|
});
|
|
293
453
|
}
|
|
294
|
-
function VariationOptionsInfoBody(
|
|
454
|
+
function VariationOptionsInfoBody(_ref8) {
|
|
295
455
|
var _variation$variationF;
|
|
296
|
-
var name =
|
|
297
|
-
selectedOptions =
|
|
298
|
-
sellerProductEditable =
|
|
299
|
-
product =
|
|
300
|
-
fieldType =
|
|
301
|
-
variation =
|
|
302
|
-
|
|
303
|
-
selectableOptions =
|
|
304
|
-
|
|
305
|
-
fieldOptions =
|
|
456
|
+
var name = _ref8.name,
|
|
457
|
+
selectedOptions = _ref8.selectedOptions,
|
|
458
|
+
sellerProductEditable = _ref8.sellerProductEditable,
|
|
459
|
+
product = _ref8.product,
|
|
460
|
+
fieldType = _ref8.fieldType,
|
|
461
|
+
variation = _ref8.variation,
|
|
462
|
+
_ref8$selectableOptio = _ref8.selectableOptions,
|
|
463
|
+
selectableOptions = _ref8$selectableOptio === void 0 ? [] : _ref8$selectableOptio,
|
|
464
|
+
_ref8$fieldOptions = _ref8.fieldOptions,
|
|
465
|
+
fieldOptions = _ref8$fieldOptions === void 0 ? [] : _ref8$fieldOptions;
|
|
306
466
|
var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
|
|
307
467
|
var firstOption = isTurnaroundTime ? resolveTurnaroundSelectedOption({
|
|
308
468
|
selectedOptions: selectedOptions,
|
|
309
469
|
value: variation === null || variation === void 0 ? void 0 : variation.value
|
|
310
470
|
}, selectableOptions, fieldOptions) : selectedOptions[0];
|
|
311
|
-
var isColourSelect = fieldType === FieldType.COLOUR_SELECT;
|
|
471
|
+
var isColourSelect = fieldType === FieldType.COLOUR_SELECT || fieldType === FieldType.COLOUR_EXTRACT;
|
|
312
472
|
var isImageSelect = fieldType === FieldType.IMAGE_SELECT;
|
|
313
473
|
var variationField = (_variation$variationF = variation === null || variation === void 0 ? void 0 : variation.variationField) !== null && _variation$variationF !== void 0 ? _variation$variationF : {};
|
|
314
474
|
function renderOptionLabel(o) {
|
|
@@ -325,7 +485,9 @@ function VariationOptionsInfoBody(_ref7) {
|
|
|
325
485
|
return /*#__PURE__*/_jsx(ColourSelectOption, {
|
|
326
486
|
option: o,
|
|
327
487
|
selectableOptions: selectableOptions,
|
|
328
|
-
fieldOptions: fieldOptions
|
|
488
|
+
fieldOptions: fieldOptions,
|
|
489
|
+
product: product,
|
|
490
|
+
sellerProductEditable: sellerProductEditable
|
|
329
491
|
});
|
|
330
492
|
}
|
|
331
493
|
if (isImageSelect) {
|
|
@@ -377,11 +539,11 @@ function VariationOptionsInfoBody(_ref7) {
|
|
|
377
539
|
})
|
|
378
540
|
});
|
|
379
541
|
}
|
|
380
|
-
function VariationsInfo(
|
|
381
|
-
var product =
|
|
382
|
-
quantity =
|
|
383
|
-
|
|
384
|
-
variations =
|
|
542
|
+
function VariationsInfo(_ref9) {
|
|
543
|
+
var product = _ref9.product,
|
|
544
|
+
quantity = _ref9.quantity,
|
|
545
|
+
_ref9$variations = _ref9.variations,
|
|
546
|
+
variations = _ref9$variations === void 0 ? [] : _ref9$variations;
|
|
385
547
|
return /*#__PURE__*/_jsx("div", {
|
|
386
548
|
className: "merchi-checkout-summary-variations",
|
|
387
549
|
children: variations.map(function (v, i) {
|
|
@@ -393,11 +555,11 @@ function VariationsInfo(_ref8) {
|
|
|
393
555
|
})
|
|
394
556
|
});
|
|
395
557
|
}
|
|
396
|
-
function VariationGroupInfo(
|
|
397
|
-
var group =
|
|
398
|
-
index =
|
|
399
|
-
product =
|
|
400
|
-
showSetupOnUnitPrice =
|
|
558
|
+
function VariationGroupInfo(_ref10) {
|
|
559
|
+
var group = _ref10.group,
|
|
560
|
+
index = _ref10.index,
|
|
561
|
+
product = _ref10.product,
|
|
562
|
+
showSetupOnUnitPrice = _ref10.showSetupOnUnitPrice;
|
|
401
563
|
var isResell = isProductSupplierMOD(product);
|
|
402
564
|
var quantity = group.quantity,
|
|
403
565
|
variations = group.variations;
|
|
@@ -429,8 +591,8 @@ function VariationGroupInfo(_ref9) {
|
|
|
429
591
|
});
|
|
430
592
|
}
|
|
431
593
|
export default function JobInfoContent() {
|
|
432
|
-
var
|
|
433
|
-
job =
|
|
594
|
+
var _useMerchiCheckboutCo3 = useMerchiCheckboutContext(),
|
|
595
|
+
job = _useMerchiCheckboutCo3.job;
|
|
434
596
|
var product = job.product,
|
|
435
597
|
_job$quantity = job.quantity,
|
|
436
598
|
quantity = _job$quantity === void 0 ? 0 : _job$quantity,
|
|
@@ -520,4 +682,4 @@ export default function JobInfoContent() {
|
|
|
520
682
|
})]
|
|
521
683
|
});
|
|
522
684
|
}
|
|
523
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkZhRmlsZVBkZiIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJGaWVsZFR5cGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwiU3VtbWFyeUFtb3VudFJvdyIsIlN1bW1hcnlGaWVsZFJvdyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImZvcm1hdENvc3QiLCJwcm9kdWN0IiwiY29zdCIsImN1cnJlbmN5Iiwic2hvd0NvZGVJZk5vU3ltYm9sIiwicHJvZHVjdFNldHVwU3VmZml4Iiwic2V0dXBQcmljZSIsIk51bWJlciIsImxhYmVsIiwic2V0dXBQZXJHcm91cCIsImNvbmNhdCIsImZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cCIsInVuaXRQcmljZSIsImlzUGRmIiwiZmlsZSIsIm1pbWV0eXBlIiwiaXNJbWFnZUZpbGUiLCJzdGFydHNXaXRoIiwibmFtZSIsInRvTG93ZXJDYXNlIiwidGVzdCIsIm9wdGlvbkltYWdlVXJsIiwib3B0aW9uIiwiX29wdGlvbiRsaW5rZWRGaWxlIiwibGlua2VkRmlsZSIsInZpZXdVcmwiLCJmaW5kTWF0Y2hpbmdPcHRpb24iLCJvcHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZmluZCIsIm8iLCJTdHJpbmciLCJvcHRpb25JZCIsInJlc29sdmVPcHRpb25Db2xvdXIiLCJfb3B0aW9uJGNvbG91ciIsIl9maW5kTWF0Y2hpbmdPcHRpb24iLCJfZmluZE1hdGNoaW5nT3B0aW9uMiIsInNlbGVjdGFibGVPcHRpb25zIiwiZmllbGRPcHRpb25zIiwiZGlyZWN0IiwiY29sb3VyIiwidHJpbSIsImZyb21TZWxlY3RhYmxlIiwicmVzb2x2ZU9wdGlvbkltYWdlVXJsIiwiZm9ybWF0T3B0aW9uQ29zdCIsInNlbGxlclByb2R1Y3RFZGl0YWJsZSIsInRvdGFsQ29zdCIsIlZhcmlhdGlvbkZpbGVQcmV2aWV3IiwiX3JlZiIsImZpbGVVcmwiLCJkb3dubG9hZFVybCIsImZpbGVOYW1lIiwiY2xhc3NOYW1lIiwiaHJlZiIsInRhcmdldCIsInJlbCIsInRpdGxlIiwiY2hpbGRyZW4iLCJzcmMiLCJhbHQiLCJWYXJpYXRpb25JbmZvQm9keSIsIl9yZWYyIiwidmFsdWUiLCJmaWxlcyIsInR5cGUiLCJpc0NvbG91clBpY2tlciIsIkNPTE9VUl9QSUNLRVIiLCJpc0ZpbGVVcGxvYWQiLCJGSUxFX1VQTE9BRCIsImhhc0ZpbGVzIiwiQm9vbGVhbiIsImRpc3BsYXlWYWx1ZSIsIm1hcCIsImluZGV4IiwiaWQiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsIlZhcmlhdGlvbkluZm8iLCJfcmVmMyIsInZhcmlhdGlvbiIsInNlbGVjdGVkT3B0aW9ucyIsInZhcmlhdGlvbkZpZWxkIiwidmFyaWF0aW9uRmlsZXMiLCJmaWVsZFR5cGUiLCJfdmFyaWF0aW9uRmllbGQkb3B0aW8iLCJpc1ZhcmlhdGlvblNlbGVjdGFibGUiLCJpc1R1cm5hcm91bmRUaW1lIiwiVFVSTkFST1VORF9USU1FIiwidXNlU2VsZWN0YWJsZURpc3BsYXkiLCJWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkiLCJDb2xvdXJTZWxlY3RPcHRpb24iLCJfcmVmNCIsIl9vcHRpb24kdmFsdWUiLCJoZXgiLCJJbWFnZVNlbGVjdE9wdGlvbiIsIl9yZWY1IiwiX29wdGlvbiR2YWx1ZTIiLCJpbWFnZVVybCIsImdldE9wdGlvbklkIiwiX29wdGlvbiRvcHRpb25JZCIsInJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24iLCJfdmFyaWF0aW9uJHNlbGVjdGVkT3AiLCJ2YWx1ZVN0ciIsInBvb2xzIiwiX2kiLCJfcG9vbHMiLCJwb29sIiwiYnlJZCIsImJ5VmFsdWUiLCJfbyR2YWx1ZSIsImZvcm1hdFR1cm5hcm91bmREZWFkbGluZSIsInVzZXJEZWFkbGluZSIsInNlY29uZHMiLCJpc0Zpbml0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ3ZWVrZGF5IiwieWVhciIsIm1vbnRoIiwiZGF5IiwiVHVybmFyb3VuZE9wdGlvbkxhYmVsIiwiX3JlZjYiLCJfb3B0aW9uJHZhbHVlMyIsIl9vcHRpb24kdmFsdWU0IiwiZGF5cyIsInBhcnNlSW50IiwiZGVhZGxpbmUiLCJzaGlwcGluZ1RpbWVJbmNsdWRlZCIsImRlYWRsaW5lTGFiZWwiLCJfcmVmNyIsIl92YXJpYXRpb24kdmFyaWF0aW9uRiIsIl9yZWY3JHNlbGVjdGFibGVPcHRpbyIsIl9yZWY3JGZpZWxkT3B0aW9ucyIsImZpcnN0T3B0aW9uIiwiaXNDb2xvdXJTZWxlY3QiLCJDT0xPVVJfU0VMRUNUIiwiaXNJbWFnZVNlbGVjdCIsIklNQUdFX1NFTEVDVCIsInJlbmRlck9wdGlvbkxhYmVsIiwiX28kdmFsdWUyIiwiaSIsIl9vJG9wdGlvbklkIiwiVmFyaWF0aW9uc0luZm8iLCJfcmVmOCIsInF1YW50aXR5IiwiX3JlZjgkdmFyaWF0aW9ucyIsInZhcmlhdGlvbnMiLCJ2IiwiVmFyaWF0aW9uR3JvdXBJbmZvIiwiX3JlZjkiLCJncm91cCIsInNob3dTZXR1cE9uVW5pdFByaWNlIiwiaXNSZXNlbGwiLCJ2aXNpYmxlVmFyaWF0aW9ucyIsImZpbHRlciIsIl92JHZhcmlhdGlvbkZpZWxkIiwiY29zdExhYmVsIiwidW5pdFByaWNlVmFsdWUiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsImpvYiIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImpvYkxldmVsVmFyaWF0aW9ucyIsIl92JHZhcmlhdGlvbkZpZWxkMiIsInRvdGFsUXVhbnRpdHkiLCJyZWR1Y2UiLCJzdW0iLCJnIiwiaGFzU2V0dXBQcmljZSIsImFtb3VudCIsImxhYmVsRXh0cmEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9Kb2JJbmZvQ29udGVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBGYUZpbGVQZGYgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XHJcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXggfSBmcm9tICcuL2N1cnJlbmN5JztcclxuaW1wb3J0IHtcclxuICBpc0luc3RydWN0aW9uc1R5cGUsXHJcbiAgaXNQcm9kdWN0U3VwcGxpZXJNT0QsXHJcbiAgaXNTZWxlY3RhYmxlLFxyXG4gIEZpZWxkVHlwZSxcclxufSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZU1lcmNoaUNoZWNrYm91dENvbnRleHQgfSBmcm9tICcuL01lcmNoaUNoZWNrb3V0UHJvdmlkZXInO1xyXG5pbXBvcnQge1xyXG4gIFN1bW1hcnlBbW91bnRSb3csXHJcbiAgU3VtbWFyeUZpZWxkUm93LFxyXG59IGZyb20gJy4vQ2hlY2tvdXRTdW1tYXJ5RmllbGRzJztcclxuXHJcbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcclxuICBjb25zdCBjdXJyZW5jeSA9IHByb2R1Y3QuY3VycmVuY3kgPyBwcm9kdWN0LmN1cnJlbmN5IDogJ0FVRCc7XHJcbiAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KGNvc3QsIHtcclxuICAgIGN1cnJlbmN5LFxyXG4gICAgc2hvd0NvZGVJZk5vU3ltYm9sOiBmYWxzZSxcclxuICB9KTtcclxufVxyXG5cclxuLyoqIFByb2R1Y3Qgc2V0dXAgZmVlIHNob3duIG5leHQgdG8gdW5pdCBwcmljZSwgbWF0Y2hpbmcgcHJvZHVjdC1mb3JtIHdvcmRpbmcuICovXHJcbmZ1bmN0aW9uIHByb2R1Y3RTZXR1cFN1ZmZpeChwcm9kdWN0OiBhbnkpIHtcclxuICBjb25zdCBzZXR1cFByaWNlID0gTnVtYmVyKHByb2R1Y3Q/LnNldHVwUHJpY2UpO1xyXG4gIGlmICghc2V0dXBQcmljZSkgcmV0dXJuICcnO1xyXG4gIGNvbnN0IGxhYmVsID0gcHJvZHVjdC5zZXR1cFBlckdyb3VwID8gJ3NldHVwIHBlciBncm91cCcgOiAnc2V0dXAnO1xyXG4gIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIHNldHVwUHJpY2UpfSAke2xhYmVsfWA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cChwcm9kdWN0OiBhbnkpIHtcclxuICByZXR1cm4gYCR7Zm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdD8udW5pdFByaWNlKSB8fCAwKX0ke3Byb2R1Y3RTZXR1cFN1ZmZpeChwcm9kdWN0KX1gO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1BkZihmaWxlOiBhbnkpIHtcclxuICBjb25zdCBtaW1ldHlwZSA9IGZpbGU/Lm1pbWV0eXBlIHx8ICcnO1xyXG4gIHJldHVybiBtaW1ldHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgbWltZXR5cGUgPT09ICdhcHBsaWNhdGlvbi94LXBkZic7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSW1hZ2VGaWxlKGZpbGU6IGFueSkge1xyXG4gIGNvbnN0IG1pbWV0eXBlID0gZmlsZT8ubWltZXR5cGUgfHwgJyc7XHJcbiAgaWYgKG1pbWV0eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSByZXR1cm4gdHJ1ZTtcclxuICBjb25zdCBuYW1lID0gKGZpbGU/Lm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgcmV0dXJuIC9cXC4oanBlP2d8cG5nfGdpZnx3ZWJwfHN2Z3xibXApJC8udGVzdChuYW1lKTtcclxufVxyXG5cclxuZnVuY3Rpb24gb3B0aW9uSW1hZ2VVcmwob3B0aW9uOiBhbnkpIHtcclxuICByZXR1cm4gb3B0aW9uPy5saW5rZWRGaWxlPy52aWV3VXJsIHx8ICcnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kTWF0Y2hpbmdPcHRpb24ob3B0aW9uOiBhbnksIG9wdGlvbnM6IGFueVtdID0gW10pIHtcclxuICByZXR1cm4gb3B0aW9ucy5maW5kKChvKSA9PiBTdHJpbmcoby5vcHRpb25JZCkgPT09IFN0cmluZyhvcHRpb24/Lm9wdGlvbklkKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVPcHRpb25Db2xvdXIoXHJcbiAgb3B0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbikge1xyXG4gIGNvbnN0IGRpcmVjdCA9IG9wdGlvbj8uY29sb3VyPy50cmltKCk7XHJcbiAgaWYgKGRpcmVjdCkgcmV0dXJuIGRpcmVjdDtcclxuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKT8uY29sb3VyPy50cmltKCk7XHJcbiAgaWYgKGZyb21TZWxlY3RhYmxlKSByZXR1cm4gZnJvbVNlbGVjdGFibGU7XHJcbiAgcmV0dXJuIGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIGZpZWxkT3B0aW9ucyk/LmNvbG91cj8udHJpbSgpIHx8ICcnO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXNvbHZlT3B0aW9uSW1hZ2VVcmwoXHJcbiAgb3B0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbikge1xyXG4gIGNvbnN0IGRpcmVjdCA9IG9wdGlvbkltYWdlVXJsKG9wdGlvbik7XHJcbiAgaWYgKGRpcmVjdCkgcmV0dXJuIGRpcmVjdDtcclxuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IG9wdGlvbkltYWdlVXJsKFxyXG4gICAgZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMpXHJcbiAgKTtcclxuICBpZiAoZnJvbVNlbGVjdGFibGUpIHJldHVybiBmcm9tU2VsZWN0YWJsZTtcclxuICByZXR1cm4gb3B0aW9uSW1hZ2VVcmwoZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgZmllbGRPcHRpb25zKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdE9wdGlvbkNvc3QoXHJcbiAgcHJvZHVjdDogYW55LFxyXG4gIG9wdGlvbjogYW55LFxyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZTogYm9vbGVhblxyXG4pIHtcclxuICBpZiAoIW9wdGlvbj8udG90YWxDb3N0IHx8IHNlbGxlclByb2R1Y3RFZGl0YWJsZSkgcmV0dXJuIG51bGw7XHJcbiAgcmV0dXJuIGAgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgb3B0aW9uLnRvdGFsQ29zdCl9YDtcclxufVxyXG5cclxuZnVuY3Rpb24gVmFyaWF0aW9uRmlsZVByZXZpZXcoeyBmaWxlIH06IHsgZmlsZTogYW55IH0pIHtcclxuICBjb25zdCBmaWxlVXJsID0gZmlsZT8udmlld1VybCB8fCBmaWxlPy5kb3dubG9hZFVybCB8fCAnJztcclxuICBjb25zdCBmaWxlTmFtZSA9IGZpbGU/Lm5hbWUgfHwgJ0ZpbGUnO1xyXG5cclxuICBpZiAoaXNQZGYoZmlsZSkpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxhXHJcbiAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLWxpbmsnXHJcbiAgICAgICAgaHJlZj17ZmlsZVVybH1cclxuICAgICAgICB0YXJnZXQ9J19ibGFuaydcclxuICAgICAgICByZWw9J25vb3BlbmVyIG5vcmVmZXJyZXInXHJcbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxyXG4gICAgICA+XHJcbiAgICAgICAgPEZhRmlsZVBkZiBhcmlhLWhpZGRlbiAvPlxyXG4gICAgICAgIDxzcGFuPntmaWxlTmFtZX08L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNJbWFnZUZpbGUoZmlsZSkgJiYgZmlsZVVybCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGltZ1xyXG4gICAgICAgIGNsYXNzTmFtZT0nbW9kYWwtbWVyY2hpLWNoZWNrb3V0LWpvYi1pbmZvLWNvbnRlbnQtaW1nJ1xyXG4gICAgICAgIHNyYz17ZmlsZVVybH1cclxuICAgICAgICBhbHQ9e2ZpbGVOYW1lfVxyXG4gICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cclxuICAgICAgLz5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoZmlsZVVybCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGFcclxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtbGluaydcclxuICAgICAgICBocmVmPXtmaWxlVXJsfVxyXG4gICAgICAgIHRhcmdldD0nX2JsYW5rJ1xyXG4gICAgICAgIHJlbD0nbm9vcGVuZXIgbm9yZWZlcnJlcidcclxuICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XHJcbiAgICAgID5cclxuICAgICAgICB7ZmlsZU5hbWV9XHJcbiAgICAgIDwvYT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm9Cb2R5KHsgY29zdCwgbmFtZSwgcHJvZHVjdCwgdmFsdWUsIGZpbGVzLCB0eXBlIH06IGFueSkge1xyXG4gIGNvbnN0IGlzQ29sb3VyUGlja2VyID0gdHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9QSUNLRVI7XHJcbiAgY29uc3QgaXNGaWxlVXBsb2FkID0gdHlwZSA9PT0gRmllbGRUeXBlLkZJTEVfVVBMT0FEO1xyXG4gIGNvbnN0IGhhc0ZpbGVzID0gQm9vbGVhbihmaWxlcz8ubGVuZ3RoKTtcclxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBpc0NvbG91clBpY2tlciB8fCAoaXNGaWxlVXBsb2FkICYmIGhhc0ZpbGVzKSA/IG51bGwgOiB2YWx1ZTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1sYWJlbCc+e25hbWV9PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPlxyXG4gICAgICAgIHtoYXNGaWxlcyAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZmlsZS1wcmV2aWV3cyc+XHJcbiAgICAgICAgICAgIHtmaWxlcy5tYXAoKGZpbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKFxyXG4gICAgICAgICAgICAgIDxWYXJpYXRpb25GaWxlUHJldmlld1xyXG4gICAgICAgICAgICAgICAga2V5PXtmaWxlLnZpZXdVcmwgfHwgZmlsZS5pZCB8fCBgJHtuYW1lfS1maWxlLSR7aW5kZXh9YH1cclxuICAgICAgICAgICAgICAgIGZpbGU9e2ZpbGV9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtpc0NvbG91clBpY2tlciAmJiB2YWx1ZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLXZhbHVlJz5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH19XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPnt2YWx1ZX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtkaXNwbGF5VmFsdWUgJiYgZGlzcGxheVZhbHVlfVxyXG4gICAgICAgIHtjb3N0ID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBjb3N0KX1gIDogJyd9XHJcbiAgICAgICAgeyFoYXNGaWxlcyAmJiAhdmFsdWUgJiYgJy0nfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm8oeyBwcm9kdWN0LCB2YXJpYXRpb24gfTogYW55KSB7XHJcbiAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbnMsIHZhcmlhdGlvbkZpZWxkLCB2YXJpYXRpb25GaWxlcywgc2VsZWN0YWJsZU9wdGlvbnMgfSA9XHJcbiAgICB2YXJpYXRpb247XHJcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSwgb3B0aW9uczogZmllbGRPcHRpb25zID0gW10gfSA9XHJcbiAgICB2YXJpYXRpb25GaWVsZDtcclxuICBjb25zdCBpc1ZhcmlhdGlvblNlbGVjdGFibGUgPSBpc1NlbGVjdGFibGUoZmllbGRUeXBlKTtcclxuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xyXG4gIGNvbnN0IG9wdGlvbnMgPSBzZWxlY3RlZE9wdGlvbnM7XHJcbiAgY29uc3QgdXNlU2VsZWN0YWJsZURpc3BsYXkgPVxyXG4gICAgaXNWYXJpYXRpb25TZWxlY3RhYmxlICYmXHJcbiAgICAoQm9vbGVhbihvcHRpb25zPy5sZW5ndGgpIHx8IChpc1R1cm5hcm91bmRUaW1lICYmIHZhcmlhdGlvbi52YWx1ZSkpO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uJz5cclxuICAgICAge3VzZVNlbGVjdGFibGVEaXNwbGF5ID8gKFxyXG4gICAgICAgIDxWYXJpYXRpb25PcHRpb25zSW5mb0JvZHlcclxuICAgICAgICAgIG5hbWU9e3ZhcmlhdGlvbkZpZWxkLm5hbWV9XHJcbiAgICAgICAgICBmaWVsZFR5cGU9e2ZpZWxkVHlwZX1cclxuICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxyXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxyXG4gICAgICAgICAgdmFyaWF0aW9uPXt2YXJpYXRpb259XHJcbiAgICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucz17c2VsZWN0YWJsZU9wdGlvbnN9XHJcbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cclxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICkgOiAoXHJcbiAgICAgICAgPFZhcmlhdGlvbkluZm9Cb2R5XHJcbiAgICAgICAgICBuYW1lPXt2YXJpYXRpb25GaWVsZC5uYW1lfVxyXG4gICAgICAgICAgdHlwZT17dmFyaWF0aW9uRmllbGQuZmllbGRUeXBlfVxyXG4gICAgICAgICAgdmFsdWU9e3ZhcmlhdGlvbi52YWx1ZX1cclxuICAgICAgICAgIGZpbGVzPXt2YXJpYXRpb25GaWxlc31cclxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XHJcbiAgICAgICAgICBjb3N0PXtzZWxsZXJQcm9kdWN0RWRpdGFibGUgPyAwIDogdmFyaWF0aW9uLmNvc3R9XHJcbiAgICAgICAgLz5cclxuICAgICAgKX1cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIENvbG91clNlbGVjdE9wdGlvbih7XHJcbiAgb3B0aW9uLFxyXG4gIHNlbGVjdGFibGVPcHRpb25zLFxyXG4gIGZpZWxkT3B0aW9ucyxcclxufToge1xyXG4gIG9wdGlvbjogYW55O1xyXG4gIHNlbGVjdGFibGVPcHRpb25zPzogYW55W107XHJcbiAgZmllbGRPcHRpb25zPzogYW55W107XHJcbn0pIHtcclxuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcclxuICBjb25zdCBoZXggPSByZXNvbHZlT3B0aW9uQ29sb3VyKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9ucyk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLW9wdGlvbic+XHJcbiAgICAgIHtoZXggJiYgKFxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGhleCB9fVxyXG4gICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXHJcbiAgICAgICAgLz5cclxuICAgICAgKX1cclxuICAgICAgPHNwYW4+e2xhYmVsIHx8IGhleCB8fCAn4oCTJ308L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gSW1hZ2VTZWxlY3RPcHRpb24oe1xyXG4gIG9wdGlvbixcclxuICBzZWxlY3RhYmxlT3B0aW9ucyxcclxuICBmaWVsZE9wdGlvbnMsXHJcbiAgcHJvZHVjdCxcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXHJcbn06IHtcclxuICBvcHRpb246IGFueTtcclxuICBzZWxlY3RhYmxlT3B0aW9ucz86IGFueVtdO1xyXG4gIGZpZWxkT3B0aW9ucz86IGFueVtdO1xyXG4gIHByb2R1Y3Q6IGFueTtcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW47XHJcbn0pIHtcclxuICBjb25zdCBpbWFnZVVybCA9IHJlc29sdmVPcHRpb25JbWFnZVVybChvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zLCBmaWVsZE9wdGlvbnMpO1xyXG4gIGNvbnN0IGxhYmVsID0gb3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICcnO1xyXG4gIGNvbnN0IGNvc3QgPSBmb3JtYXRPcHRpb25Db3N0KHByb2R1Y3QsIG9wdGlvbiwgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktaW1hZ2Utc2VsZWN0LW9wdGlvbic+XHJcbiAgICAgIHtpbWFnZVVybCA/IChcclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50LWltZydcclxuICAgICAgICAgIHNyYz17aW1hZ2VVcmx9XHJcbiAgICAgICAgICBhbHQ9e2xhYmVsIHx8ICdTZWxlY3RlZCBvcHRpb24nfVxyXG4gICAgICAgICAgdGl0bGU9e2xhYmVsIHx8IHVuZGVmaW5lZH1cclxuICAgICAgICAvPlxyXG4gICAgICApIDogbnVsbH1cclxuICAgICAgPHNwYW4+e2xhYmVsIHx8ICfigJMnfXtjb3N0IHx8ICcnfTwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRPcHRpb25JZChvcHRpb246IGFueSkge1xyXG4gIHJldHVybiBvcHRpb24/Lm9wdGlvbklkID8/IG9wdGlvbj8uaWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24oXHJcbiAgdmFyaWF0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbikge1xyXG4gIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb25zID0gW10sIHZhbHVlIH0gPSB2YXJpYXRpb247XHJcbiAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zWzBdO1xyXG4gIH1cclxuICBjb25zdCB2YWx1ZVN0ciA9IHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnID8gU3RyaW5nKHZhbHVlKS50cmltKCkgOiAnJztcclxuICBpZiAoIXZhbHVlU3RyKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgY29uc3QgcG9vbHMgPSBbc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9uc107XHJcbiAgZm9yIChjb25zdCBwb29sIG9mIHBvb2xzKSB7XHJcbiAgICBjb25zdCBieUlkID0gcG9vbC5maW5kKFxyXG4gICAgICAobzogYW55KSA9PiBTdHJpbmcoZ2V0T3B0aW9uSWQobykpID09PSB2YWx1ZVN0clxyXG4gICAgKTtcclxuICAgIGlmIChieUlkKSByZXR1cm4gYnlJZDtcclxuICAgIGNvbnN0IGJ5VmFsdWUgPSBwb29sLmZpbmQoXHJcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhvLnZhbHVlID8/ICcnKSA9PT0gdmFsdWVTdHJcclxuICAgICk7XHJcbiAgICBpZiAoYnlWYWx1ZSkgcmV0dXJuIGJ5VmFsdWU7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb3JtYXRUdXJuYXJvdW5kRGVhZGxpbmUodXNlckRlYWRsaW5lOiBhbnkpIHtcclxuICBpZiAoIXVzZXJEZWFkbGluZSkgcmV0dXJuIG51bGw7XHJcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih1c2VyRGVhZGxpbmUpO1xyXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHNlY29uZHMpIHx8IHNlY29uZHMgPD0gMCkgcmV0dXJuIG51bGw7XHJcbiAgcmV0dXJuIG5ldyBEYXRlKHNlY29uZHMgKiAxMDAwKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUFVJywge1xyXG4gICAgd2Vla2RheTogJ2xvbmcnLFxyXG4gICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgbW9udGg6ICdsb25nJyxcclxuICAgIGRheTogJ251bWVyaWMnLFxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBUdXJuYXJvdW5kT3B0aW9uTGFiZWwoe1xyXG4gIG9wdGlvbixcclxuICB2YXJpYXRpb25GaWVsZCxcclxuICBwcm9kdWN0LFxyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcclxufToge1xyXG4gIG9wdGlvbjogYW55O1xyXG4gIHZhcmlhdGlvbkZpZWxkOiBhbnk7XHJcbiAgcHJvZHVjdDogYW55O1xyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZTogYm9vbGVhbjtcclxufSkge1xyXG4gIGNvbnN0IGRheXMgPSBwYXJzZUludChTdHJpbmcob3B0aW9uPy52YWx1ZSA/PyAnJyksIDEwKSB8fCAwO1xyXG4gIGNvbnN0IGRlYWRsaW5lID0gZm9ybWF0VHVybmFyb3VuZERlYWRsaW5lKG9wdGlvbj8udXNlckRlYWRsaW5lKTtcclxuICBjb25zdCBzaGlwcGluZ1RpbWVJbmNsdWRlZCA9IEJvb2xlYW4odmFyaWF0aW9uRmllbGQ/LnNoaXBwaW5nVGltZUluY2x1ZGVkKTtcclxuICBjb25zdCBkZWFkbGluZUxhYmVsID0gc2hpcHBpbmdUaW1lSW5jbHVkZWQgPyAnRGVsaXZlcnkgYnknIDogJ1Byb2R1Y2VkIGJ5JztcclxuICBjb25zdCBjb3N0ID0gZm9ybWF0T3B0aW9uQ29zdChwcm9kdWN0LCBvcHRpb24sIHNlbGxlclByb2R1Y3RFZGl0YWJsZSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXR1cm5hcm91bmQtdmFsdWUnPlxyXG4gICAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXR1cm5hcm91bmQtZGF5cyc+XHJcbiAgICAgICAge2RheXMgPiAwXHJcbiAgICAgICAgICA/IGAke2RheXN9IGJ1c2luZXNzIGRheSR7ZGF5cyAhPT0gMSA/ICdzJyA6ICcnfWBcclxuICAgICAgICAgIDogKG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAn4oCTJyl9XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAge2RlYWRsaW5lICYmIChcclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXR1cm5hcm91bmQtZGVhZGxpbmUnPlxyXG4gICAgICAgICAge2RlYWRsaW5lTGFiZWx9IHtkZWFkbGluZX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICl9XHJcbiAgICAgIHtjb3N0IHx8ICcnfVxyXG4gICAgPC9zcGFuPlxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keSh7XHJcbiAgbmFtZSxcclxuICBzZWxlY3RlZE9wdGlvbnMsXHJcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxyXG4gIHByb2R1Y3QsXHJcbiAgZmllbGRUeXBlLFxyXG4gIHZhcmlhdGlvbixcclxuICBzZWxlY3RhYmxlT3B0aW9ucyA9IFtdLFxyXG4gIGZpZWxkT3B0aW9ucyA9IFtdLFxyXG59OiBhbnkpIHtcclxuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xyXG4gIGNvbnN0IGZpcnN0T3B0aW9uID0gaXNUdXJuYXJvdW5kVGltZVxyXG4gICAgPyByZXNvbHZlVHVybmFyb3VuZFNlbGVjdGVkT3B0aW9uKFxyXG4gICAgICAgIHsgc2VsZWN0ZWRPcHRpb25zLCB2YWx1ZTogdmFyaWF0aW9uPy52YWx1ZSB9LFxyXG4gICAgICAgIHNlbGVjdGFibGVPcHRpb25zLFxyXG4gICAgICAgIGZpZWxkT3B0aW9uc1xyXG4gICAgICApXHJcbiAgICA6IHNlbGVjdGVkT3B0aW9uc1swXTtcclxuICBjb25zdCBpc0NvbG91clNlbGVjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1Q7XHJcbiAgY29uc3QgaXNJbWFnZVNlbGVjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLklNQUdFX1NFTEVDVDtcclxuICBjb25zdCB2YXJpYXRpb25GaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQgPz8ge307XHJcblxyXG4gIGZ1bmN0aW9uIHJlbmRlck9wdGlvbkxhYmVsKG86IGFueSkge1xyXG4gICAgaWYgKGlzVHVybmFyb3VuZFRpbWUpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8VHVybmFyb3VuZE9wdGlvbkxhYmVsXHJcbiAgICAgICAgICBvcHRpb249e299XHJcbiAgICAgICAgICB2YXJpYXRpb25GaWVsZD17dmFyaWF0aW9uRmllbGR9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XHJcbiAgICAgICAgLz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChpc0NvbG91clNlbGVjdCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxDb2xvdXJTZWxlY3RPcHRpb25cclxuICAgICAgICAgIG9wdGlvbj17b31cclxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cclxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNJbWFnZVNlbGVjdCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxJbWFnZVNlbGVjdE9wdGlvblxyXG4gICAgICAgICAgb3B0aW9uPXtvfVxyXG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxyXG4gICAgICAgICAgZmllbGRPcHRpb25zPXtmaWVsZE9wdGlvbnN9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XHJcbiAgICAgICAgLz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAge28udmFsdWU/LnRyaW0oKSB8fCAn4oCTJ31cclxuICAgICAgICB7Zm9ybWF0T3B0aW9uQ29zdChwcm9kdWN0LCBvLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpIHx8ICcnfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAge3NlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAxICYmICFpc1R1cm5hcm91bmRUaW1lID8gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxyXG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlIGxpc3QtdW5zdHlsZWQgbS0wJz5cclxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXHJcbiAgICAgICAgICAgICAgPGxpIGtleT17YCR7aX0tb3B0aW9uLWtleS0ke28ub3B0aW9uSWQgPz8gaX1gfT5cclxuICAgICAgICAgICAgICAgIHtyZW5kZXJPcHRpb25MYWJlbChvKX1cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICApKX1cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICkgOiBmaXJzdE9wdGlvbiA/IChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXJvdyc+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPlxyXG4gICAgICAgICAgICB7cmVuZGVyT3B0aW9uTGFiZWwoZmlyc3RPcHRpb24pfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICkgOiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1sYWJlbCc+e25hbWV9PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz4tPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICA8Lz5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBWYXJpYXRpb25zSW5mbyh7IHByb2R1Y3QsIHF1YW50aXR5LCB2YXJpYXRpb25zID0gW10gfTogYW55KSB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb25zJz5cclxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cclxuICAgICAgICAhaXNJbnN0cnVjdGlvbnNUeXBlKHYudmFyaWF0aW9uRmllbGQuZmllbGRUeXBlKSA/IChcclxuICAgICAgICAgIDxWYXJpYXRpb25JbmZvXHJcbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cclxuICAgICAgICAgICAgdmFyaWF0aW9uPXt2fVxyXG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgICBrZXk9e2l9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICkgOiBudWxsXHJcbiAgICAgICl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBWYXJpYXRpb25Hcm91cEluZm8oe1xyXG4gIGdyb3VwLFxyXG4gIGluZGV4LFxyXG4gIHByb2R1Y3QsXHJcbiAgc2hvd1NldHVwT25Vbml0UHJpY2UsXHJcbn06IGFueSkge1xyXG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XHJcbiAgY29uc3QgeyBxdWFudGl0eSwgdmFyaWF0aW9ucyB9ID0gZ3JvdXA7XHJcbiAgY29uc3QgdmlzaWJsZVZhcmlhdGlvbnMgPSAodmFyaWF0aW9ucyA/PyBbXSkuZmlsdGVyKFxyXG4gICAgKHY6IGFueSkgPT4gIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2Py52YXJpYXRpb25GaWVsZD8uZmllbGRUeXBlKVxyXG4gICk7XHJcbiAgY29uc3QgY29zdExhYmVsID0gaXNSZXNlbGwgPyAnVW5pdCBDb3N0JyA6ICdHcm91cCBDb3N0JztcclxuICBjb25zdCB1bml0UHJpY2VWYWx1ZSA9IHNob3dTZXR1cE9uVW5pdFByaWNlXHJcbiAgICA/IGZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cChwcm9kdWN0KVxyXG4gICAgOiBmb3JtYXRDb3N0KHByb2R1Y3QsIE51bWJlcihwcm9kdWN0Py51bml0UHJpY2UpIHx8IDApO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1ncm91cCc+XHJcbiAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxyXG4gICAgICAgIEdyb3VwIHtpbmRleCArIDF9IEluZm9ybWF0aW9uXHJcbiAgICAgIDwvc3Ryb25nPlxyXG4gICAgICB7IWlzUmVzZWxsICYmIHF1YW50aXR5ID4gMCAmJiAoXHJcbiAgICAgICAgPFN1bW1hcnlGaWVsZFJvdyBsYWJlbD0nUXVhbnRpdHknIHZhbHVlPXtxdWFudGl0eX0gLz5cclxuICAgICAgKX1cclxuICAgICAgPFN1bW1hcnlGaWVsZFJvdyBsYWJlbD0nVW5pdCBQcmljZScgdmFsdWU9e3VuaXRQcmljZVZhbHVlfSAvPlxyXG4gICAgICB7dmlzaWJsZVZhcmlhdGlvbnMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgPFZhcmlhdGlvbnNJbmZvXHJcbiAgICAgICAgICBxdWFudGl0eT17cXVhbnRpdHl9XHJcbiAgICAgICAgICB2YXJpYXRpb25zPXt2YXJpYXRpb25zfVxyXG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZ3JvdXAtY29zdCc+XHJcbiAgICAgICAge2Nvc3RMYWJlbH06IHtmb3JtYXRDb3N0KHByb2R1Y3QsIGdyb3VwLmdyb3VwQ29zdCl9XHJcbiAgICAgIDwvc3Ryb25nPlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEpvYkluZm9Db250ZW50KCkge1xyXG4gIGNvbnN0IHsgam9iIH0gPSB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0KCk7XHJcbiAgY29uc3QgeyBwcm9kdWN0LCBxdWFudGl0eSA9IDAsIHZhcmlhdGlvbnMgPSBbXSwgdmFyaWF0aW9uc0dyb3VwcyA9IFtdIH0gPSBqb2I7XHJcbiAgY29uc3QgeyBuZWVkc1NoaXBwaW5nIH0gPSBwcm9kdWN0O1xyXG4gIGNvbnN0IHRvdGFsQ29zdCA9IGN1cnJlbmN5VG90YWxDb3N0U2hvd0luY1RheChqb2IpO1xyXG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XHJcbiAgY29uc3QgaGFzR3JvdXBzID0gdmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwO1xyXG4gIGNvbnN0IGpvYkxldmVsVmFyaWF0aW9ucyA9ICh2YXJpYXRpb25zID8/IFtdKS5maWx0ZXIoXHJcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXHJcbiAgKTtcclxuICBjb25zdCB0b3RhbFF1YW50aXR5ID0gaGFzR3JvdXBzXHJcbiAgICA/IHZhcmlhdGlvbnNHcm91cHMucmVkdWNlKFxyXG4gICAgICAgIChzdW06IG51bWJlciwgZzogYW55KSA9PiBzdW0gKyAoTnVtYmVyKGcucXVhbnRpdHkpIHx8IDApLFxyXG4gICAgICAgIDBcclxuICAgICAgKVxyXG4gICAgOiBOdW1iZXIocXVhbnRpdHkpIHx8IDA7XHJcbiAgY29uc3Qgc2V0dXBQZXJHcm91cCA9IEJvb2xlYW4ocHJvZHVjdD8uc2V0dXBQZXJHcm91cCk7XHJcbiAgY29uc3QgaGFzU2V0dXBQcmljZSA9IE51bWJlcihwcm9kdWN0Py5zZXR1cFByaWNlKSA+IDA7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbW9kYWwtbWVyY2hpLWNoZWNrb3V0LWpvYi1pbmZvLWNvbnRlbnQgbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnknPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktc2VjdGlvbi10aXRsZSc+e3Byb2R1Y3QubmFtZX08L2Rpdj5cclxuICAgICAge2hhc0dyb3VwcyAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWdyb3Vwcyc+XHJcbiAgICAgICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5tYXAoKGc6IGFueSwgaTogbnVtYmVyKSA9PlxyXG4gICAgICAgICAgICBnLnF1YW50aXR5ID8gKFxyXG4gICAgICAgICAgICAgIDxWYXJpYXRpb25Hcm91cEluZm9cclxuICAgICAgICAgICAgICAgIGdyb3VwPXtnfVxyXG4gICAgICAgICAgICAgICAga2V5PXtgJHtpfS1qb2ItaW5mby1jb250ZW50YH1cclxuICAgICAgICAgICAgICAgIGluZGV4PXtpfVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgICAgICAgIHNob3dTZXR1cE9uVW5pdFByaWNlPXtzZXR1cFBlckdyb3VwfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICkgOiBudWxsXHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgICB7IWhhc0dyb3VwcyAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXN0YW5kYWxvbmUnPlxyXG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LW9yZGVyLWRldGFpbC10aXRsZSc+XHJcbiAgICAgICAgICAgIE9yZGVyIEluZm9ybWF0aW9uXHJcbiAgICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICAgIHtxdWFudGl0eSA+IDAgJiYgKFxyXG4gICAgICAgICAgICA8U3VtbWFyeUZpZWxkUm93IGxhYmVsPSdRdWFudGl0eScgdmFsdWU9e3F1YW50aXR5fSAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxTdW1tYXJ5RmllbGRSb3dcclxuICAgICAgICAgICAgbGFiZWw9J1VuaXQgUHJpY2UnXHJcbiAgICAgICAgICAgIHZhbHVlPXtmb3JtYXRVbml0UHJpY2VXaXRoU2V0dXAocHJvZHVjdCl9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAge2pvYkxldmVsVmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgPFZhcmlhdGlvbnNJbmZvXHJcbiAgICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxyXG4gICAgICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XHJcbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHtoYXNHcm91cHMgJiYgam9iTGV2ZWxWYXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxyXG4gICAgICAgICAgICBPcmRlciBJbmZvcm1hdGlvblxyXG4gICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cclxuICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxyXG4gICAgICAgICAgICB2YXJpYXRpb25zPXt2YXJpYXRpb25zfVxyXG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuICAgICAgeyFpc1Jlc2VsbCAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXRvdGFsJz5cclxuICAgICAgICAgIHt0b3RhbFF1YW50aXR5ID4gMCAmJiAoXHJcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbC1xdWFudGl0eSdcclxuICAgICAgICAgICAgICBsYWJlbD0nVG90YWwgUXVhbnRpdHknXHJcbiAgICAgICAgICAgICAgYW1vdW50PXt0b3RhbFF1YW50aXR5fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHtoYXNHcm91cHMgJiYgaGFzU2V0dXBQcmljZSAmJiAhc2V0dXBQZXJHcm91cCAmJiAoXHJcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XHJcbiAgICAgICAgICAgICAgbGFiZWw9J1NldHVwJ1xyXG4gICAgICAgICAgICAgIGFtb3VudD17Zm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdC5zZXR1cFByaWNlKSl9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPFN1bW1hcnlBbW91bnRSb3dcclxuICAgICAgICAgICAgbGFiZWw9J1RvdGFsIE9yZGVyIENvc3QnXHJcbiAgICAgICAgICAgIGxhYmVsRXh0cmE9e1xyXG4gICAgICAgICAgICAgIG5lZWRzU2hpcHBpbmcgPyAoXHJcbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbC1ub3RlJz4gZXggU2hpcG1lbnQ8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICkgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhbW91bnQ9e3RvdGFsQ29zdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHshIShpc1Jlc2VsbCAmJiAhaGFzR3JvdXBzKSAmJiAoXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wJz5cclxuICAgICAgICAgICAge2lzUmVzZWxsID8gJ0FwcHJveGltYXRlIFVuaXQnIDogJ1RvdGFsJ30gQ29zdFxyXG4gICAgICAgICAgPC9zdHJvbmc+eycgJ31cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wIGQtYmxvY2snPnt0b3RhbENvc3R9PC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixT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
|
|
685
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImxlbmd0aCIsImFycjIiLCJyIiwibCIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsImUiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImlzQXJyYXkiLCJSZWFjdCIsInVzZVN0YXRlIiwiRmFGaWxlUGRmIiwiRmFSZWdJbWFnZSIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJGaWVsZFR5cGUiLCJlc3RpbWF0ZUFyZWFDb3N0cyIsImZvcm1hdEFyZWFTdW1tYXJ5IiwibG9jYWxlUHJlZmVyc0ltcGVyaWFsIiwidXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCIsIlN1bW1hcnlBbW91bnRSb3ciLCJTdW1tYXJ5RmllbGRSb3ciLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJmb3JtYXRDb3N0IiwicHJvZHVjdCIsImNvc3QiLCJjdXJyZW5jeSIsInNob3dDb2RlSWZOb1N5bWJvbCIsInBhcnNlQ29zdEFtb3VudCIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImZvcm1hdE9uY2VPZmZVbml0Q29zdERldGFpbCIsIm9uY2VPZmZDb3N0IiwidW5pdENvc3QiLCJwYXJ0cyIsIm9uY2VPZmYiLCJ1bml0IiwiY29uY2F0Iiwiam9pbiIsIm9wdGlvbk9uY2VPZmYiLCJvcHRpb24iLCJ2YXJpYXRpb25Db3N0Iiwib3B0aW9uVW5pdCIsInZhcmlhdGlvblVuaXRDb3N0IiwicHJvZHVjdFNldHVwU3VmZml4Iiwic2V0dXBQcmljZSIsImxhYmVsIiwic2V0dXBQZXJHcm91cCIsImZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cCIsInVuaXRQcmljZSIsImlzUGRmIiwiZmlsZSIsIm1pbWV0eXBlIiwiaXNJbWFnZUZpbGUiLCJzdGFydHNXaXRoIiwidG9Mb3dlckNhc2UiLCJhYnNvbHV0aXplRmlsZVVybCIsInJhdyIsInVybEFwaSIsInVybCIsInRyaW0iLCJiYXNlIiwiVVJMIiwib3JpZ2luIiwiaHJlZiIsIl91bnVzZWQiLCJyZXNvbHZlRmlsZVVybCIsInZpZXdVcmwiLCJkb3dubG9hZFVybCIsIm9wdGlvbkltYWdlVXJsIiwiX29wdGlvbiRsaW5rZWRGaWxlIiwiX29wdGlvbiRsaW5rZWRGaWxlMiIsImxpbmtlZEZpbGUiLCJmaW5kTWF0Y2hpbmdPcHRpb24iLCJvcHRpb25zIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZmluZCIsIlN0cmluZyIsIm9wdGlvbklkIiwicmVzb2x2ZU9wdGlvbkNvbG91ciIsIl9vcHRpb24kY29sb3VyIiwiX2ZpbmRNYXRjaGluZ09wdGlvbiIsIl9maW5kTWF0Y2hpbmdPcHRpb24yIiwic2VsZWN0YWJsZU9wdGlvbnMiLCJmaWVsZE9wdGlvbnMiLCJkaXJlY3QiLCJjb2xvdXIiLCJmcm9tU2VsZWN0YWJsZSIsInJlc29sdmVPcHRpb25JbWFnZVVybCIsImZvcm1hdE9wdGlvbkNvc3QiLCJzZWxsZXJQcm9kdWN0RWRpdGFibGUiLCJvbmNlT2ZmVW5pdCIsInRvdGFsQ29zdCIsInZhcmlhdGlvbkNvc3REZXRhaWwiLCJ2YXJpYXRpb24iLCJfdmFyaWF0aW9uJG9uY2VPZmZDb3MiLCJfdmFyaWF0aW9uJHVuaXRDb3N0IiwiX3JlZiIsIl9yZWYkaW5jbHVkZVNlbGVjdGVkTyIsImluY2x1ZGVTZWxlY3RlZE9wdGlvbkNvc3RzIiwiX3JlZiRmaWVsZENvc3RzT25seSIsImZpZWxkQ29zdHNPbmx5IiwiZmllbGQiLCJ2YXJpYXRpb25GaWVsZCIsImZpZWxkVHlwZSIsIkFSRUEiLCJhcmVhQ29zdHMiLCJzZWxlY3RlZCIsInNlbGVjdGVkT3B0aW9ucyIsImZpZWxkT25jZSIsIkNPTE9VUl9FWFRSQUNUIiwiZmllbGRVbml0IiwicmVkdWNlIiwic3VtIiwiVmFyaWF0aW9uRmlsZVByZXZpZXciLCJfcmVmMiIsImZpbGVVcmwiLCJmaWxlTmFtZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpbWFnZUZhaWxlZCIsInNldEltYWdlRmFpbGVkIiwiY2xhc3NOYW1lIiwidGFyZ2V0IiwicmVsIiwidGl0bGUiLCJjaGlsZHJlbiIsInNyYyIsImFsdCIsIm9uRXJyb3IiLCJWYXJpYXRpb25JbmZvQm9keSIsIl9yZWYzIiwiY29zdERldGFpbCIsImZpbGVzIiwidHlwZSIsImlzQ29sb3VyUGlja2VyIiwiQ09MT1VSX1BJQ0tFUiIsImlzRmlsZVVwbG9hZCIsIkZJTEVfVVBMT0FEIiwiaGFzRmlsZXMiLCJCb29sZWFuIiwiZGlzcGxheVZhbHVlIiwibWFwIiwiaW5kZXgiLCJpZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiVmFyaWF0aW9uSW5mbyIsIl9yZWY0IiwiX3VzZU1lcmNoaUNoZWNrYm91dENvIiwidmFyaWF0aW9uRmlsZXMiLCJfdmFyaWF0aW9uRmllbGQkb3B0aW8iLCJpc1ZhcmlhdGlvblNlbGVjdGFibGUiLCJpc1R1cm5hcm91bmRUaW1lIiwiVFVSTkFST1VORF9USU1FIiwiaXNDb2xvdXJFeHRyYWN0IiwidXNlU2VsZWN0YWJsZURpc3BsYXkiLCJWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkiLCJhcmVhVW5pdCIsIkNvbG91clNlbGVjdE9wdGlvbiIsIl9yZWY1IiwiX29wdGlvbiR2YWx1ZSIsImhleCIsIkltYWdlU2VsZWN0T3B0aW9uIiwiX3JlZjYiLCJfb3B0aW9uJHZhbHVlMiIsIl91c2VNZXJjaGlDaGVja2JvdXRDbzIiLCJpbWFnZVVybCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZ2V0T3B0aW9uSWQiLCJfb3B0aW9uJG9wdGlvbklkIiwicmVzb2x2ZVR1cm5hcm91bmRTZWxlY3RlZE9wdGlvbiIsIl92YXJpYXRpb24kc2VsZWN0ZWRPcCIsInZhbHVlU3RyIiwicG9vbHMiLCJfaSIsIl9wb29scyIsInBvb2wiLCJieUlkIiwiYnlWYWx1ZSIsIl9vJHZhbHVlIiwiZm9ybWF0VHVybmFyb3VuZERlYWRsaW5lIiwidXNlckRlYWRsaW5lIiwic2Vjb25kcyIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ3ZWVrZGF5IiwieWVhciIsIm1vbnRoIiwiZGF5IiwiVHVybmFyb3VuZE9wdGlvbkxhYmVsIiwiX3JlZjciLCJfb3B0aW9uJHZhbHVlMyIsIl9vcHRpb24kdmFsdWU0IiwiZGF5cyIsInBhcnNlSW50IiwiZGVhZGxpbmUiLCJzaGlwcGluZ1RpbWVJbmNsdWRlZCIsImRlYWRsaW5lTGFiZWwiLCJfcmVmOCIsIl92YXJpYXRpb24kdmFyaWF0aW9uRiIsIl9yZWY4JHNlbGVjdGFibGVPcHRpbyIsIl9yZWY4JGZpZWxkT3B0aW9ucyIsImZpcnN0T3B0aW9uIiwiaXNDb2xvdXJTZWxlY3QiLCJDT0xPVVJfU0VMRUNUIiwiaXNJbWFnZVNlbGVjdCIsIklNQUdFX1NFTEVDVCIsInJlbmRlck9wdGlvbkxhYmVsIiwiX28kdmFsdWUyIiwiX28kb3B0aW9uSWQiLCJWYXJpYXRpb25zSW5mbyIsIl9yZWY5IiwicXVhbnRpdHkiLCJfcmVmOSR2YXJpYXRpb25zIiwidmFyaWF0aW9ucyIsInYiLCJWYXJpYXRpb25Hcm91cEluZm8iLCJfcmVmMTAiLCJncm91cCIsInNob3dTZXR1cE9uVW5pdFByaWNlIiwiaXNSZXNlbGwiLCJ2aXNpYmxlVmFyaWF0aW9ucyIsImZpbHRlciIsIl92JHZhcmlhdGlvbkZpZWxkIiwiY29zdExhYmVsIiwidW5pdFByaWNlVmFsdWUiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbzMiLCJqb2IiLCJfam9iJHF1YW50aXR5IiwiX2pvYiR2YXJpYXRpb25zIiwiX2pvYiR2YXJpYXRpb25zR3JvdXBzIiwidmFyaWF0aW9uc0dyb3VwcyIsIm5lZWRzU2hpcHBpbmciLCJoYXNHcm91cHMiLCJqb2JMZXZlbFZhcmlhdGlvbnMiLCJfdiR2YXJpYXRpb25GaWVsZDIiLCJ0b3RhbFF1YW50aXR5IiwiZyIsImhhc1NldHVwUHJpY2UiLCJsYWJlbEV4dHJhIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvSm9iSW5mb0NvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhRmlsZVBkZiwgRmFSZWdJbWFnZSB9IGZyb20gJ3JlYWN0LWljb25zL2ZhJztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXggfSBmcm9tICcuL2N1cnJlbmN5JztcbmltcG9ydCB7XG4gIGlzSW5zdHJ1Y3Rpb25zVHlwZSxcbiAgaXNQcm9kdWN0U3VwcGxpZXJNT0QsXG4gIGlzU2VsZWN0YWJsZSxcbiAgRmllbGRUeXBlLFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICBlc3RpbWF0ZUFyZWFDb3N0cyxcbiAgZm9ybWF0QXJlYVN1bW1hcnksXG4gIGxvY2FsZVByZWZlcnNJbXBlcmlhbCxcbn0gZnJvbSAnLi4vYXJlYSc7XG5pbXBvcnQgeyB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IH0gZnJvbSAnLi9NZXJjaGlDaGVja291dFByb3ZpZGVyJztcbmltcG9ydCB7XG4gIFN1bW1hcnlBbW91bnRSb3csXG4gIFN1bW1hcnlGaWVsZFJvdyxcbn0gZnJvbSAnLi9DaGVja291dFN1bW1hcnlGaWVsZHMnO1xuXG5mdW5jdGlvbiBmb3JtYXRDb3N0KHByb2R1Y3Q6IGFueSwgY29zdDogbnVtYmVyKSB7XG4gIGNvbnN0IGN1cnJlbmN5ID0gcHJvZHVjdC5jdXJyZW5jeSA/IHByb2R1Y3QuY3VycmVuY3kgOiAnQVVEJztcbiAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KGNvc3QsIHtcbiAgICBjdXJyZW5jeSxcbiAgICBzaG93Q29kZUlmTm9TeW1ib2w6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VDb3N0QW1vdW50KHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBhbW91bnQgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShhbW91bnQpICYmIGFtb3VudCA+IDAgPyBhbW91bnQgOiAwO1xufVxuXG4vKiogTWF0Y2ggcHJvZHVjdC1mb3JtIHdvcmRpbmc6IFwiKyAkWCBvbmNlIG9mZlwiIC8gXCIrICRZIHBlciB1bml0XCIuICovXG5mdW5jdGlvbiBmb3JtYXRPbmNlT2ZmVW5pdENvc3REZXRhaWwoXG4gIHByb2R1Y3Q6IGFueSxcbiAgb25jZU9mZkNvc3Q6IGFueSxcbiAgdW5pdENvc3Q6IGFueVxuKSB7XG4gIGNvbnN0IGN1cnJlbmN5ID0gcHJvZHVjdD8uY3VycmVuY3kgfHwgJ0FVRCc7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBvbmNlT2ZmID0gcGFyc2VDb3N0QW1vdW50KG9uY2VPZmZDb3N0KTtcbiAgY29uc3QgdW5pdCA9IHBhcnNlQ29zdEFtb3VudCh1bml0Q29zdCk7XG4gIGlmIChvbmNlT2ZmKSB7XG4gICAgcGFydHMucHVzaChcbiAgICAgIGAgKyAke2Zvcm1hdEN1cnJlbmN5KG9uY2VPZmYsIHsgY3VycmVuY3ksIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UgfSl9IG9uY2Ugb2ZmYFxuICAgICk7XG4gIH1cbiAgaWYgKHVuaXQpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgYCArICR7Zm9ybWF0Q3VycmVuY3kodW5pdCwgeyBjdXJyZW5jeSwgc2hvd0NvZGVJZk5vU3ltYm9sOiBmYWxzZSB9KX0gcGVyIHVuaXRgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcGFydHMuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIG9wdGlvbk9uY2VPZmYob3B0aW9uOiBhbnkpOiBudW1iZXIge1xuICByZXR1cm4gKFxuICAgIHBhcnNlQ29zdEFtb3VudChvcHRpb24/Lm9uY2VPZmZDb3N0KSB8fFxuICAgIHBhcnNlQ29zdEFtb3VudChvcHRpb24/LnZhcmlhdGlvbkNvc3QpIHx8XG4gICAgMFxuICApO1xufVxuXG5mdW5jdGlvbiBvcHRpb25Vbml0KG9wdGlvbjogYW55KTogbnVtYmVyIHtcbiAgcmV0dXJuIChcbiAgICBwYXJzZUNvc3RBbW91bnQob3B0aW9uPy51bml0Q29zdCkgfHxcbiAgICBwYXJzZUNvc3RBbW91bnQob3B0aW9uPy52YXJpYXRpb25Vbml0Q29zdCkgfHxcbiAgICAwXG4gICk7XG59XG5cbi8qKiBQcm9kdWN0IHNldHVwIGZlZSBzaG93biBuZXh0IHRvIHVuaXQgcHJpY2UsIG1hdGNoaW5nIHByb2R1Y3QtZm9ybSB3b3JkaW5nLiAqL1xuZnVuY3Rpb24gcHJvZHVjdFNldHVwU3VmZml4KHByb2R1Y3Q6IGFueSkge1xuICBjb25zdCBzZXR1cFByaWNlID0gTnVtYmVyKHByb2R1Y3Q/LnNldHVwUHJpY2UpO1xuICBpZiAoIXNldHVwUHJpY2UpIHJldHVybiAnJztcbiAgY29uc3QgbGFiZWwgPSBwcm9kdWN0LnNldHVwUGVyR3JvdXAgPyAnc2V0dXAgcGVyIGdyb3VwJyA6ICdzZXR1cCc7XG4gIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIHNldHVwUHJpY2UpfSAke2xhYmVsfWA7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cChwcm9kdWN0OiBhbnkpIHtcbiAgcmV0dXJuIGAke2Zvcm1hdENvc3QocHJvZHVjdCwgTnVtYmVyKHByb2R1Y3Q/LnVuaXRQcmljZSkgfHwgMCl9JHtwcm9kdWN0U2V0dXBTdWZmaXgocHJvZHVjdCl9YDtcbn1cblxuZnVuY3Rpb24gaXNQZGYoZmlsZTogYW55KSB7XG4gIGNvbnN0IG1pbWV0eXBlID0gZmlsZT8ubWltZXR5cGUgfHwgJyc7XG4gIHJldHVybiBtaW1ldHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgbWltZXR5cGUgPT09ICdhcHBsaWNhdGlvbi94LXBkZic7XG59XG5cbmZ1bmN0aW9uIGlzSW1hZ2VGaWxlKGZpbGU6IGFueSkge1xuICBjb25zdCBtaW1ldHlwZSA9IGZpbGU/Lm1pbWV0eXBlIHx8ICcnO1xuICBpZiAobWltZXR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHJldHVybiB0cnVlO1xuICBjb25zdCBuYW1lID0gKGZpbGU/Lm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiAvXFwuKGpwZT9nfHBuZ3xnaWZ8d2VicHxzdmd8Ym1wKSQvLnRlc3QobmFtZSk7XG59XG5cbmZ1bmN0aW9uIGFic29sdXRpemVGaWxlVXJsKHJhdzogc3RyaW5nLCB1cmxBcGk/OiBzdHJpbmcpIHtcbiAgY29uc3QgdXJsID0gKHJhdyB8fCAnJykudHJpbSgpO1xuICBpZiAoIXVybCB8fCB1cmwgPT09ICd1bmRlZmluZWQnIHx8IHVybCA9PT0gJ251bGwnKSByZXR1cm4gJyc7XG4gIGlmICgvXihodHRwcz86fGJsb2I6fGRhdGE6KS9pLnRlc3QodXJsKSkgcmV0dXJuIHVybDtcbiAgaWYgKCF1cmxBcGkpIHJldHVybiB1cmw7XG4gIHRyeSB7XG4gICAgY29uc3QgYmFzZSA9IG5ldyBVUkwodXJsQXBpKTtcbiAgICByZXR1cm4gbmV3IFVSTCh1cmwsIGAke2Jhc2Uub3JpZ2lufS9gKS5ocmVmO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVGaWxlVXJsKGZpbGU6IGFueSwgdXJsQXBpPzogc3RyaW5nKSB7XG4gIHJldHVybiBhYnNvbHV0aXplRmlsZVVybChcbiAgICBmaWxlPy52aWV3VXJsIHx8IGZpbGU/LmRvd25sb2FkVXJsIHx8ICcnLFxuICAgIHVybEFwaVxuICApO1xufVxuXG5mdW5jdGlvbiBvcHRpb25JbWFnZVVybChvcHRpb246IGFueSwgdXJsQXBpPzogc3RyaW5nKSB7XG4gIHJldHVybiBhYnNvbHV0aXplRmlsZVVybChcbiAgICBvcHRpb24/LmxpbmtlZEZpbGU/LnZpZXdVcmwgfHwgb3B0aW9uPy5saW5rZWRGaWxlPy5kb3dubG9hZFVybCB8fCAnJyxcbiAgICB1cmxBcGlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbjogYW55LCBvcHRpb25zOiBhbnlbXSA9IFtdKSB7XG4gIHJldHVybiBvcHRpb25zLmZpbmQoKG8pID0+IFN0cmluZyhvLm9wdGlvbklkKSA9PT0gU3RyaW5nKG9wdGlvbj8ub3B0aW9uSWQpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU9wdGlvbkNvbG91cihcbiAgb3B0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCBkaXJlY3QgPSBvcHRpb24/LmNvbG91cj8udHJpbSgpO1xuICBpZiAoZGlyZWN0KSByZXR1cm4gZGlyZWN0O1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKT8uY29sb3VyPy50cmltKCk7XG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xuICByZXR1cm4gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgZmllbGRPcHRpb25zKT8uY29sb3VyPy50cmltKCkgfHwgJyc7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPcHRpb25JbWFnZVVybChcbiAgb3B0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW10sXG4gIHVybEFwaT86IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGRpcmVjdCA9IG9wdGlvbkltYWdlVXJsKG9wdGlvbiwgdXJsQXBpKTtcbiAgaWYgKGRpcmVjdCkgcmV0dXJuIGRpcmVjdDtcbiAgY29uc3QgZnJvbVNlbGVjdGFibGUgPSBvcHRpb25JbWFnZVVybChcbiAgICBmaW5kTWF0Y2hpbmdPcHRpb24ob3B0aW9uLCBzZWxlY3RhYmxlT3B0aW9ucyksXG4gICAgdXJsQXBpXG4gICk7XG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xuICByZXR1cm4gb3B0aW9uSW1hZ2VVcmwoZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgZmllbGRPcHRpb25zKSwgdXJsQXBpKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0T3B0aW9uQ29zdChcbiAgcHJvZHVjdDogYW55LFxuICBvcHRpb246IGFueSxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlOiBib29sZWFuXG4pIHtcbiAgaWYgKHNlbGxlclByb2R1Y3RFZGl0YWJsZSB8fCAhb3B0aW9uKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgb25jZU9mZlVuaXQgPSBmb3JtYXRPbmNlT2ZmVW5pdENvc3REZXRhaWwoXG4gICAgcHJvZHVjdCxcbiAgICBvcHRpb25PbmNlT2ZmKG9wdGlvbiksXG4gICAgb3B0aW9uVW5pdChvcHRpb24pXG4gICk7XG4gIGlmIChvbmNlT2ZmVW5pdCkgcmV0dXJuIG9uY2VPZmZVbml0O1xuICBpZiAob3B0aW9uLnRvdGFsQ29zdCkge1xuICAgIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIG9wdGlvbi50b3RhbENvc3QpfWA7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHZhcmlhdGlvbkNvc3REZXRhaWwoXG4gIHByb2R1Y3Q6IGFueSxcbiAgdmFyaWF0aW9uOiBhbnksXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZTogYm9vbGVhbixcbiAge1xuICAgIGluY2x1ZGVTZWxlY3RlZE9wdGlvbkNvc3RzID0gdHJ1ZSxcbiAgICBmaWVsZENvc3RzT25seSA9IGZhbHNlLFxuICB9OiB7XG4gICAgaW5jbHVkZVNlbGVjdGVkT3B0aW9uQ29zdHM/OiBib29sZWFuO1xuICAgIGZpZWxkQ29zdHNPbmx5PzogYm9vbGVhbjtcbiAgfSA9IHt9XG4pIHtcbiAgaWYgKHNlbGxlclByb2R1Y3RFZGl0YWJsZSkgcmV0dXJuICcnO1xuXG4gIGNvbnN0IGZpZWxkID0gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZCB8fCB7fTtcbiAgY29uc3QgZmllbGRUeXBlID0gTnVtYmVyKGZpZWxkLmZpZWxkVHlwZSk7XG5cbiAgaWYgKGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkFSRUEpIHtcbiAgICBjb25zdCBhcmVhQ29zdHMgPSBlc3RpbWF0ZUFyZWFDb3N0cyhmaWVsZCwgdmFyaWF0aW9uPy52YWx1ZSk7XG4gICAgaWYgKGFyZWFDb3N0cykge1xuICAgICAgcmV0dXJuIGZvcm1hdE9uY2VPZmZVbml0Q29zdERldGFpbChcbiAgICAgICAgcHJvZHVjdCxcbiAgICAgICAgYXJlYUNvc3RzLm9uY2VPZmZDb3N0LFxuICAgICAgICBhcmVhQ29zdHMudW5pdENvc3RcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZpZWxkQ29zdHNPbmx5KSB7XG4gICAgcmV0dXJuIGZvcm1hdE9uY2VPZmZVbml0Q29zdERldGFpbChcbiAgICAgIHByb2R1Y3QsXG4gICAgICBmaWVsZC52YXJpYXRpb25Db3N0LFxuICAgICAgZmllbGQudmFyaWF0aW9uVW5pdENvc3RcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZhcmlhdGlvbj8uc2VsZWN0ZWRPcHRpb25zKVxuICAgID8gdmFyaWF0aW9uLnNlbGVjdGVkT3B0aW9uc1xuICAgIDogW107XG4gIGlmIChpbmNsdWRlU2VsZWN0ZWRPcHRpb25Db3N0cyAmJiBzZWxlY3RlZC5sZW5ndGgpIHtcbiAgICBjb25zdCBmaWVsZE9uY2UgPVxuICAgICAgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX0VYVFJBQ1RcbiAgICAgICAgPyBwYXJzZUNvc3RBbW91bnQoZmllbGQudmFyaWF0aW9uQ29zdClcbiAgICAgICAgOiAwO1xuICAgIGNvbnN0IGZpZWxkVW5pdCA9XG4gICAgICBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfRVhUUkFDVFxuICAgICAgICA/IHBhcnNlQ29zdEFtb3VudChmaWVsZC52YXJpYXRpb25Vbml0Q29zdClcbiAgICAgICAgOiAwO1xuICAgIHJldHVybiBmb3JtYXRPbmNlT2ZmVW5pdENvc3REZXRhaWwoXG4gICAgICBwcm9kdWN0LFxuICAgICAgZmllbGRPbmNlICtcbiAgICAgICAgc2VsZWN0ZWQucmVkdWNlKFxuICAgICAgICAgIChzdW06IG51bWJlciwgb3B0aW9uOiBhbnkpID0+IHN1bSArIG9wdGlvbk9uY2VPZmYob3B0aW9uKSxcbiAgICAgICAgICAwXG4gICAgICAgICksXG4gICAgICBmaWVsZFVuaXQgK1xuICAgICAgICBzZWxlY3RlZC5yZWR1Y2UoXG4gICAgICAgICAgKHN1bTogbnVtYmVyLCBvcHRpb246IGFueSkgPT4gc3VtICsgb3B0aW9uVW5pdChvcHRpb24pLFxuICAgICAgICAgIDBcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBjb25zdCBvbmNlT2ZmVW5pdCA9IGZvcm1hdE9uY2VPZmZVbml0Q29zdERldGFpbChcbiAgICBwcm9kdWN0LFxuICAgIHZhcmlhdGlvbj8ub25jZU9mZkNvc3QgPz8gZmllbGQudmFyaWF0aW9uQ29zdCxcbiAgICB2YXJpYXRpb24/LnVuaXRDb3N0ID8/IGZpZWxkLnZhcmlhdGlvblVuaXRDb3N0XG4gICk7XG4gIGlmIChvbmNlT2ZmVW5pdCkgcmV0dXJuIG9uY2VPZmZVbml0O1xuICBpZiAodmFyaWF0aW9uPy5jb3N0KSB7XG4gICAgcmV0dXJuIGAgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgdmFyaWF0aW9uLmNvc3QpfWA7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25GaWxlUHJldmlldyh7XG4gIGZpbGUsXG4gIHVybEFwaSxcbn06IHtcbiAgZmlsZTogYW55O1xuICB1cmxBcGk/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IGZpbGVVcmwgPSByZXNvbHZlRmlsZVVybChmaWxlLCB1cmxBcGkpO1xuICBjb25zdCBmaWxlTmFtZSA9IGZpbGU/Lm5hbWUgfHwgJ0ZpbGUnO1xuICBjb25zdCBbaW1hZ2VGYWlsZWQsIHNldEltYWdlRmFpbGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBpZiAoaXNQZGYoZmlsZSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLWxpbmsnXG4gICAgICAgIGhyZWY9e2ZpbGVVcmwgfHwgdW5kZWZpbmVkfVxuICAgICAgICB0YXJnZXQ9J19ibGFuaydcbiAgICAgICAgcmVsPSdub29wZW5lciBub3JlZmVycmVyJ1xuICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XG4gICAgICA+XG4gICAgICAgIDxGYUZpbGVQZGYgYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICApO1xuICB9XG5cbiAgaWYgKGlzSW1hZ2VGaWxlKGZpbGUpICYmIGZpbGVVcmwgJiYgIWltYWdlRmFpbGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudC1pbWcnXG4gICAgICAgIHNyYz17ZmlsZVVybH1cbiAgICAgICAgYWx0PXtmaWxlTmFtZX1cbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxuICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRJbWFnZUZhaWxlZCh0cnVlKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc0ltYWdlRmlsZShmaWxlKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtZmFsbGJhY2snXG4gICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cbiAgICAgID5cbiAgICAgICAgPEZhUmVnSW1hZ2UgYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGZpbGVVcmwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLWxpbmsnXG4gICAgICAgIGhyZWY9e2ZpbGVVcmx9XG4gICAgICAgIHRhcmdldD0nX2JsYW5rJ1xuICAgICAgICByZWw9J25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cbiAgICAgID5cbiAgICAgICAge2ZpbGVOYW1lfVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj47XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm9Cb2R5KHtcbiAgY29zdERldGFpbCxcbiAgbmFtZSxcbiAgcHJvZHVjdCxcbiAgdmFsdWUsXG4gIGZpbGVzLFxuICB0eXBlLFxuICB1cmxBcGksXG59OiBhbnkpIHtcbiAgY29uc3QgaXNDb2xvdXJQaWNrZXIgPSB0eXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX1BJQ0tFUjtcbiAgY29uc3QgaXNGaWxlVXBsb2FkID1cbiAgICB0eXBlID09PSBGaWVsZFR5cGUuRklMRV9VUExPQUQgfHwgdHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9FWFRSQUNUO1xuICBjb25zdCBoYXNGaWxlcyA9IEJvb2xlYW4oZmlsZXM/Lmxlbmd0aCk7XG4gIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGlzQ29sb3VyUGlja2VyIHx8IChpc0ZpbGVVcGxvYWQgJiYgaGFzRmlsZXMpID8gbnVsbCA6IHZhbHVlO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxuICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1sYWJlbCc+e25hbWV9PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz5cbiAgICAgICAge2hhc0ZpbGVzICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZmlsZS1wcmV2aWV3cyc+XG4gICAgICAgICAgICB7ZmlsZXMubWFwKChmaWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICAgICAgPFZhcmlhdGlvbkZpbGVQcmV2aWV3XG4gICAgICAgICAgICAgICAga2V5PXtmaWxlLnZpZXdVcmwgfHwgZmlsZS5pZCB8fCBgJHtuYW1lfS1maWxlLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICBmaWxlPXtmaWxlfVxuICAgICAgICAgICAgICAgIHVybEFwaT17dXJsQXBpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0NvbG91clBpY2tlciAmJiB2YWx1ZSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWNvbG91ci12YWx1ZSc+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT0nY29sb3ItaW5kaWNhdG9yJ1xuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPnt2YWx1ZX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIHtkaXNwbGF5VmFsdWUgJiYgZGlzcGxheVZhbHVlfVxuICAgICAgICB7Y29zdERldGFpbCB8fCAnJ31cbiAgICAgICAgeyFoYXNGaWxlcyAmJiAhdmFsdWUgJiYgIWNvc3REZXRhaWwgJiYgJy0nfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm8oeyBwcm9kdWN0LCB2YXJpYXRpb24gfTogYW55KSB7XG4gIGNvbnN0IHsgdXJsQXBpIH0gPSB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0KCk7XG4gIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb25zLCB2YXJpYXRpb25GaWVsZCwgdmFyaWF0aW9uRmlsZXMsIHNlbGVjdGFibGVPcHRpb25zIH0gPVxuICAgIHZhcmlhdGlvbjtcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSwgb3B0aW9uczogZmllbGRPcHRpb25zID0gW10gfSA9XG4gICAgdmFyaWF0aW9uRmllbGQ7XG4gIGNvbnN0IGlzVmFyaWF0aW9uU2VsZWN0YWJsZSA9IGlzU2VsZWN0YWJsZShmaWVsZFR5cGUpO1xuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xuICBjb25zdCBpc0NvbG91ckV4dHJhY3QgPSBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfRVhUUkFDVDtcbiAgY29uc3Qgb3B0aW9ucyA9IHNlbGVjdGVkT3B0aW9ucztcbiAgY29uc3QgdXNlU2VsZWN0YWJsZURpc3BsYXkgPVxuICAgIGlzVmFyaWF0aW9uU2VsZWN0YWJsZSAmJlxuICAgIChCb29sZWFuKG9wdGlvbnM/Lmxlbmd0aCkgfHwgKGlzVHVybmFyb3VuZFRpbWUgJiYgdmFyaWF0aW9uLnZhbHVlKSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbic+XG4gICAgICB7aXNDb2xvdXJFeHRyYWN0ID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e2ZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXtudWxsfVxuICAgICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxuICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICAgIHVybEFwaT17dXJsQXBpfVxuICAgICAgICAgICAgY29zdERldGFpbD17dmFyaWF0aW9uQ29zdERldGFpbChcbiAgICAgICAgICAgICAgcHJvZHVjdCxcbiAgICAgICAgICAgICAgdmFyaWF0aW9uLFxuICAgICAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXG4gICAgICAgICAgICAgIC8vIE9wdGlvbnMgbGlzdCBzaG93cyBlYWNoIGNvbG91ciBjb3N0OyBrZWVwIGZpZWxkIGJhc2UgY29zdCBoZXJlLlxuICAgICAgICAgICAgICBvcHRpb25zPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHsgZmllbGRDb3N0c09ubHk6IHRydWUgfVxuICAgICAgICAgICAgICAgIDogeyBpbmNsdWRlU2VsZWN0ZWRPcHRpb25Db3N0czogZmFsc2UgfVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtvcHRpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICA8VmFyaWF0aW9uT3B0aW9uc0luZm9Cb2R5XG4gICAgICAgICAgICAgIG5hbWU9e2Ake3ZhcmlhdGlvbkZpZWxkLm5hbWV9IGNvbG91cnNgfVxuICAgICAgICAgICAgICBmaWVsZFR5cGU9e2ZpZWxkVHlwZX1cbiAgICAgICAgICAgICAgdmFsdWU9e3ZhcmlhdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgICB2YXJpYXRpb249e3ZhcmlhdGlvbn1cbiAgICAgICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxuICAgICAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiB1c2VTZWxlY3RhYmxlRGlzcGxheSA/IChcbiAgICAgICAgPFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keVxuICAgICAgICAgIG5hbWU9e3ZhcmlhdGlvbkZpZWxkLm5hbWV9XG4gICAgICAgICAgZmllbGRUeXBlPXtmaWVsZFR5cGV9XG4gICAgICAgICAgdmFsdWU9e3ZhcmlhdGlvbi52YWx1ZX1cbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIGZpbGVzPXt2YXJpYXRpb25GaWxlc31cbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgdmFyaWF0aW9uPXt2YXJpYXRpb259XG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPFZhcmlhdGlvbkluZm9Cb2R5XG4gICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICB0eXBlPXt2YXJpYXRpb25GaWVsZC5maWVsZFR5cGV9XG4gICAgICAgICAgdmFsdWU9e1xuICAgICAgICAgICAgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQVJFQSAmJiB2YXJpYXRpb24udmFsdWVcbiAgICAgICAgICAgICAgPyBmb3JtYXRBcmVhU3VtbWFyeShcbiAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZVByZWZlcnNJbXBlcmlhbCgpID8gJ2ltcGVyaWFsJyA6ICdtZXRyaWMnLFxuICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uRmllbGQuYXJlYVVuaXQgfHwgJ21tJ1xuICAgICAgICAgICAgICAgICkgfHwgdmFyaWF0aW9uLnZhbHVlXG4gICAgICAgICAgICAgIDogdmFyaWF0aW9uLnZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbGVzPXt2YXJpYXRpb25GaWxlc31cbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIHVybEFwaT17dXJsQXBpfVxuICAgICAgICAgIGNvc3REZXRhaWw9e3ZhcmlhdGlvbkNvc3REZXRhaWwoXG4gICAgICAgICAgICBwcm9kdWN0LFxuICAgICAgICAgICAgdmFyaWF0aW9uLFxuICAgICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxuICAgICAgICAgICAgeyBpbmNsdWRlU2VsZWN0ZWRPcHRpb25Db3N0czogZmFsc2UgfVxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBDb2xvdXJTZWxlY3RPcHRpb24oe1xuICBvcHRpb24sXG4gIHNlbGVjdGFibGVPcHRpb25zLFxuICBmaWVsZE9wdGlvbnMsXG4gIHByb2R1Y3QsXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcbn06IHtcbiAgb3B0aW9uOiBhbnk7XG4gIHNlbGVjdGFibGVPcHRpb25zPzogYW55W107XG4gIGZpZWxkT3B0aW9ucz86IGFueVtdO1xuICBwcm9kdWN0PzogYW55O1xuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcbiAgY29uc3QgaGV4ID0gcmVzb2x2ZU9wdGlvbkNvbG91cihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zLCBmaWVsZE9wdGlvbnMpO1xuICBjb25zdCBjb3N0ID0gZm9ybWF0T3B0aW9uQ29zdChcbiAgICBwcm9kdWN0LFxuICAgIG9wdGlvbixcbiAgICBCb29sZWFuKHNlbGxlclByb2R1Y3RFZGl0YWJsZSlcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWNvbG91ci1vcHRpb24nPlxuICAgICAge2hleCAmJiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBoZXggfX1cbiAgICAgICAgICBjbGFzc05hbWU9J2NvbG9yLWluZGljYXRvcidcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8c3Bhbj5cbiAgICAgICAge2xhYmVsIHx8IGhleCB8fCAn4oCTJ31cbiAgICAgICAge2Nvc3QgfHwgJyd9XG4gICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5mdW5jdGlvbiBJbWFnZVNlbGVjdE9wdGlvbih7XG4gIG9wdGlvbixcbiAgc2VsZWN0YWJsZU9wdGlvbnMsXG4gIGZpZWxkT3B0aW9ucyxcbiAgcHJvZHVjdCxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxufToge1xuICBvcHRpb246IGFueTtcbiAgc2VsZWN0YWJsZU9wdGlvbnM/OiBhbnlbXTtcbiAgZmllbGRPcHRpb25zPzogYW55W107XG4gIHByb2R1Y3Q6IGFueTtcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlOiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IHVybEFwaSB9ID0gdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCgpO1xuICBjb25zdCBpbWFnZVVybCA9IHJlc29sdmVPcHRpb25JbWFnZVVybChcbiAgICBvcHRpb24sXG4gICAgc2VsZWN0YWJsZU9wdGlvbnMsXG4gICAgZmllbGRPcHRpb25zLFxuICAgIHVybEFwaVxuICApO1xuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgb3B0aW9uLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpO1xuICBjb25zdCBbaW1hZ2VGYWlsZWQsIHNldEltYWdlRmFpbGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktaW1hZ2Utc2VsZWN0LW9wdGlvbic+XG4gICAgICB7aW1hZ2VVcmwgJiYgIWltYWdlRmFpbGVkID8gKFxuICAgICAgICA8aW1nXG4gICAgICAgICAgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudC1pbWcnXG4gICAgICAgICAgc3JjPXtpbWFnZVVybH1cbiAgICAgICAgICBhbHQ9e2xhYmVsIHx8ICdTZWxlY3RlZCBvcHRpb24nfVxuICAgICAgICAgIHRpdGxlPXtsYWJlbCB8fCB1bmRlZmluZWR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SW1hZ2VGYWlsZWQodHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxzcGFuPlxuICAgICAgICB7bGFiZWwgfHwgJ+KAkyd9XG4gICAgICAgIHtjb3N0IHx8ICcnfVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3B0aW9uSWQob3B0aW9uOiBhbnkpIHtcbiAgcmV0dXJuIG9wdGlvbj8ub3B0aW9uSWQgPz8gb3B0aW9uPy5pZDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVR1cm5hcm91bmRTZWxlY3RlZE9wdGlvbihcbiAgdmFyaWF0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCB7IHNlbGVjdGVkT3B0aW9ucyA9IFtdLCB2YWx1ZSB9ID0gdmFyaWF0aW9uO1xuICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zWzBdO1xuICB9XG4gIGNvbnN0IHZhbHVlU3RyID0gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycgPyBTdHJpbmcodmFsdWUpLnRyaW0oKSA6ICcnO1xuICBpZiAoIXZhbHVlU3RyKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBwb29scyA9IFtzZWxlY3RhYmxlT3B0aW9ucywgZmllbGRPcHRpb25zXTtcbiAgZm9yIChjb25zdCBwb29sIG9mIHBvb2xzKSB7XG4gICAgY29uc3QgYnlJZCA9IHBvb2wuZmluZChcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhnZXRPcHRpb25JZChvKSkgPT09IHZhbHVlU3RyXG4gICAgKTtcbiAgICBpZiAoYnlJZCkgcmV0dXJuIGJ5SWQ7XG4gICAgY29uc3QgYnlWYWx1ZSA9IHBvb2wuZmluZChcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhvLnZhbHVlID8/ICcnKSA9PT0gdmFsdWVTdHJcbiAgICApO1xuICAgIGlmIChieVZhbHVlKSByZXR1cm4gYnlWYWx1ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VHVybmFyb3VuZERlYWRsaW5lKHVzZXJEZWFkbGluZTogYW55KSB7XG4gIGlmICghdXNlckRlYWRsaW5lKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih1c2VyRGVhZGxpbmUpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShzZWNvbmRzKSB8fCBzZWNvbmRzIDw9IDApIHJldHVybiBudWxsO1xuICByZXR1cm4gbmV3IERhdGUoc2Vjb25kcyAqIDEwMDApLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQVUnLCB7XG4gICAgd2Vla2RheTogJ2xvbmcnLFxuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ2xvbmcnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gVHVybmFyb3VuZE9wdGlvbkxhYmVsKHtcbiAgb3B0aW9uLFxuICB2YXJpYXRpb25GaWVsZCxcbiAgcHJvZHVjdCxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxufToge1xuICBvcHRpb246IGFueTtcbiAgdmFyaWF0aW9uRmllbGQ6IGFueTtcbiAgcHJvZHVjdDogYW55O1xuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGRheXMgPSBwYXJzZUludChTdHJpbmcob3B0aW9uPy52YWx1ZSA/PyAnJyksIDEwKSB8fCAwO1xuICBjb25zdCBkZWFkbGluZSA9IGZvcm1hdFR1cm5hcm91bmREZWFkbGluZShvcHRpb24/LnVzZXJEZWFkbGluZSk7XG4gIGNvbnN0IHNoaXBwaW5nVGltZUluY2x1ZGVkID0gQm9vbGVhbih2YXJpYXRpb25GaWVsZD8uc2hpcHBpbmdUaW1lSW5jbHVkZWQpO1xuICBjb25zdCBkZWFkbGluZUxhYmVsID0gc2hpcHBpbmdUaW1lSW5jbHVkZWQgPyAnRGVsaXZlcnkgYnknIDogJ1Byb2R1Y2VkIGJ5JztcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgb3B0aW9uLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10dXJuYXJvdW5kLXZhbHVlJz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kYXlzJz5cbiAgICAgICAge2RheXMgPiAwXG4gICAgICAgICAgPyBgJHtkYXlzfSBidXNpbmVzcyBkYXkke2RheXMgIT09IDEgPyAncycgOiAnJ31gXG4gICAgICAgICAgOiAob3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICfigJMnKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtkZWFkbGluZSAmJiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kZWFkbGluZSc+XG4gICAgICAgICAge2RlYWRsaW5lTGFiZWx9IHtkZWFkbGluZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICAgIHtjb3N0IHx8ICcnfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWF0aW9uT3B0aW9uc0luZm9Cb2R5KHtcbiAgbmFtZSxcbiAgc2VsZWN0ZWRPcHRpb25zLFxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXG4gIHByb2R1Y3QsXG4gIGZpZWxkVHlwZSxcbiAgdmFyaWF0aW9uLFxuICBzZWxlY3RhYmxlT3B0aW9ucyA9IFtdLFxuICBmaWVsZE9wdGlvbnMgPSBbXSxcbn06IGFueSkge1xuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xuICBjb25zdCBmaXJzdE9wdGlvbiA9IGlzVHVybmFyb3VuZFRpbWVcbiAgICA/IHJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24oXG4gICAgICAgIHsgc2VsZWN0ZWRPcHRpb25zLCB2YWx1ZTogdmFyaWF0aW9uPy52YWx1ZSB9LFxuICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucyxcbiAgICAgICAgZmllbGRPcHRpb25zXG4gICAgICApXG4gICAgOiBzZWxlY3RlZE9wdGlvbnNbMF07XG4gIGNvbnN0IGlzQ29sb3VyU2VsZWN0ID1cbiAgICBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfU0VMRUNUIHx8XG4gICAgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX0VYVFJBQ1Q7XG4gIGNvbnN0IGlzSW1hZ2VTZWxlY3QgPSBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5JTUFHRV9TRUxFQ1Q7XG4gIGNvbnN0IHZhcmlhdGlvbkZpZWxkID0gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZCA/PyB7fTtcblxuICBmdW5jdGlvbiByZW5kZXJPcHRpb25MYWJlbChvOiBhbnkpIHtcbiAgICBpZiAoaXNUdXJuYXJvdW5kVGltZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFR1cm5hcm91bmRPcHRpb25MYWJlbFxuICAgICAgICAgIG9wdGlvbj17b31cbiAgICAgICAgICB2YXJpYXRpb25GaWVsZD17dmFyaWF0aW9uRmllbGR9XG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGU9e3NlbGxlclByb2R1Y3RFZGl0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0NvbG91clNlbGVjdCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbG91clNlbGVjdE9wdGlvblxuICAgICAgICAgIG9wdGlvbj17b31cbiAgICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucz17c2VsZWN0YWJsZU9wdGlvbnN9XG4gICAgICAgICAgZmllbGRPcHRpb25zPXtmaWVsZE9wdGlvbnN9XG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGU9e3NlbGxlclByb2R1Y3RFZGl0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0ltYWdlU2VsZWN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SW1hZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgICBvcHRpb249e299XG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge28udmFsdWU/LnRyaW0oKSB8fCAn4oCTJ31cbiAgICAgICAge2Zvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgbywgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKSB8fCAnJ31cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDEgJiYgIWlzVHVybmFyb3VuZFRpbWUgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUgbGlzdC11bnN0eWxlZCBtLTAnPlxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkID8/IGl9YH0+XG4gICAgICAgICAgICAgICAge3JlbmRlck9wdGlvbkxhYmVsKG8pfVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogZmlyc3RPcHRpb24gPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz5cbiAgICAgICAgICAgIHtyZW5kZXJPcHRpb25MYWJlbChmaXJzdE9wdGlvbil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPi08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25zSW5mbyh7IHByb2R1Y3QsIHF1YW50aXR5LCB2YXJpYXRpb25zID0gW10gfTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbnMnPlxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXG4gICAgICAgICAgPFZhcmlhdGlvbkluZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IG51bGxcbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkdyb3VwSW5mbyh7XG4gIGdyb3VwLFxuICBpbmRleCxcbiAgcHJvZHVjdCxcbiAgc2hvd1NldHVwT25Vbml0UHJpY2UsXG59OiBhbnkpIHtcbiAgY29uc3QgaXNSZXNlbGwgPSBpc1Byb2R1Y3RTdXBwbGllck1PRChwcm9kdWN0KTtcbiAgY29uc3QgeyBxdWFudGl0eSwgdmFyaWF0aW9ucyB9ID0gZ3JvdXA7XG4gIGNvbnN0IHZpc2libGVWYXJpYXRpb25zID0gKHZhcmlhdGlvbnMgPz8gW10pLmZpbHRlcihcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXG4gICk7XG4gIGNvbnN0IGNvc3RMYWJlbCA9IGlzUmVzZWxsID8gJ1VuaXQgQ29zdCcgOiAnR3JvdXAgQ29zdCc7XG4gIGNvbnN0IHVuaXRQcmljZVZhbHVlID0gc2hvd1NldHVwT25Vbml0UHJpY2VcbiAgICA/IGZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cChwcm9kdWN0KVxuICAgIDogZm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdD8udW5pdFByaWNlKSB8fCAwKTtcblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZ3JvdXAnPlxuICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LW9yZGVyLWRldGFpbC10aXRsZSc+XG4gICAgICAgIEdyb3VwIHtpbmRleCArIDF9IEluZm9ybWF0aW9uXG4gICAgICA8L3N0cm9uZz5cbiAgICAgIHshaXNSZXNlbGwgJiYgcXVhbnRpdHkgPiAwICYmIChcbiAgICAgICAgPFN1bW1hcnlGaWVsZFJvdyBsYWJlbD0nUXVhbnRpdHknIHZhbHVlPXtxdWFudGl0eX0gLz5cbiAgICAgICl9XG4gICAgICA8U3VtbWFyeUZpZWxkUm93IGxhYmVsPSdVbml0IFByaWNlJyB2YWx1ZT17dW5pdFByaWNlVmFsdWV9IC8+XG4gICAgICB7dmlzaWJsZVZhcmlhdGlvbnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxWYXJpYXRpb25zSW5mb1xuICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICB2YXJpYXRpb25zPXt2YXJpYXRpb25zfVxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWdyb3VwLWNvc3QnPlxuICAgICAgICB7Y29zdExhYmVsfToge2Zvcm1hdENvc3QocHJvZHVjdCwgZ3JvdXAuZ3JvdXBDb3N0KX1cbiAgICAgIDwvc3Ryb25nPlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSm9iSW5mb0NvbnRlbnQoKSB7XG4gIGNvbnN0IHsgam9iIH0gPSB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0KCk7XG4gIGNvbnN0IHsgcHJvZHVjdCwgcXVhbnRpdHkgPSAwLCB2YXJpYXRpb25zID0gW10sIHZhcmlhdGlvbnNHcm91cHMgPSBbXSB9ID0gam9iO1xuICBjb25zdCB7IG5lZWRzU2hpcHBpbmcgfSA9IHByb2R1Y3Q7XG4gIGNvbnN0IHRvdGFsQ29zdCA9IGN1cnJlbmN5VG90YWxDb3N0U2hvd0luY1RheChqb2IpO1xuICBjb25zdCBpc1Jlc2VsbCA9IGlzUHJvZHVjdFN1cHBsaWVyTU9EKHByb2R1Y3QpO1xuICBjb25zdCBoYXNHcm91cHMgPSB2YXJpYXRpb25zR3JvdXBzLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGpvYkxldmVsVmFyaWF0aW9ucyA9ICh2YXJpYXRpb25zID8/IFtdKS5maWx0ZXIoXG4gICAgKHY6IGFueSkgPT4gIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2Py52YXJpYXRpb25GaWVsZD8uZmllbGRUeXBlKVxuICApO1xuICBjb25zdCB0b3RhbFF1YW50aXR5ID0gaGFzR3JvdXBzXG4gICAgPyB2YXJpYXRpb25zR3JvdXBzLnJlZHVjZShcbiAgICAgICAgKHN1bTogbnVtYmVyLCBnOiBhbnkpID0+IHN1bSArIChOdW1iZXIoZy5xdWFudGl0eSkgfHwgMCksXG4gICAgICAgIDBcbiAgICAgIClcbiAgICA6IE51bWJlcihxdWFudGl0eSkgfHwgMDtcbiAgY29uc3Qgc2V0dXBQZXJHcm91cCA9IEJvb2xlYW4ocHJvZHVjdD8uc2V0dXBQZXJHcm91cCk7XG4gIGNvbnN0IGhhc1NldHVwUHJpY2UgPSBOdW1iZXIocHJvZHVjdD8uc2V0dXBQcmljZSkgPiAwO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50IG1lcmNoaS1jaGVja291dC1zdW1tYXJ5Jz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zZWN0aW9uLXRpdGxlJz57cHJvZHVjdC5uYW1lfTwvZGl2PlxuICAgICAge2hhc0dyb3VwcyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1ncm91cHMnPlxuICAgICAgICAgIHt2YXJpYXRpb25zR3JvdXBzLm1hcCgoZzogYW55LCBpOiBudW1iZXIpID0+XG4gICAgICAgICAgICBnLnF1YW50aXR5ID8gKFxuICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXG4gICAgICAgICAgICAgICAgZ3JvdXA9e2d9XG4gICAgICAgICAgICAgICAga2V5PXtgJHtpfS1qb2ItaW5mby1jb250ZW50YH1cbiAgICAgICAgICAgICAgICBpbmRleD17aX1cbiAgICAgICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgICAgIHNob3dTZXR1cE9uVW5pdFByaWNlPXtzZXR1cFBlckdyb3VwfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7IWhhc0dyb3VwcyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktb3JkZXItZGV0YWlsLXRpdGxlJz5cbiAgICAgICAgICAgIE9yZGVyIEluZm9ybWF0aW9uXG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAge3F1YW50aXR5ID4gMCAmJiAoXG4gICAgICAgICAgICA8U3VtbWFyeUZpZWxkUm93IGxhYmVsPSdRdWFudGl0eScgdmFsdWU9e3F1YW50aXR5fSAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN1bW1hcnlGaWVsZFJvd1xuICAgICAgICAgICAgbGFiZWw9J1VuaXQgUHJpY2UnXG4gICAgICAgICAgICB2YWx1ZT17Zm9ybWF0VW5pdFByaWNlV2l0aFNldHVwKHByb2R1Y3QpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2pvYkxldmVsVmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgIDxWYXJpYXRpb25zSW5mb1xuICAgICAgICAgICAgICBxdWFudGl0eT17cXVhbnRpdHl9XG4gICAgICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XG4gICAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIHtoYXNHcm91cHMgJiYgam9iTGV2ZWxWYXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktc3RhbmRhbG9uZSc+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LW9yZGVyLWRldGFpbC10aXRsZSc+XG4gICAgICAgICAgICBPcmRlciBJbmZvcm1hdGlvblxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDxWYXJpYXRpb25zSW5mb1xuICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxuICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgeyFpc1Jlc2VsbCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbCc+XG4gICAgICAgICAge3RvdGFsUXVhbnRpdHkgPiAwICYmIChcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdG90YWwtcXVhbnRpdHknXG4gICAgICAgICAgICAgIGxhYmVsPSdUb3RhbCBRdWFudGl0eSdcbiAgICAgICAgICAgICAgYW1vdW50PXt0b3RhbFF1YW50aXR5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtoYXNHcm91cHMgJiYgaGFzU2V0dXBQcmljZSAmJiAhc2V0dXBQZXJHcm91cCAmJiAoXG4gICAgICAgICAgICA8U3VtbWFyeUFtb3VudFJvd1xuICAgICAgICAgICAgICBsYWJlbD0nU2V0dXAnXG4gICAgICAgICAgICAgIGFtb3VudD17Zm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdC5zZXR1cFByaWNlKSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN1bW1hcnlBbW91bnRSb3dcbiAgICAgICAgICAgIGxhYmVsPSdUb3RhbCBPcmRlciBDb3N0J1xuICAgICAgICAgICAgbGFiZWxFeHRyYT17XG4gICAgICAgICAgICAgIG5lZWRzU2hpcHBpbmcgPyAoXG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdG90YWwtbm90ZSc+IGV4IFNoaXBtZW50PC9zbWFsbD5cbiAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW1vdW50PXt0b3RhbENvc3R9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgeyEhKGlzUmVzZWxsICYmICFoYXNHcm91cHMpICYmIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCc+XG4gICAgICAgICAgICB7aXNSZXNlbGwgPyAnQXBwcm94aW1hdGUgVW5pdCcgOiAnVG90YWwnfSBDb3N0XG4gICAgICAgICAgPC9zdHJvbmc+eycgJ31cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCBkLWJsb2NrJz57dG90YWxDb3N0fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBQUMsU0FBQUEsZUFBQUMsR0FBQSxFQUFBQyxDQUFBLFdBQUFDLGVBQUEsQ0FBQUYsR0FBQSxLQUFBRyxxQkFBQSxDQUFBSCxHQUFBLEVBQUFDLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUosR0FBQSxFQUFBQyxDQUFBLEtBQUFJLGdCQUFBO0FBQUEsU0FBQUEsaUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFGLDRCQUFBRyxDQUFBLEVBQUFDLE1BQUEsU0FBQUQsQ0FBQSxxQkFBQUEsQ0FBQSxzQkFBQUUsaUJBQUEsQ0FBQUYsQ0FBQSxFQUFBQyxNQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLEVBQUFRLEtB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
|