UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

194 lines (193 loc) • 19.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _getTranslation = require("../../../../utilities/getTranslation"); const _usePayloadAPI = /*#__PURE__*/ _interop_require_default(require("../../../hooks/usePayloadAPI")); const _ActionsProvider = require("../../utilities/ActionsProvider"); const _Auth = require("../../utilities/Auth"); const _Config = require("../../utilities/Config"); const _EditDepth = require("../../utilities/EditDepth"); const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../utilities/RenderCustomComponent")); const _SearchParams = require("../../utilities/SearchParams"); const _Default = require("./Default"); 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 VersionsView = (props)=>{ const { id, collection, global } = props; const { permissions, user } = (0, _Auth.useAuth)(); const [fetchURL, setFetchURL] = (0, _react.useState)(''); const { setViewActions } = (0, _ActionsProvider.useActions)(); const { routes: { admin, api }, serverURL } = (0, _Config.useConfig)(); const { i18n } = (0, _reacti18next.useTranslation)('version'); const { limit, page, sort } = (0, _SearchParams.useSearchParams)(); let CustomVersionsView = null; let docURL; let entityLabel; let slug; let editURL; if (collection) { ({ slug } = collection); docURL = `${serverURL}${api}/${slug}/${id}`; entityLabel = (0, _getTranslation.getTranslation)(collection.labels.singular, i18n); editURL = `${admin}/collections/${collection.slug}/${id}`; // The component definition could come from multiple places in the config // we need to cascade into the proper component from the top-down // 1. "components.Edit" // 2. "components.Edit.Versions" // 3. "components.Edit.Versions.Component" const EditCollection = collection?.admin?.components?.views?.Edit; if (typeof EditCollection === 'function') { CustomVersionsView = EditCollection; } else if (typeof EditCollection === 'object' && typeof EditCollection.Versions === 'function') { CustomVersionsView = EditCollection.Versions; } else if (typeof EditCollection?.Versions === 'object' && 'Component' in EditCollection.Versions && typeof EditCollection.Versions.Component === 'function') { CustomVersionsView = EditCollection.Versions.Component; } } if (global) { ({ slug } = global); docURL = `${serverURL}${api}/globals/${slug}`; entityLabel = (0, _getTranslation.getTranslation)(global.label, i18n); editURL = `${admin}/globals/${global.slug}`; // See note above about cascading component definitions const EditGlobal = global?.admin?.components?.views?.Edit; if (typeof EditGlobal === 'function') { CustomVersionsView = EditGlobal; } else if (typeof EditGlobal === 'object' && typeof EditGlobal.Versions === 'function') { CustomVersionsView = EditGlobal.Versions; } else if (typeof EditGlobal?.Versions === 'object' && 'Component' in EditGlobal.Versions && typeof EditGlobal.Versions.Component === 'function') { CustomVersionsView = EditGlobal.Versions.Component; } } const [{ data, isLoading }] = (0, _usePayloadAPI.default)(docURL, { initialParams: { draft: 'true' } }); const [{ data: versionsData, isLoading: isLoadingVersions }, { setParams }] = (0, _usePayloadAPI.default)(fetchURL); (0, _react.useEffect)(()=>{ const params = { depth: 1, limit, page: undefined, sort: undefined, where: {} }; if (page) params.page = page; if (sort) params.sort = sort; let fetchURLToSet; if (collection) { fetchURLToSet = `${serverURL}${api}/${collection.slug}/versions`; params.where = { parent: { equals: id } }; } if (global) { fetchURLToSet = `${serverURL}${api}/globals/${global.slug}/versions`; } // Performance enhancement // Setting the Fetch URL this way // prevents a double-fetch setFetchURL(fetchURLToSet); setParams(params); }, [ setParams, page, sort, limit, serverURL, api, id, global, collection ]); (0, _react.useEffect)(()=>{ const editConfig = (collection || global)?.admin?.components?.views?.Edit; const versionsActions = editConfig && 'Versions' in editConfig && 'actions' in editConfig.Versions ? editConfig.Versions.actions : []; setViewActions(versionsActions); return ()=>{ setViewActions([]); }; }, [ collection, global, setViewActions ]); return /*#__PURE__*/ _react.default.createElement(_EditDepth.EditDepthContext.Provider, { value: 1 }, /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, { CustomComponent: CustomVersionsView, DefaultComponent: _Default.DefaultVersionsView, componentProps: { id, canAccessAdmin: permissions?.canAccessAdmin, collection, data, editURL, entityLabel, fetchURL, global, isLoading, isLoadingVersions, user, versionsData } })); }; const _default = VersionsView; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL1ZlcnNpb25zL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgdHlwZSB7IEluZGV4UHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9nZXRUcmFuc2xhdGlvbidcbmltcG9ydCB1c2VQYXlsb2FkQVBJIGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVBheWxvYWRBUEknXG5pbXBvcnQgeyB1c2VBY3Rpb25zIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FjdGlvbnNQcm92aWRlcidcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgeyBFZGl0RGVwdGhDb250ZXh0IH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0VkaXREZXB0aCdcbmltcG9ydCBSZW5kZXJDdXN0b21Db21wb25lbnQgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1JlbmRlckN1c3RvbUNvbXBvbmVudCdcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9TZWFyY2hQYXJhbXMnXG5pbXBvcnQgeyBEZWZhdWx0VmVyc2lvbnNWaWV3IH0gZnJvbSAnLi9EZWZhdWx0J1xuXG5jb25zdCBWZXJzaW9uc1ZpZXc6IFJlYWN0LkZDPEluZGV4UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgaWQsIGNvbGxlY3Rpb24sIGdsb2JhbCB9ID0gcHJvcHNcblxuICBjb25zdCB7IHBlcm1pc3Npb25zLCB1c2VyIH0gPSB1c2VBdXRoKClcblxuICBjb25zdCBbZmV0Y2hVUkwsIHNldEZldGNoVVJMXSA9IHVzZVN0YXRlKCcnKVxuXG4gIGNvbnN0IHsgc2V0Vmlld0FjdGlvbnMgfSA9IHVzZUFjdGlvbnMoKVxuXG4gIGNvbnN0IHtcbiAgICByb3V0ZXM6IHsgYWRtaW4sIGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigndmVyc2lvbicpXG5cbiAgY29uc3QgeyBsaW1pdCwgcGFnZSwgc29ydCB9ID0gdXNlU2VhcmNoUGFyYW1zKClcblxuICBsZXQgQ3VzdG9tVmVyc2lvbnNWaWV3OiBSZWFjdC5Db21wb25lbnRUeXBlIHwgbnVsbCA9IG51bGxcbiAgbGV0IGRvY1VSTDogc3RyaW5nXG4gIGxldCBlbnRpdHlMYWJlbDogc3RyaW5nXG4gIGxldCBzbHVnOiBzdHJpbmdcbiAgbGV0IGVkaXRVUkw6IHN0cmluZ1xuXG4gIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgOyh7IHNsdWcgfSA9IGNvbGxlY3Rpb24pXG4gICAgZG9jVVJMID0gYCR7c2VydmVyVVJMfSR7YXBpfS8ke3NsdWd9LyR7aWR9YFxuICAgIGVudGl0eUxhYmVsID0gZ2V0VHJhbnNsYXRpb24oY29sbGVjdGlvbi5sYWJlbHMuc2luZ3VsYXIsIGkxOG4pXG4gICAgZWRpdFVSTCA9IGAke2FkbWlufS9jb2xsZWN0aW9ucy8ke2NvbGxlY3Rpb24uc2x1Z30vJHtpZH1gXG5cbiAgICAvLyBUaGUgY29tcG9uZW50IGRlZmluaXRpb24gY291bGQgY29tZSBmcm9tIG11bHRpcGxlIHBsYWNlcyBpbiB0aGUgY29uZmlnXG4gICAgLy8gd2UgbmVlZCB0byBjYXNjYWRlIGludG8gdGhlIHByb3BlciBjb21wb25lbnQgZnJvbSB0aGUgdG9wLWRvd25cbiAgICAvLyAxLiBcImNvbXBvbmVudHMuRWRpdFwiXG4gICAgLy8gMi4gXCJjb21wb25lbnRzLkVkaXQuVmVyc2lvbnNcIlxuICAgIC8vIDMuIFwiY29tcG9uZW50cy5FZGl0LlZlcnNpb25zLkNvbXBvbmVudFwiXG4gICAgY29uc3QgRWRpdENvbGxlY3Rpb24gPSBjb2xsZWN0aW9uPy5hZG1pbj8uY29tcG9uZW50cz8udmlld3M/LkVkaXRcblxuICAgIGlmICh0eXBlb2YgRWRpdENvbGxlY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIEN1c3RvbVZlcnNpb25zVmlldyA9IEVkaXRDb2xsZWN0aW9uXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiBFZGl0Q29sbGVjdGlvbiA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBFZGl0Q29sbGVjdGlvbi5WZXJzaW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgQ3VzdG9tVmVyc2lvbnNWaWV3ID0gRWRpdENvbGxlY3Rpb24uVmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdHlwZW9mIEVkaXRDb2xsZWN0aW9uPy5WZXJzaW9ucyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICdDb21wb25lbnQnIGluIEVkaXRDb2xsZWN0aW9uLlZlcnNpb25zICYmXG4gICAgICB0eXBlb2YgRWRpdENvbGxlY3Rpb24uVmVyc2lvbnMuQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBDdXN0b21WZXJzaW9uc1ZpZXcgPSBFZGl0Q29sbGVjdGlvbi5WZXJzaW9ucy5Db21wb25lbnRcbiAgICB9XG4gIH1cblxuICBpZiAoZ2xvYmFsKSB7XG4gICAgOyh7IHNsdWcgfSA9IGdsb2JhbClcbiAgICBkb2NVUkwgPSBgJHtzZXJ2ZXJVUkx9JHthcGl9L2dsb2JhbHMvJHtzbHVnfWBcbiAgICBlbnRpdHlMYWJlbCA9IGdldFRyYW5zbGF0aW9uKGdsb2JhbC5sYWJlbCwgaTE4bilcbiAgICBlZGl0VVJMID0gYCR7YWRtaW59L2dsb2JhbHMvJHtnbG9iYWwuc2x1Z31gXG5cbiAgICAvLyBTZWUgbm90ZSBhYm92ZSBhYm91dCBjYXNjYWRpbmcgY29tcG9uZW50IGRlZmluaXRpb25zXG4gICAgY29uc3QgRWRpdEdsb2JhbCA9IGdsb2JhbD8uYWRtaW4/LmNvbXBvbmVudHM/LnZpZXdzPy5FZGl0XG5cbiAgICBpZiAodHlwZW9mIEVkaXRHbG9iYWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIEN1c3RvbVZlcnNpb25zVmlldyA9IEVkaXRHbG9iYWxcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBFZGl0R2xvYmFsID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRWRpdEdsb2JhbC5WZXJzaW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgQ3VzdG9tVmVyc2lvbnNWaWV3ID0gRWRpdEdsb2JhbC5WZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlb2YgRWRpdEdsb2JhbD8uVmVyc2lvbnMgPT09ICdvYmplY3QnICYmXG4gICAgICAnQ29tcG9uZW50JyBpbiBFZGl0R2xvYmFsLlZlcnNpb25zICYmXG4gICAgICB0eXBlb2YgRWRpdEdsb2JhbC5WZXJzaW9ucy5Db21wb25lbnQgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIEN1c3RvbVZlcnNpb25zVmlldyA9IEVkaXRHbG9iYWwuVmVyc2lvbnMuQ29tcG9uZW50XG4gICAgfVxuICB9XG5cbiAgY29uc3QgW3sgZGF0YSwgaXNMb2FkaW5nIH1dID0gdXNlUGF5bG9hZEFQSShkb2NVUkwsIHsgaW5pdGlhbFBhcmFtczogeyBkcmFmdDogJ3RydWUnIH0gfSlcbiAgY29uc3QgW3sgZGF0YTogdmVyc2lvbnNEYXRhLCBpc0xvYWRpbmc6IGlzTG9hZGluZ1ZlcnNpb25zIH0sIHsgc2V0UGFyYW1zIH1dID1cbiAgICB1c2VQYXlsb2FkQVBJKGZldGNoVVJMKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZGVwdGg6IDEsXG4gICAgICBsaW1pdCxcbiAgICAgIHBhZ2U6IHVuZGVmaW5lZCxcbiAgICAgIHNvcnQ6IHVuZGVmaW5lZCxcbiAgICAgIHdoZXJlOiB7fSxcbiAgICB9XG5cbiAgICBpZiAocGFnZSkgcGFyYW1zLnBhZ2UgPSBwYWdlXG4gICAgaWYgKHNvcnQpIHBhcmFtcy5zb3J0ID0gc29ydFxuXG4gICAgbGV0IGZldGNoVVJMVG9TZXQ6IHN0cmluZ1xuXG4gICAgaWYgKGNvbGxlY3Rpb24pIHtcbiAgICAgIGZldGNoVVJMVG9TZXQgPSBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7Y29sbGVjdGlvbi5zbHVnfS92ZXJzaW9uc2BcbiAgICAgIHBhcmFtcy53aGVyZSA9IHtcbiAgICAgICAgcGFyZW50OiB7XG4gICAgICAgICAgZXF1YWxzOiBpZCxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICBmZXRjaFVSTFRvU2V0ID0gYCR7c2VydmVyVVJMfSR7YXBpfS9nbG9iYWxzLyR7Z2xvYmFsLnNsdWd9L3ZlcnNpb25zYFxuICAgIH1cblxuICAgIC8vIFBlcmZvcm1hbmNlIGVuaGFuY2VtZW50XG4gICAgLy8gU2V0dGluZyB0aGUgRmV0Y2ggVVJMIHRoaXMgd2F5XG4gICAgLy8gcHJldmVudHMgYSBkb3VibGUtZmV0Y2hcblxuICAgIHNldEZldGNoVVJMKGZldGNoVVJMVG9TZXQpXG5cbiAgICBzZXRQYXJhbXMocGFyYW1zKVxuICB9LCBbc2V0UGFyYW1zLCBwYWdlLCBzb3J0LCBsaW1pdCwgc2VydmVyVVJMLCBhcGksIGlkLCBnbG9iYWwsIGNvbGxlY3Rpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWRpdENvbmZpZyA9IChjb2xsZWN0aW9uIHx8IGdsb2JhbCk/LmFkbWluPy5jb21wb25lbnRzPy52aWV3cz8uRWRpdFxuICAgIGNvbnN0IHZlcnNpb25zQWN0aW9ucyA9XG4gICAgICBlZGl0Q29uZmlnICYmICdWZXJzaW9ucycgaW4gZWRpdENvbmZpZyAmJiAnYWN0aW9ucycgaW4gZWRpdENvbmZpZy5WZXJzaW9uc1xuICAgICAgICA/IGVkaXRDb25maWcuVmVyc2lvbnMuYWN0aW9uc1xuICAgICAgICA6IFtdXG5cbiAgICBzZXRWaWV3QWN0aW9ucyh2ZXJzaW9uc0FjdGlvbnMpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2V0Vmlld0FjdGlvbnMoW10pXG4gICAgfVxuICB9LCBbY29sbGVjdGlvbiwgZ2xvYmFsLCBzZXRWaWV3QWN0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8RWRpdERlcHRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17MX0+XG4gICAgICA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50XG4gICAgICAgIEN1c3RvbUNvbXBvbmVudD17Q3VzdG9tVmVyc2lvbnNWaWV3fVxuICAgICAgICBEZWZhdWx0Q29tcG9uZW50PXtEZWZhdWx0VmVyc2lvbnNWaWV3fVxuICAgICAgICBjb21wb25lbnRQcm9wcz17e1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGNhbkFjY2Vzc0FkbWluOiBwZXJtaXNzaW9ucz8uY2FuQWNjZXNzQWRtaW4sXG4gICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGVkaXRVUkwsXG4gICAgICAgICAgZW50aXR5TGFiZWwsXG4gICAgICAgICAgZmV0Y2hVUkwsXG4gICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgIGlzTG9hZGluZyxcbiAgICAgICAgICBpc0xvYWRpbmdWZXJzaW9ucyxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICAgIHZlcnNpb25zRGF0YSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgPC9FZGl0RGVwdGhDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5leHBvcnQgZGVmYXVsdCBWZXJzaW9uc1ZpZXdcbiJdLCJuYW1lcyI6WyJWZXJzaW9uc1ZpZXciLCJwcm9wcyIsImlkIiwiY29sbGVjdGlvbiIsImdsb2JhbCIsInBlcm1pc3Npb25zIiwidXNlciIsInVzZUF1dGgiLCJmZXRjaFVSTCIsInNldEZldGNoVVJMIiwidXNlU3RhdGUiLCJzZXRWaWV3QWN0aW9ucyIsInVzZUFjdGlvbnMiLCJyb3V0ZXMiLCJhZG1pbiIsImFwaSIsInNlcnZlclVSTCIsInVzZUNvbmZpZyIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImxpbWl0IiwicGFnZSIsInNvcnQiLCJ1c2VTZWFyY2hQYXJhbXMiLCJDdXN0b21WZXJzaW9uc1ZpZXciLCJkb2NVUkwiLCJlbnRpdHlMYWJlbCIsInNsdWciLCJlZGl0VVJMIiwiZ2V0VHJhbnNsYXRpb24iLCJsYWJlbHMiLCJzaW5ndWxhciIsIkVkaXRDb2xsZWN0aW9uIiwiY29tcG9uZW50cyIsInZpZXdzIiwiRWRpdCIsIlZlcnNpb25zIiwiQ29tcG9uZW50IiwibGFiZWwiLCJFZGl0R2xvYmFsIiwiZGF0YSIsImlzTG9hZGluZyIsInVzZVBheWxvYWRBUEkiLCJpbml0aWFsUGFyYW1zIiwiZHJhZnQiLCJ2ZXJzaW9uc0RhdGEiLCJpc0xvYWRpbmdWZXJzaW9ucyIsInNldFBhcmFtcyIsInVzZUVmZmVjdCIsInBhcmFtcyIsImRlcHRoIiwidW5kZWZpbmVkIiwid2hlcmUiLCJmZXRjaFVSTFRvU2V0IiwicGFyZW50IiwiZXF1YWxzIiwiZWRpdENvbmZpZyIsInZlcnNpb25zQWN0aW9ucyIsImFjdGlvbnMiLCJFZGl0RGVwdGhDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIlJlbmRlckN1c3RvbUNvbXBvbmVudCIsIkN1c3RvbUNvbXBvbmVudCIsIkRlZmF1bHRDb21wb25lbnQiLCJEZWZhdWx0VmVyc2lvbnNWaWV3IiwiY29tcG9uZW50UHJvcHMiLCJjYW5BY2Nlc3NBZG1pbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1S0E7OztlQUFBOzs7K0RBdksyQzs4QkFDWjtnQ0FJQTtzRUFDTDtpQ0FDQztzQkFDSDt3QkFDRTsyQkFDTzs4RUFDQzs4QkFDRjt5QkFDSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFcEMsTUFBTUEsZUFBcUMsQ0FBQ0M7SUFDMUMsTUFBTSxFQUFFQyxFQUFFLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFLEdBQUdIO0lBRW5DLE1BQU0sRUFBRUksV0FBVyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsYUFBTztJQUVyQyxNQUFNLENBQUNDLFVBQVVDLFlBQVksR0FBR0MsSUFBQUEsZUFBUSxFQUFDO0lBRXpDLE1BQU0sRUFBRUMsY0FBYyxFQUFFLEdBQUdDLElBQUFBLDJCQUFVO0lBRXJDLE1BQU0sRUFDSkMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLEdBQUcsRUFBRSxFQUN0QkMsU0FBUyxFQUNWLEdBQUdDLElBQUFBLGlCQUFTO0lBRWIsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsNEJBQWMsRUFBQztJQUVoQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsNkJBQWU7SUFFN0MsSUFBSUMscUJBQWlEO0lBQ3JELElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUNKLElBQUlDO0lBRUosSUFBSXpCLFlBQVk7UUFDWixDQUFBLEVBQUV3QixJQUFJLEVBQUUsR0FBR3hCLFVBQVM7UUFDdEJzQixTQUFTLENBQUMsRUFBRVQsVUFBVSxFQUFFRCxJQUFJLENBQUMsRUFBRVksS0FBSyxDQUFDLEVBQUV6QixHQUFHLENBQUM7UUFDM0N3QixjQUFjRyxJQUFBQSw4QkFBYyxFQUFDMUIsV0FBVzJCLE1BQU0sQ0FBQ0MsUUFBUSxFQUFFYjtRQUN6RFUsVUFBVSxDQUFDLEVBQUVkLE1BQU0sYUFBYSxFQUFFWCxXQUFXd0IsSUFBSSxDQUFDLENBQUMsRUFBRXpCLEdBQUcsQ0FBQztRQUV6RCx5RUFBeUU7UUFDekUsaUVBQWlFO1FBQ2pFLHVCQUF1QjtRQUN2QixnQ0FBZ0M7UUFDaEMsMENBQTBDO1FBQzFDLE1BQU04QixpQkFBaUI3QixZQUFZVyxPQUFPbUIsWUFBWUMsT0FBT0M7UUFFN0QsSUFBSSxPQUFPSCxtQkFBbUIsWUFBWTtZQUN4Q1IscUJBQXFCUTtRQUN2QixPQUFPLElBQ0wsT0FBT0EsbUJBQW1CLFlBQzFCLE9BQU9BLGVBQWVJLFFBQVEsS0FBSyxZQUNuQztZQUNBWixxQkFBcUJRLGVBQWVJLFFBQVE7UUFDOUMsT0FBTyxJQUNMLE9BQU9KLGdCQUFnQkksYUFBYSxZQUNwQyxlQUFlSixlQUFlSSxRQUFRLElBQ3RDLE9BQU9KLGVBQWVJLFFBQVEsQ0FBQ0MsU0FBUyxLQUFLLFlBQzdDO1lBQ0FiLHFCQUFxQlEsZUFBZUksUUFBUSxDQUFDQyxTQUFTO1FBQ3hEO0lBQ0Y7SUFFQSxJQUFJakMsUUFBUTtRQUNSLENBQUEsRUFBRXVCLElBQUksRUFBRSxHQUFHdkIsTUFBSztRQUNsQnFCLFNBQVMsQ0FBQyxFQUFFVCxVQUFVLEVBQUVELElBQUksU0FBUyxFQUFFWSxLQUFLLENBQUM7UUFDN0NELGNBQWNHLElBQUFBLDhCQUFjLEVBQUN6QixPQUFPa0MsS0FBSyxFQUFFcEI7UUFDM0NVLFVBQVUsQ0FBQyxFQUFFZCxNQUFNLFNBQVMsRUFBRVYsT0FBT3VCLElBQUksQ0FBQyxDQUFDO1FBRTNDLHVEQUF1RDtRQUN2RCxNQUFNWSxhQUFhbkMsUUFBUVUsT0FBT21CLFlBQVlDLE9BQU9DO1FBRXJELElBQUksT0FBT0ksZUFBZSxZQUFZO1lBQ3BDZixxQkFBcUJlO1FBQ3ZCLE9BQU8sSUFBSSxPQUFPQSxlQUFlLFlBQVksT0FBT0EsV0FBV0gsUUFBUSxLQUFLLFlBQVk7WUFDdEZaLHFCQUFxQmUsV0FBV0gsUUFBUTtRQUMxQyxPQUFPLElBQ0wsT0FBT0csWUFBWUgsYUFBYSxZQUNoQyxlQUFlRyxXQUFXSCxRQUFRLElBQ2xDLE9BQU9HLFdBQVdILFFBQVEsQ0FBQ0MsU0FBUyxLQUFLLFlBQ3pDO1lBQ0FiLHFCQUFxQmUsV0FBV0gsUUFBUSxDQUFDQyxTQUFTO1FBQ3BEO0lBQ0Y7SUFFQSxNQUFNLENBQUMsRUFBRUcsSUFBSSxFQUFFQyxTQUFTLEVBQUUsQ0FBQyxHQUFHQyxJQUFBQSxzQkFBYSxFQUFDakIsUUFBUTtRQUFFa0IsZUFBZTtZQUFFQyxPQUFPO1FBQU87SUFBRTtJQUN2RixNQUFNLENBQUMsRUFBRUosTUFBTUssWUFBWSxFQUFFSixXQUFXSyxpQkFBaUIsRUFBRSxFQUFFLEVBQUVDLFNBQVMsRUFBRSxDQUFDLEdBQ3pFTCxJQUFBQSxzQkFBYSxFQUFDbEM7SUFFaEJ3QyxJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsTUFBTUMsU0FBUztZQUNiQyxPQUFPO1lBQ1A5QjtZQUNBQyxNQUFNOEI7WUFDTjdCLE1BQU02QjtZQUNOQyxPQUFPLENBQUM7UUFDVjtRQUVBLElBQUkvQixNQUFNNEIsT0FBTzVCLElBQUksR0FBR0E7UUFDeEIsSUFBSUMsTUFBTTJCLE9BQU8zQixJQUFJLEdBQUdBO1FBRXhCLElBQUkrQjtRQUVKLElBQUlsRCxZQUFZO1lBQ2RrRCxnQkFBZ0IsQ0FBQyxFQUFFckMsVUFBVSxFQUFFRCxJQUFJLENBQUMsRUFBRVosV0FBV3dCLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEVzQixPQUFPRyxLQUFLLEdBQUc7Z0JBQ2JFLFFBQVE7b0JBQ05DLFFBQVFyRDtnQkFDVjtZQUNGO1FBQ0Y7UUFFQSxJQUFJRSxRQUFRO1lBQ1ZpRCxnQkFBZ0IsQ0FBQyxFQUFFckMsVUFBVSxFQUFFRCxJQUFJLFNBQVMsRUFBRVgsT0FBT3VCLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEU7UUFFQSwwQkFBMEI7UUFDMUIsaUNBQWlDO1FBQ2pDLDBCQUEwQjtRQUUxQmxCLFlBQVk0QztRQUVaTixVQUFVRTtJQUNaLEdBQUc7UUFBQ0Y7UUFBVzFCO1FBQU1DO1FBQU1GO1FBQU9KO1FBQVdEO1FBQUtiO1FBQUlFO1FBQVFEO0tBQVc7SUFFekU2QyxJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsTUFBTVEsYUFBY3JELENBQUFBLGNBQWNDLE1BQUssR0FBSVUsT0FBT21CLFlBQVlDLE9BQU9DO1FBQ3JFLE1BQU1zQixrQkFDSkQsY0FBYyxjQUFjQSxjQUFjLGFBQWFBLFdBQVdwQixRQUFRLEdBQ3RFb0IsV0FBV3BCLFFBQVEsQ0FBQ3NCLE9BQU8sR0FDM0IsRUFBRTtRQUVSL0MsZUFBZThDO1FBRWYsT0FBTztZQUNMOUMsZUFBZSxFQUFFO1FBQ25CO0lBQ0YsR0FBRztRQUFDUjtRQUFZQztRQUFRTztLQUFlO0lBRXZDLHFCQUNFLDZCQUFDZ0QsMkJBQWdCLENBQUNDLFFBQVE7UUFBQ0MsT0FBTztxQkFDaEMsNkJBQUNDLDhCQUFxQjtRQUNwQkMsaUJBQWlCdkM7UUFDakJ3QyxrQkFBa0JDLDRCQUFtQjtRQUNyQ0MsZ0JBQWdCO1lBQ2RoRTtZQUNBaUUsZ0JBQWdCOUQsYUFBYThEO1lBQzdCaEU7WUFDQXFDO1lBQ0FaO1lBQ0FGO1lBQ0FsQjtZQUNBSjtZQUNBcUM7WUFDQUs7WUFDQXhDO1lBQ0F1QztRQUNGOztBQUlSO01BQ0EsV0FBZTdDIn0=