UNPKG

merchi_checkout

Version:
279 lines (278 loc) 33.8 kB
'use client'; import React from 'react'; import { formatCurrency, currencyTotalCostShowIncTax } from './currency'; import { isInstructionsType, isProductSupplierMOD, isSelectable } from '../utils'; import { useMerchiCheckboutContext } from './MerchiCheckoutProvider'; import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; function formatCost(product, cost) { var currency = product.currency ? product.currency : 'AUD'; return formatCurrency(cost, { currency: currency, showCodeIfNoSymbol: false }); } function ProductCostRow(_ref) { var job = _ref.job; var quantity = job ? job.quantity : 0; return /*#__PURE__*/_jsxs("p", { className: "d-block mt-4 mb-0", children: ["Total Quantity: ", quantity] }); } function VariationInfoBody(_ref2) { var cost = _ref2.cost, name = _ref2.name, product = _ref2.product, value = _ref2.value, files = _ref2.files, type = _ref2.type; return /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("small", { className: "mb-1", children: name }), /*#__PURE__*/_jsxs("div", { className: "mb-0", children: [/*#__PURE__*/_jsx("div", { className: "d-flex", style: { gap: '0.5rem' }, children: files && files.map(function (file) { return /*#__PURE__*/_jsx("img", { className: "modal-merchi-checkout-job-info-content-img", src: file.viewUrl, alt: file.name }, file.viewUrl); }) }), type === 10 && /*#__PURE__*/_jsx("div", { style: { backgroundColor: "".concat(value) }, className: "color-indicator" }), value && value, " ", cost ? "+ ".concat(formatCost(product, cost)) : '', files.length == 0 && !value && '-'] })] }); } function VariationOptionsInfoBody(_ref3) { var name = _ref3.name, selectedOptions = _ref3.selectedOptions, sellerProductEditable = _ref3.sellerProductEditable, product = _ref3.product; var firstOption = selectedOptions[0]; return /*#__PURE__*/_jsx(_Fragment, { children: selectedOptions.length > 1 ? /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("small", { className: "mb-1", children: name }), /*#__PURE__*/_jsx("ul", { className: "list-unstyled m-0 m-b-5", children: selectedOptions.map(function (o, i) { return /*#__PURE__*/_jsxs("li", { children: [o.value, ' ', Boolean(o.totalCost && !sellerProductEditable) ? " + ".concat(formatCost(product, o.totalCost)) : ''] }, "".concat(i, "-option-key-").concat(o.optionId)); }) })] }) : firstOption ? /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("small", { className: "mb-1", children: name }), /*#__PURE__*/_jsxs("p", { className: "mb-0", children: [firstOption.value, Boolean(firstOption.totalCost) ? " + ".concat(formatCost(product, firstOption.totalCost)) : ''] })] }) : /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("small", { className: "mb-1", children: name }), /*#__PURE__*/_jsx("p", { className: "mb-0", children: "-" })] }) }); } function VariationInfo(_ref4) { var product = _ref4.product, variation = _ref4.variation; var selectedOptions = variation.selectedOptions, variationField = variation.variationField, variationFiles = variation.variationFiles; var fieldType = variationField.fieldType, sellerProductEditable = variationField.sellerProductEditable; var isVariationSelectable = isSelectable(fieldType); var options = selectedOptions; return /*#__PURE__*/_jsx("div", { children: isVariationSelectable && options ? /*#__PURE__*/_jsx(_Fragment, { children: /*#__PURE__*/_jsx(VariationOptionsInfoBody, { name: variationField.name, type: variationField.fieldType, value: variation.value, product: product, files: variationFiles, selectedOptions: options, sellerProductEditable: sellerProductEditable }) }) : /*#__PURE__*/_jsx(_Fragment, { children: /*#__PURE__*/_jsx(VariationInfoBody, { name: variationField.name, type: variationField.fieldType, value: variation.value, files: variationFiles, product: product, cost: sellerProductEditable ? 0 : variation.cost }) }) }); } function VariationsInfo(_ref5) { var product = _ref5.product, quantity = _ref5.quantity, _ref5$variations = _ref5.variations, variations = _ref5$variations === void 0 ? [] : _ref5$variations; return /*#__PURE__*/_jsx("div", { className: "d-flex flex-column", style: { gap: '1rem' }, children: variations.map(function (v, i) { return !isInstructionsType(v.variationField.fieldType) ? /*#__PURE__*/_jsx(VariationInfo, { quantity: quantity, variation: v, product: product }, i) : ''; }) }); } function VariationGroupInfo(_ref6) { var group = _ref6.group, index = _ref6.index, product = _ref6.product, groupArrayLength = _ref6.groupArrayLength; var isResell = isProductSupplierMOD(product); var quantity = group.quantity, variations = group.variations; return /*#__PURE__*/_jsx("div", { className: "quote-summary-card ".concat(groupArrayLength === 1 && ' w-100'), children: /*#__PURE__*/_jsxs("div", { className: "mt-2 d-flex flex-column justify-content-between text-left h-100", children: [/*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsxs("small", { className: "text-muted", children: ["Group ", index + 1] }), /*#__PURE__*/_jsx("small", { className: "text-muted", children: !isResell && " | Quantity: ".concat(quantity) })] }), /*#__PURE__*/_jsxs("div", { className: "pt-2", children: [!!(variations && variations.length) && /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsxs("strong", { children: ["Group ", index + 1, " Detail"] }), ' '] }), /*#__PURE__*/_jsx(VariationsInfo, { quantity: quantity, variations: variations, product: product })] }), /*#__PURE__*/_jsx("div", { className: "pt-3", children: /*#__PURE__*/_jsxs("div", { className: "pt-1", style: { borderTop: '1px solid #d7d7d7', height: '24px' }, children: [/*#__PURE__*/_jsxs("strong", { className: "mb-0 float-left float-start", children: [isResell ? 'Unit' : "Group", " Cost ", ' '] }), /*#__PURE__*/_jsx("strong", { className: "mb-0 ml-2 float-right float-end", children: formatCost(product, group.groupCost) })] }) })] }) }); } export default function JobInfoContent() { var _useMerchiCheckboutCo = useMerchiCheckboutContext(), job = _useMerchiCheckboutCo.job; var product = job.product, _job$quantity = job.quantity, quantity = _job$quantity === void 0 ? 0 : _job$quantity, _job$variations = job.variations, variations = _job$variations === void 0 ? [] : _job$variations, _job$variationsGroups = job.variationsGroups, variationsGroups = _job$variationsGroups === void 0 ? [] : _job$variationsGroups; var needsShipping = product.needsShipping; var totalCost = currencyTotalCostShowIncTax(job); var isResell = isProductSupplierMOD(product); var hasGroups = variationsGroups.length > 0; return /*#__PURE__*/_jsxs("div", { className: "modal-merchi-checkout-job-info-content", children: [/*#__PURE__*/_jsx("strong", { children: product.name }), variationsGroups.length > 0 && /*#__PURE__*/_jsx("div", { className: "d-flex flex-wrap justify-content-between", style: { gap: 30 }, children: variationsGroups.map(function (g, i) { return g.quantity ? /*#__PURE__*/_jsx("div", { className: "w-100", children: /*#__PURE__*/_jsx(VariationGroupInfo, { groupArrayLength: variationsGroups.length, group: g, index: i, job: job, product: product }, i) }, "".concat(i, "-job-info-content")) : ''; }) }), /*#__PURE__*/_jsx("div", { className: "d-flex justify-content-center parent-variation-card", children: /*#__PURE__*/_jsxs("div", { className: "text-left mt-1 w-100", children: [/*#__PURE__*/_jsx(ProductCostRow, { job: job, product: product, quantity: quantity }), /*#__PURE__*/_jsxs("div", { children: [!!(variations && variations.length) && /*#__PURE__*/_jsx("strong", { className: "mb-0", children: "Order Detail" }), /*#__PURE__*/_jsx(VariationsInfo, { quantity: quantity, variations: variations, product: product })] }), !isResell && /*#__PURE__*/_jsxs("div", { className: "pt-2 mt-3 total-order-cost-container", children: [/*#__PURE__*/_jsx("small", { className: "mb-0", children: "Total Order Cost" }), ' ', needsShipping && /*#__PURE__*/_jsxs(_Fragment, { children: [/*#__PURE__*/_jsx("small", { className: "mb-0 ml-1 font-italic", children: "ex Shipment" }), ' '] }), /*#__PURE__*/_jsx("strong", { className: "mb-0 d-block", children: totalCost })] })] }) }), !!(isResell && !hasGroups) && /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsxs("strong", { className: "mb-0", children: [isResell ? 'Approximate Unit' : 'Total', " Cost"] }), ' ', /*#__PURE__*/_jsx("strong", { className: "mb-0 d-block", children: totalCost })] })] }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwianN4cyIsIl9qc3hzIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiZm9ybWF0Q29zdCIsInByb2R1Y3QiLCJjb3N0IiwiY3VycmVuY3kiLCJzaG93Q29kZUlmTm9TeW1ib2wiLCJQcm9kdWN0Q29zdFJvdyIsIl9yZWYiLCJqb2IiLCJxdWFudGl0eSIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiVmFyaWF0aW9uSW5mb0JvZHkiLCJfcmVmMiIsIm5hbWUiLCJ2YWx1ZSIsImZpbGVzIiwidHlwZSIsInN0eWxlIiwiZ2FwIiwibWFwIiwiZmlsZSIsInNyYyIsInZpZXdVcmwiLCJhbHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb25jYXQiLCJsZW5ndGgiLCJWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkiLCJfcmVmMyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGxlclByb2R1Y3RFZGl0YWJsZSIsImZpcnN0T3B0aW9uIiwibyIsImkiLCJCb29sZWFuIiwidG90YWxDb3N0Iiwib3B0aW9uSWQiLCJWYXJpYXRpb25JbmZvIiwiX3JlZjQiLCJ2YXJpYXRpb24iLCJ2YXJpYXRpb25GaWVsZCIsInZhcmlhdGlvbkZpbGVzIiwiZmllbGRUeXBlIiwiaXNWYXJpYXRpb25TZWxlY3RhYmxlIiwib3B0aW9ucyIsIlZhcmlhdGlvbnNJbmZvIiwiX3JlZjUiLCJfcmVmNSR2YXJpYXRpb25zIiwidmFyaWF0aW9ucyIsInYiLCJWYXJpYXRpb25Hcm91cEluZm8iLCJfcmVmNiIsImdyb3VwIiwiaW5kZXgiLCJncm91cEFycmF5TGVuZ3RoIiwiaXNSZXNlbGwiLCJib3JkZXJUb3AiLCJoZWlnaHQiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9Kb2JJbmZvQ29udGVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXggfSBmcm9tICcuL2N1cnJlbmN5JztcbmltcG9ydCB7XG4gIGlzSW5zdHJ1Y3Rpb25zVHlwZSxcbiAgaXNQcm9kdWN0U3VwcGxpZXJNT0QsXG4gIGlzU2VsZWN0YWJsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCB9IGZyb20gJy4vTWVyY2hpQ2hlY2tvdXRQcm92aWRlcic7XG5cbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcbiAgY29uc3QgY3VycmVuY3kgPSBwcm9kdWN0LmN1cnJlbmN5ID8gcHJvZHVjdC5jdXJyZW5jeSA6ICdBVUQnO1xuICByZXR1cm4gZm9ybWF0Q3VycmVuY3koY29zdCwge1xuICAgIGN1cnJlbmN5LFxuICAgIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBQcm9kdWN0Q29zdFJvdyh7IGpvYiB9OiBhbnkpIHtcbiAgY29uc3QgcXVhbnRpdHkgPSBqb2IgPyBqb2IucXVhbnRpdHkgOiAwO1xuICByZXR1cm4gPHAgY2xhc3NOYW1lPSdkLWJsb2NrIG10LTQgbWItMCc+VG90YWwgUXVhbnRpdHk6IHtxdWFudGl0eX08L3A+O1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25JbmZvQm9keSh7IGNvc3QsIG5hbWUsIHByb2R1Y3QsIHZhbHVlLCBmaWxlcywgdHlwZSB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWItMSc+e25hbWV9PC9zbWFsbD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J2QtZmxleCcgc3R5bGU9e3sgZ2FwOiAnMC41cmVtJyB9fT5cbiAgICAgICAgICB7ZmlsZXMgJiZcbiAgICAgICAgICAgIGZpbGVzLm1hcCgoZmlsZTogYW55KSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBrZXk9e2ZpbGUudmlld1VybH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50LWltZydcbiAgICAgICAgICAgICAgICBzcmM9e2ZpbGUudmlld1VybH1cbiAgICAgICAgICAgICAgICBhbHQ9e2ZpbGUubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3R5cGUgPT09IDEwICYmIChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGAke3ZhbHVlfWAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT0nY29sb3ItaW5kaWNhdG9yJ1xuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt2YWx1ZSAmJiB2YWx1ZX0ge2Nvc3QgPyBgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgY29zdCl9YCA6ICcnfVxuICAgICAgICB7ZmlsZXMubGVuZ3RoID09IDAgJiYgIXZhbHVlICYmICctJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkoe1xuICBuYW1lLFxuICBzZWxlY3RlZE9wdGlvbnMsXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcbiAgcHJvZHVjdCxcbn06IGFueSkge1xuICBjb25zdCBmaXJzdE9wdGlvbiA9IHNlbGVjdGVkT3B0aW9uc1swXTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAxID8gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT0nbGlzdC11bnN0eWxlZCBtLTAgbS1iLTUnPlxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkfWB9PlxuICAgICAgICAgICAgICAgIHtvLnZhbHVlfXsnICd9XG4gICAgICAgICAgICAgICAge0Jvb2xlYW4oby50b3RhbENvc3QgJiYgIXNlbGxlclByb2R1Y3RFZGl0YWJsZSlcbiAgICAgICAgICAgICAgICAgID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBvLnRvdGFsQ29zdCl9YFxuICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IGZpcnN0T3B0aW9uID8gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgICAgIHtmaXJzdE9wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgIHtCb29sZWFuKGZpcnN0T3B0aW9uLnRvdGFsQ29zdClcbiAgICAgICAgICAgICAgPyBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIGZpcnN0T3B0aW9uLnRvdGFsQ29zdCl9YFxuICAgICAgICAgICAgICA6ICcnfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPSdtYi0wJz4tPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm8oeyBwcm9kdWN0LCB2YXJpYXRpb24gfTogYW55KSB7XG4gIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb25zLCB2YXJpYXRpb25GaWVsZCwgdmFyaWF0aW9uRmlsZXMgfSA9IHZhcmlhdGlvbjtcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSB9ID0gdmFyaWF0aW9uRmllbGQ7XG4gIGNvbnN0IGlzVmFyaWF0aW9uU2VsZWN0YWJsZSA9IGlzU2VsZWN0YWJsZShmaWVsZFR5cGUpO1xuICBjb25zdCBvcHRpb25zID0gc2VsZWN0ZWRPcHRpb25zO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7aXNWYXJpYXRpb25TZWxlY3RhYmxlICYmIG9wdGlvbnMgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgICBmaWxlcz17dmFyaWF0aW9uRmlsZXN9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgY29zdD17c2VsbGVyUHJvZHVjdEVkaXRhYmxlID8gMCA6IHZhcmlhdGlvbi5jb3N0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWF0aW9uc0luZm8oeyBwcm9kdWN0LCBxdWFudGl0eSwgdmFyaWF0aW9ucyA9IFtdIH06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdkLWZsZXggZmxleC1jb2x1bW4nIHN0eWxlPXt7IGdhcDogJzFyZW0nIH19PlxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXG4gICAgICAgICAgPFZhcmlhdGlvbkluZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAnJ1xuICAgICAgICApXG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25Hcm91cEluZm8oeyBncm91cCwgaW5kZXgsIHByb2R1Y3QsIGdyb3VwQXJyYXlMZW5ndGggfTogYW55KSB7XG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XG4gIGNvbnN0IHsgcXVhbnRpdHksIHZhcmlhdGlvbnMgfSA9IGdyb3VwO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgcXVvdGUtc3VtbWFyeS1jYXJkICR7Z3JvdXBBcnJheUxlbmd0aCA9PT0gMSAmJiAnIHctMTAwJ31gfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtdC0yIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB0ZXh0LWxlZnQgaC0xMDAnPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J3RleHQtbXV0ZWQnPkdyb3VwIHtpbmRleCArIDF9PC9zbWFsbD5cbiAgICAgICAgICA8c21hbGwgY2xhc3NOYW1lPSd0ZXh0LW11dGVkJz5cbiAgICAgICAgICAgIHshaXNSZXNlbGwgJiYgYCB8IFF1YW50aXR5OiAke3F1YW50aXR5fWB9XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdwdC0yJz5cbiAgICAgICAgICB7ISEodmFyaWF0aW9ucyAmJiB2YXJpYXRpb25zLmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHN0cm9uZz5Hcm91cCB7aW5kZXggKyAxfSBEZXRhaWw8L3N0cm9uZz57JyAnfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHQtMyc+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPSdwdC0xJ1xuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNkN2Q3ZDcnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZmxvYXQtbGVmdCBmbG9hdC1zdGFydCc+XG4gICAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdVbml0JyA6IGBHcm91cGB9IENvc3QgeycgJ31cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgbWwtMiBmbG9hdC1yaWdodCBmbG9hdC1lbmQnPlxuICAgICAgICAgICAgICB7Zm9ybWF0Q29zdChwcm9kdWN0LCBncm91cC5ncm91cENvc3QpfVxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEpvYkluZm9Db250ZW50KCkge1xuICBjb25zdCB7IGpvYiB9ID0gdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCgpO1xuICBjb25zdCB7IHByb2R1Y3QsIHF1YW50aXR5ID0gMCwgdmFyaWF0aW9ucyA9IFtdLCB2YXJpYXRpb25zR3JvdXBzID0gW10gfSA9IGpvYjtcbiAgY29uc3QgeyBuZWVkc1NoaXBwaW5nIH0gPSBwcm9kdWN0O1xuICBjb25zdCB0b3RhbENvc3QgPSBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXgoam9iKTtcbiAgY29uc3QgaXNSZXNlbGwgPSBpc1Byb2R1Y3RTdXBwbGllck1PRChwcm9kdWN0KTtcbiAgY29uc3QgaGFzR3JvdXBzID0gdmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudCc+XG4gICAgICA8c3Ryb25nPntwcm9kdWN0Lm5hbWV9PC9zdHJvbmc+XG4gICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT0nZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbidcbiAgICAgICAgICBzdHlsZT17eyBnYXA6IDMwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5tYXAoKGc6IGFueSwgaTogbnVtYmVyKSA9PlxuICAgICAgICAgICAgZy5xdWFudGl0eSA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3ctMTAwJyBrZXk9e2Ake2l9LWpvYi1pbmZvLWNvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXG4gICAgICAgICAgICAgICAgICBncm91cEFycmF5TGVuZ3RoPXt2YXJpYXRpb25zR3JvdXBzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgIGdyb3VwPXtnfVxuICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBqb2I9e2pvYn1cbiAgICAgICAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBwYXJlbnQtdmFyaWF0aW9uLWNhcmQnPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndGV4dC1sZWZ0IG10LTEgdy0xMDAnPlxuICAgICAgICAgIDxQcm9kdWN0Q29zdFJvdyBqb2I9e2pvYn0gcHJvZHVjdD17cHJvZHVjdH0gcXVhbnRpdHk9e3F1YW50aXR5fSAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7ISEodmFyaWF0aW9ucyAmJiB2YXJpYXRpb25zLmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCc+T3JkZXIgRGV0YWlsPC9zdHJvbmc+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFZhcmlhdGlvbnNJbmZvXG4gICAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgeyFpc1Jlc2VsbCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHQtMiBtdC0zIHRvdGFsLW9yZGVyLWNvc3QtY29udGFpbmVyJz5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWItMCc+VG90YWwgT3JkZXIgQ29zdDwvc21hbGw+eycgJ31cbiAgICAgICAgICAgICAge25lZWRzU2hpcHBpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+PHNtYWxsIGNsYXNzTmFtZT0nbWItMCBtbC0xIGZvbnQtaXRhbGljJz5leCBTaGlwbWVudDwvc21hbGw+eycgJ308Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZC1ibG9jayc+e3RvdGFsQ29zdH08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB7ISEoaXNSZXNlbGwgJiYgIWhhc0dyb3VwcykgJiYgKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdBcHByb3hpbWF0ZSBVbml0JyA6ICdUb3RhbCd9IENvc3RcbiAgICAgICAgICA8L3N0cm9uZz57JyAnfVxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wIGQtYmxvY2snPnt0b3RhbENvc3R9PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFTQyxjQUFjLEVBQUVDLDJCQUEyQixRQUFRLFlBQVk7QUFDeEUsU0FDRUMsa0JBQWtCLEVBQ2xCQyxvQkFBb0IsRUFDcEJDLFlBQVksUUFDUCxVQUFVO0FBQ2pCLFNBQVNDLHlCQUF5QixRQUFRLDBCQUEwQjtBQUFDLFNBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUFBLFNBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUVyRSxTQUFTQyxVQUFVQSxDQUFDQyxPQUFZLEVBQUVDLElBQVksRUFBRTtFQUM5QyxJQUFNQyxRQUFRLEdBQUdGLE9BQU8sQ0FBQ0UsUUFBUSxHQUFHRixPQUFPLENBQUNFLFFBQVEsR0FBRyxLQUFLO0VBQzVELE9BQU9mLGNBQWMsQ0FBQ2MsSUFBSSxFQUFFO0lBQzFCQyxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxTQUFTQyxjQUFjQSxDQUFBQyxJQUFBLEVBQWU7RUFBQSxJQUFaQyxHQUFHLEdBQUFELElBQUEsQ0FBSEMsR0FBRztFQUMzQixJQUFNQyxRQUFRLEdBQUdELEdBQUcs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