@comet/brevo-admin 8.17.1 → 9.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/blocks/NewsletterImageBlock.d.ts +7 -3
- package/lib/blocks/NewsletterImageBlock.d.ts.map +1 -1
- package/lib/blocks/NewsletterImageBlock.js +8 -14
- package/lib/blocks.generated.js +1 -5
- package/lib/brevoConfiguration/BrevoConfigForm.generated.js +1 -5
- package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts +7 -7
- package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts.map +1 -1
- package/lib/brevoConfiguration/BrevoConfigForm.gql.generated.js +1 -7
- package/lib/brevoConfiguration/BrevoConfigForm.gql.js +8 -14
- package/lib/brevoConfiguration/BrevoConfigForm.js +53 -59
- package/lib/brevoConfiguration/BrevoConfigPage.d.ts +1 -0
- package/lib/brevoConfiguration/BrevoConfigPage.d.ts.map +1 -1
- package/lib/brevoConfiguration/BrevoConfigPage.js +8 -14
- package/lib/brevoContacts/BrevoContactsGrid.generated.js +1 -7
- package/lib/brevoContacts/BrevoContactsGrid.js +45 -51
- package/lib/brevoContacts/BrevoContactsPage.d.ts +1 -1
- package/lib/brevoContacts/BrevoContactsPage.d.ts.map +1 -1
- package/lib/brevoContacts/BrevoContactsPage.js +24 -29
- package/lib/brevoContacts/form/BrevoContactForm.generated.js +1 -7
- package/lib/brevoContacts/form/BrevoContactForm.gql.generated.js +1 -7
- package/lib/brevoContacts/form/BrevoContactForm.gql.js +7 -13
- package/lib/brevoContacts/form/BrevoContactForm.js +58 -64
- package/lib/brevoTestContacts/BrevoTestContactsGrid.generated.js +1 -7
- package/lib/brevoTestContacts/BrevoTestContactsGrid.js +40 -46
- package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts +1 -1
- package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts.map +1 -1
- package/lib/brevoTestContacts/BrevoTestContactsPage.js +24 -29
- package/lib/brevoTestContacts/form/BrevoTestContactForm.generated.js +1 -7
- package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.generated.js +1 -7
- package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.js +7 -13
- package/lib/brevoTestContacts/form/BrevoTestContactForm.js +42 -48
- package/lib/common/BrevoConfigProvider.js +9 -15
- package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts +1 -1
- package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts.map +1 -1
- package/lib/common/contactImport/useContactImportFromCsv.gql.generated.js +1 -7
- package/lib/common/contactImport/useContactImportFromCsv.gql.js +2 -8
- package/lib/common/contactImport/useContactImportFromCsv.js +80 -87
- package/lib/configVerification/ConfigVerification.d.ts +1 -1
- package/lib/configVerification/ConfigVerification.d.ts.map +1 -1
- package/lib/configVerification/ConfigVerification.gql.d.ts +1 -1
- package/lib/configVerification/ConfigVerification.gql.d.ts.map +1 -1
- package/lib/configVerification/ConfigVerification.gql.generated.js +1 -7
- package/lib/configVerification/ConfigVerification.gql.js +2 -8
- package/lib/configVerification/ConfigVerification.js +12 -18
- package/lib/emailCampaigns/EmailCampaignsGrid.generated.js +1 -7
- package/lib/emailCampaigns/EmailCampaignsGrid.js +47 -53
- package/lib/emailCampaigns/EmailCampaignsPage.d.ts +1 -0
- package/lib/emailCampaigns/EmailCampaignsPage.d.ts.map +1 -1
- package/lib/emailCampaigns/EmailCampaignsPage.js +29 -35
- package/lib/emailCampaigns/SendingStateColumn.js +24 -30
- package/lib/emailCampaigns/form/ConfigFields.js +11 -17
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts +5 -5
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.js +6 -12
- package/lib/emailCampaigns/form/EmailCampaignForm.js +65 -71
- package/lib/emailCampaigns/form/SendEmailCampaignNowDialog.js +16 -21
- package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts +2 -2
- package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/SendManagerFields.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/SendManagerFields.gql.js +4 -10
- package/lib/emailCampaigns/form/SendManagerFields.js +37 -43
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts +1 -1
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.js +2 -8
- package/lib/emailCampaigns/form/SendManagerWrapper.js +13 -19
- package/lib/emailCampaigns/form/TestEmailCampaignForm.generated.js +1 -7
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts +1 -1
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.js +2 -8
- package/lib/emailCampaigns/form/TestEmailCampaignForm.js +33 -39
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts +1 -1
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.generated.js +1 -7
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.js +2 -8
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.js +40 -46
- package/lib/emailCampaigns/statistics/PercentageCard.js +29 -35
- package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts +1 -1
- package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/view/EmailCampaignView.gql.generated.js +1 -7
- package/lib/emailCampaigns/view/EmailCampaignView.gql.js +2 -8
- package/lib/emailCampaigns/view/EmailCampaignView.js +31 -37
- package/lib/graphql.generated.js +1 -5
- package/lib/index.js +7 -60
- package/lib/targetGroups/TargetGroupDialog.gql.d.ts +1 -1
- package/lib/targetGroups/TargetGroupDialog.gql.d.ts.map +1 -1
- package/lib/targetGroups/TargetGroupDialog.gql.generated.js +1 -7
- package/lib/targetGroups/TargetGroupDialog.gql.js +2 -8
- package/lib/targetGroups/TargetGroupDialog.js +13 -19
- package/lib/targetGroups/TargetGroupForm.gql.generated.js +1 -7
- package/lib/targetGroups/TargetGroupForm.gql.js +8 -14
- package/lib/targetGroups/TargetGroupForm.js +49 -61
- package/lib/targetGroups/TargetGroupsGrid.generated.js +1 -7
- package/lib/targetGroups/TargetGroupsGrid.js +41 -48
- package/lib/targetGroups/TargetGroupsPage.d.ts +1 -1
- package/lib/targetGroups/TargetGroupsPage.d.ts.map +1 -1
- package/lib/targetGroups/TargetGroupsPage.js +21 -27
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts +4 -4
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts.map +1 -1
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.generated.js +1 -7
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.js +6 -12
- package/lib/targetGroups/addContacts/AddContactsGridSelect.js +64 -70
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts +1 -1
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts.map +1 -1
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.generated.js +1 -7
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.js +3 -9
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.js +17 -23
- package/package.json +20 -15
|
@@ -1,23 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
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); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.useContactImportFromCsv = void 0;
|
|
8
|
-
var _client = require("@apollo/client");
|
|
9
|
-
var _admin = require("@comet/admin");
|
|
10
|
-
var _adminIcons = require("@comet/admin-icons");
|
|
11
|
-
var _material = require("@mui/material");
|
|
12
|
-
var _styles = require("@mui/material/styles");
|
|
13
|
-
var _fileSaver = _interopRequireDefault(require("file-saver"));
|
|
14
|
-
var _react = require("react");
|
|
15
|
-
var _reactDropzone = require("react-dropzone");
|
|
16
|
-
var _reactIntl = require("react-intl");
|
|
17
|
-
var _BrevoConfigProvider = require("../BrevoConfigProvider");
|
|
18
|
-
var _useContactImportFromCsv = require("./useContactImportFromCsv.gql");
|
|
19
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
21
2
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
22
3
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
23
4
|
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; } } }; }
|
|
@@ -34,29 +15,41 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
34
15
|
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; }
|
|
35
16
|
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; } }
|
|
36
17
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
37
|
-
|
|
18
|
+
import { useApolloClient } from "@apollo/client";
|
|
19
|
+
import { Alert, Button, CheckboxField, Dialog, FinalForm, Loading, messages, useErrorDialog } from "@comet/admin";
|
|
20
|
+
import { Upload } from "@comet/admin-icons";
|
|
21
|
+
import { Box, DialogActions, DialogContent, DialogTitle } from "@mui/material";
|
|
22
|
+
import { styled } from "@mui/material/styles";
|
|
23
|
+
import saveAs from "file-saver";
|
|
24
|
+
import { useMemo, useRef, useState } from "react";
|
|
25
|
+
import { useDropzone } from "react-dropzone";
|
|
26
|
+
import { FormattedMessage, useIntl } from "react-intl";
|
|
27
|
+
import { useBrevoConfig } from "../BrevoConfigProvider";
|
|
28
|
+
import { startBrevoContactImportMutation } from "./useContactImportFromCsv.gql";
|
|
29
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
30
|
+
export var useContactImportFromCsv = function useContactImportFromCsv(_ref) {
|
|
38
31
|
var scope = _ref.scope,
|
|
39
32
|
targetGroupId = _ref.targetGroupId,
|
|
40
33
|
refetchQueries = _ref.refetchQueries;
|
|
41
|
-
var fileInputRef =
|
|
42
|
-
var _useState =
|
|
34
|
+
var fileInputRef = useRef(null);
|
|
35
|
+
var _useState = useState(false),
|
|
43
36
|
_useState2 = _slicedToArray(_useState, 2),
|
|
44
37
|
open = _useState2[0],
|
|
45
38
|
setOpen = _useState2[1];
|
|
46
|
-
var _useState3 =
|
|
39
|
+
var _useState3 = useState(true),
|
|
47
40
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
48
41
|
sendDoubleOptIn = _useState4[0],
|
|
49
42
|
setSendDoubleOptIn = _useState4[1];
|
|
50
|
-
var _useBrevoConfig =
|
|
43
|
+
var _useBrevoConfig = useBrevoConfig(),
|
|
51
44
|
allowAddingContactsWithoutDoi = _useBrevoConfig.allowAddingContactsWithoutDoi;
|
|
52
|
-
var moreActionsMenuItem =
|
|
45
|
+
var moreActionsMenuItem = useMemo(function () {
|
|
53
46
|
return {
|
|
54
47
|
type: "action",
|
|
55
|
-
label: /*#__PURE__*/(
|
|
48
|
+
label: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
56
49
|
id: "cometBrevoModule.targetGroup.assignedContacts.actions.importFromCsv",
|
|
57
50
|
defaultMessage: "Import contacts from CSV"
|
|
58
51
|
}),
|
|
59
|
-
startAdornment: /*#__PURE__*/(
|
|
52
|
+
startAdornment: /*#__PURE__*/_jsx(Upload, {}),
|
|
60
53
|
onClick: function onClick() {
|
|
61
54
|
return setOpen(true);
|
|
62
55
|
}
|
|
@@ -65,16 +58,16 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
|
|
|
65
58
|
var handleClose = function handleClose() {
|
|
66
59
|
return setOpen(false);
|
|
67
60
|
};
|
|
68
|
-
var dialog = /*#__PURE__*/(
|
|
61
|
+
var dialog = /*#__PURE__*/_jsxs(Dialog, {
|
|
69
62
|
open: open,
|
|
70
63
|
onClose: handleClose,
|
|
71
|
-
children: [/*#__PURE__*/(
|
|
72
|
-
children: /*#__PURE__*/(
|
|
64
|
+
children: [/*#__PURE__*/_jsx(DialogTitle, {
|
|
65
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
73
66
|
id: "cometBrevoModule.contactImport.title",
|
|
74
67
|
defaultMessage: "Importing contacts from CSV"
|
|
75
68
|
})
|
|
76
|
-
}), /*#__PURE__*/(
|
|
77
|
-
children: /*#__PURE__*/(
|
|
69
|
+
}), /*#__PURE__*/_jsx(DialogContent, {
|
|
70
|
+
children: /*#__PURE__*/_jsx(FinalForm, {
|
|
78
71
|
onSubmit: function onSubmit(values) {
|
|
79
72
|
var _fileInputRef$current;
|
|
80
73
|
(_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
|
|
@@ -86,28 +79,28 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
|
|
|
86
79
|
children: function children(_ref2) {
|
|
87
80
|
var values = _ref2.values;
|
|
88
81
|
setSendDoubleOptIn(values.sendDoubleOptIn);
|
|
89
|
-
return /*#__PURE__*/(
|
|
90
|
-
children: [values.sendDoubleOptIn ? /*#__PURE__*/(
|
|
82
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
83
|
+
children: [values.sendDoubleOptIn ? /*#__PURE__*/_jsx(Alert, {
|
|
91
84
|
severity: "warning",
|
|
92
85
|
sx: {
|
|
93
86
|
marginBottom: 5
|
|
94
87
|
},
|
|
95
|
-
children: /*#__PURE__*/(
|
|
88
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
96
89
|
id: "cometBrevoModule.contactImport.contactAddAlert",
|
|
97
90
|
defaultMessage: "The contact will get a double opt-in email to confirm the subscription. After the contact's confirmation, the contact will be added to the corresponding target groups in this scope depending on the contact's attributes. Before the confirmation the contact will not be shown on the contacts page."
|
|
98
91
|
})
|
|
99
|
-
}) : /*#__PURE__*/(
|
|
92
|
+
}) : /*#__PURE__*/_jsx(Alert, {
|
|
100
93
|
severity: "error",
|
|
101
94
|
sx: {
|
|
102
95
|
marginBottom: 5
|
|
103
96
|
},
|
|
104
|
-
children: /*#__PURE__*/(
|
|
97
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
105
98
|
id: "cometBrevoModule.contactImport.contactNoOptInAlert",
|
|
106
99
|
defaultMessage: "No Double Opt-In email will be sent. Please ensure recipients have given their consent before proceeding."
|
|
107
100
|
})
|
|
108
|
-
}), allowAddingContactsWithoutDoi && /*#__PURE__*/(
|
|
101
|
+
}), allowAddingContactsWithoutDoi && /*#__PURE__*/_jsx(CheckboxField, {
|
|
109
102
|
name: "sendDoubleOptIn",
|
|
110
|
-
label: /*#__PURE__*/(
|
|
103
|
+
label: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
111
104
|
id: "cometBrevoModule.contactImport.sendDoubleOptInMail",
|
|
112
105
|
defaultMessage: "Send double opt-in email"
|
|
113
106
|
}),
|
|
@@ -116,25 +109,25 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
|
|
|
116
109
|
});
|
|
117
110
|
}
|
|
118
111
|
})
|
|
119
|
-
}), /*#__PURE__*/(
|
|
120
|
-
children: [/*#__PURE__*/(
|
|
112
|
+
}), /*#__PURE__*/_jsxs(DialogActions, {
|
|
113
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
121
114
|
onClick: handleClose,
|
|
122
|
-
children: /*#__PURE__*/(
|
|
123
|
-
}), /*#__PURE__*/(
|
|
115
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.cancel))
|
|
116
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
124
117
|
variant: "primary",
|
|
125
118
|
onClick: function onClick() {
|
|
126
119
|
var _fileInputRef$current2;
|
|
127
120
|
return (_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 ? void 0 : _fileInputRef$current2.click();
|
|
128
121
|
},
|
|
129
|
-
children: /*#__PURE__*/(
|
|
122
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
130
123
|
id: "cometBrevoModule.contactImport.importContacts",
|
|
131
124
|
defaultMessage: "Import Contacts"
|
|
132
125
|
})
|
|
133
126
|
})]
|
|
134
127
|
})]
|
|
135
128
|
});
|
|
136
|
-
var component =
|
|
137
|
-
return /*#__PURE__*/(
|
|
129
|
+
var component = useMemo(function () {
|
|
130
|
+
return /*#__PURE__*/_jsx(ContactImportComponent, {
|
|
138
131
|
scope: scope,
|
|
139
132
|
targetGroupId: targetGroupId,
|
|
140
133
|
fileInputRef: fileInputRef,
|
|
@@ -142,7 +135,7 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
|
|
|
142
135
|
refetchQueries: refetchQueries
|
|
143
136
|
});
|
|
144
137
|
}, [refetchQueries, scope, targetGroupId, sendDoubleOptIn]);
|
|
145
|
-
return [moreActionsMenuItem, /*#__PURE__*/(
|
|
138
|
+
return [moreActionsMenuItem, /*#__PURE__*/_jsxs(_Fragment, {
|
|
146
139
|
children: [dialog, component]
|
|
147
140
|
})];
|
|
148
141
|
};
|
|
@@ -152,20 +145,20 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
152
145
|
fileInputRef = _ref3.fileInputRef,
|
|
153
146
|
sendDoubleOptIn = _ref3.sendDoubleOptIn,
|
|
154
147
|
refetchQueries = _ref3.refetchQueries;
|
|
155
|
-
var apolloClient =
|
|
156
|
-
var _useState5 =
|
|
148
|
+
var apolloClient = useApolloClient();
|
|
149
|
+
var _useState5 = useState(false),
|
|
157
150
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
158
151
|
importingCsv = _useState6[0],
|
|
159
152
|
setImportingCsv = _useState6[1];
|
|
160
|
-
var _useState7 =
|
|
153
|
+
var _useState7 = useState(null),
|
|
161
154
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
162
155
|
importInformation = _useState8[0],
|
|
163
156
|
setImportInformation = _useState8[1];
|
|
164
157
|
var dialogOpen = importingCsv || !!importInformation;
|
|
165
|
-
var errorDialog =
|
|
166
|
-
var config =
|
|
167
|
-
var intl =
|
|
168
|
-
var client =
|
|
158
|
+
var errorDialog = useErrorDialog();
|
|
159
|
+
var config = useBrevoConfig();
|
|
160
|
+
var intl = useIntl();
|
|
161
|
+
var client = useApolloClient();
|
|
169
162
|
function upload(_x, _x2, _x3) {
|
|
170
163
|
return _upload.apply(this, arguments);
|
|
171
164
|
}
|
|
@@ -199,7 +192,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
199
192
|
fileUploadId = _context2.v.id;
|
|
200
193
|
_context2.n = 4;
|
|
201
194
|
return client.mutate({
|
|
202
|
-
mutation:
|
|
195
|
+
mutation: startBrevoContactImportMutation,
|
|
203
196
|
variables: {
|
|
204
197
|
fileId: fileUploadId,
|
|
205
198
|
scope: scope,
|
|
@@ -263,7 +256,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
263
256
|
var file = new Blob([errorData], {
|
|
264
257
|
type: "text/csv;charset=utf-8"
|
|
265
258
|
});
|
|
266
|
-
(
|
|
259
|
+
saveAs(file, "error-log-".concat(new Date().toISOString(), ".csv"));
|
|
267
260
|
};
|
|
268
261
|
var saveBlacklistedContactsFile = function saveBlacklistedContactsFile() {
|
|
269
262
|
var blacklistedContactsColumns = importInformation === null || importInformation === void 0 ? void 0 : importInformation.blacklistedColumns;
|
|
@@ -303,9 +296,9 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
303
296
|
var file = new Blob([blacklistedContactsData], {
|
|
304
297
|
type: "text/csv;charset=utf-8"
|
|
305
298
|
});
|
|
306
|
-
(
|
|
299
|
+
saveAs(file, "blacklisted-contact-log-".concat(new Date().toISOString(), ".csv"));
|
|
307
300
|
};
|
|
308
|
-
var _useDropzone =
|
|
301
|
+
var _useDropzone = useDropzone({
|
|
309
302
|
accept: {
|
|
310
303
|
"text/csv": []
|
|
311
304
|
},
|
|
@@ -333,7 +326,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
333
326
|
setImportingCsv(false);
|
|
334
327
|
if (data.errorMessage) {
|
|
335
328
|
errorDialog === null || errorDialog === void 0 || errorDialog.showError({
|
|
336
|
-
title: /*#__PURE__*/(
|
|
329
|
+
title: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.error)),
|
|
337
330
|
userMessage: data.errorMessage,
|
|
338
331
|
error: data.errorMessage
|
|
339
332
|
});
|
|
@@ -351,12 +344,12 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
351
344
|
_context.p = 5;
|
|
352
345
|
_t = _context.v;
|
|
353
346
|
setImportingCsv(false);
|
|
354
|
-
userMessage = /*#__PURE__*/(
|
|
347
|
+
userMessage = /*#__PURE__*/_jsx(FormattedMessage, {
|
|
355
348
|
id: "cometBrevoModule.useContactImport.error.defaultMessage",
|
|
356
349
|
defaultMessage: "An error occured during the import. Please try again in a while or contact your administrator if the error persists."
|
|
357
350
|
});
|
|
358
351
|
errorDialog === null || errorDialog === void 0 || errorDialog.showError({
|
|
359
|
-
title: /*#__PURE__*/(
|
|
352
|
+
title: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.error)),
|
|
360
353
|
userMessage: userMessage,
|
|
361
354
|
error: String(_t)
|
|
362
355
|
});
|
|
@@ -372,47 +365,47 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
372
365
|
}()
|
|
373
366
|
}),
|
|
374
367
|
getInputProps = _useDropzone.getInputProps;
|
|
375
|
-
return /*#__PURE__*/(
|
|
376
|
-
children: [/*#__PURE__*/(
|
|
368
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
369
|
+
children: [/*#__PURE__*/_jsx("input", _objectSpread(_objectSpread({
|
|
377
370
|
type: "file",
|
|
378
371
|
hidden: true
|
|
379
372
|
}, getInputProps()), {}, {
|
|
380
373
|
ref: fileInputRef
|
|
381
|
-
})), /*#__PURE__*/(
|
|
374
|
+
})), /*#__PURE__*/_jsxs(Dialog, {
|
|
382
375
|
open: dialogOpen,
|
|
383
|
-
children: [/*#__PURE__*/(
|
|
384
|
-
children: [importingCsv && /*#__PURE__*/(
|
|
376
|
+
children: [/*#__PURE__*/_jsxs(DialogTitle, {
|
|
377
|
+
children: [importingCsv && /*#__PURE__*/_jsx(FormattedMessage, {
|
|
385
378
|
id: "cometBrevoModule.useContactImport.importing.title",
|
|
386
379
|
defaultMessage: "Importing contacts from CSV..."
|
|
387
|
-
}), importInformation && /*#__PURE__*/(
|
|
380
|
+
}), importInformation && /*#__PURE__*/_jsx(FormattedMessage, {
|
|
388
381
|
id: "cometBrevoModule.useContactImport.importSuccessful.title",
|
|
389
382
|
defaultMessage: "Import successful"
|
|
390
383
|
})]
|
|
391
|
-
}), /*#__PURE__*/(
|
|
392
|
-
children: [importingCsv && /*#__PURE__*/(
|
|
393
|
-
children: [importInformation.created > 0 && /*#__PURE__*/(
|
|
384
|
+
}), /*#__PURE__*/_jsxs(DialogContent, {
|
|
385
|
+
children: [importingCsv && /*#__PURE__*/_jsx(Loading, {}), importInformation && /*#__PURE__*/_jsxs(_Fragment, {
|
|
386
|
+
children: [importInformation.created > 0 && /*#__PURE__*/_jsx(FormattedMessage, {
|
|
394
387
|
id: "cometBrevoModule.useContactImport.importSuccessful.contactsImported",
|
|
395
388
|
defaultMessage: "{amount} contact(s) have been created successfully.",
|
|
396
389
|
values: {
|
|
397
390
|
amount: importInformation.created
|
|
398
391
|
}
|
|
399
|
-
}), importInformation.updated > 0 && /*#__PURE__*/(
|
|
392
|
+
}), importInformation.updated > 0 && /*#__PURE__*/_jsx(FormattedMessage, {
|
|
400
393
|
id: "cometBrevoModule.useContactImport.importSuccessful.contactsUpdated",
|
|
401
394
|
defaultMessage: "{amount} contact(s) have been updated.",
|
|
402
395
|
values: {
|
|
403
396
|
amount: importInformation.updated
|
|
404
397
|
}
|
|
405
|
-
}), importInformation.failed > 0 && /*#__PURE__*/(
|
|
398
|
+
}), importInformation.failed > 0 && /*#__PURE__*/_jsx(Box, {
|
|
406
399
|
mt: 2,
|
|
407
|
-
children: /*#__PURE__*/(
|
|
400
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
408
401
|
severity: "error",
|
|
409
|
-
children: /*#__PURE__*/(
|
|
402
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
410
403
|
id: "cometBrevoModule.useContactImport.error.contactsCouldNotBeImported",
|
|
411
404
|
defaultMessage: "{amount} contact(s) could not be imported. <link>Download this file</link> to get the failing row(s).",
|
|
412
405
|
values: {
|
|
413
406
|
amount: importInformation.failed,
|
|
414
407
|
link: function link(chunks) {
|
|
415
|
-
return /*#__PURE__*/(
|
|
408
|
+
return /*#__PURE__*/_jsx(CsvDownloadLink, {
|
|
416
409
|
onClick: saveErrorFile,
|
|
417
410
|
children: chunks
|
|
418
411
|
});
|
|
@@ -420,17 +413,17 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
420
413
|
}
|
|
421
414
|
})
|
|
422
415
|
})
|
|
423
|
-
}), importInformation.blacklisted > 0 && /*#__PURE__*/(
|
|
416
|
+
}), importInformation.blacklisted > 0 && /*#__PURE__*/_jsx(Box, {
|
|
424
417
|
mt: 2,
|
|
425
|
-
children: /*#__PURE__*/(
|
|
418
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
426
419
|
severity: "error",
|
|
427
|
-
children: /*#__PURE__*/(
|
|
420
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
428
421
|
id: "cometBrevoModule.useContactImport.error.contactsAreBlacklisted",
|
|
429
422
|
defaultMessage: "{amount} contacts could not be imported as they are blacklisted. <link>Download this file</link> to get the blacklisted contact(s).",
|
|
430
423
|
values: {
|
|
431
424
|
amount: importInformation.blacklisted,
|
|
432
425
|
link: function link(chunks) {
|
|
433
|
-
return /*#__PURE__*/(
|
|
426
|
+
return /*#__PURE__*/_jsx(CsvDownloadLink, {
|
|
434
427
|
onClick: saveBlacklistedContactsFile,
|
|
435
428
|
children: chunks
|
|
436
429
|
});
|
|
@@ -438,30 +431,30 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
|
|
|
438
431
|
}
|
|
439
432
|
})
|
|
440
433
|
})
|
|
441
|
-
}), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/(
|
|
434
|
+
}), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/_jsx(Box, {
|
|
442
435
|
mt: 2,
|
|
443
|
-
children: /*#__PURE__*/(
|
|
436
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
444
437
|
severity: "warning",
|
|
445
|
-
children: /*#__PURE__*/(
|
|
438
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
446
439
|
id: "cometBrevoModule.useContactImport.importSuccessful.doiNotice",
|
|
447
440
|
defaultMessage: "Contacts who have not yet confirmed their subscription will receive a double opt-in email to complete the process. These contacts will not appear in this list until they confirm their subscription. Once confirmed, they will automatically be added to the appropriate target group(s)."
|
|
448
441
|
})
|
|
449
442
|
})
|
|
450
443
|
})]
|
|
451
444
|
})]
|
|
452
|
-
}), /*#__PURE__*/(
|
|
453
|
-
children: importInformation && /*#__PURE__*/(
|
|
445
|
+
}), /*#__PURE__*/_jsx(DialogActions, {
|
|
446
|
+
children: importInformation && /*#__PURE__*/_jsx(Button, {
|
|
454
447
|
onClick: function onClick() {
|
|
455
448
|
return setImportInformation(null);
|
|
456
449
|
},
|
|
457
450
|
variant: "primary",
|
|
458
|
-
children: /*#__PURE__*/(
|
|
451
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.ok))
|
|
459
452
|
})
|
|
460
453
|
})]
|
|
461
454
|
})]
|
|
462
455
|
});
|
|
463
456
|
};
|
|
464
|
-
var CsvDownloadLink = /*#__PURE__*/
|
|
457
|
+
var CsvDownloadLink = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
|
|
465
458
|
target: "e157iusb0"
|
|
466
459
|
} : {
|
|
467
460
|
target: "e157iusb0",
|
|
@@ -469,4 +462,4 @@ var CsvDownloadLink = /*#__PURE__*/(0, _styles.styled)("span", process.env.NODE_
|
|
|
469
462
|
})("color:", function (_ref4) {
|
|
470
463
|
var theme = _ref4.theme;
|
|
471
464
|
return theme.palette.info.main;
|
|
472
|
-
}, ";text-decoration:underline;cursor:pointer;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29udGFjdEltcG9ydC91c2VDb250YWN0SW1wb3J0RnJvbUNzdi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNlhzQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbnRhY3RJbXBvcnQvdXNlQ29udGFjdEltcG9ydEZyb21Dc3YudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIkBhcG9sbG8vY2xpZW50XCI7XG5pbXBvcnQgeyB0eXBlIFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgQnV0dG9uLCBDaGVja2JveEZpZWxkLCBEaWFsb2csIEZpbmFsRm9ybSwgTG9hZGluZywgbWVzc2FnZXMsIHVzZUVycm9yRGlhbG9nIH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBEaWFsb2dBY3Rpb25zLCBEaWFsb2dDb250ZW50LCBEaWFsb2dUaXRsZSwgdHlwZSBNZW51SXRlbSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBzYXZlQXMgZnJvbSBcImZpbGUtc2F2ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ29tcG9uZW50UHJvcHMsIHR5cGUgUmVhY3ROb2RlLCB0eXBlIFJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRHJvcHpvbmUgfSBmcm9tIFwicmVhY3QtZHJvcHpvbmVcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuXG5pbXBvcnQgeyB0eXBlIEdRTENzdkltcG9ydEluZm9ybWF0aW9uLCB0eXBlIEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCB9IGZyb20gXCIuLi8uLi9ncmFwaHFsLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdXNlQnJldm9Db25maWcgfSBmcm9tIFwiLi4vQnJldm9Db25maWdQcm92aWRlclwiO1xuaW1wb3J0IHsgc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbiB9IGZyb20gXCIuL3VzZUNvbnRhY3RJbXBvcnRGcm9tQ3N2LmdxbFwiO1xuaW1wb3J0IHsgdHlwZSBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCB0eXBlIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXMgfSBmcm9tIFwiLi91c2VDb250YWN0SW1wb3J0RnJvbUNzdi5ncWwuZ2VuZXJhdGVkXCI7XG5cbmludGVyZmFjZSBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIHNjb3BlOiBHUUxFbWFpbENhbXBhaWduQ29udGVudFNjb3BlSW5wdXQ7XG4gICAgc2VuZERvdWJsZU9wdEluOiBib29sZWFuO1xuICAgIHRhcmdldEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgcmVmZXRjaFF1ZXJpZXM/OiBSZWZldGNoUXVlcmllc0luY2x1ZGU7XG59XG5cbnR5cGUgQ29udGFjdEltcG9ydEZyb21Dc3ZGb3JtID0ge1xuICAgIHNlbmREb3VibGVPcHRJbjogYm9vbGVhbjtcbn07XG5cbmludGVyZmFjZSBBY3Rpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1lbnVJdGVtPiB7XG4gICAgdHlwZTogXCJhY3Rpb25cIjtcbiAgICBsYWJlbDogUmVhY3ROb2RlO1xuICAgIHN0YXJ0QWRvcm5tZW50PzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGFjdEltcG9ydEZyb21Dc3YgPSAoeyBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdEltcG9ydFByb3BzKTogW0FjdGlvbkl0ZW0sIFJlYWN0Tm9kZV0gPT4ge1xuICAgIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NlbmREb3VibGVPcHRJbiwgc2V0U2VuZERvdWJsZU9wdEluXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IHsgYWxsb3dBZGRpbmdDb250YWN0c1dpdGhvdXREb2kgfSA9IHVzZUJyZXZvQ29uZmlnKCk7XG5cbiAgICBjb25zdCBtb3JlQWN0aW9uc01lbnVJdGVtOiBBY3Rpb25JdGVtID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS50YXJnZXRHcm91cC5hc3NpZ25lZENvbnRhY3RzLmFjdGlvbnMuaW1wb3J0RnJvbUNzdlwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IGNvbnRhY3RzIGZyb20gQ1NWXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXJ0QWRvcm5tZW50OiA8VXBsb2FkIC8+LFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0T3Blbih0cnVlKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtdLFxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldE9wZW4oZmFsc2UpO1xuXG4gICAgY29uc3QgZGlhbG9nID0gKFxuICAgICAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0aW5nIGNvbnRhY3RzIGZyb20gQ1NWXCIgLz5cbiAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RmluYWxGb3JtPENvbnRhY3RJbXBvcnRGcm9tQ3N2Rm9ybT5cbiAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBzZW5kRG91YmxlT3B0SW46IHRydWUgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsoeyB2YWx1ZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VuZERvdWJsZU9wdEluKHZhbHVlcy5zZW5kRG91YmxlT3B0SW4pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZXMuc2VuZERvdWJsZU9wdEluID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiIHN4PXt7IG1hcmdpbkJvdHRvbTogNSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5jb250YWN0QWRkQWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlRoZSBjb250YWN0IHdpbGwgZ2V0IGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb25maXJtIHRoZSBzdWJzY3JpcHRpb24uIEFmdGVyIHRoZSBjb250YWN0J3MgY29uZmlybWF0aW9uLCB0aGUgY29udGFjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldCBncm91cHMgaW4gdGhpcyBzY29wZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhY3QncyBhdHRyaWJ1dGVzLiBCZWZvcmUgdGhlIGNvbmZpcm1hdGlvbiB0aGUgY29udGFjdCB3aWxsIG5vdCBiZSBzaG93biBvbiB0aGUgY29udGFjdHMgcGFnZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIiBzeD17eyBtYXJnaW5Cb3R0b206IDUgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuY29udGFjdE5vT3B0SW5BbGVydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTm8gRG91YmxlIE9wdC1JbiBlbWFpbCB3aWxsIGJlIHNlbnQuIFBsZWFzZSBlbnN1cmUgcmVjaXBpZW50cyBoYXZlIGdpdmVuIHRoZWlyIGNvbnNlbnQgYmVmb3JlIHByb2NlZWRpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsbG93QWRkaW5nQ29udGFjdHNXaXRob3V0RG9pICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbmREb3VibGVPcHRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuc2VuZERvdWJsZU9wdEluTWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlNlbmQgZG91YmxlIG9wdC1pbiBlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9GaW5hbEZvcm0+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmNhbmNlbH0gLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJwcmltYXJ5XCIgb25DbGljaz17KCkgPT4gZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCl9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5pbXBvcnRDb250YWN0c1wiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IENvbnRhY3RzXCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IChcbiAgICAgICAgICAgIDxDb250YWN0SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWQ9e3RhcmdldEdyb3VwSWR9XG4gICAgICAgICAgICAgICAgZmlsZUlucHV0UmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluPXtzZW5kRG91YmxlT3B0SW59XG4gICAgICAgICAgICAgICAgcmVmZXRjaFF1ZXJpZXM9e3JlZmV0Y2hRdWVyaWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKSxcbiAgICAgICAgW3JlZmV0Y2hRdWVyaWVzLCBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgc2VuZERvdWJsZU9wdEluXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICAgbW9yZUFjdGlvbnNNZW51SXRlbSxcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtkaWFsb2d9XG4gICAgICAgICAgICB7Y29tcG9uZW50fVxuICAgICAgICA8Lz4sXG4gICAgXTtcbn07XG5cbmludGVyZmFjZSBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMgZXh0ZW5kcyBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIGZpbGVJbnB1dFJlZjogUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQ+O1xufVxuXG5jb25zdCBDb250YWN0SW1wb3J0Q29tcG9uZW50ID0gKHsgc2NvcGUsIHRhcmdldEdyb3VwSWQsIGZpbGVJbnB1dFJlZiwgc2VuZERvdWJsZU9wdEluLCByZWZldGNoUXVlcmllcyB9OiBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMpID0+IHtcbiAgICBjb25zdCBhcG9sbG9DbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcbiAgICBjb25zdCBbaW1wb3J0aW5nQ3N2LCBzZXRJbXBvcnRpbmdDc3ZdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpbXBvcnRJbmZvcm1hdGlvbiwgc2V0SW1wb3J0SW5mb3JtYXRpb25dID0gdXNlU3RhdGU8R1FMQ3N2SW1wb3J0SW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBkaWFsb2dPcGVuID0gaW1wb3J0aW5nQ3N2IHx8ICEhaW1wb3J0SW5mb3JtYXRpb247XG4gICAgY29uc3QgZXJyb3JEaWFsb2cgPSB1c2VFcnJvckRpYWxvZygpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHVzZUJyZXZvQ29uZmlnKCk7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwbG9hZChmaWxlOiBGaWxlLCBzY29wZTogR1FMRW1haWxDYW1wYWlnbkNvbnRlbnRTY29wZUlucHV0LCBsaXN0SWRzPzogc3RyaW5nW10pOiBQcm9taXNlPEdRTENzdkltcG9ydEluZm9ybWF0aW9uPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtjb25maWcuYXBpVXJsfS9maWxlLXVwbG9hZHMvdXBsb2FkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHsgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmZpbGVVcGxvYWRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiQ291bGQgbm90IHVwbG9hZCBmaWxlXCIgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVVwbG9hZElkID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkuaWQ7XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBjbGllbnQubXV0YXRlPEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb24sIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXM+KHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBzdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlVXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluLFxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWRzOiBsaXN0SWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmRlZmF1bHRNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgd2hpbGUgb3IgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgdGhlIGVycm9yIHBlcnNpc3RzLlwiLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YS5zdGFydEJyZXZvQ29udGFjdEltcG9ydDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlRXJyb3JGaWxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmYWlsZWRDb2x1bW5zID0gaW1wb3J0SW5mb3JtYXRpb24/LmZhaWxlZENvbHVtbnM7XG4gICAgICAgIGlmICghZmFpbGVkQ29sdW1ucyB8fCBmYWlsZWRDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVycm9yRGF0YSA9IFwiXCI7XG5cbiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIGZpbGUgd2l0aG91dCB0cmFpbGluZyBzZW1pY29sb25cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGZhaWxlZENvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBlcnJvckRhdGEgPSBgJHtoZWFkZXJTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDsgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIHRoZSBoZWFkZXJcblxuICAgICAgICAvLyBBZGQgZWFjaCByb3cgb2YgZmFpbGVkIGNvbHVtbnMgZGF0YVxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBmYWlsZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGVycm9yRGF0YSArPSBgJHtyb3dTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtlcnJvckRhdGFdLCB7IHR5cGU6IFwidGV4dC9jc3Y7Y2hhcnNldD11dGYtOFwiIH0pO1xuICAgICAgICBzYXZlQXMoZmlsZSwgYGVycm9yLWxvZy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uY3N2YCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhdmVCbGFja2xpc3RlZENvbnRhY3RzRmlsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnMgPSBpbXBvcnRJbmZvcm1hdGlvbj8uYmxhY2tsaXN0ZWRDb2x1bW5zO1xuICAgICAgICBpZiAoIWJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zIHx8IGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhID0gXCJcIjtcblxuICAgICAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgZmlsZSB3aXRob3V0IHRyYWlsaW5nIHNlbWljb2xvblxuICAgICAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMoYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBibGFja2xpc3RlZENvbnRhY3RzRGF0YSA9IGAke2hlYWRlclN0ci5yZXBsYWNlKC87KyQvLCBcIlwiKX1cXG5gOyAvLyBSZW1vdmUgdHJhaWxpbmcgc2VtaWNvbG9uIGZyb20gdGhlIGhlYWRlclxuXG4gICAgICAgIC8vIEFkZCBlYWNoIHJvdyBvZiBmYWlsZWQgY29sdW1ucyBkYXRhXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhICs9IGAke3Jvd1N0ci5yZXBsYWNlKC87KyQvLCBcIlwiKX1cXG5gO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuZCBkb3dubG9hZCB0aGUgZmlsZVxuICAgICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW2JsYWNrbGlzdGVkQ29udGFjdHNEYXRhXSwgeyB0eXBlOiBcInRleHQvY3N2O2NoYXJzZXQ9dXRmLThcIiB9KTtcbiAgICAgICAgc2F2ZUFzKGZpbGUsIGBibGFja2xpc3RlZC1jb250YWN0LWxvZy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uY3N2YCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHsgZ2V0SW5wdXRQcm9wcyB9ID0gdXNlRHJvcHpvbmUoe1xuICAgICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L2NzdlwiOiBbXSB9LFxuICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIG9uRHJvcDogYXN5bmMgKGFjY2VwdGVkRmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KHRydWUpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhY2NlcHRlZEZpbGVzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB1cGxvYWQoZmlsZSwgc2NvcGUsIHRhcmdldEdyb3VwSWQgPyBbdGFyZ2V0R3JvdXBJZF0gOiBbXSk7XG4gICAgICAgICAgICAgICAgYXBvbGxvQ2xpZW50LnJlZmV0Y2hRdWVyaWVzKHsgaW5jbHVkZTogcmVmZXRjaFF1ZXJpZXMgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5lcnJvcn0gLz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1lc3NhZ2U6IGRhdGEuZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBkYXRhLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW1wb3J0SW5mb3JtYXRpb24oZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlck1lc3NhZ2UgPSAoXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5kZWZhdWx0TWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRoZSBpbXBvcnQuIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSB3aGlsZSBvciBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciBpZiB0aGUgZXJyb3IgcGVyc2lzdHMuXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuZXJyb3J9IC8+LFxuICAgICAgICAgICAgICAgICAgICB1c2VyTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFN0cmluZyhlKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gey4uLmdldElucHV0UHJvcHMoKX0gcmVmPXtmaWxlSW5wdXRSZWZ9IC8+XG4gICAgICAgICAgICA8RGlhbG9nIG9wZW49e2RpYWxvZ09wZW59PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRpbmcudGl0bGVcIiBkZWZhdWx0TWVzc2FnZT1cIkltcG9ydGluZyBjb250YWN0cyBmcm9tIENTVi4uLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnQgc3VjY2Vzc2Z1bFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiA8TG9hZGluZyAvPn1cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLmNyZWF0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuY29udGFjdHNJbXBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3QocykgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5jcmVhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0U3VjY2Vzc2Z1bC5jb250YWN0c1VwZGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGhhdmUgYmVlbiB1cGRhdGVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi51cGRhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQ291bGROb3RCZUltcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gPGxpbms+RG93bmxvYWQgdGhpcyBmaWxlPC9saW5rPiB0byBnZXQgdGhlIGZhaWxpbmcgcm93KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiAoY2h1bmtzOiBSZWFjdE5vZGUpID0+IDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUVycm9yRmlsZX0+e2NodW5rc308L0NzdkRvd25sb2FkTGluaz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24uYmxhY2tsaXN0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQXJlQmxhY2tsaXN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3RzIGNvdWxkIG5vdCBiZSBpbXBvcnRlZCBhcyB0aGV5IGFyZSBibGFja2xpc3RlZC4gIDxsaW5rPkRvd25sb2FkIHRoaXMgZmlsZTwvbGluaz4gdG8gZ2V0IHRoZSBibGFja2xpc3RlZCBjb250YWN0KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5ibGFja2xpc3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IChjaHVua3M6IFJlYWN0Tm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUJsYWNrbGlzdGVkQ29udGFjdHNGaWxlfT57Y2h1bmtzfTwvQ3N2RG93bmxvYWRMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaW1wb3J0SW5mb3JtYXRpb24uY3JlYXRlZCA+IDAgfHwgaW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDApICYmIHNlbmREb3VibGVPcHRJbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuZG9pTm90aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJDb250YWN0cyB3aG8gaGF2ZSBub3QgeWV0IGNvbmZpcm1lZCB0aGVpciBzdWJzY3JpcHRpb24gd2lsbCByZWNlaXZlIGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb21wbGV0ZSB0aGUgcHJvY2Vzcy4gVGhlc2UgY29udGFjdHMgd2lsbCBub3QgYXBwZWFyIGluIHRoaXMgbGlzdCB1bnRpbCB0aGV5IGNvbmZpcm0gdGhlaXIgc3Vic2NyaXB0aW9uLiBPbmNlIGNvbmZpcm1lZCwgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHRhcmdldCBncm91cChzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJbXBvcnRJbmZvcm1hdGlvbihudWxsKX0gdmFyaWFudD1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMub2t9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICAgICAgICA8L0RpYWxvZz5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmNvbnN0IENzdkRvd25sb2FkTGluayA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucGFsZXR0ZS5pbmZvLm1haW59O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbmA7XG4iXX0= */"));
|
|
465
|
+
}, ";text-decoration:underline;cursor:pointer;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29udGFjdEltcG9ydC91c2VDb250YWN0SW1wb3J0RnJvbUNzdi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNlhzQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbnRhY3RJbXBvcnQvdXNlQ29udGFjdEltcG9ydEZyb21Dc3YudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIkBhcG9sbG8vY2xpZW50XCI7XG5pbXBvcnQgeyB0eXBlIFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgQnV0dG9uLCBDaGVja2JveEZpZWxkLCBEaWFsb2csIEZpbmFsRm9ybSwgTG9hZGluZywgbWVzc2FnZXMsIHVzZUVycm9yRGlhbG9nIH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBEaWFsb2dBY3Rpb25zLCBEaWFsb2dDb250ZW50LCBEaWFsb2dUaXRsZSwgdHlwZSBNZW51SXRlbSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBzYXZlQXMgZnJvbSBcImZpbGUtc2F2ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ29tcG9uZW50UHJvcHMsIHR5cGUgUmVhY3ROb2RlLCB0eXBlIFJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRHJvcHpvbmUgfSBmcm9tIFwicmVhY3QtZHJvcHpvbmVcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuXG5pbXBvcnQgeyB0eXBlIEdRTENzdkltcG9ydEluZm9ybWF0aW9uLCB0eXBlIEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCB9IGZyb20gXCIuLi8uLi9ncmFwaHFsLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdXNlQnJldm9Db25maWcgfSBmcm9tIFwiLi4vQnJldm9Db25maWdQcm92aWRlclwiO1xuaW1wb3J0IHsgc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbiB9IGZyb20gXCIuL3VzZUNvbnRhY3RJbXBvcnRGcm9tQ3N2LmdxbFwiO1xuaW1wb3J0IHsgdHlwZSBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCB0eXBlIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXMgfSBmcm9tIFwiLi91c2VDb250YWN0SW1wb3J0RnJvbUNzdi5ncWwuZ2VuZXJhdGVkXCI7XG5cbmludGVyZmFjZSBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIHNjb3BlOiBHUUxFbWFpbENhbXBhaWduQ29udGVudFNjb3BlSW5wdXQ7XG4gICAgc2VuZERvdWJsZU9wdEluOiBib29sZWFuO1xuICAgIHRhcmdldEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgcmVmZXRjaFF1ZXJpZXM/OiBSZWZldGNoUXVlcmllc0luY2x1ZGU7XG59XG5cbnR5cGUgQ29udGFjdEltcG9ydEZyb21Dc3ZGb3JtID0ge1xuICAgIHNlbmREb3VibGVPcHRJbjogYm9vbGVhbjtcbn07XG5cbmludGVyZmFjZSBBY3Rpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1lbnVJdGVtPiB7XG4gICAgdHlwZTogXCJhY3Rpb25cIjtcbiAgICBsYWJlbDogUmVhY3ROb2RlO1xuICAgIHN0YXJ0QWRvcm5tZW50PzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGFjdEltcG9ydEZyb21Dc3YgPSAoeyBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdEltcG9ydFByb3BzKTogW0FjdGlvbkl0ZW0sIFJlYWN0Tm9kZV0gPT4ge1xuICAgIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NlbmREb3VibGVPcHRJbiwgc2V0U2VuZERvdWJsZU9wdEluXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IHsgYWxsb3dBZGRpbmdDb250YWN0c1dpdGhvdXREb2kgfSA9IHVzZUJyZXZvQ29uZmlnKCk7XG5cbiAgICBjb25zdCBtb3JlQWN0aW9uc01lbnVJdGVtOiBBY3Rpb25JdGVtID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS50YXJnZXRHcm91cC5hc3NpZ25lZENvbnRhY3RzLmFjdGlvbnMuaW1wb3J0RnJvbUNzdlwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IGNvbnRhY3RzIGZyb20gQ1NWXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXJ0QWRvcm5tZW50OiA8VXBsb2FkIC8+LFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0T3Blbih0cnVlKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtdLFxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldE9wZW4oZmFsc2UpO1xuXG4gICAgY29uc3QgZGlhbG9nID0gKFxuICAgICAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0aW5nIGNvbnRhY3RzIGZyb20gQ1NWXCIgLz5cbiAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RmluYWxGb3JtPENvbnRhY3RJbXBvcnRGcm9tQ3N2Rm9ybT5cbiAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBzZW5kRG91YmxlT3B0SW46IHRydWUgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsoeyB2YWx1ZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VuZERvdWJsZU9wdEluKHZhbHVlcy5zZW5kRG91YmxlT3B0SW4pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZXMuc2VuZERvdWJsZU9wdEluID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiIHN4PXt7IG1hcmdpbkJvdHRvbTogNSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5jb250YWN0QWRkQWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlRoZSBjb250YWN0IHdpbGwgZ2V0IGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb25maXJtIHRoZSBzdWJzY3JpcHRpb24uIEFmdGVyIHRoZSBjb250YWN0J3MgY29uZmlybWF0aW9uLCB0aGUgY29udGFjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldCBncm91cHMgaW4gdGhpcyBzY29wZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhY3QncyBhdHRyaWJ1dGVzLiBCZWZvcmUgdGhlIGNvbmZpcm1hdGlvbiB0aGUgY29udGFjdCB3aWxsIG5vdCBiZSBzaG93biBvbiB0aGUgY29udGFjdHMgcGFnZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIiBzeD17eyBtYXJnaW5Cb3R0b206IDUgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuY29udGFjdE5vT3B0SW5BbGVydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTm8gRG91YmxlIE9wdC1JbiBlbWFpbCB3aWxsIGJlIHNlbnQuIFBsZWFzZSBlbnN1cmUgcmVjaXBpZW50cyBoYXZlIGdpdmVuIHRoZWlyIGNvbnNlbnQgYmVmb3JlIHByb2NlZWRpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsbG93QWRkaW5nQ29udGFjdHNXaXRob3V0RG9pICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbmREb3VibGVPcHRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuc2VuZERvdWJsZU9wdEluTWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlNlbmQgZG91YmxlIG9wdC1pbiBlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9GaW5hbEZvcm0+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmNhbmNlbH0gLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJwcmltYXJ5XCIgb25DbGljaz17KCkgPT4gZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCl9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5pbXBvcnRDb250YWN0c1wiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IENvbnRhY3RzXCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IChcbiAgICAgICAgICAgIDxDb250YWN0SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWQ9e3RhcmdldEdyb3VwSWR9XG4gICAgICAgICAgICAgICAgZmlsZUlucHV0UmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluPXtzZW5kRG91YmxlT3B0SW59XG4gICAgICAgICAgICAgICAgcmVmZXRjaFF1ZXJpZXM9e3JlZmV0Y2hRdWVyaWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKSxcbiAgICAgICAgW3JlZmV0Y2hRdWVyaWVzLCBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgc2VuZERvdWJsZU9wdEluXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICAgbW9yZUFjdGlvbnNNZW51SXRlbSxcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtkaWFsb2d9XG4gICAgICAgICAgICB7Y29tcG9uZW50fVxuICAgICAgICA8Lz4sXG4gICAgXTtcbn07XG5cbmludGVyZmFjZSBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMgZXh0ZW5kcyBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIGZpbGVJbnB1dFJlZjogUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPjtcbn1cblxuY29uc3QgQ29udGFjdEltcG9ydENvbXBvbmVudCA9ICh7IHNjb3BlLCB0YXJnZXRHcm91cElkLCBmaWxlSW5wdXRSZWYsIHNlbmREb3VibGVPcHRJbiwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdENvbXBvbmVudFByb3BzKSA9PiB7XG4gICAgY29uc3QgYXBvbGxvQ2xpZW50ID0gdXNlQXBvbGxvQ2xpZW50KCk7XG4gICAgY29uc3QgW2ltcG9ydGluZ0Nzdiwgc2V0SW1wb3J0aW5nQ3N2XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaW1wb3J0SW5mb3JtYXRpb24sIHNldEltcG9ydEluZm9ybWF0aW9uXSA9IHVzZVN0YXRlPEdRTENzdkltcG9ydEluZm9ybWF0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgZGlhbG9nT3BlbiA9IGltcG9ydGluZ0NzdiB8fCAhIWltcG9ydEluZm9ybWF0aW9uO1xuICAgIGNvbnN0IGVycm9yRGlhbG9nID0gdXNlRXJyb3JEaWFsb2coKTtcbiAgICBjb25zdCBjb25maWcgPSB1c2VCcmV2b0NvbmZpZygpO1xuICAgIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlQXBvbGxvQ2xpZW50KCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB1cGxvYWQoZmlsZTogRmlsZSwgc2NvcGU6IEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCwgbGlzdElkcz86IHN0cmluZ1tdKTogUHJvbWlzZTxHUUxDc3ZJbXBvcnRJbmZvcm1hdGlvbj4ge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7Y29uZmlnLmFwaVVybH0vZmlsZS11cGxvYWRzL3VwbG9hZGAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5maWxlVXBsb2FkXCIsIGRlZmF1bHRNZXNzYWdlOiBcIkNvdWxkIG5vdCB1cGxvYWQgZmlsZVwiIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVVcGxvYWRJZCA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpLmlkO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgY2xpZW50Lm11dGF0ZTxHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uVmFyaWFibGVzPih7XG4gICAgICAgICAgICBtdXRhdGlvbjogc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbixcbiAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgIGZpbGVJZDogZmlsZVVwbG9hZElkLFxuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIHNlbmREb3VibGVPcHRJbixcbiAgICAgICAgICAgICAgICB0YXJnZXRHcm91cElkczogbGlzdElkcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5kZWZhdWx0TWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgdGhlIGltcG9ydC4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIHdoaWxlIG9yIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yIGlmIHRoZSBlcnJvciBwZXJzaXN0cy5cIixcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEuc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZUVycm9yRmlsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZmFpbGVkQ29sdW1ucyA9IGltcG9ydEluZm9ybWF0aW9uPy5mYWlsZWRDb2x1bW5zO1xuICAgICAgICBpZiAoIWZhaWxlZENvbHVtbnMgfHwgZmFpbGVkQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpbnRsLmZvcm1hdE1lc3NhZ2UoeyBpZDogXCJleHBvcnRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiTm8gZmFpbGVkIGNvbHVtbnMgdG8gc2F2ZVwiIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlcnJvckRhdGEgPSBcIlwiO1xuXG4gICAgICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSBmaWxlIHdpdGhvdXQgdHJhaWxpbmcgc2VtaWNvbG9uXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBPYmplY3Qua2V5cyhmYWlsZWRDb2x1bW5zWzBdKTtcbiAgICAgICAgY29uc3QgaGVhZGVyU3RyID0gaGVhZGVycy5qb2luKFwiO1wiKTtcbiAgICAgICAgZXJyb3JEYXRhID0gYCR7aGVhZGVyU3RyLnJlcGxhY2UoLzsrJC8sIFwiXCIpfVxcbmA7IC8vIFJlbW92ZSB0cmFpbGluZyBzZW1pY29sb24gZnJvbSB0aGUgaGVhZGVyXG5cbiAgICAgICAgLy8gQWRkIGVhY2ggcm93IG9mIGZhaWxlZCBjb2x1bW5zIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgZmFpbGVkQ29sdW1ucykge1xuICAgICAgICAgICAgLy8gVXNlIE9iamVjdC52YWx1ZXMgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgZWFjaCBjb2x1bW5cbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IE9iamVjdC52YWx1ZXMoY29sdW1uKTsgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgdW5kZWZpbmVkL251bGxcblxuICAgICAgICAgICAgLy8gSm9pbiByb3cgdmFsdWVzIGFuZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpZiBub3QgbmVlZGVkXG4gICAgICAgICAgICBjb25zdCByb3dTdHIgPSByb3cuam9pbihcIjtcIik7XG4gICAgICAgICAgICBlcnJvckRhdGEgKz0gYCR7cm93U3RyLnJlcGxhY2UoLzsrJC8sIFwiXCIpfVxcbmA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYW5kIGRvd25sb2FkIHRoZSBmaWxlXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbZXJyb3JEYXRhXSwgeyB0eXBlOiBcInRleHQvY3N2O2NoYXJzZXQ9dXRmLThcIiB9KTtcbiAgICAgICAgc2F2ZUFzKGZpbGUsIGBlcnJvci1sb2ctJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9LmNzdmApO1xuICAgIH07XG5cbiAgICBjb25zdCBzYXZlQmxhY2tsaXN0ZWRDb250YWN0c0ZpbGUgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zID0gaW1wb3J0SW5mb3JtYXRpb24/LmJsYWNrbGlzdGVkQ29sdW1ucztcbiAgICAgICAgaWYgKCFibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucyB8fCBibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpbnRsLmZvcm1hdE1lc3NhZ2UoeyBpZDogXCJleHBvcnRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiTm8gZmFpbGVkIGNvbHVtbnMgdG8gc2F2ZVwiIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBibGFja2xpc3RlZENvbnRhY3RzRGF0YSA9IFwiXCI7XG5cbiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIGZpbGUgd2l0aG91dCB0cmFpbGluZyBzZW1pY29sb25cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zWzBdKTtcbiAgICAgICAgY29uc3QgaGVhZGVyU3RyID0gaGVhZGVycy5qb2luKFwiO1wiKTtcbiAgICAgICAgYmxhY2tsaXN0ZWRDb250YWN0c0RhdGEgPSBgJHtoZWFkZXJTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDsgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIHRoZSBoZWFkZXJcblxuICAgICAgICAvLyBBZGQgZWFjaCByb3cgb2YgZmFpbGVkIGNvbHVtbnMgZGF0YVxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucykge1xuICAgICAgICAgICAgLy8gVXNlIE9iamVjdC52YWx1ZXMgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgZWFjaCBjb2x1bW5cbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IE9iamVjdC52YWx1ZXMoY29sdW1uKTsgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgdW5kZWZpbmVkL251bGxcblxuICAgICAgICAgICAgLy8gSm9pbiByb3cgdmFsdWVzIGFuZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpZiBub3QgbmVlZGVkXG4gICAgICAgICAgICBjb25zdCByb3dTdHIgPSByb3cuam9pbihcIjtcIik7XG4gICAgICAgICAgICBibGFja2xpc3RlZENvbnRhY3RzRGF0YSArPSBgJHtyb3dTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtibGFja2xpc3RlZENvbnRhY3RzRGF0YV0sIHsgdHlwZTogXCJ0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04XCIgfSk7XG4gICAgICAgIHNhdmVBcyhmaWxlLCBgYmxhY2tsaXN0ZWQtY29udGFjdC1sb2ctJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9LmNzdmApO1xuICAgIH07XG5cbiAgICBjb25zdCB7IGdldElucHV0UHJvcHMgfSA9IHVzZURyb3B6b25lKHtcbiAgICAgICAgYWNjZXB0OiB7IFwidGV4dC9jc3ZcIjogW10gfSxcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICBvbkRyb3A6IGFzeW5jIChhY2NlcHRlZEZpbGVzOiBGaWxlW10pID0+IHtcbiAgICAgICAgICAgIHNldEltcG9ydGluZ0Nzdih0cnVlKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYWNjZXB0ZWRGaWxlc1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdXBsb2FkKGZpbGUsIHNjb3BlLCB0YXJnZXRHcm91cElkID8gW3RhcmdldEdyb3VwSWRdIDogW10pO1xuICAgICAgICAgICAgICAgIGFwb2xsb0NsaWVudC5yZWZldGNoUXVlcmllcyh7IGluY2x1ZGU6IHJlZmV0Y2hRdWVyaWVzIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGlhbG9nPy5zaG93RXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuZXJyb3J9IC8+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXNzYWdlOiBkYXRhLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZGF0YS5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEltcG9ydEluZm9ybWF0aW9uKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJNZXNzYWdlID0gKFxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuZXJyb3IuZGVmYXVsdE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgd2hpbGUgb3IgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgdGhlIGVycm9yIHBlcnNpc3RzLlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGVycm9yRGlhbG9nPy5zaG93RXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmVycm9yfSAvPixcbiAgICAgICAgICAgICAgICAgICAgdXNlck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBTdHJpbmcoZSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIHsuLi5nZXRJbnB1dFByb3BzKCl9IHJlZj17ZmlsZUlucHV0UmVmfSAvPlxuICAgICAgICAgICAgPERpYWxvZyBvcGVuPXtkaWFsb2dPcGVufT5cbiAgICAgICAgICAgICAgICA8RGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRpbmdDc3YgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0aW5nLnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnRpbmcgY29udGFjdHMgZnJvbSBDU1YuLi5cIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0U3VjY2Vzc2Z1bC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IHN1Y2Nlc3NmdWxcIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRpbmdDc3YgJiYgPExvYWRpbmcgLz59XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbi5jcmVhdGVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLmNvbnRhY3RzSW1wb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24uY3JlYXRlZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLnVwZGF0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuY29udGFjdHNVcGRhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwie2Ftb3VudH0gY29udGFjdChzKSBoYXZlIGJlZW4gdXBkYXRlZC5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24uZmFpbGVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5jb250YWN0c0NvdWxkTm90QmVJbXBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwie2Ftb3VudH0gY29udGFjdChzKSBjb3VsZCBub3QgYmUgaW1wb3J0ZWQuIDxsaW5rPkRvd25sb2FkIHRoaXMgZmlsZTwvbGluaz4gdG8gZ2V0IHRoZSBmYWlsaW5nIHJvdyhzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24uZmFpbGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluazogKGNodW5rczogUmVhY3ROb2RlKSA9PiA8Q3N2RG93bmxvYWRMaW5rIG9uQ2xpY2s9e3NhdmVFcnJvckZpbGV9PntjaHVua3N9PC9Dc3ZEb3dubG9hZExpbms+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLmJsYWNrbGlzdGVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5jb250YWN0c0FyZUJsYWNrbGlzdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0cyBjb3VsZCBub3QgYmUgaW1wb3J0ZWQgYXMgdGhleSBhcmUgYmxhY2tsaXN0ZWQuICA8bGluaz5Eb3dubG9hZCB0aGlzIGZpbGU8L2xpbms+IHRvIGdldCB0aGUgYmxhY2tsaXN0ZWQgY29udGFjdChzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24uYmxhY2tsaXN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiAoY2h1bmtzOiBSZWFjdE5vZGUpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3N2RG93bmxvYWRMaW5rIG9uQ2xpY2s9e3NhdmVCbGFja2xpc3RlZENvbnRhY3RzRmlsZX0+e2NodW5rc308L0NzdkRvd25sb2FkTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGltcG9ydEluZm9ybWF0aW9uLmNyZWF0ZWQgPiAwIHx8IGltcG9ydEluZm9ybWF0aW9uLnVwZGF0ZWQgPiAwKSAmJiBzZW5kRG91YmxlT3B0SW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IG10PXsyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydCBzZXZlcml0eT1cIndhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLmRvaU5vdGljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQ29udGFjdHMgd2hvIGhhdmUgbm90IHlldCBjb25maXJtZWQgdGhlaXIgc3Vic2NyaXB0aW9uIHdpbGwgcmVjZWl2ZSBhIGRvdWJsZSBvcHQtaW4gZW1haWwgdG8gY29tcGxldGUgdGhlIHByb2Nlc3MuIFRoZXNlIGNvbnRhY3RzIHdpbGwgbm90IGFwcGVhciBpbiB0aGlzIGxpc3QgdW50aWwgdGhleSBjb25maXJtIHRoZWlyIHN1YnNjcmlwdGlvbi4gT25jZSBjb25maXJtZWQsIHRoZXkgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGFkZGVkIHRvIHRoZSBhcHByb3ByaWF0ZSB0YXJnZXQgZ3JvdXAocykuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0SW1wb3J0SW5mb3JtYXRpb24obnVsbCl9IHZhcmlhbnQ9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9rfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgPC9EaWFsb2c+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5jb25zdCBDc3ZEb3dubG9hZExpbmsgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnBhbGV0dGUuaW5mby5tYWlufTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuIl19 */"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigVerification.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigVerification.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAMzD,UAAU,gBAAgB;IACtB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,OAAO,CA0BxG"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const brevoConfigCheckQuery: import("
|
|
1
|
+
export declare const brevoConfigCheckQuery: import("graphql").DocumentNode;
|
|
2
2
|
//# sourceMappingURL=ConfigVerification.gql.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigVerification.gql.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.gql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ConfigVerification.gql.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.gql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,gCAMjC,CAAC"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.namedOperations = void 0;
|
|
7
|
-
var namedOperations = exports.namedOperations = {
|
|
1
|
+
export var namedOperations = {
|
|
8
2
|
Query: {
|
|
9
3
|
BrevoConfigCheck: 'BrevoConfigCheck'
|
|
10
4
|
}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.brevoConfigCheckQuery = void 0;
|
|
7
|
-
var _client = require("@apollo/client");
|
|
8
1
|
var _templateObject;
|
|
9
2
|
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
10
|
-
|
|
3
|
+
import { gql } from "@apollo/client";
|
|
4
|
+
export var brevoConfigCheckQuery = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query BrevoConfigCheck($scope: EmailCampaignContentScopeInput!) {\n brevoConfig(scope: $scope) {\n id\n }\n }\n"])));
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
var _client = require("@apollo/client");
|
|
8
|
-
var _admin = require("@comet/admin");
|
|
9
|
-
var _reactIntl = require("react-intl");
|
|
10
|
-
var _ConfigVerification = require("./ConfigVerification.gql");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
function ConfigVerification(_ref) {
|
|
1
|
+
import { useQuery } from "@apollo/client";
|
|
2
|
+
import { Alert, Loading, MainContent } from "@comet/admin";
|
|
3
|
+
import { FormattedMessage } from "react-intl";
|
|
4
|
+
import { brevoConfigCheckQuery } from "./ConfigVerification.gql";
|
|
5
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
6
|
+
export function ConfigVerification(_ref) {
|
|
13
7
|
var _data$brevoConfig;
|
|
14
8
|
var scope = _ref.scope,
|
|
15
9
|
children = _ref.children;
|
|
16
|
-
var _useQuery =
|
|
10
|
+
var _useQuery = useQuery(brevoConfigCheckQuery, {
|
|
17
11
|
variables: {
|
|
18
12
|
scope: scope
|
|
19
13
|
},
|
|
@@ -24,22 +18,22 @@ function ConfigVerification(_ref) {
|
|
|
24
18
|
loading = _useQuery.loading;
|
|
25
19
|
if (error) throw error;
|
|
26
20
|
if (loading) {
|
|
27
|
-
return /*#__PURE__*/(
|
|
21
|
+
return /*#__PURE__*/_jsx(Loading, {
|
|
28
22
|
behavior: "fillPageHeight"
|
|
29
23
|
});
|
|
30
24
|
}
|
|
31
25
|
if (!(data !== null && data !== void 0 && (_data$brevoConfig = data.brevoConfig) !== null && _data$brevoConfig !== void 0 && _data$brevoConfig.id)) {
|
|
32
|
-
return /*#__PURE__*/(
|
|
33
|
-
children: /*#__PURE__*/(
|
|
26
|
+
return /*#__PURE__*/_jsx(MainContent, {
|
|
27
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
34
28
|
severity: "error",
|
|
35
|
-
children: /*#__PURE__*/(
|
|
29
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, {
|
|
36
30
|
id: "cometBrevoModule.missingConfig",
|
|
37
31
|
defaultMessage: "Missing brevo config! Configure brevo via the config page."
|
|
38
32
|
})
|
|
39
33
|
})
|
|
40
34
|
});
|
|
41
35
|
}
|
|
42
|
-
return /*#__PURE__*/(
|
|
36
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
43
37
|
children: children
|
|
44
38
|
});
|
|
45
39
|
}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.namedOperations = void 0;
|
|
7
|
-
var namedOperations = exports.namedOperations = {
|
|
1
|
+
export var namedOperations = {
|
|
8
2
|
Query: {
|
|
9
3
|
EmailCampaignsGrid: 'EmailCampaignsGrid'
|
|
10
4
|
},
|