@merchi/product-form 1.19.31 → 1.19.32

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.
@@ -0,0 +1,141 @@
1
+ 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); }
2
+ 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; }
3
+ 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; }
4
+ 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; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ 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); }
7
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
8
+ 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; } }
9
+ 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; }
10
+ import { productHasVariationGroups } from './draftTemplates';
11
+ var NAME_LIMIT = 80;
12
+ var DESIGN_PREFIX = '[[client-design-inputs:';
13
+ var DESIGN_SUFFIX = ']]';
14
+ var TEXT_BOX_NUMBERS = ['x', 'y', 'width', 'height', 'rotation', 'scaleX', 'scaleY'];
15
+ function finiteNumber(value) {
16
+ var number = Number(value);
17
+ return Number.isFinite(number) ? number : undefined;
18
+ }
19
+ function textStyleFromObject(obj) {
20
+ var style = {};
21
+ var colour = String(obj.fill || '').trim();
22
+ if (colour) style.colour = colour;
23
+ var textSize = finiteNumber(obj.fontSize);
24
+ if (textSize != null) style.textSize = textSize;
25
+ var font = String(obj.fontFamily || '').trim();
26
+ if (font) style.font = font;
27
+ var align = String(obj.align || '').trim();
28
+ if (align) style.align = align;
29
+ var _iterator = _createForOfIteratorHelper(TEXT_BOX_NUMBERS),
30
+ _step;
31
+ try {
32
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
33
+ var key = _step.value;
34
+ var number = finiteNumber(obj[key]);
35
+ if (number != null) style[key] = number;
36
+ }
37
+ } catch (err) {
38
+ _iterator.e(err);
39
+ } finally {
40
+ _iterator.f();
41
+ }
42
+ return Object.keys(style).length ? style : undefined;
43
+ }
44
+ function clipName(value, fallback) {
45
+ var trimmed = value.replace(/\s+/g, ' ').trim();
46
+ var name = trimmed || fallback;
47
+ return name.length > NAME_LIMIT ? name.slice(0, NAME_LIMIT).trim() : name;
48
+ }
49
+ export function collectDesignerInputs(product, drafts) {
50
+ var grouped = productHasVariationGroups(product);
51
+ var inputs = [];
52
+ var _iterator2 = _createForOfIteratorHelper(drafts || []),
53
+ _step2;
54
+ try {
55
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
56
+ var draft = _step2.value;
57
+ var groupIndex = grouped ? draft.groupIndex : undefined;
58
+ var _iterator3 = _createForOfIteratorHelper(draft.templateData || []),
59
+ _step3;
60
+ try {
61
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
62
+ var _template$canvasJson;
63
+ var template = _step3.value;
64
+ var _iterator4 = _createForOfIteratorHelper(((_template$canvasJson = template.canvasJson) === null || _template$canvasJson === void 0 ? void 0 : _template$canvasJson.objects) || []),
65
+ _step4;
66
+ try {
67
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
68
+ var obj = _step4.value;
69
+ if ((obj === null || obj === void 0 ? void 0 : obj.merchiFieldId) != null) continue;
70
+ if ((obj === null || obj === void 0 ? void 0 : obj.type) === 'text') {
71
+ var value = String(obj.text || '').trim();
72
+ if (!value) continue;
73
+ var textStyle = textStyleFromObject(obj);
74
+ inputs.push(_objectSpread(_objectSpread({
75
+ kind: 'text',
76
+ name: clipName(value, 'Custom text'),
77
+ value: value
78
+ }, textStyle ? {
79
+ textStyle: textStyle
80
+ } : {}), groupIndex != null ? {
81
+ groupIndex: groupIndex
82
+ } : {}));
83
+ } else if ((obj === null || obj === void 0 ? void 0 : obj.type) === 'image' && obj.src) {
84
+ inputs.push(_objectSpread({
85
+ kind: 'file',
86
+ name: 'Custom image',
87
+ src: String(obj.src)
88
+ }, groupIndex != null ? {
89
+ groupIndex: groupIndex
90
+ } : {}));
91
+ }
92
+ }
93
+ } catch (err) {
94
+ _iterator4.e(err);
95
+ } finally {
96
+ _iterator4.f();
97
+ }
98
+ }
99
+ } catch (err) {
100
+ _iterator3.e(err);
101
+ } finally {
102
+ _iterator3.f();
103
+ }
104
+ }
105
+ } catch (err) {
106
+ _iterator2.e(err);
107
+ } finally {
108
+ _iterator2.f();
109
+ }
110
+ return inputs;
111
+ }
112
+ export function packDesignInputNotes(inputs) {
113
+ var payload = (inputs || []).filter(function (item) {
114
+ var _item$file;
115
+ return item.kind === 'text' || ((_item$file = item.file) === null || _item$file === void 0 ? void 0 : _item$file.id) != null;
116
+ }).map(function (item) {
117
+ var _item$file2;
118
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread({
119
+ kind: item.kind,
120
+ name: item.name
121
+ }, item.value != null ? {
122
+ value: item.value
123
+ } : {}), item.textStyle ? {
124
+ textStyle: item.textStyle
125
+ } : {}), ((_item$file2 = item.file) === null || _item$file2 === void 0 ? void 0 : _item$file2.id) != null ? {
126
+ file: {
127
+ id: item.file.id
128
+ }
129
+ } : {}), item.groupIndex != null ? {
130
+ groupIndex: item.groupIndex
131
+ } : {});
132
+ });
133
+ if (!payload.length) return undefined;
134
+ var bytes = new TextEncoder().encode(JSON.stringify(payload));
135
+ var binary = '';
136
+ bytes.forEach(function (_byte) {
137
+ binary += String.fromCharCode(_byte);
138
+ });
139
+ return "".concat(DESIGN_PREFIX).concat(btoa(binary)).concat(DESIGN_SUFFIX);
140
+ }
141
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9kdWN0SGFzVmFyaWF0aW9uR3JvdXBzIiwiTkFNRV9MSU1JVCIsIkRFU0lHTl9QUkVGSVgiLCJERVNJR05fU1VGRklYIiwiVEVYVF9CT1hfTlVNQkVSUyIsImZpbml0ZU51bWJlciIsInZhbHVlIiwibnVtYmVyIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJ1bmRlZmluZWQiLCJ0ZXh0U3R5bGVGcm9tT2JqZWN0Iiwib2JqIiwic3R5bGUiLCJjb2xvdXIiLCJTdHJpbmciLCJmaWxsIiwidHJpbSIsInRleHRTaXplIiwiZm9udFNpemUiLCJmb250IiwiZm9udEZhbWlseSIsImFsaWduIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImtleSIsImVyciIsImUiLCJmIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImNsaXBOYW1lIiwiZmFsbGJhY2siLCJ0cmltbWVkIiwicmVwbGFjZSIsIm5hbWUiLCJzbGljZSIsImNvbGxlY3REZXNpZ25lcklucHV0cyIsInByb2R1Y3QiLCJkcmFmdHMiLCJncm91cGVkIiwiaW5wdXRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImRyYWZ0IiwiZ3JvdXBJbmRleCIsIl9pdGVyYXRvcjMiLCJ0ZW1wbGF0ZURhdGEiLCJfc3RlcDMiLCJfdGVtcGxhdGUkY2FudmFzSnNvbiIsInRlbXBsYXRlIiwiX2l0ZXJhdG9yNCIsImNhbnZhc0pzb24iLCJvYmplY3RzIiwiX3N0ZXA0IiwibWVyY2hpRmllbGRJZCIsInR5cGUiLCJ0ZXh0IiwidGV4dFN0eWxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJraW5kIiwic3JjIiwicGFja0Rlc2lnbklucHV0Tm90ZXMiLCJwYXlsb2FkIiwiZmlsdGVyIiwiaXRlbSIsIl9pdGVtJGZpbGUiLCJmaWxlIiwiaWQiLCJtYXAiLCJfaXRlbSRmaWxlMiIsImJ5dGVzIiwiVGV4dEVuY29kZXIiLCJlbmNvZGUiLCJKU09OIiwic3RyaW5naWZ5IiwiYmluYXJ5IiwiZm9yRWFjaCIsImJ5dGUiLCJmcm9tQ2hhckNvZGUiLCJjb25jYXQiLCJidG9hIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Rlc2lnbmVySW5wdXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb2R1Y3RIYXNWYXJpYXRpb25Hcm91cHMgfSBmcm9tICcuL2RyYWZ0VGVtcGxhdGVzJztcbmltcG9ydCB7IERyYWZ0VGVtcGxhdGVEYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IE5BTUVfTElNSVQgPSA4MDtcbmNvbnN0IERFU0lHTl9QUkVGSVggPSAnW1tjbGllbnQtZGVzaWduLWlucHV0czonO1xuY29uc3QgREVTSUdOX1NVRkZJWCA9ICddXSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzaWduZXJUZXh0U3R5bGUge1xuICBjb2xvdXI/OiBzdHJpbmc7XG4gIHRleHRTaXplPzogbnVtYmVyO1xuICBmb250Pzogc3RyaW5nO1xuICBhbGlnbj86IHN0cmluZztcbiAgeD86IG51bWJlcjtcbiAgeT86IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgcm90YXRpb24/OiBudW1iZXI7XG4gIHNjYWxlWD86IG51bWJlcjtcbiAgc2NhbGVZPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlc2lnbmVySW5wdXQge1xuICBraW5kOiAndGV4dCcgfCAnZmlsZSc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIHNyYz86IHN0cmluZztcbiAgdGV4dFN0eWxlPzogRGVzaWduZXJUZXh0U3R5bGU7XG4gIGdyb3VwSW5kZXg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tvdXREZXNpZ25JbnB1dCB7XG4gIGtpbmQ6ICd0ZXh0JyB8ICdmaWxlJztcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbiAgZmlsZT86IHsgaWQ6IG51bWJlciB8IHN0cmluZyB9O1xuICB0ZXh0U3R5bGU/OiBEZXNpZ25lclRleHRTdHlsZTtcbiAgZ3JvdXBJbmRleD86IG51bWJlcjtcbn1cblxuY29uc3QgVEVYVF9CT1hfTlVNQkVSUyA9IFtcbiAgJ3gnLFxuICAneScsXG4gICd3aWR0aCcsXG4gICdoZWlnaHQnLFxuICAncm90YXRpb24nLFxuICAnc2NhbGVYJyxcbiAgJ3NjYWxlWScsXG5dIGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBmaW5pdGVOdW1iZXIodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBudW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG51bWJlcikgPyBudW1iZXIgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHRleHRTdHlsZUZyb21PYmplY3Qob2JqOiB7XG4gIGZpbGw/OiBzdHJpbmc7XG4gIGZvbnRTaXplPzogbnVtYmVyO1xuICBmb250RmFtaWx5Pzogc3RyaW5nO1xuICBhbGlnbj86IHN0cmluZztcbiAgeD86IG51bWJlcjtcbiAgeT86IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgcm90YXRpb24/OiBudW1iZXI7XG4gIHNjYWxlWD86IG51bWJlcjtcbiAgc2NhbGVZPzogbnVtYmVyO1xufSk6IERlc2lnbmVyVGV4dFN0eWxlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3R5bGU6IERlc2lnbmVyVGV4dFN0eWxlID0ge307XG4gIGNvbnN0IGNvbG91ciA9IFN0cmluZyhvYmouZmlsbCB8fCAnJykudHJpbSgpO1xuICBpZiAoY29sb3VyKSBzdHlsZS5jb2xvdXIgPSBjb2xvdXI7XG4gIGNvbnN0IHRleHRTaXplID0gZmluaXRlTnVtYmVyKG9iai5mb250U2l6ZSk7XG4gIGlmICh0ZXh0U2l6ZSAhPSBudWxsKSBzdHlsZS50ZXh0U2l6ZSA9IHRleHRTaXplO1xuICBjb25zdCBmb250ID0gU3RyaW5nKG9iai5mb250RmFtaWx5IHx8ICcnKS50cmltKCk7XG4gIGlmIChmb250KSBzdHlsZS5mb250ID0gZm9udDtcbiAgY29uc3QgYWxpZ24gPSBTdHJpbmcob2JqLmFsaWduIHx8ICcnKS50cmltKCk7XG4gIGlmIChhbGlnbikgc3R5bGUuYWxpZ24gPSBhbGlnbjtcbiAgZm9yIChjb25zdCBrZXkgb2YgVEVYVF9CT1hfTlVNQkVSUykge1xuICAgIGNvbnN0IG51bWJlciA9IGZpbml0ZU51bWJlcihvYmpba2V5XSk7XG4gICAgaWYgKG51bWJlciAhPSBudWxsKSBzdHlsZVtrZXldID0gbnVtYmVyO1xuICB9XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdHlsZSkubGVuZ3RoID8gc3R5bGUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNsaXBOYW1lKHZhbHVlOiBzdHJpbmcsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB0cmltbWVkID0gdmFsdWUucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcbiAgY29uc3QgbmFtZSA9IHRyaW1tZWQgfHwgZmFsbGJhY2s7XG4gIHJldHVybiBuYW1lLmxlbmd0aCA+IE5BTUVfTElNSVQgPyBuYW1lLnNsaWNlKDAsIE5BTUVfTElNSVQpLnRyaW0oKSA6IG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0RGVzaWduZXJJbnB1dHMoXG4gIHByb2R1Y3Q6IGFueSxcbiAgZHJhZnRzOiBEcmFmdFRlbXBsYXRlRGF0YVtdLFxuKTogRGVzaWduZXJJbnB1dFtdIHtcbiAgY29uc3QgZ3JvdXBlZCA9IHByb2R1Y3RIYXNWYXJpYXRpb25Hcm91cHMocHJvZHVjdCk7XG4gIGNvbnN0IGlucHV0czogRGVzaWduZXJJbnB1dFtdID0gW107XG4gIGZvciAoY29uc3QgZHJhZnQgb2YgZHJhZnRzIHx8IFtdKSB7XG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IGdyb3VwZWQgPyBkcmFmdC5ncm91cEluZGV4IDogdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGUgb2YgZHJhZnQudGVtcGxhdGVEYXRhIHx8IFtdKSB7XG4gICAgICBmb3IgKGNvbnN0IG9iaiBvZiB0ZW1wbGF0ZS5jYW52YXNKc29uPy5vYmplY3RzIHx8IFtdKSB7XG4gICAgICAgIGlmIChvYmo/Lm1lcmNoaUZpZWxkSWQgIT0gbnVsbCkgY29udGludWU7XG4gICAgICAgIGlmIChvYmo/LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gU3RyaW5nKG9iai50ZXh0IHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgaWYgKCF2YWx1ZSkgY29udGludWU7XG4gICAgICAgICAgY29uc3QgdGV4dFN0eWxlID0gdGV4dFN0eWxlRnJvbU9iamVjdChvYmopO1xuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGtpbmQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIG5hbWU6IGNsaXBOYW1lKHZhbHVlLCAnQ3VzdG9tIHRleHQnKSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgLi4uKHRleHRTdHlsZSA/IHsgdGV4dFN0eWxlIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4oZ3JvdXBJbmRleCAhPSBudWxsID8geyBncm91cEluZGV4IH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAob2JqPy50eXBlID09PSAnaW1hZ2UnICYmIG9iai5zcmMpIHtcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBraW5kOiAnZmlsZScsXG4gICAgICAgICAgICBuYW1lOiAnQ3VzdG9tIGltYWdlJyxcbiAgICAgICAgICAgIHNyYzogU3RyaW5nKG9iai5zcmMpLFxuICAgICAgICAgICAgLi4uKGdyb3VwSW5kZXggIT0gbnVsbCA/IHsgZ3JvdXBJbmRleCB9IDoge30pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbnB1dHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWNrRGVzaWduSW5wdXROb3RlcyhcbiAgaW5wdXRzOiBDaGVja291dERlc2lnbklucHV0W10sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXlsb2FkID0gKGlucHV0cyB8fCBbXSlcbiAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmtpbmQgPT09ICd0ZXh0JyB8fCBpdGVtLmZpbGU/LmlkICE9IG51bGwpXG4gICAgLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIGtpbmQ6IGl0ZW0ua2luZCxcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgIC4uLihpdGVtLnZhbHVlICE9IG51bGwgPyB7IHZhbHVlOiBpdGVtLnZhbHVlIH0gOiB7fSksXG4gICAgICAuLi4oaXRlbS50ZXh0U3R5bGUgPyB7IHRleHRTdHlsZTogaXRlbS50ZXh0U3R5bGUgfSA6IHt9KSxcbiAgICAgIC4uLihpdGVtLmZpbGU/LmlkICE9IG51bGwgPyB7IGZpbGU6IHsgaWQ6IGl0ZW0uZmlsZS5pZCB9IH0gOiB7fSksXG4gICAgICAuLi4oaXRlbS5ncm91cEluZGV4ICE9IG51bGwgPyB7IGdyb3VwSW5kZXg6IGl0ZW0uZ3JvdXBJbmRleCB9IDoge30pLFxuICAgIH0pKTtcbiAgaWYgKCFwYXlsb2FkLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICBsZXQgYmluYXJ5ID0gJyc7XG4gIGJ5dGVzLmZvckVhY2goKGJ5dGUpID0+IHtcbiAgICBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlKTtcbiAgfSk7XG4gIHJldHVybiBgJHtERVNJR05fUFJFRklYfSR7YnRvYShiaW5hcnkpfSR7REVTSUdOX1NVRkZJWH1gO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQSx5QkFBeUIsUUFBUSxrQkFBa0I7QUFHNUQsSUFBTUMsVUFBVSxHQUFHLEVBQUU7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
@@ -0,0 +1,154 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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; } }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ import { collectDesignerInputs, packDesignInputNotes } from './designerInputs';
8
+ var groupedProduct = {
9
+ groupVariationFields: [{
10
+ id: 9
11
+ }]
12
+ };
13
+ var plainProduct = {
14
+ groupVariationFields: []
15
+ };
16
+ function drafts() {
17
+ return [{
18
+ groupIndex: 0,
19
+ productId: 4,
20
+ previews: [],
21
+ templateData: [{
22
+ templateId: 1,
23
+ draft: 'draft',
24
+ canvasPreview: 'preview',
25
+ canvasJson: {
26
+ width: 100,
27
+ height: 100,
28
+ objects: [{
29
+ id: 'linked',
30
+ type: 'text',
31
+ merchiFieldId: 9,
32
+ text: 'From the form',
33
+ x: 0,
34
+ y: 0,
35
+ width: 10,
36
+ height: 10,
37
+ rotation: 0,
38
+ scaleX: 1,
39
+ scaleY: 1
40
+ }, {
41
+ id: 'added',
42
+ type: 'text',
43
+ text: 'Team night',
44
+ fill: '#112233',
45
+ fontSize: 56,
46
+ fontFamily: 'Oswald',
47
+ align: 'center',
48
+ x: 12,
49
+ y: 20,
50
+ width: 240,
51
+ height: 64,
52
+ rotation: 0,
53
+ scaleX: 1,
54
+ scaleY: 1
55
+ }, {
56
+ id: 'logo',
57
+ type: 'image',
58
+ src: 'data:image/png;base64,aaa',
59
+ x: 0,
60
+ y: 0,
61
+ width: 10,
62
+ height: 10,
63
+ rotation: 0,
64
+ scaleX: 1,
65
+ scaleY: 1
66
+ }, {
67
+ id: 'fill',
68
+ type: 'rect',
69
+ fill: '#111111',
70
+ x: 0,
71
+ y: 0,
72
+ width: 10,
73
+ height: 10,
74
+ rotation: 0,
75
+ scaleX: 1,
76
+ scaleY: 1
77
+ }]
78
+ }
79
+ }]
80
+ }];
81
+ }
82
+ test('collectDesignerInputs keeps only text and images the customer added', function () {
83
+ expect(collectDesignerInputs(plainProduct, drafts())).toEqual([{
84
+ kind: 'text',
85
+ name: 'Team night',
86
+ value: 'Team night',
87
+ textStyle: {
88
+ colour: '#112233',
89
+ textSize: 56,
90
+ font: 'Oswald',
91
+ align: 'center',
92
+ x: 12,
93
+ y: 20,
94
+ width: 240,
95
+ height: 64,
96
+ rotation: 0,
97
+ scaleX: 1,
98
+ scaleY: 1
99
+ }
100
+ }, {
101
+ kind: 'file',
102
+ name: 'Custom image',
103
+ src: 'data:image/png;base64,aaa'
104
+ }]);
105
+ });
106
+ test('collectDesignerInputs records the variation group when the product has groups', function () {
107
+ var _collectDesignerInput = collectDesignerInputs(groupedProduct, drafts()),
108
+ _collectDesignerInput2 = _slicedToArray(_collectDesignerInput, 1),
109
+ text = _collectDesignerInput2[0];
110
+ expect(text.groupIndex).toBe(0);
111
+ });
112
+ test('packDesignInputNotes hides the checkout payload in the cart marker', function () {
113
+ var notes = packDesignInputNotes([{
114
+ kind: 'text',
115
+ name: 'Team night',
116
+ value: 'Team night',
117
+ textStyle: {
118
+ colour: '#112233',
119
+ textSize: 56,
120
+ font: 'Oswald',
121
+ align: 'center'
122
+ }
123
+ }, {
124
+ kind: 'file',
125
+ name: 'Custom image',
126
+ file: {
127
+ id: 'file-1'
128
+ }
129
+ }]);
130
+ expect(notes === null || notes === void 0 ? void 0 : notes.startsWith('[[client-design-inputs:')).toBe(true);
131
+ expect(notes === null || notes === void 0 ? void 0 : notes.includes('data:image')).toBe(false);
132
+ var encoded = notes.slice('[[client-design-inputs:'.length, -2);
133
+ var parsed = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(encoded), function (_char) {
134
+ return _char.charCodeAt(0);
135
+ })));
136
+ expect(parsed).toEqual([{
137
+ kind: 'text',
138
+ name: 'Team night',
139
+ value: 'Team night',
140
+ textStyle: {
141
+ colour: '#112233',
142
+ textSize: 56,
143
+ font: 'Oswald',
144
+ align: 'center'
145
+ }
146
+ }, {
147
+ kind: 'file',
148
+ name: 'Custom image',
149
+ file: {
150
+ id: 'file-1'
151
+ }
152
+ }]);
153
+ });
154
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2xsZWN0RGVzaWduZXJJbnB1dHMiLCJwYWNrRGVzaWduSW5wdXROb3RlcyIsImdyb3VwZWRQcm9kdWN0IiwiZ3JvdXBWYXJpYXRpb25GaWVsZHMiLCJpZCIsInBsYWluUHJvZHVjdCIsImRyYWZ0cyIsImdyb3VwSW5kZXgiLCJwcm9kdWN0SWQiLCJwcmV2aWV3cyIsInRlbXBsYXRlRGF0YSIsInRlbXBsYXRlSWQiLCJkcmFmdCIsImNhbnZhc1ByZXZpZXciLCJjYW52YXNKc29uIiwid2lkdGgiLCJoZWlnaHQiLCJvYmplY3RzIiwidHlwZSIsIm1lcmNoaUZpZWxkSWQiLCJ0ZXh0IiwieCIsInkiLCJyb3RhdGlvbiIsInNjYWxlWCIsInNjYWxlWSIsImZpbGwiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJhbGlnbiIsInNyYyIsInRlc3QiLCJleHBlY3QiLCJ0b0VxdWFsIiwia2luZCIsIm5hbWUiLCJ2YWx1ZSIsInRleHRTdHlsZSIsImNvbG91ciIsInRleHRTaXplIiwiZm9udCIsIl9jb2xsZWN0RGVzaWduZXJJbnB1dCIsIl9jb2xsZWN0RGVzaWduZXJJbnB1dDIiLCJfc2xpY2VkVG9BcnJheSIsInRvQmUiLCJub3RlcyIsImZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJlbmNvZGVkIiwic2xpY2UiLCJsZW5ndGgiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJUZXh0RGVjb2RlciIsImRlY29kZSIsIlVpbnQ4QXJyYXkiLCJmcm9tIiwiYXRvYiIsImNoYXIiLCJjaGFyQ29kZUF0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Rlc2lnbmVySW5wdXRzLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29sbGVjdERlc2lnbmVySW5wdXRzLFxuICBwYWNrRGVzaWduSW5wdXROb3Rlcyxcbn0gZnJvbSAnLi9kZXNpZ25lcklucHV0cyc7XG5pbXBvcnQgeyBEcmFmdFRlbXBsYXRlRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBncm91cGVkUHJvZHVjdCA9IHsgZ3JvdXBWYXJpYXRpb25GaWVsZHM6IFt7IGlkOiA5IH1dIH07XG5jb25zdCBwbGFpblByb2R1Y3QgPSB7IGdyb3VwVmFyaWF0aW9uRmllbGRzOiBbXSB9O1xuXG5mdW5jdGlvbiBkcmFmdHMoKTogRHJhZnRUZW1wbGF0ZURhdGFbXSB7XG4gIHJldHVybiBbe1xuICAgIGdyb3VwSW5kZXg6IDAsXG4gICAgcHJvZHVjdElkOiA0LFxuICAgIHByZXZpZXdzOiBbXSxcbiAgICB0ZW1wbGF0ZURhdGE6IFt7XG4gICAgICB0ZW1wbGF0ZUlkOiAxLFxuICAgICAgZHJhZnQ6ICdkcmFmdCcsXG4gICAgICBjYW52YXNQcmV2aWV3OiAncHJldmlldycsXG4gICAgICBjYW52YXNKc29uOiB7XG4gICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgIGhlaWdodDogMTAwLFxuICAgICAgICBvYmplY3RzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdsaW5rZWQnLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgbWVyY2hpRmllbGRJZDogOSxcbiAgICAgICAgICAgIHRleHQ6ICdGcm9tIHRoZSBmb3JtJyxcbiAgICAgICAgICAgIHg6IDAsIHk6IDAsIHdpZHRoOiAxMCwgaGVpZ2h0OiAxMCwgcm90YXRpb246IDAsIHNjYWxlWDogMSwgc2NhbGVZOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdhZGRlZCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB0ZXh0OiAnVGVhbSBuaWdodCcsXG4gICAgICAgICAgICBmaWxsOiAnIzExMjIzMycsXG4gICAgICAgICAgICBmb250U2l6ZTogNTYsXG4gICAgICAgICAgICBmb250RmFtaWx5OiAnT3N3YWxkJyxcbiAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHg6IDEyLCB5OiAyMCwgd2lkdGg6IDI0MCwgaGVpZ2h0OiA2NCwgcm90YXRpb246IDAsIHNjYWxlWDogMSwgc2NhbGVZOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdsb2dvJyxcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICAgICAgICBzcmM6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsYWFhJyxcbiAgICAgICAgICAgIHg6IDAsIHk6IDAsIHdpZHRoOiAxMCwgaGVpZ2h0OiAxMCwgcm90YXRpb246IDAsIHNjYWxlWDogMSwgc2NhbGVZOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdmaWxsJyxcbiAgICAgICAgICAgIHR5cGU6ICdyZWN0JyxcbiAgICAgICAgICAgIGZpbGw6ICcjMTExMTExJyxcbiAgICAgICAgICAgIHg6IDAsIHk6IDAsIHdpZHRoOiAxMCwgaGVpZ2h0OiAxMCwgcm90YXRpb246IDAsIHNjYWxlWDogMSwgc2NhbGVZOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH1dLFxuICB9XTtcbn1cblxudGVzdCgnY29sbGVjdERlc2lnbmVySW5wdXRzIGtlZXBzIG9ubHkgdGV4dCBhbmQgaW1hZ2VzIHRoZSBjdXN0b21lciBhZGRlZCcsICgpID0+IHtcbiAgZXhwZWN0KGNvbGxlY3REZXNpZ25lcklucHV0cyhwbGFpblByb2R1Y3QsIGRyYWZ0cygpKSkudG9FcXVhbChbXG4gICAge1xuICAgICAga2luZDogJ3RleHQnLFxuICAgICAgbmFtZTogJ1RlYW0gbmlnaHQnLFxuICAgICAgdmFsdWU6ICdUZWFtIG5pZ2h0JyxcbiAgICAgIHRleHRTdHlsZToge1xuICAgICAgICBjb2xvdXI6ICcjMTEyMjMzJyxcbiAgICAgICAgdGV4dFNpemU6IDU2LFxuICAgICAgICBmb250OiAnT3N3YWxkJyxcbiAgICAgICAgYWxpZ246ICdjZW50ZXInLFxuICAgICAgICB4OiAxMixcbiAgICAgICAgeTogMjAsXG4gICAgICAgIHdpZHRoOiAyNDAsXG4gICAgICAgIGhlaWdodDogNjQsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzY2FsZVg6IDEsXG4gICAgICAgIHNjYWxlWTogMSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7IGtpbmQ6ICdmaWxlJywgbmFtZTogJ0N1c3RvbSBpbWFnZScsIHNyYzogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxhYWEnIH0sXG4gIF0pO1xufSk7XG5cbnRlc3QoJ2NvbGxlY3REZXNpZ25lcklucHV0cyByZWNvcmRzIHRoZSB2YXJpYXRpb24gZ3JvdXAgd2hlbiB0aGUgcHJvZHVjdCBoYXMgZ3JvdXBzJywgKCkgPT4ge1xuICBjb25zdCBbdGV4dF0gPSBjb2xsZWN0RGVzaWduZXJJbnB1dHMoZ3JvdXBlZFByb2R1Y3QsIGRyYWZ0cygpKTtcbiAgZXhwZWN0KHRleHQuZ3JvdXBJbmRleCkudG9CZSgwKTtcbn0pO1xuXG50ZXN0KCdwYWNrRGVzaWduSW5wdXROb3RlcyBoaWRlcyB0aGUgY2hlY2tvdXQgcGF5bG9hZCBpbiB0aGUgY2FydCBtYXJrZXInLCAoKSA9PiB7XG4gIGNvbnN0IG5vdGVzID0gcGFja0Rlc2lnbklucHV0Tm90ZXMoW1xuICAgIHtcbiAgICAgIGtpbmQ6ICd0ZXh0JyxcbiAgICAgIG5hbWU6ICdUZWFtIG5pZ2h0JyxcbiAgICAgIHZhbHVlOiAnVGVhbSBuaWdodCcsXG4gICAgICB0ZXh0U3R5bGU6IHtcbiAgICAgICAgY29sb3VyOiAnIzExMjIzMycsXG4gICAgICAgIHRleHRTaXplOiA1NixcbiAgICAgICAgZm9udDogJ09zd2FsZCcsXG4gICAgICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7IGtpbmQ6ICdmaWxlJywgbmFtZTogJ0N1c3RvbSBpbWFnZScsIGZpbGU6IHsgaWQ6ICdmaWxlLTEnIH0gfSxcbiAgXSk7XG4gIGV4cGVjdChub3Rlcz8uc3RhcnRzV2l0aCgnW1tjbGllbnQtZGVzaWduLWlucHV0czonKSkudG9CZSh0cnVlKTtcbiAgZXhwZWN0KG5vdGVzPy5pbmNsdWRlcygnZGF0YTppbWFnZScpKS50b0JlKGZhbHNlKTtcbiAgY29uc3QgZW5jb2RlZCA9IG5vdGVzIS5zbGljZSgnW1tjbGllbnQtZGVzaWduLWlucHV0czonLmxlbmd0aCwgLTIpO1xuICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShcbiAgICBVaW50OEFycmF5LmZyb20oYXRvYihlbmNvZGVkKSwgKGNoYXIpID0+IGNoYXIuY2hhckNvZGVBdCgwKSksXG4gICkpO1xuICBleHBlY3QocGFyc2VkKS50b0VxdWFsKFtcbiAgICB7XG4gICAgICBraW5kOiAndGV4dCcsXG4gICAgICBuYW1lOiAnVGVhbSBuaWdodCcsXG4gICAgICB2YWx1ZTogJ1RlYW0gbmlnaHQnLFxuICAgICAgdGV4dFN0eWxlOiB7XG4gICAgICAgIGNvbG91cjogJyMxMTIyMzMnLFxuICAgICAgICB0ZXh0U2l6ZTogNTYsXG4gICAgICAgIGZvbnQ6ICdPc3dhbGQnLFxuICAgICAgICBhbGlnbjogJ2NlbnRlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBraW5kOiAnZmlsZScsIG5hbWU6ICdDdXN0b20gaW1hZ2UnLCBmaWxlOiB7IGlkOiAnZmlsZS0xJyB9IH0sXG4gIF0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQ0VBLHFCQUFxQixFQUNyQkMsb0JBQW9CLFFBQ2Ysa0JBQWtCO0FBR3pCLElBQU1DLGNBQWMsR0FBRztFQUFFQyxvQkFBb0IsRUFBRSxDQUFDO0lBQUVDLEVBQUUsRUFBRTtFQUFFLENBQUM7QUFBRSxDQUFDO0FBQzVELElBQU1DLFlBQVksR0FBRztFQUFFRixvQkFBb0IsRUFBRTtBQUFHLENBQUM7QUFFakQsU0FBU0csTUFBTUEsQ0FBQSxFQUF3QjtFQUNyQyxPQUFPLENBQUM7SUFDTkMsVUFBVSxFQUFFLENBQUM7SUFDYkMsU0FBUyxFQUFFLENBQUM7SUFDWkMsUUFBUSxF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
@@ -3,6 +3,10 @@ export declare function draftStorageKey(productId: number | string): string;
3
3
  export declare function loadDrafts(productId: number | string): DraftTemplateData[];
4
4
  export declare function saveDrafts(productId: number | string, drafts: DraftTemplateData[]): void;
5
5
  export declare function clearDrafts(productId: number | string): void;
6
+ /** Drop every draft the browser remembered for one product. */
7
+ export declare function clearDraftWork(productId: number | string): void;
8
+ /** Drop drafts saved for every product except the one being designed now. */
9
+ export declare function clearOtherProductDrafts(productId: number | string): void;
6
10
  export type ArtworkPath = 'self' | 'service';
7
11
  export declare function artworkPathKey(productId: number | string): string;
8
12
  export declare function loadArtworkPath(productId: number | string): ArtworkPath;
@@ -34,6 +34,39 @@ export function clearDrafts(productId) {
34
34
  if (typeof window === 'undefined' || productId == null) return;
35
35
  window.localStorage.removeItem(draftStorageKey(productId));
36
36
  }
37
+ var DRAFT_WORK_PREFIXES = ['productDraftTemplate-', 'productArtworkPath-', 'productDesignMethod-', 'productTemplateUploads-'];
38
+
39
+ /** Drop every draft the browser remembered for one product. */
40
+ export function clearDraftWork(productId) {
41
+ if (typeof window === 'undefined' || productId == null) return;
42
+ DRAFT_WORK_PREFIXES.forEach(function (prefix) {
43
+ window.localStorage.removeItem("".concat(prefix).concat(productId));
44
+ });
45
+ }
46
+
47
+ /** Drop drafts saved for every product except the one being designed now. */
48
+ export function clearOtherProductDrafts(productId) {
49
+ if (typeof window === 'undefined' || productId == null) return;
50
+ var keep = String(productId);
51
+ var stale = [];
52
+ var _loop = function _loop() {
53
+ var key = window.localStorage.key(index);
54
+ if (!key) return 0; // continue
55
+ var prefix = DRAFT_WORK_PREFIXES.find(function (item) {
56
+ return key.startsWith(item);
57
+ });
58
+ if (!prefix) return 0; // continue
59
+ if (key.slice(prefix.length) !== keep) stale.push(key);
60
+ },
61
+ _ret;
62
+ for (var index = 0; index < window.localStorage.length; index += 1) {
63
+ _ret = _loop();
64
+ if (_ret === 0) continue;
65
+ }
66
+ stale.forEach(function (key) {
67
+ return window.localStorage.removeItem(key);
68
+ });
69
+ }
37
70
  export function artworkPathKey(productId) {
38
71
  return "productArtworkPath-".concat(productId);
39
72
  }
@@ -197,7 +230,7 @@ export function completeGroupCount(product, formValues, drafts) {
197
230
  var independent = (formValues === null || formValues === void 0 ? void 0 : formValues.variations) || [];
198
231
  var groups = (formValues === null || formValues === void 0 ? void 0 : formValues.variationsGroups) || [];
199
232
  var complete = 0;
200
- var _loop = function _loop(groupIndex) {
233
+ var _loop2 = function _loop2(groupIndex) {
201
234
  var _groups$groupIndex2;
202
235
  var templates = templatesForGroup(product, independent, ((_groups$groupIndex2 = groups[groupIndex]) === null || _groups$groupIndex2 === void 0 ? void 0 : _groups$groupIndex2.variations) || []);
203
236
  var allSaved = templates.every(function (template) {
@@ -206,11 +239,11 @@ export function completeGroupCount(product, formValues, drafts) {
206
239
  if (allSaved) complete += 1;
207
240
  };
208
241
  for (var groupIndex = 0; groupIndex < count; groupIndex += 1) {
209
- _loop(groupIndex);
242
+ _loop2(groupIndex);
210
243
  }
211
244
  return {
212
245
  complete: complete,
213
246
  total: count
214
247
  };
215
248
  }
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNpZ25Hcm91cENvdW50IiwidGVtcGxhdGVzRm9yR3JvdXAiLCJkcmFmdFN0b3JhZ2VLZXkiLCJwcm9kdWN0SWQiLCJjb25jYXQiLCJsb2FkRHJhZnRzIiwid2luZG93IiwicmF3IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsIkFycmF5IiwiaXNBcnJheSIsIl91bnVzZWQiLCJzYXZlRHJhZnRzIiwiZHJhZnRzIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImNsZWFyRHJhZnRzIiwicmVtb3ZlSXRlbSIsImFydHdvcmtQYXRoS2V5IiwibG9hZEFydHdvcmtQYXRoIiwiX3VudXNlZDIiLCJzYXZlQXJ0d29ya1BhdGgiLCJwYXRoIiwiZGVzaWduTWV0aG9kS2V5IiwibG9hZERlc2lnbk1ldGhvZCIsIl91bnVzZWQzIiwic2F2ZURlc2lnbk1ldGhvZCIsIm1ldGhvZCIsInRlbXBsYXRlVXBsb2Fkc0tleSIsImxvYWRUZW1wbGF0ZVVwbG9hZHMiLCJmaWx0ZXIiLCJmaWxlIiwiaWQiLCJfdW51c2VkNCIsInNhdmVUZW1wbGF0ZVVwbG9hZHMiLCJmaWxlcyIsImNoZWNrb3V0Q2xpZW50RmlsZXMiLCJtYXAiLCJvYmplY3RJZCIsIlN0cmluZyIsInRlbXBsYXRlQ2hlY2tvdXRKb2IiLCJqb2JEYXRhIiwiY2xpZW50RmlsZXMiLCJuZXh0IiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsIm93bkRyYWZ0cyIsImFjY2VwdGVkIiwiTWF0aCIsImZsb29yIiwiRGF0ZSIsIm5vdyIsImltYWdlcyIsImVudHJ5IiwicHJ1bmVEcmFmdHMiLCJncm91cENvdW50IiwiZHJhZnQiLCJncm91cEluZGV4Iiwic2F2ZWRQcmV2aWV3IiwidGVtcGxhdGVJZCIsImdyb3VwIiwiZmluZCIsInRlbXBsYXRlRGF0YSIsIml0ZW0iLCJpc1ByZXZpZXdDb21wbGV0ZSIsInByZXZpZXciLCJCb29sZWFuIiwiY2FudmFzUHJldmlldyIsInVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInByZXZpZXdzIiwicHVzaCIsImluZGV4IiwiZmluZEluZGV4IiwicmVxdWlyZWREZXNpZ25TbG90cyIsInByb2R1Y3QiLCJmb3JtVmFsdWVzIiwiY291bnQiLCJpbmRlcGVuZGVudCIsInZhcmlhdGlvbnMiLCJncm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwic2xvdHMiLCJfZ3JvdXBzJGdyb3VwSW5kZXgiLCJncm91cFZhcnMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwidGVtcGxhdGUiLCJ2YWx1ZSIsImVyciIsImUiLCJmIiwibWlzc2luZ0Rlc2lnblNsb3RzIiwicHJ1bmVkIiwiX3JlZiIsImNvbXBsZXRlR3JvdXBDb3VudCIsImNvbXBsZXRlIiwiX2xvb3AiLCJfZ3JvdXBzJGdyb3VwSW5kZXgyIiwidGVtcGxhdGVzIiwiYWxsU2F2ZWQiLCJldmVyeSIsInRvdGFsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RyYWZ0U3RvcmFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEcmFmdFRlbXBsYXRlRGF0YSxcbiAgUmVuZGVyZWREcmFmdFByZXZpZXcsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZGVzaWduR3JvdXBDb3VudCxcbiAgdGVtcGxhdGVzRm9yR3JvdXAsXG59IGZyb20gJy4vZHJhZnRUZW1wbGF0ZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhZnRTdG9yYWdlS2V5KHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBwcm9kdWN0RHJhZnRUZW1wbGF0ZS0ke3Byb2R1Y3RJZH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERyYWZ0cyhwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IERyYWZ0VGVtcGxhdGVEYXRhW10ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybiBbXTtcbiAgdHJ5IHtcbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oZHJhZnRTdG9yYWdlS2V5KHByb2R1Y3RJZCkpO1xuICAgIGlmICghcmF3KSByZXR1cm4gW107XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhcnNlZCkgPyBwYXJzZWQgOiBbXTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlRHJhZnRzKFxuICBwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyxcbiAgZHJhZnRzOiBEcmFmdFRlbXBsYXRlRGF0YVtdLFxuKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZHJhZnRTdG9yYWdlS2V5KHByb2R1Y3RJZCksIEpTT04uc3RyaW5naWZ5KGRyYWZ0cykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJEcmFmdHMocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm47XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShkcmFmdFN0b3JhZ2VLZXkocHJvZHVjdElkKSk7XG59XG5cbmV4cG9ydCB0eXBlIEFydHdvcmtQYXRoID0gJ3NlbGYnIHwgJ3NlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gYXJ0d29ya1BhdGhLZXkocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHByb2R1Y3RBcnR3b3JrUGF0aC0ke3Byb2R1Y3RJZH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFydHdvcmtQYXRoKHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nKTogQXJ0d29ya1BhdGgge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybiAnc2VsZic7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShhcnR3b3JrUGF0aEtleShwcm9kdWN0SWQpKSA9PT0gJ3NlcnZpY2UnXG4gICAgICA/ICdzZXJ2aWNlJ1xuICAgICAgOiAnc2VsZic7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAnc2VsZic7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVBcnR3b3JrUGF0aChcbiAgcHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcsXG4gIHBhdGg6IEFydHdvcmtQYXRoLFxuKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYXJ0d29ya1BhdGhLZXkocHJvZHVjdElkKSwgcGF0aCk7XG59XG5cbmV4cG9ydCB0eXBlIERlc2lnbk1ldGhvZCA9ICdkZXNpZ25lcicgfCAndGVtcGxhdGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZVVwbG9hZCB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmlld1VybD86IHN0cmluZztcbiAgZG93bmxvYWRVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNpZ25NZXRob2RLZXkocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHByb2R1Y3REZXNpZ25NZXRob2QtJHtwcm9kdWN0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREZXNpZ25NZXRob2QocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBEZXNpZ25NZXRob2Qge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybiAnZGVzaWduZXInO1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oZGVzaWduTWV0aG9kS2V5KHByb2R1Y3RJZCkpID09PSAndGVtcGxhdGVzJ1xuICAgICAgPyAndGVtcGxhdGVzJ1xuICAgICAgOiAnZGVzaWduZXInO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJ2Rlc2lnbmVyJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZURlc2lnbk1ldGhvZChcbiAgcHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcsXG4gIG1ldGhvZDogRGVzaWduTWV0aG9kLFxuKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZGVzaWduTWV0aG9kS2V5KHByb2R1Y3RJZCksIG1ldGhvZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZVVwbG9hZHNLZXkocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHByb2R1Y3RUZW1wbGF0ZVVwbG9hZHMtJHtwcm9kdWN0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRUZW1wbGF0ZVVwbG9hZHMocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBUZW1wbGF0ZVVwbG9hZFtdIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm4gW107XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRlbXBsYXRlVXBsb2Fkc0tleShwcm9kdWN0SWQpKTtcbiAgICBpZiAoIXJhdykgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkLmZpbHRlcigoZmlsZSkgPT4gZmlsZT8uaWQgIT0gbnVsbCkgOiBbXTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlVGVtcGxhdGVVcGxvYWRzKFxuICBwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyxcbiAgZmlsZXM6IFRlbXBsYXRlVXBsb2FkW10sXG4pOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm47XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0ZW1wbGF0ZVVwbG9hZHNLZXkocHJvZHVjdElkKSwgSlNPTi5zdHJpbmdpZnkoZmlsZXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrb3V0Q2xpZW50RmlsZXMoZmlsZXM6IFRlbXBsYXRlVXBsb2FkW10pIHtcbiAgcmV0dXJuIChmaWxlcyB8fCBbXSlcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlPy5pZCAhPSBudWxsKVxuICAgIC5tYXAoKGZpbGUpID0+ICh7XG4gICAgICBmaWxlOiB7IGlkOiBmaWxlLmlkIH0sXG4gICAgICBvYmplY3RJZDogU3RyaW5nKGZpbGUuaWQpLFxuICAgIH0pKTtcbn1cblxuLyoqIEF0dGFjaCByZXVwbG9hZGVkIHRlbXBsYXRlcyBhcyBwcmludCBmaWxlcyBhbmQgYXMgdGhlIGpvYidzIGNsaWVudCBkcmFmdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZUNoZWNrb3V0Sm9iKGpvYkRhdGE6IGFueSwgZmlsZXM6IFRlbXBsYXRlVXBsb2FkW10pIHtcbiAgY29uc3QgY2xpZW50RmlsZXMgPSBjaGVja291dENsaWVudEZpbGVzKGZpbGVzKTtcbiAgY29uc3QgbmV4dCA9IHsgLi4uam9iRGF0YSwgY2xpZW50RmlsZXMgfTtcbiAgaWYgKCFjbGllbnRGaWxlcy5sZW5ndGgpIHtcbiAgICBkZWxldGUgbmV4dC5vd25EcmFmdHM7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cbiAgbmV4dC5vd25EcmFmdHMgPSBbe1xuICAgIGFjY2VwdGVkOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICBpbWFnZXM6IGNsaWVudEZpbGVzLm1hcCgoZW50cnkpID0+ICh7IGlkOiBlbnRyeS5maWxlLmlkIH0pKSxcbiAgfV07XG4gIHJldHVybiBuZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmVEcmFmdHMoXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbiAgZ3JvdXBDb3VudDogbnVtYmVyLFxuKTogRHJhZnRUZW1wbGF0ZURhdGFbXSB7XG4gIHJldHVybiAoZHJhZnRzIHx8IFtdKS5maWx0ZXIoKGRyYWZ0KSA9PiBkcmFmdC5ncm91cEluZGV4IDwgZ3JvdXBDb3VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlZFByZXZpZXcoXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbiAgZ3JvdXBJbmRleDogbnVtYmVyLFxuICB0ZW1wbGF0ZUlkOiBudW1iZXIsXG4pOiBSZW5kZXJlZERyYWZ0UHJldmlldyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGdyb3VwID0gKGRyYWZ0cyB8fCBbXSkuZmluZCgoZHJhZnQpID0+IGRyYWZ0Lmdyb3VwSW5kZXggPT09IGdyb3VwSW5kZXgpO1xuICByZXR1cm4gKGdyb3VwPy50ZW1wbGF0ZURhdGEgfHwgW10pLmZpbmQoXG4gICAgKGl0ZW0pID0+IGl0ZW0udGVtcGxhdGVJZCA9PT0gdGVtcGxhdGVJZFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmV2aWV3Q29tcGxldGUocHJldmlldz86IFJlbmRlcmVkRHJhZnRQcmV2aWV3IHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihwcmV2aWV3Py5kcmFmdCAmJiBwcmV2aWV3Py5jYW52YXNQcmV2aWV3KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdChcbiAgZHJhZnRzOiBEcmFmdFRlbXBsYXRlRGF0YVtdLFxuICBwcm9kdWN0SWQ6IG51bWJlcixcbiAgZ3JvdXBJbmRleDogbnVtYmVyLFxuICBwcmV2aWV3OiBSZW5kZXJlZERyYWZ0UHJldmlldyxcbik6IERyYWZ0VGVtcGxhdGVEYXRhW10ge1xuICBjb25zdCBuZXh0ID0gKGRyYWZ0cyB8fCBbXSkubWFwKChkcmFmdCkgPT4gKHtcbiAgICAuLi5kcmFmdCxcbiAgICB0ZW1wbGF0ZURhdGE6IFsuLi4oZHJhZnQudGVtcGxhdGVEYXRhIHx8IFtdKV0sXG4gICAgcHJldmlld3M6IFsuLi4oZHJhZnQucHJldmlld3MgfHwgW10pXSxcbiAgfSkpO1xuICBsZXQgZ3JvdXAgPSBuZXh0LmZpbmQoKGRyYWZ0KSA9PiBkcmFmdC5ncm91cEluZGV4ID09PSBncm91cEluZGV4KTtcbiAgaWYgKCFncm91cCkge1xuICAgIGdyb3VwID0geyBncm91cEluZGV4LCBwcm9kdWN0SWQsIHRlbXBsYXRlRGF0YTogW10sIHByZXZpZXdzOiBbXSB9O1xuICAgIG5leHQucHVzaChncm91cCk7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBncm91cC50ZW1wbGF0ZURhdGEuZmluZEluZGV4KFxuICAgIChpdGVtKSA9PiBpdGVtLnRlbXBsYXRlSWQgPT09IHByZXZpZXcudGVtcGxhdGVJZFxuICApO1xuICBpZiAoaW5kZXggPj0gMCkgZ3JvdXAudGVtcGxhdGVEYXRhW2luZGV4XSA9IHByZXZpZXc7XG4gIGVsc2UgZ3JvdXAudGVtcGxhdGVEYXRhLnB1c2gocHJldmlldyk7XG4gIHJldHVybiBuZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWREZXNpZ25TbG90cyhwcm9kdWN0OiBhbnksIGZvcm1WYWx1ZXM6IGFueSkge1xuICBjb25zdCBjb3VudCA9IGRlc2lnbkdyb3VwQ291bnQocHJvZHVjdCwgZm9ybVZhbHVlcyk7XG4gIGNvbnN0IGluZGVwZW5kZW50ID0gZm9ybVZhbHVlcz8udmFyaWF0aW9ucyB8fCBbXTtcbiAgY29uc3QgZ3JvdXBzID0gZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcyB8fCBbXTtcbiAgY29uc3Qgc2xvdHM6IHsgZ3JvdXBJbmRleDogbnVtYmVyOyB0ZW1wbGF0ZTogYW55IH1bXSA9IFtdO1xuICBmb3IgKGxldCBncm91cEluZGV4ID0gMDsgZ3JvdXBJbmRleCA8IGNvdW50OyBncm91cEluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBncm91cFZhcnMgPSBncm91cHNbZ3JvdXBJbmRleF0/LnZhcmlhdGlvbnMgfHwgW107XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXNGb3JHcm91cChwcm9kdWN0LCBpbmRlcGVuZGVudCwgZ3JvdXBWYXJzKSkge1xuICAgICAgc2xvdHMucHVzaCh7IGdyb3VwSW5kZXgsIHRlbXBsYXRlIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2xvdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXNzaW5nRGVzaWduU2xvdHMoXG4gIHByb2R1Y3Q6IGFueSxcbiAgZm9ybVZhbHVlczogYW55LFxuICBkcmFmdHM6IERyYWZ0VGVtcGxhdGVEYXRhW10sXG4pIHtcbiAgY29uc3QgcHJ1bmVkID0gcHJ1bmVEcmFmdHMoZHJhZnRzLCBkZXNpZ25Hcm91cENvdW50KHByb2R1Y3QsIGZvcm1WYWx1ZXMpKTtcbiAgcmV0dXJuIHJlcXVpcmVkRGVzaWduU2xvdHMocHJvZHVjdCwgZm9ybVZhbHVlcykuZmlsdGVyKFxuICAgICh7IGdyb3VwSW5kZXgsIHRlbXBsYXRlIH0pID0+XG4gICAgICAhaXNQcmV2aWV3Q29tcGxldGUoc2F2ZWRQcmV2aWV3KHBydW5lZCwgZ3JvdXBJbmRleCwgdGVtcGxhdGUuaWQpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVHcm91cENvdW50KHByb2R1Y3Q6IGFueSwgZm9ybVZhbHVlczogYW55LCBkcmFmdHM6IERyYWZ0VGVtcGxhdGVEYXRhW10pIHtcbiAgY29uc3QgY291bnQgPSBkZXNpZ25Hcm91cENvdW50KHByb2R1Y3QsIGZvcm1WYWx1ZXMpO1xuICBjb25zdCBpbmRlcGVuZGVudCA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnMgfHwgW107XG4gIGNvbnN0IGdyb3VwcyA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHMgfHwgW107XG4gIGxldCBjb21wbGV0ZSA9IDA7XG4gIGZvciAobGV0IGdyb3VwSW5kZXggPSAwOyBncm91cEluZGV4IDwgY291bnQ7IGdyb3VwSW5kZXggKz0gMSkge1xuICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRlbXBsYXRlc0Zvckdyb3VwKFxuICAgICAgcHJvZHVjdCxcbiAgICAgIGluZGVwZW5kZW50LFxuICAgICAgZ3JvdXBzW2dyb3VwSW5kZXhdPy52YXJpYXRpb25zIHx8IFtdLFxuICAgICk7XG4gICAgY29uc3QgYWxsU2F2ZWQgPSB0ZW1wbGF0ZXMuZXZlcnkoKHRlbXBsYXRlOiBhbnkpID0+XG4gICAgICBpc1ByZXZpZXdDb21wbGV0ZShzYXZlZFByZXZpZXcoZHJhZnRzLCBncm91cEluZGV4LCB0ZW1wbGF0ZS5pZCkpXG4gICAgKTtcbiAgICBpZiAoYWxsU2F2ZWQpIGNvbXBsZXRlICs9IDE7XG4gIH1cbiAgcmV0dXJuIHsgY29tcGxldGUsIHRvdGFsOiBjb3VudCB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBSUEsU0FDRUEsZ0JBQWdCLEVBQ2hCQyxpQkFBaUIsUUFDWixrQkFBa0I7QUFFekIsT0FBTyxTQUFTQyxlQUFlQSxDQUFDQyxTQUEwQixFQUFVO0VBQ2xFLCtCQUFBQyxNQUFBLENBQStCRCxTQUFTO0FBQzFDO0FBRUEsT0FBTyxTQUFTRSxVQUFVQSxDQUFDRixTQUEwQixFQUF1QjtFQUMxRSxJQUFJLE9BQU9HLE1B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QUNwRCxVQUFBb0UsSUFBQTtJQUFBLElBQUd6QyxVQUFVLEdBQUF5QyxJQUFBLENBQVZ6QyxVQUFVO01BQUVrQyxRQUFRLEdBQUFPLElBQUEsQ0FBUlAsUUFBUTtJQUFBLE9BQ3JCLENBQUMzQixpQkFBaUIsQ0FBQ04sWUFBWSxDQUFDdUMsTUFBTSxFQUFFeEMsVUFBVSxFQUFFa0MsUUFBUSxDQUFDM0QsRUFBRSxDQUFDLENBQUM7RUFBQSxDQUNyRSxDQUFDO0FBQ0g7QUFFQSxPQUFPLFNBQVNtRSxrQkFBa0JBLENBQUN4QixPQUFZLEVBQUVDLFVBQWUsRUFBRS9ELE1BQTJCLEVBQUU7RUFDN0YsSUFBTWdFLEtBQUssR0FBR2pGLGdCQUFnQixDQUFDK0UsT0FBTyxFQUFFQyxVQUFVLENBQUM7RUFDbkQsSUFBTUUsV0FBVyxHQUFHLENBQUFGLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFRyxVQUFVLEtBQUksRUFBRTtFQUNoRCxJQUFNQyxNQUFNLEdBQUcsQ0FBQUosVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVLLGdCQUFnQixLQUFJLEVBQUU7RUFDakQsSUFBSW1CLFFBQVEsR0FBRyxDQUFDO0VBQUMsSUFBQUMsS0FBQSxZQUFBQSxNQUFBNUMsVUFBQSxFQUM2QztJQUFBLElBQUE2QyxtQkFBQTtJQUM1RCxJQUFNQyxTQUFTLEdBQUcxRyxpQkFBaUIsQ0FDakM4RSxPQUFPLEVBQ1BHLFdBQVcsRUFDWCxFQUFBd0IsbUJBQUEsR0FBQXRCLE1BQU0sQ0FBQ3ZCLFVBQVUsQ0FBQyxjQUFBNkMsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQnZCLFVBQVUsS0FBSSxFQUNwQyxDQUFDO0lBQ0QsSUFBTXlCLFFBQVEsR0FBR0QsU0FBUyxDQUFDRSxLQUFLLENBQUMsVUFBQ2QsUUFBYTtNQUFBLE9BQzdDM0IsaUJBQWlCLENBQUNOLFlBQVksQ0FBQzdDLE1BQU0sRUFBRTRDLFVBQVUsRUFBRWtDLFFBQVEsQ0FBQzNELEVBQUUsQ0FBQyxDQUFDO0lBQUEsQ0FDbEUsQ0FBQztJQUNELElBQUl3RSxRQUFRLEVBQUVKLFFBQVEsSUFBSSxDQUFDO0VBQzdCLENBQUM7RUFWRCxLQUFLLElBQUkzQyxVQUFVLEdBQUcsQ0FBQyxFQUFFQSxVQUFVLEdBQUdvQixLQUFLLEVBQUVwQixVQUFVLElBQUksQ0FBQztJQUFBNEMsS0FBQSxDQUFBNUMsVUFBQTtFQUFBO0VBVzVELE9BQU87SUFBRTJDLFFBQVEsRUFBUkEsUUFBUTtJQUFFTSxLQUFLLEVBQUU3QjtFQUFNLENBQUM7QUFDbkMiLCJpZ25vcmVMaXN0IjpbXX0=
249
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNpZ25Hcm91cENvdW50IiwidGVtcGxhdGVzRm9yR3JvdXAiLCJkcmFmdFN0b3JhZ2VLZXkiLCJwcm9kdWN0SWQiLCJjb25jYXQiLCJsb2FkRHJhZnRzIiwid2luZG93IiwicmF3IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsIkFycmF5IiwiaXNBcnJheSIsIl91bnVzZWQiLCJzYXZlRHJhZnRzIiwiZHJhZnRzIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImNsZWFyRHJhZnRzIiwicmVtb3ZlSXRlbSIsIkRSQUZUX1dPUktfUFJFRklYRVMiLCJjbGVhckRyYWZ0V29yayIsImZvckVhY2giLCJwcmVmaXgiLCJjbGVhck90aGVyUHJvZHVjdERyYWZ0cyIsImtlZXAiLCJTdHJpbmciLCJzdGFsZSIsIl9sb29wIiwia2V5IiwiaW5kZXgiLCJmaW5kIiwiaXRlbSIsInN0YXJ0c1dpdGgiLCJzbGljZSIsImxlbmd0aCIsInB1c2giLCJfcmV0IiwiYXJ0d29ya1BhdGhLZXkiLCJsb2FkQXJ0d29ya1BhdGgiLCJfdW51c2VkMiIsInNhdmVBcnR3b3JrUGF0aCIsInBhdGgiLCJkZXNpZ25NZXRob2RLZXkiLCJsb2FkRGVzaWduTWV0aG9kIiwiX3VudXNlZDMiLCJzYXZlRGVzaWduTWV0aG9kIiwibWV0aG9kIiwidGVtcGxhdGVVcGxvYWRzS2V5IiwibG9hZFRlbXBsYXRlVXBsb2FkcyIsImZpbHRlciIsImZpbGUiLCJpZCIsIl91bnVzZWQ0Iiwic2F2ZVRlbXBsYXRlVXBsb2FkcyIsImZpbGVzIiwiY2hlY2tvdXRDbGllbnRGaWxlcyIsIm1hcCIsIm9iamVjdElkIiwidGVtcGxhdGVDaGVja291dEpvYiIsImpvYkRhdGEiLCJjbGllbnRGaWxlcyIsIm5leHQiLCJfb2JqZWN0U3ByZWFkIiwib3duRHJhZnRzIiwiYWNjZXB0ZWQiLCJNYXRoIiwiZmxvb3IiLCJEYXRlIiwibm93IiwiaW1hZ2VzIiwiZW50cnkiLCJwcnVuZURyYWZ0cyIsImdyb3VwQ291bnQiLCJkcmFmdCIsImdyb3VwSW5kZXgiLCJzYXZlZFByZXZpZXciLCJ0ZW1wbGF0ZUlkIiwiZ3JvdXAiLCJ0ZW1wbGF0ZURhdGEiLCJpc1ByZXZpZXdDb21wbGV0ZSIsInByZXZpZXciLCJCb29sZWFuIiwiY2FudmFzUHJldmlldyIsInVwc2VydEdyb3VwVGVtcGxhdGVEcmFmdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInByZXZpZXdzIiwiZmluZEluZGV4IiwicmVxdWlyZWREZXNpZ25TbG90cyIsInByb2R1Y3QiLCJmb3JtVmFsdWVzIiwiY291bnQiLCJpbmRlcGVuZGVudCIsInZhcmlhdGlvbnMiLCJncm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwic2xvdHMiLCJfZ3JvdXBzJGdyb3VwSW5kZXgiLCJncm91cFZhcnMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwidGVtcGxhdGUiLCJ2YWx1ZSIsImVyciIsImUiLCJmIiwibWlzc2luZ0Rlc2lnblNsb3RzIiwicHJ1bmVkIiwiX3JlZiIsImNvbXBsZXRlR3JvdXBDb3VudCIsImNvbXBsZXRlIiwiX2xvb3AyIiwiX2dyb3VwcyRncm91cEluZGV4MiIsInRlbXBsYXRlcyIsImFsbFNhdmVkIiwiZXZlcnkiLCJ0b3RhbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kcmFmdFN0b3JhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRHJhZnRUZW1wbGF0ZURhdGEsXG4gIFJlbmRlcmVkRHJhZnRQcmV2aWV3LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGRlc2lnbkdyb3VwQ291bnQsXG4gIHRlbXBsYXRlc0Zvckdyb3VwLFxufSBmcm9tICcuL2RyYWZ0VGVtcGxhdGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYWZ0U3RvcmFnZUtleShwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgcHJvZHVjdERyYWZ0VGVtcGxhdGUtJHtwcm9kdWN0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREcmFmdHMocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBEcmFmdFRlbXBsYXRlRGF0YVtdIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm4gW107XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGRyYWZ0U3RvcmFnZUtleShwcm9kdWN0SWQpKTtcbiAgICBpZiAoIXJhdykgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogW107XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZURyYWZ0cyhcbiAgcHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcsXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybjtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGRyYWZ0U3RvcmFnZUtleShwcm9kdWN0SWQpLCBKU09OLnN0cmluZ2lmeShkcmFmdHMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyRHJhZnRzKHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZHJhZnRTdG9yYWdlS2V5KHByb2R1Y3RJZCkpO1xufVxuXG5jb25zdCBEUkFGVF9XT1JLX1BSRUZJWEVTID0gW1xuICAncHJvZHVjdERyYWZ0VGVtcGxhdGUtJyxcbiAgJ3Byb2R1Y3RBcnR3b3JrUGF0aC0nLFxuICAncHJvZHVjdERlc2lnbk1ldGhvZC0nLFxuICAncHJvZHVjdFRlbXBsYXRlVXBsb2Fkcy0nLFxuXTtcblxuLyoqIERyb3AgZXZlcnkgZHJhZnQgdGhlIGJyb3dzZXIgcmVtZW1iZXJlZCBmb3Igb25lIHByb2R1Y3QuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJEcmFmdFdvcmsocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm47XG4gIERSQUZUX1dPUktfUFJFRklYRVMuZm9yRWFjaCgocHJlZml4KSA9PiB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3ByZWZpeH0ke3Byb2R1Y3RJZH1gKTtcbiAgfSk7XG59XG5cbi8qKiBEcm9wIGRyYWZ0cyBzYXZlZCBmb3IgZXZlcnkgcHJvZHVjdCBleGNlcHQgdGhlIG9uZSBiZWluZyBkZXNpZ25lZCBub3cuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJPdGhlclByb2R1Y3REcmFmdHMocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IGtlZXAgPSBTdHJpbmcocHJvZHVjdElkKTtcbiAgY29uc3Qgc3RhbGU6IHN0cmluZ1tdID0gW107XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB3aW5kb3cubG9jYWxTdG9yYWdlLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IGtleSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Uua2V5KGluZGV4KTtcbiAgICBpZiAoIWtleSkgY29udGludWU7XG4gICAgY29uc3QgcHJlZml4ID0gRFJBRlRfV09SS19QUkVGSVhFUy5maW5kKChpdGVtKSA9PiBrZXkuc3RhcnRzV2l0aChpdGVtKSk7XG4gICAgaWYgKCFwcmVmaXgpIGNvbnRpbnVlO1xuICAgIGlmIChrZXkuc2xpY2UocHJlZml4Lmxlbmd0aCkgIT09IGtlZXApIHN0YWxlLnB1c2goa2V5KTtcbiAgfVxuICBzdGFsZS5mb3JFYWNoKChrZXkpID0+IHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpKTtcbn1cblxuZXhwb3J0IHR5cGUgQXJ0d29ya1BhdGggPSAnc2VsZicgfCAnc2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnR3b3JrUGF0aEtleShwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgcHJvZHVjdEFydHdvcmtQYXRoLSR7cHJvZHVjdElkfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXJ0d29ya1BhdGgocHJvZHVjdElkOiBudW1iZXIgfCBzdHJpbmcpOiBBcnR3b3JrUGF0aCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuICdzZWxmJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGFydHdvcmtQYXRoS2V5KHByb2R1Y3RJZCkpID09PSAnc2VydmljZSdcbiAgICAgID8gJ3NlcnZpY2UnXG4gICAgICA6ICdzZWxmJztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICdzZWxmJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUFydHdvcmtQYXRoKFxuICBwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyxcbiAgcGF0aDogQXJ0d29ya1BhdGgsXG4pOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm47XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShhcnR3b3JrUGF0aEtleShwcm9kdWN0SWQpLCBwYXRoKTtcbn1cblxuZXhwb3J0IHR5cGUgRGVzaWduTWV0aG9kID0gJ2Rlc2lnbmVyJyB8ICd0ZW1wbGF0ZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlVXBsb2FkIHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2aWV3VXJsPzogc3RyaW5nO1xuICBkb3dubG9hZFVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2lnbk1ldGhvZEtleShwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgcHJvZHVjdERlc2lnbk1ldGhvZC0ke3Byb2R1Y3RJZH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERlc2lnbk1ldGhvZChwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IERlc2lnbk1ldGhvZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCBwcm9kdWN0SWQgPT0gbnVsbCkgcmV0dXJuICdkZXNpZ25lcic7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShkZXNpZ25NZXRob2RLZXkocHJvZHVjdElkKSkgPT09ICd0ZW1wbGF0ZXMnXG4gICAgICA/ICd0ZW1wbGF0ZXMnXG4gICAgICA6ICdkZXNpZ25lcic7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAnZGVzaWduZXInO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlRGVzaWduTWV0aG9kKFxuICBwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyxcbiAgbWV0aG9kOiBEZXNpZ25NZXRob2QsXG4pOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHByb2R1Y3RJZCA9PSBudWxsKSByZXR1cm47XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShkZXNpZ25NZXRob2RLZXkocHJvZHVjdElkKSwgbWV0aG9kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlVXBsb2Fkc0tleShwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgcHJvZHVjdFRlbXBsYXRlVXBsb2Fkcy0ke3Byb2R1Y3RJZH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFRlbXBsYXRlVXBsb2Fkcyhwcm9kdWN0SWQ6IG51bWJlciB8IHN0cmluZyk6IFRlbXBsYXRlVXBsb2FkW10ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybiBbXTtcbiAgdHJ5IHtcbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odGVtcGxhdGVVcGxvYWRzS2V5KHByb2R1Y3RJZCkpO1xuICAgIGlmICghcmF3KSByZXR1cm4gW107XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhcnNlZCkgPyBwYXJzZWQuZmlsdGVyKChmaWxlKSA9PiBmaWxlPy5pZCAhPSBudWxsKSA6IFtdO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVUZW1wbGF0ZVVwbG9hZHMoXG4gIHByb2R1Y3RJZDogbnVtYmVyIHwgc3RyaW5nLFxuICBmaWxlczogVGVtcGxhdGVVcGxvYWRbXSxcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvZHVjdElkID09IG51bGwpIHJldHVybjtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRlbXBsYXRlVXBsb2Fkc0tleShwcm9kdWN0SWQpLCBKU09OLnN0cmluZ2lmeShmaWxlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tvdXRDbGllbnRGaWxlcyhmaWxlczogVGVtcGxhdGVVcGxvYWRbXSkge1xuICByZXR1cm4gKGZpbGVzIHx8IFtdKVxuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGU/LmlkICE9IG51bGwpXG4gICAgLm1hcCgoZmlsZSkgPT4gKHtcbiAgICAgIGZpbGU6IHsgaWQ6IGZpbGUuaWQgfSxcbiAgICAgIG9iamVjdElkOiBTdHJpbmcoZmlsZS5pZCksXG4gICAgfSkpO1xufVxuXG4vKiogQXR0YWNoIHJldXBsb2FkZWQgdGVtcGxhdGVzIGFzIHByaW50IGZpbGVzIGFuZCBhcyB0aGUgam9iJ3MgY2xpZW50IGRyYWZ0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlQ2hlY2tvdXRKb2Ioam9iRGF0YTogYW55LCBmaWxlczogVGVtcGxhdGVVcGxvYWRbXSkge1xuICBjb25zdCBjbGllbnRGaWxlcyA9IGNoZWNrb3V0Q2xpZW50RmlsZXMoZmlsZXMpO1xuICBjb25zdCBuZXh0ID0geyAuLi5qb2JEYXRhLCBjbGllbnRGaWxlcyB9O1xuICBpZiAoIWNsaWVudEZpbGVzLmxlbmd0aCkge1xuICAgIGRlbGV0ZSBuZXh0Lm93bkRyYWZ0cztcbiAgICByZXR1cm4gbmV4dDtcbiAgfVxuICBuZXh0Lm93bkRyYWZ0cyA9IFt7XG4gICAgYWNjZXB0ZWQ6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgIGltYWdlczogY2xpZW50RmlsZXMubWFwKChlbnRyeSkgPT4gKHsgaWQ6IGVudHJ5LmZpbGUuaWQgfSkpLFxuICB9XTtcbiAgcmV0dXJuIG5leHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZURyYWZ0cyhcbiAgZHJhZnRzOiBEcmFmdFRlbXBsYXRlRGF0YVtdLFxuICBncm91cENvdW50OiBudW1iZXIsXG4pOiBEcmFmdFRlbXBsYXRlRGF0YVtdIHtcbiAgcmV0dXJuIChkcmFmdHMgfHwgW10pLmZpbHRlcigoZHJhZnQpID0+IGRyYWZ0Lmdyb3VwSW5kZXggPCBncm91cENvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVkUHJldmlldyhcbiAgZHJhZnRzOiBEcmFmdFRlbXBsYXRlRGF0YVtdLFxuICBncm91cEluZGV4OiBudW1iZXIsXG4gIHRlbXBsYXRlSWQ6IG51bWJlcixcbik6IFJlbmRlcmVkRHJhZnRQcmV2aWV3IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZ3JvdXAgPSAoZHJhZnRzIHx8IFtdKS5maW5kKChkcmFmdCkgPT4gZHJhZnQuZ3JvdXBJbmRleCA9PT0gZ3JvdXBJbmRleCk7XG4gIHJldHVybiAoZ3JvdXA/LnRlbXBsYXRlRGF0YSB8fCBbXSkuZmluZChcbiAgICAoaXRlbSkgPT4gaXRlbS50ZW1wbGF0ZUlkID09PSB0ZW1wbGF0ZUlkXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXZpZXdDb21wbGV0ZShwcmV2aWV3PzogUmVuZGVyZWREcmFmdFByZXZpZXcgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHByZXZpZXc/LmRyYWZ0ICYmIHByZXZpZXc/LmNhbnZhc1ByZXZpZXcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBzZXJ0R3JvdXBUZW1wbGF0ZURyYWZ0KFxuICBkcmFmdHM6IERyYWZ0VGVtcGxhdGVEYXRhW10sXG4gIHByb2R1Y3RJZDogbnVtYmVyLFxuICBncm91cEluZGV4OiBudW1iZXIsXG4gIHByZXZpZXc6IFJlbmRlcmVkRHJhZnRQcmV2aWV3LFxuKTogRHJhZnRUZW1wbGF0ZURhdGFbXSB7XG4gIGNvbnN0IG5leHQgPSAoZHJhZnRzIHx8IFtdKS5tYXAoKGRyYWZ0KSA9PiAoe1xuICAgIC4uLmRyYWZ0LFxuICAgIHRlbXBsYXRlRGF0YTogWy4uLihkcmFmdC50ZW1wbGF0ZURhdGEgfHwgW10pXSxcbiAgICBwcmV2aWV3czogWy4uLihkcmFmdC5wcmV2aWV3cyB8fCBbXSldLFxuICB9KSk7XG4gIGxldCBncm91cCA9IG5leHQuZmluZCgoZHJhZnQpID0+IGRyYWZ0Lmdyb3VwSW5kZXggPT09IGdyb3VwSW5kZXgpO1xuICBpZiAoIWdyb3VwKSB7XG4gICAgZ3JvdXAgPSB7IGdyb3VwSW5kZXgsIHByb2R1Y3RJZCwgdGVtcGxhdGVEYXRhOiBbXSwgcHJldmlld3M6IFtdIH07XG4gICAgbmV4dC5wdXNoKGdyb3VwKTtcbiAgfVxuICBjb25zdCBpbmRleCA9IGdyb3VwLnRlbXBsYXRlRGF0YS5maW5kSW5kZXgoXG4gICAgKGl0ZW0pID0+IGl0ZW0udGVtcGxhdGVJZCA9PT0gcHJldmlldy50ZW1wbGF0ZUlkXG4gICk7XG4gIGlmIChpbmRleCA+PSAwKSBncm91cC50ZW1wbGF0ZURhdGFbaW5kZXhdID0gcHJldmlldztcbiAgZWxzZSBncm91cC50ZW1wbGF0ZURhdGEucHVzaChwcmV2aWV3KTtcbiAgcmV0dXJuIG5leHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZERlc2lnblNsb3RzKHByb2R1Y3Q6IGFueSwgZm9ybVZhbHVlczogYW55KSB7XG4gIGNvbnN0IGNvdW50ID0gZGVzaWduR3JvdXBDb3VudChwcm9kdWN0LCBmb3JtVmFsdWVzKTtcbiAgY29uc3QgaW5kZXBlbmRlbnQgPSBmb3JtVmFsdWVzPy52YXJpYXRpb25zIHx8IFtdO1xuICBjb25zdCBncm91cHMgPSBmb3JtVmFsdWVzPy52YXJpYXRpb25zR3JvdXBzIHx8IFtdO1xuICBjb25zdCBzbG90czogeyBncm91cEluZGV4OiBudW1iZXI7IHRlbXBsYXRlOiBhbnkgfVtdID0gW107XG4gIGZvciAobGV0IGdyb3VwSW5kZXggPSAwOyBncm91cEluZGV4IDwgY291bnQ7IGdyb3VwSW5kZXggKz0gMSkge1xuICAgIGNvbnN0IGdyb3VwVmFycyA9IGdyb3Vwc1tncm91cEluZGV4XT8udmFyaWF0aW9ucyB8fCBbXTtcbiAgICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIHRlbXBsYXRlc0Zvckdyb3VwKHByb2R1Y3QsIGluZGVwZW5kZW50LCBncm91cFZhcnMpKSB7XG4gICAgICBzbG90cy5wdXNoKHsgZ3JvdXBJbmRleCwgdGVtcGxhdGUgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzbG90cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pc3NpbmdEZXNpZ25TbG90cyhcbiAgcHJvZHVjdDogYW55LFxuICBmb3JtVmFsdWVzOiBhbnksXG4gIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSxcbikge1xuICBjb25zdCBwcnVuZWQgPSBwcnVuZURyYWZ0cyhkcmFmdHMsIGRlc2lnbkdyb3VwQ291bnQocHJvZHVjdCwgZm9ybVZhbHVlcykpO1xuICByZXR1cm4gcmVxdWlyZWREZXNpZ25TbG90cyhwcm9kdWN0LCBmb3JtVmFsdWVzKS5maWx0ZXIoXG4gICAgKHsgZ3JvdXBJbmRleCwgdGVtcGxhdGUgfSkgPT5cbiAgICAgICFpc1ByZXZpZXdDb21wbGV0ZShzYXZlZFByZXZpZXcocHJ1bmVkLCBncm91cEluZGV4LCB0ZW1wbGF0ZS5pZCkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0ZUdyb3VwQ291bnQocHJvZHVjdDogYW55LCBmb3JtVmFsdWVzOiBhbnksIGRyYWZ0czogRHJhZnRUZW1wbGF0ZURhdGFbXSkge1xuICBjb25zdCBjb3VudCA9IGRlc2lnbkdyb3VwQ291bnQocHJvZHVjdCwgZm9ybVZhbHVlcyk7XG4gIGNvbnN0IGluZGVwZW5kZW50ID0gZm9ybVZhbHVlcz8udmFyaWF0aW9ucyB8fCBbXTtcbiAgY29uc3QgZ3JvdXBzID0gZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcyB8fCBbXTtcbiAgbGV0IGNvbXBsZXRlID0gMDtcbiAgZm9yIChsZXQgZ3JvdXBJbmRleCA9IDA7IGdyb3VwSW5kZXggPCBjb3VudDsgZ3JvdXBJbmRleCArPSAxKSB7XG4gICAgY29uc3QgdGVtcGxhdGVzID0gdGVtcGxhdGVzRm9yR3JvdXAoXG4gICAgICBwcm9kdWN0LFxuICAgICAgaW5kZXBlbmRlbnQsXG4gICAgICBncm91cHNbZ3JvdXBJbmRleF0/LnZhcmlhdGlvbnMgfHwgW10sXG4gICAgKTtcbiAgICBjb25zdCBhbGxTYXZlZCA9IHRlbXBsYXRlcy5ldmVyeSgodGVtcGxhdGU6IGFueSkgPT5cbiAgICAgIGlzUHJldmlld0NvbXBsZXRlKHNhdmVkUHJldmlldyhkcmFmdHMsIGdyb3VwSW5kZXgsIHRlbXBsYXRlLmlkKSlcbiAgICApO1xuICAgIGlmIChhbGxTYXZlZCkgY29tcGxldGUgKz0gMTtcbiAgfVxuICByZXR1cm4geyBjb21wbGV0ZSwgdG90YWw6IGNvdW50IH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFJQSxTQUNFQSxnQkFBZ0IsRUFDaEJDLGlCQUFpQixRQUNaLGtCQUFrQjtBQUV6QixPQUFPLFNBQVNDLGVBQWVBLENBQUNDLFNBQTBCLEVBQVU7RUFDbEUsK0JBQUFDLE1BQUEsQ0FBK0JELFNBQVM7QUFDMUM7QUFFQSxPQUFPLFNBQVNFLFVBQVVBLENBQUNGLFNBQTBCLEVBQXVCO0VBQzFFLElBQUksT0FBT0csTUFBTSxLQUFLLFdBQVcsSUFBSUgsU0FBUyxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUU7RUFDakUsSUFBSTtJQUNGLElBQU1JLEdBQUcsR0FBR0QsTUFBTSxDQUFDRSxZQUFZLENBQUNDLE9BQU8sQ0FBQ1AsZUFBZSxDQUFDQyxTQUFTLENBQUMsQ0FBQztJQUNuRSxJQUFJLENBQUNJLEdBQUcsRUFBRSxPQUFPLEVBQUU7SUFDbkIsSUFBTUcsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0wsR0FBRyxDQUFDO0lBQzlCLE9BQU9NLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSixNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHLEVBQUU7RUFDNUMsQ0FBQyxDQUFDLE9BQUFLLE9BQUEsRUFBTTtJQUNOLE9BQU8sRUFBRTtFQUNYO0FBQ0Y7QUFFQSxPQUFPLFNBQVNDLFVBQVVBLENBQ3hCYixTQUEwQixFQUMxQmMsTUFBMkIsRUFDckI7RUFDTixJQUFJLE9BQU9YLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUU7RUFDeERHLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDVSxPQUFPLENBQUNoQixlQUFlLENBQUNDLFNBQVMsQ0FBQyxFQUFFUSxJQUFJLENBQUNRLFNBQVMsQ0FBQ0YsTUFBTSxDQUFDLENBQUM7QUFDakY7QUFFQSxPQUFPLFNBQVNHLFdBQVdBLENBQUNqQixTQUEwQixFQUFRO0VBQzVELElBQUksT0FBT0csTUFBTSxLQUFLLFdBQVcsSUFBSUgsU0FBUyxJQUFJLElBQUksRUFBRTtFQUN4REcsTUFBTSxDQUFDRSxZQUFZLENBQUNhLFVBQVUsQ0FBQ25CLGVBQWUsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7QUFDNUQ7QUFFQSxJQUFNbUIsbUJBQW1CLEdBQUcsQ0FDMUIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIseUJBQXlCLENBQzFCOztBQUVEO0FBQ0EsT0FBTyxTQUFTQyxjQUFjQSxDQUFDcEIsU0FBMEIsRUFBUTtFQUMvRCxJQUFJLE9BQU9HLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUU7RUFDeERtQixtQkFBbUIsQ0FBQ0UsT0FBTyxDQUFDLFVBQUNDLE1BQU0sRUFBSztJQUN0Q25CLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDYSxVQUFVLElBQUFqQixNQUFBLENBQUlxQixNQUFNLEVBQUFyQixNQUFBLENBQUdELFNBQVMsQ0FBRSxDQUFDO0VBQ3pELENBQUMsQ0FBQztBQUNKOztBQUVBO0FBQ0EsT0FBTyxTQUFTdUIsdUJBQXVCQSxDQUFDdkIsU0FBMEIsRUFBUTtFQUN4RSxJQUFJLE9BQU9HLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUU7RUFDeEQsSUFBTXdCLElBQUksR0FBR0MsTUFBTSxDQUFDekIsU0FBUyxDQUFDO0VBQzlCLElBQU0wQixLQUFlLEdBQUcsRUFBRTtFQUFDLElBQUFDLEtBQUEsWUFBQUEsTUFBQSxFQUN5QztNQUNsRSxJQUFNQyxHQUFHLEdBQUd6QixNQUFNLENBQUNFLFlBQVksQ0FBQ3VCLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDO01BQzFDLElBQUksQ0FBQ0QsR0FBRztNQUNSLElBQU1OLE1BQU0sR0FBR0gsbUJBQW1CLENBQUNXLElBQUksQ0FBQyxVQUFDQyxJQUFJO1FBQUEsT0FBS0gsR0FBRyxDQUFDSSxVQUFVLENBQUNELElBQUksQ0FBQztNQUFBLEVBQUM7TUFDdkUsSUFBSSxDQUFDVCxNQUFNO01BQ1gsSUFBSU0sR0FBRyxDQUFDSyxLQUFLLENBQUNYLE1BQU0sQ0FBQ1ksTUFBTSxDQUFDLEtBQUtWLElBQUksRUFBRUUsS0FBSyxDQUFDUyxJQUFJLENBQUNQLEdBQUcsQ0FBQztJQUN4RCxDQUFDO0lBQUFRLElBQUE7RUFORCxLQUFLLElBQUlQLEtBQUssR0FBRyxDQUFDLEVBQUVBLEtBQUssR0FBRzFCLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDNkIsTUFBTSxFQUFFTCxLQUFLLElBQUksQ0FBQztJQUFBTyxJQUFBLEdBQUFULEtBQUE7SUFBQSxJQUFBUyxJQUFBLFFBRXREO0VBQVM7RUFLckJWLEtBQUssQ0FBQ0wsT0FBTyxDQUFDLFVBQUNPLEdBQUc7SUFBQSxPQUFLekIsTUFBTSxDQUFDRSxZQUFZLENBQUNhLFVBQVUsQ0FBQ1UsR0FBRyxDQUFDO0VBQUEsRUFBQztBQUM3RDtBQUlBLE9BQU8sU0FBU1MsY0FBY0EsQ0FBQ3JDLFNBQTBCLEVBQVU7RUFDakUsNkJBQUFDLE1BQUEsQ0FBNkJELFNBQVM7QUFDeEM7QUFFQSxPQUFPLFNBQVNzQyxlQUFlQSxDQUFDdEMsU0FBMEIsRUFBZTtFQUN2RSxJQUFJLE9BQU9HLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUUsT0FBTyxNQUFNO0VBQ3JFLElBQUk7SUFDRixPQUFPRyxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsT0FBTyxDQUFDK0IsY0FBYyxDQUFDckMsU0FBUyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQ3ZFLFNBQVMsR0FDVCxNQUFNO0VBQ1osQ0FBQyxDQUFDLE9BQUF1QyxRQUFBLEVBQU07SUFDTixPQUFPLE1BQU07RUFDZjtBQUNGO0FBRUEsT0FBTyxTQUFTQyxlQUFlQSxDQUM3QnhDLFNBQTBCLEVBQzFCeUMsSUFBaUIsRUFDWDtFQUNOLElBQUksT0FBT3RDLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUU7RUFDeERHLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDVSxPQUFPLENBQUNzQixjQUFjLENBQUNyQyxTQUFTLENBQUMsRUFBRXlDLElBQUksQ0FBQztBQUM5RDtBQVdBLE9BQU8sU0FBU0MsZUFBZUEsQ0FBQzFDLFNBQTBCLEVBQVU7RUFDbEUsOEJBQUFDLE1BQUEsQ0FBOEJELFNBQVM7QUFDekM7QUFFQSxPQUFPLFNBQVMyQyxnQkFBZ0JBLENBQUMzQyxTQUEwQixFQUFnQjtFQUN6RSxJQUFJLE9BQU9HLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUUsT0FBTyxVQUFVO0VBQ3pFLElBQUk7SUFDRixPQUFPRyxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsT0FBTyxDQUFDb0MsZUFBZSxDQUFDMUMsU0FBUyxDQUFDLENBQUMsS0FBSyxXQUFXLEdBQzFFLFdBQVcsR0FDWCxVQUFVO0VBQ2hCLENBQUMsQ0FBQyxPQUFBNEMsUUFBQSxFQUFNO0lBQ04sT0FBTyxVQUFVO0VBQ25CO0FBQ0Y7QUFFQSxPQUFPLFNBQVNDLGdCQUFnQkEsQ0FDOUI3QyxTQUEwQixFQUMxQjhDLE1BQW9CLEVBQ2Q7RUFDTixJQUFJLE9BQU8zQyxNQUFNLEtBQUssV0FBVyxJQUFJSCxTQUFTLElBQUksSUFBSSxFQUFFO0VBQ3hERyxNQUFNLENBQUNFLFlBQVksQ0FBQ1UsT0FBTyxDQUFDMkIsZUFBZSxDQUFDMUMsU0FBUyxDQUFDLEVBQUU4QyxNQUFNLENBQUM7QUFDakU7QUFFQSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FBQy9DLFNBQTBCLEVBQVU7RUFDckUsaUNBQUFDLE1BQUEsQ0FBaUNELFNBQVM7QUFDNUM7QUFFQSxPQUFPLFNBQVNnRCxtQkFBbUJBLENBQUNoRCxTQUEwQixFQUFvQjtFQUNoRixJQUFJLE9BQU9HLE1BQU0sS0FBSyxXQUFXLElBQUlILFNBQVMsSUFBSSxJQUFJLEVBQUUsT0FBTyxFQUFFO0VBQ2pFLElBQUk7SUFDRixJQUFNSSxHQUFHLEdBQUdELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDQyxPQUFPLENBQUN5QyxrQkFBa0IsQ0FBQy9DLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksQ0FBQ0ksR0FBRyxFQUFFLE9BQU8sRUFBRTtJQUNuQixJQUFNRyxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDTCxHQUFHLENBQUM7SUFDOUIsT0FBT00sS0FBSyxDQUFDQyxPQUFPLENBQUNKLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLENBQUMwQyxNQUFNLENBQUMsVUFBQ0MsSUFBSTtNQUFBLE9BQUssQ0FBQUEsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVDLEVBQUUsS0FBSSxJQUFJO0lBQUEsRUFBQyxHQUFHLEVBQUU7RUFDL0UsQ0FBQyxDQUFDLE9BQUFDLFFBQUEsRUFBTTtJQUNOLE9BQU8sRUFBRTtFQUNYO0FBQ0Y7QUFFQSxPQUFPLFNBQVNDLG1CQUFtQkEsQ0FDakNyRCxTQUEwQixFQUMxQnNELEtBQXVCLEVBQ2pCO0VBQ04sSUFBSSxPQUFPbkQsTUFBTSxLQUFLLFdBQVcsSUFBSUgsU0FBUyxJQUFJLElBQUksRUFBRTtFQUN4REcsTUFBTSxDQUFDRSxZQUFZLENBQUNVLE9BQU8sQ0FBQ2dDLGtCQUFrQixDQUFDL0MsU0FBUyxDQUFDLEVBQUVRLElBQUksQ0FBQ1EsU0FBUyxDQUFDc0MsS0FBSyxDQUFDLENBQUM7QUFDbkY7QUFFQSxPQUFPLFNBQVNDLG1CQUFtQkEsQ0FBQ0QsS0FBdUIsRUFBRTtFQUMzRCxPQUFPLENBQUNBLEtBQUssSUFBSSxFQUFFLEVBQ2hCTCxNQUFNLENBQUMsVUFBQ0MsSUFBSTtJQUFBLE9BQUssQ0FBQUEsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVDLEVBQUUsS0FBSSxJQUFJO0VBQUEsRUFBQyxDQUNsQ0ssR0FBRyxDQUFDLFVBQUNOLElBQUk7SUFBQSxPQUFNO01BQ2RBLElBQUksRUFBRTtRQUFFQyxFQUFFLEVBQUVELElBQUksQ0FBQ0M7TUFBRyxDQUFDO01BQ3JCTSxRQUFRLEVBQUVoQyxNQUFNLENBQUN5QixJQUFJLENBQUNDLEVBQUU7SUFDMUIsQ0FBQztFQUFBLENBQUMsQ0FBQztBQUNQOztBQUVBO0FBQ0EsT0FBTyxTQUFTTyxtQkFBbUJBLENBQUNDLE9BQVksRUFBRUwsS0FBdUIsRUFBRTtFQUN6RSxJQUFNTSxXQUFXLEdBQUdMLG1CQUFtQixDQUFDRCxLQUFLLENBQUM7RUFDOUMsSUFBTU8sSUFBSSxHQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FBUUgsT0FBTztJQUFFQyxXQUFXLEVBQVhBO0VBQVcsRUFBRTtFQUN4QyxJQUFJLENBQUNBLFdBQVcsQ0FBQzFCLE1BQU0sRUFBRTtJQUN2QixPQUFPMkIsSUFBSSxDQUFDRSxTQUFTO0lBQ3JCLE9BQU9GLElBQUk7RUFDYjtFQUNBQSxJQUFJLENBQUNFLFNBQVMsR0FBRyxDQUFDO0lBQ2hCQyxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDQyxNQUFNLEVBQUVULFdBQVcsQ0FBQ0osR0FBRyxDQUFDLFVBQUNjLEtBQUs7TUFBQSxPQUFNO1FBQUVuQixFQUFFLEVBQUVtQixLQUFLLENBQUNwQixJQUFJLENBQUNDO01BQUcsQ0FBQztJQUFBLENBQUM7RUFDNUQsQ0FBQyxDQUFDO0VBQ0YsT0FBT1UsSUFBSTtBQUNiO0FBRUEsT0FBTyxTQUFTVSxXQUFXQSxDQUN6QnpELE1BQTJCLEVBQzNCMEQsVUFBa0IsRUFDRztFQUNyQixPQUFPLENBQUMxRCxNQUFNLElBQUksRUFBRSxFQUFFbUMsTUFBTSxDQUFDLFVBQUN3QixLQUFLO0lBQUEsT0FBS0EsS0FBSyxDQUFDQyxVQUFVLEdBQUdGLFVBQVU7RUFBQSxFQUFDO0FBQ3hFO0FBRUEsT0FBTyxTQUFTRyxZQUFZQSxDQUMxQjdELE1BQTJCLEVBQzNCNEQsVUFBa0IsRUFDbEJFLFVBQWtCLEVBQ2dCO0VBQ2xDLElBQU1DLEtBQUssR0FBRyxDQUFDL0QsTUFBTSxJQUFJLEVBQUUsRUFBRWdCLElBQUksQ0FBQyxVQUFDMkMsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsVUFBVSxLQUFLQSxVQUFVO0VBQUEsRUFBQztFQUM3RSxPQUFPLENBQUMsQ0FBQUcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLFlBQVksS0FBSSxFQUFFLEVBQUVoRCxJQUFJLENBQ3JDLFVBQUNDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUM2QyxVQUFVLEtBQUtBLFVBQVU7RUFBQSxDQUMxQyxDQUFDO0FBQ0g7QUFFQSxPQUFPLFNBQVNHLGlCQUFpQkEsQ0FBQ0MsT0FBcUMsRUFBVztFQUNoRixPQUFPQyxPQUFPLENBQUMsQ0FBQUQsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVQLEtBQUssTUFBSU8sT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVFLGFBQWEsRUFBQztBQUMxRDtBQUVBLE9BQU8sU0FBU0Msd0JBQXdCQSxDQUN0Q3JFLE1BQTJCLEVBQzNCZCxTQUFpQixFQUNqQjBFLFVBQWtCLEVBQ2xCTSxPQUE2QixFQUNSO0VBQ3JCLElBQU1uQixJQUFJLEdBQUcsQ0FBQy9DLE1BQU0sSUFBSSxFQUFFLEVBQUUwQyxHQUFHLENBQUMsVUFBQ2lCLEtBQUs7SUFBQSxPQUFBWCxhQUFBLENBQUFBLGFBQUEsS0FDakNXLEtBQUs7TUFDUkssWUFBWSxFQUFBTSxrQkFBQSxDQUFPWCxLQUFLLENBQUNLLFlBQVksSUFBSSxFQUFFLENBQUU7TUFDN0NPLFFBQVEsRUFBQUQsa0JBQUEsQ0FBT1gsS0FBSyxDQUFDWSxRQUFRLElBQUksRUFBRTtJQUFFO0VBQUEsQ0FDckMsQ0FBQztFQUNILElBQUlSLEtBQUssR0FBR2hCLElBQUksQ0FBQy9CLElBQUksQ0FBQyxVQUFDMkMsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsVUFBVSxLQUFLQSxVQUFVO0VBQUEsRUFBQztFQUNqRSxJQUFJLENBQUNHLEtBQUssRUFBRTtJQUNWQSxLQUFLLEdBQUc7TUFBRUgsVUFBVSxFQUFWQSxVQUFVO01BQUUxRSxTQUFTLEVBQVRBLFNBQVM7TUFBRThFLFlBQVksRUFBRSxFQUFFO01BQUVPLFFBQVEsRUFBRTtJQUFHLENBQUM7SUFDakV4QixJQUFJLENBQUMxQixJQUFJLENBQUMwQyxLQUFLLENBQUM7RUFDbEI7RUFDQSxJQUFNaEQsS0FBSyxHQUFHZ0QsS0FBSyxDQUFDQyxZQUFZLENBQUNRLFNBQVMsQ0FDeEMsVUFBQ3ZELElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUM2QyxVQUFVLEtBQUtJLE9BQU8sQ0FBQ0osVUFBVTtFQUFBLENBQ2xELENBQUM7RUFDRCxJQUFJL0MsS0FBSyxJQUFJLENBQUMsRUFBRWdELEtBQUssQ0FBQ0MsWUFBWSxDQUFDakQsS0FBSyxDQUFDLEdBQUdtRCxPQUFPLENBQUMsS0FDL0NILEtBQUssQ0FBQ0MsWUFBWSxDQUFDM0MsSUFBSSxDQUFDNkMsT0FBTyxDQUFDO0VBQ3JDLE9BQU9uQixJQUFJO0FBQ2I7QUFFQSxPQUFPLFNBQVMwQixtQkFBbUJBLENBQUNDLE9BQVksRUFBRUMsVUFBZSxFQUFFO0VBQ2pFLElBQU1DLEtBQUssR0FBRzdGLGdCQUFnQixDQUFDMkYsT0FBTyxFQUFFQyxVQUFVLENBQUM7RUFDbkQsSUFBTUUsV0FBVyxHQUFHLENBQUFGLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFRyxVQUFVLEtBQUksRUFBRTtFQUNoRCxJQUFNQyxNQUFNLEdBQUcsQ0FBQUosVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVLLGdCQUFnQixLQUFJLEVBQUU7RUFDakQsSUFBTUMsS0FBOEMsR0FBRyxFQUFFO0VBQ3pELEtBQUssSUFBSXJCLFVBQVUsR0FBRyxDQUFDLEVBQUVBLFVBQVUsR0FBR2dCLEtBQUssRUFBRWhCLFVBQVUsSUFBSSxDQUFDLEVBQUU7SUFBQSxJQUFBc0Isa0JBQUE7SUFDNUQsSUFBTUMsU0FBUyxHQUFHLEVBQUFELGtCQUFBLEdBQUFILE1BQU0sQ0FBQ25CLFVBQVUsQ0FBQyxjQUFBc0Isa0JBQUEsdUJBQWxCQSxrQkFBQSxDQUFvQkosVUFBVSxLQUFJLEVBQUU7SUFBQyxJQUFBTSxTQUFBLEdBQUFDLDBCQUFBLENBQ2hDckcsaUJBQWlCLENBQUMwRixPQUFPLEVBQUVHLFdBQVcsRUFBRU0sU0FBUyxDQUFDO01BQUFHLEtBQUE7SUFBQTtNQUF6RSxLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUEyRTtRQUFBLElBQWhFQyxRQUFRLEdBQUFKLEtBQUEsQ0FBQUssS0FBQTtRQUNqQlYsS0FBSyxDQUFDNUQsSUFBSSxDQUFDO1VBQUV1QyxVQUFVLEVBQVZBLFVBQVU7VUFBRThCLFFBQVEsRUFBUkE7UUFBUyxDQUFDLENBQUM7TUFDdEM7SUFBQyxTQUFBRSxHQUFBO01BQUFSLFNBQUEsQ0FBQVMsQ0FBQSxDQUFBRCxHQUFBO0lBQUE7TUFBQVIsU0FBQSxDQUFBVSxDQUFBO0lBQUE7RUFDSDtFQUNBLE9BQU9iLEtBQUs7QUFDZDtBQUVBLE9BQU8sU0FBU2Msa0JBQWtCQSxDQUNoQ3JCLE9BQVksRUFDWkMsVUFBZSxFQUNmM0UsTUFBMkIsRUFDM0I7RUFDQSxJQUFNZ0csTUFBTSxHQUFHdkMsV0FBVyxDQUFDekQsTUFBTSxFQUFFakIsZ0JBQWdCLENBQUMyRixPQUFPLEVBQUVDLFVBQVUsQ0FBQyxDQUFDO0VBQ3pFLE9BQU9GLG1CQUFtQixDQUFDQyxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxDQUFDeEMsTUFBTSxDQUNwRCxVQUFBOEQsSUFBQTtJQUFBLElBQUdyQyxVQUFVLEdBQUFxQyxJQUFBLENBQVZyQyxVQUFVO01BQUU4QixRQUFRLEdBQUFPLElBQUEsQ0FBUlAsUUFBUTtJQUFBLE9BQ3JCLENBQUN6QixpQkFBaUIsQ0FBQ0osWUFBWSxDQUFDbUMsTUFBTSxFQUFFcEMsVUFBVSxFQUFFOEIsUUFBUSxDQUFDckQsRUFBRSxDQUFDLENBQUM7RUFBQSxDQUNyRSxDQUFDO0FBQ0g7QUFFQSxPQUFPLFNBQVM2RCxrQkFBa0JBLENBQUN4QixPQUFZLEVBQUVDLFVBQWUsRUFBRTNFLE1BQTJCLEVBQUU7RUFDN0YsSUFBTTRFLEtBQUssR0FBRzdGLGdCQUFnQixDQUFDMkYsT0FBTyxFQUFFQyxVQUFVLENBQUM7RUFDbkQsSUFBTUUsV0FBVyxHQUFHLENBQUFGLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFRyxVQUFVLEtBQUksRUFBRTtFQUNoRCxJQUFNQyxNQUFNLEdBQUcsQ0FBQUosVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVLLGdCQUFnQixLQUFJLEVBQUU7RUFDakQsSUFBSW1CLFFBQVEsR0FBRyxDQUFDO0VBQUMsSUFBQUMsTUFBQSxZQUFBQSxPQUFBeEMsVUFBQSxFQUM2QztJQUFBLElBQUF5QyxtQkFBQTtJQUM1RCxJQUFNQyxTQUFTLEdBQUd0SCxpQkFBaUIsQ0FDakMwRixPQUFPLEVBQ1BHLFdBQVcsRUFDWCxFQUFBd0IsbUJBQUEsR0FBQXRCLE1BQU0sQ0FBQ25CLFVBQVUsQ0FBQyxjQUFBeUMsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQnZCLFVBQVUsS0FBSSxFQUNwQyxDQUFDO0lBQ0QsSUFBTXlCLFFBQVEsR0FBR0QsU0FBUyxDQUFDRSxLQUFLLENBQUMsVUFBQ2QsUUFBYTtNQUFBLE9BQzdDekIsaUJBQWlCLENBQUNKLFlBQVksQ0FBQzdELE1BQU0sRUFBRTRELFVBQVUsRUFBRThCLFFBQVEsQ0FBQ3JELEVBQUUsQ0FBQyxDQUFDO0lBQUEsQ0FDbEUsQ0FBQztJQUNELElBQUlrRSxRQUFRLEVBQUVKLFFBQVEsSUFBSSxDQUFDO0VBQzdCLENBQUM7RUFWRCxLQUFLLElBQUl2QyxVQUFVLEdBQUcsQ0FBQyxFQUFFQSxVQUFVLEdBQUdnQixLQUFLLEVBQUVoQixVQUFVLElBQUksQ0FBQztJQUFBd0MsTUFBQSxDQUFBeEMsVUFBQTtFQUFBO0VBVzVELE9BQU87SUFBRXVDLFFBQVEsRUFBUkEsUUFBUTtJQUFFTSxLQUFLLEVBQUU3QjtFQUFNLENBQUM7QUFDbkMiLCJpZ25vcmVMaXN0IjpbXX0=