From 2ce071771f4a6cb7f7d43ce870fda45cec75c574 Mon Sep 17 00:00:00 2001 From: diDroid Date: Fri, 10 Nov 2023 14:16:33 +0530 Subject: [PATCH 01/64] top bar header changes for editor screen --- .../Button/ButtonDark/stylesheet.scss | 8 ++- .../components/SiteGenEditorHeader/index.js | 69 ++++++++++++++++++ .../step-navigation-center.js | 51 ++++++++++++++ .../step-navigation-left.js | 70 +++++++++++++++++++ .../step-navigation-right.js | 61 ++++++++++++++++ .../Header/components/SiteGenHeader/index.js | 29 +++++++- .../LivePreview/BlockPreview/stylesheet.scss | 11 +++ src/OnboardingSPA/static/icons/equalizer.svg | 6 ++ .../steps/SiteGen/Editor/index.js | 10 ++- src/constants.js | 1 + 10 files changed, 310 insertions(+), 6 deletions(-) create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js create mode 100644 src/OnboardingSPA/static/icons/equalizer.svg diff --git a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss index 1f886eac0..b987e5f12 100644 --- a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss +++ b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss @@ -1,11 +1,15 @@ .nfd-onboarding-button { - &--dark { background-color: var(--nfd-onboarding-navigation-back-background); - width: 74px; + // width: 74px; height: 36px; color: var(--nfd-onboarding-primary); border-radius: 8px; padding: 0, 13px, 0 13px; + + &:hover { + background-color: #ffffff; + color: #272d30; + } } } diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js new file mode 100644 index 000000000..fec0682ce --- /dev/null +++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js @@ -0,0 +1,69 @@ +import { memo } from '@wordpress/element'; +import AdminBar from '../../../AdminBar'; +import ProgressBar from '../../../ProgressBar'; + +import { Fill } from '@wordpress/components'; +import { + HEADER_CENTER, + HEADER_SITEGEN, + HEADER_START, + HEADER_END, + HEADER_TOP, +} from '../../../../../constants'; + +import { useSelect } from '@wordpress/data'; +import { store as nfdOnboardingStore } from '../../../../store'; +import StepNavigationLeft from './step-navigation-left'; +import StepNavigationCenter from './step-navigation-center'; +import StepNavigationRight from './step-navigation-right'; + +// eslint-disable-next-line import/no-extraneous-dependencies +import { findIndex } from 'lodash'; + +/** + * Interface header rendered into header render prop in . + * + * @return {WPComponent} Header + */ +const SiteGenEditorHeader = () => { + const { isHeaderNavigationEnabled, currentStep, allSteps } = useSelect( + ( select ) => { + return { + currentStep: select( nfdOnboardingStore ).getCurrentStep(), + isHeaderNavigationEnabled: + select( nfdOnboardingStore ).isHeaderNavigationEnabled(), + allSteps: select( nfdOnboardingStore ).getAllSteps(), + }; + } + ); + + const currentStepIndex = findIndex( allSteps, { + path: currentStep.path, + } ); + const progress = ( currentStepIndex / allSteps.length ) * 100; + + return ( + <> + + <> + + { isHeaderNavigationEnabled && ( + + ) } + + + + <>{ isHeaderNavigationEnabled && } + + + <>{ isHeaderNavigationEnabled && } + + + <>{ isHeaderNavigationEnabled && } + + { currentStep?.header && } + + ); +}; + +export default memo( SiteGenEditorHeader ); \ No newline at end of file diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js new file mode 100644 index 000000000..8d6f66f17 --- /dev/null +++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js @@ -0,0 +1,51 @@ +import { useSelect } from '@wordpress/data'; +import { Icon, chevronDown } from '@wordpress/icons'; +import { __ } from '@wordpress/i18n'; + +import { store as nfdOnboardingStore } from '../../../../store'; +import ButtonDark from '../../../Button/ButtonDark'; +import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg' + +/** + * Back step Navigation button. + * + * @param {*} param0 + * + * @return {WPComponent} Back Component + */ +const VersionDropDown = ( ) => { + const version = () => { + }; + return ( + + + { __( 'Version 1', 'wp-module-onboarding' ) } + + + ); +}; + +/** + * Step buttons presented in Header. + * + * @return {WPComponent} StepNavigation Component + */ +const StepNavigationCenter = () => { + const { previousStep, showErrorDialog } = useSelect( ( select ) => { + return { + previousStep: select( nfdOnboardingStore ).getPreviousStep(), + showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(), + }; + }, [] ); + + return ( +
+ +
+ ); +}; + +export default StepNavigationCenter; \ No newline at end of file diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js new file mode 100644 index 000000000..ccb864f52 --- /dev/null +++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js @@ -0,0 +1,70 @@ +import { useSelect, useDispatch } from '@wordpress/data'; +import { useNavigate } from 'react-router-dom'; +import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons'; +import { __ } from '@wordpress/i18n'; + +import { store as nfdOnboardingStore } from '../../../../store'; +import ButtonDark from '../../../Button/ButtonDark'; + +/** + * Back step Navigation button. + * + * @param {*} param0 + * + * @return {WPComponent} Back Component + */ +const Back = ( { path, showErrorDialog } ) => { + const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore ); + const navigate = useNavigate(); + const navigateBack = () => { + if ( showErrorDialog !== false ) { + setNavErrorContinuePath( path ); + } else { + navigate( path, { state: { origin: 'header' } } ); + } + }; + return ( + + + { __( 'Back', 'wp-module-onboarding' ) } + + ); +}; + +const Regenerate = () => { + const regenerate = () => { + alert('regenerate'); + }; + return ( + + + { __( 'Regenerate', 'wp-module-onboarding' ) } + + ); +}; + +/** + * Step buttons presented in Header. + * + * @return {WPComponent} StepNavigation Component + */ +const StepNavigationLeft = () => { + const { previousStep, showErrorDialog } = useSelect( ( select ) => { + return { + previousStep: select( nfdOnboardingStore ).getPreviousStep(), + showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(), + }; + }, [] ); + + return ( +
+ + +
+ ); +}; + +export default StepNavigationLeft; diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js new file mode 100644 index 000000000..62eee3034 --- /dev/null +++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js @@ -0,0 +1,61 @@ +import { useSelect } from '@wordpress/data'; +import { Icon, chevronRight, settings } from '@wordpress/icons'; +import { __ } from '@wordpress/i18n'; + +import { store as nfdOnboardingStore } from '../../../../store'; +import ButtonDark from '../../../Button/ButtonDark'; +// import {ReactComponent as Equalizer} from '../../../../static/icons/equalizer.svg' + +/** + * Back step Navigation button. + * + * @param {*} param0 + * + * @return {WPComponent} Back Component + */ +const Customize = ( ) => { + const customize = () => { + alert('customize'); + }; + return ( + + + { __( 'Customize', 'wp-module-onboarding' ) } + + ); +}; + +const Save = () => { + const save = () => { + alert('save'); + }; + return ( + + { __( 'Save & Continue', 'wp-module-onboarding' ) } + + + ); +}; + +/** + * Step buttons presented in Header. + * + * @return {WPComponent} StepNavigation Component + */ +const StepNavigationRight = () => { + const { previousStep, showErrorDialog } = useSelect( ( select ) => { + return { + previousStep: select( nfdOnboardingStore ).getPreviousStep(), + showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(), + }; + }, [] ); + + return ( +
+ + +
+ ); +}; + +export default StepNavigationRight; diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js index 2f0027111..4d2d8f44b 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js +++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js @@ -7,11 +7,16 @@ import { HEADER_SITEGEN, HEADER_START, HEADER_TOP, + HEADER_CENTER, + HEADER_END } from '../../../../../constants'; import { useSelect } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../../store'; import StepNavigation from './step-navigation'; +import StepNavigationLeft from '../SiteGenEditorHeader/step-navigation-left'; +import StepNavigationCenter from '../SiteGenEditorHeader/step-navigation-center'; +import StepNavigationRight from '../SiteGenEditorHeader/step-navigation-right'; // eslint-disable-next-line import/no-extraneous-dependencies import { findIndex } from 'lodash'; @@ -38,6 +43,9 @@ const SiteGenHeader = () => { } ); const progress = ( currentStepIndex / allSteps.length ) * 100; + const isEditor = currentStep.path === '/sitegen/step/editor'; + console.log(isEditor); + return ( <> @@ -48,9 +56,24 @@ const SiteGenHeader = () => { ) } - - <>{ isHeaderNavigationEnabled && } - + { !isEditor ? ( + + <>{ isHeaderNavigationEnabled && } + + ) : ( + <> + + <>{ isHeaderNavigationEnabled && } + + + <>{ isHeaderNavigationEnabled && } + + + <>{ isHeaderNavigationEnabled && } + + + )} + { currentStep?.header && } ); diff --git a/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss index 1ee2b924e..d89588a41 100644 --- a/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss @@ -27,6 +27,17 @@ $main-color-grey-other: #e2e2e2; } } + &-full { + width: 100%; + min-height: 90vh; + overflow: hidden; + position: relative; + align-items: center; + border: 1px solid #e3dfdf; + border-top: 0; + margin-bottom: 30px; + } + &--is-skeleton { z-index: 1; width: 100%; diff --git a/src/OnboardingSPA/static/icons/equalizer.svg b/src/OnboardingSPA/static/icons/equalizer.svg new file mode 100644 index 000000000..171f55051 --- /dev/null +++ b/src/OnboardingSPA/static/icons/equalizer.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/index.js index 05fc7fee6..ef558ab32 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/index.js @@ -7,6 +7,9 @@ import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; +import { LivePreview } from '../../../components/LivePreview'; + +const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; const StepSiteGenEditor = () => { const { @@ -27,7 +30,12 @@ const StepSiteGenEditor = () => { isCentered className="nfd-onboarding-step--site-gen__editor" > - + {/* */} + ); }; diff --git a/src/constants.js b/src/constants.js index 238d3911b..0adb76d2e 100644 --- a/src/constants.js +++ b/src/constants.js @@ -40,6 +40,7 @@ export const SIDEBAR_MENU_SLOTFILL_PREFIX = 'HeaderMenu'; export const SIDEBAR_LEARN_MORE = 'LearnMore'; export const HEADER_SITEBUILD = 'HeaderSiteBuild'; export const HEADER_SITEGEN = 'HeaderSiteGen'; +export const HEADER_SITEGEN_EDITOR = 'HeaderSiteGenEditor'; export const HEADER_TOP = 'HeaderTop'; export const HEADER_START = 'HeaderStart'; export const HEADER_CENTER = 'HeaderCenter'; From 4308945fb043a773535b0eadedd4d41183fe7c62 Mon Sep 17 00:00:00 2001 From: diDroid Date: Fri, 10 Nov 2023 21:03:51 +0530 Subject: [PATCH 02/64] sitegenheader changes moved to step --- .../components/SiteGenEditorHeader/index.js | 69 ------------------- .../Header/components/SiteGenHeader/index.js | 34 +++------ .../Editor/SiteGenEditorHeader/index.js | 35 ++++++++++ .../step-navigation-center.js | 2 +- .../step-navigation-left.js | 2 +- .../step-navigation-right.js | 2 +- .../steps/SiteGen/Editor/step.js | 2 + 7 files changed, 48 insertions(+), 98 deletions(-) delete mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js create mode 100644 src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js rename src/OnboardingSPA/{components/Header/components => steps/SiteGen/Editor}/SiteGenEditorHeader/step-navigation-center.js (94%) rename src/OnboardingSPA/{components/Header/components => steps/SiteGen/Editor}/SiteGenEditorHeader/step-navigation-left.js (96%) rename src/OnboardingSPA/{components/Header/components => steps/SiteGen/Editor}/SiteGenEditorHeader/step-navigation-right.js (95%) diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js deleted file mode 100644 index fec0682ce..000000000 --- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js +++ /dev/null @@ -1,69 +0,0 @@ -import { memo } from '@wordpress/element'; -import AdminBar from '../../../AdminBar'; -import ProgressBar from '../../../ProgressBar'; - -import { Fill } from '@wordpress/components'; -import { - HEADER_CENTER, - HEADER_SITEGEN, - HEADER_START, - HEADER_END, - HEADER_TOP, -} from '../../../../../constants'; - -import { useSelect } from '@wordpress/data'; -import { store as nfdOnboardingStore } from '../../../../store'; -import StepNavigationLeft from './step-navigation-left'; -import StepNavigationCenter from './step-navigation-center'; -import StepNavigationRight from './step-navigation-right'; - -// eslint-disable-next-line import/no-extraneous-dependencies -import { findIndex } from 'lodash'; - -/** - * Interface header rendered into header render prop in . - * - * @return {WPComponent} Header - */ -const SiteGenEditorHeader = () => { - const { isHeaderNavigationEnabled, currentStep, allSteps } = useSelect( - ( select ) => { - return { - currentStep: select( nfdOnboardingStore ).getCurrentStep(), - isHeaderNavigationEnabled: - select( nfdOnboardingStore ).isHeaderNavigationEnabled(), - allSteps: select( nfdOnboardingStore ).getAllSteps(), - }; - } - ); - - const currentStepIndex = findIndex( allSteps, { - path: currentStep.path, - } ); - const progress = ( currentStepIndex / allSteps.length ) * 100; - - return ( - <> - - <> - - { isHeaderNavigationEnabled && ( - - ) } - - - - <>{ isHeaderNavigationEnabled && } - - - <>{ isHeaderNavigationEnabled && } - - - <>{ isHeaderNavigationEnabled && } - - { currentStep?.header && } - - ); -}; - -export default memo( SiteGenEditorHeader ); \ No newline at end of file diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js index 4d2d8f44b..0e80a320e 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js +++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js @@ -7,16 +7,11 @@ import { HEADER_SITEGEN, HEADER_START, HEADER_TOP, - HEADER_CENTER, - HEADER_END } from '../../../../../constants'; import { useSelect } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../../store'; import StepNavigation from './step-navigation'; -import StepNavigationLeft from '../SiteGenEditorHeader/step-navigation-left'; -import StepNavigationCenter from '../SiteGenEditorHeader/step-navigation-center'; -import StepNavigationRight from '../SiteGenEditorHeader/step-navigation-right'; // eslint-disable-next-line import/no-extraneous-dependencies import { findIndex } from 'lodash'; @@ -42,9 +37,6 @@ const SiteGenHeader = () => { path: currentStep.path, } ); const progress = ( currentStepIndex / allSteps.length ) * 100; - - const isEditor = currentStep.path === '/sitegen/step/editor'; - console.log(isEditor); return ( <> @@ -56,25 +48,15 @@ const SiteGenHeader = () => { ) } - { !isEditor ? ( - - <>{ isHeaderNavigationEnabled && } - - ) : ( - <> - - <>{ isHeaderNavigationEnabled && } - - - <>{ isHeaderNavigationEnabled && } - - - <>{ isHeaderNavigationEnabled && } - - - )} - { currentStep?.header && } + { currentStep?.header + ? isHeaderNavigationEnabled && ( ) + : isHeaderNavigationEnabled && ( + + + + ) + } ); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js new file mode 100644 index 000000000..05b772015 --- /dev/null +++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js @@ -0,0 +1,35 @@ +import { memo } from '@wordpress/element'; +import { Fill } from '@wordpress/components'; +import { + HEADER_CENTER, + HEADER_SITEGEN, + HEADER_START, + HEADER_END, +} from '../../../../../constants'; + +import StepNavigationLeft from './step-navigation-left'; +import StepNavigationCenter from './step-navigation-center'; +import StepNavigationRight from './step-navigation-right'; + +/** + * Interface header rendered into header render prop in . + * + * @return {WPComponent} Header + */ +const SiteGenEditorHeader = () => { + return ( + <> + + + + + + + + + + + ); +}; + +export default memo( SiteGenEditorHeader ); \ No newline at end of file diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js similarity index 94% rename from src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js rename to src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js index 8d6f66f17..275f1cb42 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js @@ -3,7 +3,7 @@ import { Icon, chevronDown } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { store as nfdOnboardingStore } from '../../../../store'; -import ButtonDark from '../../../Button/ButtonDark'; +import ButtonDark from '../../../../components/Button/ButtonDark'; import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg' /** diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js similarity index 96% rename from src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js rename to src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js index ccb864f52..51b29e292 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js @@ -4,7 +4,7 @@ import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { store as nfdOnboardingStore } from '../../../../store'; -import ButtonDark from '../../../Button/ButtonDark'; +import ButtonDark from '../../../../components/Button/ButtonDark'; /** * Back step Navigation button. diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js similarity index 95% rename from src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js rename to src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js index 62eee3034..eca41012c 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js @@ -3,7 +3,7 @@ import { Icon, chevronRight, settings } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { store as nfdOnboardingStore } from '../../../../store'; -import ButtonDark from '../../../Button/ButtonDark'; +import ButtonDark from '../../../../components/Button/ButtonDark'; // import {ReactComponent as Equalizer} from '../../../../static/icons/equalizer.svg' /** diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/step.js b/src/OnboardingSPA/steps/SiteGen/Editor/step.js index ab25039d9..255034dd2 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/step.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/step.js @@ -2,6 +2,7 @@ import { copy } from '@wordpress/icons'; import { lazy } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { Step } from '../../../data/models/Step'; +import SiteGenEditorHeader from './SiteGenEditorHeader'; const StepSiteGenEditor = lazy( () => import( './index' ) ); @@ -10,6 +11,7 @@ export const stepSiteGenEditor = new Step( { title: __( 'Page Layouts', 'wp-module-onboarding' ), Component: StepSiteGenEditor, icon: copy, + header: SiteGenEditorHeader, sidebars: { LearnMore: { SidebarComponents: [], From 2ae37690d6c454da9eb6d20872c0917aa1e113e3 Mon Sep 17 00:00:00 2001 From: diDroid Date: Fri, 10 Nov 2023 21:07:09 +0530 Subject: [PATCH 03/64] sitegenheader changes moved to step --- .../SiteGen/Editor/{SiteGenEditorHeader => Header}/index.js | 4 ++-- .../{SiteGenEditorHeader => Header}/step-navigation-center.js | 0 .../{SiteGenEditorHeader => Header}/step-navigation-left.js | 0 .../{SiteGenEditorHeader => Header}/step-navigation-right.js | 0 src/OnboardingSPA/steps/SiteGen/Editor/step.js | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/index.js (91%) rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/step-navigation-center.js (100%) rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/step-navigation-left.js (100%) rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/step-navigation-right.js (100%) diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/index.js similarity index 91% rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/index.js index 05b772015..9cb35873e 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/index.js @@ -16,7 +16,7 @@ import StepNavigationRight from './step-navigation-right'; * * @return {WPComponent} Header */ -const SiteGenEditorHeader = () => { +const Header = () => { return ( <> @@ -32,4 +32,4 @@ const SiteGenEditorHeader = () => { ); }; -export default memo( SiteGenEditorHeader ); \ No newline at end of file +export default memo( Header ); \ No newline at end of file diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js similarity index 100% rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js similarity index 100% rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js similarity index 100% rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/step.js b/src/OnboardingSPA/steps/SiteGen/Editor/step.js index 255034dd2..dc1524253 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/step.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/step.js @@ -2,7 +2,7 @@ import { copy } from '@wordpress/icons'; import { lazy } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { Step } from '../../../data/models/Step'; -import SiteGenEditorHeader from './SiteGenEditorHeader'; +import Header from './Header'; const StepSiteGenEditor = lazy( () => import( './index' ) ); @@ -11,7 +11,7 @@ export const stepSiteGenEditor = new Step( { title: __( 'Page Layouts', 'wp-module-onboarding' ), Component: StepSiteGenEditor, icon: copy, - header: SiteGenEditorHeader, + header: Header, sidebars: { LearnMore: { SidebarComponents: [], From 749584cc0e5db1767a045b395c5b7c94e7a81442 Mon Sep 17 00:00:00 2001 From: diDroid Date: Sun, 12 Nov 2023 16:31:37 +0530 Subject: [PATCH 04/64] step editor drop down wip --- .../components/Header/stylesheet.scss | 17 ++++ .../SiteGen/Editor/Header/TextInput/index.js | 0 .../Editor/Header/step-navigation-center.js | 79 +++++++++++++------ 3 files changed, 72 insertions(+), 24 deletions(-) create mode 100644 src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss index 0d0b9da26..ef1f35d65 100644 --- a/src/OnboardingSPA/components/Header/stylesheet.scss +++ b/src/OnboardingSPA/components/Header/stylesheet.scss @@ -48,6 +48,23 @@ svg { margin-right: $grid-unit-10; } + + &-dropdown-item { + padding: 2px 2px; + text-decoration: none; + display: block; + width: 80px !important; + text-align: center; + } + + &-input { + max-width: 80px; + text-align: center; + border: none !important; + color: var(--nfd-onboarding-header-contrast) !important; + background-color: var(--nfd-onboarding-header-base) !important; + + } } &__end { diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js index 275f1cb42..103874ad7 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js @@ -1,49 +1,80 @@ -import { useSelect } from '@wordpress/data'; import { Icon, chevronDown } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; -import { store as nfdOnboardingStore } from '../../../../store'; import ButtonDark from '../../../../components/Button/ButtonDark'; import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg' +import { Button, Dropdown } from '@wordpress/components'; +import { useState } from '@wordpress/element'; + +const onTextChange = ( e ) => { + e.preventDefault(); + setCustomerInput( e.target.value ); +}; + + +const TextInput = ( { customerInput, isDisabled } ) => { + return ( + onTextChange( e ) } + /> + ); +}; /** - * Back step Navigation button. - * - * @param {*} param0 + * Version step Navigation button. * - * @return {WPComponent} Back Component + * @return {WPComponent} VersionButton Component */ const VersionDropDown = ( ) => { - const version = () => { - }; return ( - - - { __( 'Version 1', 'wp-module-onboarding' ) } - - +
+ + +
+ ); +}; + +/** + * Version step Navigation button. + * + * @return {WPComponent} VersionButton Component + */ +const VersionButton = ( {isInputDisabled} ) => { + return ( + ( + + + {/* { __( 'Version 1', 'wp-module-onboarding' ) } */} + + + + ) } + renderContent={ () => + } + /> ); }; /** - * Step buttons presented in Header. + * Centre Step buttons presented in Header. * * @return {WPComponent} StepNavigation Component */ const StepNavigationCenter = () => { - const { previousStep, showErrorDialog } = useSelect( ( select ) => { - return { - previousStep: select( nfdOnboardingStore ).getPreviousStep(), - showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(), - }; - }, [] ); + const [isInputDisabled, setIsInputDisabled] = useState(true); return (
- +
); }; From 8fb7dc063107fc93b2db4a01fef3e3741f78c853 Mon Sep 17 00:00:00 2001 From: diDroid Date: Mon, 13 Nov 2023 17:03:20 +0530 Subject: [PATCH 05/64] changes for live preview wip --- .../steps/SiteGen/Preview/index.js | 46 ++++++++++++++++-- .../steps/SiteGen/Preview/stylesheet.scss | 48 +++++++++++++++++++ src/OnboardingSPA/styles/app.scss | 1 + 3 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index f16ba778e..7c2dad3f4 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -6,7 +6,10 @@ import { useDispatch } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; -import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; +import { LivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview'; +// import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; + +const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; const SiteGenPreview = () => { const { @@ -24,10 +27,47 @@ const SiteGenPreview = () => { } ); return ( - + {/* */} +
+
+

+ {/* { content.heading } */} + Presto, here are 3 versions +

+
+
+

+ {/* { content.subHeading } */} + We've created 3 unique website designs for you to start with, preview, click around or start over. +

+
+ {/*
*/} +
+
+ +
+
+ +
+
+ +
+
+
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss new file mode 100644 index 000000000..2ca1ab13f --- /dev/null +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -0,0 +1,48 @@ +.nfd-onboarding-step--site-gen__preview__container { + display: flex; + justify-content: center; + flex-wrap: wrap; + // width: 1300px; + // flex-direction: row; + // align-items: center; + + &__heading { + display: flex; + flex-direction: row; + width: 100%; + padding: 0; + justify-content: center; + align-items: center; + + &__text { + color: var(--nfd-onboarding-primary); + font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem); + margin-left: 15px; + white-space: normal; + line-height: 1; + } + } + + &__sub-heading { + width: 100%; + margin: 10px; + padding: 0; + + &__text { + text-align: center; + color: var(--nfd-onboarding-primary); + font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem); + margin: 0; + padding: 0; + } + } + + &__options { + flex: 1; + min-width: 310px; + height: 143px; + text-align: center; + margin: 10px; + border-radius: 16px; + } +} \ No newline at end of file diff --git a/src/OnboardingSPA/styles/app.scss b/src/OnboardingSPA/styles/app.scss index 992bea2af..2d747da94 100644 --- a/src/OnboardingSPA/styles/app.scss +++ b/src/OnboardingSPA/styles/app.scss @@ -62,6 +62,7 @@ @import "../steps/DesignHeaderMenu/stylesheet"; @import "../steps/SiteFeatures/stylesheet"; @import "../steps/TheFork/stylesheet"; +@import "../steps/SiteGen/Preview/stylesheet"; .nfd-onboarding-container { display: flex; From ff1f10cbb6b2549258e56aae60116296118a017e Mon Sep 17 00:00:00 2001 From: diDroid Date: Tue, 14 Nov 2023 14:38:45 +0530 Subject: [PATCH 06/64] screen design previws wip --- .../SiteGenPreviewSelectableCard/index.js | 75 ++++++++++++++++++ .../stylesheet.scss | 71 +++++++++++++++++ .../components/LivePreview/index.js | 1 + .../components/LivePreview/stylesheet.scss | 1 + .../steps/SiteGen/Preview/contents.js | 16 ++++ .../steps/SiteGen/Preview/index.js | 78 ++++++++++++------- .../steps/SiteGen/Preview/stylesheet.scss | 5 +- 7 files changed, 216 insertions(+), 31 deletions(-) create mode 100644 src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js create mode 100644 src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/contents.js diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js new file mode 100644 index 000000000..f1c841b5e --- /dev/null +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -0,0 +1,75 @@ +import { search, Icon, reusableBlock } from '@wordpress/icons'; +import { useState } from '@wordpress/element'; + +import { LivePreview } from '..'; +import ButtonDark from '../../../components/Button/ButtonDark'; +import {ReactComponent as Wishlist} from '../../../static/icons/site-features/wishlist.svg' +import { __ } from '@wordpress/i18n'; + +const SiteGenPreviewSelectableCard = ( { + className = 'live-preview-sitegen--selectable-card', + blockGrammer, + viewportWidth = 1500, + styling = 'large', + previewSettings, + overlay = false, + onClick = false, + onWishlistClick = false, + onRegenerateClick = false, + skeletonLoadingTime = 2500, +} ) => { + const [ loadingParent, setIsLoadingParent ] = useState( true ); + + return ( +
{ + if ( ! loadingParent && typeof onClick === 'function' ) { + onClick(); + } + } } + onKeyDown={ () => { + if ( ! loadingParent && typeof onClick === 'function' ) { + onClick(); + } + } } + > +
+ + { overlay && ! loadingParent && ( +
+ +
+ ) } +
+ + + { __( 'Version 1', 'wp-module-onboarding' ) } + + + + { __( 'Regenerate', 'wp-module-onboarding' ) } + +
+
+ +
+ ); +}; + +export default SiteGenPreviewSelectableCard; diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss new file mode 100644 index 000000000..496ce7401 --- /dev/null +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss @@ -0,0 +1,71 @@ + +.live-preview-sitegen--selectable-card { + flex: 1; + width: 100%; + margin: 24px; + display: flex; + overflow: hidden; + align-items: center; + flex-direction: column; + justify-content: center; + + &__live-preview-container { + position: relative; + width: 90%; + overflow: hidden; + align-items: center; + border-radius: 8px; + + .live-preview { + + &__container { + + &-custom { + width: 100%; + overflow: hidden; + height: 300px; + } + } + } + + &__overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; + z-index: 2; + width: 100%; + opacity: 0; + transition: 0.5s ease; + background-color: + rgb(var(--wp-admin-theme-color-darker-10--rgb)) + + &__icon{ + fill: var(--nfd-onboarding-white); + font-size: 20px; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + text-align: center; + } + + &:hover { + cursor: pointer; + opacity: 0.74; + } + } + + &-buttons { + padding-top: 20px; + display: flex; + flex-direction: row; + justify-content: space-between; + height: 40px; + } + } +} diff --git a/src/OnboardingSPA/components/LivePreview/index.js b/src/OnboardingSPA/components/LivePreview/index.js index e7cebd4a1..bba7e3cda 100644 --- a/src/OnboardingSPA/components/LivePreview/index.js +++ b/src/OnboardingSPA/components/LivePreview/index.js @@ -3,3 +3,4 @@ export { default as LivePreviewSkeleton } from './LivePreviewSkeleton'; export { default as LivePreviewSelectableCard } from './SelectableCard'; export { default as LivePreviewSelectableCardWithInfo } from './SelectableCardWithInfo'; export { default as GlobalStylesProvider } from './GlobalStylesProvider'; +export { default as SiteGenLivePreview } from './SiteGenPreviewSelectableCard'; diff --git a/src/OnboardingSPA/components/LivePreview/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/stylesheet.scss index f1a74565d..8e43ab671 100644 --- a/src/OnboardingSPA/components/LivePreview/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/stylesheet.scss @@ -1,3 +1,4 @@ @import "./BlockPreview/stylesheet"; @import "./SelectableCard/stylesheet"; @import "./SelectableCardWithInfo/stylesheet"; +@import "./SiteGenPreviewSelectableCard/stylesheet"; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js new file mode 100644 index 000000000..c2ba1447a --- /dev/null +++ b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js @@ -0,0 +1,16 @@ +import { __ } from '@wordpress/i18n'; + +const getContents = () => { + return { + heading: __( + 'Presto, here are 3 versions', + 'wp-module-onboarding' + ), + subheading: __( + "We've created 3 unique website designs for you to start with, preview, click around or start over.", + 'wp-module-onboarding' + ), + }; +}; + +export default getContents; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 7c2dad3f4..d00d7b85a 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -1,13 +1,16 @@ import CommonLayout from '../../../components/Layouts/Common'; import { useEffect } from '@wordpress/element'; +import { useNavigate } from 'react-router-dom'; +import { useSelect } from '@wordpress/data'; import { useDispatch } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; -import { LivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview'; -// import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; +import { SiteGenLivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview'; +import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; +import getContents from './contents'; const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; @@ -25,6 +28,45 @@ const SiteGenPreview = () => { setHeaderActiveView( HEADER_SITEGEN ); setDrawerActiveView( false ); } ); + + const onWishlistClick = () => { + alert('wishlist'); + }; + + const onRegenerateClick = () => { + alert('regenerate'); + }; + + const buildPreviews = () => { + const designs = [pattern, pattern, pattern]; + + const navigate = useNavigate(); + const { nextStep } = useSelect( ( select ) => { + return { + nextStep: select( nfdOnboardingStore ).getNextStep(), + }; + } ); + + return designs.map( ( design, idx ) => { + return ( +
+ { + navigate( nextStep.path ); + } } + onWishlistClick = { onWishlistClick } + onRegenerateClick = { onRegenerateClick } + /> +
+ ); + } ); + }; + + const content = getContents(); + return ( {

- {/* { content.heading } */} - Presto, here are 3 versions + { content.heading }

- {/* { content.subHeading } */} - We've created 3 unique website designs for you to start with, preview, click around or start over. + { content.subheading }

- {/*
*/} -
-
- -
-
- -
-
- -
-
+ { buildPreviews() } +
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index 2ca1ab13f..97829d1b9 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -2,6 +2,7 @@ display: flex; justify-content: center; flex-wrap: wrap; + min-width: 400 px; // width: 1300px; // flex-direction: row; // align-items: center; @@ -39,10 +40,12 @@ &__options { flex: 1; - min-width: 310px; + min-width: 130px; + width: 400px; height: 143px; text-align: center; margin: 10px; border-radius: 16px; + // flex-direction: row !important; } } \ No newline at end of file From 8640b3c340fb606d6b8f674f3a842b29d41e2154 Mon Sep 17 00:00:00 2001 From: diDroid Date: Tue, 14 Nov 2023 15:33:46 +0530 Subject: [PATCH 07/64] design previews. respinsiveness remaining --- .../steps/SiteGen/Preview/index.js | 27 +++---- .../steps/SiteGen/Preview/stylesheet.scss | 74 ++++++++++--------- 2 files changed, 55 insertions(+), 46 deletions(-) diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index d00d7b85a..7295fdfbb 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -49,18 +49,16 @@ const SiteGenPreview = () => { return designs.map( ( design, idx ) => { return ( -
- { - navigate( nextStep.path ); - } } - onWishlistClick = { onWishlistClick } - onRegenerateClick = { onRegenerateClick } - /> -
+ { + navigate( nextStep.path ); + } } + onWishlistClick = { onWishlistClick } + onRegenerateClick = { onRegenerateClick } + /> ); } ); }; @@ -83,8 +81,11 @@ const SiteGenPreview = () => { { content.subheading }

- { buildPreviews() } +
+ { buildPreviews() } +
+ ); diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index 97829d1b9..b8e7eac87 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -1,51 +1,59 @@ -.nfd-onboarding-step--site-gen__preview__container { - display: flex; - justify-content: center; - flex-wrap: wrap; - min-width: 400 px; +.nfd-onboarding-step--site-gen__preview { + display: flex; + flex-direction: column; + align-items: center; // width: 1300px; - // flex-direction: row; - // align-items: center; - - &__heading { + + &__container { display: flex; - flex-direction: row; - width: 100%; - padding: 0; justify-content: center; - align-items: center; + flex-wrap: wrap; + max-width: 500px; + padding-top: 50px; - &__text { - color: var(--nfd-onboarding-primary); - font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem); - margin-left: 15px; - white-space: normal; - line-height: 1; - } - } + &__heading { + display: flex; + flex-direction: row; + width: 100%; + padding: 0; + justify-content: center; + align-items: center; - &__sub-heading { - width: 100%; - margin: 10px; - padding: 0; + &__text { + color: var(--nfd-onboarding-primary); + font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem); + margin-left: 15px; + white-space: normal; + line-height: 1; + } + } - &__text { - text-align: center; - color: var(--nfd-onboarding-primary); - font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem); - margin: 0; + &__sub-heading { + width: 100%; + margin: 10px; padding: 0; + // max-width: 500px; + + &__text { + text-align: center; + color: var(--nfd-onboarding-primary); + font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem); + margin: 0; + padding: 0; + } } } &__options { flex: 1; + display: flex; + flex-direction: row; min-width: 130px; - width: 400px; - height: 143px; + width: 100%; + height: 400px; text-align: center; margin: 10px; border-radius: 16px; - // flex-direction: row !important; + } } \ No newline at end of file From ea4c1a10d4affc447b292614fb95723b0cded79e Mon Sep 17 00:00:00 2001 From: diDroid Date: Tue, 14 Nov 2023 15:55:42 +0530 Subject: [PATCH 08/64] added overlay for previews --- .../LivePreview/SiteGenPreviewSelectableCard/index.js | 10 +++++----- .../SiteGenPreviewSelectableCard/stylesheet.scss | 9 ++++++--- src/OnboardingSPA/steps/SiteGen/Preview/index.js | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index f1c841b5e..eb4c4aafd 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -5,6 +5,7 @@ import { LivePreview } from '..'; import ButtonDark from '../../../components/Button/ButtonDark'; import {ReactComponent as Wishlist} from '../../../static/icons/site-features/wishlist.svg' import { __ } from '@wordpress/i18n'; +import ButtonWhite from '../../Button/ButtonWhite'; const SiteGenPreviewSelectableCard = ( { className = 'live-preview-sitegen--selectable-card', @@ -49,11 +50,10 @@ const SiteGenPreviewSelectableCard = ( {
- + + + Preview Version +
) }
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss index 496ce7401..ca1a59db0 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss @@ -30,6 +30,9 @@ &__overlay { position: absolute; + display: flex; + justify-content: center; + align-items: center; top: 0; bottom: 0; left: 0; @@ -40,9 +43,9 @@ opacity: 0; transition: 0.5s ease; background-color: - rgb(var(--wp-admin-theme-color-darker-10--rgb)) - - &__icon{ + rgb(var(--wp-admin-theme-color-darker-10--rgb)); + + &__button { fill: var(--nfd-onboarding-white); font-size: 20px; position: absolute; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 7295fdfbb..1deaaad56 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -52,7 +52,7 @@ const SiteGenPreview = () => { { navigate( nextStep.path ); } } From d0436d08af1ae4945d3c62f97c24ef5db80c8041 Mon Sep 17 00:00:00 2001 From: diDroid Date: Wed, 15 Nov 2023 16:41:50 +0530 Subject: [PATCH 09/64] minor fix --- .../LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss | 3 ++- src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss index ca1a59db0..825e36707 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss @@ -24,6 +24,7 @@ width: 100%; overflow: hidden; height: 300px; + border-radius: 16px; } } } @@ -37,7 +38,7 @@ bottom: 0; left: 0; right: 0; - height: 100%; + height: 300px; z-index: 2; width: 100%; opacity: 0; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index b8e7eac87..2db212cd6 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -53,7 +53,6 @@ height: 400px; text-align: center; margin: 10px; - border-radius: 16px; - + // border-radius: 16px; } } \ No newline at end of file From 9e48d8d54340eb149fcd28fdcf376ae7289cc764 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Thu, 23 Nov 2023 02:52:36 +0530 Subject: [PATCH 10/64] PRESS2-1262 --- .../SiteGenPreviewSelectableCard/index.js | 22 +++++----- .../steps/SiteGen/Preview/index.js | 43 ++++++++++--------- .../steps/SiteGen/Preview/pattern.js | 3 ++ 3 files changed, 38 insertions(+), 30 deletions(-) create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/pattern.js diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index eb4c4aafd..371ba25db 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -3,9 +3,8 @@ import { useState } from '@wordpress/element'; import { LivePreview } from '..'; import ButtonDark from '../../../components/Button/ButtonDark'; -import {ReactComponent as Wishlist} from '../../../static/icons/site-features/wishlist.svg' +import { ReactComponent as Wishlist } from '../../../static/icons/site-features/wishlist.svg'; import { __ } from '@wordpress/i18n'; -import ButtonWhite from '../../Button/ButtonWhite'; const SiteGenPreviewSelectableCard = ( { className = 'live-preview-sitegen--selectable-card', @@ -50,24 +49,27 @@ const SiteGenPreviewSelectableCard = ( {
- + Preview Version
) } -
- +
+ - { __( 'Version 1', 'wp-module-onboarding' ) } + { __( 'Version 1', 'wp-module-onboarding' ) } - - - { __( 'Regenerate', 'wp-module-onboarding' ) } + + + { __( 'Regenerate', 'wp-module-onboarding' ) }
-
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 1deaaad56..e6399f0aa 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -1,18 +1,17 @@ +/* eslint-disable react-hooks/rules-of-hooks */ +/* eslint-disable no-alert */ import CommonLayout from '../../../components/Layouts/Common'; import { useEffect } from '@wordpress/element'; import { useNavigate } from 'react-router-dom'; -import { useSelect } from '@wordpress/data'; - -import { useDispatch } from '@wordpress/data'; +import { useSelect, useDispatch } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; -import { SiteGenLivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview'; +import { SiteGenLivePreview } from '../../../components/LivePreview'; import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; import getContents from './contents'; - -const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; +import { pattern } from './pattern'; const SiteGenPreview = () => { const { @@ -30,15 +29,15 @@ const SiteGenPreview = () => { } ); const onWishlistClick = () => { - alert('wishlist'); + alert( 'wishlist' ); }; const onRegenerateClick = () => { - alert('regenerate'); + alert( 'regenerate' ); }; const buildPreviews = () => { - const designs = [pattern, pattern, pattern]; + const designs = [ pattern, pattern, pattern ]; const navigate = useNavigate(); const { nextStep } = useSelect( ( select ) => { @@ -46,18 +45,26 @@ const SiteGenPreview = () => { nextStep: select( nfdOnboardingStore ).getNextStep(), }; } ); - + return designs.map( ( design, idx ) => { return ( { + onClick={ () => { navigate( nextStep.path ); } } - onWishlistClick = { onWishlistClick } - onRegenerateClick = { onRegenerateClick } + onKeyDown={ ( event ) => { + if ( event.key === 'Enter' ) { + navigate( nextStep.path ); + } + } } + onWishlistClick={ onWishlistClick } + onRegenerateClick={ onRegenerateClick } + tabIndex="0" + role="button" /> ); } ); @@ -66,10 +73,8 @@ const SiteGenPreview = () => { const content = getContents(); return ( - - {/* */} + + { /* */ }

@@ -83,10 +88,8 @@ const SiteGenPreview = () => {

- { buildPreviews() } + { buildPreviews() }
- -
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js new file mode 100644 index 000000000..9aabfff9d --- /dev/null +++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js @@ -0,0 +1,3 @@ +const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; + +export { pattern }; From 64ef752cd9dc7a41154f3e1760134796c319c52e Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Thu, 23 Nov 2023 18:25:45 +0530 Subject: [PATCH 11/64] PRESS-1262 | fixed CSS --- .../stylesheet.scss | 20 ++-- .../steps/SiteGen/Preview/stylesheet.scss | 112 +++++++++--------- 2 files changed, 67 insertions(+), 65 deletions(-) diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss index 825e36707..598ddee24 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss @@ -1,18 +1,22 @@ .live-preview-sitegen--selectable-card { flex: 1; - width: 100%; - margin: 24px; + width: 420px; + padding: 20px; display: flex; overflow: hidden; align-items: center; flex-direction: column; justify-content: center; + @media (min-width: #{ ($break-xlarge) }) and (max-width: #{ ($break-wide) }) { + width: 340px; + padding: 15px; + } + &__live-preview-container { position: relative; - width: 90%; - overflow: hidden; + width: 100%; align-items: center; border-radius: 8px; @@ -23,7 +27,7 @@ &-custom { width: 100%; overflow: hidden; - height: 300px; + height: 315px; border-radius: 16px; } } @@ -38,13 +42,13 @@ bottom: 0; left: 0; right: 0; - height: 300px; + height: 315px; z-index: 2; width: 100%; opacity: 0; transition: 0.5s ease; - background-color: - rgb(var(--wp-admin-theme-color-darker-10--rgb)); + background-color: rgb(var(--wp-admin-theme-color-darker-10--rgb)); + border-radius: 8px; &__button { fill: var(--nfd-onboarding-white); diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index 2db212cd6..94325c422 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -1,58 +1,56 @@ .nfd-onboarding-step--site-gen__preview { - display: flex; - flex-direction: column; - align-items: center; - // width: 1300px; - - &__container { - display: flex; - justify-content: center; - flex-wrap: wrap; - max-width: 500px; - padding-top: 50px; - - &__heading { - display: flex; - flex-direction: row; - width: 100%; - padding: 0; - justify-content: center; - align-items: center; - - &__text { - color: var(--nfd-onboarding-primary); - font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem); - margin-left: 15px; - white-space: normal; - line-height: 1; - } - } - - &__sub-heading { - width: 100%; - margin: 10px; - padding: 0; - // max-width: 500px; - - &__text { - text-align: center; - color: var(--nfd-onboarding-primary); - font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem); - margin: 0; - padding: 0; - } - } - } - - &__options { - flex: 1; - display: flex; - flex-direction: row; - min-width: 130px; - width: 100%; - height: 400px; - text-align: center; - margin: 10px; - // border-radius: 16px; - } -} \ No newline at end of file + display: flex; + flex-direction: column; + align-items: center; + + &__container { + display: flex; + justify-content: center; + flex-wrap: wrap; + max-width: 500px; + padding-top: 50px; + + &__heading { + display: flex; + flex-direction: row; + width: 100%; + padding: 0; + justify-content: center; + align-items: center; + + &__text { + color: var(--nfd-onboarding-primary); + font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem); + margin-left: 15px; + white-space: normal; + line-height: 1; + } + } + + &__sub-heading { + width: 100%; + margin: 10px; + padding: 0; + + &__text { + text-align: center; + color: var(--nfd-onboarding-primary); + font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem); + margin: 0; + padding: 0; + } + } + } + + &__options { + + @media (max-width: #{ ($break-xlarge) }) { + flex-direction: column; + } + + display: flex; + flex-direction: row; + text-align: center; + margin: 10px; + } +} From 0d556b2600bbf92b7a6d641b51079f3e0b17184f Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Fri, 24 Nov 2023 16:58:58 +0530 Subject: [PATCH 12/64] PRESS-1262 | note --- .../SiteGenPreviewSelectableCard/index.js | 34 +++++++++++++++---- .../stylesheet.scss | 18 +++++++++- .../static/icons/sitegen/heart-stroked.svg | 3 ++ .../steps/SiteGen/Preview/contents.js | 9 ++--- .../steps/SiteGen/Preview/index.js | 7 +++- .../steps/SiteGen/Preview/stylesheet.scss | 15 ++++++++ 6 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 371ba25db..232c8c09e 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -3,7 +3,7 @@ import { useState } from '@wordpress/element'; import { LivePreview } from '..'; import ButtonDark from '../../../components/Button/ButtonDark'; -import { ReactComponent as Wishlist } from '../../../static/icons/site-features/wishlist.svg'; +import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg'; import { __ } from '@wordpress/i18n'; const SiteGenPreviewSelectableCard = ( { @@ -60,14 +60,36 @@ const SiteGenPreviewSelectableCard = ( {
- - +
{ + if ( event.key === 'Enter' ) { + onWishlistClick(); + } + } } + aria-label="Add to Wishlist" + className={ `${ className }__live-preview-container-buttons__button` } + > + { __( 'Version 1', 'wp-module-onboarding' ) } - - +
+
{ + if ( event.key === 'Enter' ) { + onRegenerateClick(); + } + } } + aria-label="Regenerate Content" + className={ `${ className }__live-preview-container-buttons__button` } + > { __( 'Regenerate', 'wp-module-onboarding' ) } - +
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss index 598ddee24..f28e46b93 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss @@ -9,11 +9,16 @@ flex-direction: column; justify-content: center; - @media (min-width: #{ ($break-xlarge) }) and (max-width: #{ ($break-wide) }) { + @media (min-width: #{ ($break-mobile) }) and (max-width: #{ ($break-wide) }) { width: 340px; padding: 15px; } + @media (max-width: #{ ($break-mobile) }) { + width: 300px; + padding: 10px; + } + &__live-preview-container { position: relative; width: 100%; @@ -74,6 +79,17 @@ flex-direction: row; justify-content: space-between; height: 40px; + + &__button { + display: flex; + justify-content: center; + align-items: center; + color: var(--nfd-onboarding-primary); + gap: 8px; + font-size: 16px; + fill: var(--nfd-onboarding-primary); + cursor: pointer; + } } } } diff --git a/src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg b/src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg new file mode 100644 index 000000000..b9cfca95c --- /dev/null +++ b/src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js index c2ba1447a..d93e97ad2 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js @@ -2,14 +2,15 @@ import { __ } from '@wordpress/i18n'; const getContents = () => { return { - heading: __( - 'Presto, here are 3 versions', - 'wp-module-onboarding' - ), + heading: __( 'Presto, here are 3 versions', 'wp-module-onboarding' ), subheading: __( "We've created 3 unique website designs for you to start with, preview, click around or start over.", 'wp-module-onboarding' ), + favouriteNote: __( + 'Favorite a generated version to find and use again in the future.', + 'wp-module-onboarding' + ), }; }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index e6399f0aa..d46b1b95c 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -9,9 +9,10 @@ import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; import { SiteGenLivePreview } from '../../../components/LivePreview'; -import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; +//import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; import getContents from './contents'; import { pattern } from './pattern'; +import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg'; const SiteGenPreview = () => { const { @@ -90,6 +91,10 @@ const SiteGenPreview = () => {
{ buildPreviews() }
+
+ + { content.favouriteNote } +
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index 94325c422..2f21c8d27 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -53,4 +53,19 @@ text-align: center; margin: 10px; } + + &__note { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + background: var(--nfd-onboarding-card-background); + color: var(--nfd-onboarding-primary); + gap: 18px; + padding: 16px; + font-size: 16px; + line-height: 22px; + text-align: center; + border-radius: 12px; + } } From 323b0ea905cdf949b4b11ac3c001d4feb48e7208 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Fri, 24 Nov 2023 19:34:39 +0530 Subject: [PATCH 13/64] PRESS-1262 | hide wp admin bar --- .../components/NewfoldInterfaceSkeleton/style.scss | 6 ++++++ src/OnboardingSPA/styles/_interface.scss | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss index 6e0dc17d4..090d26c24 100644 --- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss +++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss @@ -31,6 +31,12 @@ html.nfd-interface-interface-skeleton__html-container { top: 0; } } + + &.nfd-onboarding-skeleton--sitegen{ + .is-fullscreen-mode & { + top: 0; + } + } } .nfd-interface-interface-skeleton__editor { diff --git a/src/OnboardingSPA/styles/_interface.scss b/src/OnboardingSPA/styles/_interface.scss index 98b81f65e..13b42dec5 100644 --- a/src/OnboardingSPA/styles/_interface.scss +++ b/src/OnboardingSPA/styles/_interface.scss @@ -14,6 +14,10 @@ body { &.is-fullscreen-mode { opacity: 1; transition: opacity ease-in 500ms; + + #wpadminbar { + display: none; + } } &.dashboard_page_nfd-onboarding { From f2fa7854b653b0d169589d9acde4f249b8ce2bb3 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Sun, 26 Nov 2023 04:05:09 +0530 Subject: [PATCH 14/64] PRESS-1262 --- includes/RestApi/SiteGenController.php | 89 ++++++++++++++++++- .../components/Loaders/SiteGenLoader/index.js | 6 +- .../NewfoldInterfaceSkeleton/SiteGen/index.js | 4 +- .../steps/SiteGen/Preview/index.js | 19 +++- src/OnboardingSPA/utils/api/siteGen.js | 17 ++++ 5 files changed, 125 insertions(+), 10 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index f83eed0b2..514767bb4 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -36,7 +36,7 @@ public function register_routes() { array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_valid_identifiers' ), - 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ), + 'permission_callback' => '__return_true', ) ); \register_rest_route( @@ -45,10 +45,20 @@ public function register_routes() { array( 'methods' => \WP_REST_Server::CREATABLE, 'callback' => array( $this, 'generate_sitegen_meta' ), - 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ), + 'permission_callback' => '__return_true', 'args' => $this->sitegen_meta_args(), ) ); + \register_rest_route( + $this->namespace, + $this->rest_base . '/get-homepages', + array( + 'methods' => \WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_homepages' ), + 'permission_callback' => '__return_true', + 'args' => $this->get_homepages_args(), + ) + ); } /** @@ -73,6 +83,33 @@ public function sitegen_meta_args() { ); } + /** + * Gets the arguments for the 'get-homepages' endpoint. + * + * @return array The array of arguments. + */ + public function get_homepages_args() { + return array( + 'site_description' => array( + 'required' => false, + 'validate_callback' => function($param, $request, $key) { + return is_string($param); + }, + 'sanitize_callback' => 'sanitize_text_field' + ), + 'regenerate' => array( + 'required' => false, + 'validate_callback' => function($param, $request, $key) { + return is_bool($param) || is_null($param); + }, + 'sanitize_callback' => function($param, $request, $key) { + return is_null($param) ? $param : (bool)$param; + } + ), + // Add other parameters here as needed. + ); + } + /** * Gets all the valid Identifiers * @@ -95,7 +132,11 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { $identifier = $request->get_param( 'identifier' ); $skip_cache = $request->get_param( 'skip_cache' ); - if ( SiteGenService::is_enabled() ) { + /* if ( SiteGenService::is_enabled() ) { + // TODO Implement the main function and do computations if required. + return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache ); + } */ + if ( true ) { // TODO Implement the main function and do computations if required. return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache ); } @@ -106,4 +147,46 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { array( 'status' => 404 ) ); } + + /** + * Gets the preview homepages and fetches required parameters from the WordPress database. + * + * @param \WP_REST_Request $request Request object containing parameters from the front end. + * @return WP_REST_Response + */ + public function get_homepages( \WP_REST_Request $request ) { + // Fetch parameters provided by the front end. + $site_description = $request->get_param( 'site_description' ); + $regenerate = $request->get_param( 'regenerate' ); + + // Set default values if not provided. + $site_description = $site_description ?: 'default description'; + $regenerate = is_null($regenerate) ? true : (bool)$regenerate; + + // Retrieve $content_style and $target_audience from the database or previous API call. + $content_style = get_option( 'contentstructure' ); // Replace with actual option name. + $target_audience = get_option( 'targetaudience' ); // Replace with actual option name. + + // Ensure that $content_style and $target_audience have valid values. + if (!$content_style || !$target_audience) { + return new \WP_REST_Response( + array( + 'message' => 'Missing required parameters from the database.', + ), + 400 + ); + } + + // Call the static method from SiteGenService with all parameters. + $home_pages = SiteGenService::get_home_pages( + $site_description, + $content_style, + $target_audience, + $regenerate + ); + + // Return the result as a REST response. + return new \WP_REST_Response($home_pages, 200); + } + } diff --git a/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js b/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js index 8b93d2d58..bf48ab4fb 100644 --- a/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js +++ b/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js @@ -32,11 +32,11 @@ const SiteGenLoader = ( { autoNavigate = false } ) => { useEffect( () => { const percentageValue = - ( currentData.sitegen.siteGenMetaStatus.currentStatus / - currentData.sitegen.siteGenMetaStatus.totalCount ) * + ( currentData?.sitegen?.siteGenMetaStatus?.currentStatus / + currentData?.sitegen?.siteGenMetaStatus?.totalCount ) * 100; setPercentage( percentageValue ); - }, [ currentData.sitegen.siteGenMetaStatus.currentStatus ] ); + }, [ currentData?.sitegen?.siteGenMetaStatus?.currentStatus ] ); useEffect( () => { if ( percentage === 100 ) { diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js index 0e16ea38d..8c3aa99b8 100644 --- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js +++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js @@ -55,8 +55,8 @@ const SiteGen = () => { // If the calls are already made then skip doing that again. if ( - currentData.sitegen.siteGenMetaStatus.currentStatus >= - currentData.sitegen.siteGenMetaStatus.totalCount + currentData.sitegen?.siteGenMetaStatus?.currentStatus >= + currentData.sitegen?.siteGenMetaStatus?.totalCount ) { return; } diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index d46b1b95c..d16a8f254 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -14,6 +14,8 @@ import getContents from './contents'; import { pattern } from './pattern'; import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg'; +import { getHomePagePreviews } from '../../../utils/api/siteGen'; + const SiteGenPreview = () => { const { setIsHeaderEnabled, @@ -22,19 +24,32 @@ const SiteGenPreview = () => { setDrawerActiveView, } = useDispatch( nfdOnboardingStore ); + const { currentData } = useSelect( ( select ) => { + return { + currentData: + select( nfdOnboardingStore ).getCurrentOnboardingData(), + }; + } ); + useEffect( () => { + if ( currentData.sitegen.siteDetails?.prompt !== '' ) { + getHomePagePreviews( + currentData.sitegen.siteDetails.prompt, + false + ); + } setIsHeaderEnabled( true ); setSidebarActiveView( false ); setHeaderActiveView( HEADER_SITEGEN ); setDrawerActiveView( false ); - } ); + }, [ currentData ] ); const onWishlistClick = () => { alert( 'wishlist' ); }; const onRegenerateClick = () => { - alert( 'regenerate' ); + // alert( 'regenerate' ); }; const buildPreviews = () => { diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index b41fdc75f..5d0134ba9 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -28,3 +28,20 @@ export async function generateSiteGenMeta( } ).then() ); } + +/* export async function getHomePagePreviews() { + return await resolve( + apiFetch( { + url: onboardingRestURL( 'sitegen/get-homepages' ), + } ).then() + ); +} */ +export async function getHomePagePreviews( siteDescription, regenerate ) { + // eslint-disable-next-line no-debugger + debugger; + return await apiFetch( { + path: onboardingRestURL( 'sitegen/get-homepages' ), + method: 'GET', + data: { site_description: siteDescription, regenerate }, + } ); +} From 7a751ecba349d4d4f24f339524c90395946ed70d Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Sun, 26 Nov 2023 08:45:45 +0530 Subject: [PATCH 15/64] PRESS2-1262 | fixed changes --- includes/RestApi/SiteGenController.php | 47 +++++++---------- src/OnboardingSPA/utils/api/siteGen.js | 72 +++++++++++++++++++++----- 2 files changed, 78 insertions(+), 41 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 514767bb4..1dd862dd6 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -3,6 +3,7 @@ namespace NewfoldLabs\WP\Module\Onboarding\RestApi; use NewfoldLabs\WP\Module\Onboarding\Permissions; +use NewfoldLabs\WP\Module\AI\SiteGen\SiteGen; use NewfoldLabs\WP\Module\Onboarding\Data\Services\SiteGenService; /** @@ -99,12 +100,6 @@ public function get_homepages_args() { ), 'regenerate' => array( 'required' => false, - 'validate_callback' => function($param, $request, $key) { - return is_bool($param) || is_null($param); - }, - 'sanitize_callback' => function($param, $request, $key) { - return is_null($param) ? $param : (bool)$param; - } ), // Add other parameters here as needed. ); @@ -149,44 +144,40 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { } /** - * Gets the preview homepages and fetches required parameters from the WordPress database. + * Gets the preview homepages * - * @param \WP_REST_Request $request Request object containing parameters from the front end. - * @return WP_REST_Response + * @return array */ public function get_homepages( \WP_REST_Request $request ) { // Fetch parameters provided by the front end. $site_description = $request->get_param( 'site_description' ); $regenerate = $request->get_param( 'regenerate' ); - // Set default values if not provided. - $site_description = $site_description ?: 'default description'; - $regenerate = is_null($regenerate) ? true : (bool)$regenerate; - - // Retrieve $content_style and $target_audience from the database or previous API call. - $content_style = get_option( 'contentstructure' ); // Replace with actual option name. - $target_audience = get_option( 'targetaudience' ); // Replace with actual option name. - - // Ensure that $content_style and $target_audience have valid values. - if (!$content_style || !$target_audience) { + $nfd_ai_site_gen_option = get_option('nfd-ai-site-gen'); + //$nfd_ai_site_gen = maybe_unserialize($nfd_ai_site_gen_option); + + // Extract the 'targetaudience' and 'contentstructure' values. + $target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null; + $content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null; + + // Ensure that the required data is available. + if (!$target_audience || !$content_style) { return new \WP_REST_Response( - array( - 'message' => 'Missing required parameters from the database.', - ), - 400 + array('message' => 'Required data is missing.'), + 400 // Bad Request ); } - + // Call the static method from SiteGenService with all parameters. - $home_pages = SiteGenService::get_home_pages( + $home_pages = SiteGen::get_home_pages( $site_description, $content_style, $target_audience, $regenerate ); - + // Return the result as a REST response. - return new \WP_REST_Response($home_pages, 200); + return new \WP_REST_Response($home_pages, 200); // OK } - + } diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index 5d0134ba9..d87aecd49 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -1,4 +1,5 @@ import apiFetch from '@wordpress/api-fetch'; +// import { addQueryArgs } from '@wordpress/url'; import { resolve } from './resolve.js'; import { onboardingRestURL } from './common'; @@ -29,19 +30,64 @@ export async function generateSiteGenMeta( ); } -/* export async function getHomePagePreviews() { - return await resolve( - apiFetch( { - url: onboardingRestURL( 'sitegen/get-homepages' ), - } ).then() +/* export async function getHomePagePreviews( siteDescription, regenerate ) { + // Construct the query parameters + const queryParams = {}; + if ( siteDescription !== undefined ) { + queryParams.site_description = siteDescription; + } + if ( regenerate !== undefined ) { + queryParams.regenerate = regenerate; + } + + // Create the URL with query parameters + const url = addQueryArgs( + onboardingRestURL( 'sitegen/get-homepages' ), + queryParams ); -} */ + + // Make the apiFetch call + try { + const homePagePreviews = await apiFetch( { path: url } ); + console.log( 'HomePage Previews:', homePagePreviews ); + return homePagePreviews; + } catch ( error ) { + console.error( 'Error fetching home page previews:', error ); + throw error; + } +} + */ + export async function getHomePagePreviews( siteDescription, regenerate ) { - // eslint-disable-next-line no-debugger - debugger; - return await apiFetch( { - path: onboardingRestURL( 'sitegen/get-homepages' ), - method: 'GET', - data: { site_description: siteDescription, regenerate }, - } ); + // Construct the base URL + const baseUrl = onboardingRestURL( 'sitegen/get-homepages' ); + + // Construct query parameters + const queryParams = new URLSearchParams(); + if ( siteDescription !== undefined ) { + queryParams.append( 'site_description', siteDescription ); + } + if ( regenerate !== undefined ) { + queryParams.append( 'regenerate', regenerate ); + } + + // Create the full URL with query parameters + const url = `${ baseUrl }&${ queryParams }`; + + // Log the URL to the console for verification + console.log( 'Fetching URL:', url ); + + // Make the fetch call and return the JSON response + try { + const response = await fetch( url ); + if ( ! response.ok ) { + throw new Error( `HTTP error! status: ${ response.status }` ); + } + const data = await response.json(); + console.log( 'HomePage Previews:', data ); + return data; + } catch ( error ) { + console.error( 'Error fetching home page previews:', error ); + throw error; + } } From d9209c0925d7077e5a52acd0e6955f8b01dfb5da Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Mon, 27 Nov 2023 09:35:19 +0530 Subject: [PATCH 16/64] PRESS2-1262 | removed comments --- includes/RestApi/SiteGenController.php | 8 +++----- src/OnboardingSPA/utils/api/siteGen.js | 6 +----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 1dd862dd6..1c7f5224c 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -149,14 +149,13 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { * @return array */ public function get_homepages( \WP_REST_Request $request ) { - // Fetch parameters provided by the front end. + // Fetching parameters provided by the front end. $site_description = $request->get_param( 'site_description' ); $regenerate = $request->get_param( 'regenerate' ); $nfd_ai_site_gen_option = get_option('nfd-ai-site-gen'); - //$nfd_ai_site_gen = maybe_unserialize($nfd_ai_site_gen_option); - // Extract the 'targetaudience' and 'contentstructure' values. + // Extracting the 'targetaudience' and 'contentstructure' values. $target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null; $content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null; @@ -168,7 +167,7 @@ public function get_homepages( \WP_REST_Request $request ) { ); } - // Call the static method from SiteGenService with all parameters. + // Call the static method from SiteGen with all parameters. $home_pages = SiteGen::get_home_pages( $site_description, $content_style, @@ -176,7 +175,6 @@ public function get_homepages( \WP_REST_Request $request ) { $regenerate ); - // Return the result as a REST response. return new \WP_REST_Response($home_pages, 200); // OK } diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index d87aecd49..cf07c3a12 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -59,10 +59,8 @@ export async function generateSiteGenMeta( */ export async function getHomePagePreviews( siteDescription, regenerate ) { - // Construct the base URL const baseUrl = onboardingRestURL( 'sitegen/get-homepages' ); - // Construct query parameters const queryParams = new URLSearchParams(); if ( siteDescription !== undefined ) { queryParams.append( 'site_description', siteDescription ); @@ -71,13 +69,11 @@ export async function getHomePagePreviews( siteDescription, regenerate ) { queryParams.append( 'regenerate', regenerate ); } - // Create the full URL with query parameters + // Creating the full URL with query parameters const url = `${ baseUrl }&${ queryParams }`; - // Log the URL to the console for verification console.log( 'Fetching URL:', url ); - // Make the fetch call and return the JSON response try { const response = await fetch( url ); if ( ! response.ok ) { From 43213d0aac8989d65ac1d452a33f72373e32e87d Mon Sep 17 00:00:00 2001 From: diDroid Date: Mon, 27 Nov 2023 16:04:54 +0530 Subject: [PATCH 17/64] mobile changes --- .../components/Header/stylesheet.scss | 56 +++++++++++++++---- .../Editor/Header/step-navigation-center.js | 14 ++++- .../Editor/Header/step-navigation-left.js | 32 +++++++++-- .../Editor/Header/step-navigation-right.js | 35 +++++++++--- 4 files changed, 112 insertions(+), 25 deletions(-) diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss index ef1f35d65..6a20c1173 100644 --- a/src/OnboardingSPA/components/Header/stylesheet.scss +++ b/src/OnboardingSPA/components/Header/stylesheet.scss @@ -22,6 +22,10 @@ transition-delay: 80ms; @include reduce-motion("transition"); + + @media (max-width: #{ ($break-xlarge) }) { + padding-left: 4px; + } } &__start, @@ -38,22 +42,13 @@ display: flex; align-items: center; height: 100%; - flex-grow: 1; - justify-content: center; - min-width: 5px; - font-weight: 600; font-size: 20px; line-height: $grid-unit-30; - svg { - margin-right: $grid-unit-10; - } - &-dropdown-item { padding: 2px 2px; text-decoration: none; display: block; - width: 80px !important; text-align: center; } @@ -63,7 +58,6 @@ border: none !important; color: var(--nfd-onboarding-header-contrast) !important; background-color: var(--nfd-onboarding-header-base) !important; - } } @@ -126,4 +120,46 @@ font-size: 13px; padding: 15px 10px !important; } + + &-editor { + padding: 0 13px 0 13px; + display: flex; + justify-content: center; + align-items: center; + gap: 8px; + cursor: pointer; + height: 36px; + background-color: var(--nfd-onboarding-navigation-back-background); + color: var(--nfd-onboarding-primary); + fill: var(--nfd-onboarding-primary); + border-radius: 6px; + + &:hover { + background-color: #ffffff; + color: #272d30; + fill: #272d30; + } + + &__regenerate { + @media (max-width: #{ ($break-xlarge) }) { + display: none; + } + } + + &__customize { + @media (max-width: #{ ($break-xlarge) }) { + display: none; + } + } + + &__continue { + @media (max-width: #{ ($break-xlarge) }) { + content: 'Next'; + } + + @media (min-width: #{ ($break-xlarge) }) { + content: 'Save & Continue'; + } + } + } } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js index 103874ad7..0c5a3990c 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js @@ -48,15 +48,23 @@ const VersionButton = ( {isInputDisabled} ) => { ( - { + if ( event.key === 'Enter' ) { + onToggle(); + } + } } aria-expanded={ isOpen } + aria-label="Regenerate" + className='navigation-buttons-editor' > - {/* { __( 'Version 1', 'wp-module-onboarding' ) } */} - + ) } renderContent={ () => } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js index 51b29e292..e05119c0f 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js @@ -4,7 +4,7 @@ import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { store as nfdOnboardingStore } from '../../../../store'; -import ButtonDark from '../../../../components/Button/ButtonDark'; +import classNames from 'classnames'; /** * Back step Navigation button. @@ -24,10 +24,21 @@ const Back = ( { path, showErrorDialog } ) => { } }; return ( - +
{ + if ( event.key === 'Enter' ) { + navigateBack(); + } + } } + aria-label="Back" + className={ classNames('navigation-buttons-editor_back', 'navigation-buttons-editor') } + > { __( 'Back', 'wp-module-onboarding' ) } - +
); }; @@ -36,10 +47,21 @@ const Regenerate = () => { alert('regenerate'); }; return ( - +
{ + if ( event.key === 'Enter' ) { + regenerate(); + } + } } + aria-label="Regenerate" + className={ classNames('navigation-buttons-editor__regenerate', 'navigation-buttons-editor') } + > { __( 'Regenerate', 'wp-module-onboarding' ) } - +
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js index eca41012c..4858564d1 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js @@ -3,8 +3,7 @@ import { Icon, chevronRight, settings } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { store as nfdOnboardingStore } from '../../../../store'; -import ButtonDark from '../../../../components/Button/ButtonDark'; -// import {ReactComponent as Equalizer} from '../../../../static/icons/equalizer.svg' +import classNames from 'classnames'; /** * Back step Navigation button. @@ -18,10 +17,21 @@ const Customize = ( ) => { alert('customize'); }; return ( - +
{ + if ( event.key === 'Enter' ) { + customize(); + } + } } + aria-label="Customize" + className={ classNames('navigation-buttons-editor__customize', 'navigation-buttons-editor') } + > { __( 'Customize', 'wp-module-onboarding' ) } - +
); }; @@ -30,10 +40,21 @@ const Save = () => { alert('save'); }; return ( - - { __( 'Save & Continue', 'wp-module-onboarding' ) } +
{ + if ( event.key === 'Enter' ) { + save(); + } + } } + aria-label="Save" + className={ classNames('navigation-buttons-editor__continue', 'navigation-buttons-editor') } + > + { __( 'Save & Continue', 'wp-module-onboarding' ) } - +
); }; From 492f947a925581e823b36e892f60d145c613e6f2 Mon Sep 17 00:00:00 2001 From: diDroid Date: Mon, 27 Nov 2023 17:35:43 +0530 Subject: [PATCH 18/64] have to change header background to dynamic --- .../components/Header/stylesheet.scss | 14 +++++++------- .../Editor/Header/step-navigation-center.js | 19 ++++++++++--------- .../Editor/Header/step-navigation-right.js | 6 ++++-- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss index 6a20c1173..c38be9cfa 100644 --- a/src/OnboardingSPA/components/Header/stylesheet.scss +++ b/src/OnboardingSPA/components/Header/stylesheet.scss @@ -1,6 +1,6 @@ .nfd-onboarding-header { align-items: center; - background-color: var(--nfd-onboarding-header-base); + background-color: var(--nfd-onboarding-admin-bar-background); color: var(--nfd-onboarding-header-contrast); h2, @@ -151,15 +151,15 @@ display: none; } } - &__continue { - @media (max-width: #{ ($break-xlarge) }) { - content: 'Next'; - } - - @media (min-width: #{ ($break-xlarge) }) { + &:before { content: 'Save & Continue'; } + @media (max-width: #{ ($break-xlarge) }) { + &:before { + content: 'Next'; + } + } } } } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js index 0c5a3990c..bf8a4235d 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js @@ -1,8 +1,8 @@ import { Icon, chevronDown } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; -import ButtonDark from '../../../../components/Button/ButtonDark'; import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg' +import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg'; import { Button, Dropdown } from '@wordpress/components'; import { useState } from '@wordpress/element'; @@ -51,19 +51,20 @@ const VersionButton = ( {isInputDisabled} ) => {
{ - if ( event.key === 'Enter' ) { - onToggle(); - } - } } aria-expanded={ isOpen } aria-label="Regenerate" className='navigation-buttons-editor' > - + - + { + if ( event.key === 'Enter' ) { + onToggle(); + } + } } + />
) } renderContent={ () => diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js index 4858564d1..c7aba43c6 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js @@ -50,9 +50,11 @@ const Save = () => { } } } aria-label="Save" - className={ classNames('navigation-buttons-editor__continue', 'navigation-buttons-editor') } + className={ classNames('navigation-buttons-editor') } > - { __( 'Save & Continue', 'wp-module-onboarding' ) } + + {/* { __( 'Save & Continue', 'wp-module-onboarding' ) } */} + ); From 515fac75a8a953f4e79d0d796518d09fd41d0592 Mon Sep 17 00:00:00 2001 From: diDroid Date: Mon, 27 Nov 2023 18:02:27 +0530 Subject: [PATCH 19/64] have to change header background to dynamic --- src/OnboardingSPA/components/Header/stylesheet.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss index c38be9cfa..3dcaa513f 100644 --- a/src/OnboardingSPA/components/Header/stylesheet.scss +++ b/src/OnboardingSPA/components/Header/stylesheet.scss @@ -1,6 +1,6 @@ .nfd-onboarding-header { align-items: center; - background-color: var(--nfd-onboarding-admin-bar-background); + background-color: var(--nfd-onboarding-header-base); color: var(--nfd-onboarding-header-contrast); h2, From 012ffd6f013a0c87ee674e5672427ae19ed8e3b9 Mon Sep 17 00:00:00 2001 From: diDroid Date: Tue, 28 Nov 2023 15:41:33 +0530 Subject: [PATCH 20/64] mobile responsiveness --- .../components/Header/stylesheet.scss | 22 --- .../Editor/Header/step-navigation-center.js | 139 +++++++++--------- .../Editor/Header/step-navigation-left.js | 122 +++++++-------- .../Editor/Header/step-navigation-right.js | 115 ++++++++------- 4 files changed, 193 insertions(+), 205 deletions(-) diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss index 3dcaa513f..d5e9611af 100644 --- a/src/OnboardingSPA/components/Header/stylesheet.scss +++ b/src/OnboardingSPA/components/Header/stylesheet.scss @@ -139,27 +139,5 @@ color: #272d30; fill: #272d30; } - - &__regenerate { - @media (max-width: #{ ($break-xlarge) }) { - display: none; - } - } - - &__customize { - @media (max-width: #{ ($break-xlarge) }) { - display: none; - } - } - &__continue { - &:before { - content: 'Save & Continue'; - } - @media (max-width: #{ ($break-xlarge) }) { - &:before { - content: 'Next'; - } - } - } } } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js index bf8a4235d..6aac3e83a 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js @@ -1,78 +1,11 @@ import { Icon, chevronDown } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; -import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg' +import { useViewportMatch } from '@wordpress/compose'; import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg'; import { Button, Dropdown } from '@wordpress/components'; import { useState } from '@wordpress/element'; -const onTextChange = ( e ) => { - e.preventDefault(); - setCustomerInput( e.target.value ); -}; - - -const TextInput = ( { customerInput, isDisabled } ) => { - return ( - onTextChange( e ) } - /> - ); -}; - -/** - * Version step Navigation button. - * - * @return {WPComponent} VersionButton Component - */ -const VersionDropDown = ( ) => { - return ( -
- - -
- ); -}; - -/** - * Version step Navigation button. - * - * @return {WPComponent} VersionButton Component - */ -const VersionButton = ( {isInputDisabled} ) => { - return ( - ( -
- - - { - if ( event.key === 'Enter' ) { - onToggle(); - } - } } - /> -
- ) } - renderContent={ () => - } - /> - ); -}; - /** * Centre Step buttons presented in Header. * @@ -81,6 +14,76 @@ const VersionButton = ( {isInputDisabled} ) => { const StepNavigationCenter = () => { const [isInputDisabled, setIsInputDisabled] = useState(true); + const isLargeViewport = useViewportMatch( 'medium' ); + + const onTextChange = ( e ) => { + e.preventDefault(); + setCustomerInput( e.target.value ); + }; + + + const TextInput = ( { customerInput, isDisabled } ) => { + return ( + onTextChange( e ) } + /> + ); + }; + + /** + * Version step Navigation button. + * + * @return {WPComponent} VersionButton Component + */ + const VersionDropDown = ( ) => { + return ( +
+ { !isLargeViewport ? <>: '' } + + +
+ ); + }; + + /** + * Version step Navigation button. + * + * @return {WPComponent} VersionButton Component + */ + const VersionButton = ( {isInputDisabled} ) => { + return ( + ( +
+ + + { + if ( event.key === 'Enter' ) { + onToggle(); + } + } } + /> +
+ ) } + renderContent={ () => + } + /> + ); + }; + return (
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js index e05119c0f..01541bfb2 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js @@ -2,68 +2,11 @@ import { useSelect, useDispatch } from '@wordpress/data'; import { useNavigate } from 'react-router-dom'; import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; +import { useViewportMatch } from '@wordpress/compose'; import { store as nfdOnboardingStore } from '../../../../store'; import classNames from 'classnames'; -/** - * Back step Navigation button. - * - * @param {*} param0 - * - * @return {WPComponent} Back Component - */ -const Back = ( { path, showErrorDialog } ) => { - const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore ); - const navigate = useNavigate(); - const navigateBack = () => { - if ( showErrorDialog !== false ) { - setNavErrorContinuePath( path ); - } else { - navigate( path, { state: { origin: 'header' } } ); - } - }; - return ( -
{ - if ( event.key === 'Enter' ) { - navigateBack(); - } - } } - aria-label="Back" - className={ classNames('navigation-buttons-editor_back', 'navigation-buttons-editor') } - > - - { __( 'Back', 'wp-module-onboarding' ) } -
- ); -}; - -const Regenerate = () => { - const regenerate = () => { - alert('regenerate'); - }; - return ( -
{ - if ( event.key === 'Enter' ) { - regenerate(); - } - } } - aria-label="Regenerate" - className={ classNames('navigation-buttons-editor__regenerate', 'navigation-buttons-editor') } - > - - { __( 'Regenerate', 'wp-module-onboarding' ) } -
- ); -}; /** * Step buttons presented in Header. @@ -77,6 +20,67 @@ const StepNavigationLeft = () => { showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(), }; }, [] ); + + const isLargeViewport = useViewportMatch( 'medium' ); + + /** + * Back step Navigation button. + * + * @param {*} param0 + * + * @return {WPComponent} Back Component + */ + const Back = ( { path, showErrorDialog } ) => { + const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore ); + const navigate = useNavigate(); + const navigateBack = () => { + if ( showErrorDialog !== false ) { + setNavErrorContinuePath( path ); + } else { + navigate( path, { state: { origin: 'header' } } ); + } + }; + return ( +
{ + if ( event.key === 'Enter' ) { + navigateBack(); + } + } } + aria-label="Back" + className='navigation-buttons-editor' + > + + { __( 'Back', 'wp-module-onboarding' ) } +
+ ); + }; + + const Regenerate = () => { + const regenerate = () => { + alert('regenerate'); + }; + return ( +
{ + if ( event.key === 'Enter' ) { + regenerate(); + } + } } + aria-label="Regenerate" + className='navigation-buttons-editor' + > + + { __( 'Regenerate', 'wp-module-onboarding' ) } +
+ ); + }; return (
@@ -84,7 +88,7 @@ const StepNavigationLeft = () => { path={ previousStep.path } showErrorDialog={ showErrorDialog } /> - + { isLargeViewport ? : '' }
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js index c7aba43c6..25713e896 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js @@ -1,65 +1,11 @@ import { useSelect } from '@wordpress/data'; import { Icon, chevronRight, settings } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; +import { useViewportMatch } from '@wordpress/compose'; import { store as nfdOnboardingStore } from '../../../../store'; import classNames from 'classnames'; -/** - * Back step Navigation button. - * - * @param {*} param0 - * - * @return {WPComponent} Back Component - */ -const Customize = ( ) => { - const customize = () => { - alert('customize'); - }; - return ( -
{ - if ( event.key === 'Enter' ) { - customize(); - } - } } - aria-label="Customize" - className={ classNames('navigation-buttons-editor__customize', 'navigation-buttons-editor') } - > - - { __( 'Customize', 'wp-module-onboarding' ) } -
- ); -}; - -const Save = () => { - const save = () => { - alert('save'); - }; - return ( -
{ - if ( event.key === 'Enter' ) { - save(); - } - } } - aria-label="Save" - className={ classNames('navigation-buttons-editor') } - > - - {/* { __( 'Save & Continue', 'wp-module-onboarding' ) } */} - - -
- ); -}; - /** * Step buttons presented in Header. * @@ -72,10 +18,67 @@ const StepNavigationRight = () => { showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(), }; }, [] ); + + const isLargeViewport = useViewportMatch( 'medium' ); + + /** + * Back step Navigation button. + * + * @param {*} param0 + * + * @return {WPComponent} Back Component + */ + const Customize = ( ) => { + const customize = () => { + alert('customize'); + }; + return ( +
{ + if ( event.key === 'Enter' ) { + customize(); + } + } } + aria-label="Customize" + className='navigation-buttons-editor' + > + + { __( 'Customize', 'wp-module-onboarding' ) } +
+ ); + }; + + const Save = () => { + const save = () => { + alert('save'); + }; + return ( +
{ + if ( event.key === 'Enter' ) { + save(); + } + } } + aria-label="Save" + className='navigation-buttons-editor' + > + { isLargeViewport ? + __( 'Save & Continue', 'wp-module-onboarding' ) + : __( 'Next', 'wp-module-onboarding' ) } + +
+ ); + }; return (
- + { isLargeViewport ? : '' }
); From 238ae548477a6cfe03eb85750b14bf3eb048b781 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Wed, 29 Nov 2023 16:37:23 +0530 Subject: [PATCH 21/64] PRESS-1262 | updated controller --- src/OnboardingSPA/utils/api/siteGen.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index cf07c3a12..04b461e56 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -1,5 +1,5 @@ import apiFetch from '@wordpress/api-fetch'; -// import { addQueryArgs } from '@wordpress/url'; +import { addQueryArgs } from '@wordpress/url'; import { resolve } from './resolve.js'; import { onboardingRestURL } from './common'; @@ -30,7 +30,7 @@ export async function generateSiteGenMeta( ); } -/* export async function getHomePagePreviews( siteDescription, regenerate ) { + /* export async function getHomePagePreviews( siteDescription, regenerate ) { // Construct the query parameters const queryParams = {}; if ( siteDescription !== undefined ) { @@ -57,8 +57,23 @@ export async function generateSiteGenMeta( } } */ +export async function getHomePagePreviews( + siteDescription, + regenerate = false +) { + return await resolve( + apiFetch( { + url: onboardingRestURL( 'sitegen/get-homepages' ), + method: 'POST', + data: { + site_description: siteDescription, + regenerate, + }, + } ).then() + ); +} -export async function getHomePagePreviews( siteDescription, regenerate ) { +/* export async function getHomePagePreviews( siteDescription, regenerate ) { const baseUrl = onboardingRestURL( 'sitegen/get-homepages' ); const queryParams = new URLSearchParams(); @@ -86,4 +101,4 @@ export async function getHomePagePreviews( siteDescription, regenerate ) { console.error( 'Error fetching home page previews:', error ); throw error; } -} +} */ From 4c87a363f0391c238220cbb5fca8fb0c2ad4dd76 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Wed, 29 Nov 2023 20:18:44 +0530 Subject: [PATCH 22/64] PRESS-1262 | fixed overlay button --- src/OnboardingSPA/components/Button/index.js | 12 +++---- .../SelectableCard/stylesheet.scss | 5 ++- .../SiteGenPreviewSelectableCard/index.js | 6 ++-- .../stylesheet.scss | 32 +++++++++---------- src/OnboardingSPA/styles/_branding.scss | 2 ++ 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/OnboardingSPA/components/Button/index.js b/src/OnboardingSPA/components/Button/index.js index 86e7812d7..56d9a6ba5 100644 --- a/src/OnboardingSPA/components/Button/index.js +++ b/src/OnboardingSPA/components/Button/index.js @@ -2,10 +2,10 @@ * Common Button Component * Different variants can be added later based on our requirements * - * @returns Button + * @return Button */ -const Button = ({ text, handleClick, disabled, className }) => { +const Button = ( { children, handleClick, disabled, className } ) => { const handleBtnClick = () => { handleClick(); }; @@ -13,11 +13,11 @@ const Button = ({ text, handleClick, disabled, className }) => { return ( ); }; diff --git a/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss index 2ee21e2b1..3a2b5c701 100644 --- a/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss @@ -86,10 +86,9 @@ width: 100%; opacity: 0; transition: 0.5s ease; - background-color: - rgb(var(--wp-admin-theme-color-darker-10--rgb)) + background-color: rgb(var(--wp-admin-theme-color-darker-10--rgb)); - &__icon{ + &__icon { fill: var(--nfd-onboarding-white); font-size: 20px; position: absolute; diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 232c8c09e..e2e26e2ae 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -2,7 +2,7 @@ import { search, Icon, reusableBlock } from '@wordpress/icons'; import { useState } from '@wordpress/element'; import { LivePreview } from '..'; -import ButtonDark from '../../../components/Button/ButtonDark'; +import Button from '../../../components/Button'; import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg'; import { __ } from '@wordpress/i18n'; @@ -49,12 +49,12 @@ const SiteGenPreviewSelectableCard = ( {
- Preview Version - +
) }
Date: Thu, 30 Nov 2023 12:11:04 +0530 Subject: [PATCH 23/64] PRESS-1262 | comments removed --- includes/RestApi/SiteGenController.php | 6 +-- src/OnboardingSPA/utils/api/siteGen.js | 57 -------------------------- 2 files changed, 1 insertion(+), 62 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 1c7f5224c..7c49ab5c6 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -127,11 +127,7 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { $identifier = $request->get_param( 'identifier' ); $skip_cache = $request->get_param( 'skip_cache' ); - /* if ( SiteGenService::is_enabled() ) { - // TODO Implement the main function and do computations if required. - return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache ); - } */ - if ( true ) { + if ( SiteGenService::is_enabled() ) { // TODO Implement the main function and do computations if required. return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache ); } diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index 04b461e56..5e6d875c4 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -1,5 +1,4 @@ import apiFetch from '@wordpress/api-fetch'; -import { addQueryArgs } from '@wordpress/url'; import { resolve } from './resolve.js'; import { onboardingRestURL } from './common'; @@ -30,33 +29,6 @@ export async function generateSiteGenMeta( ); } - /* export async function getHomePagePreviews( siteDescription, regenerate ) { - // Construct the query parameters - const queryParams = {}; - if ( siteDescription !== undefined ) { - queryParams.site_description = siteDescription; - } - if ( regenerate !== undefined ) { - queryParams.regenerate = regenerate; - } - - // Create the URL with query parameters - const url = addQueryArgs( - onboardingRestURL( 'sitegen/get-homepages' ), - queryParams - ); - - // Make the apiFetch call - try { - const homePagePreviews = await apiFetch( { path: url } ); - console.log( 'HomePage Previews:', homePagePreviews ); - return homePagePreviews; - } catch ( error ) { - console.error( 'Error fetching home page previews:', error ); - throw error; - } -} - */ export async function getHomePagePreviews( siteDescription, regenerate = false @@ -73,32 +45,3 @@ export async function getHomePagePreviews( ); } -/* export async function getHomePagePreviews( siteDescription, regenerate ) { - const baseUrl = onboardingRestURL( 'sitegen/get-homepages' ); - - const queryParams = new URLSearchParams(); - if ( siteDescription !== undefined ) { - queryParams.append( 'site_description', siteDescription ); - } - if ( regenerate !== undefined ) { - queryParams.append( 'regenerate', regenerate ); - } - - // Creating the full URL with query parameters - const url = `${ baseUrl }&${ queryParams }`; - - console.log( 'Fetching URL:', url ); - - try { - const response = await fetch( url ); - if ( ! response.ok ) { - throw new Error( `HTTP error! status: ${ response.status }` ); - } - const data = await response.json(); - console.log( 'HomePage Previews:', data ); - return data; - } catch ( error ) { - console.error( 'Error fetching home page previews:', error ); - throw error; - } -} */ From ba544fbce7dff7af2d37829d406be9690aead733 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Fri, 1 Dec 2023 11:31:18 +0530 Subject: [PATCH 24/64] PRESS-1237 | fixed version dropdown --- .../Header/components/SiteGenHeader/index.js | 15 ++-- src/OnboardingSPA/components/Header/index.js | 20 +++-- .../components/Header/stylesheet.scss | 16 +--- .../steps/SiteGen/Editor/Header/index.js | 2 +- .../Editor/Header/step-navigation-center.js | 88 +++++++++---------- .../Editor/Header/step-navigation-left.js | 10 +-- .../steps/SiteGen/Editor/stylesheet.scss | 34 +++++++ src/OnboardingSPA/styles/app.scss | 1 + 8 files changed, 105 insertions(+), 81 deletions(-) create mode 100644 src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js index ea070ca93..cdf54429b 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js +++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js @@ -37,7 +37,7 @@ const SiteGenHeader = () => { path: currentStep?.path, } ); const progress = ( currentStepIndex / allSteps.length ) * 100; - + return ( <> @@ -49,14 +49,13 @@ const SiteGenHeader = () => { - { currentStep?.header - ? isHeaderNavigationEnabled && ( ) + { currentStep?.header + ? isHeaderNavigationEnabled && : isHeaderNavigationEnabled && ( - - - - ) - } + + + + ) } ); }; diff --git a/src/OnboardingSPA/components/Header/index.js b/src/OnboardingSPA/components/Header/index.js index 5950c1f4b..bd63551c1 100644 --- a/src/OnboardingSPA/components/Header/index.js +++ b/src/OnboardingSPA/components/Header/index.js @@ -1,6 +1,7 @@ import { Slot } from '@wordpress/components'; import { Fragment, Suspense } from '@wordpress/element'; import { useSelect } from '@wordpress/data'; +import classNames from 'classnames'; import { store as nfdOnboardingStore } from '../../store'; import { @@ -8,20 +9,23 @@ import { HEADER_END, HEADER_START, HEADER_TOP, + HEADER_SITEGEN, } from '../../../constants'; const Header = () => { - const { headers, headerActiveView, isHeaderEnabled } = useSelect( - ( select ) => { + const { headers, headerActiveView, currentStep, isHeaderEnabled } = + useSelect( ( select ) => { return { + currentStep: select( nfdOnboardingStore ).getCurrentStep(), headers: select( nfdOnboardingStore ).getHeaders(), headerActiveView: select( nfdOnboardingStore ).getHeaderActiveView(), isHeaderEnabled: select( nfdOnboardingStore ).isHeaderEnabled(), }; - } - ); - + } ); + const isSiteGenEditor = + currentStep?.path === `/sitegen/step/editor` && + headerActiveView === HEADER_SITEGEN; return ( <> }> @@ -35,7 +39,11 @@ const Header = () => { { isHeaderEnabled && ( -
+
{ ); }; -export default memo( Header ); \ No newline at end of file +export default memo( Header ); diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js index 6aac3e83a..57d27ac8b 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js @@ -1,10 +1,9 @@ -import { Icon, chevronDown } from '@wordpress/icons'; +import { Icon, chevronDown, reusableBlock, settings } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { useViewportMatch } from '@wordpress/compose'; import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg'; -import { Button, Dropdown } from '@wordpress/components'; -import { useState } from '@wordpress/element'; +import { Dropdown, MenuGroup, MenuItem } from '@wordpress/components'; /** * Centre Step buttons presented in Header. @@ -12,83 +11,82 @@ import { useState } from '@wordpress/element'; * @return {WPComponent} StepNavigation Component */ const StepNavigationCenter = () => { - const [isInputDisabled, setIsInputDisabled] = useState(true); - const isLargeViewport = useViewportMatch( 'medium' ); - const onTextChange = ( e ) => { - e.preventDefault(); - setCustomerInput( e.target.value ); - }; - - - const TextInput = ( { customerInput, isDisabled } ) => { - return ( - onTextChange( e ) } - /> - ); - }; - /** * Version step Navigation button. * * @return {WPComponent} VersionButton Component */ - const VersionDropDown = ( ) => { + const VersionDropDownMenuItems = () => { return ( -
- { !isLargeViewport ? <>: '' } - - -
+ + { ! isLargeViewport && ( + <> + {} }> + + { __( 'Regenrate', 'wp-module-onboarding' ) } + + {} }> + + { __( 'Customize', 'wp-module-onboarding' ) } + + + ) } + + {} }> + { __( 'Rename', 'wp-module-onboarding' ) } + + {} }> + { __( 'View All', 'wp-module-onboarding' ) } + + ); }; /** * Version step Navigation button. * + * @param root0 + * @param root0.isInputDisabled * @return {WPComponent} VersionButton Component */ - const VersionButton = ( {isInputDisabled} ) => { + + const VersionButton = () => { return ( (
{ + if ( event.key === 'Enter' ) { + onToggle(); + } + } } > - - { - if ( event.key === 'Enter' ) { - onToggle(); - } - } } - /> + + { __( 'Version 1', 'wp-module-onboarding' ) } + +
) } - renderContent={ () => - } + renderContent={ VersionDropDownMenuItems } + paddingSize="none" /> ); }; return (
- +
); }; -export default StepNavigationCenter; \ No newline at end of file +export default StepNavigationCenter; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js index 01541bfb2..4c048bb73 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js @@ -5,8 +5,6 @@ import { __ } from '@wordpress/i18n'; import { useViewportMatch } from '@wordpress/compose'; import { store as nfdOnboardingStore } from '../../../../store'; -import classNames from 'classnames'; - /** * Step buttons presented in Header. @@ -51,7 +49,7 @@ const StepNavigationLeft = () => { } } } aria-label="Back" - className='navigation-buttons-editor' + className="navigation-buttons-editor" > { __( 'Back', 'wp-module-onboarding' ) } @@ -61,7 +59,7 @@ const StepNavigationLeft = () => { const Regenerate = () => { const regenerate = () => { - alert('regenerate'); + alert( 'regenerate' ); }; return (
{ } } } aria-label="Regenerate" - className='navigation-buttons-editor' + className="navigation-buttons-editor" > { __( 'Regenerate', 'wp-module-onboarding' ) }
); }; - + return (
Date: Fri, 1 Dec 2023 15:40:21 +0530 Subject: [PATCH 25/64] PRESS-1237 | fixed linting --- .../Button/ButtonDark/stylesheet.scss | 4 ++-- .../components/Header/stylesheet.scss | 2 +- .../stylesheet.scss | 9 ++++---- .../NewfoldInterfaceSkeleton/style.scss | 3 ++- .../Editor/Header/step-navigation-left.js | 4 ++-- .../Editor/Header/step-navigation-right.js | 22 +++++++++---------- .../steps/SiteGen/Editor/index.js | 11 +++++----- .../steps/SiteGen/Editor/stylesheet.scss | 2 -- .../steps/SiteGen/Preview/index.js | 4 ++-- .../steps/SiteGen/Preview/pattern.js | 3 ++- 10 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss index b987e5f12..f3d98d096 100644 --- a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss +++ b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss @@ -1,14 +1,14 @@ .nfd-onboarding-button { + &--dark { background-color: var(--nfd-onboarding-navigation-back-background); - // width: 74px; height: 36px; color: var(--nfd-onboarding-primary); border-radius: 8px; padding: 0, 13px, 0 13px; &:hover { - background-color: #ffffff; + background-color: #fff; color: #272d30; } } diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss index afedcf475..afeb46882 100644 --- a/src/OnboardingSPA/components/Header/stylesheet.scss +++ b/src/OnboardingSPA/components/Header/stylesheet.scss @@ -121,7 +121,7 @@ border-radius: 6px; &:hover { - background-color: #ffffff; + background-color: #fff; color: #272d30; fill: #272d30; } diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss index f28e46b93..c93484ff8 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss @@ -1,4 +1,3 @@ - .live-preview-sitegen--selectable-card { flex: 1; width: 420px; @@ -54,7 +53,7 @@ transition: 0.5s ease; background-color: rgb(var(--wp-admin-theme-color-darker-10--rgb)); border-radius: 8px; - + &__button { fill: var(--nfd-onboarding-white); font-size: 20px; @@ -75,9 +74,9 @@ &-buttons { padding-top: 20px; - display: flex; + display: flex; flex-direction: row; - justify-content: space-between; + justify-content: space-between; height: 40px; &__button { @@ -90,6 +89,6 @@ fill: var(--nfd-onboarding-primary); cursor: pointer; } - } + } } } diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss index 03fb91668..ab2057105 100644 --- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss +++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss @@ -32,7 +32,8 @@ html.nfd-interface-interface-skeleton__html-container { } } - &.nfd-onboarding-skeleton--sitegen{ + &.nfd-onboarding-skeleton--sitegen { + .is-fullscreen-mode & { top: 0; } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js index 4c048bb73..8e566fa91 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js @@ -28,7 +28,7 @@ const StepNavigationLeft = () => { * * @return {WPComponent} Back Component */ - const Back = ( { path, showErrorDialog } ) => { + const Back = ( { path } ) => { const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore ); const navigate = useNavigate(); const navigateBack = () => { @@ -59,7 +59,7 @@ const StepNavigationLeft = () => { const Regenerate = () => { const regenerate = () => { - alert( 'regenerate' ); + // alert( 'regenerate' ); }; return (
{ + // eslint-disable-next-line no-unused-vars const { previousStep, showErrorDialog } = useSelect( ( select ) => { return { previousStep: select( nfdOnboardingStore ).getPreviousStep(), @@ -24,13 +24,13 @@ const StepNavigationRight = () => { /** * Back step Navigation button. * - * @param {*} param0 + * @param {Object} param0 * * @return {WPComponent} Back Component */ - const Customize = ( ) => { + const Customize = () => { const customize = () => { - alert('customize'); + // alert('customize'); }; return (
{ } } } aria-label="Customize" - className='navigation-buttons-editor' + className="navigation-buttons-editor" > { __( 'Customize', 'wp-module-onboarding' ) } @@ -53,7 +53,7 @@ const StepNavigationRight = () => { const Save = () => { const save = () => { - alert('save'); + // alert( 'save' ); }; return (
{ } } } aria-label="Save" - className='navigation-buttons-editor' + className="navigation-buttons-editor" > - { isLargeViewport ? - __( 'Save & Continue', 'wp-module-onboarding' ) - : __( 'Next', 'wp-module-onboarding' ) } + { isLargeViewport + ? __( 'Save & Continue', 'wp-module-onboarding' ) + : __( 'Next', 'wp-module-onboarding' ) }
); }; - + return (
{ isLargeViewport ? : '' } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/index.js index ef558ab32..85a2f2f3d 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/index.js @@ -6,10 +6,11 @@ import { useDispatch } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; -import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; +// import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; import { LivePreview } from '../../../components/LivePreview'; -const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; +const pattern = + '\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We\'re meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the "Settings" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency\'s Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n'; const StepSiteGenEditor = () => { const { @@ -30,12 +31,12 @@ const StepSiteGenEditor = () => { isCentered className="nfd-onboarding-step--site-gen__editor" > - {/* */} - */ } + + /> ); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss index fe697ae98..00b7a63dd 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss @@ -30,5 +30,3 @@ } } } - - diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index d46b1b95c..a898486c4 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -30,11 +30,11 @@ const SiteGenPreview = () => { } ); const onWishlistClick = () => { - alert( 'wishlist' ); + // alert( 'wishlist' ); }; const onRegenerateClick = () => { - alert( 'regenerate' ); + // alert( 'regenerate' ); }; const buildPreviews = () => { diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js index 9aabfff9d..9727e1245 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js @@ -1,3 +1,4 @@ -const pattern = "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"/
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\"\"
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t\t\n\t\t\t
\"\"
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\"\"\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We're meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the \"Settings\" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency's Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n"; +const pattern = + '\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We\'re meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the "Settings" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency\'s Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n'; export { pattern }; From fbf2c9764fa127fa7f01d1332b1cfcb520252778 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Mon, 4 Dec 2023 18:36:22 +0530 Subject: [PATCH 26/64] PRESS2-1237 | reverted to textInput and fixed linting --- .../NewfoldInterfaceSkeleton/style.scss | 2 +- .../SiteGen/Editor/Header/TextInput/index.js | 32 +++++++++++++++++ .../Editor/Header/step-navigation-center.js | 36 ++++++++++++------- .../Editor/Header/step-navigation-right.js | 3 +- .../steps/SiteGen/Editor/stylesheet.scss | 15 ++++++-- 5 files changed, 70 insertions(+), 18 deletions(-) diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss index 6a20f5bbf..936096f25 100644 --- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss +++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss @@ -33,7 +33,7 @@ html.nfd-interface-interface-skeleton__html-container { } &.nfd-onboarding-skeleton--sitegen { - + .is-fullscreen-mode & { top: 0; } diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js index e69de29bb..571f64f6d 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js @@ -0,0 +1,32 @@ +import { useRef, useEffect } from '@wordpress/element'; + +const TextInputVersion = ( { + isInputDisabled, + versionName, + setVersionName, +} ) => { + const inputRef = useRef( null ); + + useEffect( () => { + if ( ! isInputDisabled && inputRef.current ) { + inputRef.current.focus(); + } + }, [ isInputDisabled ] ); + + const handleTextChange = ( e ) => { + setVersionName( e.target.value ); + }; + + return ( + + ); +}; + +export default TextInputVersion; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js index 57d27ac8b..7c4d74bc6 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js @@ -2,8 +2,10 @@ import { Icon, chevronDown, reusableBlock, settings } from '@wordpress/icons'; import { __ } from '@wordpress/i18n'; import { useViewportMatch } from '@wordpress/compose'; +import { useState } from '@wordpress/element'; import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg'; import { Dropdown, MenuGroup, MenuItem } from '@wordpress/components'; +import TextInputVersion from './TextInput'; /** * Centre Step buttons presented in Header. @@ -11,8 +13,14 @@ import { Dropdown, MenuGroup, MenuItem } from '@wordpress/components'; * @return {WPComponent} StepNavigation Component */ const StepNavigationCenter = () => { + const [ isInputDisabled, setIsInputDisabled ] = useState( true ); + const [ versionName, setVersionName ] = useState( 'Version 1' ); const isLargeViewport = useViewportMatch( 'medium' ); + const handleRenameClick = () => { + setIsInputDisabled( false ); + }; + /** * Version step Navigation button. * @@ -34,7 +42,7 @@ const StepNavigationCenter = () => { ) } - {} }> + { __( 'Rename', 'wp-module-onboarding' ) } {} }> @@ -62,18 +70,22 @@ const StepNavigationCenter = () => { aria-expanded={ isOpen } aria-label="Regenerate" className="navigation-buttons-editor" - onClick={ onToggle } - onKeyDown={ ( event ) => { - if ( event.key === 'Enter' ) { - onToggle(); - } - } } > - - { __( 'Version 1', 'wp-module-onboarding' ) } - - + + { + if ( event.key === 'Enter' ) { + onToggle(); + } + } } + />
) } renderContent={ VersionDropDownMenuItems } @@ -84,7 +96,7 @@ const StepNavigationCenter = () => { return (
- +
); }; diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js index 0ab8b2980..3163d7656 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js @@ -24,7 +24,6 @@ const StepNavigationRight = () => { /** * Back step Navigation button. * - * @param {Object} param0 * * @return {WPComponent} Back Component */ @@ -53,7 +52,7 @@ const StepNavigationRight = () => { const Save = () => { const save = () => { - // alert( 'save' ); + // alert( 'save' ); }; return (
Date: Tue, 5 Dec 2023 15:27:59 +0530 Subject: [PATCH 27/64] PRESS2-1262 | added animation --- .../steps/SiteGen/Preview/heartAnimation.js | 22 +++++++++++ .../steps/SiteGen/Preview/index.js | 4 +- .../steps/SiteGen/Preview/stylesheet.scss | 39 +++++++++++++++++++ src/OnboardingSPA/styles/_branding.scss | 4 ++ 4 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js b/src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js new file mode 100644 index 000000000..ea5d1c430 --- /dev/null +++ b/src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js @@ -0,0 +1,22 @@ +const HeartAnimation = () => { + return ( + + + + + + ); +}; + +export default HeartAnimation; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 440da5624..515bc7975 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -12,7 +12,7 @@ import { SiteGenLivePreview } from '../../../components/LivePreview'; //import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder'; import getContents from './contents'; import { pattern } from './pattern'; -import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg'; +import HeartAnimation from './heartAnimation'; import { getHomePagePreviews } from '../../../utils/api/siteGen'; @@ -108,7 +108,7 @@ const SiteGenPreview = () => { { buildPreviews() }
- + { content.favouriteNote }
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index 431312520..a5311880f 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -70,4 +70,43 @@ border-radius: 12px; margin-bottom: 60px; } + + @keyframes heartBeat { + + 0%, + 100% { + fill: transparent; + transform: scale(1); + transform-origin: center; + } + + 33%, + 66% { + fill: var(--nfd-onboarding-heart-icon-fill); + transform: scale(1.1); + transform-origin: center; + } + + 67% { + fill: var(--nfd-onboarding-heart-icon-fill); + transform: scale(1.3); + transform-origin: center; + } + + 87% { + fill: var(--nfd-onboarding-heart-icon-fill); + transform: scale(1.1); + transform-origin: center; + } + } + + .heart { + stroke: var(--nfd-onboarding-heart-icon-stroke); + stroke-width: 2px; + } + + .heart path { + animation: heartBeat 4s infinite; + } + } diff --git a/src/OnboardingSPA/styles/_branding.scss b/src/OnboardingSPA/styles/_branding.scss index 0f780ff8e..657fac00e 100644 --- a/src/OnboardingSPA/styles/_branding.scss +++ b/src/OnboardingSPA/styles/_branding.scss @@ -318,6 +318,8 @@ body { --nfd-onboarding-site-logo-border: var(--nfd-onboarding-primary); --nfd-onboarding-header-border: rgba(var(--nfd-onboarding-primary-rgb), 0.3); --nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4); + --nfd-onboarding-heart-icon-fill:#EF4A71; + --nfd-onboarding-heart-icon-stroke:#9CA2A7; } .nfd-onboarding-sitegen-dark { @@ -337,5 +339,7 @@ body { --nfd-onboarding-site-logo-border: rgba(156, 162, 167, 1); --nfd-onboarding-header-border: rgba(var(--nfd-onboarding-primary-rgb), 0.3); --nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4); + --nfd-onboarding-heart-icon-fill:#EF4A71; + --nfd-onboarding-heart-icon-stroke:#9CA2A7; } } From e7a91c5f3628a2b3be453121b96a4a47b9f196f0 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Tue, 5 Dec 2023 19:33:11 +0530 Subject: [PATCH 28/64] PRESS2-1237 | changed classname logic for editor header --- .../components/Header/components/SiteGenHeader/index.js | 5 ++--- src/OnboardingSPA/components/Header/index.js | 7 ++----- src/OnboardingSPA/steps/SiteGen/Editor/step.js | 5 ++++- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js index cdf54429b..df5b3e2ee 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js +++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js @@ -37,7 +37,6 @@ const SiteGenHeader = () => { path: currentStep?.path, } ); const progress = ( currentStepIndex / allSteps.length ) * 100; - return ( <> @@ -49,8 +48,8 @@ const SiteGenHeader = () => { - { currentStep?.header - ? isHeaderNavigationEnabled && + { currentStep?.header?.component + ? isHeaderNavigationEnabled && : isHeaderNavigationEnabled && ( diff --git a/src/OnboardingSPA/components/Header/index.js b/src/OnboardingSPA/components/Header/index.js index bd63551c1..a20ff71dd 100644 --- a/src/OnboardingSPA/components/Header/index.js +++ b/src/OnboardingSPA/components/Header/index.js @@ -9,7 +9,6 @@ import { HEADER_END, HEADER_START, HEADER_TOP, - HEADER_SITEGEN, } from '../../../constants'; const Header = () => { @@ -23,9 +22,6 @@ const Header = () => { isHeaderEnabled: select( nfdOnboardingStore ).isHeaderEnabled(), }; } ); - const isSiteGenEditor = - currentStep?.path === `/sitegen/step/editor` && - headerActiveView === HEADER_SITEGEN; return ( <> }> @@ -41,7 +37,8 @@ const Header = () => { { isHeaderEnabled && (
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/step.js b/src/OnboardingSPA/steps/SiteGen/Editor/step.js index dc1524253..e1430cd7b 100644 --- a/src/OnboardingSPA/steps/SiteGen/Editor/step.js +++ b/src/OnboardingSPA/steps/SiteGen/Editor/step.js @@ -11,7 +11,10 @@ export const stepSiteGenEditor = new Step( { title: __( 'Page Layouts', 'wp-module-onboarding' ), Component: StepSiteGenEditor, icon: copy, - header: Header, + header: { + component: Header, + customClassName: 'nfd-onboarding-header-sg-editor', + }, sidebars: { LearnMore: { SidebarComponents: [], From 3b7bd296900b6824b6de2a65eb138383615440f9 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Wed, 6 Dec 2023 14:17:38 +0530 Subject: [PATCH 29/64] PRESS2-1262 | regenrating card --- .../Header/components/SiteGenHeader/index.js | 15 ++- .../SiteGenPreviewSelectableCard/index.js | 20 ++- .../stylesheet.scss | 2 +- .../steps/SiteGen/Preview/index.js | 62 +++++---- .../steps/SiteGen/Preview/pattern.js | 118 +++++++++++++++++- .../steps/SiteGen/Preview/regeneratingCard.js | 17 +++ .../steps/SiteGen/Preview/stylesheet.scss | 42 +++++++ 7 files changed, 232 insertions(+), 44 deletions(-) create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js index ea070ca93..cdf54429b 100644 --- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js +++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js @@ -37,7 +37,7 @@ const SiteGenHeader = () => { path: currentStep?.path, } ); const progress = ( currentStepIndex / allSteps.length ) * 100; - + return ( <> @@ -49,14 +49,13 @@ const SiteGenHeader = () => { - { currentStep?.header - ? isHeaderNavigationEnabled && ( ) + { currentStep?.header + ? isHeaderNavigationEnabled && : isHeaderNavigationEnabled && ( - - - - ) - } + + + + ) } ); }; diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 960f36bb9..66f7b8a90 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -1,8 +1,11 @@ +/* eslint-disable jsx-a11y/no-static-element-interactions */ import { search, Icon, reusableBlock } from '@wordpress/icons'; import { useState } from '@wordpress/element'; - +import { useNavigate } from 'react-router-dom'; +import { useSelect } from '@wordpress/data'; import { LivePreview } from '..'; import Button from '../../../components/Button'; +import { store as nfdOnboardingStore } from '../../../store'; import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg'; import { ReactComponent as FavouriteIconFilled } from '../../../static/icons/sitegen/heart-filled.svg'; import { __ } from '@wordpress/i18n'; @@ -22,6 +25,13 @@ const SiteGenPreviewSelectableCard = ( { } ) => { const [ loadingParent, setIsLoadingParent ] = useState( true ); + const navigate = useNavigate(); + const { nextStep } = useSelect( ( select ) => { + return { + nextStep: select( nfdOnboardingStore ).getNextStep(), + }; + } ); + return (
{ + navigate( nextStep.path ); + } } + onKeyDown={ ( event ) => { + if ( event.key === 'Enter' ) { + navigate( nextStep.path ); + } + } } >
{ // const [ homepages, setHomepages ] = useState( { active: {}, data: [] } ); + + const [ homePagePreviewPatterns, setHomePagePreviewPatterns ] = useState( + {} + ); const { setIsHeaderEnabled, setSidebarActiveView, @@ -34,21 +38,44 @@ const SiteGenPreview = () => { } ); useEffect( () => { - /* if ( currentData.sitegen.siteDetails?.prompt !== '' ) { + if ( currentData.sitegen.siteDetails?.prompt !== '' ) { getHomePagePreviews( currentData.sitegen.siteDetails.prompt, false ); - } */ + } setIsHeaderEnabled( true ); setSidebarActiveView( false ); setHeaderActiveView( HEADER_SITEGEN ); setDrawerActiveView( false ); }, [ currentData ] ); - useEffect( () => { - setHomepagesData( homepageData.homepages ); + const fetchHomePagesPatterns = async () => { + if ( currentData.sitegen.siteDetails?.prompt !== '' ) { + try { + const response = await getHomePagePreviews( + currentData.sitegen.siteDetails.prompt, + false + ); + + const processedPatterns = {}; + for ( const key in response ) { + processedPatterns[ key ] = [ + response[ key ] + .filter( ( item ) => item !== null ) + .join( ' ' ), + ]; + } + setHomePagePreviewPatterns( processedPatterns ); + } catch ( error ) { + // Handle or log error + // console.error( 'Error fetching data:', error ); + } + } + }; + + fetchHomePagesPatterns(); }, [] ); const [ isRegenerating, setIsRegenerating ] = useState( false ); @@ -57,17 +84,19 @@ const SiteGenPreview = () => { const onRegenerateClick = () => { setIsRegenerating( true ); }; + + console.log("home page preview patterns ", homePagePreviewPatterns); const buildPreviews = () => { const designs = isRegenerating ? [ ] : []; designs.push( - ...homepageData.homepages.data.map( ( design, idx ) => { + Object.keys( homePagePreviewPatterns ).map( ( design, idx ) => { return ( Date: Fri, 15 Dec 2023 02:16:30 +0530 Subject: [PATCH 38/64] PRESS-1262 | added home pages call --- includes/RestApi/SiteGenController.php | 51 +++++++++++++++- .../SiteGenPreviewSelectableCard/index.js | 4 +- .../steps/SiteGen/Preview/index.js | 61 ++++++------------- 3 files changed, 71 insertions(+), 45 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 25ef721ea..b590a69eb 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -145,15 +145,31 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { * @return array */ public function get_homepages( \WP_REST_Request $request ) { + $existing_homepages = get_option('nfd-sitegen-homepages'); + + // If the option exists and is not empty, return it + if ( ! empty( $existing_homepages ) ) { + return new \WP_REST_Response( $existing_homepages, 200 ); + } + // Fetching parameters provided by the front end. $site_description = $request->get_param( 'site_description' ); $regenerate = $request->get_param( 'regenerate' ); $nfd_ai_site_gen_option = get_option('nfd-ai-site-gen'); + $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); // Extracting the 'targetaudience' and 'contentstructure' values. $target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null; + // Check if $target_audience is false, null, or not set and then call again. + if (!$target_audience) { + $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache); + } + $content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null; + if(!$content_style) { + $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contentstructure', $skip_cache ); + } // Ensure that the required data is available. if (!$target_audience || !$content_style) { @@ -170,8 +186,41 @@ public function get_homepages( \WP_REST_Request $request ) { $target_audience, $regenerate ); + + $processed_home_pages = $this->process_homepages_response( $home_pages ); - return new \WP_REST_Response($home_pages, 200); // OK + // Save the structured data in the options table + update_option('nfd-sitegen-homepages', $processed_home_pages ); + return new \WP_REST_Response($processed_home_pages, 200); } + + private function process_homepages_response( $home_pages ) { + $versions = []; + $version_number = 1; // Initialize the version number counter + + foreach ( $home_pages as $key => $blocks ) { + if ( ! is_array( $blocks ) ) { + continue; + } + + $filtered_blocks = array_filter( $blocks, function($value) { + return !is_null($value); + }); + + $content = implode( '', $filtered_blocks ); + + $version_info = [ + "slug" => "version" . $version_number, // Construct slug using the version number + "title" => "Version " . $version_number, + "isFavourited" => false, // or true based on your logic + "colorScheme" => "#fff", // Replace with your logic for determining the color scheme + "content" => $content, + ]; + + $versions[] = $version_info; + $version_number++; // Increment the version number for the next iteration + } + return $versions; + } } diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 611380fcb..6cacd0ee6 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -101,12 +101,12 @@ const SiteGenPreviewSelectableCard = ( { aria-label="Add to Wishlist" className={ `${ className }__live-preview-container-buttons__button` } > - {/* { designObject?.favorite ? ( + { designObject?.isFavourited ? ( ) : ( ) } - { designObject?.title } */} + { designObject?.title }
{ - // const [ homepages, setHomepages ] = useState( { active: {}, data: [] } ); + const [ homepages, setHomepages ] = useState( { active: {}, data: [] } ); + const [ isRegenerating, setIsRegenerating ] = useState( false ); - const [ homePagePreviewPatterns, setHomePagePreviewPatterns ] = useState( - {} - ); const { setIsHeaderEnabled, setSidebarActiveView, @@ -38,12 +34,6 @@ const SiteGenPreview = () => { } ); useEffect( () => { - if ( currentData.sitegen.siteDetails?.prompt !== '' ) { - getHomePagePreviews( - currentData.sitegen.siteDetails.prompt, - false - ); - } setIsHeaderEnabled( true ); setSidebarActiveView( false ); setHeaderActiveView( HEADER_SITEGEN ); @@ -58,18 +48,9 @@ const SiteGenPreview = () => { currentData.sitegen.siteDetails.prompt, false ); - - const processedPatterns = {}; - for ( const key in response ) { - processedPatterns[ key ] = [ - response[ key ] - .filter( ( item ) => item !== null ) - .join( ' ' ), - ]; - } - setHomePagePreviewPatterns( processedPatterns ); + setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data + setHomepagesData( { ...homepages, data: response.body } ); // Dispatch the action with the response data } catch ( error ) { - // Handle or log error // console.error( 'Error fetching data:', error ); } } @@ -78,34 +59,30 @@ const SiteGenPreview = () => { fetchHomePagesPatterns(); }, [] ); - const [ isRegenerating, setIsRegenerating ] = useState( false ); - - // console.log( 'HOme pages', JSON.parse( JSON.stringify( homepages ) ) ); const onRegenerateClick = () => { setIsRegenerating( true ); }; - console.log("home page preview patterns ", homePagePreviewPatterns); const buildPreviews = () => { const designs = isRegenerating ? [ ] : []; - designs.push( - Object.keys( homePagePreviewPatterns ).map( ( design, idx ) => { - return ( - - ); - } ) + homepages.data && + homepages.data.map( ( design, idx ) => { + return ( + + ); + } ) ); return designs; From 3163b5637f17af1e19cc95176c83e88a72c468e4 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Fri, 15 Dec 2023 11:26:32 +0530 Subject: [PATCH 39/64] PRESS2-1262 | created generating site loaders --- .../steps/SiteGen/Preview/contents.js | 2 + .../steps/SiteGen/Preview/index.js | 17 ++++++- .../steps/SiteGen/Preview/regeneratingCard.js | 46 +++++++++++-------- .../steps/SiteGen/Preview/stylesheet.scss | 14 +++++- src/OnboardingSPA/steps/SiteGen/data.json | 30 ------------ 5 files changed, 59 insertions(+), 50 deletions(-) delete mode 100644 src/OnboardingSPA/steps/SiteGen/data.json diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js index d93e97ad2..c6bc4b107 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js @@ -11,6 +11,8 @@ const getContents = () => { 'Favorite a generated version to find and use again in the future.', 'wp-module-onboarding' ), + generating: __( 'Generating Site', 'wp-module-onboarding' ), + regenerating: __( 'Regenerating Site', 'wp-module-onboarding' ), }; }; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index be310edcb..293a33a3b 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -17,6 +17,7 @@ import { getHomePagePreviews } from '../../../utils/api/siteGen'; const SiteGenPreview = () => { const [ homepages, setHomepages ] = useState( { active: {}, data: [] } ); const [ isRegenerating, setIsRegenerating ] = useState( false ); + const [ isPreviewLoading, setIsPreviewLoading ] = useState( false ); const { setIsHeaderEnabled, @@ -42,6 +43,7 @@ const SiteGenPreview = () => { useEffect( () => { const fetchHomePagesPatterns = async () => { + setIsPreviewLoading( true ); if ( currentData.sitegen.siteDetails?.prompt !== '' ) { try { const response = await getHomePagePreviews( @@ -50,7 +52,9 @@ const SiteGenPreview = () => { ); setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data setHomepagesData( { ...homepages, data: response.body } ); // Dispatch the action with the response data + setIsPreviewLoading( false ); } catch ( error ) { + setIsPreviewLoading( false ); // console.error( 'Error fetching data:', error ); } } @@ -64,8 +68,19 @@ const SiteGenPreview = () => { }; const buildPreviews = () => { + if ( isPreviewLoading ) { + return ( + + ); + } + const designs = isRegenerating - ? [ ] + ? [ + , + ] : []; designs.push( homepages.data && diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js index 6b1765787..10c3dcc2b 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js @@ -1,26 +1,36 @@ +/* eslint-disable @wordpress/i18n-no-variables */ import { __ } from '@wordpress/i18n'; import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg'; +import getContents from './contents'; -function RegeneratingSiteCard( { previewVersion, progress } ) { - return ( -
-
-

- { __( 'Regenerating Site', 'wp-module-onboarding' ) } -

-
-
+function RegeneratingSiteCard( { count = 1, isRegenerating } ) { + const content = getContents(); + const cards = []; + const generatingText = isRegenerating + ? content.regenerating + : content.generating; + for ( let i = 0; i < count; i++ ) { + cards.push( +
+
+

+ { __( generatingText, 'wp-module-onboarding' ) } +

+
+
+
+ { isRegenerating && ( +
+ + { __( 'version0-1_copy', 'wp-module-onboarding' ) } +
+ ) }
-
- - { __( 'version0-1_copy', 'wp-module-onboarding' ) } -
-
- ); + ); + } + + return <>{ cards }; } export default RegeneratingSiteCard; diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss index 23825fcf9..5fc3f0513 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss +++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss @@ -54,7 +54,7 @@ text-align: center; margin: 10px 10px 55px 10px; flex-wrap: wrap; - max-width: 1440px; + max-width: 1440px; } &__note { @@ -113,6 +113,17 @@ } +@keyframes infiniteProgress { + + 0% { + width: 0; + } + + 100% { + width: 100%; + } +} + .regenerating-site-card-wrap { padding: 20px; @@ -146,6 +157,7 @@ background: var(--nfd-onboarding-progress-bar-fill); height: 100%; transition: width 0.3s ease; + animation: infiniteProgress 1.5s ease-in-out infinite; } } } diff --git a/src/OnboardingSPA/steps/SiteGen/data.json b/src/OnboardingSPA/steps/SiteGen/data.json deleted file mode 100644 index a1d9ae8de..000000000 --- a/src/OnboardingSPA/steps/SiteGen/data.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "homepages": { - "active": { - "slug": "currenthash1", - "title": "Active Version", - "favorite": true, - "content": "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We\'re meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the "Settings" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency\'s Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n", - }, - "data": [ - { - "slug": "hash1", - "title": "Version 1", - "favorite": false, - "content": "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We\'re meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the "Settings" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency\'s Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n", - }, - { - "slug": "hash2", - "title": "Version 2", - "favorite": true, - "content": "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We\'re meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the "Settings" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency\'s Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n", - }, - { - "slug": "hash3", - "title": "Version 3", - "favorite": true, - "content": "\n
\n \n\t
\n\t\t\n\t\t

Business Consulting Solutions

\n\t\t\n\t\t\n\t\t

Make your company
leader in the industry

\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n

Area of Practice

\n \n
\n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

01

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

02

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

03

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

04

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Portfolio Management

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

05

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Performance Reviews

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

06

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Financial Planning

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We will work with you to create a personalised plan to help you achieve your financial goals.

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Explore Our Unmatched Consulting Solutions

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Come and Experience Our Unforgettable Cuisine

\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.

\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

2.5k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Clients served

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

10k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Projects completed

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

1.2k

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Marketing campaigns

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

15

\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Full-time consultants

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t

★ ★ ★ ★ ★

\n\t\n\t\n\t
\n\t\t\n\t\t

My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.

\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\tAlex Martinez\n\t\t\t

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t

/

\n\t\t\n\t\t\n\t\t

Customer

\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

We\'re meticulous in our approach
so you can focus on your business.

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Streamlined process

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Flawless events

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t

Frequently Asked Questions

\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Is there a free trial available?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How do I change my personal information?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

You can update name, email address and other personal information from the "Settings" section.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I change my plan later?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can upgrade or downgrade your plan at any time.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

How does billing work?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

We have a simple billing system which allows you to pay for services on a monthly basis.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

Can I get an invoice for my purchase?

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

Yes, you can. Please contact our customer support and provide your purchase number.

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t

Discover Our Consulting Services

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t

Our Agency\'s Expertise

\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n", - } - ] - } -} From 39698d53048a83801f5697472ba6631623a7504b Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Mon, 18 Dec 2023 13:18:47 +0530 Subject: [PATCH 40/64] PRESS2-1465 | updated according to changes in option table --- includes/RestApi/SiteGenController.php | 10 +++++----- .../SiteGenPreviewSelectableCard/index.js | 12 +++++------ .../steps/SiteGen/Preview/index.js | 20 ++++++++++++++++--- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index b590a69eb..cf1e1426e 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -156,19 +156,19 @@ public function get_homepages( \WP_REST_Request $request ) { $site_description = $request->get_param( 'site_description' ); $regenerate = $request->get_param( 'regenerate' ); - $nfd_ai_site_gen_option = get_option('nfd-ai-site-gen'); $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); - // Extracting the 'targetaudience' and 'contentstructure' values. - $target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null; + $target_audience_option = get_option('nfd-ai-site-gen-targetaudience'); + $target_audience = isset($target_audience_option) ? $target_audience_option : null; // Check if $target_audience is false, null, or not set and then call again. if (!$target_audience) { $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache); } - $content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null; + $content_style_option = get_option('nfd-ai-site-gen-contentstructure'); + $content_style = isset($content_style_option) ? $content_style_option : null; if(!$content_style) { - $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contentstructure', $skip_cache ); + $content_style = SiteGenService::instantiate_site_meta($site_info, 'contentstructure', $skip_cache); } // Ensure that the required data is available. diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 6cacd0ee6..82b1b9fb8 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -21,9 +21,9 @@ const SiteGenPreviewSelectableCard = ( { onRegenerateClick = false, skeletonLoadingTime = 2500, designObject, + handleFavorite, } ) => { - const { setActiveHomepage, toggleFavorite } = - useDispatch( nfdOnboardingStore ); + const { setActiveHomepage } = useDispatch( nfdOnboardingStore ); const [ loadingParent, setIsLoadingParent ] = useState( true ); const navigate = useNavigate(); @@ -38,9 +38,9 @@ const SiteGenPreviewSelectableCard = ( { navigate( nextStep.path ); }; - const onWishlistClick = ( slug ) => { + /* const onWishlistClick = ( slug ) => { toggleFavorite( slug ); - }; + }; */ return (
handleFavorite( designObject?.slug ) } onKeyDown={ ( event ) => { if ( event.key === 'Enter' ) { - onWishlistClick( designObject?.slug ); + handleFavorite( designObject?.slug ); } } } aria-label="Add to Wishlist" diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 293a33a3b..16e5f24f7 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -11,7 +11,6 @@ import { SiteGenLivePreview } from '../../../components/LivePreview'; import getContents from './contents'; import HeartAnimation from './heartAnimation'; import RegeneratingSiteCard from './regeneratingCard'; - import { getHomePagePreviews } from '../../../utils/api/siteGen'; const SiteGenPreview = () => { @@ -24,7 +23,7 @@ const SiteGenPreview = () => { setSidebarActiveView, setHeaderActiveView, setDrawerActiveView, - setHomepagesData, + setCurrentOnboardingData, } = useDispatch( nfdOnboardingStore ); const { currentData } = useSelect( ( select ) => { @@ -51,7 +50,8 @@ const SiteGenPreview = () => { false ); setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data - setHomepagesData( { ...homepages, data: response.body } ); // Dispatch the action with the response data + currentData.sitegen.homepages.data = response.body; + setCurrentOnboardingData( currentData ); setIsPreviewLoading( false ); } catch ( error ) { setIsPreviewLoading( false ); @@ -67,6 +67,19 @@ const SiteGenPreview = () => { setIsRegenerating( true ); }; + const handleFavorite = ( slug ) => { + const homepagesList = currentData.sitegen.homepages.data; + + if ( homepagesList && homepagesList.length > 0 ) { + homepagesList.forEach( ( homepageObj ) => { + if ( homepageObj.slug === slug ) { + homepageObj.isFavourited = ! homepageObj.isFavourited; // Toggle the isFavourited property + } + } ); + setCurrentOnboardingData( { ...currentData } ); // Create a new object to ensure state updates + } + }; + const buildPreviews = () => { if ( isPreviewLoading ) { return ( @@ -95,6 +108,7 @@ const SiteGenPreview = () => { tabIndex="0" role="button" designObject={ design } + handleFavorite={ handleFavorite } /> ); } ) From 81c0168dac26c1d3f99317c623f4d235e155a7f0 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Mon, 18 Dec 2023 19:17:26 +0530 Subject: [PATCH 41/64] PRESS2-1465 --- includes/RestApi/SiteGenController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index cf1e1426e..bf8f8e554 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -165,12 +165,12 @@ public function get_homepages( \WP_REST_Request $request ) { $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache); } - $content_style_option = get_option('nfd-ai-site-gen-contentstructure'); + $content_style_option = get_option('nfd-ai-site-gen-contenttones'); $content_style = isset($content_style_option) ? $content_style_option : null; if(!$content_style) { - $content_style = SiteGenService::instantiate_site_meta($site_info, 'contentstructure', $skip_cache); + $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache); } - + // Ensure that the required data is available. if (!$target_audience || !$content_style) { return new \WP_REST_Response( From fa8ff4a38c7a34665a938145fd0e5f001d72e1a2 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Wed, 20 Dec 2023 17:02:55 +0530 Subject: [PATCH 42/64] PRESS2-1465 | added regenerate changes --- includes/RestApi/SiteGenController.php | 66 +++++++++++++------ .../SiteGenPreviewSelectableCard/index.js | 6 +- .../steps/SiteGen/Preview/index.js | 27 ++++++-- 3 files changed, 71 insertions(+), 28 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index bf8f8e554..115b23de0 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -145,22 +145,24 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) { * @return array */ public function get_homepages( \WP_REST_Request $request ) { - $existing_homepages = get_option('nfd-sitegen-homepages'); - - // If the option exists and is not empty, return it - if ( ! empty( $existing_homepages ) ) { - return new \WP_REST_Response( $existing_homepages, 200 ); - } // Fetching parameters provided by the front end. $site_description = $request->get_param( 'site_description' ); $regenerate = $request->get_param( 'regenerate' ); - $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); - + + // If the option exists and is not empty, return it + $existing_homepages = get_option('nfd-sitegen-homepages', []); + if ( ! empty( $existing_homepages ) && !$regenerate ) { + return new \WP_REST_Response( $existing_homepages, 200 ); + } + + // Get the regenerated homepages. + $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []); + // Check if $target_audience is false, null, or not set and then call again. $target_audience_option = get_option('nfd-ai-site-gen-targetaudience'); $target_audience = isset($target_audience_option) ? $target_audience_option : null; - // Check if $target_audience is false, null, or not set and then call again. + if (!$target_audience) { $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache); } @@ -178,20 +180,42 @@ public function get_homepages( \WP_REST_Request $request ) { 400 // Bad Request ); } - - // Call the static method from SiteGen with all parameters. - $home_pages = SiteGen::get_home_pages( - $site_description, - $content_style, - $target_audience, - $regenerate - ); - $processed_home_pages = $this->process_homepages_response( $home_pages ); + if ($regenerate) { + if (empty($regenerated_homepages)) { + $home_pages = SiteGen::get_home_pages( + $site_description, + $content_style, + $target_audience, + true + ); + + $regenerated_homepages= $this->process_homepages_response( $home_pages ); + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - // Save the structured data in the options table - update_option('nfd-sitegen-homepages', $processed_home_pages ); - return new \WP_REST_Response($processed_home_pages, 200); + $regenerated_item = array_shift($regenerated_homepages); + $existing_homepages[] = $regenerated_item; + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); + } else { + $regenerated_item = array_shift($regenerated_homepages); + $existing_homepages[] = $regenerated_item; + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); + } + + update_option('nfd-sitegen-homepages', $existing_homepages); + return new \WP_REST_Response($existing_homepages, 200); + } else { + $home_pages = SiteGen::get_home_pages( + $site_description, + $content_style, + $target_audience, + $regenerate + ); + + $processed_home_pages = $this->process_homepages_response( $home_pages ); + update_option('nfd-sitegen-homepages', $processed_home_pages ); + return new \WP_REST_Response($processed_home_pages, 200); + } } private function process_homepages_response( $home_pages ) { diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 82b1b9fb8..5710f3410 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -111,10 +111,12 @@ const SiteGenPreviewSelectableCard = ( {
+ onRegenerateClick( designObject?.slug ) + } onKeyDown={ ( event ) => { if ( event.key === 'Enter' ) { - onRegenerateClick(); + onRegenerateClick( designObject?.slug ); } } } aria-label="Regenerate Content" diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 16e5f24f7..d2f401506 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -63,10 +63,6 @@ const SiteGenPreview = () => { fetchHomePagesPatterns(); }, [] ); - const onRegenerateClick = () => { - setIsRegenerating( true ); - }; - const handleFavorite = ( slug ) => { const homepagesList = currentData.sitegen.homepages.data; @@ -80,6 +76,27 @@ const SiteGenPreview = () => { } }; + const handleRegenerate = async ( slug ) => { + setIsRegenerating( true ); + if ( ! ( slug in homepages.data ) ) { + if ( currentData.sitegen.siteDetails?.prompt !== '' ) { + try { + const response = await getHomePagePreviews( + currentData.sitegen.siteDetails.prompt, + true + ); + setHomepages( { ...homepages.data, data: response.body } ); // Update the local state with the response data + currentData.sitegen.homepages.data = response.body; + setCurrentOnboardingData( currentData ); + setIsRegenerating( false ); + } catch ( error ) { + setIsRegenerating( false ); + console.error( 'Error fetching data:', error ); + } + } + } + }; + const buildPreviews = () => { if ( isPreviewLoading ) { return ( @@ -104,7 +121,7 @@ const SiteGenPreview = () => { blockGrammer={ design.content } styling={ 'custom' } overlay={ true } - onRegenerateClick={ onRegenerateClick } + onRegenerateClick={ handleRegenerate } tabIndex="0" role="button" designObject={ design } From 8d056429559930f6563e2e88d2df774813ff5001 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Wed, 20 Dec 2023 20:08:11 +0530 Subject: [PATCH 43/64] PRESS2-1465 | regenerated api endpoint --- includes/RestApi/SiteGenController.php | 136 +++++++++++++----- .../steps/SiteGen/Preview/index.js | 7 +- src/OnboardingSPA/utils/api/siteGen.js | 16 +++ 3 files changed, 121 insertions(+), 38 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 115b23de0..054b65ea5 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -60,6 +60,16 @@ public function register_routes() { 'args' => $this->get_homepages_args(), ) ); + \register_rest_route( + $this->namespace, + $this->rest_base . '/get-homepages-regenerate', + array( + 'methods' => \WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'get_regenerated_homepages' ), + 'permission_callback' => '__return_true', + 'args' => $this->get_homepages_args(), + ) + ); } /** @@ -157,8 +167,6 @@ public function get_homepages( \WP_REST_Request $request ) { return new \WP_REST_Response( $existing_homepages, 200 ); } - // Get the regenerated homepages. - $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []); // Check if $target_audience is false, null, or not set and then call again. $target_audience_option = get_option('nfd-ai-site-gen-targetaudience'); $target_audience = isset($target_audience_option) ? $target_audience_option : null; @@ -181,70 +189,126 @@ public function get_homepages( \WP_REST_Request $request ) { ); } - if ($regenerate) { - if (empty($regenerated_homepages)) { - $home_pages = SiteGen::get_home_pages( - $site_description, - $content_style, - $target_audience, - true - ); - - $regenerated_homepages= $this->process_homepages_response( $home_pages ); - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - - $regenerated_item = array_shift($regenerated_homepages); - $existing_homepages[] = $regenerated_item; - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - } else { - $regenerated_item = array_shift($regenerated_homepages); - $existing_homepages[] = $regenerated_item; - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - } + $home_pages = SiteGen::get_home_pages( + $site_description, + $content_style, + $target_audience, + false + ); + + $processed_home_pages = $this->process_homepages_response( $home_pages ); + update_option('nfd-sitegen-homepages', $processed_home_pages ); + return new \WP_REST_Response($processed_home_pages, 200); + } + + public function get_regenerated_homepages( \WP_REST_Request $request ) { + // Fetching parameters provided by the front end. + $site_description = $request->get_param( 'site_description' ); + $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); + + // Get target audience and content style options. + $target_audience = get_option('nfd-ai-site-gen-targetaudience'); + $content_style = get_option('nfd-ai-site-gen-contenttones'); + + // Ensure that the required data is available. + if (!$target_audience || !$content_style) { + return new \WP_REST_Response( + array('message' => 'Required data is missing.'), + 400 // Bad Request + ); + } + + // Get the existing and regenerated homepages. + $existing_homepages = get_option('nfd-sitegen-homepages', []); + $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []); + // Check if there are any regenerated homepages left. + if (!empty($regenerated_homepages)) { + // Shift the first element from regenerated homepages to existing homepages. + $regenerated_item = array_shift($regenerated_homepages); + $existing_homepages[] = $regenerated_item; + + // Update the options with the new values. + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); update_option('nfd-sitegen-homepages', $existing_homepages); + + // Return the updated list of existing homepages. return new \WP_REST_Response($existing_homepages, 200); } else { + // Since there are no regenerated homepages left, generate new ones. $home_pages = SiteGen::get_home_pages( $site_description, $content_style, $target_audience, - $regenerate + true ); - - $processed_home_pages = $this->process_homepages_response( $home_pages ); - update_option('nfd-sitegen-homepages', $processed_home_pages ); - return new \WP_REST_Response($processed_home_pages, 200); + + // Process and save the new batch of regenerated homepages. + $regenerated_homepages = $this->process_homepages_response( $home_pages ); + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); + + // Take the first regenerated homepage and add it to the existing homepages. + $regenerated_item = array_shift($regenerated_homepages); + $existing_homepages[] = $regenerated_item; + + // Save the updates and return the response. + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); + update_option('nfd-sitegen-homepages', $existing_homepages); + + // Return the updated list of existing homepages. + return new \WP_REST_Response($existing_homepages, 200); } - } + } private function process_homepages_response( $home_pages ) { $versions = []; - $version_number = 1; // Initialize the version number counter - + + // Retrieve the existing homepages to find the last version number. + $existing_homepages = get_option('nfd-sitegen-homepages', []); + $last_version_number = $this->get_last_version_number($existing_homepages); + $version_number = $last_version_number + 1; // Start numbering from the last version number + 1 + foreach ( $home_pages as $key => $blocks ) { if ( ! is_array( $blocks ) ) { continue; } - + $filtered_blocks = array_filter( $blocks, function($value) { return !is_null($value); }); - + $content = implode( '', $filtered_blocks ); - + $version_info = [ "slug" => "version" . $version_number, // Construct slug using the version number "title" => "Version " . $version_number, - "isFavourited" => false, // or true based on your logic - "colorScheme" => "#fff", // Replace with your logic for determining the color scheme + "isFavourited" => false, // Default to false; logic to set true can be added + "colorScheme" => "#fff", // Default to white; replace with actual logic if needed "content" => $content, ]; - + $versions[] = $version_info; $version_number++; // Increment the version number for the next iteration } return $versions; } + + private function get_last_version_number($homepages) { + // Initialize to zero, assuming there are no versions yet. + $last_version_number = 0; + + // Loop through the homepages to find the highest version number. + foreach ($homepages as $homepage) { + // Extract the number from the slug (assuming slug is like "version3"). + if (preg_match('/version(\d+)/', $homepage['slug'], $matches)) { + $version_num = intval($matches[1]); + if ($version_num > $last_version_number) { + $last_version_number = $version_num; + } + } + } + + return $last_version_number; + } } diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index d2f401506..cf38e0160 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -11,7 +11,10 @@ import { SiteGenLivePreview } from '../../../components/LivePreview'; import getContents from './contents'; import HeartAnimation from './heartAnimation'; import RegeneratingSiteCard from './regeneratingCard'; -import { getHomePagePreviews } from '../../../utils/api/siteGen'; +import { + getHomePagePreviews, + getRegeneratedHomePagePreviews, +} from '../../../utils/api/siteGen'; const SiteGenPreview = () => { const [ homepages, setHomepages ] = useState( { active: {}, data: [] } ); @@ -81,7 +84,7 @@ const SiteGenPreview = () => { if ( ! ( slug in homepages.data ) ) { if ( currentData.sitegen.siteDetails?.prompt !== '' ) { try { - const response = await getHomePagePreviews( + const response = await getRegeneratedHomePagePreviews( currentData.sitegen.siteDetails.prompt, true ); diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index 5e6d875c4..ee40bda16 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -45,3 +45,19 @@ export async function getHomePagePreviews( ); } +export async function getRegeneratedHomePagePreviews( + siteDescription, + regenerate = true +) { + return await resolve( + apiFetch( { + url: onboardingRestURL( 'sitegen/get-homepages-regenerate' ), + method: 'POST', + data: { + site_description: siteDescription, + regenerate, + }, + } ).then() + ); +} + From be980c8d0dbdc5739f94da3f7c7628d21344afd2 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Thu, 21 Dec 2023 12:13:48 +0530 Subject: [PATCH 44/64] PRESS2-1465 --- includes/RestApi/SiteGenController.php | 63 +++++++++++++++---- .../steps/SiteGen/Preview/index.js | 8 ++- src/OnboardingSPA/utils/api/siteGen.js | 6 +- 3 files changed, 62 insertions(+), 15 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 054b65ea5..6f42104f0 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -163,9 +163,9 @@ public function get_homepages( \WP_REST_Request $request ) { // If the option exists and is not empty, return it $existing_homepages = get_option('nfd-sitegen-homepages', []); - if ( ! empty( $existing_homepages ) && !$regenerate ) { + /* if ( ! empty( $existing_homepages ) && !$regenerate ) { return new \WP_REST_Response( $existing_homepages, 200 ); - } + } */ // Check if $target_audience is false, null, or not set and then call again. $target_audience_option = get_option('nfd-ai-site-gen-targetaudience'); @@ -204,6 +204,8 @@ public function get_homepages( \WP_REST_Request $request ) { public function get_regenerated_homepages( \WP_REST_Request $request ) { // Fetching parameters provided by the front end. $site_description = $request->get_param( 'site_description' ); + $slug = $request->get_param( 'slug' ); + $colorPalattes = $request->get_param( 'colorPalettes' ); $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); // Get target audience and content style options. @@ -260,39 +262,78 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) { } } - private function process_homepages_response( $home_pages ) { + private function transform_color_palette($color_palette) { + $transformed_palette = array_map(function($key, $value) { + return [ + "slug" => $key, + "title" => ucfirst(str_replace('_', ' ', $key)), + "color" => $value + ]; + }, array_keys($color_palette), $color_palette); + + return $transformed_palette; + } + + private function get_color_palette($color_palettes) { + foreach ($color_palettes as $palette_index => $palette) { + error_log("Homepage Version palette: " . print_r($palette, true)); + $colors_list = array_map(function($key, $color) { + error_log("Homepage Version palette key: " . print_r($key, true)); + error_log("Homepage Version palette: color" . print_r($color, true)); + return [ + "slug" => $key, + "palette" => $this->transform_color_palette($color) + ]; + }, array_keys($palette), $palette); + } + return $colors_list; + } + + + private function process_homepages_response($home_pages) { $versions = []; + // Fetch the color palette data from the options table. + $color_palettes = get_option('nfd-ai-site-gen-colorpalette'); + + // If color palettes is not an array, try decoding it in case it's a JSON string. + if (!is_array($color_palettes)) { + $color_palettes = json_decode($color_palettes, true); + } + // Retrieve the existing homepages to find the last version number. $existing_homepages = get_option('nfd-sitegen-homepages', []); $last_version_number = $this->get_last_version_number($existing_homepages); $version_number = $last_version_number + 1; // Start numbering from the last version number + 1 - foreach ( $home_pages as $key => $blocks ) { - if ( ! is_array( $blocks ) ) { + // Iterate through each homepage block. + foreach ($home_pages as $key => $blocks) { + if (!is_array($blocks)) { continue; } - $filtered_blocks = array_filter( $blocks, function($value) { + $filtered_blocks = array_filter($blocks, function($value) { return !is_null($value); }); - $content = implode( '', $filtered_blocks ); + $content = implode('', $filtered_blocks); $version_info = [ - "slug" => "version" . $version_number, // Construct slug using the version number + "slug" => "version" . $version_number, "title" => "Version " . $version_number, - "isFavourited" => false, // Default to false; logic to set true can be added - "colorScheme" => "#fff", // Default to white; replace with actual logic if needed + "isFavourited" => false, "content" => $content, + "color" => $this->get_color_palette($color_palettes) ]; $versions[] = $version_info; - $version_number++; // Increment the version number for the next iteration + $version_number++; // Increment the version number for the next iteration. } + return $versions; } + private function get_last_version_number($homepages) { // Initialize to zero, assuming there are no versions yet. diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index cf38e0160..a2385b755 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -58,7 +58,7 @@ const SiteGenPreview = () => { setIsPreviewLoading( false ); } catch ( error ) { setIsPreviewLoading( false ); - // console.error( 'Error fetching data:', error ); + console.error( 'Error fetching data:', error ); } } }; @@ -79,14 +79,16 @@ const SiteGenPreview = () => { } }; - const handleRegenerate = async ( slug ) => { + const handleRegenerate = async ( slug, colorPalattes ) => { setIsRegenerating( true ); if ( ! ( slug in homepages.data ) ) { if ( currentData.sitegen.siteDetails?.prompt !== '' ) { try { const response = await getRegeneratedHomePagePreviews( currentData.sitegen.siteDetails.prompt, - true + true, + slug, + colorPalattes ); setHomepages( { ...homepages.data, data: response.body } ); // Update the local state with the response data currentData.sitegen.homepages.data = response.body; diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index ee40bda16..0c8019ccb 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -47,7 +47,9 @@ export async function getHomePagePreviews( export async function getRegeneratedHomePagePreviews( siteDescription, - regenerate = true + regenerate = true, + slug, + colorPalettes ) { return await resolve( apiFetch( { @@ -56,6 +58,8 @@ export async function getRegeneratedHomePagePreviews( data: { site_description: siteDescription, regenerate, + slug, + colorPalettes, }, } ).then() ); From 4071e8ff846280e4b30521d513ebe723280c2579 Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Thu, 21 Dec 2023 20:12:27 +0530 Subject: [PATCH 45/64] Revert "PRESS2-1465 | regenerated api endpoint" This reverts commit 8d056429559930f6563e2e88d2df774813ff5001. # Conflicts: # includes/RestApi/SiteGenController.php # src/OnboardingSPA/utils/api/siteGen.js --- includes/RestApi/SiteGenController.php | 42 ++++++-------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index 6f42104f0..eeee0748e 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -60,16 +60,6 @@ public function register_routes() { 'args' => $this->get_homepages_args(), ) ); - \register_rest_route( - $this->namespace, - $this->rest_base . '/get-homepages-regenerate', - array( - 'methods' => \WP_REST_Server::CREATABLE, - 'callback' => array( $this, 'get_regenerated_homepages' ), - 'permission_callback' => '__return_true', - 'args' => $this->get_homepages_args(), - ) - ); } /** @@ -167,6 +157,8 @@ public function get_homepages( \WP_REST_Request $request ) { return new \WP_REST_Response( $existing_homepages, 200 ); } */ + // Get the regenerated homepages. + $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []); // Check if $target_audience is false, null, or not set and then call again. $target_audience_option = get_option('nfd-ai-site-gen-targetaudience'); $target_audience = isset($target_audience_option) ? $target_audience_option : null; @@ -230,37 +222,21 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) { $regenerated_item = array_shift($regenerated_homepages); $existing_homepages[] = $regenerated_item; - // Update the options with the new values. - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); update_option('nfd-sitegen-homepages', $existing_homepages); - - // Return the updated list of existing homepages. return new \WP_REST_Response($existing_homepages, 200); } else { - // Since there are no regenerated homepages left, generate new ones. $home_pages = SiteGen::get_home_pages( $site_description, $content_style, $target_audience, - true + $regenerate ); - - // Process and save the new batch of regenerated homepages. - $regenerated_homepages = $this->process_homepages_response( $home_pages ); - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - - // Take the first regenerated homepage and add it to the existing homepages. - $regenerated_item = array_shift($regenerated_homepages); - $existing_homepages[] = $regenerated_item; - - // Save the updates and return the response. - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - update_option('nfd-sitegen-homepages', $existing_homepages); - - // Return the updated list of existing homepages. - return new \WP_REST_Response($existing_homepages, 200); + + $processed_home_pages = $this->process_homepages_response( $home_pages ); + update_option('nfd-sitegen-homepages', $processed_home_pages ); + return new \WP_REST_Response($processed_home_pages, 200); } - } + } private function transform_color_palette($color_palette) { $transformed_palette = array_map(function($key, $value) { @@ -325,7 +301,7 @@ private function process_homepages_response($home_pages) { "content" => $content, "color" => $this->get_color_palette($color_palettes) ]; - + $versions[] = $version_info; $version_number++; // Increment the version number for the next iteration. From e49b0fea0cf251c6a1f9431a6072875ff74ad9ae Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Fri, 22 Dec 2023 18:39:31 +0530 Subject: [PATCH 46/64] PRESS2-1465 --- includes/RestApi/SiteGenController.php | 146 ++++++++++++------ .../SiteGenPreviewSelectableCard/index.js | 2 +- .../steps/SiteGen/Preview/index.js | 70 +++++++-- 3 files changed, 154 insertions(+), 64 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index eeee0748e..a61f582fe 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -60,6 +60,16 @@ public function register_routes() { 'args' => $this->get_homepages_args(), ) ); + \register_rest_route( + $this->namespace, + $this->rest_base . '/get-homepages-regenerate', + array( + 'methods' => \WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'get_regenerated_homepages' ), + 'permission_callback' => '__return_true', + 'args' => $this->get_homepages_regenerate_args(), + ) + ); } /** @@ -84,7 +94,7 @@ public function sitegen_meta_args() { ); } - /** + /** * Gets the arguments for the 'get-homepages' endpoint. * * @return array The array of arguments. @@ -106,6 +116,32 @@ public function get_homepages_args() { } /** + * Gets the arguments for the 'get-homepages' endpoint. + * + * @return array The array of arguments. + */ + public function get_homepages_regenerate_args() { + return array( + 'site_description' => array( + 'required' => false, + 'validate_callback' => function($param, $request, $key) { + return is_string($param); + }, + 'sanitize_callback' => 'sanitize_text_field' + ), + 'regenerate' => array( + 'required' => false, + ), + 'slug' => array( + 'required' => false, + ), + 'colorPalettes' => array( + 'required' => false, + ), + ); + } + + /** * Gets all the valid Identifiers * * @return array @@ -151,14 +187,14 @@ public function get_homepages( \WP_REST_Request $request ) { $regenerate = $request->get_param( 'regenerate' ); $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); + error_log("Homepage Version selected palatte: " . print_r($selected_palette, true)); + // If the option exists and is not empty, return it $existing_homepages = get_option('nfd-sitegen-homepages', []); - /* if ( ! empty( $existing_homepages ) && !$regenerate ) { + if ( ! empty( $existing_homepages ) && !$regenerate ) { return new \WP_REST_Response( $existing_homepages, 200 ); - } */ + } - // Get the regenerated homepages. - $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []); // Check if $target_audience is false, null, or not set and then call again. $target_audience_option = get_option('nfd-ai-site-gen-targetaudience'); $target_audience = isset($target_audience_option) ? $target_audience_option : null; @@ -196,9 +232,10 @@ public function get_homepages( \WP_REST_Request $request ) { public function get_regenerated_homepages( \WP_REST_Request $request ) { // Fetching parameters provided by the front end. $site_description = $request->get_param( 'site_description' ); - $slug = $request->get_param( 'slug' ); - $colorPalattes = $request->get_param( 'colorPalettes' ); + $regenerateSlug = $request->get_param( 'slug' ); + $regenerateColorPalattes = $request->get_param( 'colorPalettes' ); $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); + $regenerate = $request->get_param( 'regenerate' ); // Get target audience and content style options. $target_audience = get_option('nfd-ai-site-gen-targetaudience'); @@ -222,67 +259,70 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) { $regenerated_item = array_shift($regenerated_homepages); $existing_homepages[] = $regenerated_item; + // Update the options with the new values. + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); update_option('nfd-sitegen-homepages', $existing_homepages); + + // Return the updated list of existing homepages. return new \WP_REST_Response($existing_homepages, 200); } else { + // Since there are no regenerated homepages left, generate new ones. $home_pages = SiteGen::get_home_pages( $site_description, $content_style, $target_audience, - $regenerate + true ); - - $processed_home_pages = $this->process_homepages_response( $home_pages ); - update_option('nfd-sitegen-homepages', $processed_home_pages ); - return new \WP_REST_Response($processed_home_pages, 200); - } - } - - private function transform_color_palette($color_palette) { - $transformed_palette = array_map(function($key, $value) { - return [ - "slug" => $key, - "title" => ucfirst(str_replace('_', ' ', $key)), - "color" => $value - ]; - }, array_keys($color_palette), $color_palette); - return $transformed_palette; - } + // Process and save the new batch of regenerated homepages. + $regenerated_homepages = $this->process_homepages_response( $home_pages, $regenerate, $regenerateSlug, $regenerateColorPalattes ); + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); + // Take the first regenerated homepage and add it to the existing homepages. + $regenerated_item = array_shift($regenerated_homepages); + $existing_homepages[] = $regenerated_item; + + // Save the updates and return the response. + update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); + update_option('nfd-sitegen-homepages', $existing_homepages); + + // Return the updated list of existing homepages. + return new \WP_REST_Response($existing_homepages, 200); + } + } - private function get_color_palette($color_palettes) { - foreach ($color_palettes as $palette_index => $palette) { - error_log("Homepage Version palette: " . print_r($palette, true)); - $colors_list = array_map(function($key, $color) { - error_log("Homepage Version palette key: " . print_r($key, true)); - error_log("Homepage Version palette: color" . print_r($color, true)); + private function transform_palette($palette, $palette_index) { + $palette_name = "palette" . ($palette_index + 1); + $transformed_palette = [ + "slug" => $palette_name, + "palette" => array_map(function($key, $value) { return [ "slug" => $key, - "palette" => $this->transform_color_palette($color) + "title" => ucfirst(str_replace('_', ' ', $key)), + "color" => $value ]; - }, array_keys($palette), $palette); - } - return $colors_list; + }, array_keys($palette), $palette) + ]; + + return $transformed_palette; } - private function process_homepages_response($home_pages) { + private function process_homepages_response($home_pages, $regenerate, $regenerateSlug, $regenerateColorPalettes) { $versions = []; - + // Fetch the color palette data from the options table. $color_palettes = get_option('nfd-ai-site-gen-colorpalette'); - - // If color palettes is not an array, try decoding it in case it's a JSON string. + + // Decode the color palettes if it's not an array (assuming it's a JSON string). if (!is_array($color_palettes)) { $color_palettes = json_decode($color_palettes, true); } - + // Retrieve the existing homepages to find the last version number. $existing_homepages = get_option('nfd-sitegen-homepages', []); $last_version_number = $this->get_last_version_number($existing_homepages); - $version_number = $last_version_number + 1; // Start numbering from the last version number + 1 + $version_number = $last_version_number + 1; - // Iterate through each homepage block. foreach ($home_pages as $key => $blocks) { if (!is_array($blocks)) { continue; @@ -294,22 +334,32 @@ private function process_homepages_response($home_pages) { $content = implode('', $filtered_blocks); + // Select a random palette and check against the parent's palette. + $palette_index = array_rand($color_palettes['colorpalette']); + $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index); + + // If regeneration is true and the selected palette matches the parent's palette, reselect. + if ($regenerate) { + while ($selected_palette == $regenerateColorPalettes && count($color_palettes['colorpalette']) > 1) { + $palette_index = array_rand($color_palettes['colorpalette']); + $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index); + } + } + $version_info = [ "slug" => "version" . $version_number, "title" => "Version " . $version_number, "isFavourited" => false, "content" => $content, - "color" => $this->get_color_palette($color_palettes) + "color" => $selected_palette ]; - - $versions[] = $version_info; - $version_number++; // Increment the version number for the next iteration. + $versions[] = $version_info; + $version_number++; } return $versions; } - private function get_last_version_number($homepages) { // Initialize to zero, assuming there are no versions yet. @@ -328,4 +378,4 @@ private function get_last_version_number($homepages) { return $last_version_number; } -} +} \ No newline at end of file diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 5710f3410..46e344094 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -112,7 +112,7 @@ const SiteGenPreviewSelectableCard = ( { role="button" tabIndex="0" onClick={ () => - onRegenerateClick( designObject?.slug ) + onRegenerateClick( designObject?.slug, designObject?.color ) } onKeyDown={ ( event ) => { if ( event.key === 'Enter' ) { diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index a2385b755..7f341ccc4 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -2,7 +2,7 @@ /* eslint-disable react-hooks/rules-of-hooks */ import CommonLayout from '../../../components/Layouts/Common'; -import { useEffect, useState } from '@wordpress/element'; +import { useEffect, useState, useMemo } from '@wordpress/element'; import { useSelect, useDispatch } from '@wordpress/data'; import { store as nfdOnboardingStore } from '../../../store'; import { HEADER_SITEGEN } from '../../../../constants'; @@ -15,11 +15,13 @@ import { getHomePagePreviews, getRegeneratedHomePagePreviews, } from '../../../utils/api/siteGen'; +import { getGlobalStyles } from '../../../utils/api/themes'; const SiteGenPreview = () => { const [ homepages, setHomepages ] = useState( { active: {}, data: [] } ); const [ isRegenerating, setIsRegenerating ] = useState( false ); const [ isPreviewLoading, setIsPreviewLoading ] = useState( false ); + const [ globalStyles, setGlobalStyles ] = useState( [] ); const { setIsHeaderEnabled, @@ -64,8 +66,14 @@ const SiteGenPreview = () => { }; fetchHomePagesPatterns(); + loadGlobalStyles(); }, [] ); + const loadGlobalStyles = async () => { + const globalStylesResponse = await getGlobalStyles(); + setGlobalStyles( globalStylesResponse.body ); + }; + const handleFavorite = ( slug ) => { const homepagesList = currentData.sitegen.homepages.data; @@ -102,6 +110,23 @@ const SiteGenPreview = () => { } }; + // Define the createPreviewSettings function inside your component + const createPreviewSettings = ( palette ) => { + let settings = {}; + if ( globalStyles.length > 0 ) { + settings = JSON.parse( JSON.stringify( globalStyles[ 0 ] ) ); + settings.settings.color.palette = palette; + } + return settings; + }; + + // Use useMemo to memoize the previewSettings + const previewSettings = useMemo( () => { + return homepages.data.map( ( homepage ) => + createPreviewSettings( homepage.color.palette ) + ); + }, [ homepages.data, globalStyles ] ); + const buildPreviews = () => { if ( isPreviewLoading ) { return ( @@ -119,20 +144,35 @@ const SiteGenPreview = () => { : []; designs.push( homepages.data && - homepages.data.map( ( design, idx ) => { - return ( - - ); + homepages.data.map( ( homepage, idx ) => { + let newPreviewSettings = {}; + if ( globalStyles.length > 0 ) { + newPreviewSettings = JSON.parse( + JSON.stringify( globalStyles && globalStyles[ 0 ] ) + ); + newPreviewSettings.settings.color.palette = + homepage.color.palette; + } + const isPreviewSettingsEmpty = + Object.keys( previewSettings[ idx ] ).length === 0; + if ( ! isPreviewSettingsEmpty ) { + return ( + + ); + } + // Optionally return null or some other placeholder if newPreviewSettings is empty + return null; } ) ); From 1008e4888d339dbbff43e97e511e58be071770bd Mon Sep 17 00:00:00 2001 From: Ajay Yadav Date: Thu, 28 Dec 2023 23:19:13 +0530 Subject: [PATCH 47/64] PRESS2-1465 | regenerate functionality --- includes/RestApi/SiteGenController.php | 191 ++++-------------- .../steps/SiteGen/Preview/index.js | 30 ++- src/OnboardingSPA/utils/api/siteGen.js | 11 + 3 files changed, 72 insertions(+), 160 deletions(-) diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php index a61f582fe..90eedb0af 100644 --- a/includes/RestApi/SiteGenController.php +++ b/includes/RestApi/SiteGenController.php @@ -70,6 +70,15 @@ public function register_routes() { 'args' => $this->get_homepages_regenerate_args(), ) ); + \register_rest_route( + $this->namespace, + $this->rest_base . '/favourites', + array( + 'methods' => \WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'toggle_favorite_homepage' ), + 'permission_callback' => '__return_true', + ) + ); } /** @@ -187,8 +196,6 @@ public function get_homepages( \WP_REST_Request $request ) { $regenerate = $request->get_param( 'regenerate' ); $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); - error_log("Homepage Version selected palatte: " . print_r($selected_palette, true)); - // If the option exists and is not empty, return it $existing_homepages = get_option('nfd-sitegen-homepages', []); if ( ! empty( $existing_homepages ) && !$regenerate ) { @@ -217,165 +224,49 @@ public function get_homepages( \WP_REST_Request $request ) { ); } - $home_pages = SiteGen::get_home_pages( + // Call the SiteGenService method to generate and process homepages + $processed_home_pages = SiteGenService::generate_homepages( $site_description, $content_style, $target_audience, - false + $regenerate ); - $processed_home_pages = $this->process_homepages_response( $home_pages ); - update_option('nfd-sitegen-homepages', $processed_home_pages ); + // Return the processed homepages return new \WP_REST_Response($processed_home_pages, 200); } - public function get_regenerated_homepages( \WP_REST_Request $request ) { - // Fetching parameters provided by the front end. - $site_description = $request->get_param( 'site_description' ); - $regenerateSlug = $request->get_param( 'slug' ); - $regenerateColorPalattes = $request->get_param( 'colorPalettes' ); - $site_info = array( 'site_info' => array( 'site_description' => $site_description ) ); - $regenerate = $request->get_param( 'regenerate' ); - - // Get target audience and content style options. - $target_audience = get_option('nfd-ai-site-gen-targetaudience'); - $content_style = get_option('nfd-ai-site-gen-contenttones'); - - // Ensure that the required data is available. - if (!$target_audience || !$content_style) { - return new \WP_REST_Response( - array('message' => 'Required data is missing.'), - 400 // Bad Request - ); - } - - // Get the existing and regenerated homepages. - $existing_homepages = get_option('nfd-sitegen-homepages', []); - $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []); - - // Check if there are any regenerated homepages left. - if (!empty($regenerated_homepages)) { - // Shift the first element from regenerated homepages to existing homepages. - $regenerated_item = array_shift($regenerated_homepages); - $existing_homepages[] = $regenerated_item; - - // Update the options with the new values. - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - update_option('nfd-sitegen-homepages', $existing_homepages); + public function get_regenerated_homepages(\WP_REST_Request $request) { + $site_description = $request->get_param('site_description'); + $regenerateSlug = $request->get_param('slug'); + $regenerateColorPalattes = $request->get_param('colorPalettes'); + $favorites = get_option('nfd-sitegen-favorites', []); + $isFavorite = in_array($regenerateSlug, $favorites); + $target_audience = get_option('nfd-ai-site-gen-targetaudience'); + $content_style = get_option('nfd-ai-site-gen-contenttones'); - // Return the updated list of existing homepages. - return new \WP_REST_Response($existing_homepages, 200); - } else { - // Since there are no regenerated homepages left, generate new ones. - $home_pages = SiteGen::get_home_pages( - $site_description, - $content_style, - $target_audience, - true - ); - - // Process and save the new batch of regenerated homepages. - $regenerated_homepages = $this->process_homepages_response( $home_pages, $regenerate, $regenerateSlug, $regenerateColorPalattes ); - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - // Take the first regenerated homepage and add it to the existing homepages. - $regenerated_item = array_shift($regenerated_homepages); - $existing_homepages[] = $regenerated_item; - - // Save the updates and return the response. - update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages); - update_option('nfd-sitegen-homepages', $existing_homepages); - - // Return the updated list of existing homepages. - return new \WP_REST_Response($existing_homepages, 200); - } - } + if (!$target_audience || !$content_style) { + return new \WP_REST_Response(array('message' => 'Required data is missing.'), 400); + } - private function transform_palette($palette, $palette_index) { - $palette_name = "palette" . ($palette_index + 1); - $transformed_palette = [ - "slug" => $palette_name, - "palette" => array_map(function($key, $value) { - return [ - "slug" => $key, - "title" => ucfirst(str_replace('_', ' ', $key)), - "color" => $value - ]; - }, array_keys($palette), $palette) - ]; - - return $transformed_palette; - } - + if ($isFavorite) { + $result = SiteGenService::handle_favorite_regeneration($regenerateSlug, $regenerateColorPalattes); + } else { + $result = SiteGenService::handle_regular_regeneration($site_description, $content_style, $target_audience); + } - private function process_homepages_response($home_pages, $regenerate, $regenerateSlug, $regenerateColorPalettes) { - $versions = []; - - // Fetch the color palette data from the options table. - $color_palettes = get_option('nfd-ai-site-gen-colorpalette'); - - // Decode the color palettes if it's not an array (assuming it's a JSON string). - if (!is_array($color_palettes)) { - $color_palettes = json_decode($color_palettes, true); - } - - // Retrieve the existing homepages to find the last version number. - $existing_homepages = get_option('nfd-sitegen-homepages', []); - $last_version_number = $this->get_last_version_number($existing_homepages); - $version_number = $last_version_number + 1; - - foreach ($home_pages as $key => $blocks) { - if (!is_array($blocks)) { - continue; - } - - $filtered_blocks = array_filter($blocks, function($value) { - return !is_null($value); - }); - - $content = implode('', $filtered_blocks); - - // Select a random palette and check against the parent's palette. - $palette_index = array_rand($color_palettes['colorpalette']); - $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index); - - // If regeneration is true and the selected palette matches the parent's palette, reselect. - if ($regenerate) { - while ($selected_palette == $regenerateColorPalettes && count($color_palettes['colorpalette']) > 1) { - $palette_index = array_rand($color_palettes['colorpalette']); - $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index); - } - } - - $version_info = [ - "slug" => "version" . $version_number, - "title" => "Version " . $version_number, - "isFavourited" => false, - "content" => $content, - "color" => $selected_palette - ]; - - $versions[] = $version_info; - $version_number++; - } - - return $versions; - } + if ($result === null) { + return new \WP_REST_Response(array('message' => 'Error processing request.'), 500); + } - private function get_last_version_number($homepages) { - // Initialize to zero, assuming there are no versions yet. - $last_version_number = 0; - - // Loop through the homepages to find the highest version number. - foreach ($homepages as $homepage) { - // Extract the number from the slug (assuming slug is like "version3"). - if (preg_match('/version(\d+)/', $homepage['slug'], $matches)) { - $version_num = intval($matches[1]); - if ($version_num > $last_version_number) { - $last_version_number = $version_num; - } - } - } + return new \WP_REST_Response($result, 200); + } - return $last_version_number; - } + public function toggle_favorite_homepage(\WP_REST_Request $request) { + $slug = $request->get_param('slug'); + + $response = SiteGenService::toggle_favorite_homepage($slug); + + return new \WP_REST_Response($response, 200); + } } \ No newline at end of file diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js index 7f341ccc4..89ab0ad93 100644 --- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js +++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js @@ -14,6 +14,7 @@ import RegeneratingSiteCard from './regeneratingCard'; import { getHomePagePreviews, getRegeneratedHomePagePreviews, + toggleFavoriteHomepage, } from '../../../utils/api/siteGen'; import { getGlobalStyles } from '../../../utils/api/themes'; @@ -75,16 +76,25 @@ const SiteGenPreview = () => { }; const handleFavorite = ( slug ) => { - const homepagesList = currentData.sitegen.homepages.data; - - if ( homepagesList && homepagesList.length > 0 ) { - homepagesList.forEach( ( homepageObj ) => { - if ( homepageObj.slug === slug ) { - homepageObj.isFavourited = ! homepageObj.isFavourited; // Toggle the isFavourited property + toggleFavoriteHomepage( slug ) + .then( ( response ) => { + // Check if the response indicates a successful toggle + if ( response ) { + const homepagesList = currentData.sitegen.homepages.data; + if ( homepagesList && homepagesList.length > 0 ) { + homepagesList.forEach( ( homepageObj ) => { + if ( homepageObj.slug === slug ) { + homepageObj.isFavourited = + ! homepageObj.isFavourited; + } + } ); + setCurrentOnboardingData( { ...currentData } ); + } + } else { + console.error( 'Error toggling favorite status' ); } - } ); - setCurrentOnboardingData( { ...currentData } ); // Create a new object to ensure state updates - } + } ) + .catch( ( error ) => console.error( 'Error:', error ) ); }; const handleRegenerate = async ( slug, colorPalattes ) => { @@ -123,7 +133,7 @@ const SiteGenPreview = () => { // Use useMemo to memoize the previewSettings const previewSettings = useMemo( () => { return homepages.data.map( ( homepage ) => - createPreviewSettings( homepage.color.palette ) + createPreviewSettings( homepage?.color?.palette ) ); }, [ homepages.data, globalStyles ] ); diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js index 0c8019ccb..fb004a2de 100644 --- a/src/OnboardingSPA/utils/api/siteGen.js +++ b/src/OnboardingSPA/utils/api/siteGen.js @@ -65,3 +65,14 @@ export async function getRegeneratedHomePagePreviews( ); } +export async function toggleFavoriteHomepage( slug ) { + return await resolve( + apiFetch( { + url: onboardingRestURL( 'sitegen/favourites' ), + method: 'POST', + data: { + slug, + }, + } ).then() + ); +} From c052920ce02e77352204165ef00437a43f15ac9b Mon Sep 17 00:00:00 2001 From: ajayadav09 Date: Fri, 29 Dec 2023 11:31:07 +0530 Subject: [PATCH 48/64] updated preview merged conflicts --- .../LivePreview/SiteGenPreviewSelectableCard/index.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js index 46e344094..12ca2bac1 100644 --- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js +++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js @@ -22,6 +22,7 @@ const SiteGenPreviewSelectableCard = ( { skeletonLoadingTime = 2500, designObject, handleFavorite, + handlePreview } ) => { const { setActiveHomepage } = useDispatch( nfdOnboardingStore ); const [ loadingParent, setIsLoadingParent ] = useState( true ); @@ -73,13 +74,13 @@ const SiteGenPreviewSelectableCard = ( { onClick={ onPreviewVersionClick } onKeyDown={ ( event ) => { if ( event.key === 'Enter' ) { - onPreviewVersionClick(); + handlePreview(); } } } >
) }
- { designObject?.isFavourited ? ( - - ) : ( - - ) } - { designObject?.title } + + { designObject?.isFavourited ? ( + + ) : ( + + ) } + + { designObject?.title }
- onRegenerateClick( - designObject?.slug, - designObject?.color, - designObject?.isFavourited - ) - } + onClick={ () => handleRegenerate() } onKeyDown={ ( event ) => { if ( event.key === 'Enter' ) { - onRegenerateClick( - designObject?.slug, - designObject?.color, - designObject?.isFavourited - ); + handleRegenerate(); } } } aria-label={ __( From 50ee5152c92d58a3023281cb3896cefd06aaf9ca Mon Sep 17 00:00:00 2001 From: ajayadav09 Date: Thu, 11 Jan 2024 18:09:21 +0530 Subject: [PATCH 60/64] Press2-1465 | hiding darkmode toggle from editor step --- .../images/sitegen-ai-animation.45cdf3b3.gif | Bin 0 -> 2385756 bytes .../Footer/components/SiteGenFooter/index.js | 7 +++++-- .../steps/SiteGen/Preview/index.js | 4 ---- 3 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 build/1.11.13/images/sitegen-ai-animation.45cdf3b3.gif diff --git a/build/1.11.13/images/sitegen-ai-animation.45cdf3b3.gif b/build/1.11.13/images/sitegen-ai-animation.45cdf3b3.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0e2f3a62f6ff62f89cfbebbfb729f95aa4a47b5 GIT binary patch literal 2385756 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

6|L8>#d>eHxHt!h!R+E&TDk(+1K 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

o+b*XwF%e^ zd)XTm_k!ay?@gtB<0Idr(r3dP+Rz*LdSCox*u(C8YDoSnQlac8u+tSxb^LR{Cm7~B zYk5d)1hmzyCZaoyAh2TzTwvRHcR^xx~vl{wKgG&dv%{z#ZDQ$i-6zsCT;SU9o`oMY@?WgU)hO8>5v7zIhOYa2(;D^tT@C z@dl52++$SW_cYD{GMVvOCNrDqjP)reh{wr}BKzfw`N^Y*hJ&I_ie)v!r@@$B|iKG#)M=)RhQgu0LT{#^A#ZRiU zF_0mf0pDrUQ>rqRI;G$%^VuL-`ZR-BC_^n(_D1R%l!OMo&3aOJM27!1v|K&{DdfTz z(TNf=keI`0S3250&so)@KE!4=waHC^T~AO46`Um{k%CN;v!yQ^U`(4pfOVo1Gg-VT zU%|*qdb$!>7X<1)3#-9G=&h)&VM#y*nl084uB`(NrZA(*IEaET9e>1XRxf&u&vNxf z;)`J-y^0P*ji`H^*PtixHYqPMf5rOMLI zGEJ~nlaF(OBwqA_kNc*T0BaRtTUQ#_SiLN_=LBVM2XNN{+qM6SqJ+Y58%$5k6c@S3 zWo}{T)KBRC^NqXYRwwrB)Te$oytTmW<7Rl?9LlSZ(x51dtK$yisO7z?HEknL%UW&P z_lP%xEdgYUuv8t!5~XnsZUg+=x*9l?Gu01+9n8fD`xU~+jVE(wNnw3{DK&~!L@qJp zSRzyA6aKX(m)Hk6lwpRz--wQgM$cp$V6WBZX=!G zi9Fi3Os1lxpA6wIN*UW!cGf)&t3eJ<2E);9gvpQ^X6y=rdceHzLRTHtVp=n-Fp{;c z!vflSpAW@fK`o7s8DCznwyc1bB=&X;TR)|=e~9UuhY+A!FCaO|(Y`B9CrxSERr{ux zZl$KVtz(gf>$_5!WtT^H?nf8( z+N|3IcCcYv=pR48AaC^_fSKKJ6cVtvkCrr~pIzXJ12?Z3Utj@r%JFy(cGKQQEXh+g z?v>#oa3Ziohm69iO0a;t!S0RX76)@!OeI}2zgPdwan4M9`#rs8$&|lK%g8afMRbprcTckcf13ENn3<&#(F2B2) zXPnxZ17GkRjhqc%i)GZEiO=y}6{o~on$?1l)SYV;-1Fr_{Ambaw8{ujU#wu>!#!N) zaUa!f-_&)UC@oppkj?mc(Y0k7`kmg`Z3+L`*;0mG3mwr`C+HU(k-!1W9q#2`Ls1p3 z5#GGfTmUXp0nXZb$()e1S>estBbC*!5nMM-l0KvW8Rj8C2+V{A)Ya65 zVAVa_2~Jyngr7TwUe}qQ8-5WSCRa~=+=Y#txJB1WKtdKE9BuVOQ5>70X^5cc-$Kjj5ucnrQ+wfyd~K8y_RKYn&d{9|TH#lc>{mlP-WG0P^(_{} zImY&xq19F0ftBF*$>POnou!%IgJqiNiIE&u7?y32ArzJCS%|0w#d;J$+tJ@H<)5k@ zA`1aw_rMP_HBF50og+RX5(=O*3}OFjxeo%87^p;{CkEP%h2qutSi%v3kiCk-cp(@% z-1T8X_L1S{Xm`s*oZ6 z;7AF_H5uOmHsW?z3P=83M}DNfwO2HiBsYHJi#d|7O(fBo2Pk$IDU6~PG7KtyVHSMg zA&B8Ba-S=*;$NC!Z{?%KWgY(;_SG%kVhjEwFAkO)5<)@ZlDG+DmkGilKmbzJUx&Sw zOA0|2Mx<5R9ac(J%)t;x#aIz;hl%J(tQb%gH?D4YCGjcIE_- zV^!+KM2cq4WMvSN=2mW2YF?vQx+hq2L+^=|;q~9A(3fpa;q5)2sT|#IDhwAkPb!8X zaYCCb*5f=b*mBMyb1ud{KBrIyBxG(xpKtU@d0)wMo};sV&7IBAlHEbr=d1+a+iw^(gBy3Je4I zpqs*~EBH%V%4s#;s%qX_Ysx6D$=fB$YTnW2T@b7Otz`ZUN`D@zDORQzN^Fu2r?mPd zq+V>aHR-gO;62h}P(G&|X6ZmG&jFE~@>pnVnA}UW#)d9rn5pV_YJiTls;l1Xi9%zI z*6QAQrHt08t^({w>X2$3lh5fXS`2H#(ri^4oT(t1+7T%`n%yRR2zNPZwd&-7YM;gy zsK;XKrS6rtf@`PtV}-F_K~_YUs;sq;YGuCbLZVPIQb4jM)a}(QdETs{5G{@pEh9P# zzxFH82Ce_kmgNH8DCFd5kT{?$;AbHkYtx2jk7>;Xf+({#oNjfPPyC_g$|JREt+n!G zPg<(QQ7N}}tAimXgp#btJ^^J&3nHkkxOtE-o~kisCdv(>-QI1R+N&$@8Nn8A;0o^G z?rMzgn?{W!M)v7^)uz%aEK3$02WUXDHiUmA>cnm?qiTYqJ}Q%buGVg>t$5$pc5IV* z>ri&8mXd50P)6&vQDlw*hMwGq*x+|s*YUtn+!fs2+HCKhr@pXgCbsBT5-#x$FY)!< zz?K-$C9PWus(u2g!&aB|Ml8ja5Y=9Av^v|xelO@+Y?M;z=w_W>ZC(0~YuUE0`x-)j ztnL5Vv25nLEL1w=AHZuC8Y}$IKjaG5YFcbzILB`cR~3riPjEKmK4z-(-QC4i`Z@*u0?v#aXyt}TaV z`7J;PazGO^^0w%{h9uuAEQIR$oEqLFov3H7rV8 z36AzRkF?jCF6xf$Ijb-k*x?Ks}6}0T+=0=CgZT=d?9p`de`mg*PUSR*UF$Z(; z60sl$ZDP~QtZw6rNK?TsGvhWfLpO4;J#FCpr$jegC2MXx^21hh^+t1XM|-a~tF}mk zZKZ|nVV?0ornLLU2@6lgWOA8wU2r__c6POZkfItc=kosPaGx!3@b;=~5Q~#-C zXMnI(cF{@m3sALpb2hYM^M|9hJ(Bi$oA!yTHiAMa_Z`^@9uOJx6_%p0$H^V`zsIX4_w1c9KL9Tx8m{bc6$9p=r_e1!Nx>jp4*G6gwqx^}B zc3+nKdau*0XpFm~Z~2*DQl{{0;36k~g$bQH| zC#b4$mTd%dwJpSe{<``;5MV~2mdNBmCQ}Fkf#c*vrBG>=k-28I+eNqX6;upj!?;X7 zn+0WdS}h~5+jBZyR=>~ldj7tg2mBKZ94s^>L_GggTvS{Wdvt>|n~Zydyj08l8Uyp{ z%CdT@f@*3KbwV|DLOA(wg?aS|m@TPoz(B~=)i^-t)fhMc9u5vB7(hloR%RYJes+$A zo~D*gZeC8#Zf4$2K0pQ!{~iDUC@(iZS7&c;FEEFPM?ObDH!nx1AIRm`|IdXBf{=l} z4C=~-;>f}e9cB?6l0@PNCZeib#E3;B7mf@(X{y9&QW{Kd7@a(sD5Xk9h*-K@1oP!g zlq5ApvY83wO)#9obo!(PBdRG;N~yA_N=U3&5C=X)n5$PXU%|i~IEIy*Hm=sDc?H`< zTB)twxGsZsEt|J%A#h+?#ik-uIMLS9h!aJ` zU}7p`1}c*`cJ%0}XC+BF>!5LDvgYWOG-aN?6DW1e(xy$b2^|vWO`SY>Is*D7sL-Mp zRh61T^!Eg&O*C^@s}9~f z0Q1c2)yMCzzrlb7-g=5bSX5n!8M44HA|o85h!o!}+vqaPG>dH{+HC3!4Lal?tu+f# zW33PjH{{T@lQ_!>LMmi*2;@pw!|opk@sOHaM_=(-E9eYT7bp!ymhYz4lG;VU7ATv<#& ziIl)fvdVh1Y{4uTl%yojCTv3v3M;&@Lq8SyGs6x`n?p}Z4h1pM5iv0l#T0piv#6tx zk}(zHYHaAnhm@0wIbnK)t{4rZTT;ld!YVS=?wIthR9Bf4uhnAEqqWMp>{@3_`F8Ec zJ};FcsDXim>4iW4UP*JnHPLKyvKHgqqN9)OY*0c*VRMkrJ_8lB+inNt_N77(MU>o- zs#W8}O-y_glu=GG$|&F}9S&0)HNAyDsx+wT(@;$v0Lbo)yiPk+k6N{>w32L+%{+620F@;WD|lTT3R(rZ0LnINv&|Dvnzh|F zT-J2{wogW6GdJjRuO<4?-42WwUKoLkQCP zbR?j0-nM5ACD*xfoE5DTC!%F8G2PrC?ajbc=Kal5duhQpDt>>ts`XQ2UHEmf$r78a zhF|5{Y_nQ@xIDOjuXwJA_2LzufAZlNu%`wh(;vhF2XJu34p zznOCJbKco*F%T$|7^15yVEq#MnStK@2@_176%Prlou!?;n2=Ob7|mBNGCyWT;bN z5*jeSB_<7V(n_LjYBRGO?vRIv1XLn{xJb%*k2dNH+UAM|zbnY^g-WYm(~fe0R@4Yz z`C1M?t~jc3C<*^82Lv0z7HB&%Dr}3=$sOBxSGS49jUDoM3tr%Zybg9u2z=9z-^z3V z0D$03QVW1F^9TYAFzs-L`{T=|RU6TO=7x|%B>5ECGe-6>eUTJe`xwP8B<`k?EW+fZ zG+DY6dJ+OR>R+cs3911K5E=q=5&~yeq_Qy(g1Q6f+G6RQ32rb~bh9Ns*ytBtbxCh= zY|lHbRwm~uQ!%uVA|I6&uj@%6S_;yPAR}}JIOtGB+0L6>^B`lcW)GL&tZyuo$Q1FlrY;l?U@29) zof7sI@th}*hLOsyWdlfG_BBXE2_rjg6_~@#6HW=T)pv)aeOE9 zrc$ht@#9!%QtjzlSXP^MbVZkutryT`DB09?Pq>9EZ^x%#arxG^;LO}`$;nqGN@}CZ zWv>4zG>}65#rG*u*_U+PVx;a0NtONV;;X zfC9p5ugF~ZlFvM=l0RZsY8`m32u7)u<+|W2ug@fk(z1m2YTV=cm3|n;a0kYU1WkRo ziu4q*k?1jgJz=d>hUEj)EP4Cv*SKd=ey7x%VsbRvT{%?QjrCj?>>QWtkO8@u~T_4GAcer!x z*lIV>Tqi8o{pR&$fh}WOx#!RG4zyO^xI6$1<9~H*_J4*T*69`5)Ub^$ASr!^lU}>6 zkPBiq&)4mie*9XC6Ru3n-DPv4GpDFVbvt391VRVESMwbYc}~2l>mpUD+NCV1NHtlZ zH;ICGiLu*krQTw**VsacsG66Z=EESM1nw-t>6SKa*HXLMw;h**scA@&lichmWwN!& zZAACAtELwpGrLheSa=tNQ}hOhJ*$Ij6}P!y`({g2hYqlzkMXhvT_`Q%=I8%=0NRb_ zcyB}@K*y=qaRtYGjPw+f)BnOfQVG&{r5Wd-17kYDoUZcOw>drv0hfJ^E1J2{&7w-h zUG9^jJJy8-kY0(n*3Q7E-?O{#BL%$Qfo~G>SG>l~p0TPETd2bQqBp<9x8dU`VN^7q z-(|@H+R5$jw4+Ig}Dq{Gbc@vpp8Y|74h}P;l{z9CM zn5~hzCXX|{(-WVOOTBMvKevLvaT_rAp}*r&w^PeMz)GgN8;JgCxD5Y_tg0k-c zn$p|0++x8gd%;GqtBs34ka!=rOE>Uqq8tRQ19&%g+P$9wLM#$OsH!dmIv8J5K<^SL zCqzJ5F%JlQKDgjBxRE}=@UU^%4-HH+t5YElTp_>;L-G5g5`4Y8QbPpeHWy?;RYW~+ zLJ8Lsw=LU=bF;y9Vj4YEE}3JBn&Um3>m8r_k=-$>ze7S-^0x#mI^AhN7-KqMi$v$! zm|CeoOO!A2peXIrA0bnLHYuGiyD20i!7{w2k|M{}GbyoCKQ{kdJyu-BRveUZiLenN zx8V{AO1i^#!$DkZf&++wPAU#wJhYtC3OMV#qtZ8j3b-*^LPkVH<-?1_o5U({4~e<4 z_oBwhYo1-|75nPKJYqF&yv0z&xQv@EIkcHGEISos$97!FH~bLaYM(jm96Ma1(ZN4G z#EK2;DXZhXeh8HZGC*Bpv&af4!W+Ouv@@eb#0Pvp3Cyfon!?6YhYGBV4AdnJe4Z}s zJ|rNr<-#QK^Dhpdp|rZKAv(kKTfe7j zf&9G}8_GMoEC&M2fMUc3gu-T|8(~8)&7!Km5G@^JqrU&}9~vPL%wx6h1H*MYoUlZz z(L>A7gu|3PJC<}wA<7|GjLSx$MK5cje8fro>8bX>g~0H|@X9v`Iv|6LGYY~kq_nKU zOTwj$nBr`{^NK*~i-#2`fQi%R7I03A46T8}=>AS5jSVtbEX${PoG(5*ZH>I}25w77I5NdYrO z?mWk^OG_>FP%gbx%h6Dol*RXvJ-WQ4z|uz*Erlj!HRj|=`3xXo%uTP+QLvB|fw52f zOhm&A&ZQJmgd(`c%pke>)8;&*$<)AJ*ug{XKF#dL`q@lKvjR!ms|SNgbj(sq#ndj% z)Q~&R5arZ5q`wL~QClQcm}`@q^g^10x`6+bDhQ%3o-@QbtdppUCF*0HM2D4kGdebh~;rf8j3(yZ2NZPidIls@~xP?{P zhh0aAjaV+FtMgR5iuF``G_tv~+K&I-q}&Tx6j*`w@D+NavvnmzlvUYT0~=p+S3J#C zDdbaMO;AA{9&{k4tmIiXk>+O;&?rFES*{QmRC0pL!lxYVnp^czTUA-PRox*Cp1L^FJk^rc)j$q> z-6TNPtt(SaLb5sWf)k`vlS9eD_1$gCUu;cSi;Y$Z^NCMY&--Cdtc}gA)ke_*ljHHp zI{jKjJiwQA!WTQrJEd0#yw|qnRe1o`v?Vq*v%I_Qz8DaOpA9Vd)u?oH)*31)r2V-2 z&C>nt-5J)jakHiorNiMR-p>D%QWVWeNf|TG} z#Z`V)(#2cOKUL7h)R;1X07OO9X3E<<>|ulTs16gWAra z!_P6%0zT7$P2N1t%N9kG>FdP_>e1hG;L&|qIAusfzTm{uEQwsst75(fgielx(5=*C zGtJm#^)EBF(iaBYq}AOmrQuPwGIP8()y%6Uv*SAy4Vkc4FwZ4<4{JR?>!3Hqm^ z>Rcv?0z|CdfO}%mjp8W=Ur5BDUu7fn-QwtM-Y>pnWyL8`9NMq5Ej4ywY-(ds&Sn^d zjd;Z2SajS`NLJh<7H}SlLv1suYu8?WNOsmf~S9-C!%Yw`Inw4B<-d zz8{9t{L5s%<>YM9wkOM7Hs0M)9t2W;<8K0I9KxJ(qDggACsGyS$OUL2?gjYtV^?r5 z=+!x6)a6!+kzp2Q{Y2?~CbsZ>o0;X{4pvNi{j6S5-}P10FkZK1rBX-*UMLgIblhe) zrs0Q1yEG;unVh5nZe@-omgJ4)edMr@Hh~@tX{*GyBn~{WjbeF@VnudD)un01lnXxv z(w5$bhVn#2ZQoHvVT_aCPQcK)F2{s+*oG!*ht_NG^b8T**7Q`*ogTAt9@oj0WvunF zGXbH%&_r^`YRUh)Pwi;pmG+KVlhv|SX?t$Q%z|l1p6Lzh5`7S|>5SZq2HH%f-MC(> zYyRZ=1?5oA>xW)wyxwamL&JIety$d8inc$~mgS6&YUQQe%6&SMCFv#3Ww55~<^E4S zrD7t*m9yqoW}{?(o(NxX>wuop|0-zK{{>uj#=*p}@>ip4A=%W=}-9q#R$B<%Ja z*K>~VV*O|ZX6!LhLRO6xqhRh>T}pt%?6BTv(~U%#hS@B!*S}FT>;4a1yh**?WGtX& zN%dsG9qQN~?+m{jPm5^Q^k3daQ5-Di(hhC}cG8E^#2CdlScT{Qc5&tg-+Kn00&Qsz zmcX24W(NOn1?&dmQMFEHHRCw6YlWU|4ewnH_m=aPV==8q+XYpi-9y6OXjnF9B0e3G z{VcbTs^J98lYVjR{c;SBWM@3DxdBk79MqZ?Z7&|-XEsw*gWuQ^u+F&B3SVRVMe;n) z@WVA+*4wym{&3!gO(=SAAO`3l&Kg=y(lh&;UtIAdL<_DC^I=wQrnFbZRJ_Jy>4#j> zn!Y?8$J-v)?%0*)?#@u~wsX_d=2gG&BtLaPXHAMGwYO8&!A|t2j&H+;?+s|?%oHsK z99_v~`&KhTSVO?_(j)e~JaT6wJ)yCaae{DQxbv`%pOs$EDmFTFI zb@u-j=ed(|;XYoh<(IqNs;-3?mUR;DI`(-NaPLS=0>6?0cj&+ZiF zZc_AavcuBB)pKg?_J!w}nwewatwRup^WXM`5-x0vK39>_X2P;I8s? zrfP+I-c`j@vOsW>XQ~%R@T$l383R(az4V5&8(KzGj+XfxMB!&z;h$Dx3(xu5Zg|?( zdGk(cSf9mkJ~h;S<%r(V(6>)dvCnz2KBCt`HKJd zBbt}Aag^5Y#`&GMe4cMhp0^pK_2#x~ashVD0^W~{pK@I{;Nfo3`l#u7dw0>5cfl8Y ztB*p%S9u#>UFBKdP#1W8v>zD?DbBBaA}{i_Cw^CN9Ndn*arahm9qiG6YWUvcAnxOj z#@za_^#4SdsE2)ql;C=$VwqK_X3tf{)Q2w4eOVConBQASv-YvW_Taz#;*b9}r2G~R z-sC4yP#yHiWgQ?m90&wqkysoOjYZMt35!BM7ytlq9RLOht@khpi^pOlk&I5O*X*|Y zP2O(BbGcS-RnOV>E_To`XFJKl73Je)MNC-hT zYz!AUdN?U!HA~W%c}g{kR7PSPI}Q`}5v0hGAxWA%35?h=8OoMjY{u-F%xKgiO1id4 zTQ??05b+Gxq#Pj#=h9*E!zJE3c=+l$eQGa_oqzlI>7m**D?mRh5DFdot)W;(4<%8e z2(#2hk8In9e2X&fuUT@1)rI>}W2>|;k-_{M6O$%rHLF=`bWP{Zus{DBA0a^Ss{$+N z@>m|@&K;UWf1r9!!{M`3r2?ytb^}ljw<{0|n(*os+*q-Y%1S&d?b6zoZhQO2dl&fK z;l$;tRBI8i^1**;PAhyEo3?ETv@HpH-Hf*ml1HdBnq`aTFz(nbIYU~s`t|-&SM_%~ zp!}%-T*F2f;QZ{dwIki8Xc2Ov2>4rX#R+%dTnQS-AS$4=bj)(j1SXhsgYr{5Azd_`1c>m=0&8e3@a7y)^tw_c3%^fRA8?Zts39ZiYHMSUkoh98Lg@#mjJ zXr%>8fl3myV3STh>EtO8CO4pR6VBwEVKz0Sm~}~D_Y+W%0r~$OcwT5W$9S^ICu5sY zorVW|I=11SYF)jCXP&SrG-RLtnUw)rE~%B|l1j#fpj}WZx+tQ!@Ya`vR9>l@g%{$K zlMvkObl!*J_{5!L;Dv``Qt|B3QxWvJ$?A-y;c*q5HL9jXWO@SWK>#eu<|ksd842K& zg%)EdlZhUSY@>@NOA@h2Mmi~_gE99Ubp0Wb;g_3QX9SoZDxtvvBXkD@!3GnIODKg(+MHj^O`98G&|#|K zbwW(QshFv1ryT+>NLED^W_HG7JS;wTz^d`CoSwaMW(EHDx#fs>Jv6tOu15RTBkZWc-wbJ}Wsyn{Sa+_0? z_8E=#+MI89`|4crpFQU`?OH+$?I_Yl>kXySr7)b_l@41vakf))=%G&BMz|!k}d z@u6O6u+W;Dd8Gs3>YhX7h8wyqjeJWoU*FVsz9=P3BULKlat7Bh=S)LO)-YVQ@Hf0~ zctd|2%SIqTmX64!$PO|*f@!Lkz|B#GZ1I^_oxBjiAC*pD7Ua)=BDO)h{fvVltfB`& zh(+A}Ojv>IVuhkHzrt}zQwXRUxIh#ppg2MZTO-kTj*>%~t%!IBgjo=sqBaH2sZL2e z$cS*(q9zgnB7|HW6kYNYH5_PeQ^Hy3c)Iw2(yp#0bQ7>vS|+2-e2sMgTOR zOg%c67G!9I>#^yMcznu@bo4oQiKmaZV%z@&-zG>6&8z9#?(D*3% zFf2)IVq*+m{=T%3H1f)S|C_?&MES-(h^K%WI2WvB#!3cej!xoKfGu5=LvaFq8P34m5qjKaNqenocN@$d;FfKTPKv z?^$Iy%c(%n}?9i}7m znKZosuAcziUA3$wHLT^-pjYb&|FZuERE7?s01z-&4lR?1a7{F+bv)ZeH3v>rQf7i6 zg-rv5WK|69QUHKSDOXX_)vtmTpTKkwp-jk6nbh>GmvrH$oVm%ic5)#Z=!va_TGukc z5snirf;Xer)W5z7E2(jrEv-4#P^~kuak~u%0Jf4|J~pzGm27dhdb?we6@@efW5fjd zJK$|fr)T738nN}58-7d>LrrZCy{Q^7XagVoD6d6jYc?aoasad}>_^)O8G~#n{aBFPvH)bfO+;;;s6qdr-8V1!CGLLt+trS6k*w14rwUhio3vUCw4oJ}d~N7P z43y}*>gd8YxBxx8&djeFo-J(!Yacx2_M<{3aUgk1-$Ozwkt=qwmygxr7&qvbCtPlg zH;dz_UF&epav(cnBPdlczrPCXS6EG+0G(Ht=zy^f<>D%Pe$j#=BVqP-&mbZ{cwSE>T@|aOu6}> z)1y;B?~T{A2c3Ms&Lx$cTCRd+$jq60S{aujPml6%VBAcvI^U9mz!QJ%nd%dp`s?+>2O z*p`mp(@wr|f$DfeF#NP=K@{BsHx7UmKe)N3o9az@n8~qqH3BzE-dawTt|%bNIjRjv zjJp%7?4IJU4Tao~2Rr0a2l+6>TJPopSbq2(=(IV#t;G2l;O^88e63lXY>N!lNm+-t z{o3<8a+uE?4)nx{j)KD;9oKrwkJ2&pJ>X)t1*dLA(EG*Fd@KY!sZYhT*evIILq9anc!L=yff6s#6dH6_Duf8Q&$N3BSmx z8y@js=DpvJnb`nyz3VrLymoRL!yR89Tcb8yH*fod4x~E5p;!3A{3?-cN92RUO<<9O9d}^#C@qZYpX|Sc(($>vo$S1RorEMa6?jocStIRd+rB+R_9W; zV`j}Y6Zn^Dnzm_^=V?~sZ|t-snzwnl6$9M!dDujGqQ_SZh&E5gGN%`W-baBJ*j<`Z z0!yfYuyOw~w0B~=^e}@mf`w;=y!U=s2!F?sf+nYI%cf>a2Y7BJdfb9o`k`qtw+*&r zGb4ZjyP|fYq=4X+RItS+bEijpWJh$MdP7lxrsjI$$AlYb5PX7h{oy<57lOU?bik%J zS6G6P2x*TpK3yn${`7b)I8cdpe8|UEGiYM=6LXNUgdnwqCvy%5I7&STN9MJFXft;Z z_y$DyXLNT56L^H+2Z*i}01wcMgcwu^@O6nrQnsgc;!}lQMS_yZjPkdI^k#1;hl#yY zKlU?*zk^EtH$!KrODzNuonmnyFfJod0^Fkk5ypzE0bUn|VJZV7?#MZ@Qg`Hqi+F;B zfC&EqI?;;_5RP79h{m^T%(rN~G=f`Yf?DW|2kAj1CsT-Yj5kIALwN}2ihTuW=7dolhI)KhkM>w}M2C;;at^*YersX?9a(hlo3dbKC+HZ#Y%HjWQ6qVTq*k6NoR8s~#c7R6V47Wdk&tAssf%c7YBBVm6*q|CnJZ7Ibo*(HjrEg5>7nS;mmlhvmSs#S#1biFW4rlVY1o^X zv}3`OpR(a~{K+xM7oghEoV^H$5PEP18l9RMSpQI7c$ZEwNpuiObllmUJxKooS6Pa; zG>jJXfjn~-f>&uBs-C?kq9Hn>wz+kK^N>see}SczZyK3}*@ z5h;o-YM*YEm@_DC6UnB(*?-#*suLBc_$a5^SpWx@sza)(M3<)$6k>f$G6bO8 zFab^Ki-WpbB}S1{`kL({Tlu<8F;j5?cIimb+Z ztX+zNVG2Kj(`zX=ru74@UMGgWb*4H2ikP>io46~^=B*Rke>y6Y;X1AkTCN*AbQ(LZ zcBZbIREC|VtNi$+L4s&aNw0yTWg>_-9+#~B%C9r)ua|X+CyKKI`-PSOdB5|k+KNiv znvqL~tyCGb6pOT)VzL)2ry1+CPy4Z`I;+6h4LRqol-Y#%fuUG-n811@w}-DZ>!@NY zwzmM7TPK)irJ^e;kv?0VE~=>$JG2|Au+*BgcU!SitG7_gw|je}9@4JUm8(tKmAs0w zHdvQLdzbFkh~*PIF)OoVE4jo*Ao1yiX}g<+iAiqDY|lfnbIbpq+4@2f+gfn8F^sVq z1zcr&8vzow`5L*yOPeyb3h!yT0h_r! z3wZYVso8d9dGD zrgUq-o~x;WR7eLFx6x}|7vzGdL#h*8!DVE@ta!c|Oo1ER!Mkh!m*p9(!8NQT47n&= zzt6}%%r&VwJAC}xw$duY0GxRk*+Wlgs5m^aMwumw4*GzLyVlHT)5CDsI`l! zQp$<2T(7*0jE-2#`ijf@YRi=SuQ%JQyyMFR>%xx7#Sc6G!#rirLV}?|Yqez*pqnPT zoBXgfD$2pLq}B|e*o?t{RBajvmzbBt9_XoT9K!cX%kyT!=bX+WaU79~LIbO_S^UfN zW2uQ4(J;J`fa1pX+*8`CE!z+Qa%@K0pvFf)y^j#FH{HxRtjwjHqt}ek2|XeUEvVcx zhPpc>p5?WI_q*d<(e_Ko7@g5FtIL?n!tY$L@hs0w9MJV#LvZzP5=+Yb+^spy(t2gq zYbD2#$(7z|%0eueIdzlb_>tT*rStl~{JCz?5Hw9)!cgtkf1S%5-A~h)vq-s{&&s9< zYtmXB$xc%MGvXPWUAN}PNOV};eI^-zRc+(BHm z6insE9lK?W!ExFFS3c;^U3nNjQX0-ez%tP;i=Jn$;|Z?L^NYM7UD$0N(jq<5FkI5Q z?Z`jdyjp!pXAR=1hS|A_055&qcw6d$F6ggL=!)rCFn-i#>gCr>Q)9l}t4-!*9_dtk z$gUvU&0%9nNtnPq;c>pzWlHCYmfQ5at*x%vnO(}%9_70V>xCZc5v=9&W#?M`EHAJ>~emooG#3e9Jfzy$0i<`+P>n1p6%N%syu%_F{y?*WwU$ewiqJhEY#UA1C%(J)c>7MSzT%54#jqm#GOgZ}R0H5vG z?(c)x;wPSbyld24PRt08>o%UkOC3d;xz2YwjpY^Godo|zJh5z-3kM7}J@tAg^?i}=I zKlBw&%o`u`_3pkjdY`UN_jlj_-*=CdPR`6KOP3J+E9xEY;$GkjPib9m&WP{&Rrh>>T`k^lBtz23W>`%6jcn!ov;U+CytwFBR&m_qABqUg7N`l)a8gzu%VFa6V> z`1CjNKkstBtvH9uCr|u;Zv5X2kjdXK>Aj`~ORy*O=&axR zI6uY4EBnKqOh90$42i|X5s73hnGBB8$&pT{1nL!=&00BJ?)CfCQVHe5`G8Qb*=;u> z4M&&h-LAEKuhaQ`|KAQzO6;mB2}vl?V3D!WQRXoca#E7A^3oDBb1}1%^AnU(bdg>YXb5*#_wZMV>Bulji*Rgf(AbW-`54)Z01fV~8f|Vb z5N|v0&-=SuP*4j>I0-lLmR3^Mv;7@5G(L8|-u@mxU*D9S{Wd*auYkRX@bVQ5Au%XV zkTrBzMHv`q56S4!aP5p7jMB1g)21gJIFWqxG#jH3*rI>%ShjR2k6z4uGilcRWD_U9 zS+!IG%w+`K&w~kxDr86zsY62JmO@O*txupkQpIu8HgY6LswStDGgm~0z_4TAy)>&6 zrp&ZC*|v52_U2l5jn*-$yE50{tWlVV8;FEcFBnKCaK4u{zq4rEA@k|R&% zng!({pOEU#^?dgKtG6Infqj?!O(7BR8Y z-iV3UXMVh-@~F+F!j8KH6sj%tt^;*4eSA9Vd*9FI{S@(83GZ z+fb>997B;w#hkS7xc%;{OvK6TyG+Fu&uKBo0%44i#v8>PlS~A2L*Mwu0!x5RKc9&pnpQCWH69(h|Dadi)Ym8N-}$(J~!<)U1CxD=)~PDE!Nu zB6B-RPC7lkY#cq2WA3V|lKTiTEZmeWz)2JJ^3@n2ot4&ozFUbW*AC5##Wvskby9CAzPT#XgmMrGBu)^2NckVm^V+v^B6DO?pWV9UX9 z*kTV$m077o#jhi+B&+wKVErQRwJu?;&dV9S9hhKzZr!Q1@YpnWVPDgAQ(g5WW|!Dv zeFH8}D50wCBP;WhS5@5p;}ybe{{?tkg9~1HR)3{CbXQ&&F4tjoi!yRkVT-BQU1a0c znAEEO_H5Q8EK@{xHe6jknQ2A2eVXN{yY(kmo=R4U*EVm9_-3O-=9FC|n^N-UdFkyY zzi90|8tLfBQo3oAp}tA#y6xUJ;e`8@P-dEg+?s2n0LvL{VY{-}DGwi`x75hej@LP) z`RysdxGn#ern&Fl{KkIZe(*KC%suzvzytr<@HyLCvTP{ttIyOELuFgveSze1>B~{( zocG=t{fz3pcU5zsp#obVPSd@L6ZLin<9Up=o#9VZ<6f7yzYKyU^pLA_cUo>5HTRu- zS_Qn8a$O+=s%Ed1Uw++Aqfni&P?2>VZK2f$IpjC}3TQLo+uit5MnJli4}myhjf=wn zH7QA13pRh-T9z>MCXofJc}IfYMCjAHc?AuG4e_7tqJusG4$y!pG*bdun3IEb$${W8 zRBYO}J^4)weisZ|hT0W9_~Z#sWW!&Su*Ve}j*La)I-vjy*eCB=!8vcqFW9~M@y;~SY^YUz~H8#5!f2+W8E}xUQXr(4OS# zIXUp4FrQAdRX;hJnkkA7Vf}jK756C23=y(t9c(85K!ps7ROh)hwlOXC`Y_6||vM>}a*g)^K9=bKm4? zXD91bz{QWKa(by|brDR~7S^zC6)kCbiyAwgDH8!jtxRJnp`iYXn4;twZ7+2@(FxSE zxeb#|ciUU*S}t$G-6{HFC|oqHuerixBwCqk9!sq?T!&TfHK_~N>%Nz*sg2<#VRlt< zeV4Gs3vYS(yI+F>6K>y&E)&}eUjrxTJ68N{YJ2I}yGHQ265Q{EeQ{n(otI=0p6O>b zTHxv)7{sRC33Ss(ToZOzJdaJpFR{q4OZ6?L86K>Q0UTNB>h{C`IS#Rb8#EX7IrX%S z#jRHH%VNnInQ!E(Evq8butF6ofETUijY*^9eeM{`BG&1M!AZ~!`&5>AMKWgrnBkcj z#K{2!X@J>FWe;09%RAokj|p1mnS#`pp;NP$$4uBHmpR5qR@#Qw3+Ff=nqbxZF@x(| z#ewoU$l2{PlF12ZG0)e{A9kXl5#4EQ5}M9K-sz|#95d)@SkRLevy=y2Mq;_XiP%6Xn~TjToNHy65=iJo&qvzy&L zS9-VqsnuF^9OmEt`OuAC^`q~0=Sz>Z#i?F$s$sY5RTQ3O+r?gNxz`==pAPoNIj;ADpM35PN<7K~&-25dHqv~TJmTZt zX1_1C@tJ>7%r$QK$5X!SmH+#dHSc($w_N0&SG~#qMbG%SlfLw^U;XT9-*?c%dGsom zy{G9~d*8Eu@mUZ3?uqa7w%_~rZ^wP`177^bCm;H!pZx8apL^$D-|kCA?{@lU+2C)AM zF#G-w0pE`R3+)6;kiaC60avj9TCn|4Fa~9i0+o;b#O||j&<8il1!+(S74QasumE+i2A>M{ zjF1V9ZwPHL1)ER`^^XOsko*3P2&Zrawa`2NOfU$a5C*wW3^BRylvmoN_R5V4Go`aUoX@z4)BkO#xC5C4!5olp>?kpBvC3l~ulfe-_~ zZ~q#R5f#z=4$%%1Q4%Ln6Ejf`L2&pu5foSE4XrN}OL1x-aS%;W74r}kNpTflv0z*g z7H3fuKam!1ahobpU@#FEH?bE_F%^GN7|SOZhtU{`@fed)8J95>d65}?5gMOS8mEyO ztI-;-5gW5n8>5jMyU`oB5gflU9LJFy%h4Rq5gpS}9mR1S+mRjJ5gy}F9_NuB>+v1! z5g+eSANMgI`_Ui&kskw6AOVsf3(_Eo2NEFCH~=hp0096m0xkjo2LC{VOgJP8k42<%$!t2GP^LgQHB75lt2WC$ zX1Ca_xXZno1?aT(j9$CV?{<1luiNkTL|V_^`}=5oeS?98golWUhJk~Me~);Pl9O?8 zWo2<|mX=~;o?)G2pQBWzQKzV>s;jK6uBM<`P*qEyVYjfdxMY}eW1E_jb-}{LfPi?2 zkdTgw&5O^>($mJ(k;HO#nZ2UEUAnoU;j>cUujlCL>g!LqvZS`-yQAH}Y}@u{mDc>x z)6veL1yttm5H)1U_-Px)P}8SPoVt0UXHH(JFSN$7+sLt_$8zm7hI98toWzr0xG}tg zO`*$!F#ic;WC);5gUS*jd?~3VoBy9`vPIN~kzzb?BHw*WN-N{Xj!B-Xb6T-#txh8^ zYMsaR%{F3Qh3?}?7H7fA=T~e>)mWaBO`0?Zund|umA&PiM3YdhE@6JsH-R_C6q-)$s3q_2?>&=Y5G7gD)0K>aiWQh$@X=8k&-H*qq3#hi++x>$TYG3MZwNj+yC> z;2!#9p`M;9>S4&Hi~mZNQ+nAcMXd6Yk8dKHX799<)*4^7_3f)Iw`Bp>T(l+f!fLag zGP|I$enzD(E3sLpaJdiFRWZG=l7{bc`tr-Kd};3bqqNXfV)D2D5&CJD3Nrlg%iA3l z5_v2yn=%%c2<&TxJa5b~$o_gPbgtTp%qyZNqj&JQ!(NB3%TU8C^~w}44VgXrs0VA$ zX674oq(g_@vC(8{Y$>#nrRU#jGCRHOM7c#h^_5k|LiK>3+IaD^THot8g+613oY-U2 zN_MyRN*m_d;;O2*Ro$_x<=k`IZS%_UIIHu z>@GFCYzXrXJMl{%o!C#($jLq{}ofjQHNF?Ru~z=}!IA=U(qHjCD_}k=v=d z5rBXN5zYaQYd6R!u z7KV*@4{V$Yh)7cED^Ate*`*3dMo(H$F9D>P|7K)K{?W3J_H*2Bdc(L8 ztrC=h6J;rf>A*#%u3i#!)ewU?s5-U`kF|suRYIkzTuP4~M3i5wJeNcz3KM-nBWCG} ziN<3llXc;u;VYk{OKMUxlhH&FCUKdt*8xjyX(OcSeD)~PCEx;UdZMJtX-?<$Xo|m6 z4ZN-iIqk_Zp0#XQHA^DKA?gD{eSGa}YUX4ytg-g3Z<}URp?X?B zMGTC>bu0bUQ$rNSuYB*JZEXQc-Rf4?wtM}iF-w}nUr0!p{5CikpOYyWLF zd+{vcC@PfFwd{1SJI*F%EiCb_&JIa+SWC z6{&6u)~X7-F0}V^+e2q*rNmYao@~vae<6#_xfaZ9f8`1L`WZF|W7ownHf3%n%o4x` zQn2IoB2r8{U=QB1tRZ|HWTk^s3hUFGvwd)kmmFd3j?|#Y%xHx6ma^c!ZMX&Qv4QZY zJq^=zm;CL|N!_Sb`8tDeOwMeYkvC%+PY9h>j9&K~%TBClP|JdmT$Z?m%XPBtk94I_ z8M7*k6`M}R^L_D}5q-M*?z6^IcBPzS`ClCqH>!BfbCwO<HoA-| ze(zly6=O%~%Vq;|cm7+ks7Ny`*1ZL;h{UL95|dsnI({_qS8 zc~Hx33={))taF?*rCS>Ixk=oTlvFCkmJ7Y!X8hMKVKLj?o^#y3u;(`RC6Vcl)Mj!I zjCI8H-d*u*I)@m+ovbR!>l*c7BYx4OA2-jZC1tb;eR?kEGqjnSuFIDfQ0@fs2-Dlj zz#fsoz8^i4gD+!69^0I~4PWP*tKsZ?Q;^kaILX|)#;!bMSCS9iy^Y~NFJ9JhAbw|(|!djF}$dpG7+GzSmtw1M+9 zYn7LNv==$}^KdqGPr&3{2?T)=D1j5mW{UTHkd`C~S5@&MeM3iWAh-_s!&q$h)hlgY(&Utm#Aj4=!Z%uO4NXQaE4Kw5=*3re*Yh6ia4l4FIR^_24<`GHyfv7 zd&q~FNQQd0b*?CS=!k>^>5R{)U8o0-;pbbxMPivp zhgS%U@`iLGW;Yy&aRvmBlsJFqh*zX%kS=&3xEN*eh;Of!VN>;naM*mLGH*8+LQ4~l z?L~<|6@~>li{S>6A?ZR(7>zZjZ^wuik{5fnhBtYKSX`u!4f2xg_DB0ha>-a|5NMM( zsg71jkeT?5?f6~q$X}b1QuHW90Jf46IfqNRe*dW`d4YF*gm-3CS(R9Ml^v;*=Oc15 zSXY4tUb~obwnvuUv5h^Hd{&lp^|Nb6HfjPnmvD)bahX?g$(VnLkYx6WRwap4^@Fiz zSkP3KI#?{vbXE?@O>s1iNXC(hd77xXm>)@oJh_$P7(K@ab2(-`_sE&(B{4O{G&eL9 zNfMR$XPV#En5cP`k13p0w~0A%hJi>xaz9PAe70FC0{C)88JZ-+oQV0B+IO1t z^_X<2cm=0w-DMYrcx`3JaI!g_9FaYVIEB{~pA+PpGzpx>shZ$9h6d?i<4IBv!E5LF zF1%Ph1;~8ti4M0ni~#06x>tPk$!!gWbN}}_q4^n}scBjLX>LOJeq4y22zW;%c%Y{U zH(A7>hN)jM7?AeKjE(u76grR>YL3w8fTQV@WHou?Rf>L@eu4=?5Giwm$Rl~EjK9g9 zMhKY|`l4A$fioIbCzo!q$#oXFpus4jKGtV=M}zS9pnABX-3enZ8m3A*rm1Oq9ch;Z z<#|Hqfe!b2$Ay+VN^3hSejlMqxdUM&fp}i?+8Tebe`KTcprxID9KWe898jkh3j9-eW zu8O2%x~a;!U$4S?;WeON#D03lsQ;aLn@VSPsycY9TB$5boMpPCOnRobn4*(7gU#uX zOlfEJ$g5a#mKOwxC8?@hdX7aJT@w1LnQEb0Ig++oWn2f7qbhsUii3?xE=*UbUZ|qn zO01SDf#K?%nW}`Gs-ZS!tLiqOh5334x~}Q)P95lj0t7#TNU59JQGEJ)_zJFcXVpDGZHro#?&+)6`m9YznqA7O-wLA>JE0F-hWpyA2)BmpW^ITVkugKC zA2Fp2sypkYk)J28m6)=9y0Uw@@vHWJT%36+D zORvQWt3#`=<%EJUn^3o!i2tLgt~fhweK}{Cl43fQf?KwcNpbo^N6e0XuBf%PNE8=WrU~9TAF%$y1`4l$O^Vbi!#-hwAQ#|4Ml5E z`+N-ZZdCTKX!l;j`iid$ylj`c!b@HA+hmPv5Eh%Q;G0zc<%okztsj(|jb)5aiFR#y zy^j01^}E0f%vG-Y!2k0KyMg9@9m|xti?*ZUFy$*x>{@%b2doCXt%noATLr%gEWcjc zz$$Epqq&fm8L-)Cj~MK^?P{k0x=MH$ujFWGC~LyoJG?6##6sLJ5KO`_bb=+fOqz?C zH`}>1j9L(hs*~tlI^4cN>%%Af!}eQD+(j=G+`NuxpikU#XS;x7E3a#3x>%gWL%hWe z+r1{2yf=EbHS43!D-|28KU^k)YDq9N$*}Lsr&PJd@teYi+{Q)x#(~^O=c$`_S7}Sh zu4BxI+tZIGC@-;lzzD3yY@EHUySi4l$v^q2DHXo3hdXzS$ARgw*7=_&RK?c2$g+IJ z5_-tC?8Yp7r~hS(qk(I)lT4j~va@Xfj%PQ7-D<==e58_l%ZQw;#__Tgw5IKL$}{}S zg<-QcT4V z*R;&ns68KKyCqy z;QuB~-OcT{*KL*oJ{6-i*M1Dk2EIIg{oJ~p-yrwg6)54W#ikftJMRrs3Yy%DgQ6s`;S4W<{zEl5Dn)@uGf}5=isMMW3Hpprstmx&)Gba*$L?6$mXWW zL%UlOzsQnIpKKzm;Vtp zm|CjT)$5x>E?dt1RLAHxGR*1d&a7c)AudoE}Q8QZSA)L;mDqn z$c1II$LwU>lq|l~(SF-Sj_pOP>99WRn-0gKMxvvY-J<>x;4X)){B%#*-Bw=iu`KAa z{@@NFR`vcJ?#A615ox3g>_l$q{yy;NPTuXF<&F0^@V?HsPVeL; zG1NHjqs{MFPVph#>gg`<7H{bP{_FVFB%960#kKIrVoy%Vl`alDPQqhe(^-y@-KhvWx{%&?$%JQNB<=lW}`gy ztJ=*!|KaMM&w~y&6)VA=w)Dhp^K@_FmhA9E^x`IO^vTKUDUbD95BT%}@Pz;GiH@1L zcIPLa=c>^3lq0}Fy3M0~(=d+m(BQtkt@42{`0T#*za7G~emk?>=n&QLul2pCj>&qz z_mb}z*fl=?nf{R@ru2ps!a zpZTya^gvJlFVC-Xth-aR8HM`Az!C~>3 zTsEH*;Yv2WZo9#6IU5V7+wu9idtYbw`St(<1qTTa3lj|w?;7*Ys=gwlxF{`^k}@?n zIW=WEKSMo1NlQ(Ono=vZu(+&TTfrj3V9{)EamU_t9eV-&7K7!6FD#0Uk&zdUD=re2 z7wd!-sS&NMrGb67&1Sp4sW_WX$;-<{jnL26*)fS&VOL*iW$V9l@$1aID?Dc~gG z^QMnx&5Zu`RV;MO;6n}se*PpdlxR_-K!-9^3elO)iBEOOURP-fLS%4Er{ zAyu*Lcm>|enH+7VRg355zo}BK4fKihXkEK^jRs|?jG{ECeE|n_OO>oWD_X*Vyo&W} zW5Z>eG0O>SY==aBbV3IYUA# z#_Eu9ihV;C?v;4);=@U)>P@#SZNf1HomdVaRhZ4FgJOmDi zfInm zn-djWP)H#ke5gCsHuMky4K>_QLnSMOvcnI<(||nhzI&~%^Mp(>MfI#>51_VK#B8jU z7OPP!8reKf&5u^!z=qMyDTyg>?n{1N9MLpD@!zx8A zPtw<1%knM~fy|Uo!uG`F%rs$q)4n!E6(`29;xkLtIlFnOOds)iD@?%t1T@eHi$Zcq zLleaSQ4R}@lEX$H{m#lPQ=^oqN{2$$E{3|?R8#9V?QG9l5`z&Wn#qIXnic!&aTvq8UH&1sB%v4?n>0MUIUiS^4ft6XtU{^&8RkTs?02a7B zgmbk^($%(PINFEfh1W|J+l7gq7q`VY+;&J!M`^~)6>HV0(KT9PkT(;$&miXw)MO5S zZCUKG744dX~&x0JGg8;S~Y6C=efFQtYe*< z>#iL#SxH_IC7WNfXAaTwX4N(rZrCvAd13TSRD|fE-z!>O7vic!&n9H$T0b9bOYQ#qu{V6}ae%oK+$u`^H$LFUqytkKkmNlH4FAaa_d{)ESm;|`E28pIwsc{m9QYJR}4agRq!18xLxZUr6m~);{JV%rON{@i)%LqMQ1-QTQurU`?(~ZJcm?73eEfqwA z9S=uF4a((hkINU!p2(yTUZ{9ZtpB14Q@A!RhOvdEDVP|?SVl5ZuT0j%A!6vmMjz(K zY2Fi+octq1tHr}rbVTBhl-N5a3dM=R)0f$LwWvZB3PXoH-rBGzFtzb4j9&z!!jh7Z zpZ!IKW;~+>JN7_Lj>MCjL=I&rR?2(e(H00~SJsj!y;b%RY`h92zl8Te5T1>MDBPd3 zkcCJ~d9Havki>YMR z=u#p0ldHplV-5ux&}80@4Ae|0PE)BMf^_hq^>Zc5g8G2C&b0$_r7HV3+wh8jyyg9XdC!|(^{)2?Mhy1d|QbwQ)nwTg#P zpq)Tb;|kvKZWz5CX77hV%wE?%X}9y`WqpyP)SkW5i%CJOVrl3InL0K&$z>yfBm2f0 zM|W@@6WlEtoVdhVSHi61=&&BTGP$-^!ya~Wh&^xu6G(Z=P!2I_No=Xln)ph+6%q7e zQ?GWuc*tcgASDfV$sG=OdpLgP#-@<1*%=Xyrld0@7MngZM_8vjeVh~Z8iOW3nb0Es zZe6{bXbxNXyjZp$!q}-rTLROm?mQ}Ks@($lDdu0fBut|3m4 zlAUcLQtjucCI5BzwS~6zc)h!_`Gsh-0Z{F&U9eaEY1z+Ly5hosn-?;hsGgmXhFQm# zNgIcnd;I*W;7V=TnWpqGLGHza_pHGLt#zp$_28idy=W(^8`mQqst8?1Y_`tYwYQ!? zq|lkpM*XjyVP4_Q_DkI2Rh7@$k`kwpVi936eo|~ zwHB{=H9Tk(h&MU7M0-+jYE}ZrH+3bzdChMg^PRsuyFow#4Uk;}4Vb)$C17rSA8&vDK9a!#E^xY6 zVGT*|jouaBcgM&H+hZkM;ebC!%rds1H!Y^T#+`u<`kA+Qg}mflTjk1so%7YV{`Eco zd<{gX^y*%(*k8C#3TrVhZwFv{U`#_iLNHVZ$31h~SPpKTTJQ`ee4Xx}f8!HP@rt*A z7t^NfCLrBFudYI9!=#V;3c&g>AoF|$02)wVAVA4hruuyC>e|iYM(-yOz}E86L%77RyjOeAveD~c|<5)A1Gud!I9)ex`$*vAC1E9M@r01t58 zxNZSA4+4=80g?~`F#ri0fC(pX0x8h+pbzUb%rrQl`#x~&e2b%aOP5OU?Mg5O=Sc;r zs(KLW?%ePF;BW6B!_)we236{y2#T75YzKL;DH!A@5(W$#kjdDsw0eyQjSvC=zz_i- z5u0!kmv9js@c|)G3MFw0tFXy105v+$`x3^z00GMGwASt3lxpTa(dM2C1(%H!(dw8;Dci6r6}M{WRIx@7BX1lo@LaKQj_zno z@f(rvPsmNTVlERcF^W787!ffMhp`v|5(1Ub5qm8Xnb8@a@w+lFygmdU4UH3x4LoSB z^_*(?O0XNf@eKRH_R`T}&haBx(LP*}$9xQTa0mZr5f5$gx*~E}cF_`j5yZI8ABS-u zi_s>XL?9P2Czp|Un$fhX@B*uE>l(m=P|L|003w-6v?dbZPVhB^s|+)8PfVxwrm6SV zj2uJKM!+i0*b%uR4khcPYUoat=FtQbDg366>hw_ssBFC!kS39^CIM0z1^;p&l~Et_ zvLJsFD24JbIdAJO95sk|vd~E(P)?aWbOBi6{FKApz6ZsBkEQZ9^zP6Ri;& zLCb^m$I{qJOJZ*-S+MTDGAp%`@7jrYD#_9_S8{`ljHz6bG)vPbQ8P8q zs~`VS2?xMD2l71cl0()rHg)nYeUdM0(=R6w0;ACLlJXBdEC6^-SJEk@xN$L&Q_qGE z9%HIGDKk1v1rA?vIyutLzD*^w(^mKpe>^7wgp#&6CLmKCUob%xv`G2mZ)Pwv z>u=i%>N=YaUK*qa|BapW6TB`l6FbyH10WGeluL)vL`4(uroL=|yF(-SYx(`?!kFIn^vU6f6MGG(AJHy1Ll z+Uxu5v>^$JZJtt$_|!+=gRH_*NaN2?pA#g9b?=0=6+w+b<^S+OC5Yl23_ICpgO&;i zt&p|ijRdk(Jh6;RKUGvo6g|V#MA1`RRrHBwb5&WjRh{q&qYzdx&-7+hy`qurgwsQ; z(cHxFg~%}dPU;k~avTZO97~1aU~yR)6$kUkPi=)lr?n_7)k+6bQ*B^d$rMz(6#~yQ zM9s8R#k6AwDMddhRrL~GYpYE~=osS^18?+LO6XpVr;*@p6nV8*9d#^Q5ZfkeNDEa) zlr>S8^j9DAS)p}<7*?>w#>x@bY>khXe}#Xi~sdlkM+Q0=Z5O9#}-v+A=NC4 zHUNj>VQI@lIMhR%)@fBnYNeJ;JGNBS6GcDPUs&`#UrApqmuz6vu5@i(Be4QiHeNlT z1<>}P?Da5#X*hQkZYRhj!Qsx-h;HkaSSxeKXlx|Iq7Gjd;`YxBNoEf%Qs#2g>Mmqy z-|_~U)~-l&dBYWBz13<>wOnJHf*tv6jMv0af-RjJTjLoX0Z*Iq6pSlBif_my?i zXC@9OZ$XWRyeC1yB3Z>p&K%TcITPG$@pmWezMADFiT40Dz<8xBag+B6nfHJ@HcS=R zRO#nbck+RIZB4m1M!j}(7dJ&+W?kDgbkz%OO#ipSu4s#R<~Y$8Pz^`;R)skwlUU&w z#~uiG#gP?yR>5)stpN8Hi>*5Wal9zNa0Pf`oi>QK^ne*RV>6aRIM!oNReJT&a(U8o zKNov-4JR>|g8z_gQ|lo?i%OnEL&!JgigV={;BC>j@Pby=a5i>icXlZgP67uN+tL1H zv2SJUZ_V;|n<#B{_&a^rcnSCc6t@XSba}lsW7ji@lNe1w_BBm)duJ_#)>H~9P)2Jj z2_FzILui8u&3>4Yko+oPxXf)!m|BR>jC~b`*YGQL7Jgp}@7D2CE;C8Rr%`9Yjw2P1 z|F762WywB{Q$0j<2RH?SScn^7kS&&w$^Z0-uU16`GLfa%E}PgVE4MGT_iM{_dk->J z-3#@Y^4z-VlMz$PIN&q;v@stwQ0EwqS9q1#IQJeahBs4p&R!o(-OdZ!_jnPB0c9Eyok_~dArI@Z989pJ}qW2M_GxY>SPe<>xMe(!`J*ObZ zxr|TP24h&2dx(YEnw63Dg&$5yY5zxe@mB>0;z95^r`0V0`uT^08lVl>m<8KJ$(2-< zQDg6NOcfcTAXus&xr%#|k|jH+Ft}VL7-_XS$|wMBz8a$N)qGdiN9*{wVp*0;Wu@EN zt@n;#!x5G>CNoj3cgxIo_%OwKOP}|er~MkR1NndlfS{8aW0iV6o7t(c_9h##ij(`Y zt=MD@T5BKCv_MQ|knD1qLE)wVEgSO)a^y^Dhv-B-L>I;G>6#NRlkHJmz~)o+ilR#pk>kgR{f7h7YT253B}joQYE z`o~f9ObI(h`y9w!Gsu@45;HdfClRh-HNj<5WD$JbNQi{uXRtKg?vgwM*LI3v289d6>t4SijKcOhgR0t@rywZ`=MKV3kVt3O$9n85hc0%2; zuKm2TDaC!qecrr}L9Ryq7^r2P&hPxUZQaI8G=bA|feqPl3A@)_Q>u%+CxN|t4L#uh z@|m5SdmG%)=x3au=#%SJSE=0_AynenH@w5V;&sooUs*`Yo38Inz3H(??8~o)0s-QD z-PwKCQ9kwT`e{oyU0j!Rv4Rrn;f-QvaEP=UzAWjaW$vaa*DeT1`?lEop-D?e?3PEUTXQa<%s ze(gbZ<{x)1BmWm_@jW10Gr(=0E_>3z8o-Pw-nYZK9mF%n9Z7xTOVSlke6~N{AUfz)3FdHVmE^zg?DZ<;S^mc3ea~Mr z?svWIOSC-yk?!~Y*Vpw`bzk5C^XC^^O*0wm#@#+d58-LGI%|N$)e($65 zDS!H95KS`uwGs7ax&D^h+`WtbqX$sLHl*yc^`|8u_0t{%;r+hjz1|Hua=r9ZjnPYO ze+m7u=9}>D8IfI^5C|X`K!YeW3X{q}5&=LA5K`xK`ov(fm}RN^@tnS4%mFb$lq1p! z^U)1p5C3K9fnXFH%;5XhCyL6?b$ ziIrqISf{wL(Rh*nGqLBrhGjh<#xzkKpvX(9l5d-#XrY&E< zY=X+Eb0<$%K7aNE+VfRSnY)19Jet&IEu2M-K|S`eKyy#f9HO(?j*5sVABG=WH=B4dzQ)?^&X zv8)s|bIv?`BQ_*Tl`C0J4UMdru$j4*-pZsaDC^cjU&D_5dT45;OlLjCJ*%nFrnjR4 zmnxbM)@B^+oRkKwgEbRh7Gv0^qTAZ)Y0Kebmkw^edwwM%+;z(Ioz z4?Aps5CVO|6qG>8KhZH3{*l{&Fxhh&XG#a(@&G_low@Sd=bGHM*b9WL=pofh8TiEP@$g{`}KFxe_k~A0UZ2E zvB3ylbi-MLc6=7$gfEe1+KDVWRhw?Ki5TLCgAy8>CmR4xK(W8}f{QJ=p@Oto%ma6l2!;Kar4f|!EsvII86)4^5`R3(*=1QslaMysyeK`V~%*R+9m%b zl2HP-7eNOVBv5;{&gUL|if!DVeo=(km=Y+xDFO>){mTsrC6U^7L~s#F zWO?GHx>t5)zv{5sPExFKuI_EYYus@|w6T5^4V(9waHc6%fz58gGRqT4bBBYL&P?;t z!MTg`Q7ZyX=+Bc&PPtC2CEcyjwmE)uZ|^cqZ*k3F3XRkuyuh!g{#K*4*RLxK_FJdA zy70qeubsQ@{TB zs8TyeZn^m6R-V&_OL1GvqB(P}BIv+P)$|^t+grMF)Tj=^Vh{W%@ay8xZgyfT+mX0A%{6hj)8uV;Ydi64=YK1Qhvaw;MQyyPW1`eg-Q(FjQ!zp($rviQ#%UTaIi zwi7l2TJcF)yrLGRL@|o_&OL9-SQshDo(j@~3dkFi1|hS?=2fyJe+yyi+&B%-pfH7b zgx}*_=!}4oX(Lom#EdvJAiJ=k zQ@PPM9By@~;5xJl{@}|6zm271md?Ou5#+Kk7_6h5Sj=g8P{~CvBDS7DrOzuFn;#7RDsRg>lR#DKL^&B$I#HGCRH=HcVi+^D5k22l zx!Tp!ZWVJLJ*y$5SgnFVm94suY1{VIr(dubjaaE*r|b>ejP4%0&CO3MhT~c z-3u3+`$aMSbc_-?m>ESDrvI31pmG3V;1FuP!QySnecsom8(U=!1)Pxj$!HU`!zn8t5Xz_U)VPmr*lB1D= zUowUW$@&#>8dKYCcUvdU|G{($2u3h+YllE5H+XH%{h~c9EJh0hM8mc8SP|G*$t-L) zB!p>B3O0MV&zQKXDwZvabEsY!!#TzrkjStgyJasAlne*pZY954;*v5H#d`chXw9l?t;V_5a=vxANc39! zrl`JkcI_f$;%C|h+bV8#km2BpzfyBbt^y`7!>6EzXFof+fR!`?ms@~KUmVldrtlaK z0_uYiHG}`e0uh|Zg%E?mV;VU1ToFLxGY9*`io0=ZuNqMpmR8>M);ToOdtX^}RL^_L z6E*`LXh9QO4yaZlvXlK=ax$D*jfObH-Pzb z>CdYp%veoQnd33VI>vEq-%M*b?_7qeZ8QHeb-dyo7v1PbC-^q;g@C!zHNZf6x?az~ ztY$l#>I8r`D6vl1jANebnkF8F=kZv0fCO)5!ftjAO|q2}j&=Pa@ollv>O8iPTQ5}C zMCWb$o#%ZvuD!R=-7M?&`TF1b1+;AmU+`jYKy@eJtO`7+f|YAUvROXk zS~sk%F0R;4f7%Kkmn@eRVs_KhF%Bv1*PQGa^K_S2k5^@%4(*3$<2^>hF&iB~8ud}%08k*4kqxz39&<%l_g$Nny;1>q z+}(hhKQRVUogB)oP6KR3o2X6$u%7?DxZdl{+(X?^=HOhs>E8~5k7{|3t^wgj@tZZ_ z*PqRxzztr(J;O6Jfbxw17L>)2C7IMY2D3=tI#l3HJsM3d*aqfK=0%wIO&F)e(mBjh zKk*YSjm#~To^x0d9F3a`s#N>6o!f~Q{KcQI%^k1hoUOqa4-Uou(OvKP9KUrGFAyN{ z{h09;p3)&+2NYQYI$)ATAoN|(vt=O`THq#z%@!Jo?W~gqO4+4poCkiNw$;USk)UL8 zSo2gC`Vr2`twEu6gv%LD>m4B;%ACzb!V3xE{Q;tT1)~fNq9F+)zSSJNft2tKp8?hn z(qYQs0az41-J&%WW>kR&L=FEMELj#_;PmyCCyJsM$`crdp(%3Q#a&n|p&>1a9zdB~ z8}bM?+Q|BK!~`rM!QtZj!QC#};Q!56oZZ?m>Yll@*1HWNY!xCS_**a};t?X@Gcsb3 zk-)KK4PG@~B@PRYTp=fZ<8X;%w1px$W?klqq4#OpJ*6T$mf@C7L_nDgsmfKH7M!PXeAGyn~jTA&W<3twT1UTU(Ng_N-*2+y1H$vQ4 zx`k(=6TygMagn6MXdf7!l z8bU70_Xy=s4x~}m+l;MNo&h9^2qr)x;=dK3usOr99bXApWLAz0HX4`|FjWL{reA?3 zIF4r~cH#h>CHAGI#T8a5rsheC;0Vq|EM*v(Bu|-?3`{!D9GbyN6dAG*4o=FTarCBd zu3KQj8XpoSa&{FBtyT~!q`URsy{Q$zL8bvtB~>aQfJUN%Kp;rui_37*1cK#fZlZa* zg;@@eabcbIoumIrhM@PUV@q-yx7nvi=%-{rKrYG2xHa9{sl;wl3tt+jG0>ds?VDf@ zrg0vpVS<8$9%GUwqyWm6g%YSUO637kr9Iwb6H<@KS)+f6sbfe(NT4V>fhJjorC5gL zXrkvj0LvB%)_9DgX_Df5K34&JUTfN@*pUee>gbQoqjK0sxdmzKT`3L1pD_54jgi%G zGO5oL<)k|4lPc*CE~W1wCNl8yq$oQCEnR-6~YC_2h0t{6{C{tD=+A<2>6NO0*0(Ihpf9e@hxfEH+xGAa%}CsRgh zVZK+T9;N>@DdaIxtM^PR3t4HRVyTuwqcnb#;6Tf7K?ccKV#-WXXR@i9n&`aRsusQ} z7q(N2a-awD>T1eo8G@QcFov1LhmNWqU6FvxtlWN%fd<^m0p{eh_GK_Q4!iN+qn1{a zYAl0N=;N#il=`2h-i$Ij<%ND~h8`bfW+$qKDTqeRB$cT-4Ob?5qb6P;t)6GSvO}Dn z3MtiTl$@sTyeE8mo+_SEKmC(zW`<_qWxv?w)GTXW(ut6+gt+$O9eS2%HIC+}S8-zNks3M&P>R*tj&VuH=gOv z>g@mE9@jcup3ovLe6l897!Q=3VP04SMhJl`iiMyiO8`iN+{&cXPA#HVt;7P`c)1Aw zaSyzCYqgH;&x9@664JNw9#CSc`*7+Jj_Xu{s^OR`!d)gn<&9>#DmMo1Ox3L40&cCI z=c7HEg6V2G_Nxej9I)QaXDUX?y3b)M|)-hs;M?y1^s%ce|0DQtN5mAv-t-@+=+f+UfMW+zqL&+=;r z60HapK)|Y^(T>SLv?AroVOYq?_JRfB;FkA(ZmYeW_$nr(Hs|@GFW5S0l(Mh3c5DAo z!f*Tv8v}SQ#4@6weFgSTPxY1`HnytoYUU3MFPf6)i3%_gr|1#i>zf{M60@jUHt%YR zBz1j^6U-89a*3B%&;|2I_7>DvxWG+Pt+PU92xDy?9^*ppo^o!LVXm(FTIwyFF+*|` z>820SHDm44uysB|C3!%C3{FX?Oz#$yw4j8`{V%KN}xk;%1!j zAT4;LVP0qf*%_-Av)?2&?LCedxq2{>Mo0*c2GN{u37hZ(8t;N4y|5w7 z;M;aDxlXMe*so=EQ1!ARX5}puL<4c9X%PePBIoQQ3oi1KX5ng)7;2mdqT~NMJ}=mT zO!5#*7W4|rSgs4Ki3XU&LEYpoi>oQ4GAb)$ixeWH0HZ6n@hj7_S3wiEA}E!1OOkFX zZRv8B+O85>ZsHl4f;5$Pl4(c)F*L|5f_>yN7jFPNa=m(DNWx0KmeQ^&E}hy1tE?h7 zQ?Ox7ZYO*43#>^!s$dF)KrcIMpz))kwzE%8DLlusJkPTm$1yTy6>-Y+Upi#l%J1L- zG%wo$qIuACyoo_q0XA}m59f#PzNvYBq#_S6GZQex@vN;9j7VDD7BO#Xo=shVU9hSl z$;f6Fm-IL{)fdyEC3Ws?m2zh(>ZJ}%rplL1Qb#>|^ zQSWiph%>UWY`gBS4>L4+YCuDW&G6D{@iMaCQndjO?%*b`;ZmHPmZT}ps6NPrcW|5N zg~=5+4`+ljNyOr(e3`=@wgE~kO#fqo66cblu3mQn3Xe}BxwD<|U48w~Ujj8@!*xI# z-@P1cEk4Vdc+7{nD>oXmWWQ>>mgq7QF+{KFL<=rOBk`oEUg@0*6Z>HXIxDsQx5Px^gMs$cLa)~$dGp}cZQ8Q_mcG13OmQBQqn>B(okBuAJ zVxV4*Tg{G#u}c?dFqLskCuO7Z_JaPQZv$eJx0x)vZs`_+BEBt^XDA08fC|pHg){Xa z|LzY%LsZXfW*aegU-p_xHD{x`n<}pY^D8w|S6G)IH^cZEo!manqIP9gTU(9G@pyi} z^pDR>YmqQu-`tUpkD?pq-a%--(L!SKB9upYj~Dh~2eki|UV4^mxiDv=!oKTdgL#~0 zH_a|`sgpa1@2xZ6YgR*YXge4OieZt&Ih4HSi@#$E@&^u=!T#{^6V{=$`?!w*IiZuT zK0A3`2RLveyFK&uv}!Gp+wwIL-#?RbwdZbgED_5Ja*jlS94PUZ2d{SvaNmmjcW<^| zx#?%;ss_5~(1Oj9oOZ|wY>ao=$$c1hmfFIO8IRI7egpbTn^=GMkXF@QD|4)XC;8ET ztqZ%Z4khTr1730~H{s=Ra}$8d>bj{a^|mL+%3(LSd%L>R>+p{HxQDpBer2s@^;U7gTfk|Vr>{`K!cCxRD^ zV@7;oL;f>Py+jUl9|sP`gXkbfwzt12hno`zR5m!0eW{nd1%7;qaw0UNddnYIol^6= zyF6V~mv(#c z;0h1CY2dPQOC&GDZBbW^1W^dX&fpfxvlkq*H3f%D7^+i!GMR_;M>1!?;`~pAG9X z*{x2i*>if`UYFhR^nBm{2MiRP8!QauL-hYktP@y!OM8TKY@1|@e4`xG+}!N4sseoy zg_0U|;y4&df?0Jz02wKfZNNaVy%n-O&=A@^7}y0C)({>b7(h-&J~m!r=*#^x^mMFs#E5DzCeFGnvg2ww+iCm)YTfS(_z7oWEU$j8`suZ0jG;0g@(4&V~8 zs)?){zbxX!fEVQrF z%vRe5P3_vT$i5X*_U+ubbam~jV+a3FZ@h5!@cHx0Z(pr`0|(~91yv!F01uzSlE_5E zsG^@NYt$IVqb86)DOvK2vgA$DHf6pvO;h!1K&c6(9IexlN!p?3_-q7JQ_!JAD_<;? z)KnCvFIcsL8f#W!UAcH=^_A5av94gBk;Q&id$qM;y<5K?*Dbcb<@w&N`>q{0zI+k5 z$CuBa{K8Nh7=EAs7K()vX{9Oxvd9{!h%(DC(jtqF7F>W6G-UJXHjzM+qcqnpM2$5K zF?{W`))cWLLfj^d(6&r$bAuC2d^4&FQI3Lfss4_0>OQHa%H<$lfQfFH>ZY46t!=dN zZmjK&R3n+d*+!>Fv9MG$}p^`0sw@?KA@m603(X5 zA+M0CtP0E++{}#5YCB27+$hA!Len^84Z{rw1(eUvb{c8KJWte(x8AUblZqFWvPhIy z+Vmg*8wt{sxf~A~Mmn!16XqHYz{}2=vbfVu$?ue85>+Vay7HVU>tb)Ozs9L2OZo-_ zpn-o3D@aF#26SjsOes1AxJVV8vx_=+GlRs=u4 z6dirE#VIIjHaHk3FpkC=qk@Pq=ibxN7arjvRT@&W!7f#@klZdwuw4C4yeE?>FCDsW zrE)!8ujG~2`8Mtc%uW9xKp_`JDELt!)+U&CvDJ)UuZN~+-rkus~ zkY}G)$`)Or)m8VBJB9Ly#ZV*_u4z#kV8~u2(!@6)Px}oO$feAp4w_TDAyUp8@pSe*xk?!2{rQeMgMkv@!XqDttXU?Fkr2~e*&| zJOwRX73$N?K2*aQj_*RN5tJWWcqq)Jh-NK(1n1)Ct_(yWbn+VF5iyl1S#;8BiOCyu zo+vPDaA*GjUrXB+vxvLh(Jnl(;^M5n*f!w7V|euNhn6^&moTkh1+PoY^ZF*oBT#Qr z^Q(*=r^UndU2c)tf}!{hNj{&^kXtxpA?7rr7PHfk)qQkhM7cc@3ZnvbB+%hdG>Q_W3%&}fC<)kMe(7zo03oFqG z*mk}a9=3>0p70zSPpufsCq1w)zl)fZ0E){q{_0n31m+usiG<~JGJhm=!W~Z-Cm_0P zkDLEvW*;pI$c&QDkY)`OY<8$kk-E^4cj}=J+r>0Wsq}O9)1>KQ%0GU!@rl2v&OA+d z%4AfrNUL0BR_#f^#eyeFv#e#Vmg*}E?h;If$qE1t5=@2`L3t{eYK`7Bzpduct6%k= z;!vVE)?&10XoYQT9Vb?8<_Qve;$b%>sWePhQaCFeC+hS{wOM?!IsIzqQU-XIoib3B zKV9HZ8@9lA>JBctvQ>6*MZq!#bZ%VA;PU>JAE}bCQ!c%#f3jNI&t-%IU5)5OSGY|` zR%o??EURoes^3JmFQgAT7ig~KKDkb^x1!4`5lw-_;mQ<84gZfsPZWZ-%h851+x^PdqtwQ zvVo0-*e#Qao-}v&9=fz_urMnO@_ulb#HBG3Y&oaJqTSXkIF<`^lc3pGQ9YE)2+uh4lXp=Av{UOcS2Z zBpFQCRq9lamV5)eFwVecsVAICmy{$%50rxv@O3{H}_y;-t%0_{^~banEJ_oCLj=Hdoa zsyTWhK3AI}-6=D1u(dDxIR*?m;;F2sQar7gKF!LHD`O1o8@M_$IXJO2_L73G${x4^ zBt?QaJlQ(@BBap^yU=5t)B7)rg1^ntEdx`qN?9*V8>f~6H|77hy;~3mQ1g*x=si+n zhOeQypvtfcQ?&$~oddL|2z0(zx(Jw?XxsW865ZeKJd$- ztoyMTEI(&+!O{yC^-Hor>$tJYttQL1k=wQd+rj%|yAt?8qr<(LsyidRCnPbx1Y#w? za~0_VJP1ra?K&!a3o-N1!smkkcknme^B@m;yClf6O>&cj3qdIp!5!1QM_aAV!#eXr zKO>97uhY0cx z%NKpgJqZ&&YG6k1I7~%!LZ_6svQbKWS}X>%M1KFGNQt~ebjU>T8Wznes&Sw`7~4OQ z+$0l1uuD6`>p{tsoWWXz#Ttr9w|vcI&d>%zhYXJxXTAnAwrld z%&$mFvvEcQA}VTpO2$mHikw8GQU)yi9WA^{ka>?`sHwyNnHgaW(VRSH>9*JNv(zN3 zv~0E&1ig7=&q0C9_VhYPt4aCvFKp9C%NUN5+s*yVGfsmFeZU2GlAR_bH32-z0{k#} zd#9#kEHsnEs`NRaqs(*ALXF%=js!UBJBSqsPpdkoZYw!+BugGs&Cg>t*=)5z5>%My3BW%4tMU&l=s& ztOCf;{D&>engK1&!wSB;Gd_FjFy;h{2en2k#J45QM0BuF29yp6`^FBO9&i(!y`<5V z;nGzkyOn%J)e=)ABUAXCL-fNfR$Lbs)x+DwP1B5#IPJ;5gsB}hqaKYN;Y*lqAV7m@ zEK}nm=5$O7noj7fLTtn?x1kFzvCsm*P>*apUFgnmTscy-BT2oaG8|DJOFh&}!FPm5 zPhHV%h0XTVy1JxKo3yt3#7`aMNmc*-#UU8R2YWGCYsw#G#w0|Bc>OQ~<(M3jh0+X^V8OfeNT(+)^EL`h|9w~ zd@FW=vNugtbX~6lc)aY>vRC~yv)QmbMHN%KSBGp)1)ahxyhLG5K3Yq>O?(o3XuMYjTb7;KKHVqZ zfzSxWuHZodxUDl})d%nF$}3fZg*8``Gs%ZNOV2~gZ^hP4WnA}M+%YX5O|7r9TQZQN zwA-aJ%iS7vZ7_c`E;oWTh56CNBrK#%pvG#hM{H15Se8vet*l{KXw zZHCdkr>AtxTrJ%|#ak?_B}C;!^i=@YC0Jt-xDKUV4ERMJ#6M_7+AAo_!wFT0i$V3& zUkf4L(i2`4tzoqi*T?_$ST@aC7a>XBL|4HHT22d=28PwLl_!QlN(rW-nPuV&M%}2q z$SGL|560po4dHJ@00kCB+694y1x6GG(MTcD`(32-Jly?_NgSS9Wt-309AE;T(Y?%4 z=e^u@1yIg?E|)cxFgrd}+0z6qT`rQ$US-nX5xgp?m<~49=k(dRGuUMXHZYc7f3#x| zq*Rm)V2YFBH;l*r9bW%!Q6Jl3Je*^4MaA(fS&|hT3K&E=D@G}$FugNORYOWC&bgN@ z-3M*JNkor#s1huOTVC})3@lSXoRm+PazlmMXY9{3y9%YR6FNp1k;F=C<>;oIcHraACE~W>BW)g>L9FsX1lL6AMwh5P5G_GhQgzj20Nf=eTG z2B6MW%w+%k4zA{%of=(}M(KT(ELmge4p!eo4!Cyh;$=x}G%0M{z3AM!EgSiCfwiRcc*ak&xwDo*b2~-Gvw!#8=3NpN-YdHK4wmSIa(5TJ7q~M%}Pp zR1zUe&DH1+R@|aT{*`Bi+ZgJ7bV+=O*x)9aJm6+vZzef;HG=#@y0oX187`-{NU7 za1gq#LpHW+*tTKzTuWEv=9~0kUIb^Z&2I=dY_CXbbMEh=RN@D|Fs&}|8FyQ}o!jUh z>qGxOT?Y3;2Vc4+=x*QwTxXV(E7)DuQc0UxWAs*UhIVqx_w=CkjQZRGy-J+QV>nlWXm*&+^ zhiR>}2mIM?tSar({%7($HcOSbJwNYI=J4T_ZG~nW@;haG{8&}CB>V$J{O)c126n?1 z#H-r0a|Y0=u4OT2L;+XsOD}NfR=!}a#IpA6pEVYcl-&ncRewzNokS2kk7oR(SXloD z^e3NnPi0!Z9`sTzbY8bVMAvd(Z{@EYkYMQteIRbUTlTRrB4_t^L@w)|1K2B`VlAe# zWTojJUu(8TS4n+X6GiBXLo|zx^*4TK)kEc?QR+7BMauPc`OR-d7aZtquzQaW7eCN3 z*D&lw=>h+Ds*GET3HVRv@xF3jh2QR9r}Le+=$(#hyM&=vXL4?p^|$PEu_M(GXZPjh zO)`e}-3)odrWefpa_W7U1Hx)&u!xuEdV`NjTUn1CH|x)~zEYpOAP2@?k8q#=`DkXJ zh_CBEAL?_TMRjlQFXbizb`))6>Wn^dr;c}whHCv0ZX|{aXv9?`WcjXt`C|XR#(M+! zvESmG$9cbv`n2En`y0!$1b3mA_@O8IS+{sax^=51bZ^$lA+MC^(DIRQeH?)?R|vH4TAdam)O2Ab$8g`}^NKh3=x1EJH+|Ee z=zSDfwP*ccUv%yt{3O_8GvdtZ-8lwT{ASO6c(%;PXTFrSrOEg4nifwRbzTvzaA=-p zTMX*N#cLoi$c93qv3N`>m&hjb35`0T!fLg06=Jc5t+osHipSlG`MgLo7@RhT@FvLR z@4Ebe&(9Bg0{^~;@gV|3_%i4*xB}1sfZ&KQ5P2|ANnnY2IiOkDxoQ750N^=FT55WV znyPv#8tU398Y?^7>RDSm8i}B*3t@uz3!FGiEP?-pzF_#_k>lPiBpVwl*#OoE#VD=ZDwN=g+@BcR&a$1PlWL2)iJK zqC{yxL{6%bt-6RYqehIeDs}t_AmlAnty)ErgmRamVk=oD!tjTg%w{s}NRvhl4YqYz zzWMx_gj+guLyH^Aa!WJbGuS;p69Qjvaq_1or!i?2e#=zzQ%5xl0nI zlMyxY^SCjt+_@uP!F5GTBuQ9zO{(4HE11i{AY#rutS?_QoH_pme9^}9apa~zD}zgl z8L8&YoP%at2i579r&7a=sb|kkzN}mCbOpF)AXq;m$R<4d=n=}cZC5Fq3p}`7TqW`1 z4QUFO-McAM+I~K)L0H7pwZd7pf1MMz!Y0^{6P*szt zyCU%FHJRZ92oSa$wn9U@q&0~|8~vu7a0)KCTt~*`wNWj)G}oVC7D6|IVbvi9&2`t| zRLx{iJ@y@VLS0r~iYlh4jtuBUm0pbOnT8r0s@X)7e6GC~(2n})R|19%F@#n_%U!gL zaSSfGAaSpN#ELC^F*hM#ghBVgF&b`2Ut-v0r`Pe48-ape z=~4h1aJeClH%+6RnUk4$=80^s%4(YD!84kRlF2F0R8^^w!BwnjRUd!<{0c}+8fp-L zkY_o9tR#t6vgj$x6!&Pf5lZ>dkx`D~7loU0%F>pga_HfxA&RM9PpGEaDw^r8Nd=j2 z!W!p{wZ0c0j)~Ef$9=&1_+zjx7)xYs$~Eh(G7d_M@LtryrPs8VR=LoHSVlM9x5|k6 zp&O08b8g2duFEdSA!|liWHZt#)oJk6tK)pF?b-j;K>N;y$F_qavdFP$?c9l?raU`k z!a^%|FvHdceYArR4-nYIE_rKlO&K#5VvOE+=cdOWt2=Vn>4@AWHzUd$>r-2tO>e!c zc^T|3df?ZuG6zs_0)_xU0Lj4wBmJqLN(v1)bFe_^u#?(4J=if(&xEmjxsqBnQ(0rJ zHM**Lz3$hToA;_{JCzN3tu(G2-`f1}lW)ud=>cdT2N=}S%_v}?v%tprJj!g$SsJ*s z2N&%yrmpnDEnx&L&iFGRra`CVm0Ny!x?g9$`4g{}j568t*2wa`YX{`^zJJQ}&seg{ zjvKO(EE{x3$5-1s!q7g*JJLx%nUa-=UkLv-^3B*JuBuHgY}|Ps^uR_v1QKCvvua27 zXjCWCJuYKX+mXJ+H@;!f24Lz#%k7wzI}QCVet;`Z{Z=u*;Wejeb=zN-D&{{gEhZ=J zIh6soM!*CrP=_Ug6TE13w$V|gd)85m1urPG41VPe0{PeZ{DZef6lqzDGND9ZLx~iU z&`~2iAxDgc5=Su2g)E6-@&HIR=9#P~HoV~hr&m25B5*|Sl93(FrZNfMBv13HS@@Eu zME&r=X6Fk@BObxCSgg+zGMmGLj<&_&R0@)*Fx+ygB#HmHaC~Ou;|y~GBR9U0MVaFo zd9GF(7-_G05wsJYc2z|CT+mN6vrhj^=!UZ=J_2vHV;=}xLCY+9F_OT69}2H!mul%k z0TR=sOBC11izz06YAj$IMLEhi%5j_GaF@9xx5^-jbBNvBhjn^&pFaX5KeOo*0cr!C z0tjrLima9f0wR#({Ee89nj{y6N4yr25hl@;8XCbAIdfq%o7^;IL%-oXvZ0KX^upES z99O|T{c&~sxmOd7MZ2A?4|lETkwA>e&)@*Bp9_0Mra}R`;t5m{{WGIE#kDc#6>y;p zh2uki3WXQ>P&D#7jSwxmM{~l`AL-PWpD?(LKM;~ohD25(6BP@S_9GMyT4_pEF-*E( z3!p2wQcM#E!)S_1W8<0?PkaAbN}mE%b8dRk1GSenq+;}5z2c8L@fp=v&cS@noZYc( zx5!rjDVASeLd z4x6mps70&7td>{lJ2e0N-3|q2bs}M)`QI+FR>0eV)pZLz4(lSAx^wK@9YZ%K2$R!B zdz}wWG^$Rn$jvb2-NO@e34thz1d+0kNX&j)6RaT0cq38=x%%GMAUe2PPB9ow z3}!-fAh`rxE_0`bW}VQH&C=y@T;U89^bqx~cpNg3?X^@S&$7>Q+wAcIJ?Qiya@LZV zP*)H=Un@2`vX^>fBv^P`NxOJ3{w=c+qfx3dae5nW7VW2bcwKM;xv1_@?P_0k%Q#TINGT;XccHcjgdYFdDytWA{az1T9FD1qJXd0b$W<>~jVfq16a= zoTJ-peS@v8ZVhKq2cA@s3(}7k?i1AP@P{}AngZf}c!&vv5_j*;;>Em_x-}{6*?qiI zA@}5m>>bK{=g`1z-nZ4YiOL_-xrW^BZo&V2aHqbumab+-pc@fo5Ua1&DKREwiC#F# zGEBdM33FLN5C9CEcQ76ZK+{G3$+qq^>z_^evq3$;QE%NvrH=3`x02_Yaa+7v4U3L) zUXYEu0PX)$hPa3aWHd^x8}3FQs}=9osX=pGA$upxyy+d_=dw}FJe|7Ar+ak;lPO-) zPT5iIeCnkt)jkT5t<7uFGP#L4y|hdF!!=dwEUS3*q?dbefo*rykAU^b6~XKMcT-Gv z_L@>}v-$a*d&8f@o7r7Fxdd*Ni|#f2JA&<=7dta1v(~l5(tJbou66=4Atoj`)VF1I zk#QcuVl2UN+NToT2V+flQ)$FXvQmDwhkNLkeu#%X4ki!rfHuIVE2qPM2iI+!1PJ)x zQ4OF;Bj9lhF>Z$ibf8ymz_m}+cVAP|RSU>~+Lw2F2Z4VlV>Gr#7kGZ^w}FS}Dg-2L z?$`f3XwynoQBK~~SGzEICN(n`lPdt$f5FBAfN?icG;0IG3$*YzT2y_>^k@aZOvT`X zt2Z|-a8^twg#R;gIpsq}c!Wuqfql4O-(-PJ=z+gyQNag!GFM>;_b1+>8b$O5gye$v z0e}IMH)NQn!W z$Cz%7bzPI7wRllR zWMtYlAQ)6rdlW8ya9o3u0v`7%cS9uV1$qKgZpjFcTeOLj6p%a!jD!Y<3*my)m|VqH zha*RF+u=D884fxIjz`IXr3E^57G&_}co=nxeMEc~MqF5w_rdJ9XCy;8nmJm=gB_Nt_xnFVFPSk-FXC`~A`BoUXhpq{m ztSF8wH;A$bm>NlNtATSK2@^cxo40rsI#OPt$({d6P_zL7hg5vUD4CK8T+LXSz=MEe z)gX<gyJVaYgT)36`PkTt$dhurv;|6@_wC4I@ji+ zWf~j2>6;o7oahLgfe@^#>NfsxuF3hTD*0ivil>;Ur)apOOsfBu1nI7Xc0m~Mqk!?B z!^RR*npsiF8bnxasan34GUfY~DIsG}oJ8u^3Mmb4+wk!&;yl zb*Sw6rullHFDZQ#mxH+GVY}L-g+`&kN&&(OvOB4$gCMX}nwrQ4N(h^<4GXmD`G=Xx zKoA?BxH+F?+E;#bWq!shz=@7TmKFD8f7@oYBKxLUi<9{(ZYPUtDVv~@*|M8Ckb~-B zTuW#N7h7cLmKoYiIm-;-S#TceTxxVOKkJ%88?<^`sXlg*<76unYoir=qfHhwGRjUd z0ku%OWHD-tz9O@P=BtIqweBjmfO)mH;zyH)ycEj3o*2E(`-}suxs&_3)jPVRd!hV_y3Z7HjS8vM zRAW9nzOjqJ=4+JgdA_7pyM#!K?VFD8n|%1oBb?MXz=^7G;9sg^sE6yq>o*BRgY{ohqvwYIO#phRk<->^Twk%Ns${H#FMxL3*jnBG@ zOsv65T$I)No*;Oe+v;^|MM3oeqfI-6L}nulV4PEH!eK1Q^XsoPoV;T@#s!JVVuVj$ zX}t^F0W@350ILXjXNtc$O&?lv*7Il+s& zWQjb<@3@Gr(GZtR#>i~OzbbaB=E(yR0qZ&-K3t6mNyp-uZH=Rv;`==4>B@Y|$Kl+t zD8dsi7i8NL!cwRW)**q_yC}%Q^(+4$eKX1U*=@cYw-RBD9YltP$yCJKRM8B| zKH9_Ddk{P6lmA7qcMPH*+{)kF#}wI$J%o|j>J)&ByWC2b?cC9>^EUWtW;bD+!zav5 zTgdxx_&I(=DYap%Wj|n41m@B z!lPBq)mC`5Vm;Q@djOUlr8fy<5-k6h-Zf2Z{eB|4$3ZREJNB@6^@I<$*Sed__AAxF z;!c2Nn)+~>V649)eFw+c29Hdxzx~c}i`d4f*<~HFZamhbi8I{Em`6r}m$uYE8I+Rh z)^9!6r%lmK>|@h*t(-c@>Re7t{nt0D(u?Jr*~ZH)t=k%wE4~fP$%ot1%&#Osy2c%{ zWDVB-x)Q`0jL8Fj-<8S~oX013V5uU}*Nx!V-KBMnzIR{n-VpwAwf>adMX=s^HnJ z-E(HwNS(e%3m=61sU!K?A07WUaDxmB?Zq^=3k2QOcyLc&G3BlUqw+o9S)SrruHsf( z-(ShVhVUw_=EaF(S;m>U1S&rqFZHyrh=1B*jWv;qItilgn-3Qd>ZVu<04x8>`t>?^mjThnI zJ;kt1aC=VPNv?46j30VNyn=qu_uN#A&gF=j=pWfs_3gI*`hx?3YMx!kIjzfT{*Y{r z>6(u0oUZKsW`RTv#S}%$wtVLtZK@O=-HXHI^*8I#?B#>b!?h0XC;r2jjod8`J96lj zG^@CiuC&#jyKPnM+-(2g(7NpPj;Yx5=?@;oqfW?RLd8~mu&7j z7)q>d3#VEu%KKW-Z^_@GoOfbJur?*^9&NC8Md02{@5yfOBOlisOwM)o?AjV4w|wXH zjA`YXj;I;X+rGA0PP&vW=xlrI^Zn0*KJhedv;Hf}n1|l5XULWQT=9PF1zy@D@AT0c z*Uo;?K_2ST&hl4(s(Rkh6JF!MentR)d8sqHE579jkL%&}!Y+*fj()DCYw-^6@IxQt z-g|7-PVDz)?DNj_P|x>I&#*eK6tfJ)dTnac4%`86_o$wm6-0lDf6_l+_O-qXAwcUS z3-LhD>ybW7zdrx4JNqRaKj2Hh_oM&xr60?FEBN7Sj{J`G{_gVQ%D9cl`7$KkU0mXj zfB7i>qYZqay$|=95BzVxQ5kjSB+T)3JANPEk|!%Mtb{`dS?>G++`7SC6uL#;mZ#kpdh@kBXi>reLEe$+e zO}p*j?OM7{eH}^4d3tXccQ+Q&{+?43pY;&6pC4ere*y^>G&t~JDtw4$^{Vwyki&<- zC=#>irw<1xP?jm9*0EVMkxQO^)aYbNwryR$g&XrSO@K8B%9(T5j$O`m??_r(CNEe$ zLko!(?W8Xu!lVhAHg)QwHE|*>tyqO&yy(>!M`|8XCJT9XWJ#VT zqhM31gnkUe&tQXkw{HTQ!dQ7;+ zt`)&{?wry87+bY$^^`O{7`14(RcNkc*{v?@Zg%h1l!Gpg-@iF|l0{Z57(Kr%n>zT<_r`gcF)DfIQzbV}IJecB@m18}IMmvE~FEkie+?O9Z+?65KDM26uUov#%uFF0}55IPI-tnlsC#orIs_6ckkvM+>ED*;Wk!$Y2SE!P%9td;U@45*;1Fb{S zGGvjN(OOh;iq&c==R-PHJkc-RQk;W4w)CS%Mj9{a??xTXJQK~vDvP9{t*Yb2!C$E3 zMY}rxDdf(qBtI&G!}6R=5*jN5>*+SWwq)nZ?tlx5zoEqZ&#@kNv@y*}EuAzeA1w=# zQ_ZF;(#}wk+*8lg24m7Uvi!Vn!zKc~($Jd@6|~iluygP-tsdPK(_Sz2_0nJstOUVH zhKf--iH4LD)H;v6vs4TJOl>sO__VexwcLTV9o%N+@>+NZ`%)-g$?UOAV1-?m-KW+p z);c$J!4=MCpI!9MjiTL`)qeBr)79QY3N+Sl!4((3jbO|*OkVS03|)2GotR>%9%+=n zjIZ((LVJ(AH>{KJ}=bp!WmqBI! z!5kVGnnBK2&_2P1YB-%QUDLfi! zxkck}EbvZkG96i`etFBQz0^8r!3jUzaKu&b8M#KH+s_eXg|0V3I*oSw*`%{p+HycQ zXHsBTy)8IJ(W#ldt6WWAoO#q;DJAjMqnEyLqGZ&V$e`PP_TKD96>H?)OCJBbrwM%( zj=e*NdglDJjHj_whr>lp%LLxSI&E&?3ny{&Q~)7=5fS2Ara@Fwb`kJV(R zw7-!~W6N{i4kMGn4gOGZu49v<7WBCP6%Ah}6krOIW<%bw@NOr=8|XkM!@i8}Z|>6% z+Ty1}9;VKRKon#3?D0BG3EZ-q~6VyWylo)-=bOAXvf3?UfD8&1#` z`t#x!qZdX)juDZGE8`FyCluI8gfnXd;2TZIM1_eAPvPqj@X%s4z0E37$CF@KNQW3k zKFoq;QzaM^*-Bxp3614?q?@+a#w1qKmLc1nCh3?h&P@%NE|X!F`eu#)tQ~WLBTVHo z3F%5_vTkwu3mg}#k}O~>t8KZ|CMl2U$2m$%bDiX)`pC)0CymRE!I_TWP`OH0`mlA+ zl; zho1A)=yBvHL`|iwAy`?KBy-oz1w<63H^d|XpJ+fmwTvVQbs*I`_b(>|^pDA$W<@RP z&W-+*U5otDPKUZrZ1(e{mV~28Q@TQz`c5z~m70kPg(8GyF`eq9S0mZkQ=f7)qd*mF z5Y5=Q5T;RtwOr{Xak^Be78I^7ypL3;NK6K{Z<~PRUq!zf*0KKol{vnGrLMXt&Bu{Y z7fAe!TX#9YxINa1PwkHR(vn9iddqkZ#p%biS}(#fj;~(rtHk_TTEOzmYg{uMNKM(M zM|O;jj5XkFBMVvIIqhx(^PEDFP{XzQ6Ne8<+aO2#yy9liw8=ef#X7j!<~mM$Y0YL6 zIZ|CFaEF&rwGZC%hQ944Y?~4d&Q^&k+T)rxu*+4iDvQe6!WL1DBAxCfZ))3pvG0y) z5oTb{`Jxvo(MXIcA~VrjVEln~y$KFtk@bac)R35 z#AfC-@Q4wtTm_4@C=GjWYfagyqpnTD*?DVrGk0Mr(zUYxSUjP4W9-?jg_gu7KCqBa z>`bA4*1?6XrYw!fwxc<*!k5D^=gj9@bb2_r*Yt5d2`u9C78%TFaxPcN%qgy!F}_Zw zoP9Hgz`3?r$5;;Vhe3R^Ks3+GL3US|`AnIg5p}@!L~}KxtL7&Ybg~Z3P@Lu5V@GGD z&PvYnm*aWdK3{rRi6LS%_xizNVGokE^ut=ASYH4?8r5{3*I9wAXG-@K)3Ii+M+N!Z zPZPR-))Y0gXpG%awlUSgRwuK5T;_UC+STcm^|Fu6WkH58a1MsLy>C+wngC;=DPtY6`Ym++-~GzK6_dT1(on z&Nefy3r$OSAAH#KR`^8EHcfzcIp3tUG`}fM=?CAs))*J`#@)R&NG}}ZA*V>3Xh+d+ zcQxXb&NPuL{#SgI725s=bc+WL!p9j=Z9>Bgk#a3upJxwOj#T$Rh@0#}PMqZ}cRBMm zwMc0T9G}xB_|19#bAGPP+9iKboU;Dfm_t0}>T0Ia$-ZYz+u7f=b~ema8(*qNF6XbM z&Pe@`*0+Q9;mr=a*jH}cvj5%hYHw3fU90h$KZoW_cKa-2^r@h4c3de|x7Z@^z( z@5c5~#)n={_!5hPi+{V$Aul^`rybvwFR|+XF%S4k+xqb9UiZ^goOr2oeDt}WC6M5i zchMUC=t*yV>l1VGj5nS07a#n+%`AG+t9H|PuaVFX z|KgAToNn3%FZuir03*=-CU5{LP643~_G~VnB+vNlZxW^=0SPSg{xA4eFYru|0xK}V z((mOEulLmM0Y{L_=&t}}kOWH*=~ONSRgeHLZplE<(=_h_$7~2uP68uP-*`|7S@42Z zYyn+x%pfrJZjcHkP5_q>3nS(U+iUaxS}^t0?+8&a6n5|mv(WXV5CJ)l2BokFC(ruA zkPOAp4CfF9FHrv2unoVk3ir_L;*buD%nGB90lDv8^pFqXFaYJy5C3qiYLNeYuLIA{ z4H5DBv@Z}Bkr6GBxFXRIDNzwW5fnoa6EhLaUJnn6PzX=46A$qXF{%+uvv@)b*xB~cP2F)|~uu_b4+4qp-`V^S1pQYSyrCVNsP zHF75hQYZV-Cqwf3f>J1h5(gjBC7Y5BoiZVjQYt5sD2s9(k!~upvL>zaCRcJJwNe{- zC?dJ?C&AJzb+M<&5+~1+EyYnSyK?N>GAZTKBHz*|qmnN35+AD)A+NFwzfv!G5gqOF zDMgYh19L7DQ!x>fC&%*l@{utYGcw)sF4qz;CsQ(|@)`ZIEHTqF#jGz$kTO4$G(od7 zFB3IOlOWO3GE-AEGxIh74-+qAlQy4eHfs|$aT5?_k~ekJH-X4Ce=|3QGYMrgIEfQE zN3%C`GC7CSIiIsRi!(Z>6aJKwI-&DAvr{{j@;J8>JHOLA!xKEmlRV2)JkJw7(^Eay zlRewhJ>L^P6I4MLltCNR zK_3)CBUC~sltL@?KrhrnGgL!2ltVidLq8NmJyb+T6bnO?L{Ah&Q`AINlto+AMOXAi zV^l_AltydRMsIXRb5uun6i0cqM0*rSeKbggbV!M`NRJdrjWkJ>lu4J=NuRVye-uii zluE1AN~iQnvs6nmv6M@@bW5ewOT+X_$COOP)J)H`Ou-aQ(^O5@)J@+MPUDnK=d?}b z)K2LXPw$jMg8%>_`2+<605||Fc>n|eF9It900#d+gK$Wc6_3cIa>-;0mQP{y7_CYT z*6A~g?QXr`?^Ylllh0-}8LMu)-|)CQ(Wcwc_xxGE*Zco~fqj2FVq3?Ve5I@0+#fu;RGe zz}?t!*N*?y0!};hj9@`K2cr>EC{3UoU%>!I^vA20#d+W|TH^G|)5dS;+KC)#grrGR z?^2rcXf7j0eETZu1IQ1U!S{=qw&=yv2(zh~nfxRQBPvj*P-X^yK9frq=t8$@?y!CM#vjFOOv~aT zOOITvk5{R3U96SyNUBhuwnX(#v z%mE8_YTKUq;=Ef)4bHy(D#%`^mLpa8c=G0EAz9?ym;3b9*a?z^2y3Z)#EUnGiI^kF! zs@oE|2Aiv}JHx63>6x{OYNnow#_I1-F{-NX#;Ial4YbmcN!zlpkvK4J1>Z_mo0To> zGLkI!wxoLN*?Dq4uqA8M&J6BlFUA}P&1JQyg60``OGS7Qo;-H?XnYB?`SR2-mjeQ8I*To>uh-JqD3O%%zMNj9Ni8pR5@nFdnTp?mmwTv*;c$158ySm=uq`R-- z$gGV#*Q>U@T#{`ztBR9-xS@ykr|rm0`~CFgH9wg--kh71sZ*IB3%GsBN>MUrh&DT~ z;bMEd`0I>k47ot7W843;#HHix=)-+i)?s9w2S2W+#L`^n|#o8YSNTPcq_rj+pT8H2S*)zoG3y4ZMs=&9&li9YY+D0*Hdr5_4S9XAmIx( zxO8|+lT2n%Mz>*I4M^t`p0E&@rcXgEDcs`T_Ima_V(3qH)4N~w9EU;dMXqA|c}^sh z_Pv^6CP;`eU;330Z(_*L*)00J8RG?=fn~K^3aE;THUPt_rF@bONzx3*H?zLLSVfN zc*SGjd7kDZfm#2NhFOFa7Z2n`q2Z5@V5COv{IZ!SRncTevC7j)-_^9qu(Og*O_;eLxv)yX zbd3`w)~8q+s)AlIkIpIv82t&-P~NMPn=Ir`y|>b~UbU7tm8A-4_S84Qk+SmP+cig* z%X=nspM5fGKrjKop!ip7k){{}cR$HYII>)s~yiFZnVq1vDlz2?4(=sng!+7QFXnGtQzKnZZ(*iWL zq6PnAbBmHvo-&rLGW1c(W(m#eqA#8^v!;F>c+2hzBe=n};6TN@L-LyUvrkm;7_un5s3swtQvR_ey$k+of>#_&oA!4^OW3 z)v+|w1G@QA6j}Z48i{vmO5t{tw54UTn%BHRCyVxjh2z#Ci#SD=E>yb}_V7bD9Gu$1 zCxs@gXbc@#1*A@ng5mXMftAeSMl*V>L~Ssfkyb_c**S(*W|)>O%VW^t8H)8ZS=;~C zo9Gk+^U;nzaH^Y3qy2$!pAepLLT##FxoHlGoAy;yGrYds`Z$|Z6x`{?7+?XrPGbgE z^Qu|R!AP%dRD|@JV)?2{Ui}WsJkGVIv)!Zh@J@NRgdlYPir9goIoYUQHl%^_xJd_A z+~^EPo%iZOToq8;P_5b;n@a0&&oCzZ>2I9Pd}gwudqC=Dwwt;0HG`&=jAyzgy>Fv9^GZ7Gj9;x?YAGhKQ&oNr}`JFhqa6KelPl#*Ly z#Wpr!56!?&YX^O%r9o0U#{7ktEO_KzWdN0VJX+2 ztJ&|M@4cUL;IG@|YsWKwC!4rFKFGaK3eZ*wj)>a#=Sg zgqFvCvL!>dXMGaXKc$8x`&R+WHhK$SfrpnrMzdIZf>AW)ShYrk`?fb=xENk|V@4=_ z?lU^~*FV^&2*R{~Zuo{%$cDieho|RmszYhX)F??sOVX7alGTU#W;IX*Vq2Iza^_pF z23Q?caEj=NZODj=*otsSg#{e?#DT>mvtTjY~dDgWEO#-g^0?C zY*46*Og4j!I9B4fT!M6Hj3;b@qfWUVyAZM2ucdMkW=W44VjYC zD12ZdX{07ZI@ou(XKe(@Z6w%_`Zi4~(_`$CNYRWC0PMSc9Q?=*pkh-l<%mNNa<`FC}U7o zkhOA^=r?ySRD`zGjlO|(4fum;6k6VPSmJI2X$t63oD3!N^RgJ}8MEI4* z^Mza)hAq^5{PrWZc~B%5CWxb$G`MQ+sFn^1R8eUnq!@GYhK-KWFo1}4yV;dl)`dao zYxA@`qzRp&b(C&7o+`)>&XG@rIMm?Sf1 zMmbbwiIz`Do-3K02D+T=7MqBGR?Q=h5hrzD=4t=(*_-ycK>8LbUrB$!)^?M4j){)y@Cy3DGmsa&X^;epQ*=_+!bg9{tBpReI znR3i2lSYc7lVeWN^^x-zb#V1cGCHHIpq=gWRv4O9*En!y)}uNUq9xjzV49u~d8DHz zGIxlJR~ar|8IC&{r53tGv}JRhAa7KOOwwkGWvOUsS)z^ErzEPJ2)cbrM~wx!qVSn% z`Wb?nxsjdenL0^vAsCWanxbfElnHr(e9D?Ys+t7)e+ELPTqBve&p2x^LIcjtPc2`F(5MWr@5I1dM}@hY#@3aEi9tr+;M zv;!TZ>Vf>qq@R;_8K$ZM>xbg1jeTcm&Eu@l+NA=@unp_5nwqO^rl3gbb%q8dRw;r7 znz)^PWkuvy zsa|_-VOyR@tFrd$l4v8b^GIepScwLxraE_Jiz>HQw|?sqS@p!V3QM?OitByGb>Cw>`E{`>MY&o^t7o~iDmJ^eTf3Yai!Pglc=W3li9~;ym+Z7>-e|gvRJZ=c zKfqPF61y*%ORa$0snGkp3Te5rxic0kv)L#A&u~!I;au=lhQ9>wUKiv4cCk z2`p=nH+fciguN1@60Ea!C8sMGa?Pr@mRiCdoWl$2w*(x*=o_tR=bT%Mgolb}-dkCX zS}yean_-E(zIwxYy2BrAz$=Sd2J%7Q3SWPzpIwH(dilav`bX3`RSEUsyJ|eeZ*0XUoKbiiH&u0K zdDn3O3&sPRfI|#{MG3`GEX8cx#z~v4@QAw()}VHXkI9#f!RU*O8clp?V?8*I$Cpd_ zS2S+Hw>rGZZtT2NJgxuR>avRWT8Z1oEUbrjEXh<0j+cSBr)0xTIDEvV$(`)OY-z=y z+^eihs$7S^YKoP_%$rh2%A$B^L0hsMJk1Md$mV>&K&-<7n8kj~g>F)Py1C6^Jjq#* zdo)av${R@J47-ULqPZN+=={kGrl3k%s>nO)P3bH_Jz{ zT>IS8NR5(9-M9Zq&Cyj@)7c@%){BP?e1IdZV+^f8bUEKOSjWFH3u?@$>O|hS) z+oijmB;DJ4e5DcNcM|AwQGC?L9l#fk;$c`k_{~i&$)@L0?ythO@?3w$ldL-3;x|`P2cvN;`$BS zv<-laQf)>Y;~E*sy5;uBuqf~`Fsh+`Yh!fbkX1ioc^ zXi>qI(#ovCk=^4%tDZu>;zG68a7o8p7gti_;r{5VIPRZ2Zo(!`z5h+FaRkAlE#}5dhy^&7 z;XLB4?b>Tz=$ihTYW{2&8)zQa;nl6m4-I7YSLw}d>CFA(D8A`!PUxLpZg&z2+=cirXa3bz4(Mv`>aXtLXlL6mn}XrWfVu8Dc(r*))w(L}=YNjr7ftNB zOxuWO;o^MZ7lE-Drnr@d=Sm#uR%wvBOYPo`#>{Q(gO2Uzb=D`UqWuQXL!yUq+w51` zojSt5sIKm^INyd2?^@pKt6tPM-O7{qE%Cf(k!5}|vZJm#RDe7?Y@YW?37yNWn zeu~^q)F#R9%xm=T9`glH-WgxwMt<|A{Y>NDM4x!tprSKeZSkru?9Ht7FfYAezt8^@ z+ifz=;fY*L*GB5g~k2Xy|_Ps#sLAYsvZ{4h)v*AkDaC^O;G%LY{9p9^`|cV;D7io&-`=${Kx+F&L92}IkN;a zRd8)zzc#tkUIDUC`@)|7bYI`P&(ui|1cJ(tC^Qz2M&*(zFbJPc>C-^1I;;O#?Uvj1 ze!*e!SS%x-(P?!Td$msCaH>>JH%6Oz{czv+{{i_D@{k4#4U-TR6B!K^9giLlBLyoV zEio@MH8&|cIX@=@`2gqMvf8kwthU;?T-Rb{&C0fDXK{1CR_jdb;_&d8gaeC>Nsp5) z8<|BxpP@aYr>R4&tFf=0lb3>5SyjPcb;--QZfniecim8ZPk+6msFH>50wPLf5;umxlD`rgdEg}?;z~mBIRnu0R0$*m;Td-!!Oewp<{rYofxSeM; znl-8zu^Pil;f3_Yl=57;mM?QPS=Damy`S@j?rUvkKW=Ryr-Im+HOAIsU3F9&uX5#( zb8%w^%$c`m(V%|^AN^M)qrkRd#U{Mk-D~I1*DU3!Rx&WRwR30J&Tmm&@4kft5AS#Q zq}~dTBM+yVd2{IR8OMJw-FkKPaJ^pNzF#U;@aOd^PrUKS+eVKA-vVbk_uyMYzBC?e zFtYWgqwOv1auSTc4e#3OzX2V|O27h1BhWOH?rAErF~pKE!gT)@gVDw2WTVfc$!<)K z!yQrT@WT)m zOf%nD+GI#I-IS990xrdrfK55=RMSf>Ws?CSMJ&}v5Bs=Ky%qZe)YS%)tB^YS@}n}$ zMsYP0p-GFZG)_%D4OZA;I|WrvBeA+uSx7Y-3Bz|7jP=zR2PM>6*kq;kK2>w=7F83Q zq|{eXiRJVF0?thr-F4Mnw_Hw*6_rUR^X%=>%cdNRJqG`$t@g!hUo$k@Srd&z%s<-l z_N1#YQBp~9-2^t+11LTKfr}$RU;+d(#@OPDK@J&YcZrR6O$+GF^V`hqu$2y-TD>yn zeyIhx-zo{tF=rfK*3aNQ73NOa5Q}iw=usiARAO{3)_8)ap@tfRr!l^GW2!U$SY)P0 zKDXRBiv)M*D2rpc6tKRbxn^6|wi&)ywMF#cxr5%$yqAbLT5lnd_I2rsIgVQDsR^Ij zYQsagSaAfJ)>`DpD<(Nuut_adWwO&NSYNd{hc4|2bACB=XGQY4?tPjhuHn7;?px_h znRdDX5(1dr_QG*TAcP5a*ZtzeJ62o+#u*1$19ktA=Q{F|Pd1uBnyQNOY%%9K#ri+h zcDwB?d*1oWmXFEzbUzAW-F(+0hTUSQAE@2^_u&jcR+3rg+@`&^SuZu!ap2D&7{T!^3~$amANt+|EQ(E_cC;%2{65$|5wc)}6mZ|w zG{&*TT`Ygb>)-xJ=CyQxY2~;vF61j<|_VKXNl25|j8x(&+{uF}eRB2B)Yo5N2@%DIj49ZMQ`)icE|ln`9-s zCONN}Yhn}|7Mw=q#u8x;J%OM{^|0r|I&RNj0Sn8(zQ-*jDshR;aN;eK#JXO!X^ID6 z-y#_qKf|r?W5T;+7?l??c12Ex@A4EHYiL8UjnYihOBiGrxJp)L;a@ic-5w{Sxy&Jq zOu>Q1A&JDMME=r)R(#|M31`d}LXMs@gj_HA=gepNuUKzF8N+;(!?I;a7;=2f%zl^) zJmT>usyUPqk62LC`LULFGiTm%NhftOZE)`k<_U#YPZuT=llrr#GNIWnefDyb{q*Mz znYEii)&`s7P^C6+(amXr(|gwpA0YpCs2hOla+kf7T@~F4Ph!fGiz4-8|L#douAOnE z=Hln3K*<+3#uP!<86AZZ+RAFNZGi$~OZQsFvk20XdV=H;Of0CkqQPb#kb(xcU=`;l>&}RMdSr6eCPPfU>qbTR02Ib*I85>B6234q{oEH%& zmB^z4Q>pV)p*;JFQoyS8q^s@PRS8SRepb%27G0SRXUV4nLN>C!^({kd1TC-b5qyGC z(N8%9E{q;6okksPJ41Lo`K2(gd7Wo!(HPk44z^hD60E1Pide-8l(T4EkxhB~TlFGF zS`Uros(=c#&ej&4qCFf^ODq4s!liIy84Dg?ojTR1E;GP1{A73c*;1^oQLEz}FM7lW z!G@-Hy`2kgPy1Lpi8@Psvg~Xj;rhhp#_qoOmF|gAJY5xL4260<=4%Pe%ow{?e+Nb| zCl!pTHw|@wX4_WW!dhX)*i5qRftF*3`&AFuO0C^eZWDWz$fmK_#Dx>)l~L?L6jN*rOs~WEbg*8G|%N;GJfPs zLD9rj#4PP%yb1kCdoz0E#NKzlQJ!*@ubkyCa5=v>Ch6}+`*D#jxV4`txoj((l#Gai zTYo%9Iww%#tFHJr!Q@juuvNmD#msUm2{q(V>>eD zG*sqaV<&TJXS)B|Fx=$M1yr8f?$ENREKJ0U{G7B@HpAh>xWPE=bacZ7)azz9-!dgK z#dZ1WS$F)tfvwb#N?Vb?<~q#JPH<_5*{}w`D%|n*=`#iXxC??fxQm{5F`%vP?k)Y_ zH!JJns{8P@hI+e+c4=In_G#+}$Z|@d6S9HGHPM?Q6g0+#g)fi{~KLw;uc!FkAlf2RjPzpMU-D zU;ixNo!8XIVh+ubPVUi`N408hj0_8QGL30SruwXJ?qqKQOKdnsY_R{~)0uqnvh(}{WV1(jN(XfdB6u<@fZv|oy244;YNMPVfaCU+%>~0Xu4p6lQ z&cOP~^U4SUBk)A53BGU!^->Q5ae?*B4e8Jd)+R6nYp;UVZ^nv8cizwbvd+-%F9r($ z0?2R-W$+BqFb&lZ>?S}1bPQcEpajCO*d8F}Nb0Y)EBbKGsvc0yw4%)%jP!h_?hxt% z!_5h2VF_vF=)5h|U{62prSL2Y{jLzBO3;!jhJCzn~Fcd{`6fF<*Ou@Uhor1kqoC10H($pL#_cJz;?K?99yvK*6;vS@z5Zz z4Z{p_E~yCL4XgI4%3+w4= zHh})Lt^=;o1XeEp%#aMdaU(Yp0RR9TK@tK&G7hh<6YCHE0>BM9U=`;O6|pNGb8H^} zMx~5U7bCGAF6-fbF?)nDAYXw-G*BmJrQ71m{J3Kh7m^`ujSnG52kngxYv;b?&=WHf z07UX5IZ|Uf5(7SxE5We=K$0s-ax9U`9M4e{@sDvX1p%fK-+B-MF)@?MtQL#!7FGWT z6Gp=mZc7k5@bpftCjoOKfKpbHto0~Ltw0b70Wm4r%^{s{c%X|Fqq6c+fGW)pE4#8I zvr;oLU~$4yzh-9~MYGqo@eC1QirDexRL&hs3Lc?v!K4qL-p&t|5>FUzu^cE0!NL&H z!TWsD3tUgQTCEXXX7H@AHbqb-AJdmquo_`*@lx{yR_-#f(jz@GGp*A)LGog@5*)Si z8^IEHs?5+z6BXeQ*e=o~$E+@gP*~WL148L8k@EU9Yw3o7pmehkUn3xY6AgI5^?cFJ zJkZ=C>OK>a8!AyL9dnGBGd0n%GY>}vq;o=3ZVWM#BRf(%v(pjhxmkW!S-+#;ggL9#~aO34I5yCkZ*)F^*MP?z%H0M1FDGzA)fcqacqLKSsF$I(#% z;87nnS~qe4tTR%rRdG1fQad!BKvYx7a#KkQQ^oa3T{1dVE(H4Om~?Jf>e5YZ(roy0 zNcB@o_VW;NHIEcz1AEog3N-tS6j1L(K|4G3Cv38oKG992<`3)eY)nR7)uU<-52i`cbI8<3@D3s&VWv1ac`4JwLq&Q#~SAnii_v{ajQb6MKg4pluj5YX*hXfv%N+b6M$PQvFcYCMSaxYbDJJ(CK^>oFv zOGVanGZtJ2kPI8iW1TbQD4=Z{r-dAl9^n>V7(i}uwBd*|L2gxe@5rJ2mR~KdRxd>9 z5_5S2wP>3c@t)UzBEV3EEmzoB z9PjNdVU&d?uYT?KjQpoYD~O2|>mwkMFMG;&^A>@j$?Z(+%R75N~GOA@0_#9F6s z3>M6~Fkw*<0TT6!vsjC{*NZFGb3s^yIkro;mW9a_h2!T-Sr{BglYL(pj#X1SPqmA* zhK|>Ee_mD=@fUaJbM#Q;cz5@6D8dPa*erlpfdK#17?Iacb8`v>mWiGilFbYjWvG&a zje_G)>>&3Bus4GrZG$`6gReGQGjvP0)l$|}JU|E~0u$npXl9{!7vwE{HI)f$Ev$xl3N86+)^{Y`^ zlt-A9!}Bv;dsD?&omF~~Y!Dkaptn<%aeCWr@p!Lqx4L^yO8B>@cv9kemN1$d>5R88 z|CMMP5{j@p0i}54C|Z*xm$Ns!**gFFqpNmOKRI(p+O$O(wMUs`JytBA)rDD{th4i5 z<5_i462I|>j@uBm&rwFx*wUj(1)ao zr@~E6VKG3HH$1$r4cd#Ot0T=xUEmr>Q)}GiLj5^$Pc?1fjpRzxO5o0_9R@A6_1j)yK%8x!@(P) zJCm!m7g9-lLoxR{FBZ+$T$RPPYg@RrS-i9{mA|}Jo?S3)hbN@)IfWc2jSMW|c$}A~ zC&}`YUR$Hc4-wT2Jy3|(xhwxGshd233pc_g9Ns>L%F*${GuzTH{RX)Fv%TDMqjtPO zyJAJ0%uic0NBzCke8s`?gh7aN%bIJga;<6GL0gvu4xoOF>BhUvzdg<_{k*yx0njlE zaB&v7f&ES?&cP!h3LRXT0ezu^)o^PR*VuO8rn>8--McrM1}+}sGal2kebc*F)IWSP z#T`pAR6EDrluej?%@Nh*JZsI^gjB!C!E@OZkwup*+iPmN8zX9-7bDczHYQuPn(1l)a2_7hm2+8}k zNcEJ_8NSgE2|gizB?V1uCLSuQINS6Iu^no){mV_flTRDOs}noPUd>f}mBn`L zyU~R!)kDWOMB!TBSg2#x=Wt+jlTONA_`dH+qu&WUa7V3P?{&SBoA8}b5e=WzL_+u( zx#62S%Ab$;HYJ9w@$y@D%dLLnJ{Qchw~HEAv> zF)(m^a&Qn7A(%!G2_Zw?AU_$_G2LOCGbO&HSK%lF$pF=O3#+$xl$eY)<2bAo;_P=-ltQRi= zf>{D5#4AE-At{AOlw^u{W#W@cmm)cW)Mz83j(|Rb4Ee{8o{}U@icE>JQ5i!V3B61t zQ)5Olmn>S6sFRZ?P@+f`40@p85Pi2|t*YffDXv{4enBOH09i3+#;RIv_RLw;0o0UL zBi1dOw`~99#(@)uk6qfd>E6~WHV+=Xx~l}HMOTjBQ5Ysp#5gsyo@P*&xh|Y zqHjQZ@eYSLnAnJshV+Fbp*=ft&ddHQyB1(-hmclaXd`)M#%Kr{=!PI3b#dBiGX2#$z1US)SJ4Qajn7nvjgH)q)m>ZK zg@gZAI^(=Gq%c#Bmt=W!g@eIf`tZdbV!R=C9&ZXQ<`5_l>BnDxUP4j@My9^gmcD;nuKIx2B0KgYUmi3wgH-fPxi@^3IR#=g%5GHq==lOkGd%1 zjM7Q^;&eCWXkA#>p~Yi%Y>C%SUPTH-my+ReXKMHeGimu9--FyE9VWT$%BJ7lOsE_0+;@7M+Kd84+f9(y7@b&7klB82~C zmi6UFEtnJkD&Ql}Zno^P#;)11#~-VtacUEeoU9{qTHI@%drtdUhk(M2+b9}j8)7Qm zdJ95ui#By`!agI^+;T#*izBA-B290nJf7uadi%bG z=Kg#xi;}`f>AFN49XZlSk410OZK0E|TSW5PZ@=W7iq~BPLwWc=wZKZHiL1_fbC&qM zTsFmL-;{EN7|ZSPuyMZ~tRQqIf;Y2xhk3DV%kT7e%z;}V=*)xJY((OS3&;PnQ;u^V zOmvYyXDOwWOMW>qN_VRHyz6)8oxY?h=aqY=E_|2$>8Z~3!UdNjqSz2$AZE79Ro?&v z8{OS)Gra@e?~2tX27cs0g@D8$>eMT{rHmu7L7Ulb^E|-;B}Bc!nYR>G!p4;=g}sQM z<=ka7@>K_3@VcD((l;-swWWPJTtQv_r5vhREiOWYUFu!|kXzKFN>$GLmc?Cu{jKHWG?fL(y6Z;kc;9+3}9> z35NJ&R3qrXaE5`5R}IyN!}ba3eW8lqk`7R{s>$abUvm`_2^Wuov7j7H1d*Y(R7+3l ziceKc9`andKvlvso+V+WAtrbTjad+bvAob3nU_X2-ja>k+KvBcMuA1iF?&Z5CPRm* zE_L-0nd9^0(Uw`A8hXxY8YR^tp&<-wE-8rGWR)b9g1Azx;&o8!Ut&bW5KamZou5?O zB$Q`G1-{d5@0&o9aFBT1D=v2IiBccf{ ztAISFGHJLp_MI_;7yvLmfB2g%Bm)<&qs>DLFN1&X`JZrj)U1#mMBW z1?sec@Z1|{I%x^iV1G^#)ShSX~*bqIu83@=Zry$PHng(|v>W{D}j@Imff-|MPH zGvy<&K9fk%L}WDJA-`*)$~<{-68=p3t(3YklKa4<|HkG)2ITd2qvXQz{#w{m3YLq+ z+G&I62~My2T3WB#kiO8= z7wEq6L;d~>r1Zn)Z1s{gSbR4HNwf!TTd*Dj2ZboU#cOaWQVA=Pk*E?5EQKrF8K08! zxD@&+JEb+n4}&rpG%GUyPS*=>Y|+!EcE?3hhri1D zL-|e3kptUiTftkZN8=D|B2V6PRbdsbDh#%>l((u-gBQtOKf6SG`@r^fS{ATQL_e29%)r{BUkL`N5geh zDey-LFu)rrZxYkr7H%lRtyp!FJEvSukeb+FZVQ__)fax{s>if9>%yAeBDT-A2IJkI z&-HLhChuDTuCTWfbl}7^CLcx1^oiyO&^cnbAP0@eu}%Zx_&sY#qn$+B8o8tcMYBD?L{wfTgbs*{K+5xr}Z7GiP`NHi~fxovY5%;WSQR0oG1-n z6r`E)9Ut-?-kW_ut27^r`I^Ff90Y2>1X7@l5nPNETf!wx!>!Ned0qh+2?*wwDFm5Z z08ut+(+MtLW~pFh>5MEqkqf>c3_^j)Sq!t>pAF*RgzetkRFIe<7M;{zbsbfp6dxNM zAGh2a0;Zt?x>dP6-;~(H6UKuS4jhdY4dfh622R}uE*x5Xp1mN64>?<+HIk~F9vWI( z#u<2~WWiO}># zBd|^0dr_pHDO}ZcUp8tak@(Axh2rQ{4XS+IY?b3*s2?PnNIJG49JZr7%Ah}<%xT~s zF6MzAwj7)k*50XF9m1o{otY5AS`rK-K^9}S9HaUPofZZRbFphCllNJLU!A2}VS zXd;evq9=Od=P_Ie0vUOPBqr=@*SkD!2$!$8PY}IGund)NhKw=*CkpZ7Mf2sh7}iT z(svSyW4$PO0IT&CP?-XU=AiR7T#gT!s0a`^f_m9YCx<+XGBiqjZ~gBVr3z1q!-f5zx)eYjgF8hnn;Bm zX_jVCREZIpqzWKFang?eV8-Xj`CZ<*lV9Rze%fYD-Xo6I9n95eAL0~!=A45>s_rr$k!f3|-|WcBc((XjhJox=38K zc?vxImx)p zZQFai>GItNe!QZtN>MNJBY@neu-x5E5^SL2r2@rW5BjU20%M{sDv}N*VHRe6kdUN~ z7wqJgH#O&`3Pp5&Ds@t5Xo>6vUL={OD|jA*YlR*FSQFRL&&!e{>ZPB0x?zeY9z$GO zuEt{9^<-Q|7@rO+Pd!(m#^#2--S7z~#7Zo27C{XlVK_19lA&ajCE|8fZ8V0f(q(Pr zWoI>BBSvQA$*$|O&BGX~>8q0EN~I_3q*R0=m{WZh$Ze9&?rdH$?7{+V&<>Uu>EvtD z-~TZz5CY`?kwR;dD(S>Z*1cM68#11yx`)khEX^cFWQJ>XPUpvhYOqlhsb-;OdS`fg zD59N}*{0Qbl9bH0C%!_ZK$O6o=Ih+jEtSPy9lo2<<}J(lfqw32!S1aN5-qt2DTe9k zMg(CY4&zTC=n=RX5=QC8DrBZ^EVs@_OF<{)ert?PX?erCN+2~&dtgsp^?*3_Q_AX8Wu5W&t@0AI(IP9}R ztl=(gLDEMHJgrl`0x&%<0>BEdN$&x2YX(DPjq-x z3ZrcQFq|m}a>LdI(Rf%=+OF;5q?G!yZwkCF?8dGfZji5jk?~Z}?eZ?5_V4~4Y_T4z zD-DQWC9CiKCU8E1vmS4fE-=#`z;Pm{tghe2ZmQwc)#P5U2utM#SDt%?DJOO>S~$Z8 zt}2fNQC;YR4d3vRg$UdpQHvI&;XZ8L%2fZ6kx<>?OyVY+9C0EmvJ(5K4E!sYJuv`k z*+2S|6(?}S9xmd-5%WgLZY^a5Qf*LV@Z`=1)@~^Xr&kAW?F3ffC1R*)bs}amo#=Fw z50$P+j^#79maybmU{x;Dxss{( zQbin>XZVg^H=K?gvp|8Nzz)+2>mFwVyzi|fsm#nT{mP~AlG)E1F*G}~-5v50GqD}^ zZ4+;SBmd~$yk@ihap4*+7B49&sO92%amLLL28Yc6XfP$hvl+j$O@}PWR)f@WA3kqn zG3;|!JezpRvFJGodJ?ojV=8U!urT{DF#~Z#PxK=faYaM(B40IDH}e4Rpzxy1zXH{- z`Xzy0vWFb#qZZ}__{E$WjJC0qT1js?N2p9s1v*PEP7jGBG+p<^pG2T>^GQRs97ePxhmloZG**N5R_7yca<)y) zjaLIHuLz;enKWi+G6Ofj1Mf1~ee!c|YfBY@Ow$a_=r#xMwHenmDn}$5U!UY$rB7>R zD|e*ms_Yyeb%|bFWg~_EF!jy$@hfI_RQr`&_GTgL?^cKQXA|q7`k+UXHUQ2d8pTXm zCvZ1U>^CE0IIC4lX)tt>lT7P&9&u`?vU3RcHC~T!dZ95yZZ0Mgw&yn8p)ogD8nsH1 ziep2#64t7$&Vo@6^qgL|A7^(!Qj558w0DDdh=+GphxkSVRo_yzGAGvm&8_wox3>aE zD=;G@>(%yBkFo|wVG-;$eh0S*XKip}Zan818mpHpb1v9=F6at1jEoLlh@x{NHH0Go z1n}|$xKV_zqWUegZ_zDl7PHR+E2z+ar`QAm?FY1hr{F;*25p=%@WYZIqh z?=S_dq9>yz^wt$!%d}nN_g&|;JM;A^`!_20xMyuJaVPj1b8m9*nR0|4G7Ooim>>SE zhbcsA8dA?JT=>{6w32H0h6f(ZNC7f$_9VlBbba?0nK_BW`u+~8VGVJB>ghC_T#LK7 zoF6WotHSxZK=W#wIAf}&UT|XMxPB))kJEHJ`}MN}IIsp=x@GxoDU_8_d3(cco!Qy zpC^1!{CSQue4t0+Dp&4r@Ab!iaBvejF;zXmd2Pl&dgf_vvqeKkiSNggWn+(gX;M$~ zS~o*O>!Ox=+Xr!K2XByqxV-DFyeo4gv-*Y|7a`LWNnf)6oI7gJ7v{9aHjU4BvDbBO z@3wv~{eCVd397jf0I^)l9Z9Jf|xC z^Fw`}!L!sye)LD))#JBS?GXy&n388ZGdOusdy2QCD3zOitPK6>hx$`@c}wmr+@p6@ z&wbsOdF|i+5|@mP_CDXMIuHm9g3546L{^kbMl7sv3_Z~MYG7?8mS67!=Z%==RmyZvpw|~daubI6Kv075T&&R45-vs6=7vbo3J`OiWX8+Qe#ACaJHi0)Ws8SD9QZRGL9H zqD&nOZcK(5LyUt4W*99-vsN)~Hf;yTFbxkk>skYgPS!Z!gp^1d#&yz(*2?jn=D0@?e9 z2r{|JOfx4KBu~kWxZuLbBRwdA77)71aKkysVoi?@L0sgum>@~fMB8%8ZP7;b%7)dGaspEi)3Kr#J>9H2*I*_g`l~6E&G}RE`?#>g)5U;HzpJ1{{TNl7g&AuMm zwb%Bn4D-wVz$8{!FN+Pf%5Hp(>`eFwjB=vO=7O`q3_hE)EdnT@Fc>{^X--28-OvMp zK=Yu9sGAfWkvDc5#f{O~Qj~N?O)z$pBHNIs3KSuUgk^LFDWMb86)-E%f{T0n9!C|w_1+B$GR&7D+ zqFX$_JuSo5>c}H#bz`H6UU?aL7dLjdm@U#tWP{`nqd2YfQsD006slJO4z=LuT0j`9 zREG>ewUlCT71r@)t(DsJpj_5t0P_;lo-jc+Id5Y_-dpc=q!f_ZxdZgo<(OrjnPzRX z-RL8o^E9o4a95>H4xrBsF+|-Sm6zVyIKRzlLqy+KI2e=4HxsOB?1Yt0U3X;`9u1a` z+#tXEfTZjwa5yXklvKR!i>JXAZkQ3|OK@-q!n^st`4;whzW;6~?!s9HR%N?l{syze zX&w(-j+k*=B(fu)Tthnl<~UbSLgy`Xbaxk}KR2I1KRQwtSEoAlt64Y7jXZS~feDOu z(g9L0a7QFo=_zf$yBXVrcPru@Xk~+QmfW1@H|Zg(gLs=>#|rWv?Kum1bX(K3y!Sn8 zW$R|kD4+Sfg+5-egngG2+J|CusCSJ{M2OPOPv~bf5*ZCAf1m`vs)o8yIK>pJ)0FGv zFhEQg&^ge-g;(luss*ZH7!K?r@Fq5e2@bD#2Ra_FOb9q&ZIFX+4B-dk*fPQqNR4G8 zNC~-jxM(Pj3XGeR7GfyFuAF2gtAPVdY~lwH5lT@g8p{3PCqy4MjdY}=QE>c+6ev!u ze+1kSR4Mgyr9*UO zne8F&P2js$1YgLE-kq;h=}Y9F=l~O$II?Mwl%ElW_&G;evR$3yjU@mW3MPu8ldE&Z z6sc$nEJ_CgdoY&*Dda_2tP)8f5aSrh_{t{1Z8CR6VJ&aTOI*&epeIWnF)t`M6aG_8 zdsNUds~|Cq0CId+XyzEch9PkY%0r7Jn*F-zO>QO)X_QQq{JeR|Og<%bmndCJ|Mv;l z^=L=5i>E2Om`dy5jtmfFiyvvl&nHPsWhrc^KnJ=@E)n#gOHC+4T?ROXI#ePnlxTy* z7ru*PKxeuCE95MEHZDA9Ze1e<3I{HEQg~6)Y1#}*5?xx(a=s|0bH&%zm=h|4-H?l@ zEJjbm*vc^;lc;n-f-KWPx8)TMs!oOMQzeTsTe6I?b*yZ!ifPPhQFNja4CE6CFoCa9 zAgnd?6CbE49z8s=n>_@gBp)SPk?sVD`Gf0SPgga4JrRIeLrxV3HZa=7gbhGCCE0jd z5}%F$f}VBdVYBhjg%S>rZG3EG4XRzHE>xk7U84xUi@1q>=0VHs2s6M!NE28GTp6<5 z&psMI*VcEXkYdz{ws~Lvt`(-^>>nt6JK%Au({;iXZdOKlusa|uqj_3x+ERc|!bVrR zu{7NOVmYSN>`vChAMWmDU6$biaZDlIYm=Mc1YOZ)A(@O*Z%Ei{S`@r@T=7(`Y8~0g z*Y+5{LByX(IoDtPsz|PxoM~^L*vZ{?N=IH>@cI(ChUAV7!e%Lhgr6(ap$?Uw)5R=O zuWKa@c9^>$J~MqR`z%|^AfSUwV>yx#m-0I3yyl%#2}*lf)JSu+cL-gNUHeTUww1Q| z>+f2XXu1G%A{FPP6oQ{D%3Bm*1@CNdP9IFq3Q2eZ`3&BL&uBraYFMgfPIIc!+&9X4 zm&6%N;Z-?%5j;x)#-WX|jAh6(j>Z!X?PF~pASP%Z(*~`_9`aiumD~T`E6L=v*P~_s z$|=1z1cF887*;54=?e4fyI)tLrHETIr8E80=P-Tv?*yQ!+s8h+Wom^495HIagQGC{q`%? zk67j8W>d7VT4y`s8`s+sde2zmQKMV4zKC#b!uLB{w!$`2yNNu+W!fSpPU@VT!V%XD zxL^R-Dxtg&s;W4VZJF5J{uK1h38AK>kV?W1Ita;NtK4KwddXUinO0O;OssYrs z0wlbT(j4P^E#xaUgiAVtOSDP4tskR6io+{QvA)T3w!DG`1sf$x;{ykq0|0Op-I0Yo zAwq9~7@G;V^kYE`gO<6YBlwd+8l*w_$Sl??Avd!*jma4PJFos*99aRvAxy&yxiqml zt^=H}JvhE&YrsWNKHF-(rW2j$i)>zM_It-V>}^~K!=M$i0ecF<0MWjFlzh6rr0`6%Y#Gz8lltcba&uKKDMXeUMd zKH~EbNLs*aED^S1I%QK4OnkKKtGWu5wk!061M@&!urzZCLwHJ{^|~i_d`D!E$A(-; z)N?~xY{89r!CWl2UHnIY3`j5;MtOsb>e)xUxT?I%DjBmLXUzc!t(`Gl1b7l0r4=e^TWw|oW*gw zIXu)wnG4FH3`)Nw$XRkh{evhKV@N^F2s#0c$Mk~o}0DwY(Ck|nQGQ^Htz)xk+O+n<({=}HR+{6F>bh`m1&;lI@DOoe?5vUv7Eaq%Z zLVQk#j8M=BI%lj-tIW2{RKN}Gu}CD5udJkz+Q=zHw1-R24crtBj07@mGK?Dq_k@5- zn6I4ry0IC-8NE;3bgpG^POd7fz4T9y=|>a$Q6Lr4;v~v}JhcSXKdWNOta>pfZBoaa zP(yUas)Vn@i!CheP_O(@h9gTO5>2bqLaH;-Z={rRO3CNQG22OvGejknFhR1jOFRw4 zy>q2|EUKPVyQJJlK@C!&Bv8QE!y<(bgg|bUTBiZ9a1}}77$w!g%GIDU+@#Yq z^p3JOq^K}yQdN15eS$*NhKWi?%`uD;A!faO6(#W#X2*kz@Y3Pr`|;DuPQ zoY>e-r-j-~oxmRoQHm`~O;JzO49N}uY_iN#umXr558>ME__om_JrJsAz13RZAUQb^Uo^)+*e%T~qDV2BlX9oUsUBj(ATvrXOAb=$Wk-+z?bdL>4h zd$k7Ly`R<3e3Q`It&`ma+}>TyP0Ae@sKMNFK`yW5 zT-+oBNM%x>6Z4ZxrCIh$RA^+CQxVJ^^snVilpgMl;7qfX$W+K~3)C>&=}fjmn!&rs(=joNbvnjAECT;(HF^b30}R zO~~23NF!?V!lJ;Oy*S!+6x=3saZv1$e1B?@dF zw5{B){>AIpCSb|EnwX-xzXt3KMCXuAjkGah+{9i9UF@`;XO#YBGV@E8Zt3KvzXL_) zVbnn^PBCh5UuA5}(591vP8Bkqh133IAZyw~(`MMlYjIBMNW(n8{_FINgaob}R*_TC zL+r#3oS z%Wh=II?Cez9_vW1X|z^wo@4O&6}om5+@+OaY;?k*7KFRjaH-wlY1<@?vovw`R#GhS zI9;GlL-7WfZ=8Y5{d8<6Hq=C(YyhY6dtP5Q!(!RBX^RS4j|lCZmP`Uvur(<1)K23= zV8XV_MsIHN5iRc?UW%rea&HX;Bw}w?&GJ{3Z`_rW&z|6Cpl5#-#{MpIGv8qShBN!4 zTb@mjX=zTzwq5HMk7krougHpOPVJLgx}{6YTPICpTjuBYC`Ul3hm{NheO zmvxK()!~XJ4vh2WKkhpB`ok zjgPA!j?WsUY7zLf+Z|d3uiav=cWCitGWYL(*LRi|a5PunK0HkJ9eCgtb~smYga>1f z(D_rZCsnruZFO}i>L zcl2#du~uQz!RrU!@g z0f7K{KBhU{H4@$J{14*L6euXjF<3}QP^iek*vP=a5V=rMVPH^MX_;xM*~$6;2^uOI zDkEBY3W}<_YRTH_3dFLua8=__un@D@MsF6lTk|qHg#+>2|XdZX8u~wB16%3Qvg=L1KIRp0d_# zzp?<+k{v7MT$(>{4ivC^2hT!?9!emkSX!^e?SD6B2#ic|P4VOzQ$8O#z54a&Sz5l7 zS(tpA^NHC9Em|XX($c22(VLA#2e1I0Q&BZw&TPs(kyV57+-6ZfzfDMCaKwG#4;lBk z)y9IYH3VHB2x!+|U)u@gOm~1y^4VqcRYp^Jh_z=Pdo7-*7gH~zDw6>nuV5z$4#;SAcqJw8QnwF&C$Vi zdueARf8K#No{V-TmSc^2;sDH za{vIgA#sE}Qw+inm!eh(W|&q4CxnLwy%C~o(?K*Moc)!kD1Xt+$>L`tS@zzYzV_*7 zu)+>&Bd{jn)ES|h6>6W5p&<&*en(PsotuK734>EmCb%4J>v+oP6#b1#u039YIb4RQ zR^dfK=q$(Tnsw13ueG$AhzLfEW`Jw1A#nzZVZWke?4Je`d+;fRMS2#;H~R#Tr$vs?e*gQfDokhPF$FT7VEwX_aB+6IhU(z`XTE?dKbCxMsyw~5=ej(t#sirUiVhm}=7=Rr%f+Sb9;60$0l{VUMOZX)|ZK=V=LD=3Lkx@F&u9v=Z{#}zW zg#Vg&?}-1-SfHBys5|k7I{Pdnqw$quMHy?XB!DS!4%Nt@)22>6XP3@BaxSZ@Hq30P zk&YWRbAETMwC_9-*0*=`?@0^qUbNx918+YpJ2H;{Y{Q;Oji2N#k1wU^PsUCIz16%f zI&ct&l*|#T>|Nn(r0bsP#*{j-l!*;+pd0M&lC$;Iu6ghC*Rtq`rxe~Vf52;D@R-Ic z`p7U@#|uy7Bv(N0OzU||I*PTXN2zQ*$$<&d!a2?$Gb&Kff)+d%81Au_4Kjy0&p}_k zM3^`3Xc31$W6{%gfkG7~jD=(@W8z@QzcfPae*hd(er|=Y%K2w&9P3!eIIzI5jVwXs zz+S4Vu)TdSv0MXTTUdf)rUBJ$I&!d?h_E=jS&`6h@Y9{c!YD>Fx^R<9`;+|C2(e`8 zL|1N9-e@dVF=_Bnc1fyMASOV)s6apree5Iua;TsII|_1;TUyKa@PR6LVebzBxEl(j zbGHEG5|VmrUn(gniCr-blXhC6COdgePts&iG<4kmj?u`(HTTwE;7(Z$*ZG|o5q(k+W(8fVc zqTjrs)y!!tt-XPc|Jhhknvh35h%F59q!N|NFoe_)po00-=WtGEu0Kx6b@KudK=-JRw)8iEh;CcS-gh<)-#Y}(O?OiLj!7HqpeJAQ4SGO6o^BXJXP&qLIJh4@6CiU7-*RuAK-7JOi&MPsdBI;_=Qe}rO*HMq^i~@F} zlsRU(RWCrdAF}Ij8pPUMV0QJ8XJwsq6%g8hR)@6Nh3l` zo9eyoX4w(;xWvn*%;V+ubV2)wc7&6^`m_YkQkAoNZERD{&7KMapx`HKNhI zYgIC(vz8WHvdMeAy3^vK%@t_cYA&Ht_Gz+|M`1dCt$S^9VCpsm+Rb zDJ6%>p&!=h2+Y|bsNr%hLjb?{oyueRaX>({_?K44bjg(y@?zRl4khS1be8#b5cibe zrT%W(7oP2+?k~gtOJ;kAJ&a0oQrYOeB~c;pE<{T0eedO1@!wnA7DrLNf|f3P76#&3 zl{cj>jqf+TM(}AKUrZyot9j+kj(N0SUdgX+vbVtrZdyB)ZO-ufR9F}_ zdURJudvSMJ1~v__dLspIeB=*QVn|_ie!WpvDW_J8CjuQnU+uSn@F#g;$1mI!QTC^Q zI+uC*16zOAWS&P#f)-`DMG;iSTNy`3wNoOm<9);BSWXvanc_z(V}2DVU>IaX^0sDa z;t&BaU2f+8NO%E)SQd8hb4iP1f+vWDSy(s;)qFnJc1sn2-Z6Bxwp)glYyP!shL9+d zvVZ`OJfQW{Jr*~qh_YHY~0Uq~g@irxXgok!mgx-^NT9ARew}gIZOo14A zrnLwUHh%(hh={0&xtL_k$1slgeBl&ypvPWhxKS6USV-q%+{cNjR|1w203P>1qZnCG zr&*@xHWVmtLa>Jov4kTKC2R$7kQ97-^J85!SGSmj43&uBRb<=NZGQEC&=-ktM}6mH zh6j}YPO`Fn*syd?(s&&Ne$iMR~wi$Aa+) zfS)IHgr-|2d4^o0k85}>Y}JY6uoNQWXb{*y)0jFJXmy2Da^k0xt^p2vw}ab&OvyC= zl$024=14<_sDG)Jk(alNe#MAs{Tzu3( z!;~RiWto?Wie|8x{??hD*+IYQdo34*_fk-%Np`52mwLIEdF77H2WZ_kkGOSfw@G(C zL!CPR$a8=>O0yY^KrxjuxJCBZKpB@#DLE8Q)eM#xn!ia7Sr(sSSrt!LmTP05 zErprb$OWFsmi^g`J~=%uIi1Qhnkq?`24#o}+MNx$l=c&$@Az{NSD}NIN`zMbeb&dJ zNVk%v)I6=h4c_RO9uuGP*+6Bvq85@*Sci>W(45XmqZIH44*;MXn4_?GFQrAAgeh%~ zQ;`?RjzMat=#d!Q7M`ONKp}adw&`A0d4^~hCp}6O8qk#_idc{7KwDaz#q|%fhn(Gm znP|xc`nht?Nuv#v0xqehoHLFDDuv}pkwBW7LW-)VN?ucm&xD<} zIHz{CpbYA*;-wg|37D}KhR{NNclSKCnvW9k7e59^?3o8?`j5NC0ZXy}EsaVtk=muz zc&tNsd&l8KV-W^P$dEJ|4$k@j7{Gu)6pqcbQ*s1XqUJ?+X{vYntrxq9McQZnS3?~c zfP-0&8g-8xDqk594HM_9-p7-@%BY-56^~UMTuOm;ScfobsrW>*$;t=IYOu`lk_sE3 zTh?--`c}jEV+Z=9+iI~GyR=)FTIJQMFIcWYfuSR*p(2+#fMBx3HKfMu)yurM35^_i9=2Vj+Y ztYT0_naZwsH&;jpuE_KkJuto`xDP%p#sP^ zx;1yYW=FXSWMViCKuZCi`<0xlu+|&8kr}i4N^&sDqLb<+aVxhu*1E0>pFjJxD(ibh zD{vWVE0Qy6z1yw8Yrm>CWJX22t{Qa6yIz)yQIZ>YyT-0!IGE(7y$$e{Vhg*T>$z?S z!J`Whq`NkyD};qazN~vp=gWFN8@sX#p#8=IS}Q{1NGrprySs}}^qZ83>%#YIh-?I& z5J#bb0kT&!t0F66B%2gsNPJM{3}vXmpgY95*1&tWuzMH(!4sUe^~tvBr@FJtNE@uF z`iZ`V7P|;A0UO|njt3j01&i-XK%2p(smzvThBztjY5Mq zXnH^M!+&~rlS#zJc*O6d#J|dS-K(!?8zynPx(P<6b?e9`sla~hmYOTVVGMuFbDeUv z!iJl;YV4rF3sF$(lu_$;$LpukYq>d0EqCm^YN*G`6RU+O$x#Bx)a%Grte?4zUjY%p zjn-(Gx^*5%#lGywSA3?lJegelte>i^?yEBqnW2QpYG;hbp8UdVtYm*Bq4EfB{)@`k zk;C?QeRc;J(R;a#;>TL7&b8cl#q7?G{G8=0%w)>{!NeRTA{M(?Oahu)z0o=sBaAOF zCxci+i~gdmoLs-wj7`(IDL%M*NH`t<|1M%){)}U)`A{&DF+?#TzQgF3G7h zy|eFm$qqJ&{c?^ztHFeZvt@Mr(z3$CC@#@MUOpyV5LO*{kQvD{T&rjm%d)%M)QkeAkWL z28Yn6J=Z;cBSrd};eFIdEzxrfx#hk8kG*w+>`KwJtqAnZL!?J7`8bpX$l_Pt;-D*4 zA)vj{suFu`99ZlHid~pINzlt(yvxaG4)b&!)GOFD1P|(ajq{g_@>HlCIMft?$KW zmyI9okB|G3KkyH2LujA&9F6YZOe=72>weqwG`QGsu1sB=tZS@mn7|lK_+VM;V2TPFN-82Mdg(!H$w^wO z`)LB&D$8mMIru9%J^j}g&UdaBug?^*-v03(pEHy{vwsv|K!F1Z76f?D6suRR7|MIK zCzdUV@n|vNHK*N0jO>z`Go~R7NOd8ZIrC;sNCR*vrL}D74S~s%&{k?0mt;%KVQbio z^vQ-DusHAF)p4k2UOuHu^9Y1dey0*gh;t2RfrT~tFRFx)}m+@mqm>k zb!`mxb6p!TUoBQTJnzLaI_$cekirT((+UtiG92x+g~&^7 zHS}&#&^=z*dP|+4h%)gQyJWJ)rg5;4kw3z0tP#hYTucrq6bbl7AMJeOwdfX{PD(yy{gc)~ZM_vx&JKxHN<^=Ol~EBJwTRd* z;j?cj`65LSSq07P^qVSTWRu!avnkco`eviE&gWJflF0DHoz*gObHx?ibT2IQ(CGG61QGEppptyjbak1a7%W*z%-quRQB_C>&=f$6Sn6~4LQWQ6j!%Wz{Y_bEUB zDbASaqBpAtyk4g)Poa^sEV)=NzfF1Ps=ehoK73(@iR;{KR=8h&8&-Bwo}3cAE|vBB!5@_|d4fzVFVJAC6Sgzlq`0)Wks&iDj{KPSI>GE0RS| zS=VO!?YK49{GX()g!k^!Ky;M!wAwQf($oWgIN7YHHa69sTBl8HWgllbQw1ZYPVLJv z&m8#8g%8xaxmKWR_9|F$NPOdC(z(q4hrWxU z&q9Whp!=9srTEEjesr+k$prU0m9^>}M48_I7-qWyXL3=WGuK73iet`|g?X^(_q>mKe@2oIA{u6KKKp%klFM>`@-i%a{M1;sMDFWReb zeiNe^%SgBpQmTUh>W9- zxN(rGyB`Pvw=AoH2~{T?8v!3lzi>6ka+RDS12@@AxZ%-;o(ty3_Sg{rFa8mb^h@Qx zz9quw&CZCZa@^S3=qg+8ZjzLwqc1brO>REPK}!4FDiYG5pc2{&7IB$H6fV7EVYsg=OrPlhX|7^qSHkCqX;&7(wVZuSYg^fx%!a}ht8yJ88Y?A0Rb|bdJH01QMbp>6g7uPu6)h(d5ywf^?Vyqb z7Ae=-S`0qcse_!W_7o{g16}m0d9@`Z;m9F<*2=4(9qn+lQ;G@xY%2#%szP1MP}f3I zvl@k6MB%B(Y2FsISB>swdArx14lTICCGL1b+YgT7aiBU>ty*cpfyOqsxnXpv-%iI) zXQ9rOi?nT3+X&nFZj`UT{i!a=TVQn+ud`-NZZTuA*tY(+weDTOTO&JNL{gTKRIL-9 zq6=RJrGl&546k?%T;doS_A;ORBx%N@xA)4I!VsQsg`dYP5*~5C|BwS8bUoZ#rO|4{ zpCz$3O&r+Dc+PlOOmd4^?8O+rb;gjj?-;9F*$it~TlkZ4R+$J#c|FmyLN4-{iL5Jq zs13~_HmSr`%iQfMlg4o+qamSr)0;9!e`oWsYa=>s`;!Z6=f-% zt4!(EuRT*%W%a^Fy91Gp!+ZYX0l%xjK#RH1p|;9~dU|N&GB_g39hrn59p_ZqxVDS* zUK%s4X+HNEsem3Zs72jt^(j!mzg_Yk7vNx1y1K?^e5GaUYSS#&+SZQp?t*pAYis)& z+hs1V1kL(q->#Y133am|HyF7zDyOavt7Zml%|l$vV_d-f|0sd4J?Lx;7MMh>4w6CH zMdmtM&SYG+5SguCSZlf6_M%sVL5%2K)7#$nmiRtU%+~}r;?$@`wW{|PWhw{p-12-U zo^D-AlYcnZrL{K1S>AHeP8{YOt2l;wmu3p)dc6vTv83@^HG=#6dn7M;#~1G1@O1jq zE?0WYnSNq9YO&KA_qKY)eZjRl)P97!tDcd0@}e`GnEZHny`j|fUh5mhrzYu&sm}4Q zH=5i}<$BlO{&h~PoswkNd&JEi)_v#m%z-axVf7fg<()jfan}?^HC=bd+Z}I!2XmPB zKIFdlJ)90#bIqsDV4U~S#Sc#S&>vs=4=?1~1@$!L|M`A-*E?N~8X`QnJIOAR-n_+& z3jO0rZ~8u;e)p>VTfDb2 z&%>A`sia!r>FTfY?#}_Yjr;~r^5U=B&MW;y=bR!hbSlW0k|&`wP-!xb5(tb08}I>7 z5CWr!)XHys&dac%FJ6c#1lKS7ij6Ef@B-jh}sl|2G;Z-xo{5Y@a(Qg0+sCc z7?aT(UoP`PgBYI?8uw2L88I8>4?I?{8{4r-K=B(F5fLa+=1S4q zj>H_%ZsvSy8{Lr`%PSu7j~yw48p)~`|IseQDzF^&&>qK;0sS!rj}fo}^4`9X9qsTU z`7tB=ksCWwB4d#v!%v`$s}VU7A!lzMHSz~x(IZcq85-fRgEZ_2IND(J%QZ2s{DcjN$;ZiR_F&yjCFISQ+ zBT_K=axY_28wKw#6O$tY6EBakFn^LLZPNB8Q!xSaE*TRUAJYL36C)9`GC#91mvS&Q zlQc)IEDI$nLGvatljTOUG+#3X|D94bXR|ST680PuHea(4DKj-`b2S%}HE%OFhtoHU zlPZJL%!sozjgvWx4>OTdIhV6Ho6|4bu{K>3CZlsRhmbnE6D;xaI<-?gy^}mS6FO~k zJVVkv%ac9NQ#5BWJyCEy+fy;!(=Fo@KVy?Ve{(18Ge7@xKKIi*pEEN76e|OCIt3I# zzcVilbOsz$K`paC!xKU))GZ_QI2jZ@Ei^tc^e_37LUEHrN0d816GSCcLrGLc&ROJ}r7|5G$eyVPi?bVs?=OUJbAz%)$B6iuxNO0_gim()$$^eV-4 zP2rSI*;Gz*v`+K1imsGT_0&)Mv`qh0P{lG(2h~u?3s4VLQ5Tg_eY8;@6;dNrQYV#C zE7ejj6;t0dQ#X}UJJnM^6;wl2R7aImOVw0QRZ~+{RZ*2yTh&!x6;@+aR%ew~Yt>e7 z6<2e0Rd-cad(~He64yVYB>6IM%mSFEyVHeh6AGTp57Gft>Vkx#_Ef!-lR$~wLVmH=f zJN9Ea7Gy`3WJ}g$L-u4-R%BI{Wm^_yT^43vHfCp*W@Xl9Z?<5A001HR1O)>CH~=hp z02Tl*0vQ4T2LC{Va7Zl5jL4*N$y^GMPs4Lcj7o=5YgS0@a=+8?RgmqHrQtJqtxm7e z?6`bRXD96V{C&UX`~QG@f`f#GhKGSaFJ+}lVWX{m0oINo?D)wSD{v; zNm@;*s;jK6uCGu^pjD=&Us$-KRJvfFo4RJ3m~CUkbC;3H%8$&8ihYRD($k96iOr77 z+LCn0X~N*fzq_2gv!JuLrR1`=Mz*l=NAmRb?o77p>b3j1r2AXM6!T@w4I6LU5@K7} z2--7i5F<(?^su2tX9~5!@y0REIAOucnIqT_RX$TF)6qg{ucgbEui&kM$8O}maySWQ z3ODTF8~>j_GbZE1@FK>ENRb*{%Cwo#WtK9TaWnAa8It_|+4NFGAIz^{!@4{NuxrY) zyta}I$(HB1r%#DyYkIU=(z|%C)ujtpBT%3lH3h|*GiO?_X3wrnE4H!Y$M|UJL!~&N zueHP8^6VxxYG0yG_ZqF6w=`+J7o9TuZ1C@3k3R>7Tq~+%uU?c-`hzTX9&dY;7t6ez z%OqOM$Z5a+#@01!zNs0So?aTd_2;df%kIQIGxy8rejUa|Gx2aIztgK{8Ef%n$;EBo zRQ~C^cR7LaV^??@HTD1f^>^KV$8c8QPT~|s+jtC;$Cx|1owweE6ei{#d<^DRR&ujV zmH%I0#lS|Db8v|U9e^lKWS5Bp5?D}knsrwnVYtbcTr9)oXkmpsz7$+}=2d1JJK-tl z-G@Qx=b~zJS?6Dh|E>6>fJ1%enUV!X72=FUf>&dM4$4$hk7Sk^**!KA*QJp$PL;)+$=n8aJqNWt_^~o6TA(l%{;?MgMHE z#7e2`vLjwv?v@EID5!(XoXtii+3-HP9If^E$TzM;LVJ~u_FqiN$si(RYPeZZJJ6Aj< z#>|_MeWj}{5m0$DBF4)eP__vkZ^omT{Mr)O{-6IF7 z7~GT#+z!c6XE-F%nB_fH!(6}nbKrxQZn}!2i;Xz5agLiMn}$6|mXL@FcmM6bm8<;Y zO4MpTpV~3*O)9wy#|121q@S+5rxzbS_UdvD{d&h%BdjK&TA7^t_9@G4mSviQe{|mA zw0`&>%76b$nV4#0yR5VmTN6cXK>y5rD6*jyahOH* z@kwI{^w52v1xDYgY-Oz=;u(2EM8s_HU?@Bk9GO!z14S==g$r91^|;3?HqT}hj9wf! zMhY-~Yj)Ejp&}Q#s8u?WJ;rfd2d|92W^C` zjrF*NxiY2^Zn%pknV!izroB>(=YW|Hh3CZIOBppG0smYS&urFDoUqUPK#V~TPZU5V{9KRx3M0v7Ji9oF1 z>;4qT1Y$Bk4;<-0`Pd=`Lh+x-^a&R;I3pVQ?t_m5V8CelnBIwTs%%SI)%f{FOCnX5 zyA-HUhq_0T-qEN+xgavvDKp@;m2>x!)Y7O**O8qNa{JuseS(+NkAgI$;w0->3;Id4 zD#W7;Gv>2QX~_KT=B9H!WL+V1#K+DxUqFQG8yD-<;(;}s=Nwiqg*sTl8p5pTH0RUC3KvWz)`A;j z;+V*&s_wyZvX!Ho2)pG$*!G0A!$oXH04G|JDtEM2O#c^ixdD~v7Okz)4HF_wDBs9h zca_+6MP;`OAKqd!r?mtxF`xKTJbsO|rj6iw{i0M`E=P_nmDXJ+tVZ`>RBem2BZsnut&8q9KekNB zQgptv#qgYgv!fB}tGB59Enn&9P0#u{$YLe(0{;X}X2Jq`!C#eMgOT*wWWtobFP-%E zvOMJr|F+HV6|s2v6INc9dZYv;w5cbEW_8LdxGrWab*C#p{?b_1FqztZWejT#LUOOg zTW4nza^^pWn$*G`_NjOHPvI{1YOek-tmW$L%HbAnX|%LImVFo_fw-rN#*!4hUEW`t zc+fiwIKW3O@PGRoi>Ur_Hyd}PcN)^a{Jn0(p)Ho(Z7!C~j%1tB4I6wD_tf7;u&56X zk&2iZUSFo!xgGB29b5LHvz<1@ot8wL!j$EUZf(c)_URy_mgEKp_rSwl=E5FY)v8uG z`J75`eA;=cGoO%EJ8bEi^BCQHW$m6n?*H?U7yRo)FLYB5T0uR(2J2U|6}u4wqzFY0 zW$#AgOnLh|m*w@AUM@SBD*$q@i+t!|k4E2vmdl1ST(1=-qs6rw_4T;YuJ<%pw7R-Y zo%h*}sr@q{|&D?^sr|@zcce(rBN`mhXz^TH|%s`wo0UkDTDd zFM8?Ot2eW6mWf(U<$I{vNa))*k-MF|R=vwlPwO(EzaPH-!B6mme_#0Fr(%YNQhik^ z5#}YquzrarXEP;f?w2h>GEY;dWB>j%D#p}9+NUR)*L?uUf1w9<9vFb9HGsti3Fc#Z zZbfgCr%V_1Y!6ruE;xHF=z7(6er)z-dq-X&7lIuqg3Hx=!o*;O*AY#mQy=q4Y~*?q z_k!sWZ~fyo%GY9a)M@s|ZT#kUfCqvj=Yu2YdjpseOVwHyXoM=5X}j}5&&NHmM{`Sf zY50Uwh}UCgS9tqYIKIY#L6?PkxQBeGT!W`Yh_ht60$cIaU2_wE4akIyBz-4QgSJjRvoo)f}wh9w|wh%WA>$p(FT7cLpAAlejqkSRoHWs zh=oPggJfliT?m9FNQdQzf&YX^Yw+Y))+BL^hl+{#Dmb=^iq|IYL@KdZhbFgqE0TY> zNK)Yze3!V1Cr573#bmF=bg5EbW^{_i2!Rc#AqC?$)dpW%H->YVgVJb+)JTijh>gHE zc!zZ$tQLwd=5Ugyj4UX7G zk_|bJNQs9^`I6)0l>c9dbcl9)sRxc%#flRbgIH;fG*~Ok*p-7cNP?Jw!m=)7`Ip|; zhh_69ZSLaf% z_H>iUN^58)rU-u+cap>DanDF>xp`(WS(s?qlE3MLAeWD*cYq1Vd{1UkkqMhkIGLGK zBlf0krBWi*se_z(hrCIaFIkPaIE|dBkV(Z;Hn|{hW=8hJn&!EP))G@1Hz}0DQI`jn zVJVit`JnXaf&ZYno!PlXD`b;6N0pA{as`Tv13E-$*lsv!eQTzmJ+*6o#FFv3qVqYJ z+lilsiDbpZF^g$;;V5MSNoC6kFdMdxghUSUa)Hp8qPppqElQ!oR-K4xfKeGcYn za#fG^p>!FS!iZ}(xS$JZl-Q|@M;f6J*_7g!pGTE)&Z3&u)}yXTrB#}USr(x52P676 zq`k(X4*I1Milk9ed~}$6`6iVeL|^wan-0jP$9N%*RGGGifwm-_m=B0S5r~N0U ze_5eQstf~mg8k@5=ZIC?v!kL~Wph`RCfSx}s*(&^rw!Vomzt-Q3ZYCHt0|VL-sz3$ zcB8fvSN{%JjD`v|kyl+A3W-ywnbcXN@`!&Sb*J4oq4oK7v|6inDuh~xs~Wju>d1hq z^sB!iRnmu`XTwdZ%9lhMqt~gT0wt^J8m;VlCo2ku`zeZ~NSke^t=xL3uGxsA_=|f9 zkL7Bv$U3R(I;&M=Ql5yAZmFvkhKOtGG^0vS&R1U=B!{}Ps+kI~7@Mr}DX{GdbOS4? zUnq%9x3Xxl8L#MfG%MJ$0Ew?DtF=yNv=L^kbb7A;3bGsf zwEt#HuxM+aKiHYjxJ7zY`KElHx-SB{m5tj!y~wi~s#8@lG3n@1~(!kWDuI#0i= zwIk_f&A1tstGC8Gw&E+b;|sMyx4imWdf-Wt$9ZXTTd2@9Yqj>R;EHXz_o!CLd;hQ- z!QZQ~=t{n7%RCf(zL@)9_aib6)nPgMzOfmsEhm(m_PUpwLlgYJ7VN(l%)(xJzIvx@ zPzaEbc8b;Oun-%8B`gpM)vqXgzuktsAp5s1?82pa9UBb2lB;%gi?Sj-!Why8C`W~_#)Aha5`y2Dz8Y#hWJ{Jn52vt2yLFsZQ`{1mN5l5tDGsN2V9T&j|6vOVUy zh8(jHyuw8c!*$Hac1*jry2Rbcm^NpZ3|qiO1jx*}MsTRT-0Q%H+`Wj*rT=1EwxirG zrJTzI2&j(uav^-lZQ5VjYd~1s$+rx?a(qrlOv=AJex@Rfj*_0OnZw4+umLoG!;8nA zY|G8O#R1#P(kyo4jJ{9K*Uiv*+xt>$MYx|UD%v0*SMY4(>&Dc zoSb_M*1f@o4gK1&t=Yw^*8EJ-&n?Pa47$>-(H>JbC>z<<+XSqAp2Xcw70aH;&E3oG z%svg?R=uaTjo5v=%hXKJDnXSxnbdVfEsa)7c`Mt+>&f^1-T%C7(aznpoej*4ZAmcJ zxQC?P71G{AYm#KGQwgr%VLR32tc$rF-Vu&P{$1fY`-UBQ!@+&M-*c0%Jz!={-+F7} zL_FbhE#4Rm-D=I_D=vht%Zl=r+N#Y89DdBQES}su zmswdGjhHK>~uC9fSk8V!QU38!zT<3aSQ)#H@uK139&gD_gdncXcZJpx$t-sQmyo(^@ zivEeMnc+#k1h9waRVBO#y4{z)+**9fx~%E`?4U-xjsJjd>DEfcj;@@Gl!PYBl{M+8 ze$JPw73hzAhdzDiiLT$!Y!^mJ;lUi>k)z>?vYe{E>fyrbm0Rr0tmexu>iB)-gazc? z$>MAE9c2W+uSZo-_2I-s!i!=@QTBqy6w09p}8rpK#gh{gUkjnZ3gc*a~0f-rmNGee(Ezw#=TL zw7%adPvW9`e00b01J48=f6NVyrM6jax?b`y59_lIm=-YfL|^nqKlFiXTrm3b`X1!t zOoci-o?u?^HxJo&2Ja|2@7@mdxnAXmaP&o=0sliU_GDl7W`Fi%U-Y59@-08;U4OV` z6DI-5?%O;oSg+mE1H?X$%P23F#scb)-U_m zKl`+g^lfkXxR2F856+V4&a3F_RMvENKRp~=>1UpKqCJB4Ik@ugfnbmJt}p!vfB+MK z0Sy2Ilg2PWERu#ogffCSI1f?jfj}i(vHw{Pfz!=oE|tVsTqc_Z=<}N0POHmr_*`BW z+wW<;-oW>#`vm$72n7WP2@?|!6&oENAtNOvWhfylFEcGMH#}NdYTN z1ON6~SMyu}XKVLtZ*z5bW%20DfER>^hZ&5Ik-wC`vZ4@{l8`8jrmHcmv9F;go}s3` ztFpwoyuiZTe$&<0d)Ik!QEBB-Ss6d?@$>Z`Is5nj0WLx`3RFFV^iIu71q)t7hY#Pi zi^z^xMT-@YC0nKpi!&k7q-6^!Qd`Lo-JUh^_Kjt@aaYP2Lq~C@J2t)~s*Bk0AVHr2 zfdch6G#}BR|Lhe!bgCzQ1XyW!1bGY->i1<+faTBIH5Y5@*eJP>YQ% z$&$}bo^&!-!?(Ips!VY?F6KF!IBmkgIXEX)s;2x5RD6_iV@-{WI+n~-6f01a5x3GD zOX}gOpA8q*%C)P^Vqd}LC7X6cYuB&Qj-)o*B)4Z8RNh`mg?HX?dadyFVqrAkzgY<< z7yS@c)1-?fN7ombUv=sE7-biTnexI~P&a!9JsxXTnp=aJK8>1VmDMa#z-|#=e*GgK z5y(ZkU*+Ap-u%pdB1 z6roNQlF%(jDfGW_#z+b*Y%MhaIW1?tt`e-7zY+BN+8F2bM_i!7dW zI_r_nXWMfag}%q7@QqJGN;zMMo^-lzIb>qx$;H2Pcewe{FE3Za8hsp>CmFgca@}ac zN0eZj8U~Pg;OGr-nuow#%`7ZfD58*rwW{h-kcm*UMf#XRw+!B6gH=4rvj|d(*+mSB zBJ3g*O&6}+rLbcybYbvpWQ5w#5Cb^O;Yql$L*%)vKt4PmyrvL=&IwBk;t<;dlQh9V z@=SfS)BmD&rkF@YW~+N2gis-SR=W}sZj2~W;l@~41;{ZjHuv$Q8fnuOtVx5ECZU`G z4>&I$^3ZIaTVOMMMUJ&C@oj{3BBx`Ac46 z@MvMe){{PXu}M;rjFqIH?*e#6X_k^T)|Ahz5SmbhE)=2hsm3X-0K_{EP;;&%CoK8G z1tq4FLAIR8?Z7n8gi%p^8SIq#aQP*CdM6btrPxYK_%x69lctHwK-dJ@u4+_sEseXA zo&SIuRG|))s6|ylHjzL%v3L`K;(TBqF-jyOv2Bo}TT`SeX3y@4bfog+Qav3BF_$KD zp91hdrKSvrJ>{uSWo1-t!d0$B<>nBZH&Ip&DTzir;vW4vOR82?nUa*7Ww?r= zk}B4#(b;Mg@rgc|wp2W$s%(iwgVtuUkWUBD;alNKSG(2-8(iBfH1TKD4>Xh;Och&> zpb)lvc>$^&0qj&cT1#~btdNI2WMTo**k~=~XeZ5Q?V8mKnerBH0Mo1`Ef5xXBW$$~J(V^wZ_5j@`ntMzho;iONs>l!R8Aj1WKvY`Yx^M!2ux_1H?XmhsgoO9_Ai~r&Ixuo%! zt{iOLP@ZMUC|LBb869k44|~|aR`P{0pn()?;2KKCGJ3)3yq1}hwlImR&2k%RT4xn- zT*Tt3+w4nA-I&!`?2vN=JR%?8f|+@C<{gV1P5YF@2;nusy$OxsL<<`LiUvRf{{3%& zYXbsCE<&*7ZR|!X+jkA%^$Y9@(WbUCuzu~dd_i4ixH;&NA%!QnQ626|!H#dM&@t*< z%D(NHm7gcfnV$EYxU~|wtrX63Z74lxU+)_N{RY6#5fJbt2t43JD7wK5p7ew(JlMWw zIJ39F-|9 zOE9bWy@$*Aw#)G9u;&-Jc&qUuC#3ea7lN|gPIU}UfikQ3MF|z0u6te7 z>#K7k$$t8?HzxJw7Ut}V>1vjbDDJc`!-AXV=lgBA2>a>%?|*OSdQSL=59kcA@QN?_ zjxX_;Pv8p9`4%q%pD+4GAOz$@(6HvT_@=gf$4gf1}0EG_$6A%H7@CcC)=O9o58;|k& zEdr%4^4tUa%q!V8FkUt-#gNDf#!m!A&6wnG>^@G-#Le_lFm>)J4Z9--m1h1hYxXh* zlP;ouCJMYn=47r92m`R-{%!z>&kq5y2o(?siw+tDj{%pknh-AVdJgHLkP0Sk!!nSf zSP2UsX!EwtuZCd+*QETOXys0j>=fn5UU zga&Lt4}Y&L0uKQE@aKLp0sYVj2N3~j=;-Jz5hqX)`TtNEi!IqcW&`i$=}moXg!*WWj!Du}HBL(=fo;?o)OQN=OAXXsu0@C?;i&#P-h?Q|192Ko=cAAN8>a_^}@W zQV`8$EJq&JkkB&QCF3U^=kNo)rY2j1E=V9J?f()0dGZE$G3fqr0E~|>1u`&;kbj77 z;P~(XozfAPvKb4oB%tuu<^lu9iv+6iyC~7bWC{GRu?qClYzDlNCe9ZWv|XaQi{5Yb;^!3Npb~Qu!Ei? z6_Z9STdw|aVm1+{_EbqnmM*F&OS3r z(99j*u`TJdK5J86?65{Ahd+DsKLHd81~eG|@(&TzK#$b$B9!@>@gSY?Ac4*pk#ixV zb4D&y>V7Z1xUVuRs@k|SX1EbNzc81^^V>3|vC8l~OOi$3NhLAkE8B-g4@^DiQ+_M} zE`g&K+r5p}RdG|_Vu)pUbi)J0o$^;R=RVECrT=vK3ey1(4?>sm83k`i74I=YAONn^!YDvf-(><= z#%5mPwnB7No6G!E(L@o8JjcyE5k^I~L@`p*{n%5-U^GJ9(0#~=P7}wbaxhO5PD_1s zwFDJV{WI_aF&K-r0E1Fl6}2EI)X0kNL7P!YC6z&`6e1lCLsv`0-lbzT?Y+QnU$zoF z!*dl!?|jrVe&M^J$m0=%n^l49+Q)axfW{-mDb`Boa$E_BOoLvosY{xzJNNFI36Z zQSN|d*+*MQPmxqrEZ6ib!~Y6SR}*krZ~nlg6KnNNcnAM*RW0P>He#T>cynMSplFBI zU51n&0TU>lmI#S)_@0&_4RdM}v)>f6If=4anY2QA?cnS!LpSwgyv*YKsAfi1OiLE4 z>~@#VRApB+Rp<5*Jmf`Blhr^-8#*H8&n7@zif zE4UXI)#n(|a=rH{8UO7VlQco|ggJd`GWBQ)erH3?#$#YP{=VJTN(8`WVq z*dWW-gBvk?xl2Ns^?RG{T2m`iIh22x&FZc$Ts;kiI5F1XGZbT2o>Z`1Z8#`iwf)u( z{@RIVf0y0zHF!0Gcwr_Q?PEWCm5G7Wi2?3lAsAtO(O8Wy0jIb~hj5B9ml3-+@%*jX zAQVX>RFvbbi=$9uUw|@sM2!>3(||>FJ+Ctx1&Hs=bziWC^B8{vqG9NjZp#$z06Bnj zmWYRU;x4d0l>c~<9l3!UxF;+5fgxDL5-wq4qu`g_0J)dj(`f4WhDR}ObJ-;K_hswZ{djnH0LJt$+4wRHj0vSP<3VpA& zS__3Ym9M_kw#4s+N40h7b&qkGcJ*0y*E3zk&@5L{W?7SFg?X4Y0vVPEp{Y}A6d4~I z`k|frsUzA347Q>#TAF{dimh6swO3&oQiC;@o4a@MMww#Amz+&GbRRBL(|LW5SgKOj zJK;H=zyHN;T@-Hd`F?RaulHFJQuCitc7M5NMt#=?_w{p(8mD+jECiSTrZWI~m6@R$ zq6KwWqnS`CdU}OZtDpIreJ+E)n43Y_AU{|r15-hlFB(pop+4ZQ)|#aa1ims-qvYC& zViXG!nt=n{;aXOkh@B z_uGzjJIHC5VRBc8Vb!)}7JxHrkQ02ths=gNtS+%BTPtt6pLznE`oi_mST7r+HC(H? z`@=zes~Zw?N1G3im8=(VD4B9=*IWCzYkg6;`(B!5z7u}`7hU`JDQ2uZcU#B-eMPfn zUX9$Q-?I$~n#r3Spy1npvF~vZK*A~f%Cp?Ue-i>We1g4PqnB39wOR;&4y;9eo4NTg zOI(5lvl|AI#m^eb;NzV8C)u=AoyW$FUAVqydpyIi$A3J~bK2Lh<92mvm;Cz3RsXM+ zQ7GmL8@Z92(VyUi#fHkS^%;1z%AFU>vAx2zJOwa-qB|Xu!Clj{I?O-4v;S@YMP0m0 zJlF;iSxH*OPy2JDsi=l$_uRXpX70vu+`iYA$NcwoeH^!eT@ijgGV<3HRddyZJ!W6? z-xHmvnO(VgsKH(fCx?pK4VUjGoYJ$MECBR3S)g&PJF`1{dZXCWHG0Ioder@`<@wN1 z!#U;&5$BrFsM@H=_$TLA!q&@n-_y2t0sgiHp5S$QEU&113VqLwU7!v8z-bdKoV~*w z{o*4Xx;eh%vmNB~k^-U`l1IMeNuI+|-rPgIvsu2>(O!yC-7kv~-Yd48iT}z2;Cw%1 zoQ?Yx3*-mK;~0C`@s|<)ZHu12{d?dEpU4sZpU=`9U6Z&28NvUy*?s3^9DE9gDgYLG zsIVRhu72yaegHDP!@phJzkKXLz3k83>`5H$PrQ0d8=NK7tXrJ&+WY2XT*ku|NMM@2 zecr_i%kSOuo(q5QgI`T!#}t!7hvTfs8y;^T-bU*a@|W!v--YroUdr!s<266~vEIVz zqq@C5+&3JfH+}3=9`%Lr>{DOSV4n3+T~hZ$e8t$!t@ABneVwJ}wc|S1k^SF&8wd;n z1F>j4B9qFbjCpKApHktvr000c2o~E*{s!71eN54MR+F ztYCGVG|G|YTr~hRAeMC0RcBpW;M`amcPPQtj(~Ro82@Bn9PO8$V1fR9l7@Vi+eaym|N`Qz1Gv z6)<}uV^vnjX~mUQ;(YboSkWO$V~uT%lN|;LdY4Xj=(rQ!mRjyr-aYwXMx=RCuD2wU zqdrOMl1D&>-+lT;_K#)u{THjOmxlBsN$-5g!8)TQs3Rf`b|XRns|CA>nrpHN!2r0$ z$!u;(_12-Cz!i|EwIhniOEM^Gr6P;cVC9v#GA3%)2`&VyR-@UC=G}sG`DiPUL2BBO zr$steUqz?#ON6Qa{<~gAGE`|~t4Cg0Bw(}B+W+N`1QxjKXcM5rV6ZlAfTpp>BAbmi zD!3W4vmz(8p;FTdcdec!4uc9agTlN_G{{}&VsP;qlu z=iMmleM{chRu#CPiM$Lwi(EzXRiTKMoBy*4!&1|@qum3|4gmtnTY0AV>_=JY5QWP0 z=k9~|ac?Fg7AoUpBTpukZJ-nN2Qj4Xn~t6Obw z@hs%!O&H7Ln+CHIivu_>IisQ8;2d{2#4XBahUyvkY6mayl#g=evln`@b~Pk%?tO{T zVf^H0wW^`cN~Rl_`ihvD%$%c@8Qjlk-4f3rjC<@%)1XVrKSnoyDAXlQ!f)*7X>U)oS3tezExfxo{JVwME9QM^d z9wM@biu56>mPR!p-cN}6!%`BJxc@}|j9DGPuEN;W8L6JI*Vh!3?bw?s_*X*T)i92`jD;dtia$3r7+|Kx*bZ zn3K%Z?3cquVl$hHw1U#AM9oJA5uB0nl-62Ts{vs$lbfW5cR+c&i|OtY2_$7W>WQ68 zc(GZo+$Xfk$e~%%@|JosPM>(0qF}a&D{>S|9UJ#00r`T~db7+*GI1 z7s*2=GNd8}U6g>xD*RRRev>SxIq8wnbk-$y>Il=%I{8UOJph3Uyr&iu)T;!UZ56B_ zN-M!Qya`qipnJ=p-UM0zZU5EnM1PxE%;abd7}2p9ic(E7AE3-c9EgvF07OP**iy@N z)L@|c=r!Rp(zlYdF_47hL`Fx%&83G(_`u6cVH!J4&aPde(O%EsiA)9BGm9!oM6brN z7I8dqsH~K1QTZv93&v8ZwOs0EaoNj00cucz8X;Sp(bcy}QC-kkoFrHXRvksItQ%$B z)>L%%?*)^}-3T*z9sazI&4%->ios+mpDA?93USW5! zJ|zcbSqVX-YKV-!v71tv>e&wFvSc1SPM{3RoNx&yMtpAa8UEhK=m%9D!kFU4#t2zOQh?*keriQJqV#l%F#ez71Kv`CI zN!&^jgO^UxIvxg-*V(D8F?y%i7L7q$IMZVF8V;o|S5MnOPLQUVe*EKq@8D6pI@oF; z@+18QdLq;>6DY4Til+NGkvA7CYuY^!9Fw-E-9cqcUnr)TsOPgU51H=TG`5` zctf)|>MU*9LG^wTWucawR7zmot9=8V)@}AKKP`ANf$QSDcV23>VtkbuuknrF zDioj_zT;#sb6uyL4o@5_jJ_zaKy%}%3T?cGlMzv^c?Dx(}$DktZ0ElJ_J&vaLK&+wqrVso$d{jq@G z`QVHH+E^Pt`6m9Z1dn<*#`F5l0$rsmwl(8k(%8L%x+)!GbakwAejCbeM2}1|?XYju z^lE)@>RGRPQd#+iLlo}Gjhkh3!t~|*m5a>X-TU9WR${4HyBr_B5n#J0pYj>iE2$Us zHJ-{8oV4iKXVn;UR9$>!9;z){bkGP3EYsJWAL$WIfZ+@3wV(UFA0z$NxII`4;uY-W z75@^sR7Qzj4gQtgNlJ5p+5f3p_t?`;;jefm{l@-yvyEgWXkqxL}st!`$WH z%Q08()y{+PSj~|c;{=cpzLpUNqFcB{5*lKP!P1=g6BI^Zo>`%vM9(fwT~}Zp_MjHT zc@F@x(_ENe2#O$Q7>%PT41Yw)2_ljjKH2NdpW9)Ys&I<>$sj0B*zMh5mq|(y^4=ac z5KUmrVXZ~I4Pqb`At5e;AsVBNdqUlNp*8@`~v+!i^-B1q7p9oph8HdhGf-QFFO zFFqFW^&Bx0pau}+F(Rb!IA3OA79;+GBNjy)C4*>TVH}A|LlF~=Xk+*l5Ic0@IDR5| zz~UQHQyQ-0>Y*aZ<%cU4SpBf1%B5APDHnm@W0!G9?P!B8YNEO@)=KmW5tfFI7^D#n zB@!Z}i4lO|A)*s5BHrxH($NAHS_R-tVDhvWMt2f!USil(^-_*;bY<5m?$FsqJ4}$Q&>F<3IYL;LTi75~Yp=CI2EEB~l*Z z$f(!=M?kp0oHeCWPM?ZN3~x2a`2Zd%!~ zqAR|gxqaFU-s4^3U=9|c0l`}z3LvZ<2r)hvE)wNo23=Arp)17_Q-Vkoc2E;aCZGLD z%vd7^YGrf*ByEbB_>7fZqMs~|r8(M=$FZU*mS)BwJey5^|Wr1|aNP3B@>P8a_&`5mmK z#8B2}cjRY&?%o0TCUBA%kMgKeT9!XCo_QT-+$3ieS{`#&W=1w>0deJ^Z3kUcCxupM zIUdbRzM~0x=SildJL=Ym#wBpoUw@cWde&V&;^D9Cp?kt-0LrK!?p|r&Cw>kDAT|x{#wnJ>nW{bM$=J_B3gn&30WI+;Schu=2+-j~m0z&@i z0Q@L$_9~F_DMJP*E$z)^@y1k5RsFX(Hh9?&e;(yh z%F@7XR^kb&P#~z(E$NJGm3#Ujx>)NAb*5)xrw9rdxxM1I)>Wo$>A0F^xV54qfvS?F zW<1KBmT}paylXqG=q*a83GhT84q$H5XkqH=o$9D})alOd=)VqKz{wJEI;GJ8tt49C z(N@(KV&ro|6gzp(nqI4vPAH^O?6x-A$(1O_dMt-#LD!;WZ!N()dR$zdA=zSRz04$R z!Y0ect4*ybgVKbnzA1g?t9RI{&gQJG2J61x&>ay*6vMQUl z>0cgSQQBzU?kwKwD$g1sur5pB?x%k$;?N$hiWvpcD(MBv7t<1&)B51qNbJ;Fr`48+ z?2)JIoux^7ZXz|(#*VGJis$-Nh7e#U>Sn8YqUkNR?j5}@?9wgX^=rT4Z2Ru&uKKL6 z?ylb^q+$Z710EexMWYoaX;{FB_sz(|HL0|!#Q`+R#dyPxq$<@$YQ<(8_@bkjVru7J zZ^+42r&?1>uB32r+>r2<_);yY!Cd(c(3%=>`p#{A;%NWgzHiRf?#{lip6;#g9_HXa zVR0VrZaB{)Cg=ZR<csAeOR-HE2C7oP+e$7_3{ z@9WAZt+KBo$S|&=^6kFwo%SsK)~_qiad6t&?@~*LG@m5G!Vha<_hlfX<`+$&M#P35 zB5N!3jvaSyE`wQcBs24C)$qU`@BJ8ucEZp%)90*A8anQK`stxn){0gUL2}2Xgi7q3l9AQ--6YvzJmV#6(yzSp1t85}ys00@h1)rTd za;hXx@=0B?C3mpqf^hg^Gbgib`64h1JKMx9&L|gTjl%Fpr*lZtZ&I>y0@iT-1}ot1 zDIS~50}9o!GD~tY>l|qd_6+ctIcU2DGrTn~F$;7^ehM{bEcZgOBR8`%cd3S!>wdsw zKv1$4pQkKNv=>+OHpg5yld)gEDy^#VIpeGbKmz^Fa9F?bF{<+`BczW0Eb$ENpW^R7 zVMPed7*_Ct0Q+%F5W^>#0|RN#KLfPoW}N?jWwNA!DMD|pd?@snI<)8>bf;nR$)+tQ zQ*;pit$OEO|(Zw5ED8$R~wK($22lw^}HT|oE#fwHhT(B}!B z>>dX?hjyKk^hj@a3>)4_llHIrtU~tFw6Hef)=6Cdu!1)3T~86sB`-g}YzZJSKtHbx zq2HC#A0=1tVG}nbC-!e)F_toRe|zvn9M`DfH&u7?Cu2fw`XxsTqr1HD3wL)qZ?{UD zG|+K4N|$!;%CmR%i9inelaZc7F1#NRxDTtMr`$Co99TkG}FcyYs%)v7bsH z(ZQ03uy@Reh+RM2Xw>%E$m*}OK#WID1J8Jk_qHgO=ed?*rXuxG@AwKPx7+==DweK- z$0CClxn!qmyb?ftcV0$!kBq*S``+%9`|VhRcsnN_mv6Z%m-kznQLP1OE?*y@Ehs8Y z5k8qfDA5j#L#=Ml`A<`u$#Ps_gD!vvIAYv7T=}`_!JY<_Uy##uPCrsc9RdH z8=o?F&oEeTI4oZ}rgJ)Cl6U`?|Lj`>s8R?gdFk>@TLnIAm9Q*A0Z37spGIX9va2^Z z#WGP0S=*hHEXL-!j_3LgJ#)$lddOyPG><8BJGZcB0NbLe#b}tLw@AL_Cj9cOm5a4^ zL;J%g;fDjPcb|3=BCe4B24xjpR9>HZn+Uk0l1_u)fw20ZO#mcll95wr`CKPn=>wz% zI=#P@Bv;K91NsWeVML?szaRRr6MM1G>#v?*8=5_x>pnji-S-iK)}{JExJVb z9jW`ek7K(}PEe1oIE|Z8OYwI?nOsqCo@Z{!(tWTWvcMyGI%Lcse{*YDHvwih5F8Mi z!GU-z5(WbTQK@7up;PJ7dc|U)(Q0>_1&70c0oiOW1Jr4CyKE)D-)MUJjR4^D?M5Dg zfd~{_Aw(HMK!pDgG5I+0_$Ud$5Sq|H7y-$A+^i(vAn@eK5G5To&0t7XT}WkJb$wl^ zn58uk5HPT{#nr9I)%}(64dx{_HkJuaR$gXyeumC%o?foDzQ)du)}}uG9qt7NANB->?n~bk|acj4iwQ~q{u=fPnKw);-!kiC||-v z%(6wJ7>*t7%$c+1OdFDLOxB@uh7CzQ7yv+cIY?$9O9d5eVl+Y$B_S$YEW#rsl196^QLUuR&LO`ew7v$>{zZ@uZo+R)?C`D>(HW8_fGCn zc}44r@|6DAuC zBs6D`De1IS;}THJnS?MLwh5G9jGc&jY6{v(@7+>#V=-m=?(NgIY>j6{j;!o*vdx`8 ze@<-Nxm#7&S%r)C`t`W)=-LIZ*WRbR`u+kAz(OEl!$yWQW_&PmMf&t1U-pR6@zK9NqDq)>qQc6??!5bsx9~n8vb?*a{~Ha#02jo=r9EH*#6bw$lMuZID6tT? z+#uRb$WuaGD$rI+G*K<>ax8Ae7Q2a&#$+573sUE5WD&;`rOJ*wP2~bIo)3!>uSg@C z$S}#kn0(F2!wzBkArg`8 zp9U(dP){W}4CPZmuf>+o>MU)>oauU8G+ar?CAZvZq(hWPA5$DIN9;E3)YDJv3f0I@ zkTms!1_WcTJ%bc$ED2eylq^;*#o&^n`gGMSO#we!v%oV^0&S%>7YxMMLJD}Vu$%wv zG~!tdn{|W)KC7MAlxzjn_CytnJFcpj#cj0aNN+Y5XGjq}v|Vn&Rd>f7Ifcj1A$Kc} zJW}&LmETlXT@}7pubg#YgAul@%l))wxM4H_^c4%z98M`DUyGGf0SY37?Gln(s7+*& zIiWUX-&O{WmTi3w>sy-t&N*gSD7!ORh6JJ+rYxdf3cgX9wGCHc(3qCOO|*mRSw&?CbKm@9dCB zqwmi4+7c^;nK+ph2b^%52dAF7v#2waTg6{abZDXn1?>B$srJAlv^CW2n_9 z9+cj?yp_Gh6)tfkEXOV4C9lbSYCPl1i~0PKIVN!qO6^++m1t$3 z9rkbl96((V6_z^u`G+)M6Uj$@B{5;GBqX@gotzNTHW@AuS|c0Y$-?(13+Byb&C4LA zIM_ile$b3(ELV$2$TzkK_KD65Was>t~714;n zsvZAMGO@4qidZCxqJt7b#RI$qFjj0J7By723ZmjDg7PBv!iYG-jj{iXXar#@&*iR6 znXqq%o6e!)xI)Pt4Tj_q1qNVn9$xA(RlNfktlS5y(d`h3J}e|3I1A`(d2nZE{idAGm+%%aRd~A`6*t*~sHyBIo@XVB_^q?xWQNowK@p-Id zIqYj9*j>22m?XgrZ(UBmj@N8IvSZLD>J)W&y46q_#=x1qA5{ z1TVQjKADpgEN$sNvG*=~#&o9ej3+8>S|glZ%CDq6oGjh(Q&`aBh5sC1x z>3JG_653G8)~8m?ROV$SdR4A6vTXfpWL7!)NSACg5D!YovJePP2U-GsYaIas4(nEQ zDz6sC!Ag&=mz^lR%IrY{e$ksAN4G@M=eZPu!*^Kf|08`{vA zcZpsV$yWy`laC_7Fo+mH0~GMPAwafN6M~iTAlJ$KlIXTEMKC?<3Shhn_)$jw?N)r+ zJ$LT(xD1x#DIPpjyGZ!C_`)2j3gc8MB^0W%+U|Y2%g`V8M|C3h+Us})EYNB+i7IXb zOtg90Ik^hMz9T6n`{LNO3I!rMt_P2MEEl2iY=lJiZC;VQS2PxwdyIn_^8nkpqS4C~ z6pXMPsfA@zjqDH4S|1;+W;!NRcB)x>sOmzD<`E~7t0mUofF5buk3Qre21#H}9{Apq z!WLE#o)=tKw%aBf8qotr_PErT+d@0Jr_X-MEP?+@6o&04m+Oy=DE~ zBr4qJ6x4UN%N4Y+2_;znzUAmhXL#Zjzcc>>LwkgehUw#xJMBR4n92dgrDCzZ%ToP? zhKhJ#s@NAbBv7rPVJ_Y1QmwUBpS`mOl32Sv>lv7bb>=k3A#8d#V>>ac*Fh0MYQgY}BCI(Y4`A~?tIIqBn1Jw;F3_Vc_8F#;J3q_%GK(-fTwy=)ayLfmEEAKz z`HP8}iv#PryIiv(-(wn~$g$>{G6DY#I^-ET{xY^v`Y)YPz@%G1BfF_r>aTn1o*-kF zssujelm21I_nwYnPIrTCiVsa{| z@un5%KMKi{tjoic;v|gwIlCx81B5u4I=I7YKn7gGMTCaoin!~ODYc-u?0cc@%Q(!d z8;(1V@rx``Yl1&2xiX`Va*LJkdMGtiIhT7icZ;Stl)D0`L58qH99)4^IV!*C!{M{S zKm zg91{#4D~xjRD7mjIk7fl!`lCgw;2o_sWFTggRj@%zdZE2qPjfGGd}zZLTx#&AyX7$ zT(l)jM8-Rpi4!u&TP0Y6GRm7Wq#1=#xjJdgi+v!dYYf4tA;E6UF3lRp)+5K*dq4Pd zLpUTBL3jz=vqAT=I}6#l1tN$T2)+pNGeC4ms?$ffS{}cNrJ^%JfK^2k4=f&|ydm@f>ugIEZSBtt6!$20s${87boT%_4kM@TXtx??X_ zQ5F~*DSUIFaoQxzyT=~{LQf*VSdc)2lZGRVL>EcI286!9G{$wwCxmo7eUi2YvpB%> zr+Z*ZrOCn$tjKEwxzYctk`60DuH4FR%mQ)jO0Q(Mv}45pnzfTG%d<>L!@xs3k((QP z%NBA-%9+bwL_XqxsUh=8fkZL}1WZPQ5hujUm-0<1#7j!6v}lA)EM&^Y6ew-$C6lB| z-nmLaA~{h^Ce1vz&SV&e;RrX2!F8m$cC^2hj1c;g$C&It|GTz2f<_P-KtP#=o`g@k zx=q|1Ncs#)!DOfY63#W6#BwOkE5tNWNltq)52%dEPXjeFz_5i1MRKz$>!cs-%+3*8 zqOE#4c*~fwY)A0)rdzAAmMkf^oRB{QM0*6Ze7u_>EG3%x$L0gd-F(q)(8*w&w5KCZ zsdFyw8_+D=JOlp?zCc)w!uT8z3%4;V!y_e_Bjrp9olx0>!A62NvW&%VTMVd4&3zLY z5ygr6nnvQQ$=Gbq*`(17`Y*klPrv+%WaBL-+|QjX%>L{Y%lkV4-O;9mOdpl6*T{ni zsS?xM$ka>Hab(g%YPlCAu}6xz(xigZytxOtq|lo$5QT(agUxF@Q9+c=S7^3XYSA-| z(dX+;hr3HDWX8r@NLTQ|O09=FjmT;=Pv;cU!?;TH8@C5tCQ%&JBBGsLaWjfZ)B-Tg z#(>Vlkg-0Lgn7)31IW?DVpcF66ukj5p)@YT^Hek)iz8E0>C?{xbT*?r%>Ud)e`D3; z`~>D~P9XpN!qKxzP;96wD7UQyBD34dT%{<`1j$1k%K-vb%%D>DI)p3bH%ZXaP2kcm z6%U(a&${HtcDbu+{ZxgsPZM&}!thM8-|MO9-Su zq^!cd06aj0$c=?A4-`KHRZI7h&Zr91WHPywEys}TDiTXE8O#EhUCCn2J7iT7EvlDL zxzwE%g@qL|r%S-TEZT=vvPdgTzS-7#V%o%f+Ff+aI(5u!quP&ylY<)BtZmoKM8hTZ zTD1Rbw{`0k0m8kpiULOcS7SZa2qM_@%u%lBZIqJT(KiwtptPaid)H)H$g9So#$~)G1#4JsnSAVUj?0)ySwW%k2By+*pTj1VC>CZL3~!ET@jtC+lM7$qdi*loxn|nm!C>Xx3$82 z_%&8ttiy#Y)wr-L7Q@s-;S~1BE~e1&g5mjtMKF*LDrFVe2#8CnUR*p+5GYto%rxy~ zVD8Q1WfS5%4&VE9#AIABBwpGkZrUCm+$aX&Jo*FbBH{0{U)8ftT$O?qhU9up$1<_p zm*@xqUdc1ow=@obLFQosePR?HJmGXU)J70@nKsR|lGsOaW~ zwcBle-69^}2ef8bveC)&*ZOKi$uu-IBhJrrIh{mUh?ry=FL}$!wYSZX)F7F)`rlyWxKv?Gm#jdSI zxl)_w_-@kvwI+{n@o{Xa)bz?ja7`9sm9z2_ z2g?(KA1>=q1ZZ*UwcgJ~V2*X}InC5T2`u@<@z-5*HurQqE<~QbU^w?4#2jZ6O->^q zZzb>Dekg>e#sfaBUo@<$h=T7zC)AOoJuqRFy4!MMm1+O}?-# zndI*r7HH)(XvY+vHx9UkHSiTxbGTk*AMairdGHJthikVsFHLe)zjOEHKtopN5&rXx z%nvO@cS8?LM`9Qb{dEvl+hmPmF&ACt(risn^L}6Rn%ZV*heRZPxOVVQ>?<4S_qI{VK4l$>7y6-ByF=|7tE9sY zwKq=g_ybnXzb|(66vS#SwyTdG9e?)3&-#UKc`*N)Xb3;;qYhoyEc;c*^Y7zxkiA-2 z9qhQjb-GVQ(U^PTCgWg&$1@i8wdH6+hD)mF7BO+8Ewv9DC5*>=US zd;nk0be2cjj@2w@%6kQUb%%q|?`qSut`80NG!{RGAM2*X>0bQd_4}g*KD%dorcTjSTx?AIq|^(1-0b`e9W6agP27834Lv+SN^B}zT5|L{TTVXiqME!; z^(5s9%Gm`bxp-#Qmao5W*zZ4h=bylV1pBN>G-*;jNcAXHdU)wlCI(unz{3KMi78SV zIi^zLL<53zvdXR4m1~zuU&jzcTcxDfvTQVK+Kjdg8?&3nwhjCF6Tz?mCP;o*;p!YZ z1Tfh-1CyLtuq6|C4fdJrybgw`QihLJ2`$~3i8mW!Y~nkwZn z?>Y@cOZugy3j?oRgIT^@HYG_SXQQNm4`?Y@8`TMmoyU1;{ z0eF>w^y~&#To?g&#STg zpfM;MgsNzUiWH+za6*M9p|t;DFed_294R@K$fk*HsyLod1BgQzjN@ST9*vw$vEY35 zHCa}WL2?D#kcA$JC|Q9P=p>YkMrnzZZzX8uf^A z-FI!S3eB01r8wSQeHmrvokpH%3P;*rx8<%&w5S}Y%?YLw z0Hd-b9mfQus_MHgvkCuMtmT<^?~CE?i)X(!Zu%R*TlDB7!H5)WFv7$xtgx~J!!h7m zPLl>Hg1k|BajzMXqAiGc>FE&(;3B1qbLIkr&6>n*xl_C^ul*`yLJg%r&FR&;Zwcz^ z{M3zn?)YmLr4cPCp-CH^FyVzP-Q=^*LL7BOR6brQwwz|&(MP;?Dkf4IifwYqE`9Ee z#vF-QHruA7=uLU$foyY(ujHz8jh*#;MOA)-k&w`UD{6S}M*3c)(xwH=sFD)1745`t zO~pQU#7ERDzsGi*Ti9ru!LN6M$FcyI(y0OQ}5H4 z>yC0a7v^nmwX-spdRiWs5~0w44RqfjJFw4*(6&P|32RlVPw6e3-l>=z=mH2#k@80ifHy z<_F5)i1H$RyF~s_iNjYK%9V8lo*skvG<)nZH&Vl;^RN{`1Tc|;m4ix`I1o(b8 zkDUvo)Df!&PwL6DmzA5#6tX8K3Ka7ekNkz1m{BSb>9nAxTgE}nqdEi>prJ|0*BOhD znTLi_h6)-DIK%1Dr~*)<$;#+CjR!NBsuRa2)VDo5L zs*Y2)xJ?otx2nzrYPF<+6r_%@6wgCusyLTDt6x|UfXx<@7lPT4JXunz(vFr*j!Det zP`HBBW;Q9sY;F9onJ2yOjc0A7=mJc6+iuS(#7YZSu=4wAOI+h2TpE7kuL ztN5@iMv`!W_^ev~(Xn3rFIZWm+~E|MSDnBtS{n=j=4dD|x**?o-3l)Xw~0C^^o2C> zrMZ(B)djJ@SrT9yLys}lz3@G;kp3stjn-Gp_vOcv9F||MPRYN}dm@f?T+ba@&r2L$ za07r`uC@9CpuRxzgq4gFogP$^&6#EikV1=un)jM%e2;oP7E!;F*u-AW3Vp-e;!N}K zqr*!xnj0m=TQbkT^2rv~2E1IoT+6^AxvQNq(BRElchA?QPU#2=Xq(7YeNVR8p*L)q zo1OR3^^5J5Cat(iBi6oT&aI}!5=+KOd!71SphPCpKoM(OiKxz^M=HYVk0t*&77R8| z_h$V$4&8c0xvq&^w}BEva}U_#wlcBPv@^X?p}m^GpRxyw>D@N_*=6?anGgOj8Pk~5 zDK#V$$y#8ShMNGaqw)r18ji4$OeONHb#%&xu0Jc;wAghrNo?_JP;GX#RCetFKv&t<0jp7wMo8UU%bPtI~ORXw=;g210WVtQDREK!gkX7`nF;EIwcedlu`M3xL z+U`Ib!$T$?W0X;jioHmBL)fP8N2kyMYVZwSa9q%|YQ?>4_&jfVX?e!~AUQNy2IrIO}ZF&6e9lM$D zir+LWWo>=C_GRyU%meQ^w4=>fp*zj)cgK5ZqLQ({qk3KLV7i>~>2z2?7xAs&Y~$xz z$@wJKQf~gE-Q@D*fqC>1AfOe*CI;J4Sy9<1Q;)Aw;k7 zJ6BD?q;ITx0Auwh!k*y6A2RHVmuF!7Pd+9ifR9&6xK=`EvTMO7eVnIqD|dJdg#;dE zc4sGB_CrcRLusk!b38|WtmlEQ=VGyhRn!)0LsWZ3S8AUSUs@Yr?00 zAVMzvcYHT>YtGj)T%>#!R%r6ZfYHT&oQGFTfp!$AO`nm1?)CqD8fXY_SAHEhg`HM+ zvzKsdp&LLm54LxE02Wq$7hp}1Mo8p9PJn+FcX%N%Jrs9?IOuu^u=tEdYf^E@XqlQZu(;yKf zL1M^zQ7|9AA%o#UiZV4l_(TCT^?y_+hm^!jJ-AaOvPD=IHW_v+)HFq!Cr`!H0KGV6 zo`)Vt*bZt0b4=wkPPH_QScR+ifsa^lR+u<1R)UdocbJ%MRkKK8MLAnzIleI;N|1)b z_lFwLYBUvxo->DaC}AxVFDKG2-Gz15uyR5;ghU947*PLSi^eZc(P;3&Mli%p7l?rx zXlcvnjBtmLAy^vG7-N*!SdL?jndm@Ar!519HTbq8Csh?Oh<^__j!O^%zW9gzmyYSU zj__!QNj4%|gk>In`F^E_DIzg{?r}G^6N=ZeNt`EBz4#!az<(oICdoI4C#jM<#gdTc4A(Gk@}_w) zX^y_Qi-LHQ=r$b0JIMtxHeGnthlX_@MRnKLC_ z{q#s+sg7kCS}Un4qZxfrW}2sI9yB=t9Y>R;_=|EWjO<{Sp=33qmv%PSWqp}*xe1u{ zshe^4TR@kES;$VcS6r2{m`^E&O*D+jxdj`kg7`R+ZaG#(=p4DInWI^fo(YS~M>cy{ zH@L`_Q-n|oN}dk*fOLW{>b0JE!jo7+dOs7tQ{dIv-xNeP@?m=Z-{s$pa7qXxT1e~pKHpd;$(#e=aB0MNDyhGMHHFuXKFplch|vQLE1pk zL!{1Gk!;xX`w7pUD9c2`=cy~?PKYKuoTrFAuZ zk_u~m_lIwznv`jiFQTcNdSDV&raS^zk20#JI+XT_t@kNQa*$s^H*|>Us_v(4$Du^M zq#1fydXS@$5t5ojx>A1UfRg&Fz#9Loi&L3WiEWBGVw-3ee79WcFiLI&IpBt?@EWhuGgDGp zuQ5riFAKBdvagf6L;%}yHM^|K3XGT6hFG>p(yB|{Gqzr@JAp z%u__)_&gH{6FvHgwW9&lBAlxRoj5z5$=Z1GSF_c`vNCJ7np3t`DlU=gvT2K@Ui*hj zgscHusb2abJqug^f}%#(RQOY34_mZJ`=WyTdijG@Pg9Bgxs=PZwH<48Rr_~in69u| zdNhPY+}3zs+ljI|wz+t=E$jcbq06BI=C3T6xmg*n09$==SsBr_sl4Kzdz*;B0)Bu? zxDgw;w_CXSvxtW~qfKjVtvaqH>y0SoOMf>$bC#k;lm+C7NH}|ZvMM@f(|0W^scw6- z6$!Sf8=k6rXJX~Ot!c1e`ib>3rqepRfCV*iWV^U2vAC)`$PMOSo4V9FQH`u^uI5^i$ZDJ}h&KeLy}KyHbNscHDTXB_F5EGaTUIkv!<=x&FU(6R>zHYhjnFy0S#z^O+o9R(qqK9zk%P=}tiW{3tYM2|&B=drqr@W1sY)ojqx7k?`?t8v%epMMgo`*# za+LHNG$>rB#7zHc<*K6yYsr^9QJaiUu^N9up~KKzJ%7Y!J($5&iO^!d!ppe$YcaD)wa9!bZVXZS%PIei z!vdW~qFmF~ywHJ40<49^&Y8WH3bt?wY!kgrTGqtl%(rN~8?}qhR-DdG{fsgyiSW!v zT};m>UC+O#qwtqV%IqHfoDo()(8Za+LaZ%YIaZMiz3-aJ*_^B@Tb@O_i#wfvlu6N| z7n`*#$=y_&M0=Z04Z?BT*CywGMtH2{3sA4zN3~J!78@o2X-9K|XXqw|a&f`1YQ5uzu z-)i2H;>fs-(u#@XpDJhS*~1uIe<9Jy49%sO7v=w5;?2Ff1TLsBUeU4HgkEmUis;UM zJzo$m-a0PA(D*kEY2L%^=DEG$Bl~+wzGLwn<49!93Oa-+XP$m2<)&5hSB z5uN{gAGzmv#KP8!k7N$aK7P@RY(?%=vFzvI*a8=T-T*Y>dd~! zKHci1?Xxm0=Sa@o7`V~@#@c0W=DF^saQe%OBjoz^v>C49#tfj3`|5il!?%af?>hhL zMU}76-t5s{q_cV{Oq|y!Dihx~!_wM4^o0GDvRO*`Pd_A-S5AL{*^4r?ZZz^|{p0Vg|((BE_-q>(C>F*Uk z6`1Rw&%W_3j_(Uhpg{Za6qtgtKI=du@FpMO-p=$*kLHRMQsu6=3~zJ64#s>lL$NNq zu#3K#o?OaKiayWtQ*M!yd)-Ej;8Q#D0k8Bfy7W$;@@tClsCPUjT;9<_^;MskYtP{* z1wqIav^eh@VYuQwZO1hI)$NJ)Y5(thzn9wH_HQ5ea6kDjX07Y17He+XiGBauC(XQ$ zZ{rd#*%uA)G!L?-jQV2R>ITO3{7#IAF8B)``I2AxlyCd^*{x||_m%#%4ZpE>di6(6 zNDE8j$L{sTX}Z$8bV85UeyrVmU-io4u(MzLw_p8Hy(HOhu~Pr?Fdy@e1N`bPwW!@@ zyAAPc@A|PNVxrgXd-dg+9{t-+{nu~(^#Al}o=&rL;cf2yK(G)F84FJF$Wbnt%_YJ4 zr@HVW~Er?l^e}&y<0QZtW{45ZTA}8y;aw`(|T7|a*=Y?%$sjZH3E`i*XP7io6&^pM-M`s7v2Z|y9?HZ{N1DA@l_!-AuE0#$Yp;>4p# z|560~d9x71h_QYIds1s|$Gds=)=eoK*~pWLpN+X-W@el>J3~zp_w_C^L4Q@Z&NOdo zqZV67qplO~#yr|2(*|z-cY5FJ*|#@WR%#)$W8)ith0ksN{5hk87ESlRp|n$tHP*VL z=DRxL3NN<#(7UZR_avNJv)>1ATEiLRY1+L9||lHC9>C zx$xF(wbhNyN$K;JtV;14*G@WveQQ{_yv(yo>yY&m&}Hpvir!ThY&BYs^ib5=YWnxkVT*^0H?5=O1n_0(!x3@bR~qLp5o?W1um@*PEl4hvz-$bH%BpVjr5 zRVHc{<3D5hidWu2>&-f+y~q1F?SHvKy6wo(469qFr)3$I`+EH_Z>&34T<^Z+63t4~ z{w#dn48~qP@i6tNY-nrM-VJieZFie;y5TI6!gyGVB?DV-1G zxoonpR@w2{tM97z+qDO{&C9z%RNPm7A0F}0Nj(3{(P4zQMbv!)o%qkkYdOBgt-qi9 z?e)(}!wl!{9)OjrTRx_ipF6b_jN4i?W*6LW^MR za8Qidp*j|~*xm7teAJ|)atF5$8f=h(jMMnUh&Ll%$AK$qQ5&0;I@QH-PUfmn-0E08 zOyX{nx!fTSO)s3$y;VmkGj+* z4y*FNPh!YTuR2oHhKMP*oRTy>Axg8L2TT1hCyGd_-xRO8O?yhtazYa17hy6_P>xWD z_#mgkWLd;w-2rswg6Be~3Cy=qv7WfR=S1_zs5&<7Wa9K77=yQ#g;oub{gEU?Ng7WF z)iRNI}R z5}-FF=4BGwSU zueqAGt}DeBYVFCR-NBYfW&NY&^m<%?)(2{U(J6EV?wcqiIWy&dx==*xv&XB`!o|)|DK1)%HW3`c+Jq)|OPWoWgLiDB=&1g?w ziLyouo=siprawLES@-$W zx!&=2Up?ne*Sge~+;y|NTY@^P6vd;Am5CvOM|Eg~VT~G!`j{swk1!oWk z3y=dTFb74@2Yc`ZZ4d~DFa?E>2t5!9k8r=Bj|P=637v2WqYw&z@Cm8V3a79Mv9Joa zPz(RN&AJ+tD50aUJ229OIE5<G9edIA^(vf9}*%XvLPjsA}6vU9nvB*@**{oBRA3`KN2GmG6(-*}S;5pQD~x;N)OVrQ)vZ?CtKYrlFp);;`!Dvb37He3}UkXWMWU{1%&tAQJCRJ)(C1b0*ky)pN zyZUWxrj0qD@=8l-&eEihd=ee%u&&)@M)UrJOK_>bw%!778tl;{Jy2Bfd0ou7v8$2# zURF^Y8Dvdemj103sLdi@q!Q%{y-ONlG`*lxPkdXEZEL5PImRwa)n4tFM()`J-Te(D_s#fhjhmDC>s-~heQs(JmXfGlK*IUAn*dUi)Y9e1^=KwdHneME|=qb95iG)?a zbr>Ix$H9q7oSfF#=bm}xDJoqlTDh8x6~Pu5oHC8)ON53BS0SX2*6JH6rld)dZEL#9 zW}#ZT84zHtd1@!9D~>uKvdkJQ$9CMQ#U+wP_F7>_S>;Nmt=yudZISf}Y23J*&LnMH z%vnVLXQyyU#H_OLGBa1R(K)-BlDlMdBW-L(7}AKG8w`sXuR{JG7lzLe3$vzeru1nPN^OUNYZo{spcw%gGyz$a2 zox4{CS}eZh^7}7wS5YdS!91d@G_B+z9p+S&`3mfE%{g}>e|$Zeti=gj(Dm0iKN&H^ zOZGzIzSBlEa<4-!8syR_yEo~CzgpWPui@d#o;sR-8ikKVH7 z-KO1b@5;8^a94gXm;)b5WXK_gv1(0jV%b@Y8gCu8*P~LIG2)-i7%i5}=?kIbl3pAC z_1jB33OD5jyJYl`EMqG?=sq{X@!zGIetPPwC;#_N!Mf()^lH~aG`U4)pY-;Y7pz;! zNhj+2xY%nXBHBPB@BF)iFN8YIHnX1i!&dM8rqF9LY#45I^WXjd8yXY%zDJ~%8OMCm zl2g@))vomwZh7wmTa?(xx&v8*KQx+?PN)YWSY4`syaQn6+!HAZk&Jw|!Bl>PRU(-| zPkmy8Qu`!GLs98WevoiWbBd>=%goMhM}ivn_QyRDdQU@<8{gy%rN7PvOLoOVo@git z!3bJWKo5*zldzU9pfPT0QBjl-F$X@k714-Ce42)?2SSqx?>Oj!ow{1+EdNyhEQ>R| zVhx!$rPAT>5ieArPFVFF$67_``LfpMZ*IC)7<7Mb&)rO~7oTQ^8>%8Zcj z?5Dy!Xfi~~v!4HBWB=CnL6`aPVS!Z2K(koTa-Q>j2$hoRZs;uNrK_9&o#|lpCR)UA zrGlOqWzRi>qb+MT6O3{67$Ftcq)?XBq$y46N$-*nmhy}z-b_{W)K)#tjj?F4I%7^x zR>Cl)!zwC^WXRwc)2dlbid4)aQk7br2Y!m7xfD?pUmDb^LQ_16Q4^vL_P=TRm0Lo* zXhk76)>E=@W@q)AHH=m0&n^WF-07#Fmxv ziJC#xNRg#h$hx+zpsZJ&j+da=$(3=a%>a=sg`;iW5_FuhZ9t1!uXMIog70;%LgOplxLVdG z_Z>`TYFRDwXqAzF?Vf1AwOLt8&A{CJ*h4AXVD>&(j}d;ZgGE{4VMO&@-RbArR4FDR z3irP{W#uX(ML=E|5WPel)`A$!*cZdty-@z-LTLvD(#EBGJ!_>2qiQ1#99DI`MO6yV{x=-R3Jo zTFT9PDwT7XY6iA*ko=kr_O=`rAA{Of`<&G*#pkQ?omsA_tuvFM%j!l$_|;K9r$YZ& z<1f}Vw_?q1zs@M?Uw;KxHyw46vzcWCCV0Myb`on_{pMWr;%M)!T zk4VfkZwI-RfgNn1%?z^Y4$9WLY+z&A4ey4>TOpI3^##A_Gi0U>Gct|m{x&OSf2R!K zvfAk8#*4r2jHt2+S2wd6-fplt9Hr5Yd2Cxu@6plq-Wea7xJt;~Yg`dzrE!T zPw32z<^;cgW^(r%USF{9No+WT%Qj)|SA`KMeeyc7}PEp?*hf{QlFWyaMA?od`H)wqbe3m{_;X^r$72I{lkJgDpH@bFs979# zV2X!sBw3J28J2B!lt#Ib!sI9a5V@2vS#Ca87QCm8CZUT|`E74=h?2sS*XENq#(>iy zmdcopW~q)y>5xiEYhPq&F_}tx6^yYIhI4r)e)k?eb$~;aT;P<7$QUYq*>q$HiGxXf zl(#{*mTf7dU9mKJa`~7m0doGcn1yIdXai9zhMDI$l!9rLpLrdHnRN8ili9~%6xCG& zginH~nt_Nk-A8m?Seax)kkJ@xoOzoHiIh$^eVe&4#&~&!l5aw|lZ0oS$H{G%6O~4m zSwnS)UwNGnXPd6bjM5pHomqkMDTyw*m*z5&9kyKNzSRB z5QL7>*KkF7l=JzZ^!bke#&~Q1c|e4?Ti)k18R?(9AvXg@Tp#F92#991nMpzkmSc&V z?+J@xiI&zUCp@HgTDFH+B{@36kNL=<WQ?s=)Q zs-8<~N`yK*8YV{nSRtikLX)K$Zr_Q5;fP``Lr3~?r;7%wU^=Er3XQHBsB?vE_Xkun z%2yXDesBtUk`bWB8j=X4tg=^iR79z<+N|)&r+yk)=PC%#xunSUn;}S}xyV2Ig{Z;0 zngAM={^)`Q$ALqdr*8O{EVr(;Ds46tt#&Ay|5~RJ1x zj~|wrF1rf!c2&tT&6G z<;tv&E4gBcsbM3qFM3*^%2E3%Zc{3_-WFiDgNCPexf`oarF$p9yR)pzu8~{3uPU{A zn@st^oq`r}R*8h2tFNQlt6f-VibuMPSesMpxWYTUkUO^u+OEe-xoMf0$WeT}%C8&x zhetzCEkD-uu6QN{6cEwU&UfJCcG4Q-q`%y}u`N z2V7kL$A!HFwXFK`nD8|y2ks$ zS}VYY>8a$2NcxGb#EGvAyrW-e9w3Qib;V-8o4+o+y88>mMS8lZBD8iDRz94g3rsL1 z%&o%8Y0Zm>y{mfo+qfOezep@hM|>KHGqk$rrW!R|JN%ypOn@k?ccL?-_iLg=oU=*% zy>%>!$h*bOnPJxoPbvtrU?+aR*hC!+MNAgQdfc&ee8;UD!(5!mi-$f>S!Mw@h*6xz zQ@V+zNXXVJ!SCotSve1*;^WFs&5Kpx>^`Nm_W2lS(Pitc{|Gg z-3!3H>~7-g$Q2C9SO>&Arm`jW$C&(Y+=Zb4`L9BJ%ZR*ki-HW@y9U@q;z%$%*K;xw?ky7iKEFJo`9QY26$<-_|NK0uEE^S1ntgYEXs!ysCoIo z1~`bU{K`uZ&cL=t*oegn*0vUHB`rM7M!eAlEzo`B(GrSU5v6Ycdc(*pu@4Q3!YI+^ zyofLT(KsE`HqFsY-O(A1&<2WKnMXb)4SXp5zUsS#WL!x{ebITG)Jq-KG!4xEPJPg) z^04>%&CeUuq1K1l<-v<%)T<`XUd_&9-PAIj&68-p=QoN_iqC8vKt$8T&HRL2eaNO8 zw*!sWjIGzzm(W^Cd}KGQYu&zA9XF@yyr$prvR!LLi-P{w-tH}8lYL_7$AWrz}c-6mKB!rj&<^ubHm!PMyC zimTMNJ>m{7wG4jZ67Jvmxv$N`B)*3|%?C#>j&AL<_(UE?qo1ho-9B#oyp>DV-J@RL zWP|C6 zZq-}GOcPBm=h^cs9OgyO@)qCn6c6+Qe|r?ZtG$+^@O}jUV`%eLS-?|`#jq{)D39yq zPW1k+>R_$)@@#)CMAhC3bY$NcX)^MD%hk!G_EAgqa!*c#Z}nH7?g9Vdm);L)okkce~-`1M`&ntAwOY?6cj`Rbm-Cf-8 zoDZvTpZJiRdVN*pFNL*__!?j8Kdx*cjg{J} z&myPY3=;gV4+H{XWmq&4k%{AynN&WV(8OX&wOp?M*=)wb^?tz_jySBnR;6k6Iy#iP z+iQ5dSx?%TMFY~f7wiE84F>-R2L%rk6&D#B9Umbh7iADaJx&9=J8#t1log@eb6jf;UZl8?Qz;@F;{qi?CJZD;#d zJ+~3NKR3a{#WTqz%g52v6+^v6Pe->^iL|ko=t=AIYxl4D=cL!{+C_#y!GZ?}98kEB zp~8d)AsP%8aTv2^)&OGsr_o)YE)wY(s-mSXW?7zjl zP212rz2@WTnRnJSD&N1q6OOn6k3%es#gv1}st2NzZn_6Us4hYbo~m%U?6gCOyJEa6 z%fmFrEA6LxY{IJ@_*#0;lDAYuk+l>5MX8G>-2Q8YuNrMhqc8ypG_F7}7IUns5?B}^ z1tViPQb{6&>;;e>JGdBKO9lS+{p9~Js4eV(Y^NAOj8s3 zWVEkD{BE?Tzx;3n@EIO=46er?k2$Eq1{h=#Nf2B>R8bWcZS+t>p^Vfj38T7Fg9|Uz zKvPY%+$csUw!TRL0-an5ch`9;>3^g{{WSNw7sqCmtiaF+-s&LaxHGRk-haFzX)6TfK zfGiLL3(-SacDgAySXU!gC018b(@ptoo0Z0q%8d8U-OS9@BYM%W*JgYVLvG(f{rwk7 zW(Q`7T8J|=I4Q>>z>;B357H{b#j+h^+b{R@meiNsjfdr}(G>YyMNB4Fz4+=Yd)At; z)~USRu%?sDuD#wo^XAD`*X$Y5j-_p_)0Wu|xK+P-?p}IH$nGVL zT@tg~vx6Fa#Tm+!F-vj(ouX^I#qu`?jTvuk;<`_*{s%zk z&Cn%rvdzkthlJ9h<~-Ru-3oU#Ag@I5S4W{B&n&1c-XZKt8(g1eB8DLZwQqM>I-L9> zaz%*P4`VFUpFaE`x);WfhL;Ol0b|v<8_KC=cnTx(B=^JB&Cz1rBO>?`@{|fDu}HLQ zq7@l~9ZWqDTZT*jpY9fdfCvDRgjk$n{iaqt$9*w!9+TXeDksA;Zc>vks@xhexx=*a zP>c%%OdY-FJyZ@RF?k$c?2crWgelD_3bGX6I>o`<`OSR;bKk@iBa!(vl8aTN84&je zM}AlmZDi~u<^;$|6-hG^tx-*!rpLzAz>J&BY^KcU7({!u@_ny^Wgn;HN2N^2I#6li zAD#HbD0(oE3`rVRPPoPSX>l1>P@yEfg$?C>^P0~rBQ@EAvXZ0=fuaOmDHUkSa86W+ zcyy&XoutHc4yrosOOk)wP3S+kr4RR?91s#Pr%vj(@mDGDu-i6rU6 z@+r*3MJHrO5#%;{aN^^(=pWDC zHIAG;UMj`OO2R0koWioIIUj^XJ}Ne`J}Z{_zIw>M^-_vq9bRR@+L@^#^L`tP+{?oC z&CbC!v}gqF=YpDD)9I(Ps^uSFYZhL=4l#VS#ptq_Rl&pZmc6}wfp3#Uf#817tGzp6 zWh)E+wNIfivzwhMTWxB&oQ93S)pZ0rK#AS{w3fB2y(@TE`M_{)AxJ_xuimbzUc@SP zb|b}L6ERRh-};t9gao8YTS_sp0#A#WW$uf~!$1EyxUB|W6KP$PuG^eesMsUrP$eoB z@s4+hw0+;8(5qqCEqS+(O0SY%he2NIu}LHTz_H>>NXVjC82#)_7Eg#u7>{|T@S^b; z*JWcIYpyM8ri((cc|h%U*UUXWDpDhyXFV^~q|JeHl9^1t-^LCF@AX-s5uIp7zn8Hm zEhmxwb!AD%pv34SZu+|H<>R^(reokVrBQm?Y*!m2>fJm4 ze@m(2-7|$zs>llm`pH(kn*t;aY+)~Y1;sY@v5Bo{=q#sj&2|iQ8WrqBVZhQvJsx_5>NL+@-D@(|Gl+GXmv$>U6iN z%_CPgBXlgixuVvg+w_>Mxe0T~NqEny!*#A-$?INcG+8D9IKm-N@SqQ!=tVa=(2?E( zY8yl;P%@ICrA-2fpV+=#4iv_L=c$;!xXhJ2b3@yma&r%m>^nUnoDYn^+e z=zCv_KP=EN>VUrcz0iOcJOB=lfx{=i@DONz@_o;E=`ZWp2S+ruCy0Q?KRwdW>FT8c zxh0De1nUr^EVnog>aH&n?z6w{*jpce`I}rNaK>hwFDdT^tF<08gRSm&L>abf-+nJr zENuIRF9DN<;EoUZkWcv>5C9N>`IL|F7BBgx&*-)f@}{rQ5I`6X00E)@Zqgz|^A0Bb z9>()7F4GKWEBr|?xNiM;^P21EBc`MIAp8@xoCZ3#|bTLIl(B?jXwqC1(7x zO%{d6(>_ffOHY|{vD8w9hWfA|mD0L`@kD&EC|wTqUag0)VGbjbb0=IPoM+Qu#hH6w49u9?&gik{t>EK>N5a>TvSNDDH~ru^zLo z(=q`4LXBhEuLko_AeVA68514S4EEAPA&F54U5n1>?3AwZGt7X+c4yZ%z?b-CBZY4) z$I|dZ@-)-38%r`1S5qz%FC3pw6wC1?-O@Gd@&!VmAS~}4Uw}baF()xi1r@^{4<{dm zax6xqGVc&EO-nIxtQW^2dLYx)g3$f8Nts?N89#$K1kll%kgB2)VZ?F@!;&;_fGj@} zBvbP&(ULX4k@*;pE-jBGXOjZm(gNSI1EDb?B7-+U;3{e-KpiW^j6vJ7?);8(AN|V^ zp|aF)%D@IPLVd9@#lfedC-zva)mY{_32`#@>LFMEr#Lz!00|@GG-w)^Uk`xmKA@GtnrLGkRsgQ)z^R|skfRbKp z@gt1T7{@Ia)xtTGGD~?d7=e&FqjLXdO;H*MX`fTVSq)44^CyZDo&F|=af#@ zGYfT<3!U#9rEf>;6HkE@43F*ZAg%inEt`hT7we+p( z4-qgF&epC{^^Ze|>Q2Ztt)>+Y$TVHml^Gu?O-aD2aI#G|@&@R&USae_=~M!3H9c=M zHU0HRS@SLRRPaKP3%#)d@l!|xKsh?VP=iK5Pl_k$vCHo9xPnqB7gRZmG7tk&TQT)x zHPy|0N*FbC5UsOLKs0sMb!Ee6o*1Glf2LJoHCEsBUTfAgYc&FIG+(!|J$JP>O|w_i zkv@6!SMhW;D=TSNA1DU@vJ>Ppwe zOFi_BCbOurlU`QVOo<}fcuBX6L`CKQb!J`EUTyX~q2x3pFg^JdHE~sES(8_5Q(y(v zXjk)2U6W|f%LS;-9Y?S?eTkOrOE_1ogQ68m6V&4@6AwL?YdRKW*DPBn6gqDzLlG0T z%9R+i7OBLdZCRExdq)ye^zQ8T1MW6&&yzIebVePJMs0OhTk{Gb5F3Yf6umG%5m#~5 z5@9hg3?Z#ZBliZTC9o1zGnO>PEbCFPb||NGt+>W0y|#2o*K~U@l(5TM;f_I%id++s zxqJn7=_XaT#4|611a9|kC7@nYfPZ210n9RZ1=uVv(PshHSC4OK({X{9H*rhyDPWRV zi&c8{l5(vGV*V1p8qo#2cU0N`#$>JaD9864O0Imj^-8;jp}>`T!1P1!%qmqWe&e?p zHR$oeGX!TAckyo$(`y!U&(3o5U5ghdx@dCFVwuUpmEg&6WiMkPe$*Ffl3JEZq#Z1;BkcYk%4 zcYhZo{g#ONwupZg6O9*Gk@!~^I7c@zaXYaSp%+mom;?u=iYpF_wYOrewu9Gi)ZDJF zP*{w~*Lt#SGa|*XKhvXM`nw*2C#nNRXMN$7W3y-*SaF>g zP@Q)wgw$~%w}SVQr1a~{IBkm}Omh{q>rPe|cX69P`4T{R-9#Cv(gKYebZdMFS77*@ zRk>x=d5#e!0NR;F`}alXnVxso23Vjha~YrU`G@lvkb^k_k64(~k??+1pqbb{gVY?K zYI>{WnS)Dvks;HVW_YSOQlnJ0MrpPDQROh&gqboj@$Yj(demGPl}(yuyVGcNQ*Of( ze`hwHc^F1*`Ic?}I%kO(h#B`*qDntE$#C8=kmq8TP4ZE*S<{D62nroJ03(xZ1Kk)|0B+x&;xa z{;@j4jn*dr%s}#Gt5o!*L~x~>;sNXyy;qyHU%G!?Tc=@ru5)&m!?wcD*d5+soHv{*xtl3gqryO_Cg0Aw`333|`{+sA!8 zz#F!(BP27fLQ%`lq&T>-DM_rEQ|+R=grz*vUuD%)_@l%6Y#V%1IoytNhHkq2%d;fR z9fd*~;KcX$)X#jyTU$wJy3KW&uJ4(ygE-EwaFFSIfm8BdHF4LCnoQ6V_n9taDZuDzH$53u@M18vbPg=pi$D#35~d^O&X7z z1v!&@H+Q0GVU4l8Y#uzaA-&=yTVy@D(%mg>$JLG6c%lG>0s0J=@~Fy`MJcRt($Krz zQ+=k>T+9oA&D-4GU%ZcJoQQ3G-+?-)brsJ6_pe8?Lil{wdgcQ@Go6OK(>RSwmYb>_ zp8Z1lDFbZUtG(){JB=<>vwvzKhp`y9T&X-=TP8?Zu_QUl`{WVe#6ha%U!HtgeCFr> zUFKsuwr8Ezu~Fx7yjOGDuX(+oeH6ffeFV{+*g;6?ksYF!y^FtiQlH!YCOpD3_2RGI zqOsl5FFeC_C@1pb;~~;l0;Qfr=pLn*1xnnV*Ph*39^P4;)!m*^LXyp4-_>n?k7Yg1 z?|zVRpI{qsHGSUa^}Fx?+9cm{#D^P_Z7Ep|J-;4_u@nF4kMM(kEPXo}2PNO)Azwwt zM(as7;_Zx$?Tzll-VD7;MalhGv5cjYL?io`1W=#lQ{UxVU(A(6_GP=~+56S+J>P3w z&T$+F0EhvAhyVzaM&Yr^WMZOGKm$?@U`H#Fiv@ap!dxi=F)5c1hy$D8CUD;WZnoyl z$y65lJiqT3Q~(D4^$8kQ7z_>qGA24AIzC218bnrJVrFV?a(2pierAS>l9qywqMoLL zY6@7ozQ$6z!a~+oBIZi!>Nff=0v{gw?d@6UF(4=3F~_m3Aw;CjAv|zhgLG7jIfzM2 zkkEjOlRw;~oTr$pv$v~v6~z2QjIf}-d_y2Yo@i0B#ReEMYV;@~ zz*=u2NtRTDQl*^HaKLg+z13!}Mpj=}jU{`j(xFLj*T$_oH}9ajpaKU@%js{cRI|cv z&3biLWnPm(AIl6aG&CsFb{>O)o42@g=hn4$_v1Uje9r^^>sPS9e1i-7JB(OFgBR?5M4oNU7_m7#_k*4A5x9A*fM zaF|RrVpL2?6`LqVH1)H-GKD}om^^#Hy&Oesh1>r z?xn{hd`~83*g=XVcEmjn39-aPkwNAkW|#?h&0AQIF;Wz1=t$ZeZKR2ZgAgv~qE;5J zNGDITftaUS`nt0F<5q{uO{VqmP#xM>*kwq z#tF=v%hLIjp|gpor?eWb(&ui|ZgR_rln^(lvy#}!;-bmE_-J&}F=JyIBb|larI%?s zCa2&%Q17QfT2->R!7MqiXxqKD-W`_XFuD?wLyw1sAzf#JcJ6qH$D zu*0s&l1niji>#a#mY5ZCD3WLiw%4-UvY&psob8Fw(hS>E!;u^=x#gOBE~I3saYh8~ zX6jkIV|X_tz4uCtLeui_8}(mPr&{%41zoMssOdqbC6}}&fvea}Un=isW{PIo9B3s7 za>yc&{94J~;(X!CcgGB~wR;bx?Ncd3HOtH=W0*6dE&{`|&(8hKfx0D4Lx)=2l>qOq zN%yL>y-bts^r(B$v$ejZG70cMg9WTAV)GT;o)Ymi;dOsc{O2&l0a9);#u*#f(y*qv z4L76A?Ls(CTB)cq-q`BRck|YAB4V^C*DXEubbtH*Y%k*u-{`rFE0aN_&#b|2n(kh1 zO}v;ZEf?oaKOMT%^Ec@_*Hx?Dde)-q_xeMR0g!gG`cDHc5}+--g>t;pnA&titTr_0 zZE!-|FvMlNto*G+CR$$Jp4UOWg(!pI%7pc-XE(!bFHzl7T+bFKzVVeo8V7P98`MW2 z$~~ZcQux*8BIZN*ZJ_{8LxFijrzHBF%5?Yxh{0B8A0#{mc1h?T*!UB+i%{W9xzbG8 zcDFz@39DlsJ56*XC_H5?;unRgUQamaLFZxOjUNo*2J6J{#UIYG|O{7^<0o@;z+ zK*J0x)x|HQ4;-0Oq|nUJ!yf`sh(RQxUd|)`Kl-7^e*Riwd<-%$u9dETO0eSWKx4qm z+|GyG(cK~!=(~=!?NMhW7azr?GMizjj&7VI9Obw?69#T(dK6}fP$;)Pwh)jnble~z z$EF&tl49$d*BPoQk{CcTl9F73B%x+ROMbIdQ%fEG2o@#%UCC?uS;GHj6}HMyA&Unr zo7q}+j`$=c!yFk> zfj_#O4jCy88D^84BHhR~MJhUdp){QG6Q`5KH3&QXtK-&SxGGNk`7;?Hp zYvPkSD2d=7`$@|*qOni{waNzZ=F5ZsA{1MB99+%16&&sDk$Z__;Y3~d!j%{Zqt6(S zMuXH*l325vBVDVjw&~VNg03 G%oQdA}!_lXa~NjALGBB~rTcKl0pZ=PFiD9!4Q; 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

|}B4&KZcUO!vil}Ica0op-H;2;)Z9C^_ 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