UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

186 lines (185 loc) • 17.3 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 _reactrouterdom = require("react-router-dom"); const _usePayloadAPI = /*#__PURE__*/ _interop_require_default(require("../../../hooks/usePayloadAPI")); const _StepNav = require("../../elements/StepNav"); 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 _Locale = require("../../utilities/Locale"); const _Preferences = require("../../utilities/Preferences"); const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../utilities/RenderCustomComponent")); const _Default = /*#__PURE__*/ _interop_require_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 AccountView = ()=>{ const { state: locationState } = (0, _reactrouterdom.useLocation)(); const { code: locale } = (0, _Locale.useLocale)(); const { setStepNav } = (0, _StepNav.useStepNav)(); const { user } = (0, _Auth.useAuth)(); const userRef = (0, _react.useRef)(user); const [internalState, setInternalState] = (0, _react.useState)(); const { id, slug, collection, docPermissions, getDocPermissions, getDocPreferences, preferencesKey } = (0, _DocumentInfo.useDocumentInfo)(); const { getPreference } = (0, _Preferences.usePreferences)(); const config = (0, _Config.useConfig)(); const { admin: { components: { views: { Account: CustomAccountComponent } = {} } = {} }, routes: { api }, serverURL } = (0, _Config.useConfig)(); const { t } = (0, _reacti18next.useTranslation)('authentication'); const { fields } = collection || {}; const [{ data, isLoading: isLoadingData }] = (0, _usePayloadAPI.default)(`${serverURL}${api}/${slug}/${id}`, { initialData: null, initialParams: { depth: 0, 'fallback-locale': 'null' } }); const hasSavePermission = docPermissions?.update?.permission; const dataToRender = locationState?.data || data; const apiURL = `${serverURL}${api}/${slug}/${data?.id}?locale=${locale}`; const action = `${serverURL}${api}/${slug}/${data?.id}?locale=${locale}`; const onSave = _react.default.useCallback(async (json)=>{ await getDocPermissions(); const preferences = await getDocPreferences(); const state = await (0, _buildStateFromSchema.default)({ id, config, data: json.doc, fieldSchema: collection?.fields, locale, operation: 'update', preferences, t, user }); setInternalState(state); }, [ collection, user, id, t, locale, getDocPermissions, getDocPreferences, config ]); (0, _react.useEffect)(()=>{ const nav = [ { label: t('account') } ]; setStepNav(nav); }, [ setStepNav, t ]); (0, _react.useEffect)(()=>{ const awaitInternalState = async ()=>{ const preferences = await getDocPreferences(); const state = await (0, _buildStateFromSchema.default)({ id, config, data: dataToRender, fieldSchema: fields, locale, operation: 'update', preferences, t, user: userRef.current }); if (preferencesKey) { await getPreference(preferencesKey); } setInternalState(state); }; if (dataToRender) awaitInternalState(); }, [ dataToRender, fields, id, locale, preferencesKey, getPreference, t, getDocPreferences, config ]); const isLoading = !internalState || !docPermissions || isLoadingData; const componentProps = { id: id.toString(), action, apiURL, collection, data, fieldTypes: _fieldtypes.fieldTypes, hasSavePermission, initialState: internalState, isLoading, onSave, permissions: docPermissions, updatedAt: data?.updatedAt, user }; return /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, { CustomComponent: typeof CustomAccountComponent === 'function' ? CustomAccountComponent : undefined, DefaultComponent: _Default.default, componentProps: componentProps }); }; const _default = AccountView; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0FjY291bnQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGgnXG5pbXBvcnQgdHlwZSB7IEZpZWxkcyB9IGZyb20gJy4uLy4uL2Zvcm1zL0Zvcm0vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERlZmF1bHRBY2NvdW50Vmlld1Byb3BzIH0gZnJvbSAnLi9EZWZhdWx0J1xuXG5pbXBvcnQgdXNlUGF5bG9hZEFQSSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VQYXlsb2FkQVBJJ1xuaW1wb3J0IHsgdXNlU3RlcE5hdiB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL1N0ZXBOYXYnXG5pbXBvcnQgYnVpbGRTdGF0ZUZyb21TY2hlbWEgZnJvbSAnLi4vLi4vZm9ybXMvRm9ybS9idWlsZFN0YXRlRnJvbVNjaGVtYSdcbmltcG9ydCB7IGZpZWxkVHlwZXMgfSBmcm9tICcuLi8uLi9mb3Jtcy9maWVsZC10eXBlcydcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0xvY2FsZSdcbmltcG9ydCB7IHVzZVByZWZlcmVuY2VzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1ByZWZlcmVuY2VzJ1xuaW1wb3J0IFJlbmRlckN1c3RvbUNvbXBvbmVudCBmcm9tICcuLi8uLi91dGlsaXRpZXMvUmVuZGVyQ3VzdG9tQ29tcG9uZW50J1xuaW1wb3J0IERlZmF1bHRBY2NvdW50IGZyb20gJy4vRGVmYXVsdCdcblxuY29uc3QgQWNjb3VudFZpZXc6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCB7IHN0YXRlOiBsb2NhdGlvblN0YXRlIH0gPSB1c2VMb2NhdGlvbjx7IGRhdGE6IHVua25vd24gfT4oKVxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBzZXRTdGVwTmF2IH0gPSB1c2VTdGVwTmF2KClcbiAgY29uc3QgeyB1c2VyIH0gPSB1c2VBdXRoKClcbiAgY29uc3QgdXNlclJlZiA9IHVzZVJlZih1c2VyKVxuICBjb25zdCBbaW50ZXJuYWxTdGF0ZSwgc2V0SW50ZXJuYWxTdGF0ZV0gPSB1c2VTdGF0ZTxGaWVsZHM+KClcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHNsdWcsXG4gICAgY29sbGVjdGlvbixcbiAgICBkb2NQZXJtaXNzaW9ucyxcbiAgICBnZXREb2NQZXJtaXNzaW9ucyxcbiAgICBnZXREb2NQcmVmZXJlbmNlcyxcbiAgICBwcmVmZXJlbmNlc0tleSxcbiAgfSA9IHVzZURvY3VtZW50SW5mbygpXG4gIGNvbnN0IHsgZ2V0UHJlZmVyZW5jZSB9ID0gdXNlUHJlZmVyZW5jZXMoKVxuXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3Qge1xuICAgIGFkbWluOiB7IGNvbXBvbmVudHM6IHsgdmlld3M6IHsgQWNjb3VudDogQ3VzdG9tQWNjb3VudENvbXBvbmVudCB9ID0ge30gfSA9IHt9IH0sXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYXV0aGVudGljYXRpb24nKVxuXG4gIGNvbnN0IHsgZmllbGRzIH0gPSBjb2xsZWN0aW9uIHx8IHt9XG5cbiAgY29uc3QgW3sgZGF0YSwgaXNMb2FkaW5nOiBpc0xvYWRpbmdEYXRhIH1dID0gdXNlUGF5bG9hZEFQSShgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7c2x1Z30vJHtpZH1gLCB7XG4gICAgaW5pdGlhbERhdGE6IG51bGwsXG4gICAgaW5pdGlhbFBhcmFtczoge1xuICAgICAgZGVwdGg6IDAsXG4gICAgICAnZmFsbGJhY2stbG9jYWxlJzogJ251bGwnLFxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3QgaGFzU2F2ZVBlcm1pc3Npb24gPSBkb2NQZXJtaXNzaW9ucz8udXBkYXRlPy5wZXJtaXNzaW9uXG4gIGNvbnN0IGRhdGFUb1JlbmRlciA9IGxvY2F0aW9uU3RhdGU/LmRhdGEgfHwgZGF0YVxuICBjb25zdCBhcGlVUkwgPSBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7c2x1Z30vJHtkYXRhPy5pZH0/bG9jYWxlPSR7bG9jYWxlfWBcblxuICBjb25zdCBhY3Rpb24gPSBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7c2x1Z30vJHtkYXRhPy5pZH0/bG9jYWxlPSR7bG9jYWxlfWBcblxuICBjb25zdCBvblNhdmUgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICBhc3luYyAoanNvbjogYW55KSA9PiB7XG4gICAgICBhd2FpdCBnZXREb2NQZXJtaXNzaW9ucygpXG5cbiAgICAgIGNvbnN0IHByZWZlcmVuY2VzID0gYXdhaXQgZ2V0RG9jUHJlZmVyZW5jZXMoKVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YToganNvbi5kb2MsXG4gICAgICAgIGZpZWxkU2NoZW1hOiBjb2xsZWN0aW9uPy5maWVsZHMsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgIHQsXG4gICAgICAgIHVzZXIsXG4gICAgICB9KVxuICAgICAgc2V0SW50ZXJuYWxTdGF0ZShzdGF0ZSlcbiAgICB9LFxuICAgIFtjb2xsZWN0aW9uLCB1c2VyLCBpZCwgdCwgbG9jYWxlLCBnZXREb2NQZXJtaXNzaW9ucywgZ2V0RG9jUHJlZmVyZW5jZXMsIGNvbmZpZ10sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5hdiA9IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IHQoJ2FjY291bnQnKSxcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgc2V0U3RlcE5hdihuYXYpXG4gIH0sIFtzZXRTdGVwTmF2LCB0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGF3YWl0SW50ZXJuYWxTdGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VzID0gYXdhaXQgZ2V0RG9jUHJlZmVyZW5jZXMoKVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YTogZGF0YVRvUmVuZGVyLFxuICAgICAgICBmaWVsZFNjaGVtYTogZmllbGRzLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgIHByZWZlcmVuY2VzLFxuICAgICAgICB0LFxuICAgICAgICB1c2VyOiB1c2VyUmVmLmN1cnJlbnQsXG4gICAgICB9KVxuXG4gICAgICBpZiAocHJlZmVyZW5jZXNLZXkpIHtcbiAgICAgICAgYXdhaXQgZ2V0UHJlZmVyZW5jZShwcmVmZXJlbmNlc0tleSlcbiAgICAgIH1cblxuICAgICAgc2V0SW50ZXJuYWxTdGF0ZShzdGF0ZSlcbiAgICB9XG5cbiAgICBpZiAoZGF0YVRvUmVuZGVyKSBhd2FpdEludGVybmFsU3RhdGUoKVxuICB9LCBbXG4gICAgZGF0YVRvUmVuZGVyLFxuICAgIGZpZWxkcyxcbiAgICBpZCxcbiAgICBsb2NhbGUsXG4gICAgcHJlZmVyZW5jZXNLZXksXG4gICAgZ2V0UHJlZmVyZW5jZSxcbiAgICB0LFxuICAgIGdldERvY1ByZWZlcmVuY2VzLFxuICAgIGNvbmZpZyxcbiAgXSlcblxuICBjb25zdCBpc0xvYWRpbmcgPSAhaW50ZXJuYWxTdGF0ZSB8fCAhZG9jUGVybWlzc2lvbnMgfHwgaXNMb2FkaW5nRGF0YVxuXG4gIGNvbnN0IGNvbXBvbmVudFByb3BzOiBEZWZhdWx0QWNjb3VudFZpZXdQcm9wcyA9IHtcbiAgICBpZDogaWQudG9TdHJpbmcoKSxcbiAgICBhY3Rpb24sXG4gICAgYXBpVVJMLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgZGF0YSxcbiAgICBmaWVsZFR5cGVzLFxuICAgIGhhc1NhdmVQZXJtaXNzaW9uLFxuICAgIGluaXRpYWxTdGF0ZTogaW50ZXJuYWxTdGF0ZSxcbiAgICBpc0xvYWRpbmcsXG4gICAgb25TYXZlLFxuICAgIHBlcm1pc3Npb25zOiBkb2NQZXJtaXNzaW9ucyBhcyBDb2xsZWN0aW9uUGVybWlzc2lvbixcbiAgICB1cGRhdGVkQXQ6IGRhdGE/LnVwZGF0ZWRBdCxcbiAgICB1c2VyLFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50XG4gICAgICBDdXN0b21Db21wb25lbnQ9e1xuICAgICAgICB0eXBlb2YgQ3VzdG9tQWNjb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyA/IEN1c3RvbUFjY291bnRDb21wb25lbnQgOiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIERlZmF1bHRDb21wb25lbnQ9e0RlZmF1bHRBY2NvdW50fVxuICAgICAgY29tcG9uZW50UHJvcHM9e2NvbXBvbmVudFByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWNjb3VudFZpZXdcbiJdLCJuYW1lcyI6WyJBY2NvdW50VmlldyIsInN0YXRlIiwibG9jYXRpb25TdGF0ZSIsInVzZUxvY2F0aW9uIiwiY29kZSIsImxvY2FsZSIsInVzZUxvY2FsZSIsInNldFN0ZXBOYXYiLCJ1c2VTdGVwTmF2IiwidXNlciIsInVzZUF1dGgiLCJ1c2VyUmVmIiwidXNlUmVmIiwiaW50ZXJuYWxTdGF0ZSIsInNldEludGVybmFsU3RhdGUiLCJ1c2VTdGF0ZSIsImlkIiwic2x1ZyIsImNvbGxlY3Rpb24iLCJkb2NQZXJtaXNzaW9ucyIsImdldERvY1Blcm1pc3Npb25zIiwiZ2V0RG9jUHJlZmVyZW5jZXMiLCJwcmVmZXJlbmNlc0tleSIsInVzZURvY3VtZW50SW5mbyIsImdldFByZWZlcmVuY2UiLCJ1c2VQcmVmZXJlbmNlcyIsImNvbmZpZyIsInVzZUNvbmZpZyIsImFkbWluIiwiY29tcG9uZW50cyIsInZpZXdzIiwiQWNjb3VudCIsIkN1c3RvbUFjY291bnRDb21wb25lbnQiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJmaWVsZHMiLCJkYXRhIiwiaXNMb2FkaW5nIiwiaXNMb2FkaW5nRGF0YSIsInVzZVBheWxvYWRBUEkiLCJpbml0aWFsRGF0YSIsImluaXRpYWxQYXJhbXMiLCJkZXB0aCIsImhhc1NhdmVQZXJtaXNzaW9uIiwidXBkYXRlIiwicGVybWlzc2lvbiIsImRhdGFUb1JlbmRlciIsImFwaVVSTCIsImFjdGlvbiIsIm9uU2F2ZSIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJqc29uIiwicHJlZmVyZW5jZXMiLCJidWlsZFN0YXRlRnJvbVNjaGVtYSIsImRvYyIsImZpZWxkU2NoZW1hIiwib3BlcmF0aW9uIiwidXNlRWZmZWN0IiwibmF2IiwibGFiZWwiLCJhd2FpdEludGVybmFsU3RhdGUiLCJjdXJyZW50IiwiY29tcG9uZW50UHJvcHMiLCJ0b1N0cmluZyIsImZpZWxkVHlwZXMiLCJpbml0aWFsU3RhdGUiLCJwZXJtaXNzaW9ucyIsInVwZGF0ZWRBdCIsIlJlbmRlckN1c3RvbUNvbXBvbmVudCIsIkN1c3RvbUNvbXBvbmVudCIsInVuZGVmaW5lZCIsIkRlZmF1bHRDb21wb25lbnQiLCJEZWZhdWx0QWNjb3VudCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFpS0E7OztlQUFBOzs7K0RBakttRDs4QkFDcEI7Z0NBQ0g7c0VBTUY7eUJBQ0M7NkVBQ007NEJBQ047c0JBQ0g7d0JBQ0U7OEJBQ007d0JBQ047NkJBQ0s7OEVBQ0c7Z0VBQ1A7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNCLE1BQU1BLGNBQXdCO0lBQzVCLE1BQU0sRUFBRUMsT0FBT0MsYUFBYSxFQUFFLEdBQUdDLElBQUFBLDJCQUFXO0lBQzVDLE1BQU0sRUFBRUMsTUFBTUMsTUFBTSxFQUFFLEdBQUdDLElBQUFBLGlCQUFTO0lBQ2xDLE1BQU0sRUFBRUMsVUFBVSxFQUFFLEdBQUdDLElBQUFBLG1CQUFVO0lBQ2pDLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLElBQUFBLGFBQU87SUFDeEIsTUFBTUMsVUFBVUMsSUFBQUEsYUFBTSxFQUFDSDtJQUN2QixNQUFNLENBQUNJLGVBQWVDLGlCQUFpQixHQUFHQyxJQUFBQSxlQUFRO0lBQ2xELE1BQU0sRUFDSkMsRUFBRSxFQUNGQyxJQUFJLEVBQ0pDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxpQkFBaUIsRUFDakJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNmLEdBQUdDLElBQUFBLDZCQUFlO0lBQ25CLE1BQU0sRUFBRUMsYUFBYSxFQUFFLEdBQUdDLElBQUFBLDJCQUFjO0lBRXhDLE1BQU1DLFNBQVNDLElBQUFBLGlCQUFTO0lBRXhCLE1BQU0sRUFDSkMsT0FBTyxFQUFFQyxZQUFZLEVBQUVDLE9BQU8sRUFBRUMsU0FBU0Msc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQy9FQyxRQUFRLEVBQUVDLEdBQUcsRUFBRSxFQUNmQyxTQUFTLEVBQ1YsR0FBR1IsSUFBQUEsaUJBQVM7SUFFYixNQUFNLEVBQUVTLENBQUMsRUFBRSxHQUFHQyxJQUFBQSw0QkFBYyxFQUFDO0lBRTdCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdwQixjQUFjLENBQUM7SUFFbEMsTUFBTSxDQUFDLEVBQUVxQixJQUFJLEVBQUVDLFdBQVdDLGFBQWEsRUFBRSxDQUFDLEdBQUdDLElBQUFBLHNCQUFhLEVBQUMsQ0FBQyxFQUFFUCxVQUFVLEVBQUVELElBQUksQ0FBQyxFQUFFakIsS0FBSyxDQUFDLEVBQUVELEdBQUcsQ0FBQyxFQUFFO1FBQzdGMkIsYUFBYTtRQUNiQyxlQUFlO1lBQ2JDLE9BQU87WUFDUCxtQkFBbUI7UUFDckI7SUFDRjtJQUVBLE1BQU1DLG9CQUFvQjNCLGdCQUFnQjRCLFFBQVFDO0lBQ2xELE1BQU1DLGVBQWUvQyxlQUFlcUMsUUFBUUE7SUFDNUMsTUFBTVcsU0FBUyxDQUFDLEVBQUVmLFVBQVUsRUFBRUQsSUFBSSxDQUFDLEVBQUVqQixLQUFLLENBQUMsRUFBRXNCLE1BQU12QixHQUFHLFFBQVEsRUFBRVgsT0FBTyxDQUFDO0lBRXhFLE1BQU04QyxTQUFTLENBQUMsRUFBRWhCLFVBQVUsRUFBRUQsSUFBSSxDQUFDLEVBQUVqQixLQUFLLENBQUMsRUFBRXNCLE1BQU12QixHQUFHLFFBQVEsRUFBRVgsT0FBTyxDQUFDO0lBRXhFLE1BQU0rQyxTQUFTQyxjQUFLLENBQUNDLFdBQVcsQ0FDOUIsT0FBT0M7UUFDTCxNQUFNbkM7UUFFTixNQUFNb0MsY0FBYyxNQUFNbkM7UUFFMUIsTUFBTXBCLFFBQVEsTUFBTXdELElBQUFBLDZCQUFvQixFQUFDO1lBQ3ZDekM7WUFDQVU7WUFDQWEsTUFBTWdCLEtBQUtHLEdBQUc7WUFDZEMsYUFBYXpDLFlBQVlvQjtZQUN6QmpDO1lBQ0F1RCxXQUFXO1lBQ1hKO1lBQ0FwQjtZQUNBM0I7UUFDRjtRQUNBSyxpQkFBaUJiO0lBQ25CLEdBQ0E7UUFBQ2lCO1FBQVlUO1FBQU1PO1FBQUlvQjtRQUFHL0I7UUFBUWU7UUFBbUJDO1FBQW1CSztLQUFPO0lBR2pGbUMsSUFBQUEsZ0JBQVMsRUFBQztRQUNSLE1BQU1DLE1BQU07WUFDVjtnQkFDRUMsT0FBTzNCLEVBQUU7WUFDWDtTQUNEO1FBRUQ3QixXQUFXdUQ7SUFDYixHQUFHO1FBQUN2RDtRQUFZNkI7S0FBRTtJQUVsQnlCLElBQUFBLGdCQUFTLEVBQUM7UUFDUixNQUFNRyxxQkFBcUI7WUFDekIsTUFBTVIsY0FBYyxNQUFNbkM7WUFFMUIsTUFBTXBCLFFBQVEsTUFBTXdELElBQUFBLDZCQUFvQixFQUFDO2dCQUN2Q3pDO2dCQUNBVTtnQkFDQWEsTUFBTVU7Z0JBQ05VLGFBQWFyQjtnQkFDYmpDO2dCQUNBdUQsV0FBVztnQkFDWEo7Z0JBQ0FwQjtnQkFDQTNCLE1BQU1FLFFBQVFzRCxPQUFPO1lBQ3ZCO1lBRUEsSUFBSTNDLGdCQUFnQjtnQkFDbEIsTUFBTUUsY0FBY0Y7WUFDdEI7WUFFQVIsaUJBQWlCYjtRQUNuQjtRQUVBLElBQUlnRCxjQUFjZTtJQUNwQixHQUFHO1FBQ0RmO1FBQ0FYO1FBQ0F0QjtRQUNBWDtRQUNBaUI7UUFDQUU7UUFDQVk7UUFDQWY7UUFDQUs7S0FDRDtJQUVELE1BQU1jLFlBQVksQ0FBQzNCLGlCQUFpQixDQUFDTSxrQkFBa0JzQjtJQUV2RCxNQUFNeUIsaUJBQTBDO1FBQzlDbEQsSUFBSUEsR0FBR21ELFFBQVE7UUFDZmhCO1FBQ0FEO1FBQ0FoQztRQUNBcUI7UUFDQTZCLFlBQUFBLHNCQUFVO1FBQ1Z0QjtRQUNBdUIsY0FBY3hEO1FBQ2QyQjtRQUNBWTtRQUNBa0IsYUFBYW5EO1FBQ2JvRCxXQUFXaEMsTUFBTWdDO1FBQ2pCOUQ7SUFDRjtJQUVBLHFCQUNFLDZCQUFDK0QsOEJBQXFCO1FBQ3BCQyxpQkFDRSxPQUFPekMsMkJBQTJCLGFBQWFBLHlCQUF5QjBDO1FBRTFFQyxrQkFBa0JDLGdCQUFjO1FBQ2hDVixnQkFBZ0JBOztBQUd0QjtNQUVBLFdBQWVsRSJ9