@merchi/checkout 1.3.5
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 -0
- package/lib/actions/confirm.d.ts +2 -0
- package/lib/actions/confirm.js +85 -0
- package/lib/actions/customer.d.ts +2 -0
- package/lib/actions/customer.js +53 -0
- package/lib/actions/domain.d.ts +2 -0
- package/lib/actions/domain.js +65 -0
- package/lib/actions/files.d.ts +1 -0
- package/lib/actions/files.js +35 -0
- package/lib/actions/helpers.d.ts +19 -0
- package/lib/actions/helpers.js +125 -0
- package/lib/actions/invoice.d.ts +3 -0
- package/lib/actions/invoice.js +113 -0
- package/lib/area.d.ts +77 -0
- package/lib/area.js +298 -0
- package/lib/assets/merchi-monster-loader.gif +0 -0
- package/lib/checkoutSession.d.ts +32 -0
- package/lib/checkoutSession.js +151 -0
- package/lib/components/Alerts.d.ts +3 -0
- package/lib/components/Alerts.js +88 -0
- package/lib/components/CancelOrderConfirmModal.d.ts +10 -0
- package/lib/components/CancelOrderConfirmModal.js +50 -0
- package/lib/components/CheckoutSummaryFields.d.ts +11 -0
- package/lib/components/CheckoutSummaryFields.js +38 -0
- package/lib/components/Collapse.d.ts +3 -0
- package/lib/components/Collapse.js +34 -0
- package/lib/components/CustomerCheckoutMethodTabs.d.ts +6 -0
- package/lib/components/CustomerCheckoutMethodTabs.js +90 -0
- package/lib/components/DiscountInputGroup.d.ts +2 -0
- package/lib/components/DiscountInputGroup.js +256 -0
- package/lib/components/DraftImageUploaded.d.ts +8 -0
- package/lib/components/DraftImageUploaded.js +53 -0
- package/lib/components/FooterButtons.d.ts +11 -0
- package/lib/components/FooterButtons.js +28 -0
- package/lib/components/InvoiceInfo.d.ts +6 -0
- package/lib/components/InvoiceInfo.js +37 -0
- package/lib/components/JobInfoContent.d.ts +2 -0
- package/lib/components/JobInfoContent.js +728 -0
- package/lib/components/MerchiCheckout.d.ts +46 -0
- package/lib/components/MerchiCheckout.js +49 -0
- package/lib/components/MerchiCheckoutProvider.d.ts +167 -0
- package/lib/components/MerchiCheckoutProvider.js +569 -0
- package/lib/components/MerchiCheckoutTabs.d.ts +2 -0
- package/lib/components/MerchiCheckoutTabs.js +50 -0
- package/lib/components/TabPane.d.ts +7 -0
- package/lib/components/TabPane.js +21 -0
- package/lib/components/TabPaneAddress.d.ts +3 -0
- package/lib/components/TabPaneAddress.js +28 -0
- package/lib/components/TabPaneConfirm.d.ts +11 -0
- package/lib/components/TabPaneConfirm.js +288 -0
- package/lib/components/TabPaneContainer.d.ts +6 -0
- package/lib/components/TabPaneContainer.js +13 -0
- package/lib/components/TabPaneCustomer.d.ts +5 -0
- package/lib/components/TabPaneCustomer.js +93 -0
- package/lib/components/TabPaneNewDomain.d.ts +3 -0
- package/lib/components/TabPaneNewDomain.js +39 -0
- package/lib/components/TabPanePayment.d.ts +3 -0
- package/lib/components/TabPanePayment.js +99 -0
- package/lib/components/TabPaneSubmitted.d.ts +3 -0
- package/lib/components/TabPaneSubmitted.js +90 -0
- package/lib/components/TitleStep.d.ts +6 -0
- package/lib/components/TitleStep.js +24 -0
- package/lib/components/buttons/ButtonInvoiceDownload.d.ts +3 -0
- package/lib/components/buttons/ButtonInvoiceDownload.js +91 -0
- package/lib/components/buttons/ButtonNext.d.ts +10 -0
- package/lib/components/buttons/ButtonNext.js +48 -0
- package/lib/components/buttons/ButtonPrevious.d.ts +7 -0
- package/lib/components/buttons/ButtonPrevious.js +36 -0
- package/lib/components/buttons/index.d.ts +3 -0
- package/lib/components/buttons/index.js +4 -0
- package/lib/components/currency.d.ts +5 -0
- package/lib/components/currency.js +223 -0
- package/lib/components/forms/CheckboxBillingAddressSameAsShippingAddress.d.ts +7 -0
- package/lib/components/forms/CheckboxBillingAddressSameAsShippingAddress.js +22 -0
- package/lib/components/forms/FormAddresses.d.ts +6 -0
- package/lib/components/forms/FormAddresses.js +251 -0
- package/lib/components/forms/FormCustomerNew.d.ts +4 -0
- package/lib/components/forms/FormCustomerNew.js +197 -0
- package/lib/components/forms/FormCustomerReturning.d.ts +3 -0
- package/lib/components/forms/FormCustomerReturning.js +147 -0
- package/lib/components/forms/FormDomainNew.d.ts +2 -0
- package/lib/components/forms/FormDomainNew.js +152 -0
- package/lib/components/forms/FormWhatsappCustomer.d.ts +4 -0
- package/lib/components/forms/FormWhatsappCustomer.js +217 -0
- package/lib/components/forms/InputAcceptUserTermsAndConditions.d.ts +7 -0
- package/lib/components/forms/InputAcceptUserTermsAndConditions.js +38 -0
- package/lib/components/forms/InputCheckStoreName.d.ts +7 -0
- package/lib/components/forms/InputCheckStoreName.js +168 -0
- package/lib/components/forms/InputError.d.ts +8 -0
- package/lib/components/forms/InputError.js +19 -0
- package/lib/components/forms/InputFileUpload.d.ts +12 -0
- package/lib/components/forms/InputFileUpload.js +191 -0
- package/lib/components/forms/InputSelect.d.ts +14 -0
- package/lib/components/forms/InputSelect.js +52 -0
- package/lib/components/forms/InputText.d.ts +12 -0
- package/lib/components/forms/InputText.js +59 -0
- package/lib/components/forms/InputsAddress.d.ts +12 -0
- package/lib/components/forms/InputsAddress.js +533 -0
- package/lib/components/forms/index.d.ts +5 -0
- package/lib/components/forms/index.js +6 -0
- package/lib/components/lists/ListShipmentQuoteOptions.d.ts +9 -0
- package/lib/components/lists/ListShipmentQuoteOptions.js +145 -0
- package/lib/components/lists/index.d.ts +2 -0
- package/lib/components/lists/index.js +3 -0
- package/lib/fonts/nunito-bold-webfont.woff +0 -0
- package/lib/fonts/nunito-bold-webfont.woff2 +0 -0
- package/lib/fonts/nunito-regular-webfont.woff +0 -0
- package/lib/fonts/nunito-regular-webfont.woff2 +0 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +4 -0
- package/lib/merchi_source.d.ts +2 -0
- package/lib/merchi_source.js +31 -0
- package/lib/styles/globals.css +2546 -0
- package/lib/styles/globals.css.map +1 -0
- package/lib/styles/globals.scss +2763 -0
- package/lib/tabs_utils.d.ts +31 -0
- package/lib/tabs_utils.js +104 -0
- package/lib/types.d.ts +43 -0
- package/lib/types.js +40 -0
- package/lib/utils.d.ts +68 -0
- package/lib/utils.js +560 -0
- package/package.json +96 -0
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
5
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
7
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
8
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
9
|
+
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."); }
|
|
10
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
11
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
12
|
+
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; } }
|
|
13
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
14
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
|
+
import * as React from 'react';
|
|
20
|
+
import { createContext, useContext, useEffect, useLayoutEffect, useState } from 'react';
|
|
21
|
+
import { tabsInit, tabIdConfirm } from '../tabs_utils';
|
|
22
|
+
import { Merchi } from '@merchi/sdk';
|
|
23
|
+
import { buildCheckoutSession, checkoutSessionChanged, getCheckoutQuoteSignature, getSafeRestoredTabIndex, loadCheckoutSession, mergeJobWithCheckoutSession, saveCheckoutSession } from '../checkoutSession';
|
|
24
|
+
import { isUserRegistered } from '../utils';
|
|
25
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
26
|
+
var MerchiCheckoutContext = /*#__PURE__*/createContext({
|
|
27
|
+
activeTabIndex: 0,
|
|
28
|
+
alerts: [],
|
|
29
|
+
alertClose: function alertClose() {},
|
|
30
|
+
alertErrorShow: function alertErrorShow() {},
|
|
31
|
+
classNameMerchiCheckoutAlertsContainer: undefined,
|
|
32
|
+
classNameMerchiCheckoutAlert: undefined,
|
|
33
|
+
classNameMerchiCheckoutAlertError: undefined,
|
|
34
|
+
classNameMerchiCheckoutAlertSuccess: undefined,
|
|
35
|
+
classNameMerchiCheckoutButtonPrimary: undefined,
|
|
36
|
+
classNameMerchiCheckoutButtonPrimaryBlock: undefined,
|
|
37
|
+
classNameMerchiCheckoutButtonSecondary: undefined,
|
|
38
|
+
classNameMerchiCheckoutButtonSecondaryBlock: undefined,
|
|
39
|
+
classNameMerchiCheckoutButtonDownloadInvoice: undefined,
|
|
40
|
+
classNameMerchiCheckoutConfirmInfoPanel: undefined,
|
|
41
|
+
classNameMerchiCheckoutFooterActionsContainer: undefined,
|
|
42
|
+
classNameMerchiCheckoutFormCheckbox: undefined,
|
|
43
|
+
classNameMerchiCheckoutFormGroup: undefined,
|
|
44
|
+
classNameMerchiCheckoutFormGroupCheckbox: undefined,
|
|
45
|
+
classNameMerchiCheckoutFormInput: undefined,
|
|
46
|
+
classNameMerchiCheckoutFormSelect: undefined,
|
|
47
|
+
classNameMerchiCheckoutGoogleSuggestList: undefined,
|
|
48
|
+
classNameMerchiCheckoutGoogleSuggestListItem: undefined,
|
|
49
|
+
classNameMerchiCheckoutListGroupItemLoader: undefined,
|
|
50
|
+
classNameMerchiCheckoutFormLabelCheckbox: undefined,
|
|
51
|
+
classNameMerchiCheckoutInputError: undefined,
|
|
52
|
+
classNameMerchiCheckoutListGroup: undefined,
|
|
53
|
+
classNameMerchiCheckoutListGroupItem: undefined,
|
|
54
|
+
classNameMerchiCheckoutRow: undefined,
|
|
55
|
+
classNameMerchiCheckoutRowColumn: undefined,
|
|
56
|
+
classNameMerchiCheckoutSubtitle: undefined,
|
|
57
|
+
classNameMerchiCheckoutTabsContainer: undefined,
|
|
58
|
+
classNameMerchiCheckoutTab: undefined,
|
|
59
|
+
classNameMerchiCheckoutTabPane: undefined,
|
|
60
|
+
classNameMerchiCheckoutTabPaneContainer: undefined,
|
|
61
|
+
classNameMerchiCheckoutTabButton: undefined,
|
|
62
|
+
classNameMerchiInvoiceButtonPayInvoice: undefined,
|
|
63
|
+
clearCustomer: function clearCustomer() {},
|
|
64
|
+
cancelCheckoutOrder: function cancelCheckoutOrder() {},
|
|
65
|
+
currentUser: undefined,
|
|
66
|
+
customer: undefined,
|
|
67
|
+
discountButtonText: undefined,
|
|
68
|
+
discountCallbackError: function discountCallbackError() {},
|
|
69
|
+
discountCallbackSuccess: function discountCallbackSuccess() {},
|
|
70
|
+
discountClassName: undefined,
|
|
71
|
+
discountClassNameButton: undefined,
|
|
72
|
+
discountClassNameButtonContainer: undefined,
|
|
73
|
+
discountClassNameButtonItemRemove: undefined,
|
|
74
|
+
discountClassNameErrorMessage: undefined,
|
|
75
|
+
discountClassNameInput: undefined,
|
|
76
|
+
discountClassNameInputContainer: undefined,
|
|
77
|
+
discountClassNameInputdiscountLabel: undefined,
|
|
78
|
+
discountClassNameListItem: undefined,
|
|
79
|
+
discountClassNameListItems: undefined,
|
|
80
|
+
discountClassNameMainContainer: undefined,
|
|
81
|
+
discountLabel: undefined,
|
|
82
|
+
discountShowAppliedItems: true,
|
|
83
|
+
domain: undefined,
|
|
84
|
+
editDraftTemplate: function editDraftTemplate() {},
|
|
85
|
+
isBuyRequest: false,
|
|
86
|
+
isOpen: false,
|
|
87
|
+
loading: false,
|
|
88
|
+
merchi: undefined,
|
|
89
|
+
messageSuccessBuyRequest: undefined,
|
|
90
|
+
messageSuccessQuoteRequest: undefined,
|
|
91
|
+
nextTab: function nextTab() {},
|
|
92
|
+
includeDomainSignup: false,
|
|
93
|
+
invoice: {},
|
|
94
|
+
isProductEmbedForm: false,
|
|
95
|
+
job: {},
|
|
96
|
+
product: {},
|
|
97
|
+
redirectAfterSuccessUrl: undefined,
|
|
98
|
+
redirectAfterQuoteSuccessUrl: undefined,
|
|
99
|
+
redirectWithValue: true,
|
|
100
|
+
setActiveTabById: function setActiveTabById() {},
|
|
101
|
+
setActiveTabIndex: function setActiveTabIndex() {},
|
|
102
|
+
setCustomer: function setCustomer() {},
|
|
103
|
+
setDomain: function setDomain() {},
|
|
104
|
+
setInvoice: function setInvoice() {},
|
|
105
|
+
setJob: function setJob() {},
|
|
106
|
+
showDiscountCode: true,
|
|
107
|
+
showUserTermsAndConditions: true,
|
|
108
|
+
tabs: [],
|
|
109
|
+
toggleMerchiCheckout: function toggleMerchiCheckout() {},
|
|
110
|
+
urlFrontend: '',
|
|
111
|
+
urlApi: ''
|
|
112
|
+
});
|
|
113
|
+
export var useMerchiCheckboutContext = function useMerchiCheckboutContext() {
|
|
114
|
+
return useContext(MerchiCheckoutContext);
|
|
115
|
+
};
|
|
116
|
+
function buildTabsState(jobForTabs, _ref) {
|
|
117
|
+
var includeDomainSignup = _ref.includeDomainSignup,
|
|
118
|
+
isBuyRequest = _ref.isBuyRequest,
|
|
119
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
120
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
121
|
+
if (!(jobForTabs !== null && jobForTabs !== void 0 && jobForTabs.product)) {
|
|
122
|
+
return {
|
|
123
|
+
tabs: [],
|
|
124
|
+
activeTabIndex: 0
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
var baseTabs = tabsInit({
|
|
128
|
+
job: jobForTabs,
|
|
129
|
+
includeDomainSignup: includeDomainSignup,
|
|
130
|
+
isBuyRequest: isBuyRequest
|
|
131
|
+
});
|
|
132
|
+
if (!baseTabs.length) {
|
|
133
|
+
return {
|
|
134
|
+
tabs: [],
|
|
135
|
+
activeTabIndex: 0
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
var safeIndex = Math.max(0, Math.min(tabIndex, baseTabs.length - 1));
|
|
139
|
+
var tabsWithProgress = baseTabs.map(function (tab, i) {
|
|
140
|
+
return _objectSpread(_objectSpread({}, tab), {}, {
|
|
141
|
+
disabled: i > safeIndex
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
tabs: tabsWithProgress,
|
|
146
|
+
activeTabIndex: safeIndex
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function getInitialTabsState(job, product, includeDomainSignup, isBuyRequest, invoice) {
|
|
150
|
+
var _session$activeTabInd;
|
|
151
|
+
if (!(product !== null && product !== void 0 && product.id)) {
|
|
152
|
+
return {
|
|
153
|
+
tabs: [],
|
|
154
|
+
activeTabIndex: 0
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
var session = loadCheckoutSession(product);
|
|
158
|
+
var mergedJob = mergeJobWithCheckoutSession(job, session);
|
|
159
|
+
var restoredInvoice = invoice !== null && invoice !== void 0 && invoice.id ? invoice : session === null || session === void 0 ? void 0 : session.invoice;
|
|
160
|
+
var tabIndex = getSafeRestoredTabIndex(mergedJob, {
|
|
161
|
+
includeDomainSignup: includeDomainSignup,
|
|
162
|
+
isBuyRequest: isBuyRequest
|
|
163
|
+
}, (_session$activeTabInd = session === null || session === void 0 ? void 0 : session.activeTabIndex) !== null && _session$activeTabInd !== void 0 ? _session$activeTabInd : 0, restoredInvoice);
|
|
164
|
+
return buildTabsState(mergedJob, {
|
|
165
|
+
includeDomainSignup: includeDomainSignup,
|
|
166
|
+
isBuyRequest: isBuyRequest,
|
|
167
|
+
tabIndex: tabIndex
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
export var MerchiCheckoutProvider = function MerchiCheckoutProvider(_ref2) {
|
|
171
|
+
var _product$domain2, _job$domain2;
|
|
172
|
+
var children = _ref2.children,
|
|
173
|
+
_ref2$classNameMerchi = _ref2.classNameMerchiCheckoutAlertsContainer,
|
|
174
|
+
classNameMerchiCheckoutAlertsContainer = _ref2$classNameMerchi === void 0 ? 'd-flex justify-content-center flex-column alerts-container-sm' : _ref2$classNameMerchi,
|
|
175
|
+
_ref2$classNameMerchi2 = _ref2.classNameMerchiCheckoutAlert,
|
|
176
|
+
classNameMerchiCheckoutAlert = _ref2$classNameMerchi2 === void 0 ? 'alert alert-dismissible alert-notify' : _ref2$classNameMerchi2,
|
|
177
|
+
_ref2$classNameMerchi3 = _ref2.classNameMerchiCheckoutAlertError,
|
|
178
|
+
classNameMerchiCheckoutAlertError = _ref2$classNameMerchi3 === void 0 ? 'alert-danger' : _ref2$classNameMerchi3,
|
|
179
|
+
_ref2$classNameMerchi4 = _ref2.classNameMerchiCheckoutAlertSuccess,
|
|
180
|
+
classNameMerchiCheckoutAlertSuccess = _ref2$classNameMerchi4 === void 0 ? 'alert-success' : _ref2$classNameMerchi4,
|
|
181
|
+
_ref2$classNameMerchi5 = _ref2.classNameMerchiCheckoutButtonPrimary,
|
|
182
|
+
classNameMerchiCheckoutButtonPrimary = _ref2$classNameMerchi5 === void 0 ? 'btn btn-lmd btn-primary d-flex align-items-center justify-content-center' : _ref2$classNameMerchi5,
|
|
183
|
+
_ref2$classNameMerchi6 = _ref2.classNameMerchiCheckoutButtonPrimaryBlock,
|
|
184
|
+
classNameMerchiCheckoutButtonPrimaryBlock = _ref2$classNameMerchi6 === void 0 ? 'btn btn-lg btn-primary btn-block' : _ref2$classNameMerchi6,
|
|
185
|
+
_ref2$classNameMerchi7 = _ref2.classNameMerchiCheckoutButtonSecondary,
|
|
186
|
+
classNameMerchiCheckoutButtonSecondary = _ref2$classNameMerchi7 === void 0 ? 'btn btn-lg btn-secondary' : _ref2$classNameMerchi7,
|
|
187
|
+
_ref2$classNameMerchi8 = _ref2.classNameMerchiCheckoutButtonSecondaryBlock,
|
|
188
|
+
classNameMerchiCheckoutButtonSecondaryBlock = _ref2$classNameMerchi8 === void 0 ? 'btn btn-lg btn-secondary btn-block' : _ref2$classNameMerchi8,
|
|
189
|
+
_ref2$classNameMerchi9 = _ref2.classNameMerchiCheckoutButtonDownloadInvoice,
|
|
190
|
+
classNameMerchiCheckoutButtonDownloadInvoice = _ref2$classNameMerchi9 === void 0 ? 'btn btn-lg btn-primary' : _ref2$classNameMerchi9,
|
|
191
|
+
_ref2$classNameMerchi0 = _ref2.classNameMerchiCheckoutButtonCancelOrder,
|
|
192
|
+
classNameMerchiCheckoutButtonCancelOrder = _ref2$classNameMerchi0 === void 0 ? 'btn btn-lg btn-secondary' : _ref2$classNameMerchi0,
|
|
193
|
+
_ref2$classNameMerchi1 = _ref2.classNameMerchiCheckoutConfirmInfoPanel,
|
|
194
|
+
classNameMerchiCheckoutConfirmInfoPanel = _ref2$classNameMerchi1 === void 0 ? 'd-flex align-items-center' : _ref2$classNameMerchi1,
|
|
195
|
+
_ref2$classNameMerchi10 = _ref2.classNameMerchiCheckoutFooterActionsContainer,
|
|
196
|
+
classNameMerchiCheckoutFooterActionsContainer = _ref2$classNameMerchi10 === void 0 ? 'd-flex justify-content-between mt-4' : _ref2$classNameMerchi10,
|
|
197
|
+
_ref2$classNameMerchi11 = _ref2.classNameMerchiCheckoutFormCheckbox,
|
|
198
|
+
classNameMerchiCheckoutFormCheckbox = _ref2$classNameMerchi11 === void 0 ? 'form-check-input' : _ref2$classNameMerchi11,
|
|
199
|
+
_ref2$classNameMerchi12 = _ref2.classNameMerchiCheckoutFormGroup,
|
|
200
|
+
classNameMerchiCheckoutFormGroup = _ref2$classNameMerchi12 === void 0 ? 'form-group' : _ref2$classNameMerchi12,
|
|
201
|
+
_ref2$classNameMerchi13 = _ref2.classNameMerchiCheckoutFormGroupCheckbox,
|
|
202
|
+
classNameMerchiCheckoutFormGroupCheckbox = _ref2$classNameMerchi13 === void 0 ? 'form-check' : _ref2$classNameMerchi13,
|
|
203
|
+
_ref2$classNameMerchi14 = _ref2.classNameMerchiCheckoutFormInput,
|
|
204
|
+
classNameMerchiCheckoutFormInput = _ref2$classNameMerchi14 === void 0 ? 'form-control' : _ref2$classNameMerchi14,
|
|
205
|
+
_ref2$classNameMerchi15 = _ref2.classNameMerchiCheckoutFormSelect,
|
|
206
|
+
classNameMerchiCheckoutFormSelect = _ref2$classNameMerchi15 === void 0 ? 'form-control' : _ref2$classNameMerchi15,
|
|
207
|
+
_ref2$classNameMerchi16 = _ref2.classNameMerchiCheckoutGoogleSuggestList,
|
|
208
|
+
classNameMerchiCheckoutGoogleSuggestList = _ref2$classNameMerchi16 === void 0 ? 'merchi-checkout-google-suggest-list' : _ref2$classNameMerchi16,
|
|
209
|
+
_ref2$classNameMerchi17 = _ref2.classNameMerchiCheckoutGoogleSuggestListItem,
|
|
210
|
+
classNameMerchiCheckoutGoogleSuggestListItem = _ref2$classNameMerchi17 === void 0 ? 'merchi-checkout-google-suggest-list-item' : _ref2$classNameMerchi17,
|
|
211
|
+
_ref2$classNameMerchi18 = _ref2.classNameMerchiCheckoutListGroupItemLoader,
|
|
212
|
+
classNameMerchiCheckoutListGroupItemLoader = _ref2$classNameMerchi18 === void 0 ? 'list-group-item modal-merchi-checkout-shipment-option' : _ref2$classNameMerchi18,
|
|
213
|
+
_ref2$classNameMerchi19 = _ref2.classNameMerchiCheckoutInputError,
|
|
214
|
+
classNameMerchiCheckoutInputError = _ref2$classNameMerchi19 === void 0 ? 'text-danger' : _ref2$classNameMerchi19,
|
|
215
|
+
_ref2$classNameMerchi20 = _ref2.classNameMerchiCheckoutFormLabelCheckbox,
|
|
216
|
+
classNameMerchiCheckoutFormLabelCheckbox = _ref2$classNameMerchi20 === void 0 ? '' : _ref2$classNameMerchi20,
|
|
217
|
+
_ref2$classNameMerchi21 = _ref2.classNameMerchiCheckoutListGroup,
|
|
218
|
+
classNameMerchiCheckoutListGroup = _ref2$classNameMerchi21 === void 0 ? 'modal-merchi-checkout-shipment-option' : _ref2$classNameMerchi21,
|
|
219
|
+
_ref2$classNameMerchi22 = _ref2.classNameMerchiCheckoutListGroupItem,
|
|
220
|
+
classNameMerchiCheckoutListGroupItem = _ref2$classNameMerchi22 === void 0 ? 'list-group-item modal-merchi-checkout-shipment-option' : _ref2$classNameMerchi22,
|
|
221
|
+
_ref2$classNameMerchi23 = _ref2.classNameMerchiCheckoutRow,
|
|
222
|
+
classNameMerchiCheckoutRow = _ref2$classNameMerchi23 === void 0 ? 'merchi-row' : _ref2$classNameMerchi23,
|
|
223
|
+
_ref2$classNameMerchi24 = _ref2.classNameMerchiCheckoutRowColumn,
|
|
224
|
+
classNameMerchiCheckoutRowColumn = _ref2$classNameMerchi24 === void 0 ? 'merchi-column' : _ref2$classNameMerchi24,
|
|
225
|
+
_ref2$classNameMerchi25 = _ref2.classNameMerchiCheckoutSubtitle,
|
|
226
|
+
classNameMerchiCheckoutSubtitle = _ref2$classNameMerchi25 === void 0 ? 'merchi-checkout-subtitle' : _ref2$classNameMerchi25,
|
|
227
|
+
_ref2$classNameMerchi26 = _ref2.classNameMerchiCheckoutTabsContainer,
|
|
228
|
+
classNameMerchiCheckoutTabsContainer = _ref2$classNameMerchi26 === void 0 ? 'merchi-checkout-tabs-container' : _ref2$classNameMerchi26,
|
|
229
|
+
_ref2$classNameMerchi27 = _ref2.classNameMerchiCheckoutTab,
|
|
230
|
+
classNameMerchiCheckoutTab = _ref2$classNameMerchi27 === void 0 ? 'merchi-checkout-tab' : _ref2$classNameMerchi27,
|
|
231
|
+
_ref2$classNameMerchi28 = _ref2.classNameMerchiCheckoutTabButton,
|
|
232
|
+
classNameMerchiCheckoutTabButton = _ref2$classNameMerchi28 === void 0 ? 'btn merchi-checkout-tab-btn' : _ref2$classNameMerchi28,
|
|
233
|
+
_ref2$classNameMerchi29 = _ref2.classNameMerchiCheckoutTabPane,
|
|
234
|
+
classNameMerchiCheckoutTabPane = _ref2$classNameMerchi29 === void 0 ? 'tab-pane' : _ref2$classNameMerchi29,
|
|
235
|
+
_ref2$classNameMerchi30 = _ref2.classNameMerchiCheckoutTabPaneContainer,
|
|
236
|
+
classNameMerchiCheckoutTabPaneContainer = _ref2$classNameMerchi30 === void 0 ? 'tab-content' : _ref2$classNameMerchi30,
|
|
237
|
+
_ref2$classNameMerchi31 = _ref2.classNameMerchiInvoiceButtonPayInvoice,
|
|
238
|
+
classNameMerchiInvoiceButtonPayInvoice = _ref2$classNameMerchi31 === void 0 ? 'btn btn-lg btn-primary btn-block' : _ref2$classNameMerchi31,
|
|
239
|
+
currentUser = _ref2.currentUser,
|
|
240
|
+
_ref2$discountButtonT = _ref2.discountButtonText,
|
|
241
|
+
discountButtonText = _ref2$discountButtonT === void 0 ? 'Apply' : _ref2$discountButtonT,
|
|
242
|
+
_ref2$discountClassNa = _ref2.discountClassName,
|
|
243
|
+
discountClassName = _ref2$discountClassNa === void 0 ? 'merchi-checkout-discount-code-container' : _ref2$discountClassNa,
|
|
244
|
+
_ref2$discountClassNa2 = _ref2.discountClassNameButton,
|
|
245
|
+
discountClassNameButton = _ref2$discountClassNa2 === void 0 ? 'btn btn-primary' : _ref2$discountClassNa2,
|
|
246
|
+
_ref2$discountClassNa3 = _ref2.discountClassNameButtonContainer,
|
|
247
|
+
discountClassNameButtonContainer = _ref2$discountClassNa3 === void 0 ? '' : _ref2$discountClassNa3,
|
|
248
|
+
_ref2$discountClassNa4 = _ref2.discountClassNameButtonItemRemove,
|
|
249
|
+
discountClassNameButtonItemRemove = _ref2$discountClassNa4 === void 0 ? 'btn btn-sm btn-link' : _ref2$discountClassNa4,
|
|
250
|
+
_ref2$discountClassNa5 = _ref2.discountClassNameErrorMessage,
|
|
251
|
+
discountClassNameErrorMessage = _ref2$discountClassNa5 === void 0 ? 'text-danger' : _ref2$discountClassNa5,
|
|
252
|
+
_ref2$discountClassNa6 = _ref2.discountClassNameInput,
|
|
253
|
+
discountClassNameInput = _ref2$discountClassNa6 === void 0 ? 'form-control' : _ref2$discountClassNa6,
|
|
254
|
+
_ref2$discountClassNa7 = _ref2.discountClassNameInputContainer,
|
|
255
|
+
discountClassNameInputContainer = _ref2$discountClassNa7 === void 0 ? 'merchi-checkout-discount-code-field-container' : _ref2$discountClassNa7,
|
|
256
|
+
_ref2$discountClassNa8 = _ref2.discountClassNameInputdiscountLabel,
|
|
257
|
+
discountClassNameInputdiscountLabel = _ref2$discountClassNa8 === void 0 ? 'merchi-checkout-discount-code-label' : _ref2$discountClassNa8,
|
|
258
|
+
_ref2$discountClassNa9 = _ref2.discountClassNameListItem,
|
|
259
|
+
discountClassNameListItem = _ref2$discountClassNa9 === void 0 ? 'list-group-item d-flex align-items-center justify-content-between mt-2' : _ref2$discountClassNa9,
|
|
260
|
+
_ref2$discountClassNa0 = _ref2.discountClassNameListItems,
|
|
261
|
+
discountClassNameListItems = _ref2$discountClassNa0 === void 0 ? 'list-group' : _ref2$discountClassNa0,
|
|
262
|
+
discountClassNameMainContainer = _ref2.discountClassNameMainContainer,
|
|
263
|
+
_ref2$discountLabel = _ref2.discountLabel,
|
|
264
|
+
discountLabel = _ref2$discountLabel === void 0 ? 'Apply Discount Code' : _ref2$discountLabel,
|
|
265
|
+
_ref2$discountShowApp = _ref2.discountShowAppliedItems,
|
|
266
|
+
discountShowAppliedItems = _ref2$discountShowApp === void 0 ? true : _ref2$discountShowApp,
|
|
267
|
+
_ref2$includeDomainSi = _ref2.includeDomainSignup,
|
|
268
|
+
includeDomainSignup = _ref2$includeDomainSi === void 0 ? false : _ref2$includeDomainSi,
|
|
269
|
+
invoice = _ref2.invoice,
|
|
270
|
+
isBuyRequest = _ref2.isBuyRequest,
|
|
271
|
+
isOpen = _ref2.isOpen,
|
|
272
|
+
_ref2$isProductEmbedF = _ref2.isProductEmbedForm,
|
|
273
|
+
isProductEmbedForm = _ref2$isProductEmbedF === void 0 ? false : _ref2$isProductEmbedF,
|
|
274
|
+
job = _ref2.job,
|
|
275
|
+
product = _ref2.product,
|
|
276
|
+
messageSuccessBuyRequest = _ref2.messageSuccessBuyRequest,
|
|
277
|
+
messageSuccessQuoteRequest = _ref2.messageSuccessQuoteRequest,
|
|
278
|
+
redirectAfterSuccessUrl = _ref2.redirectAfterSuccessUrl,
|
|
279
|
+
redirectAfterQuoteSuccessUrl = _ref2.redirectAfterQuoteSuccessUrl,
|
|
280
|
+
redirectWithValue = _ref2.redirectWithValue,
|
|
281
|
+
setInvoice = _ref2.setInvoice,
|
|
282
|
+
setJob = _ref2.setJob,
|
|
283
|
+
_ref2$showDiscountCod = _ref2.showDiscountCode,
|
|
284
|
+
showDiscountCode = _ref2$showDiscountCod === void 0 ? true : _ref2$showDiscountCod,
|
|
285
|
+
_ref2$showUserTermsAn = _ref2.showUserTermsAndConditions,
|
|
286
|
+
showUserTermsAndConditions = _ref2$showUserTermsAn === void 0 ? true : _ref2$showUserTermsAn,
|
|
287
|
+
toggleMerchiCheckout = _ref2.toggleMerchiCheckout,
|
|
288
|
+
_ref2$urlApi = _ref2.urlApi,
|
|
289
|
+
urlApi = _ref2$urlApi === void 0 ? 'https://api.merchi.co/v6/' : _ref2$urlApi,
|
|
290
|
+
_ref2$urlFrontend = _ref2.urlFrontend,
|
|
291
|
+
urlFrontend = _ref2$urlFrontend === void 0 ? 'https://merchi.co/' : _ref2$urlFrontend;
|
|
292
|
+
var initialTabsState = getInitialTabsState(job, product, includeDomainSignup, isBuyRequest, invoice);
|
|
293
|
+
var _useState = useState(initialTabsState.activeTabIndex),
|
|
294
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
295
|
+
activeTabIndex = _useState2[0],
|
|
296
|
+
setActiveTabIndex = _useState2[1];
|
|
297
|
+
var _useState3 = useState(false),
|
|
298
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
299
|
+
loading = _useState4[0],
|
|
300
|
+
setLoading = _useState4[1];
|
|
301
|
+
var _useState5 = useState([]),
|
|
302
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
303
|
+
alerts = _useState6[0],
|
|
304
|
+
setAlerts = _useState6[1];
|
|
305
|
+
var _useState7 = useState(null),
|
|
306
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
307
|
+
domain = _useState8[0],
|
|
308
|
+
setDomain = _useState8[1];
|
|
309
|
+
var _useState9 = useState(initialTabsState.tabs),
|
|
310
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
311
|
+
tabs = _useState0[0],
|
|
312
|
+
setTabs = _useState0[1];
|
|
313
|
+
var merchi = new Merchi(undefined, undefined, undefined, undefined, urlApi);
|
|
314
|
+
function editDraftTemplate(index, draft) {
|
|
315
|
+
var jobJson = _objectSpread({}, job);
|
|
316
|
+
var draftTemplates = product.draftTemplates || [];
|
|
317
|
+
var draftTemplateFiles = draftTemplates.map(function (d) {
|
|
318
|
+
return d.file;
|
|
319
|
+
});
|
|
320
|
+
var ownDraft = jobJson.ownDrafts && jobJson.ownDrafts[0] || {
|
|
321
|
+
images: draftTemplateFiles
|
|
322
|
+
};
|
|
323
|
+
if (ownDraft.images) {
|
|
324
|
+
ownDraft.images[index] = draft;
|
|
325
|
+
} else {
|
|
326
|
+
ownDraft.images = [draft];
|
|
327
|
+
}
|
|
328
|
+
jobJson.ownDrafts = [ownDraft];
|
|
329
|
+
setJob(jobJson);
|
|
330
|
+
}
|
|
331
|
+
function alertClose(index) {
|
|
332
|
+
var updatedAlerts = alerts.filter(function (_, idx) {
|
|
333
|
+
return idx !== index;
|
|
334
|
+
});
|
|
335
|
+
setAlerts(updatedAlerts);
|
|
336
|
+
}
|
|
337
|
+
function alertErrorShow(message) {
|
|
338
|
+
var newAlerts = [].concat(_toConsumableArray(alerts), [{
|
|
339
|
+
alertType: 'error',
|
|
340
|
+
message: message,
|
|
341
|
+
title: 'Error!'
|
|
342
|
+
}]);
|
|
343
|
+
setAlerts(newAlerts);
|
|
344
|
+
}
|
|
345
|
+
function initTabsFromJob(jobForTabs) {
|
|
346
|
+
var tabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
347
|
+
var _buildTabsState = buildTabsState(jobForTabs, {
|
|
348
|
+
includeDomainSignup: includeDomainSignup,
|
|
349
|
+
isBuyRequest: isBuyRequest,
|
|
350
|
+
tabIndex: tabIndex
|
|
351
|
+
}),
|
|
352
|
+
nextTabs = _buildTabsState.tabs,
|
|
353
|
+
nextIndex = _buildTabsState.activeTabIndex;
|
|
354
|
+
setTabs(nextTabs);
|
|
355
|
+
setActiveTabIndex(nextIndex);
|
|
356
|
+
}
|
|
357
|
+
function resetTabs() {
|
|
358
|
+
initTabsFromJob(job, activeTabIndex);
|
|
359
|
+
}
|
|
360
|
+
function setCustomer(customer, options) {
|
|
361
|
+
var updatedJob = _objectSpread(_objectSpread({}, job), {}, {
|
|
362
|
+
client: customer,
|
|
363
|
+
sendWhatsapp: (options === null || options === void 0 ? void 0 : options.sendWhatsapp) === true
|
|
364
|
+
});
|
|
365
|
+
setJob(updatedJob);
|
|
366
|
+
initTabsFromJob(updatedJob, isUserRegistered(customer) ? activeTabIndex : 0);
|
|
367
|
+
}
|
|
368
|
+
function clearCustomer() {
|
|
369
|
+
var updatedJob = _objectSpread(_objectSpread({}, job), {}, {
|
|
370
|
+
client: {},
|
|
371
|
+
sendWhatsapp: false
|
|
372
|
+
});
|
|
373
|
+
setJob(updatedJob);
|
|
374
|
+
initTabsFromJob(updatedJob, 0);
|
|
375
|
+
}
|
|
376
|
+
function cancelCheckoutOrder() {
|
|
377
|
+
var updatedJob = _objectSpread({}, job);
|
|
378
|
+
delete updatedJob.id;
|
|
379
|
+
updatedJob.sendWhatsapp = false;
|
|
380
|
+
setInvoice({});
|
|
381
|
+
setJob(updatedJob);
|
|
382
|
+
var confirmIndex = tabs.findIndex(function (t) {
|
|
383
|
+
return t.id === tabIdConfirm;
|
|
384
|
+
});
|
|
385
|
+
initTabsFromJob(updatedJob, confirmIndex >= 0 ? confirmIndex : 0);
|
|
386
|
+
}
|
|
387
|
+
function nextTab() {
|
|
388
|
+
var ndextIndex = activeTabIndex + 1;
|
|
389
|
+
var _tabs = _toConsumableArray(tabs);
|
|
390
|
+
_tabs[ndextIndex].disabled = false;
|
|
391
|
+
setTabs(_tabs);
|
|
392
|
+
setActiveTabIndex(ndextIndex);
|
|
393
|
+
}
|
|
394
|
+
function setActiveTabById(tabId) {
|
|
395
|
+
var index = tabs.findIndex(function (t) {
|
|
396
|
+
return t.id === tabId;
|
|
397
|
+
});
|
|
398
|
+
setActiveTabIndex(index);
|
|
399
|
+
}
|
|
400
|
+
var quoteSignature = getCheckoutQuoteSignature(job);
|
|
401
|
+
var quoteSignatureRef = React.useRef('');
|
|
402
|
+
useLayoutEffect(function () {
|
|
403
|
+
if (!(product !== null && product !== void 0 && product.id)) return;
|
|
404
|
+
var session = loadCheckoutSession(product);
|
|
405
|
+
var mergedJob = mergeJobWithCheckoutSession(job, session);
|
|
406
|
+
if (checkoutSessionChanged(job, mergedJob)) {
|
|
407
|
+
setJob(mergedJob);
|
|
408
|
+
}
|
|
409
|
+
var quoteChanged = quoteSignatureRef.current !== quoteSignature;
|
|
410
|
+
quoteSignatureRef.current = quoteSignature;
|
|
411
|
+
if (!tabs.length || quoteChanged) {
|
|
412
|
+
var _session$activeTabInd2;
|
|
413
|
+
var restoredInvoice = invoice !== null && invoice !== void 0 && invoice.id ? invoice : session === null || session === void 0 ? void 0 : session.invoice;
|
|
414
|
+
var restoredIndex = quoteChanged && !(restoredInvoice !== null && restoredInvoice !== void 0 && restoredInvoice.id) ? 0 : getSafeRestoredTabIndex(mergedJob, {
|
|
415
|
+
includeDomainSignup: includeDomainSignup,
|
|
416
|
+
isBuyRequest: isBuyRequest
|
|
417
|
+
}, (_session$activeTabInd2 = session === null || session === void 0 ? void 0 : session.activeTabIndex) !== null && _session$activeTabInd2 !== void 0 ? _session$activeTabInd2 : 0, restoredInvoice);
|
|
418
|
+
initTabsFromJob(mergedJob, restoredIndex);
|
|
419
|
+
}
|
|
420
|
+
if (!isUserRegistered(mergedJob.client) && !isUserRegistered(session === null || session === void 0 ? void 0 : session.client) && isUserRegistered(currentUser)) {
|
|
421
|
+
setJob(_objectSpread(_objectSpread({}, mergedJob), {}, {
|
|
422
|
+
client: currentUser
|
|
423
|
+
}));
|
|
424
|
+
}
|
|
425
|
+
}, [product === null || product === void 0 ? void 0 : product.id, quoteSignature]);
|
|
426
|
+
useEffect(function () {
|
|
427
|
+
var _session$invoice;
|
|
428
|
+
if (!(product !== null && product !== void 0 && product.id)) return;
|
|
429
|
+
var session = loadCheckoutSession(product);
|
|
430
|
+
if (!(invoice !== null && invoice !== void 0 && invoice.id) && session !== null && session !== void 0 && (_session$invoice = session.invoice) !== null && _session$invoice !== void 0 && _session$invoice.id) {
|
|
431
|
+
setInvoice(session.invoice);
|
|
432
|
+
}
|
|
433
|
+
}, [product === null || product === void 0 ? void 0 : product.id]);
|
|
434
|
+
useEffect(function () {
|
|
435
|
+
var _product$domain$id, _product$domain, _job$domain;
|
|
436
|
+
if (!isOpen) {
|
|
437
|
+
setDomain(null);
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
var domainId = (_product$domain$id = product === null || product === void 0 || (_product$domain = product.domain) === null || _product$domain === void 0 ? void 0 : _product$domain.id) !== null && _product$domain$id !== void 0 ? _product$domain$id : job === null || job === void 0 || (_job$domain = job.domain) === null || _job$domain === void 0 ? void 0 : _job$domain.id;
|
|
441
|
+
if (!domainId) {
|
|
442
|
+
setDomain(null);
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
var cancelled = false;
|
|
446
|
+
merchi.Domain.get(domainId).then(function (domainEntity) {
|
|
447
|
+
if (cancelled) return;
|
|
448
|
+
setDomain(typeof (domainEntity === null || domainEntity === void 0 ? void 0 : domainEntity.toJson) === 'function' ? domainEntity.toJson() : domainEntity);
|
|
449
|
+
})["catch"](function () {
|
|
450
|
+
if (!cancelled) setDomain(null);
|
|
451
|
+
});
|
|
452
|
+
return function () {
|
|
453
|
+
cancelled = true;
|
|
454
|
+
};
|
|
455
|
+
}, [isOpen, product === null || product === void 0 || (_product$domain2 = product.domain) === null || _product$domain2 === void 0 ? void 0 : _product$domain2.id, job === null || job === void 0 || (_job$domain2 = job.domain) === null || _job$domain2 === void 0 ? void 0 : _job$domain2.id, urlApi]);
|
|
456
|
+
useEffect(function () {
|
|
457
|
+
if (!(product !== null && product !== void 0 && product.id)) return;
|
|
458
|
+
saveCheckoutSession(product, buildCheckoutSession(job, activeTabIndex, {
|
|
459
|
+
invoice: invoice,
|
|
460
|
+
checkoutOpen: isOpen,
|
|
461
|
+
isBuyRequest: isBuyRequest
|
|
462
|
+
}, loadCheckoutSession(product)));
|
|
463
|
+
}, [product === null || product === void 0 ? void 0 : product.id, job.client, job.shipping, job.billing, job.shipment, job.items, activeTabIndex, invoice, isOpen, isBuyRequest]);
|
|
464
|
+
function discountCallbackSuccess(items) {
|
|
465
|
+
setJob(_objectSpread(_objectSpread({}, job), {}, {
|
|
466
|
+
items: items
|
|
467
|
+
}));
|
|
468
|
+
}
|
|
469
|
+
function discountCallbackError() {
|
|
470
|
+
setJob(_objectSpread(_objectSpread({}, job), {}, {
|
|
471
|
+
items: []
|
|
472
|
+
}));
|
|
473
|
+
}
|
|
474
|
+
return /*#__PURE__*/_jsx(MerchiCheckoutContext.Provider, {
|
|
475
|
+
value: {
|
|
476
|
+
activeTabIndex: activeTabIndex,
|
|
477
|
+
alerts: alerts,
|
|
478
|
+
alertClose: alertClose,
|
|
479
|
+
alertErrorShow: alertErrorShow,
|
|
480
|
+
classNameMerchiCheckoutAlertsContainer: classNameMerchiCheckoutAlertsContainer,
|
|
481
|
+
classNameMerchiCheckoutAlert: classNameMerchiCheckoutAlert,
|
|
482
|
+
classNameMerchiCheckoutAlertError: classNameMerchiCheckoutAlertError,
|
|
483
|
+
classNameMerchiCheckoutAlertSuccess: classNameMerchiCheckoutAlertSuccess,
|
|
484
|
+
classNameMerchiCheckoutButtonPrimary: classNameMerchiCheckoutButtonPrimary,
|
|
485
|
+
classNameMerchiCheckoutButtonPrimaryBlock: classNameMerchiCheckoutButtonPrimaryBlock,
|
|
486
|
+
classNameMerchiCheckoutButtonSecondary: classNameMerchiCheckoutButtonSecondary,
|
|
487
|
+
classNameMerchiCheckoutButtonSecondaryBlock: classNameMerchiCheckoutButtonSecondaryBlock,
|
|
488
|
+
classNameMerchiCheckoutButtonDownloadInvoice: classNameMerchiCheckoutButtonDownloadInvoice,
|
|
489
|
+
classNameMerchiCheckoutButtonCancelOrder: classNameMerchiCheckoutButtonCancelOrder,
|
|
490
|
+
classNameMerchiCheckoutConfirmInfoPanel: classNameMerchiCheckoutConfirmInfoPanel,
|
|
491
|
+
classNameMerchiCheckoutFooterActionsContainer: classNameMerchiCheckoutFooterActionsContainer,
|
|
492
|
+
classNameMerchiCheckoutFormCheckbox: classNameMerchiCheckoutFormCheckbox,
|
|
493
|
+
classNameMerchiCheckoutFormGroup: classNameMerchiCheckoutFormGroup,
|
|
494
|
+
classNameMerchiCheckoutFormGroupCheckbox: classNameMerchiCheckoutFormGroupCheckbox,
|
|
495
|
+
classNameMerchiCheckoutFormInput: classNameMerchiCheckoutFormInput,
|
|
496
|
+
classNameMerchiCheckoutFormSelect: classNameMerchiCheckoutFormSelect,
|
|
497
|
+
classNameMerchiCheckoutGoogleSuggestList: classNameMerchiCheckoutGoogleSuggestList,
|
|
498
|
+
classNameMerchiCheckoutGoogleSuggestListItem: classNameMerchiCheckoutGoogleSuggestListItem,
|
|
499
|
+
classNameMerchiCheckoutListGroupItemLoader: classNameMerchiCheckoutListGroupItemLoader,
|
|
500
|
+
classNameMerchiCheckoutFormLabelCheckbox: classNameMerchiCheckoutFormLabelCheckbox,
|
|
501
|
+
classNameMerchiCheckoutInputError: classNameMerchiCheckoutInputError,
|
|
502
|
+
classNameMerchiCheckoutListGroup: classNameMerchiCheckoutListGroup,
|
|
503
|
+
classNameMerchiCheckoutListGroupItem: classNameMerchiCheckoutListGroupItem,
|
|
504
|
+
classNameMerchiCheckoutRow: classNameMerchiCheckoutRow,
|
|
505
|
+
classNameMerchiCheckoutRowColumn: classNameMerchiCheckoutRowColumn,
|
|
506
|
+
classNameMerchiCheckoutSubtitle: classNameMerchiCheckoutSubtitle,
|
|
507
|
+
classNameMerchiCheckoutTabsContainer: classNameMerchiCheckoutTabsContainer,
|
|
508
|
+
classNameMerchiCheckoutTab: classNameMerchiCheckoutTab,
|
|
509
|
+
classNameMerchiCheckoutTabButton: classNameMerchiCheckoutTabButton,
|
|
510
|
+
classNameMerchiCheckoutTabPane: classNameMerchiCheckoutTabPane,
|
|
511
|
+
classNameMerchiCheckoutTabPaneContainer: classNameMerchiCheckoutTabPaneContainer,
|
|
512
|
+
classNameMerchiInvoiceButtonPayInvoice: classNameMerchiInvoiceButtonPayInvoice,
|
|
513
|
+
clearCustomer: clearCustomer,
|
|
514
|
+
cancelCheckoutOrder: cancelCheckoutOrder,
|
|
515
|
+
currentUser: currentUser,
|
|
516
|
+
customer: job.client || {},
|
|
517
|
+
discountButtonText: discountButtonText,
|
|
518
|
+
discountCallbackError: discountCallbackError,
|
|
519
|
+
discountCallbackSuccess: discountCallbackSuccess,
|
|
520
|
+
discountClassName: discountClassName,
|
|
521
|
+
discountClassNameButton: discountClassNameButton,
|
|
522
|
+
discountClassNameButtonContainer: discountClassNameButtonContainer,
|
|
523
|
+
discountClassNameButtonItemRemove: discountClassNameButtonItemRemove,
|
|
524
|
+
discountClassNameErrorMessage: discountClassNameErrorMessage,
|
|
525
|
+
discountClassNameInput: discountClassNameInput,
|
|
526
|
+
discountClassNameInputContainer: discountClassNameInputContainer,
|
|
527
|
+
discountClassNameInputdiscountLabel: discountClassNameInputdiscountLabel,
|
|
528
|
+
discountClassNameListItem: discountClassNameListItem,
|
|
529
|
+
discountClassNameListItems: discountClassNameListItems,
|
|
530
|
+
discountClassNameMainContainer: discountClassNameMainContainer,
|
|
531
|
+
discountLabel: discountLabel,
|
|
532
|
+
discountShowAppliedItems: discountShowAppliedItems,
|
|
533
|
+
domain: domain,
|
|
534
|
+
editDraftTemplate: editDraftTemplate,
|
|
535
|
+
includeDomainSignup: includeDomainSignup,
|
|
536
|
+
invoice: invoice,
|
|
537
|
+
isBuyRequest: isBuyRequest,
|
|
538
|
+
isOpen: isOpen,
|
|
539
|
+
isProductEmbedForm: isProductEmbedForm,
|
|
540
|
+
job: job,
|
|
541
|
+
loading: loading,
|
|
542
|
+
merchi: merchi,
|
|
543
|
+
messageSuccessBuyRequest: messageSuccessBuyRequest,
|
|
544
|
+
messageSuccessQuoteRequest: messageSuccessQuoteRequest,
|
|
545
|
+
nextTab: nextTab,
|
|
546
|
+
product: product,
|
|
547
|
+
redirectAfterSuccessUrl: redirectAfterSuccessUrl,
|
|
548
|
+
redirectAfterQuoteSuccessUrl: redirectAfterQuoteSuccessUrl,
|
|
549
|
+
redirectWithValue: redirectWithValue,
|
|
550
|
+
setActiveTabById: setActiveTabById,
|
|
551
|
+
setActiveTabIndex: setActiveTabIndex,
|
|
552
|
+
setCustomer: setCustomer,
|
|
553
|
+
setDomain: setDomain,
|
|
554
|
+
setInvoice: setInvoice,
|
|
555
|
+
setJob: setJob,
|
|
556
|
+
showDiscountCode: showDiscountCode,
|
|
557
|
+
showUserTermsAndConditions: showUserTermsAndConditions,
|
|
558
|
+
tabs: tabs,
|
|
559
|
+
toggleMerchiCheckout: toggleMerchiCheckout,
|
|
560
|
+
urlApi: urlApi,
|
|
561
|
+
urlFrontend: urlFrontend
|
|
562
|
+
},
|
|
563
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
564
|
+
className: "merchi-checkout",
|
|
565
|
+
children: children
|
|
566
|
+
})
|
|
567
|
+
});
|
|
568
|
+
};
|
|
569
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9zbGljZWRUb0FycmF5IiwiZSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJhIiwidCIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsInRlc3QiLCJsZW5ndGgiLCJuIiwibCIsImkiLCJ1IiwiZiIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwidXNlU3RhdGUiLCJ0YWJzSW5pdCIsInRhYklkQ29uZmlybSIsIk1lcmNoaSIsImJ1aWxkQ2hlY2tvdXRTZXNzaW9uIiwiY2hlY2tvdXRTZXNzaW9uQ2hhbmdlZCIsImdldENoZWNrb3V0UXVvdGVTaWduYXR1cmUiLCJnZXRTYWZlUmVzdG9yZWRUYWJJbmRleCIsImxvYWRDaGVja291dFNlc3Npb24iLCJtZXJnZUpvYldpdGhDaGVja291dFNlc3Npb24iLCJzYXZlQ2hlY2tvdXRTZXNzaW9uIiwiaXNVc2VyUmVnaXN0ZXJlZCIsImpzeCIsIl9qc3giLCJNZXJjaGlDaGVja291dENvbnRleHQiLCJhY3RpdmVUYWJJbmRleCIsImFsZXJ0cyIsImFsZXJ0Q2xvc2UiLCJhbGVydEVycm9yU2hvdyIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRzQ29udGFpbmVyIiwidW5kZWZpbmVkIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydCIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRFcnJvciIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRTdWNjZXNzIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5IiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5QmxvY2siLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeSIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uU2Vjb25kYXJ5QmxvY2siLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvbkRvd25sb2FkSW52b2ljZSIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Q29uZmlybUluZm9QYW5lbCIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9vdGVyQWN0aW9uc0NvbnRhaW5lciIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUNoZWNrYm94IiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtR3JvdXAiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1Hcm91cENoZWNrYm94IiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtSW5wdXQiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1TZWxlY3QiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEdvb2dsZVN1Z2dlc3RMaXN0IiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRHb29nbGVTdWdnZXN0TGlzdEl0ZW0iLCJjbGFzc05hbWVNZXJjaGlDaGVja291dExpc3RHcm91cEl0ZW1Mb2FkZXIiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1MYWJlbENoZWNrYm94IiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRJbnB1dEVycm9yIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXAiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dExpc3RHcm91cEl0ZW0iLCJjbGFzc05hbWVNZXJjaGlDaGVja291dFJvdyIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Um93Q29sdW1uIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRTdWJ0aXRsZSIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFic0NvbnRhaW5lciIsImNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJQYW5lIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJQYW5lQ29udGFpbmVyIiwiY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJCdXR0b24iLCJjbGFzc05hbWVNZXJjaGlJbnZvaWNlQnV0dG9uUGF5SW52b2ljZSIsImNsZWFyQ3VzdG9tZXIiLCJjYW5jZWxDaGVja291dE9yZGVyIiwiY3VycmVudFVzZXIiLCJjdXN0b21lciIsImRpc2NvdW50QnV0dG9uVGV4dCIsImRpc2NvdW50Q2FsbGJhY2tFcnJvciIsImRpc2NvdW50Q2FsbGJhY2tTdWNjZXNzIiwiZGlzY291bnRDbGFzc05hbWUiLCJkaXNjb3VudENsYXNzTmFtZUJ1dHRvbiIsImRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uQ29udGFpbmVyIiwiZGlzY291bnRDbGFzc05hbWVCdXR0b25JdGVtUmVtb3ZlIiwiZGlzY291bnRDbGFzc05hbWVFcnJvck1lc3NhZ2UiLCJkaXNjb3VudENsYXNzTmFtZUlucHV0IiwiZGlzY291bnRDbGFzc05hbWVJbnB1dENvbnRhaW5lciIsImRpc2NvdW50Q2xhc3NOYW1lSW5wdXRkaXNjb3VudExhYmVsIiwiZGlzY291bnRDbGFzc05hbWVMaXN0SXRlbSIsImRpc2NvdW50Q2xhc3NOYW1lTGlzdEl0ZW1zIiwiZGlzY291bnRDbGFzc05hbWVNYWluQ29udGFpbmVyIiwiZGlzY291bnRMYWJlbCIsImRpc2NvdW50U2hvd0FwcGxpZWRJdGVtcyIsImRvbWFpbiIsImVkaXREcmFmdFRlbXBsYXRlIiwiaXNCdXlSZXF1ZXN0IiwiaXNPcGVuIiwibG9hZGluZyIsIm1lcmNoaSIsIm1lc3NhZ2VTdWNjZXNzQnV5UmVxdWVzdCIsIm1lc3NhZ2VTdWNjZXNzUXVvdGVSZXF1ZXN0IiwibmV4dFRhYiIsImluY2x1ZGVEb21haW5TaWdudXAiLCJpbnZvaWNlIiwiaXNQcm9kdWN0RW1iZWRGb3JtIiwiam9iIiwicHJvZHVjdCIsInJlZGlyZWN0QWZ0ZXJTdWNjZXNzVXJsIiwicmVkaXJlY3RBZnRlclF1b3RlU3VjY2Vzc1VybCIsInJlZGlyZWN0V2l0aFZhbHVlIiwic2V0QWN0aXZlVGFiQnlJZCIsInNldEFjdGl2ZVRhYkluZGV4Iiwic2V0Q3VzdG9tZXIiLCJzZXREb21haW4iLCJzZXRJbnZvaWNlIiwic2V0Sm9iIiwic2hvd0Rpc2NvdW50Q29kZSIsInNob3dVc2VyVGVybXNBbmRDb25kaXRpb25zIiwidGFicyIsInRvZ2dsZU1lcmNoaUNoZWNrb3V0IiwidXJsRnJvbnRlbmQiLCJ1cmxBcGkiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwiYnVpbGRUYWJzU3RhdGUiLCJqb2JGb3JUYWJzIiwiX3JlZiIsIl9yZWYkdGFiSW5kZXgiLCJ0YWJJbmRleCIsImJhc2VUYWJzIiwic2FmZUluZGV4IiwiTWF0aCIsIm1heCIsIm1pbiIsInRhYnNXaXRoUHJvZ3Jlc3MiLCJtYXAiLCJ0YWIiLCJkaXNhYmxlZCIsImdldEluaXRpYWxUYWJzU3RhdGUiLCJfc2Vzc2lvbiRhY3RpdmVUYWJJbmQiLCJpZCIsInNlc3Npb24iLCJtZXJnZWRKb2IiLCJyZXN0b3JlZEludm9pY2UiLCJNZXJjaGlDaGVja291dFByb3ZpZGVyIiwiX3JlZjIiLCJfcHJvZHVjdCRkb21haW4yIiwiX2pvYiRkb21haW4yIiwiY2hpbGRyZW4iLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkyIiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMyIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTQiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGk1IiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpNiIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTciLCJfcmVmMiRjbGFzc05hbWVNZXJjaGk4IiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpOSIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTAiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvbkNhbmNlbE9yZGVyIiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMSIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTEwIiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMTEiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkxMiIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTEzIiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMTQiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkxNSIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTE2IiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMTciLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkxOCIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTE5IiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMjAiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkyMSIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTIyIiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMjMiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkyNCIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTI1IiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMjYiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkyNyIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTI4IiwiX3JlZjIkY2xhc3NOYW1lTWVyY2hpMjkiLCJfcmVmMiRjbGFzc05hbWVNZXJjaGkzMCIsIl9yZWYyJGNsYXNzTmFtZU1lcmNoaTMxIiwiX3JlZjIkZGlzY291bnRCdXR0b25UIiwiX3JlZjIkZGlzY291bnRDbGFzc05hIiwiX3JlZjIkZGlzY291bnRDbGFzc05hMiIsIl9yZWYyJGRpc2NvdW50Q2xhc3NOYTMiLCJfcmVmMiRkaXNjb3VudENsYXNzTmE0IiwiX3JlZjIkZGlzY291bnRDbGFzc05hNSIsIl9yZWYyJGRpc2NvdW50Q2xhc3NOYTYiLCJfcmVmMiRkaXNjb3VudENsYXNzTmE3IiwiX3JlZjIkZGlzY291bnRDbGFzc05hOCIsIl9yZWYyJGRpc2NvdW50Q2xhc3NOYTkiLCJfcmVmMiRkaXNjb3VudENsYXNzTmEwIiwiX3JlZjIkZGlzY291bnRMYWJlbCIsIl9yZWYyJGRpc2NvdW50U2hvd0FwcCIsIl9yZWYyJGluY2x1ZGVEb21haW5TaSIsIl9yZWYyJGlzUHJvZHVjdEVtYmVkRiIsIl9yZWYyJHNob3dEaXNjb3VudENvZCIsIl9yZWYyJHNob3dVc2VyVGVybXNBbiIsIl9yZWYyJHVybEFwaSIsIl9yZWYyJHVybEZyb250ZW5kIiwiaW5pdGlhbFRhYnNTdGF0ZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNldEFsZXJ0cyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZXRUYWJzIiwiaW5kZXgiLCJkcmFmdCIsImpvYkpzb24iLCJkcmFmdFRlbXBsYXRlcyIsImRyYWZ0VGVtcGxhdGVGaWxlcyIsImQiLCJmaWxlIiwib3duRHJhZnQiLCJvd25EcmFmdHMiLCJpbWFnZXMiLCJ1cGRhdGVkQWxlcnRzIiwiXyIsImlkeCIsIm1lc3NhZ2UiLCJuZXdBbGVydHMiLCJjb25jYXQiLCJhbGVydFR5cGUiLCJ0aXRsZSIsImluaXRUYWJzRnJvbUpvYiIsIl9idWlsZFRhYnNTdGF0ZSIsIm5leHRUYWJzIiwibmV4dEluZGV4IiwicmVzZXRUYWJzIiwib3B0aW9ucyIsInVwZGF0ZWRKb2IiLCJjbGllbnQiLCJzZW5kV2hhdHNhcHAiLCJjb25maXJtSW5kZXgiLCJmaW5kSW5kZXgiLCJuZGV4dEluZGV4IiwiX3RhYnMiLCJ0YWJJZCIsInF1b3RlU2lnbmF0dXJlIiwicXVvdGVTaWduYXR1cmVSZWYiLCJ1c2VSZWYiLCJxdW90ZUNoYW5nZWQiLCJjdXJyZW50IiwiX3Nlc3Npb24kYWN0aXZlVGFiSW5kMiIsInJlc3RvcmVkSW5kZXgiLCJfc2Vzc2lvbiRpbnZvaWNlIiwiX3Byb2R1Y3QkZG9tYWluJGlkIiwiX3Byb2R1Y3QkZG9tYWluIiwiX2pvYiRkb21haW4iLCJkb21haW5JZCIsImNhbmNlbGxlZCIsIkRvbWFpbiIsImdldCIsInRoZW4iLCJkb21haW5FbnRpdHkiLCJ0b0pzb24iLCJjaGVja291dE9wZW4iLCJzaGlwcGluZyIsImJpbGxpbmciLCJzaGlwbWVudCIsIml0ZW1zIiwiUHJvdmlkZXIiLCJjbGFzc05hbWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9NZXJjaGlDaGVja291dFByb3ZpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICBSZWFjdE5vZGUsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVyY2hpQ2hlY2tvdXRUYWIgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyB0YWJzSW5pdCwgdGFiSWRDb25maXJtIH0gZnJvbSAnLi4vdGFic191dGlscyc7XG5pbXBvcnQgeyBNZXJjaGkgfSBmcm9tICdAbWVyY2hpL3Nkayc7XG5pbXBvcnQge1xuICBidWlsZENoZWNrb3V0U2Vzc2lvbixcbiAgY2hlY2tvdXRTZXNzaW9uQ2hhbmdlZCxcbiAgZ2V0Q2hlY2tvdXRRdW90ZVNpZ25hdHVyZSxcbiAgZ2V0U2FmZVJlc3RvcmVkVGFiSW5kZXgsXG4gIGxvYWRDaGVja291dFNlc3Npb24sXG4gIG1lcmdlSm9iV2l0aENoZWNrb3V0U2Vzc2lvbixcbiAgc2F2ZUNoZWNrb3V0U2Vzc2lvbixcbn0gZnJvbSAnLi4vY2hlY2tvdXRTZXNzaW9uJztcbmltcG9ydCB7IGlzVXNlclJlZ2lzdGVyZWQgfSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBJTWVyY2hpQ2hlY2tvdXQge1xuICBhY3RpdmVUYWJJbmRleDogbnVtYmVyO1xuICBhbGVydHM6IGFueVtdO1xuICBhbGVydENsb3NlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWxlcnRFcnJvclNob3c6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRzQ29udGFpbmVyPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEFsZXJ0Pzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEFsZXJ0RXJyb3I/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRTdWNjZXNzPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblByaW1hcnk/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uUHJpbWFyeUJsb2NrPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeT86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25TZWNvbmRhcnlCbG9jaz86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25Eb3dubG9hZEludm9pY2U/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uQ2FuY2VsT3JkZXI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Q29uZmlybUluZm9QYW5lbD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb290ZXJBY3Rpb25zQ29udGFpbmVyPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1DaGVja2JveD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtR3JvdXA/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUdyb3VwQ2hlY2tib3g/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUlucHV0Pzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1TZWxlY3Q/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0R29vZ2xlU3VnZ2VzdExpc3Q/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0R29vZ2xlU3VnZ2VzdExpc3RJdGVtPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dExpc3RHcm91cEl0ZW1Mb2FkZXI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUxhYmVsQ2hlY2tib3g/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0SW5wdXRFcnJvcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXA/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0TGlzdEdyb3VwSXRlbT86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRSb3c/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Um93Q29sdW1uPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFN1YnRpdGxlPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYnNDb250YWluZXI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYlBhbmU/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiUGFuZUNvbnRhaW5lcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJCdXR0b24/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUludm9pY2VCdXR0b25QYXlJbnZvaWNlPzogc3RyaW5nO1xuICBjbGVhckN1c3RvbWVyOiAoKSA9PiB2b2lkO1xuICBjYW5jZWxDaGVja291dE9yZGVyOiAoKSA9PiB2b2lkO1xuICBjdXJyZW50VXNlcj86IGFueTtcbiAgY3VzdG9tZXI/OiBhbnk7XG4gIGRpc2NvdW50QnV0dG9uVGV4dD86IHN0cmluZztcbiAgZGlzY291bnRDYWxsYmFja0Vycm9yOiAoKSA9PiB2b2lkO1xuICBkaXNjb3VudENhbGxiYWNrU3VjY2VzczogKGl0ZW1zOiBhbnlbXSkgPT4gdm9pZDtcbiAgZGlzY291bnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lTWFpbkNvbnRhaW5lcj86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVCdXR0b25JdGVtUmVtb3ZlPzogc3RyaW5nO1xuICBkaXNjb3VudENsYXNzTmFtZUJ1dHRvbj86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVCdXR0b25Db250YWluZXI/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBkaXNjb3VudENsYXNzTmFtZUlucHV0Pzogc3RyaW5nO1xuICBkaXNjb3VudENsYXNzTmFtZUxpc3RJdGVtPzogc3RyaW5nO1xuICBkaXNjb3VudENsYXNzTmFtZUxpc3RJdGVtcz86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVJbnB1dENvbnRhaW5lcj86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVJbnB1dGRpc2NvdW50TGFiZWw/OiBzdHJpbmc7XG4gIGRpc2NvdW50TGFiZWw/OiBzdHJpbmc7XG4gIGRpc2NvdW50U2hvd0FwcGxpZWRJdGVtcz86IGJvb2xlYW47XG4gIGRvbWFpbj86IGFueTtcbiAgZWRpdERyYWZ0VGVtcGxhdGU6IChpbmRleDogbnVtYmVyLCBkcmFmdDogYW55KSA9PiB2b2lkO1xuICBpbmNsdWRlRG9tYWluU2lnbnVwPzogYm9vbGVhbjtcbiAgaW52b2ljZTogYW55O1xuICBpc0J1eVJlcXVlc3Q/OiBib29sZWFuO1xuICBpc09wZW4/OiBib29sZWFuO1xuICBpc1Byb2R1Y3RFbWJlZEZvcm0/OiBib29sZWFuO1xuICBqb2I6IGFueTtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgbWVyY2hpOiBNZXJjaGk7XG4gIG1lc3NhZ2VTdWNjZXNzQnV5UmVxdWVzdD86IHN0cmluZztcbiAgbWVzc2FnZVN1Y2Nlc3NRdW90ZVJlcXVlc3Q/OiBzdHJpbmc7XG4gIG5leHRUYWI6ICgpID0+IHZvaWQ7XG4gIHByb2R1Y3Q6IGFueTtcbiAgcmVkaXJlY3RBZnRlclN1Y2Nlc3NVcmw/OiBzdHJpbmc7XG4gIHJlZGlyZWN0QWZ0ZXJRdW90ZVN1Y2Nlc3NVcmw/OiBzdHJpbmc7XG4gIHJlZGlyZWN0V2l0aFZhbHVlPzogYm9vbGVhbjtcbiAgc2V0QWN0aXZlVGFiQnlJZDogKGlkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHNldEFjdGl2ZVRhYkluZGV4OiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgc2V0Q3VzdG9tZXI6IChjdXN0b21lcjogYW55LCBvcHRpb25zPzogeyBzZW5kV2hhdHNhcHA/OiBib29sZWFuIH0pID0+IHZvaWQ7XG4gIHNldERvbWFpbjogKGRvbWFpbjogYW55KSA9PiB2b2lkO1xuICBzZXRJbnZvaWNlOiAoaW52b2ljZTogYW55KSA9PiB2b2lkO1xuICBzZXRKb2I6IChqb2I6IGFueSkgPT4gdm9pZDtcbiAgc2hvd0Rpc2NvdW50Q29kZT86IGJvb2xlYW47XG4gIHNob3dVc2VyVGVybXNBbmRDb25kaXRpb25zPzogYm9vbGVhbjtcbiAgdGFiczogTWVyY2hpQ2hlY2tvdXRUYWJbXTtcbiAgdG9nZ2xlTWVyY2hpQ2hlY2tvdXQ6ICgpID0+IHZvaWQ7XG4gIHVybEZyb250ZW5kOiBzdHJpbmc7XG4gIHVybEFwaTogc3RyaW5nO1xufVxuXG5jb25zdCBNZXJjaGlDaGVja291dENvbnRleHQgPSBjcmVhdGVDb250ZXh0PElNZXJjaGlDaGVja291dD4oe1xuICBhY3RpdmVUYWJJbmRleDogMCxcbiAgYWxlcnRzOiBbXSxcbiAgYWxlcnRDbG9zZSgpIHsgfSxcbiAgYWxlcnRFcnJvclNob3coKSB7IH0sXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRzQ29udGFpbmVyOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnQ6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydEVycm9yOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRTdWNjZXNzOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uUHJpbWFyeTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblByaW1hcnlCbG9jazogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeUJsb2NrOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uRG93bmxvYWRJbnZvaWNlOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Q29uZmlybUluZm9QYW5lbDogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvb3RlckFjdGlvbnNDb250YWluZXI6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtQ2hlY2tib3g6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtR3JvdXA6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtR3JvdXBDaGVja2JveDogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1JbnB1dDogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1TZWxlY3Q6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRHb29nbGVTdWdnZXN0TGlzdDogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEdvb2dsZVN1Z2dlc3RMaXN0SXRlbTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dExpc3RHcm91cEl0ZW1Mb2FkZXI6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtTGFiZWxDaGVja2JveDogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dElucHV0RXJyb3I6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXA6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXBJdGVtOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Um93OiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Um93Q29sdW1uOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0U3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJzQ29udGFpbmVyOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiUGFuZTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYlBhbmVDb250YWluZXI6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJCdXR0b246IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lTWVyY2hpSW52b2ljZUJ1dHRvblBheUludm9pY2U6IHVuZGVmaW5lZCxcbiAgY2xlYXJDdXN0b21lcigpIHsgfSxcbiAgY2FuY2VsQ2hlY2tvdXRPcmRlcigpIHsgfSxcbiAgY3VycmVudFVzZXI6IHVuZGVmaW5lZCxcbiAgY3VzdG9tZXI6IHVuZGVmaW5lZCxcbiAgZGlzY291bnRCdXR0b25UZXh0OiB1bmRlZmluZWQsXG4gIGRpc2NvdW50Q2FsbGJhY2tFcnJvcigpIHsgfSxcbiAgZGlzY291bnRDYWxsYmFja1N1Y2Nlc3MoKSB7IH0sXG4gIGRpc2NvdW50Q2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uOiB1bmRlZmluZWQsXG4gIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uQ29udGFpbmVyOiB1bmRlZmluZWQsXG4gIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uSXRlbVJlbW92ZTogdW5kZWZpbmVkLFxuICBkaXNjb3VudENsYXNzTmFtZUVycm9yTWVzc2FnZTogdW5kZWZpbmVkLFxuICBkaXNjb3VudENsYXNzTmFtZUlucHV0OiB1bmRlZmluZWQsXG4gIGRpc2NvdW50Q2xhc3NOYW1lSW5wdXRDb250YWluZXI6IHVuZGVmaW5lZCxcbiAgZGlzY291bnRDbGFzc05hbWVJbnB1dGRpc2NvdW50TGFiZWw6IHVuZGVmaW5lZCxcbiAgZGlzY291bnRDbGFzc05hbWVMaXN0SXRlbTogdW5kZWZpbmVkLFxuICBkaXNjb3VudENsYXNzTmFtZUxpc3RJdGVtczogdW5kZWZpbmVkLFxuICBkaXNjb3VudENsYXNzTmFtZU1haW5Db250YWluZXI6IHVuZGVmaW5lZCxcbiAgZGlzY291bnRMYWJlbDogdW5kZWZpbmVkLFxuICBkaXNjb3VudFNob3dBcHBsaWVkSXRlbXM6IHRydWUsXG4gIGRvbWFpbjogdW5kZWZpbmVkLFxuICBlZGl0RHJhZnRUZW1wbGF0ZSgpIHsgfSxcbiAgaXNCdXlSZXF1ZXN0OiBmYWxzZSxcbiAgaXNPcGVuOiBmYWxzZSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIG1lcmNoaTogdW5kZWZpbmVkLFxuICBtZXNzYWdlU3VjY2Vzc0J1eVJlcXVlc3Q6IHVuZGVmaW5lZCxcbiAgbWVzc2FnZVN1Y2Nlc3NRdW90ZVJlcXVlc3Q6IHVuZGVmaW5lZCxcbiAgbmV4dFRhYigpIHsgfSxcbiAgaW5jbHVkZURvbWFpblNpZ251cDogZmFsc2UsXG4gIGludm9pY2U6IHt9LFxuICBpc1Byb2R1Y3RFbWJlZEZvcm06IGZhbHNlLFxuICBqb2I6IHt9LFxuICBwcm9kdWN0OiB7fSxcbiAgcmVkaXJlY3RBZnRlclN1Y2Nlc3NVcmw6IHVuZGVmaW5lZCxcbiAgcmVkaXJlY3RBZnRlclF1b3RlU3VjY2Vzc1VybDogdW5kZWZpbmVkLFxuICByZWRpcmVjdFdpdGhWYWx1ZTogdHJ1ZSxcbiAgc2V0QWN0aXZlVGFiQnlJZCgpIHsgfSxcbiAgc2V0QWN0aXZlVGFiSW5kZXgoKSB7IH0sXG4gIHNldEN1c3RvbWVyKCkgeyB9LFxuICBzZXREb21haW4oKSB7IH0sXG4gIHNldEludm9pY2UoKSB7IH0sXG4gIHNldEpvYigpIHsgfSxcbiAgc2hvd0Rpc2NvdW50Q29kZTogdHJ1ZSxcbiAgc2hvd1VzZXJUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gIHRhYnM6IFtdLFxuICB0b2dnbGVNZXJjaGlDaGVja291dCgpIHsgfSxcbiAgdXJsRnJvbnRlbmQ6ICcnLFxuICB1cmxBcGk6ICcnLFxufSk7XG5cbmV4cG9ydCBjb25zdCB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0ID0gKCkgPT5cbiAgdXNlQ29udGV4dChNZXJjaGlDaGVja291dENvbnRleHQpO1xuXG5pbnRlcmZhY2UgUHJvcHNNZXJjaGlQcm9kdWN0Rm9ybVByb3ZpZGVyIHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydHNDb250YWluZXI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnQ/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRFcnJvcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydFN1Y2Nlc3M/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uUHJpbWFyeT86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5QmxvY2s/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uU2Vjb25kYXJ5Pzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeUJsb2NrPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvbkRvd25sb2FkSW52b2ljZT86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25DYW5jZWxPcmRlcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRDb25maXJtSW5mb1BhbmVsPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvb3RlckFjdGlvbnNDb250YWluZXI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUNoZWNrYm94Pzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1Hcm91cD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtR3JvdXBDaGVja2JveD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtSW5wdXQ/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybVNlbGVjdD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRHb29nbGVTdWdnZXN0TGlzdD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRHb29nbGVTdWdnZXN0TGlzdEl0ZW0/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0TGlzdEdyb3VwSXRlbUxvYWRlcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRJbnB1dEVycm9yPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dExpc3RHcm91cD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXBJdGVtPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFJvdz86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRSb3dDb2x1bW4/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0U3VidGl0bGU/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFic0NvbnRhaW5lcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtTGFiZWxDaGVja2JveD86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiQnV0dG9uPzogc3RyaW5nO1xuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYlBhbmU/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFiUGFuZUNvbnRhaW5lcj86IHN0cmluZztcbiAgY2xhc3NOYW1lTWVyY2hpSW52b2ljZUJ1dHRvblBheUludm9pY2U/OiBzdHJpbmc7XG4gIGN1cnJlbnRVc2VyPzogYW55O1xuICBkaXNjb3VudEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNjb3VudENsYXNzTmFtZU1haW5Db250YWluZXI/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uSXRlbVJlbW92ZT86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVCdXR0b24/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uQ29udGFpbmVyPzogc3RyaW5nO1xuICBkaXNjb3VudENsYXNzTmFtZUVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVJbnB1dD86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVMaXN0SXRlbT86IHN0cmluZztcbiAgZGlzY291bnRDbGFzc05hbWVMaXN0SXRlbXM/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lSW5wdXRDb250YWluZXI/OiBzdHJpbmc7XG4gIGRpc2NvdW50Q2xhc3NOYW1lSW5wdXRkaXNjb3VudExhYmVsPzogc3RyaW5nO1xuICBkaXNjb3VudExhYmVsPzogc3RyaW5nO1xuICBkaXNjb3VudFNob3dBcHBsaWVkSXRlbXM/OiBib29sZWFuO1xuICBpbmNsdWRlRG9tYWluU2lnbnVwPzogYm9vbGVhbjtcbiAgaXNCdXlSZXF1ZXN0PzogYm9vbGVhbjtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBpc1Byb2R1Y3RFbWJlZEZvcm0/OiBib29sZWFuO1xuICBtZXNzYWdlU3VjY2Vzc0J1eVJlcXVlc3Q/OiBzdHJpbmc7XG4gIG1lc3NhZ2VTdWNjZXNzUXVvdGVSZXF1ZXN0Pzogc3RyaW5nO1xuICBzaG93RGlzY291bnRDb2RlPzogYm9vbGVhbjtcbiAgc2hvd1VzZXJUZXJtc0FuZENvbmRpdGlvbnM/OiBib29sZWFuO1xuICBpbnZvaWNlOiBhbnk7XG4gIGpvYjogYW55O1xuICBwcm9kdWN0OiBhbnk7XG4gIHJlZGlyZWN0QWZ0ZXJTdWNjZXNzVXJsPzogc3RyaW5nO1xuICByZWRpcmVjdEFmdGVyUXVvdGVTdWNjZXNzVXJsPzogc3RyaW5nO1xuICByZWRpcmVjdFdpdGhWYWx1ZT86IGJvb2xlYW47XG4gIHNldEludm9pY2U6IChpbnZvaWNlOiBhbnkpID0+IHZvaWQ7XG4gIHNldEpvYjogKGpvYjogYW55KSA9PiB2b2lkO1xuICB0b2dnbGVNZXJjaGlDaGVja291dDogKCkgPT4gdm9pZDtcbiAgdXJsQXBpPzogc3RyaW5nO1xuICB1cmxGcm9udGVuZD86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gYnVpbGRUYWJzU3RhdGUoXG4gIGpvYkZvclRhYnM6IGFueSxcbiAge1xuICAgIGluY2x1ZGVEb21haW5TaWdudXAsXG4gICAgaXNCdXlSZXF1ZXN0LFxuICAgIHRhYkluZGV4ID0gMCxcbiAgfToge1xuICAgIGluY2x1ZGVEb21haW5TaWdudXA/OiBib29sZWFuO1xuICAgIGlzQnV5UmVxdWVzdD86IGJvb2xlYW47XG4gICAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIH1cbik6IHsgdGFiczogTWVyY2hpQ2hlY2tvdXRUYWJbXTsgYWN0aXZlVGFiSW5kZXg6IG51bWJlciB9IHtcbiAgaWYgKCFqb2JGb3JUYWJzPy5wcm9kdWN0KSB7XG4gICAgcmV0dXJuIHsgdGFiczogW10sIGFjdGl2ZVRhYkluZGV4OiAwIH07XG4gIH1cblxuICBjb25zdCBiYXNlVGFicyA9IHRhYnNJbml0KHtcbiAgICBqb2I6IGpvYkZvclRhYnMsXG4gICAgaW5jbHVkZURvbWFpblNpZ251cCxcbiAgICBpc0J1eVJlcXVlc3QsXG4gIH0pO1xuXG4gIGlmICghYmFzZVRhYnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHsgdGFiczogW10sIGFjdGl2ZVRhYkluZGV4OiAwIH07XG4gIH1cblxuICBjb25zdCBzYWZlSW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0YWJJbmRleCwgYmFzZVRhYnMubGVuZ3RoIC0gMSkpO1xuICBjb25zdCB0YWJzV2l0aFByb2dyZXNzID0gYmFzZVRhYnMubWFwKCh0YWIsIGkpID0+ICh7XG4gICAgLi4udGFiLFxuICAgIGRpc2FibGVkOiBpID4gc2FmZUluZGV4LFxuICB9KSk7XG5cbiAgcmV0dXJuIHsgdGFiczogdGFic1dpdGhQcm9ncmVzcywgYWN0aXZlVGFiSW5kZXg6IHNhZmVJbmRleCB9O1xufVxuXG5mdW5jdGlvbiBnZXRJbml0aWFsVGFic1N0YXRlKFxuICBqb2I6IGFueSxcbiAgcHJvZHVjdDogYW55LFxuICBpbmNsdWRlRG9tYWluU2lnbnVwPzogYm9vbGVhbixcbiAgaXNCdXlSZXF1ZXN0PzogYm9vbGVhbixcbiAgaW52b2ljZT86IGFueVxuKSB7XG4gIGlmICghcHJvZHVjdD8uaWQpIHtcbiAgICByZXR1cm4geyB0YWJzOiBbXSBhcyBNZXJjaGlDaGVja291dFRhYltdLCBhY3RpdmVUYWJJbmRleDogMCB9O1xuICB9XG5cbiAgY29uc3Qgc2Vzc2lvbiA9IGxvYWRDaGVja291dFNlc3Npb24ocHJvZHVjdCk7XG4gIGNvbnN0IG1lcmdlZEpvYiA9IG1lcmdlSm9iV2l0aENoZWNrb3V0U2Vzc2lvbihqb2IsIHNlc3Npb24pO1xuICBjb25zdCByZXN0b3JlZEludm9pY2UgPSBpbnZvaWNlPy5pZCA/IGludm9pY2UgOiBzZXNzaW9uPy5pbnZvaWNlO1xuICBjb25zdCB0YWJJbmRleCA9IGdldFNhZmVSZXN0b3JlZFRhYkluZGV4KFxuICAgIG1lcmdlZEpvYixcbiAgICB7IGluY2x1ZGVEb21haW5TaWdudXAsIGlzQnV5UmVxdWVzdCB9LFxuICAgIHNlc3Npb24/LmFjdGl2ZVRhYkluZGV4ID8/IDAsXG4gICAgcmVzdG9yZWRJbnZvaWNlXG4gICk7XG5cbiAgcmV0dXJuIGJ1aWxkVGFic1N0YXRlKG1lcmdlZEpvYiwge1xuICAgIGluY2x1ZGVEb21haW5TaWdudXAsXG4gICAgaXNCdXlSZXF1ZXN0LFxuICAgIHRhYkluZGV4LFxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IE1lcmNoaUNoZWNrb3V0UHJvdmlkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydHNDb250YWluZXIgPSAnZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxlcnRzLWNvbnRhaW5lci1zbScsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnQgPSAnYWxlcnQgYWxlcnQtZGlzbWlzc2libGUgYWxlcnQtbm90aWZ5JyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydEVycm9yID0gJ2FsZXJ0LWRhbmdlcicsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QWxlcnRTdWNjZXNzID0gJ2FsZXJ0LXN1Y2Nlc3MnLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblByaW1hcnkgPSAnYnRuIGJ0bi1sbWQgYnRuLXByaW1hcnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5QmxvY2sgPSAnYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBidG4tYmxvY2snLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeSA9ICdidG4gYnRuLWxnIGJ0bi1zZWNvbmRhcnknLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblNlY29uZGFyeUJsb2NrID0gJ2J0biBidG4tbGcgYnRuLXNlY29uZGFyeSBidG4tYmxvY2snLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvbkRvd25sb2FkSW52b2ljZSA9ICdidG4gYnRuLWxnIGJ0bi1wcmltYXJ5JyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25DYW5jZWxPcmRlciA9ICdidG4gYnRuLWxnIGJ0bi1zZWNvbmRhcnknLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dENvbmZpcm1JbmZvUGFuZWwgPSAnZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlcicsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9vdGVyQWN0aW9uc0NvbnRhaW5lciA9ICdkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNCcsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUNoZWNrYm94ID0gJ2Zvcm0tY2hlY2staW5wdXQnLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1Hcm91cCA9ICdmb3JtLWdyb3VwJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtR3JvdXBDaGVja2JveCA9ICdmb3JtLWNoZWNrJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtSW5wdXQgPSAnZm9ybS1jb250cm9sJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtU2VsZWN0ID0gJ2Zvcm0tY29udHJvbCcsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0R29vZ2xlU3VnZ2VzdExpc3QgPSAnbWVyY2hpLWNoZWNrb3V0LWdvb2dsZS1zdWdnZXN0LWxpc3QnLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dEdvb2dsZVN1Z2dlc3RMaXN0SXRlbSA9ICdtZXJjaGktY2hlY2tvdXQtZ29vZ2xlLXN1Z2dlc3QtbGlzdC1pdGVtJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXBJdGVtTG9hZGVyID0gJ2xpc3QtZ3JvdXAtaXRlbSBtb2RhbC1tZXJjaGktY2hlY2tvdXQtc2hpcG1lbnQtb3B0aW9uJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRJbnB1dEVycm9yID0gJ3RleHQtZGFuZ2VyJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtTGFiZWxDaGVja2JveCA9ICcnLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dExpc3RHcm91cCA9ICdtb2RhbC1tZXJjaGktY2hlY2tvdXQtc2hpcG1lbnQtb3B0aW9uJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXBJdGVtID0gJ2xpc3QtZ3JvdXAtaXRlbSBtb2RhbC1tZXJjaGktY2hlY2tvdXQtc2hpcG1lbnQtb3B0aW9uJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRSb3cgPSAnbWVyY2hpLXJvdycsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Um93Q29sdW1uID0gJ21lcmNoaS1jb2x1bW4nLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFN1YnRpdGxlID0gJ21lcmNoaS1jaGVja291dC1zdWJ0aXRsZScsXG4gIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFic0NvbnRhaW5lciA9ICdtZXJjaGktY2hlY2tvdXQtdGFicy1jb250YWluZXInLFxuICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYiA9ICdtZXJjaGktY2hlY2tvdXQtdGFiJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJCdXR0b24gPSAnYnRuIG1lcmNoaS1jaGVja291dC10YWItYnRuJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJQYW5lID0gJ3RhYi1wYW5lJyxcbiAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJQYW5lQ29udGFpbmVyID0gJ3RhYi1jb250ZW50JyxcbiAgY2xhc3NOYW1lTWVyY2hpSW52b2ljZUJ1dHRvblBheUludm9pY2UgPSAnYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBidG4tYmxvY2snLFxuICBjdXJyZW50VXNlcixcbiAgZGlzY291bnRCdXR0b25UZXh0ID0gJ0FwcGx5JyxcbiAgZGlzY291bnRDbGFzc05hbWUgPSAnbWVyY2hpLWNoZWNrb3V0LWRpc2NvdW50LWNvZGUtY29udGFpbmVyJyxcbiAgZGlzY291bnRDbGFzc05hbWVCdXR0b24gPSAnYnRuIGJ0bi1wcmltYXJ5JyxcbiAgZGlzY291bnRDbGFzc05hbWVCdXR0b25Db250YWluZXIgPSAnJyxcbiAgZGlzY291bnRDbGFzc05hbWVCdXR0b25JdGVtUmVtb3ZlID0gJ2J0biBidG4tc20gYnRuLWxpbmsnLFxuICBkaXNjb3VudENsYXNzTmFtZUVycm9yTWVzc2FnZSA9ICd0ZXh0LWRhbmdlcicsXG4gIGRpc2NvdW50Q2xhc3NOYW1lSW5wdXQgPSAnZm9ybS1jb250cm9sJyxcbiAgZGlzY291bnRDbGFzc05hbWVJbnB1dENvbnRhaW5lciA9ICdtZXJjaGktY2hlY2tvdXQtZGlzY291bnQtY29kZS1maWVsZC1jb250YWluZXInLFxuICBkaXNjb3VudENsYXNzTmFtZUlucHV0ZGlzY291bnRMYWJlbCA9ICdtZXJjaGktY2hlY2tvdXQtZGlzY291bnQtY29kZS1sYWJlbCcsXG4gIGRpc2NvdW50Q2xhc3NOYW1lTGlzdEl0ZW0gPSAnbGlzdC1ncm91cC1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMicsXG4gIGRpc2NvdW50Q2xhc3NOYW1lTGlzdEl0ZW1zID0gJ2xpc3QtZ3JvdXAnLFxuICBkaXNjb3VudENsYXNzTmFtZU1haW5Db250YWluZXIsXG4gIGRpc2NvdW50TGFiZWwgPSAnQXBwbHkgRGlzY291bnQgQ29kZScsXG4gIGRpc2NvdW50U2hvd0FwcGxpZWRJdGVtcyA9IHRydWUsXG4gIGluY2x1ZGVEb21haW5TaWdudXAgPSBmYWxzZSxcbiAgaW52b2ljZSxcbiAgaXNCdXlSZXF1ZXN0LFxuICBpc09wZW4sXG4gIGlzUHJvZHVjdEVtYmVkRm9ybSA9IGZhbHNlLFxuICBqb2IsXG4gIHByb2R1Y3QsXG4gIG1lc3NhZ2VTdWNjZXNzQnV5UmVxdWVzdCxcbiAgbWVzc2FnZVN1Y2Nlc3NRdW90ZVJlcXVlc3QsXG4gIHJlZGlyZWN0QWZ0ZXJTdWNjZXNzVXJsLFxuICByZWRpcmVjdEFmdGVyUXVvdGVTdWNjZXNzVXJsLFxuICByZWRpcmVjdFdpdGhWYWx1ZSxcbiAgc2V0SW52b2ljZSxcbiAgc2V0Sm9iLFxuICBzaG93RGlzY291bnRDb2RlID0gdHJ1ZSxcbiAgc2hvd1VzZXJUZXJtc0FuZENvbmRpdGlvbnMgPSB0cnVlLFxuICB0b2dnbGVNZXJjaGlDaGVja291dCxcbiAgdXJsQXBpID0gJ2h0dHBzOi8vYXBpLm1lcmNoaS5jby92Ni8nLFxuICB1cmxGcm9udGVuZCA9ICdodHRwczovL21lcmNoaS5jby8nLFxufTogUHJvcHNNZXJjaGlQcm9kdWN0Rm9ybVByb3ZpZGVyKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxUYWJzU3RhdGUgPSBnZXRJbml0aWFsVGFic1N0YXRlKFxuICAgIGpvYixcbiAgICBwcm9kdWN0LFxuICAgIGluY2x1ZGVEb21haW5TaWdudXAsXG4gICAgaXNCdXlSZXF1ZXN0LFxuICAgIGludm9pY2VcbiAgKTtcbiAgY29uc3QgW2FjdGl2ZVRhYkluZGV4LCBzZXRBY3RpdmVUYWJJbmRleF0gPSB1c2VTdGF0ZTxudW1iZXI+KFxuICAgIGluaXRpYWxUYWJzU3RhdGUuYWN0aXZlVGFiSW5kZXhcbiAgKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYWxlcnRzLCBzZXRBbGVydHNdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbZG9tYWluLCBzZXREb21haW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFt0YWJzLCBzZXRUYWJzXSA9IHVzZVN0YXRlKGluaXRpYWxUYWJzU3RhdGUudGFicyk7XG4gIGNvbnN0IG1lcmNoaSA9IG5ldyBNZXJjaGkodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1cmxBcGkpO1xuICBmdW5jdGlvbiBlZGl0RHJhZnRUZW1wbGF0ZShpbmRleDogbnVtYmVyLCBkcmFmdDogYW55KSB7XG4gICAgY29uc3Qgam9iSnNvbiA9IHsgLi4uam9iIH07XG4gICAgY29uc3QgZHJhZnRUZW1wbGF0ZXMgPSBwcm9kdWN0LmRyYWZ0VGVtcGxhdGVzIHx8IFtdO1xuICAgIGNvbnN0IGRyYWZ0VGVtcGxhdGVGaWxlcyA9IGRyYWZ0VGVtcGxhdGVzLm1hcCgoZDogYW55KSA9PiBkLmZpbGUpO1xuICAgIGNvbnN0IG93bkRyYWZ0ID0gKGpvYkpzb24ub3duRHJhZnRzICYmIGpvYkpzb24ub3duRHJhZnRzWzBdKSB8fCB7XG4gICAgICBpbWFnZXM6IGRyYWZ0VGVtcGxhdGVGaWxlcyxcbiAgICB9O1xuICAgIGlmIChvd25EcmFmdC5pbWFnZXMpIHtcbiAgICAgIG93bkRyYWZ0LmltYWdlc1tpbmRleF0gPSBkcmFmdDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duRHJhZnQuaW1hZ2VzID0gW2RyYWZ0XTtcbiAgICB9XG4gICAgam9iSnNvbi5vd25EcmFmdHMgPSBbb3duRHJhZnRdO1xuICAgIHNldEpvYihqb2JKc29uKTtcbiAgfVxuICBmdW5jdGlvbiBhbGVydENsb3NlKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB1cGRhdGVkQWxlcnRzID0gYWxlcnRzLmZpbHRlcigoXywgaWR4KSA9PiBpZHggIT09IGluZGV4KTtcbiAgICBzZXRBbGVydHModXBkYXRlZEFsZXJ0cyk7XG4gIH1cbiAgZnVuY3Rpb24gYWxlcnRFcnJvclNob3cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmV3QWxlcnRzOiBhbnlbXSA9IFtcbiAgICAgIC4uLmFsZXJ0cyxcbiAgICAgIHsgYWxlcnRUeXBlOiAnZXJyb3InLCBtZXNzYWdlLCB0aXRsZTogJ0Vycm9yIScgfSxcbiAgICBdO1xuICAgIHNldEFsZXJ0cyhuZXdBbGVydHMgYXMgYW55KTtcbiAgfVxuICBmdW5jdGlvbiBpbml0VGFic0Zyb21Kb2Ioam9iRm9yVGFiczogYW55LCB0YWJJbmRleCA9IDApIHtcbiAgICBjb25zdCB7IHRhYnM6IG5leHRUYWJzLCBhY3RpdmVUYWJJbmRleDogbmV4dEluZGV4IH0gPSBidWlsZFRhYnNTdGF0ZShcbiAgICAgIGpvYkZvclRhYnMsXG4gICAgICB7IGluY2x1ZGVEb21haW5TaWdudXAsIGlzQnV5UmVxdWVzdCwgdGFiSW5kZXggfVxuICAgICk7XG4gICAgc2V0VGFicyhuZXh0VGFicyk7XG4gICAgc2V0QWN0aXZlVGFiSW5kZXgobmV4dEluZGV4KTtcbiAgfVxuICBmdW5jdGlvbiByZXNldFRhYnMoKSB7XG4gICAgaW5pdFRhYnNGcm9tSm9iKGpvYiwgYWN0aXZlVGFiSW5kZXgpO1xuICB9XG4gIGZ1bmN0aW9uIHNldEN1c3RvbWVyKFxuICAgIGN1c3RvbWVyOiBhbnksXG4gICAgb3B0aW9ucz86IHsgc2VuZFdoYXRzYXBwPzogYm9vbGVhbiB9LFxuICApIHtcbiAgICBjb25zdCB1cGRhdGVkSm9iID0ge1xuICAgICAgLi4uam9iLFxuICAgICAgY2xpZW50OiBjdXN0b21lcixcbiAgICAgIHNlbmRXaGF0c2FwcDogb3B0aW9ucz8uc2VuZFdoYXRzYXBwID09PSB0cnVlLFxuICAgIH07XG4gICAgc2V0Sm9iKHVwZGF0ZWRKb2IpO1xuICAgIGluaXRUYWJzRnJvbUpvYihcbiAgICAgIHVwZGF0ZWRKb2IsXG4gICAgICBpc1VzZXJSZWdpc3RlcmVkKGN1c3RvbWVyKSA/IGFjdGl2ZVRhYkluZGV4IDogMFxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYXJDdXN0b21lcigpIHtcbiAgICBjb25zdCB1cGRhdGVkSm9iID0geyAuLi5qb2IsIGNsaWVudDoge30sIHNlbmRXaGF0c2FwcDogZmFsc2UgfTtcbiAgICBzZXRKb2IodXBkYXRlZEpvYik7XG4gICAgaW5pdFRhYnNGcm9tSm9iKHVwZGF0ZWRKb2IsIDApO1xuICB9XG4gIGZ1bmN0aW9uIGNhbmNlbENoZWNrb3V0T3JkZXIoKSB7XG4gICAgY29uc3QgdXBkYXRlZEpvYiA9IHsgLi4uam9iIH07XG4gICAgZGVsZXRlIHVwZGF0ZWRKb2IuaWQ7XG4gICAgdXBkYXRlZEpvYi5zZW5kV2hhdHNhcHAgPSBmYWxzZTtcbiAgICBzZXRJbnZvaWNlKHt9KTtcbiAgICBzZXRKb2IodXBkYXRlZEpvYik7XG4gICAgY29uc3QgY29uZmlybUluZGV4ID0gdGFicy5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IHRhYklkQ29uZmlybSk7XG4gICAgaW5pdFRhYnNGcm9tSm9iKHVwZGF0ZWRKb2IsIGNvbmZpcm1JbmRleCA+PSAwID8gY29uZmlybUluZGV4IDogMCk7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dFRhYigpIHtcbiAgICBjb25zdCBuZGV4dEluZGV4ID0gYWN0aXZlVGFiSW5kZXggKyAxO1xuICAgIGNvbnN0IF90YWJzOiBhbnlbXSA9IFsuLi50YWJzXTtcbiAgICBfdGFic1tuZGV4dEluZGV4XS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHNldFRhYnMoX3RhYnMgYXMgW10pO1xuICAgIHNldEFjdGl2ZVRhYkluZGV4KG5kZXh0SW5kZXgpO1xuICB9XG4gIGZ1bmN0aW9uIHNldEFjdGl2ZVRhYkJ5SWQodGFiSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0gdGFicy5maW5kSW5kZXgoKHQ6IE1lcmNoaUNoZWNrb3V0VGFiKSA9PiB0LmlkID09PSB0YWJJZCk7XG4gICAgc2V0QWN0aXZlVGFiSW5kZXgoaW5kZXgpO1xuICB9XG4gIGNvbnN0IHF1b3RlU2lnbmF0dXJlID0gZ2V0Q2hlY2tvdXRRdW90ZVNpZ25hdHVyZShqb2IpO1xuICBjb25zdCBxdW90ZVNpZ25hdHVyZVJlZiA9IFJlYWN0LnVzZVJlZignJyk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXByb2R1Y3Q/LmlkKSByZXR1cm47XG5cbiAgICBjb25zdCBzZXNzaW9uID0gbG9hZENoZWNrb3V0U2Vzc2lvbihwcm9kdWN0KTtcbiAgICBjb25zdCBtZXJnZWRKb2IgPSBtZXJnZUpvYldpdGhDaGVja291dFNlc3Npb24oam9iLCBzZXNzaW9uKTtcblxuICAgIGlmIChjaGVja291dFNlc3Npb25DaGFuZ2VkKGpvYiwgbWVyZ2VkSm9iKSkge1xuICAgICAgc2V0Sm9iKG1lcmdlZEpvYik7XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGVDaGFuZ2VkID0gcXVvdGVTaWduYXR1cmVSZWYuY3VycmVudCAhPT0gcXVvdGVTaWduYXR1cmU7XG4gICAgcXVvdGVTaWduYXR1cmVSZWYuY3VycmVudCA9IHF1b3RlU2lnbmF0dXJlO1xuXG4gICAgaWYgKCF0YWJzLmxlbmd0aCB8fCBxdW90ZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHJlc3RvcmVkSW52b2ljZSA9IGludm9pY2U/LmlkID8gaW52b2ljZSA6IHNlc3Npb24/Lmludm9pY2U7XG4gICAgICBjb25zdCByZXN0b3JlZEluZGV4ID1cbiAgICAgICAgcXVvdGVDaGFuZ2VkICYmICFyZXN0b3JlZEludm9pY2U/LmlkXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBnZXRTYWZlUmVzdG9yZWRUYWJJbmRleChcbiAgICAgICAgICAgICAgbWVyZ2VkSm9iLFxuICAgICAgICAgICAgICB7IGluY2x1ZGVEb21haW5TaWdudXAsIGlzQnV5UmVxdWVzdCB9LFxuICAgICAgICAgICAgICBzZXNzaW9uPy5hY3RpdmVUYWJJbmRleCA/PyAwLFxuICAgICAgICAgICAgICByZXN0b3JlZEludm9pY2VcbiAgICAgICAgICAgICk7XG4gICAgICBpbml0VGFic0Zyb21Kb2IobWVyZ2VkSm9iLCByZXN0b3JlZEluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhaXNVc2VyUmVnaXN0ZXJlZChtZXJnZWRKb2IuY2xpZW50KSAmJlxuICAgICAgIWlzVXNlclJlZ2lzdGVyZWQoc2Vzc2lvbj8uY2xpZW50KSAmJlxuICAgICAgaXNVc2VyUmVnaXN0ZXJlZChjdXJyZW50VXNlcilcbiAgICApIHtcbiAgICAgIHNldEpvYih7IC4uLm1lcmdlZEpvYiwgY2xpZW50OiBjdXJyZW50VXNlciB9KTtcbiAgICB9XG4gIH0sIFtwcm9kdWN0Py5pZCwgcXVvdGVTaWduYXR1cmVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcHJvZHVjdD8uaWQpIHJldHVybjtcblxuICAgIGNvbnN0IHNlc3Npb24gPSBsb2FkQ2hlY2tvdXRTZXNzaW9uKHByb2R1Y3QpO1xuICAgIGlmICghaW52b2ljZT8uaWQgJiYgc2Vzc2lvbj8uaW52b2ljZT8uaWQpIHtcbiAgICAgIHNldEludm9pY2Uoc2Vzc2lvbi5pbnZvaWNlKTtcbiAgICB9XG4gIH0sIFtwcm9kdWN0Py5pZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHNldERvbWFpbihudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkb21haW5JZCA9IHByb2R1Y3Q/LmRvbWFpbj8uaWQgPz8gam9iPy5kb21haW4/LmlkO1xuICAgIGlmICghZG9tYWluSWQpIHtcbiAgICAgIHNldERvbWFpbihudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgbWVyY2hpLkRvbWFpbi5nZXQoZG9tYWluSWQpXG4gICAgICAudGhlbigoZG9tYWluRW50aXR5OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNhbmNlbGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXREb21haW4oXG4gICAgICAgICAgdHlwZW9mIGRvbWFpbkVudGl0eT8udG9Kc29uID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGRvbWFpbkVudGl0eS50b0pzb24oKVxuICAgICAgICAgICAgOiBkb21haW5FbnRpdHlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBpZiAoIWNhbmNlbGxlZCkgc2V0RG9tYWluKG51bGwpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbaXNPcGVuLCBwcm9kdWN0Py5kb21haW4/LmlkLCBqb2I/LmRvbWFpbj8uaWQsIHVybEFwaV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwcm9kdWN0Py5pZCkgcmV0dXJuO1xuICAgIHNhdmVDaGVja291dFNlc3Npb24oXG4gICAgICBwcm9kdWN0LFxuICAgICAgYnVpbGRDaGVja291dFNlc3Npb24oXG4gICAgICAgIGpvYixcbiAgICAgICAgYWN0aXZlVGFiSW5kZXgsXG4gICAgICAgIHtcbiAgICAgICAgICBpbnZvaWNlLFxuICAgICAgICAgIGNoZWNrb3V0T3BlbjogaXNPcGVuLFxuICAgICAgICAgIGlzQnV5UmVxdWVzdCxcbiAgICAgICAgfSxcbiAgICAgICAgbG9hZENoZWNrb3V0U2Vzc2lvbihwcm9kdWN0KVxuICAgICAgKVxuICAgICk7XG4gIH0sIFtcbiAgICBwcm9kdWN0Py5pZCxcbiAgICBqb2IuY2xpZW50LFxuICAgIGpvYi5zaGlwcGluZyxcbiAgICBqb2IuYmlsbGluZyxcbiAgICBqb2Iuc2hpcG1lbnQsXG4gICAgam9iLml0ZW1zLFxuICAgIGFjdGl2ZVRhYkluZGV4LFxuICAgIGludm9pY2UsXG4gICAgaXNPcGVuLFxuICAgIGlzQnV5UmVxdWVzdCxcbiAgXSk7XG4gIGZ1bmN0aW9uIGRpc2NvdW50Q2FsbGJhY2tTdWNjZXNzKGl0ZW1zOiBhbnlbXSkge1xuICAgIHNldEpvYih7IC4uLmpvYiwgaXRlbXMgfSk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzY291bnRDYWxsYmFja0Vycm9yKCkge1xuICAgIHNldEpvYih7IC4uLmpvYiwgaXRlbXM6IFtdIH0pO1xuICB9XG4gIHJldHVybiAoXG4gICAgPE1lcmNoaUNoZWNrb3V0Q29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e1xuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZlVGFiSW5kZXgsXG4gICAgICAgICAgYWxlcnRzLFxuICAgICAgICAgIGFsZXJ0Q2xvc2UsXG4gICAgICAgICAgYWxlcnRFcnJvclNob3csXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydHNDb250YWluZXIsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydCxcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dEFsZXJ0RXJyb3IsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRBbGVydFN1Y2Nlc3MsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5LFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uUHJpbWFyeUJsb2NrLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uU2Vjb25kYXJ5LFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0QnV0dG9uU2Vjb25kYXJ5QmxvY2ssXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25Eb3dubG9hZEludm9pY2UsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25DYW5jZWxPcmRlcixcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dENvbmZpcm1JbmZvUGFuZWwsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb290ZXJBY3Rpb25zQ29udGFpbmVyLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUNoZWNrYm94LFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUdyb3VwLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUdyb3VwQ2hlY2tib3gsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtSW5wdXQsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRGb3JtU2VsZWN0LFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0R29vZ2xlU3VnZ2VzdExpc3QsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRHb29nbGVTdWdnZXN0TGlzdEl0ZW0sXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRMaXN0R3JvdXBJdGVtTG9hZGVyLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUxhYmVsQ2hlY2tib3gsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRJbnB1dEVycm9yLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0TGlzdEdyb3VwLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0TGlzdEdyb3VwSXRlbSxcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dFJvdyxcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dFJvd0NvbHVtbixcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dFN1YnRpdGxlLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0VGFic0NvbnRhaW5lcixcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYixcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYkJ1dHRvbixcbiAgICAgICAgICBjbGFzc05hbWVNZXJjaGlDaGVja291dFRhYlBhbmUsXG4gICAgICAgICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRUYWJQYW5lQ29udGFpbmVyLFxuICAgICAgICAgIGNsYXNzTmFtZU1lcmNoaUludm9pY2VCdXR0b25QYXlJbnZvaWNlLFxuICAgICAgICAgIGNsZWFyQ3VzdG9tZXIsXG4gICAgICAgICAgY2FuY2VsQ2hlY2tvdXRPcmRlcixcbiAgICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgICBjdXN0b21lcjogam9iLmNsaWVudCB8fCB7fSxcbiAgICAgICAgICBkaXNjb3VudEJ1dHRvblRleHQsXG4gICAgICAgICAgZGlzY291bnRDYWxsYmFja0Vycm9yLFxuICAgICAgICAgIGRpc2NvdW50Q2FsbGJhY2tTdWNjZXNzLFxuICAgICAgICAgIGRpc2NvdW50Q2xhc3NOYW1lLFxuICAgICAgICAgIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uLFxuICAgICAgICAgIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uQ29udGFpbmVyLFxuICAgICAgICAgIGRpc2NvdW50Q2xhc3NOYW1lQnV0dG9uSXRlbVJlbW92ZSxcbiAgICAgICAgICBkaXNjb3VudENsYXNzTmFtZUVycm9yTWVzc2FnZSxcbiAgICAgICAgICBkaXNjb3VudENsYXNzTmFtZUlucHV0LFxuICAgICAgICAgIGRpc2NvdW50Q2xhc3NOYW1lSW5wdXRDb250YWluZXIsXG4gICAgICAgICAgZGlzY291bnRDbGFzc05hbWVJbnB1dGRpc2NvdW50TGFiZWwsXG4gICAgICAgICAgZGlzY291bnRDbGFzc05hbWVMaXN0SXRlbSxcbiAgICAgICAgICBkaXNjb3VudENsYXNzTmFtZUxpc3RJdGVtcyxcbiAgICAgICAgICBkaXNjb3VudENsYXNzTmFtZU1haW5Db250YWluZXIsXG4gICAgICAgICAgZGlzY291bnRMYWJlbCxcbiAgICAgICAgICBkaXNjb3VudFNob3dBcHBsaWVkSXRlbXMsXG4gICAgICAgICAgZG9tYWluLFxuICAgICAgICAgIGVkaXREcmFmdFRlbXBsYXRlLFxuICAgICAgICAgIGluY2x1ZGVEb21haW5TaWdudXAsXG4gICAgICAgICAgaW52b2ljZSxcbiAgICAgICAgICBpc0J1eVJlcXVlc3QsXG4gICAgICAgICAgaXNPcGVuLFxuICAgICAgICAgIGlzUHJvZHVjdEVtYmVkRm9ybSxcbiAgICAgICAgICBqb2IsXG4gICAgICAgICAgbG9hZGluZyxcbiAgICAgICAgICBtZXJjaGksXG4gICAgICAgICAgbWVzc2FnZVN1Y2Nlc3NCdXlSZXF1ZXN0LFxuICAgICAgICAgIG1lc3NhZ2VTdWNjZXNzUXVvdGVSZXF1ZXN0LFxuICAgICAgICAgIG5leHRUYWIsXG4gICAgICAgICAgcHJvZHVjdCxcbiAgICAgICAgICByZWRpcmVjdEFmdGVyU3VjY2Vzc1VybCxcbiAgICAgICAgICByZWRpcmVjdEFmdGVyUXVvdGVTdWNjZXNzVXJsLFxuICAgICAgICAgIHJlZGlyZWN0V2l0aFZhbHVlLFxuICAgICAgICAgIHNldEFjdGl2ZVRhYkJ5SWQsXG4gICAgICAgICAgc2V0QWN0aXZlVGFiSW5kZXgsXG4gICAgICAgICAgc2V0Q3VzdG9tZXIsXG4gICAgICAgICAgc2V0RG9tYWluLFxuICAgICAgICAgIHNldEludm9pY2UsXG4gICAgICAgICAgc2V0Sm9iLFxuICAgICAgICAgIHNob3dEaXNjb3VudENvZGUsXG4gICAgICAgICAgc2hvd1VzZXJUZXJtc0FuZENvbmRpdGlvbnMsXG4gICAgICAgICAgdGFicyxcbiAgICAgICAgICB0b2dnbGVNZXJjaGlDaGVja291dCxcbiAgICAgICAgICB1cmxBcGksXG4gICAgICAgICAgdXJsRnJvbnRlbmQsXG4gICAgICAgIH0gYXMgSU1lcmNoaUNoZWNrb3V0XG4gICAgICB9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXJjaGktY2hlY2tvdXRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9NZXJjaGlDaGVja291dENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUFDLFNBQUFBLFFBQUFDLENBQUEsc0NBQUFELE9BQUEsd0JBQUFFLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixDQUFBLGtCQUFBQSxDQUFBLGdCQUFBQSxDQUFBLFdBQUFBLENBQUEseUJBQUFDLE1BQUEsSUFBQUQsQ0FBQSxDQUFBRyxXQUFBLEtBQUFGLE1BQUEsSUFBQUQsQ0FBQSxLQUFBQyxNQUFBLENBQUFHLFNBQUEscUJBQUFKLENBQUEsS0FBQUQsT0FBQSxDQUFBQyxDQUFBO0FBQUEsU0FBQUssbUJBQUFDLENBQUEsV0FBQUMsa0JBQUEsQ0FBQUQsQ0FBQSxLQUFBRSxnQkFBQSxDQUFBRixDQUFBLEtBQUFHLDJCQUFBLENBQUFILENBQUEsS0FBQUksa0JBQUE7QUFBQSxTQUFBQSxtQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUgsaUJBQUFGLENBQUEsOEJBQUFMLE1BQUEsWUFBQUssQ0FBQSxDQUFBTCxNQUFBLENBQUFDLFFBQUEsYUFBQUksQ0FBQSx1QkFBQU0sS0FBQSxDQUFBQyxJQUFBLENBQUFQLENBQUE7QUFBQSxTQUFBQyxtQkFBQUQsQ0FBQSxRQUFBTSxLQUFBLENBQUFFLE9BQUEsQ0FBQVIsQ0FBQSxVQUFBUyxpQkFBQSxDQUFBVCxDQUFBO0FBQUEsU0FBQVUsZUFBQVYsQ0FBQSxFQUFBVyxDQUFBLFdBQUFDLGVBQUEsQ0FBQVosQ0FBQSxLQUFBYSxx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
|