UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

203 lines (202 loc) • 19.7 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 _useDebounce = /*#__PURE__*/ _interop_require_default(require("../../../../hooks/useDebounce")); const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../../utilities/RenderCustomComponent")); const _Button = /*#__PURE__*/ _interop_require_default(require("../../Button")); const _ReactSelect = /*#__PURE__*/ _interop_require_default(require("../../ReactSelect")); const _Date = /*#__PURE__*/ _interop_require_default(require("./Date")); const _Number = /*#__PURE__*/ _interop_require_default(require("./Number")); const _Relationship = /*#__PURE__*/ _interop_require_default(require("./Relationship")); const _Select = require("./Select"); const _Text = /*#__PURE__*/ _interop_require_default(require("./Text")); require("./index.scss"); 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 valueFields = { Date: _Date.default, Number: _Number.default, Relationship: _Relationship.default, Select: _Select.Select, Text: _Text.default }; const baseClass = 'condition'; const Condition = (props)=>{ const { andIndex, dispatch, fields, orIndex, value } = props; const fieldName = Object.keys(value)[0]; const [activeField, setActiveField] = (0, _react.useState)(()=>fields.find((field)=>fieldName === field.value)); const operatorAndValue = value?.[fieldName] ? Object.entries(value[fieldName])[0] : undefined; const queryValue = operatorAndValue?.[1]; const operatorValue = operatorAndValue?.[0]; const [internalValue, setInternalValue] = (0, _react.useState)(queryValue); const [internalOperatorField, setInternalOperatorField] = (0, _react.useState)(operatorValue); const debouncedValue = (0, _useDebounce.default)(internalValue, 300); (0, _react.useEffect)(()=>{ const newActiveField = fields.find(({ value: name })=>name === fieldName); if (newActiveField && newActiveField !== activeField) { setActiveField(newActiveField); setInternalOperatorField(null); setInternalValue(''); } }, [ fieldName, fields, activeField ]); (0, _react.useEffect)(()=>{ dispatch({ andIndex, orIndex, type: 'update', value: debouncedValue || '' }); }, [ debouncedValue, dispatch, orIndex, andIndex ]); const booleanSelect = [ 'exists' ].includes(operatorValue) || activeField.props.type === 'checkbox'; const ValueComponent = booleanSelect ? _Select.Select : valueFields[activeField?.component] || valueFields.Text; let valueOptions; if (booleanSelect) { valueOptions = [ 'true', 'false' ]; } else if (activeField?.props && 'options' in activeField.props) { valueOptions = activeField.props.options; } return /*#__PURE__*/ _react.default.createElement("div", { className: baseClass }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__wrap` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__inputs` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__field` }, /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, { isClearable: false, onChange: (field)=>{ dispatch({ andIndex: andIndex, field: field?.value, orIndex: orIndex, type: 'update' }); }, options: fields, value: fields.find((field)=>fieldName === field.value) })), /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__operator` }, /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, { disabled: !fieldName, isClearable: false, onChange: (operator)=>{ dispatch({ andIndex, operator: operator.value, orIndex, type: 'update' }); setInternalOperatorField(operator.value); }, options: activeField.operators, value: activeField.operators.find((operator)=>internalOperatorField === operator.value) || null })), /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__value` }, /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, { CustomComponent: activeField?.props?.admin?.components?.Filter, DefaultComponent: ValueComponent, componentProps: { ...activeField?.props, disabled: !operatorValue, onChange: setInternalValue, operator: operatorValue, options: valueOptions, value: internalValue } }))), /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__actions` }, /*#__PURE__*/ _react.default.createElement(_Button.default, { buttonStyle: "icon-label", className: `${baseClass}__actions-remove`, icon: "x", iconStyle: "with-border", onClick: ()=>dispatch({ andIndex, orIndex, type: 'remove' }), round: true }), /*#__PURE__*/ _react.default.createElement(_Button.default, { buttonStyle: "icon-label", className: `${baseClass}__actions-add`, icon: "plus", iconStyle: "with-border", onClick: ()=>dispatch({ andIndex: andIndex + 1, field: fields[0].value, orIndex, relation: 'and', type: 'add' }), round: true })))); }; const _default = Condition; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1doZXJlQnVpbGRlci9Db25kaXRpb24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgRmllbGRDb25kaXRpb24gfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgUmVuZGVyQ3VzdG9tQ29tcG9uZW50IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9SZW5kZXJDdXN0b21Db21wb25lbnQnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uLy4uL0J1dHRvbidcbmltcG9ydCBSZWFjdFNlbGVjdCBmcm9tICcuLi8uLi9SZWFjdFNlbGVjdCdcbmltcG9ydCBEYXRlIGZyb20gJy4vRGF0ZSdcbmltcG9ydCBOdW1iZXIgZnJvbSAnLi9OdW1iZXInXG5pbXBvcnQgUmVsYXRpb25zaGlwIGZyb20gJy4vUmVsYXRpb25zaGlwJ1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi9TZWxlY3QnXG5pbXBvcnQgVGV4dCBmcm9tICcuL1RleHQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgdmFsdWVGaWVsZHMgPSB7XG4gIERhdGUsXG4gIE51bWJlcixcbiAgUmVsYXRpb25zaGlwLFxuICBTZWxlY3QsXG4gIFRleHQsXG59XG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdjb25kaXRpb24nXG5cbmNvbnN0IENvbmRpdGlvbjogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgYW5kSW5kZXgsIGRpc3BhdGNoLCBmaWVsZHMsIG9ySW5kZXgsIHZhbHVlIH0gPSBwcm9wc1xuICBjb25zdCBmaWVsZE5hbWUgPSBPYmplY3Qua2V5cyh2YWx1ZSlbMF1cbiAgY29uc3QgW2FjdGl2ZUZpZWxkLCBzZXRBY3RpdmVGaWVsZF0gPSB1c2VTdGF0ZTxGaWVsZENvbmRpdGlvbj4oKCkgPT5cbiAgICBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkTmFtZSA9PT0gZmllbGQudmFsdWUpLFxuICApXG5cbiAgY29uc3Qgb3BlcmF0b3JBbmRWYWx1ZSA9IHZhbHVlPy5bZmllbGROYW1lXSA/IE9iamVjdC5lbnRyaWVzKHZhbHVlW2ZpZWxkTmFtZV0pWzBdIDogdW5kZWZpbmVkXG4gIGNvbnN0IHF1ZXJ5VmFsdWUgPSBvcGVyYXRvckFuZFZhbHVlPy5bMV1cbiAgY29uc3Qgb3BlcmF0b3JWYWx1ZSA9IG9wZXJhdG9yQW5kVmFsdWU/LlswXVxuXG4gIGNvbnN0IFtpbnRlcm5hbFZhbHVlLCBzZXRJbnRlcm5hbFZhbHVlXSA9IHVzZVN0YXRlKHF1ZXJ5VmFsdWUpXG4gIGNvbnN0IFtpbnRlcm5hbE9wZXJhdG9yRmllbGQsIHNldEludGVybmFsT3BlcmF0b3JGaWVsZF0gPSB1c2VTdGF0ZShvcGVyYXRvclZhbHVlKVxuXG4gIGNvbnN0IGRlYm91bmNlZFZhbHVlID0gdXNlRGVib3VuY2UoaW50ZXJuYWxWYWx1ZSwgMzAwKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3QWN0aXZlRmllbGQgPSBmaWVsZHMuZmluZCgoeyB2YWx1ZTogbmFtZSB9KSA9PiBuYW1lID09PSBmaWVsZE5hbWUpXG5cbiAgICBpZiAobmV3QWN0aXZlRmllbGQgJiYgbmV3QWN0aXZlRmllbGQgIT09IGFjdGl2ZUZpZWxkKSB7XG4gICAgICBzZXRBY3RpdmVGaWVsZChuZXdBY3RpdmVGaWVsZClcbiAgICAgIHNldEludGVybmFsT3BlcmF0b3JGaWVsZChudWxsKVxuICAgICAgc2V0SW50ZXJuYWxWYWx1ZSgnJylcbiAgICB9XG4gIH0sIFtmaWVsZE5hbWUsIGZpZWxkcywgYWN0aXZlRmllbGRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgYW5kSW5kZXgsXG4gICAgICBvckluZGV4LFxuICAgICAgdHlwZTogJ3VwZGF0ZScsXG4gICAgICB2YWx1ZTogZGVib3VuY2VkVmFsdWUgfHwgJycsXG4gICAgfSlcbiAgfSwgW2RlYm91bmNlZFZhbHVlLCBkaXNwYXRjaCwgb3JJbmRleCwgYW5kSW5kZXhdKVxuXG4gIGNvbnN0IGJvb2xlYW5TZWxlY3QgPSBbJ2V4aXN0cyddLmluY2x1ZGVzKG9wZXJhdG9yVmFsdWUpIHx8IGFjdGl2ZUZpZWxkLnByb3BzLnR5cGUgPT09ICdjaGVja2JveCdcbiAgY29uc3QgVmFsdWVDb21wb25lbnQgPSBib29sZWFuU2VsZWN0XG4gICAgPyBTZWxlY3RcbiAgICA6IHZhbHVlRmllbGRzW2FjdGl2ZUZpZWxkPy5jb21wb25lbnRdIHx8IHZhbHVlRmllbGRzLlRleHRcblxuICBsZXQgdmFsdWVPcHRpb25zXG4gIGlmIChib29sZWFuU2VsZWN0KSB7XG4gICAgdmFsdWVPcHRpb25zID0gWyd0cnVlJywgJ2ZhbHNlJ11cbiAgfSBlbHNlIGlmIChhY3RpdmVGaWVsZD8ucHJvcHMgJiYgJ29wdGlvbnMnIGluIGFjdGl2ZUZpZWxkLnByb3BzKSB7XG4gICAgdmFsdWVPcHRpb25zID0gYWN0aXZlRmllbGQucHJvcHMub3B0aW9uc1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YmFzZUNsYXNzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X193cmFwYH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pbnB1dHNgfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZmllbGRgfT5cbiAgICAgICAgICAgIDxSZWFjdFNlbGVjdFxuICAgICAgICAgICAgICBpc0NsZWFyYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICBhbmRJbmRleDogYW5kSW5kZXgsXG4gICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQ/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgb3JJbmRleDogb3JJbmRleCxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9wdGlvbnM9e2ZpZWxkc31cbiAgICAgICAgICAgICAgdmFsdWU9e2ZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGROYW1lID09PSBmaWVsZC52YWx1ZSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19vcGVyYXRvcmB9PlxuICAgICAgICAgICAgPFJlYWN0U2VsZWN0XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshZmllbGROYW1lfVxuICAgICAgICAgICAgICBpc0NsZWFyYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsob3BlcmF0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICBhbmRJbmRleCxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvci52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIG9ySW5kZXgsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHNldEludGVybmFsT3BlcmF0b3JGaWVsZChvcGVyYXRvci52YWx1ZSlcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb3B0aW9ucz17YWN0aXZlRmllbGQub3BlcmF0b3JzfVxuICAgICAgICAgICAgICB2YWx1ZT17XG4gICAgICAgICAgICAgICAgYWN0aXZlRmllbGQub3BlcmF0b3JzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAob3BlcmF0b3IpID0+IGludGVybmFsT3BlcmF0b3JGaWVsZCA9PT0gb3BlcmF0b3IudmFsdWUsXG4gICAgICAgICAgICAgICAgKSB8fCBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3ZhbHVlYH0+XG4gICAgICAgICAgICA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50XG4gICAgICAgICAgICAgIEN1c3RvbUNvbXBvbmVudD17YWN0aXZlRmllbGQ/LnByb3BzPy5hZG1pbj8uY29tcG9uZW50cz8uRmlsdGVyfVxuICAgICAgICAgICAgICBEZWZhdWx0Q29tcG9uZW50PXtWYWx1ZUNvbXBvbmVudH1cbiAgICAgICAgICAgICAgY29tcG9uZW50UHJvcHM9e3tcbiAgICAgICAgICAgICAgICAuLi5hY3RpdmVGaWVsZD8ucHJvcHMsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFvcGVyYXRvclZhbHVlLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBzZXRJbnRlcm5hbFZhbHVlLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvclZhbHVlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHZhbHVlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW50ZXJuYWxWYWx1ZSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYWN0aW9uc2B9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwiaWNvbi1sYWJlbFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2FjdGlvbnMtcmVtb3ZlYH1cbiAgICAgICAgICAgIGljb249XCJ4XCJcbiAgICAgICAgICAgIGljb25TdHlsZT1cIndpdGgtYm9yZGVyXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICBhbmRJbmRleCxcbiAgICAgICAgICAgICAgICBvckluZGV4LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm91bmRcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwiaWNvbi1sYWJlbFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2FjdGlvbnMtYWRkYH1cbiAgICAgICAgICAgIGljb249XCJwbHVzXCJcbiAgICAgICAgICAgIGljb25TdHlsZT1cIndpdGgtYm9yZGVyXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICBhbmRJbmRleDogYW5kSW5kZXggKyAxLFxuICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZHNbMF0udmFsdWUsXG4gICAgICAgICAgICAgICAgb3JJbmRleCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogJ2FuZCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3VuZFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uZGl0aW9uXG4iXSwibmFtZXMiOlsidmFsdWVGaWVsZHMiLCJEYXRlIiwiTnVtYmVyIiwiUmVsYXRpb25zaGlwIiwiU2VsZWN0IiwiVGV4dCIsImJhc2VDbGFzcyIsIkNvbmRpdGlvbiIsInByb3BzIiwiYW5kSW5kZXgiLCJkaXNwYXRjaCIsImZpZWxkcyIsIm9ySW5kZXgiLCJ2YWx1ZSIsImZpZWxkTmFtZSIsIk9iamVjdCIsImtleXMiLCJhY3RpdmVGaWVsZCIsInNldEFjdGl2ZUZpZWxkIiwidXNlU3RhdGUiLCJmaW5kIiwiZmllbGQiLCJvcGVyYXRvckFuZFZhbHVlIiwiZW50cmllcyIsInVuZGVmaW5lZCIsInF1ZXJ5VmFsdWUiLCJvcGVyYXRvclZhbHVlIiwiaW50ZXJuYWxWYWx1ZSIsInNldEludGVybmFsVmFsdWUiLCJpbnRlcm5hbE9wZXJhdG9yRmllbGQiLCJzZXRJbnRlcm5hbE9wZXJhdG9yRmllbGQiLCJkZWJvdW5jZWRWYWx1ZSIsInVzZURlYm91bmNlIiwidXNlRWZmZWN0IiwibmV3QWN0aXZlRmllbGQiLCJuYW1lIiwidHlwZSIsImJvb2xlYW5TZWxlY3QiLCJpbmNsdWRlcyIsIlZhbHVlQ29tcG9uZW50IiwiY29tcG9uZW50IiwidmFsdWVPcHRpb25zIiwib3B0aW9ucyIsImRpdiIsImNsYXNzTmFtZSIsIlJlYWN0U2VsZWN0IiwiaXNDbGVhcmFibGUiLCJvbkNoYW5nZSIsImRpc2FibGVkIiwib3BlcmF0b3IiLCJvcGVyYXRvcnMiLCJSZW5kZXJDdXN0b21Db21wb25lbnQiLCJDdXN0b21Db21wb25lbnQiLCJhZG1pbiIsImNvbXBvbmVudHMiLCJGaWx0ZXIiLCJEZWZhdWx0Q29tcG9uZW50IiwiY29tcG9uZW50UHJvcHMiLCJCdXR0b24iLCJidXR0b25TdHlsZSIsImljb24iLCJpY29uU3R5bGUiLCJvbkNsaWNrIiwicm91bmQiLCJyZWxhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFxS0E7OztlQUFBOzs7K0RBcksyQztvRUFLbkI7OEVBQ1U7K0RBQ2Y7b0VBQ0s7NkRBQ1A7K0RBQ0U7cUVBQ007d0JBQ0Y7NkRBQ047UUFDVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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