payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
228 lines (227 loc) • 23.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _qs = /*#__PURE__*/ _interop_require_default(require("qs"));
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
const _reacti18next = require("react-i18next");
const _reactrouterdom = require("react-router-dom");
const _usePayloadAPI = /*#__PURE__*/ _interop_require_default(require("../../../../hooks/usePayloadAPI"));
const _buildStateFromSchema = /*#__PURE__*/ _interop_require_default(require("../../../forms/Form/buildStateFromSchema"));
const _fieldtypes = require("../../../forms/field-types");
const _Auth = require("../../../utilities/Auth");
const _Config = require("../../../utilities/Config");
const _DocumentInfo = require("../../../utilities/DocumentInfo");
const _EditDepth = require("../../../utilities/EditDepth");
const _FormQueryParams = require("../../../utilities/FormQueryParams");
const _Locale = require("../../../utilities/Locale");
const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../../utilities/RenderCustomComponent"));
const _NotFound = /*#__PURE__*/ _interop_require_default(require("../../NotFound"));
const _Default = /*#__PURE__*/ _interop_require_default(require("./Default"));
const _formatFields = /*#__PURE__*/ _interop_require_default(require("./formatFields"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
const EditView = (props)=>{
const { collection: incomingCollection, isEditing } = props;
const { slug: collectionSlug, admin: { components: { views: { Edit } = {} } = {} } = {} } = incomingCollection;
const [fields] = (0, _react.useState)(()=>(0, _formatFields.default)(incomingCollection, isEditing));
const [collection] = (0, _react.useState)(()=>({
...incomingCollection,
fields
}));
const [redirect, setRedirect] = (0, _react.useState)();
const [formQueryParams, setFormQueryParams] = (0, _react.useState)({
depth: 0,
'fallback-locale': 'null',
locale: '',
uploadEdits: undefined
});
const formattedQueryParams = _qs.default.stringify(formQueryParams);
const { code: locale } = (0, _Locale.useLocale)();
const config = (0, _Config.useConfig)();
const { routes: { admin, api }, serverURL } = config;
const { params: { id } = {} } = (0, _reactrouterdom.useRouteMatch)();
const history = (0, _reactrouterdom.useHistory)();
const [internalState, setInternalState] = (0, _react.useState)();
const [updatedAt, setUpdatedAt] = (0, _react.useState)();
const { permissions, user } = (0, _Auth.useAuth)();
const userRef = (0, _react.useRef)(user);
const { docPermissions, getDocPermissions, getDocPreferences, getVersions } = (0, _DocumentInfo.useDocumentInfo)();
const { t } = (0, _reacti18next.useTranslation)('general');
const [{ data, isError, isLoading: isLoadingData }] = (0, _usePayloadAPI.default)(isEditing ? `${serverURL}${api}/${collectionSlug}/${id}` : '', {
initialData: null,
initialParams: {
depth: 0,
draft: 'true',
'fallback-locale': 'null'
}
});
const buildState = (0, _react.useCallback)(async (doc, overrides)=>{
const preferences = await getDocPreferences();
const state = await (0, _buildStateFromSchema.default)({
id,
config,
data: doc || {},
fieldSchema: overrides?.fieldSchema,
locale,
operation: 'update',
preferences,
t,
user: userRef.current,
...overrides
});
setInternalState(state);
}, [
getDocPreferences,
id,
locale,
t,
config
]);
const onSave = (0, _react.useCallback)(async (json)=>{
getVersions();
getDocPermissions();
setUpdatedAt(json?.doc?.updatedAt);
if (!isEditing) {
setRedirect(`${admin}/collections/${collection.slug}/${json?.doc?.id}`);
} else {
buildState(json.doc, {
fieldSchema: collection.fields
});
setFormQueryParams((params)=>({
...params,
uploadEdits: undefined
}));
}
}, [
admin,
getVersions,
isEditing,
buildState,
getDocPermissions,
collection
]);
(0, _react.useEffect)(()=>{
if (fields && (isEditing ? data : true)) {
const awaitInternalState = async ()=>{
setUpdatedAt(data?.updatedAt);
buildState(data, {
fieldSchema: fields,
operation: isEditing ? 'update' : 'create'
});
};
awaitInternalState();
}
}, [
isEditing,
data,
buildState,
fields
]);
(0, _react.useEffect)(()=>{
if (redirect) {
history.push(redirect);
}
}, [
history,
redirect
]);
(0, _react.useEffect)(()=>{
setFormQueryParams((params)=>({
...params,
locale: locale
}));
}, [
locale
]);
if (isError) {
return /*#__PURE__*/ _react.default.createElement(_NotFound.default, {
marginTop: "large"
});
}
const apiURL = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}${collection.versions.drafts ? '&draft=true' : ''}`;
const action = `${serverURL}${api}/${collectionSlug}${isEditing ? `/${id}` : ''}?${formattedQueryParams}`;
const hasSavePermission = isEditing && docPermissions?.update?.permission || !isEditing && docPermissions?.create?.permission;
const isLoading = !internalState || !docPermissions || isLoadingData;
const componentProps = {
id,
action,
apiURL,
canAccessAdmin: permissions?.canAccessAdmin,
collection,
data,
fieldTypes: _fieldtypes.fieldTypes,
hasSavePermission,
internalState,
isEditing,
isLoading,
onSave,
permissions: docPermissions,
updatedAt: updatedAt || data?.updatedAt,
user
};
return /*#__PURE__*/ _react.default.createElement(_EditDepth.EditDepthContext.Provider, {
value: 1
}, /*#__PURE__*/ _react.default.createElement(_FormQueryParams.FormQueryParams.Provider, {
value: {
formQueryParams,
setFormQueryParams
}
}, /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, {
CustomComponent: typeof Edit === 'function' ? Edit : undefined,
DefaultComponent: _Default.default,
componentProps: componentProps
})));
};
const _default = EditView;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL2NvbGxlY3Rpb25zL0VkaXQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5LCB1c2VSb3V0ZU1hdGNoIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2F1dGgnXG5pbXBvcnQgdHlwZSB7IEZpZWxkcyB9IGZyb20gJy4uLy4uLy4uL2Zvcm1zL0Zvcm0vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5UGFyYW1UeXBlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9Gb3JtUXVlcnlQYXJhbXMnXG5pbXBvcnQgdHlwZSB7IERlZmF1bHRFZGl0Vmlld1Byb3BzIH0gZnJvbSAnLi9EZWZhdWx0J1xuaW1wb3J0IHR5cGUgeyBJbmRleFByb3BzIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHVzZVBheWxvYWRBUEkgZnJvbSAnLi4vLi4vLi4vLi4vaG9va3MvdXNlUGF5bG9hZEFQSSdcbmltcG9ydCBidWlsZFN0YXRlRnJvbVNjaGVtYSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9Gb3JtL2J1aWxkU3RhdGVGcm9tU2NoZW1hJ1xuaW1wb3J0IHsgZmllbGRUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2Zvcm1zL2ZpZWxkLXR5cGVzJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9BdXRoJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL0NvbmZpZydcbmltcG9ydCB7IHVzZURvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9Eb2N1bWVudEluZm8nXG5pbXBvcnQgeyBFZGl0RGVwdGhDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL0VkaXREZXB0aCdcbmltcG9ydCB7IEZvcm1RdWVyeVBhcmFtcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9Gb3JtUXVlcnlQYXJhbXMnXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvTG9jYWxlJ1xuaW1wb3J0IFJlbmRlckN1c3RvbUNvbXBvbmVudCBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvUmVuZGVyQ3VzdG9tQ29tcG9uZW50J1xuaW1wb3J0IE5vdEZvdW5kIGZyb20gJy4uLy4uL05vdEZvdW5kJ1xuaW1wb3J0IERlZmF1bHRFZGl0IGZyb20gJy4vRGVmYXVsdCdcbmltcG9ydCBmb3JtYXRGaWVsZHMgZnJvbSAnLi9mb3JtYXRGaWVsZHMnXG5cbmNvbnN0IEVkaXRWaWV3OiBSZWFjdC5GQzxJbmRleFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbGxlY3Rpb246IGluY29taW5nQ29sbGVjdGlvbiwgaXNFZGl0aW5nIH0gPSBwcm9wc1xuXG4gIGNvbnN0IHsgc2x1ZzogY29sbGVjdGlvblNsdWcsIGFkbWluOiB7IGNvbXBvbmVudHM6IHsgdmlld3M6IHsgRWRpdCB9ID0ge30gfSA9IHt9IH0gPSB7fSB9ID1cbiAgICBpbmNvbWluZ0NvbGxlY3Rpb25cblxuICBjb25zdCBbZmllbGRzXSA9IHVzZVN0YXRlKCgpID0+IGZvcm1hdEZpZWxkcyhpbmNvbWluZ0NvbGxlY3Rpb24sIGlzRWRpdGluZykpXG4gIGNvbnN0IFtjb2xsZWN0aW9uXSA9IHVzZVN0YXRlKCgpID0+ICh7IC4uLmluY29taW5nQ29sbGVjdGlvbiwgZmllbGRzIH0pKVxuICBjb25zdCBbcmVkaXJlY3QsIHNldFJlZGlyZWN0XSA9IHVzZVN0YXRlPHN0cmluZz4oKVxuICBjb25zdCBbZm9ybVF1ZXJ5UGFyYW1zLCBzZXRGb3JtUXVlcnlQYXJhbXNdID0gdXNlU3RhdGU8UXVlcnlQYXJhbVR5cGVzPih7XG4gICAgZGVwdGg6IDAsXG4gICAgJ2ZhbGxiYWNrLWxvY2FsZSc6ICdudWxsJyxcbiAgICBsb2NhbGU6ICcnLFxuICAgIHVwbG9hZEVkaXRzOiB1bmRlZmluZWQsXG4gIH0pXG5cbiAgY29uc3QgZm9ybWF0dGVkUXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZy5zdHJpbmdpZnkoZm9ybVF1ZXJ5UGFyYW1zKVxuXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IHtcbiAgICByb3V0ZXM6IHsgYWRtaW4sIGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHsgcGFyYW1zOiB7IGlkIH0gPSB7fSB9ID0gdXNlUm91dGVNYXRjaDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpXG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KClcbiAgY29uc3QgW2ludGVybmFsU3RhdGUsIHNldEludGVybmFsU3RhdGVdID0gdXNlU3RhdGU8RmllbGRzPigpXG4gIGNvbnN0IFt1cGRhdGVkQXQsIHNldFVwZGF0ZWRBdF0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucywgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHVzZXJSZWYgPSB1c2VSZWYodXNlcilcbiAgY29uc3QgeyBkb2NQZXJtaXNzaW9ucywgZ2V0RG9jUGVybWlzc2lvbnMsIGdldERvY1ByZWZlcmVuY2VzLCBnZXRWZXJzaW9ucyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignZ2VuZXJhbCcpXG5cbiAgY29uc3QgW3sgZGF0YSwgaXNFcnJvciwgaXNMb2FkaW5nOiBpc0xvYWRpbmdEYXRhIH1dID0gdXNlUGF5bG9hZEFQSShcbiAgICBpc0VkaXRpbmcgPyBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7Y29sbGVjdGlvblNsdWd9LyR7aWR9YCA6ICcnLFxuICAgIHsgaW5pdGlhbERhdGE6IG51bGwsIGluaXRpYWxQYXJhbXM6IHsgZGVwdGg6IDAsIGRyYWZ0OiAndHJ1ZScsICdmYWxsYmFjay1sb2NhbGUnOiAnbnVsbCcgfSB9LFxuICApXG5cbiAgY29uc3QgYnVpbGRTdGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChkb2MsIG92ZXJyaWRlcz86IFBhcnRpYWw8UGFyYW1ldGVyczx0eXBlb2YgYnVpbGRTdGF0ZUZyb21TY2hlbWE+WzBdPikgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG5cbiAgICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhOiBkb2MgfHwge30sXG4gICAgICAgIGZpZWxkU2NoZW1hOiBvdmVycmlkZXM/LmZpZWxkU2NoZW1hLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgIHByZWZlcmVuY2VzLFxuICAgICAgICB0LFxuICAgICAgICB1c2VyOiB1c2VyUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgIH0pXG5cbiAgICAgIHNldEludGVybmFsU3RhdGUoc3RhdGUpXG4gICAgfSxcbiAgICBbZ2V0RG9jUHJlZmVyZW5jZXMsIGlkLCBsb2NhbGUsIHQsIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCBvblNhdmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoanNvbjogeyBkb2MgfSkgPT4ge1xuICAgICAgZ2V0VmVyc2lvbnMoKVxuICAgICAgZ2V0RG9jUGVybWlzc2lvbnMoKVxuICAgICAgc2V0VXBkYXRlZEF0KGpzb24/LmRvYz8udXBkYXRlZEF0KVxuICAgICAgaWYgKCFpc0VkaXRpbmcpIHtcbiAgICAgICAgc2V0UmVkaXJlY3QoYCR7YWRtaW59L2NvbGxlY3Rpb25zLyR7Y29sbGVjdGlvbi5zbHVnfS8ke2pzb24/LmRvYz8uaWR9YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1aWxkU3RhdGUoanNvbi5kb2MsIHtcbiAgICAgICAgICBmaWVsZFNjaGVtYTogY29sbGVjdGlvbi5maWVsZHMsXG4gICAgICAgIH0pXG4gICAgICAgIHNldEZvcm1RdWVyeVBhcmFtcygocGFyYW1zKSA9PiAoe1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICB1cGxvYWRFZGl0czogdW5kZWZpbmVkLFxuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZG1pbiwgZ2V0VmVyc2lvbnMsIGlzRWRpdGluZywgYnVpbGRTdGF0ZSwgZ2V0RG9jUGVybWlzc2lvbnMsIGNvbGxlY3Rpb25dLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZmllbGRzICYmIChpc0VkaXRpbmcgPyBkYXRhIDogdHJ1ZSkpIHtcbiAgICAgIGNvbnN0IGF3YWl0SW50ZXJuYWxTdGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgc2V0VXBkYXRlZEF0KGRhdGE/LnVwZGF0ZWRBdClcbiAgICAgICAgYnVpbGRTdGF0ZShkYXRhLCB7XG4gICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkcyxcbiAgICAgICAgICBvcGVyYXRpb246IGlzRWRpdGluZyA/ICd1cGRhdGUnIDogJ2NyZWF0ZScsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGF3YWl0SW50ZXJuYWxTdGF0ZSgpXG4gICAgfVxuICB9LCBbaXNFZGl0aW5nLCBkYXRhLCBidWlsZFN0YXRlLCBmaWVsZHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICBoaXN0b3J5LnB1c2gocmVkaXJlY3QpXG4gICAgfVxuICB9LCBbaGlzdG9yeSwgcmVkaXJlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Rm9ybVF1ZXJ5UGFyYW1zKChwYXJhbXMpID0+ICh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICB9KSlcbiAgfSwgW2xvY2FsZV0pXG5cbiAgaWYgKGlzRXJyb3IpIHtcbiAgICByZXR1cm4gPE5vdEZvdW5kIG1hcmdpblRvcD1cImxhcmdlXCIgLz5cbiAgfVxuXG4gIGNvbnN0IGFwaVVSTCA9IGAke3NlcnZlclVSTH0ke2FwaX0vJHtjb2xsZWN0aW9uU2x1Z30vJHtpZH0/bG9jYWxlPSR7bG9jYWxlfSR7XG4gICAgY29sbGVjdGlvbi52ZXJzaW9ucy5kcmFmdHMgPyAnJmRyYWZ0PXRydWUnIDogJydcbiAgfWBcblxuICBjb25zdCBhY3Rpb24gPSBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7Y29sbGVjdGlvblNsdWd9JHtcbiAgICBpc0VkaXRpbmcgPyBgLyR7aWR9YCA6ICcnXG4gIH0/JHtmb3JtYXR0ZWRRdWVyeVBhcmFtc31gXG5cbiAgY29uc3QgaGFzU2F2ZVBlcm1pc3Npb24gPVxuICAgIChpc0VkaXRpbmcgJiYgZG9jUGVybWlzc2lvbnM/LnVwZGF0ZT8ucGVybWlzc2lvbikgfHxcbiAgICAoIWlzRWRpdGluZyAmJiAoZG9jUGVybWlzc2lvbnMgYXMgQ29sbGVjdGlvblBlcm1pc3Npb24pPy5jcmVhdGU/LnBlcm1pc3Npb24pXG5cbiAgY29uc3QgaXNMb2FkaW5nID0gIWludGVybmFsU3RhdGUgfHwgIWRvY1Blcm1pc3Npb25zIHx8IGlzTG9hZGluZ0RhdGFcblxuICBjb25zdCBjb21wb25lbnRQcm9wczogRGVmYXVsdEVkaXRWaWV3UHJvcHMgPSB7XG4gICAgaWQsXG4gICAgYWN0aW9uLFxuICAgIGFwaVVSTCxcbiAgICBjYW5BY2Nlc3NBZG1pbjogcGVybWlzc2lvbnM/LmNhbkFjY2Vzc0FkbWluLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgZGF0YSxcbiAgICBmaWVsZFR5cGVzLFxuICAgIGhhc1NhdmVQZXJtaXNzaW9uLFxuICAgIGludGVybmFsU3RhdGUsXG4gICAgaXNFZGl0aW5nLFxuICAgIGlzTG9hZGluZyxcbiAgICBvblNhdmUsXG4gICAgcGVybWlzc2lvbnM6IGRvY1Blcm1pc3Npb25zIGFzIENvbGxlY3Rpb25QZXJtaXNzaW9uLFxuICAgIHVwZGF0ZWRBdDogdXBkYXRlZEF0IHx8IGRhdGE/LnVwZGF0ZWRBdCxcbiAgICB1c2VyLFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8RWRpdERlcHRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17MX0+XG4gICAgICA8Rm9ybVF1ZXJ5UGFyYW1zLlByb3ZpZGVyIHZhbHVlPXt7IGZvcm1RdWVyeVBhcmFtcywgc2V0Rm9ybVF1ZXJ5UGFyYW1zIH19PlxuICAgICAgICA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50XG4gICAgICAgICAgQ3VzdG9tQ29tcG9uZW50PXt0eXBlb2YgRWRpdCA9PT0gJ2Z1bmN0aW9uJyA/IEVkaXQgOiB1bmRlZmluZWR9XG4gICAgICAgICAgRGVmYXVsdENvbXBvbmVudD17RGVmYXVsdEVkaXR9XG4gICAgICAgICAgY29tcG9uZW50UHJvcHM9e2NvbXBvbmVudFByb3BzfVxuICAgICAgICAvPlxuICAgICAgPC9Gb3JtUXVlcnlQYXJhbXMuUHJvdmlkZXI+XG4gICAgPC9FZGl0RGVwdGhDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5leHBvcnQgZGVmYXVsdCBFZGl0Vmlld1xuIl0sIm5hbWVzIjpbIkVkaXRWaWV3IiwicHJvcHMiLCJjb2xsZWN0aW9uIiwiaW5jb21pbmdDb2xsZWN0aW9uIiwiaXNFZGl0aW5nIiwic2x1ZyIsImNvbGxlY3Rpb25TbHVnIiwiYWRtaW4iLCJjb21wb25lbnRzIiwidmlld3MiLCJFZGl0IiwiZmllbGRzIiwidXNlU3RhdGUiLCJmb3JtYXRGaWVsZHMiLCJyZWRpcmVjdCIsInNldFJlZGlyZWN0IiwiZm9ybVF1ZXJ5UGFyYW1zIiwic2V0Rm9ybVF1ZXJ5UGFyYW1zIiwiZGVwdGgiLCJsb2NhbGUiLCJ1cGxvYWRFZGl0cyIsInVuZGVmaW5lZCIsImZvcm1hdHRlZFF1ZXJ5UGFyYW1zIiwicXVlcnlTdHJpbmciLCJzdHJpbmdpZnkiLCJjb2RlIiwidXNlTG9jYWxlIiwiY29uZmlnIiwidXNlQ29uZmlnIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwicGFyYW1zIiwiaWQiLCJ1c2VSb3V0ZU1hdGNoIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJpbnRlcm5hbFN0YXRlIiwic2V0SW50ZXJuYWxTdGF0ZSIsInVwZGF0ZWRBdCIsInNldFVwZGF0ZWRBdCIsInBlcm1pc3Npb25zIiwidXNlciIsInVzZUF1dGgiLCJ1c2VyUmVmIiwidXNlUmVmIiwiZG9jUGVybWlzc2lvbnMiLCJnZXREb2NQZXJtaXNzaW9ucyIsImdldERvY1ByZWZlcmVuY2VzIiwiZ2V0VmVyc2lvbnMiLCJ1c2VEb2N1bWVudEluZm8iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJkYXRhIiwiaXNFcnJvciIsImlzTG9hZGluZyIsImlzTG9hZGluZ0RhdGEiLCJ1c2VQYXlsb2FkQVBJIiwiaW5pdGlhbERhdGEiLCJpbml0aWFsUGFyYW1zIiwiZHJhZnQiLCJidWlsZFN0YXRlIiwidXNlQ2FsbGJhY2siLCJkb2MiLCJvdmVycmlkZXMiLCJwcmVmZXJlbmNlcyIsInN0YXRlIiwiYnVpbGRTdGF0ZUZyb21TY2hlbWEiLCJmaWVsZFNjaGVtYSIsIm9wZXJhdGlvbiIsImN1cnJlbnQiLCJvblNhdmUiLCJqc29uIiwidXNlRWZmZWN0IiwiYXdhaXRJbnRlcm5hbFN0YXRlIiwicHVzaCIsIk5vdEZvdW5kIiwibWFyZ2luVG9wIiwiYXBpVVJMIiwidmVyc2lvbnMiLCJkcmFmdHMiLCJhY3Rpb24iLCJoYXNTYXZlUGVybWlzc2lvbiIsInVwZGF0ZSIsInBlcm1pc3Npb24iLCJjcmVhdGUiLCJjb21wb25lbnRQcm9wcyIsImNhbkFjY2Vzc0FkbWluIiwiZmllbGRUeXBlcyIsIkVkaXREZXB0aENvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiRm9ybVF1ZXJ5UGFyYW1zIiwiUmVuZGVyQ3VzdG9tQ29tcG9uZW50IiwiQ3VzdG9tQ29tcG9uZW50IiwiRGVmYXVsdENvbXBvbmVudCIsIkRlZmF1bHRFZGl0Il0sIm1hcHBpbmdzIjoiOzs7OytCQXNMQTs7O2VBQUE7OzsyREF0THdCOytEQUN3Qzs4QkFDakM7Z0NBQ1c7c0VBUWhCOzZFQUNPOzRCQUNOO3NCQUNIO3dCQUNFOzhCQUNNOzJCQUNDO2lDQUNEO3dCQUNOOzhFQUNRO2lFQUNiO2dFQUNHO3FFQUNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6QixNQUFNQSxXQUFpQyxDQUFDQztJQUN0QyxNQUFNLEVBQUVDLFlBQVlDLGtCQUFrQixFQUFFQyxTQUFTLEVBQUUsR0FBR0g7SUFFdEQsTUFBTSxFQUFFSSxNQUFNQyxjQUFjLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUN2RlA7SUFFRixNQUFNLENBQUNRLE9BQU8sR0FBR0MsSUFBQUEsZUFBUSxFQUFDLElBQU1DLElBQUFBLHFCQUFZLEVBQUNWLG9CQUFvQkM7SUFDakUsTUFBTSxDQUFDRixXQUFXLEdBQUdVLElBQUFBLGVBQVEsRUFBQyxJQUFPLENBQUE7WUFBRSxHQUFHVCxrQkFBa0I7WUFBRVE7UUFBTyxDQUFBO0lBQ3JFLE1BQU0sQ0FBQ0csVUFBVUMsWUFBWSxHQUFHSCxJQUFBQSxlQUFRO0lBQ3hDLE1BQU0sQ0FBQ0ksaUJBQWlCQyxtQkFBbUIsR0FBR0wsSUFBQUEsZUFBUSxFQUFrQjtRQUN0RU0sT0FBTztRQUNQLG1CQUFtQjtRQUNuQkMsUUFBUTtRQUNSQyxhQUFhQztJQUNmO0lBRUEsTUFBTUMsdUJBQXVCQyxXQUFXLENBQUNDLFNBQVMsQ0FB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