Snippets Collections
OLLAMA_ORIGINS='*' OLLAMA_HOST=localhost:11434 ollama serve
curl -sS https://webi.sh/ollama | sh; \
source ~/.config/envman/PATH.env
^\s*<TCEforms(?:\s+[^>]*)?>\s*\n|\n\s*</TCEforms>\s*$
Dreaming of launching a cryptocurrency exchange? With Opris Cryptocurrency Exchange Development Services, you can bring that dream to life with a secure, scalable, and fully customizable platform that stands out in the crypto world.

🔹 Centralized & Decentralized Exchange Development
🔹 P2P & OTC Trading Solutions
🔹 Seamless Wallet Integration & Multi-Currency Support
🔹 High-Speed Order Matching Engine
🔹 Advanced Security Features – Protect Your Users
🔹 Regulatory Compliance – Expand Globally

Your exchange, your rules. Don’t miss out on the next big thing in crypto! 💡
/* Proven method to visually hide something but */
/* still make it available to assistive technology */
.visually-hidden {
  position: absolute;
  top: auto;
  overflow: hidden;
  clip: rect(1px 1px 1px 1px); /* IE 6/7 */
  clip: rect(1px, 1px, 1px, 1px);
  width: 1px;
  height: 1px;
  white-space: nowrap;
}
<!-- Instead of… -->
<span aria-label="Vegetarian">
	🌱
</span>

<!-- You could do… -->
<span aria-hidden="true">🌱</span>
<span class="visually-hidden">Vegetarian</span>

<!-- In some cases -->
  <!-- It might be more appropriate to expose these like images… -->
<span role="img" aria-label="Vegetarian">
	🌱
</span>
<span role="img" aria-label="Kaomoji table flip">
	(╯°□°)╯︵ ┻━┻
</span>
Protect your cryptocurrency assets with an advanced Cryptocurrency Wallet Development solution. Addus Technologies offers safe multi-cryptocurrency wallet building services using blockchain technology, which may be customized to meet your specific business requirements.  Stay ahead of the crypto market with a scalable Cryptocurrency Wallet Development platform built for smooth transactions and outstanding security.
import { createHmac } from 'crypto';
import { NextResponse } from 'next/server';

const WEBHOOK_SECRET = process.env.MP_WEBHOOK_SECRET;
const MP_ACCESS_TOKEN = process.env.MP_ACCESS_TOKEN;

function validateWebhookSignature(
    signature: string,
    requestId: string,
    resourceId: string,
): boolean {
    try {
        if (!WEBHOOK_SECRET) {
            console.error('WEBHOOK_SECRET não configurado');
            return false;
        }

        // Extrair timestamp e assinatura
        const [timestampPart, signaturePart] = signature.split(',');
        const timestamp = timestampPart.replace('ts=', '');
        const receivedSignature = signaturePart.replace('v1=', '');

        // Criar manifesto
        const manifest = `id:${resourceId};request-id:${requestId};ts:${timestamp};`;

        // Gerar assinatura
        const generatedSignature = createHmac('sha256', WEBHOOK_SECRET)
            .update(manifest)
            .digest('hex');

        // Comparar assinaturas
        return receivedSignature === generatedSignature;
    } catch (error) {
        console.error('Erro na validação da assinatura:', error);
        return false;
    }
}

export async function POST(request: Request) {
    try {
        if (!MP_ACCESS_TOKEN) {
            console.error('MP_ACCESS_TOKEN não configurado');
            return NextResponse.json({ success: false });
        }

        // Obter headers necessários
        const signature = request.headers.get('x-signature');
        const requestId = request.headers.get('x-request-id');
        const body = await request.json();

        // Verifica se é uma notificação de pagamento
        if (body.type === 'payment' && body.data.id) {
            const paymentId = body.data.id.toString();

            // Validar assinatura do webhook
            if (!signature || !requestId) {
                console.error('Headers de assinatura ausentes');
                return NextResponse.json(
                    { error: 'Headers de assinatura ausentes' },
                    { status: 401 }
                );
            }

            if (!validateWebhookSignature(signature, requestId, paymentId)) {
                console.error('Assinatura do webhook inválida');
                return NextResponse.json(
                    { error: 'Assinatura inválida' },
                    { status: 401 }
                );
            }

            // Verifica o status do pagamento no Mercado Pago
            const mpResponse = await fetch(`https://api.mercadopago.com/v1/payments/${paymentId}`, {
                headers: {
                    'Authorization': `Bearer ${MP_ACCESS_TOKEN}`
                }
            });

            if (!mpResponse.ok) {
                console.error('Erro ao consultar status do pagamento no Mercado Pago');
                return NextResponse.json(
                    { error: 'Erro ao consultar status do pagamento' },
                    { status: 500 }
                );
            }

            const mpData = await mpResponse.json();

            if (mpData.status === 'approved') {
                try {
                    console.log("Pagamento aprovado.");
                } catch (error) {
                    console.error('Erro ao processar licença:', error);
                }
            }

            return NextResponse.json({ success: true });
        }

        return NextResponse.json({ success: true });
    } catch (error) {
        console.error('Erro no webhook:', error);
        return NextResponse.json(
            { error: error instanceof Error ? error.message : 'Erro interno do servidor' },
            { status: 500 }
        );
    }
} 
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../entities/api_errors.dart';
import '../services/storage_service.dart';


enum FirebaseApiFilterType {
  isEqualTo,
  isNotEqualTo,
  isGreaterThan,
  isGreaterThanOrEqualTo,
  isLessThan,
  isLessThanOrEqualTo,
  arrayContains,
  arrayContainsAny,
  whereIn,
  whereNotIn,
  isNull,
}

class FirebaseFilterEntity {
  final String field;
  final FirebaseApiFilterType operator;
  final dynamic value;

  FirebaseFilterEntity({
    required this.field,
    required this.operator,
    required this.value,
  });
}

abstract class FirebaseApiClient {
  Future<dynamic> get(String collection,{int limit = 20 ,List<FirebaseFilterEntity>? filters});
  Future<dynamic> getById(String collection, String id);
  Future<dynamic> postWithId(String collection, {required Map<String, dynamic> params});
  Future<void> post(String collection, {required String id, required Map<String, dynamic> params});
  Future<void> putWithId(String collection, {required String id, required Map<String, dynamic> params});
  Future<void> put(String collection, {required Map<String, dynamic> params});
  Future<void> deleteDoc(String collection, String id);
}

class FirebaseApiClientImpl extends FirebaseApiClient {
  final FirebaseFirestore _client = FirebaseFirestore.instance;

  // ================ CACHE ================ //


  static const Duration firebaseCacheDuration = Duration(minutes: 10); // или сколько нужно

  String _buildCacheKey(String collection, [String? id]) =>
      id != null ? 'firebase_cache_$collection\_$id' : 'firebase_cache_$collection';

  String _buildTimestampKey(String collection, [String? id]) =>
      id != null ? 'firebase_cache_time_$collection\_$id' : 'firebase_cache_time_$collection';

  final _storageService = StorageService();

  bool _isCacheValid(DateTime? cachedTime) {
    if (cachedTime == null) return false;
    final now = DateTime.now();
    return now.difference(cachedTime) < firebaseCacheDuration;
  }

  // ================ METHODS ================ //






  @override
  Future<dynamic> get(String collection,{int limit = 20 ,List<FirebaseFilterEntity>? filters}) async {
    try {
      final cacheKey = _buildCacheKey(collection);
      final timeKey = _buildTimestampKey(collection);

      // Получение из кэша
      final cachedTimeRaw = await _storageService.get(key: timeKey);
      final cachedData = await _storageService.get(key: cacheKey);

      final cachedTime = cachedTimeRaw is String ? DateTime.tryParse(cachedTimeRaw) : null;

      if (_isCacheValid(cachedTime) && cachedData != null) {
        debugPrint("⚡️ Firebase cache hit: $collection");
        return cachedData;
      }

      debugPrint("🔥 Firebase fetch: $collection");

      Query query = _client.collection(collection);

      if (filters != null) {
        for (var filter in filters) {
          switch (filter.operator) {
            case FirebaseApiFilterType.isEqualTo:
              query = query.where(filter.field, isEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.isNotEqualTo:
              query = query.where(filter.field, isNotEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.isGreaterThan:
              query = query.where(filter.field, isGreaterThan: filter.value);
              break;
            case FirebaseApiFilterType.isGreaterThanOrEqualTo:
              query = query.where(filter.field, isGreaterThanOrEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.isLessThan:
              query = query.where(filter.field, isLessThan: filter.value);
              break;
            case FirebaseApiFilterType.isLessThanOrEqualTo:
              query = query.where(filter.field, isLessThanOrEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.arrayContains:
              query = query.where(filter.field, arrayContains: filter.value);
              break;
            case FirebaseApiFilterType.arrayContainsAny:
              query = query.where(filter.field, arrayContainsAny: filter.value);
              break;
            case FirebaseApiFilterType.whereIn:
              query = query.where(filter.field, whereIn: filter.value);
              break;
            case FirebaseApiFilterType.whereNotIn:
              query = query.where(filter.field, whereNotIn: filter.value);
              break;
            case FirebaseApiFilterType.isNull:
              query = query.where(filter.field, isNull: filter.value);
              break;
            default:
              throw ArgumentError('Unsupported operator: ${filter.operator}');
          }
        }
      }

      final response = await query.limit(limit).get();
      final result = response.docs.map((doc) => doc.data()).toList();

      // Сохраняем в кэш
      await _storageService.save(key: cacheKey, value: result);
      await _storageService.save(key: timeKey, value: DateTime.now().toIso8601String());

      return result;
    } catch (e) {
      throw _handleError(e, "errorGettingDataCollection".tr);
    }
  }

  @override
  Future<dynamic> getById(String collection, String id) async {
    try {
      final response = await _client.collection(collection).doc(id).get();
      if (!response.exists) {
        throw Exception('Document with ID $id not found in collection $collection');
      }
      return response.data();
    } catch (e) {
      throw _handleError(e, "errorGettingDocumentById".tr);
    }
  }

  @override
  Future<void> put(String collection, {required Map<String, dynamic> params}) async {
    if (!params.containsKey('id')) {
      throw ArgumentError('documentIdIsRequiredToUpdate'.tr);
    }
    try {
      await _client.collection(collection).doc(params['id']).update(params);
    } catch (e) {
      throw _handleError(e, 'errorUpdatingDocument'.tr);
    }
  }

  @override
  Future<void> deleteDoc(String collection, String id) async {
    try {
      await _client.collection(collection).doc(id).delete();
    } catch (e) {
      throw _handleError(e, 'errorDeletingDocument'.tr);
    }
  }

  Exception _handleError(dynamic error, String defaultMessage) {
    if (error is FirebaseException) {
      switch (error.code) {
        case 'permission-denied':
          return UnauthorisedException();
        case 'not-found':
          return Exception(defaultMessage);
        default:
          return ExceptionWithMessage('$defaultMessage: ${error.message}');
      }
    }
    return Exception(defaultMessage);
  }

  @override
  Future<void> post(String collection, {required String id, required Map<String, dynamic> params}) async {
    try {
      await _client.collection(collection).doc(id).set(params);
    } catch (e) {
      throw _handleError(e, 'errorPostingDataCollection'.tr);
    }
  }


  @override
  Future<dynamic> postWithId(String collection, {required Map<String, dynamic> params}) async {
    try {
      debugPrint("Post data $collection\n$params");
      await _client.collection(collection).doc(params['id']).set(params);
      return params;
    } catch (e) {
      throw _handleError(e, 'errorPostingDataCollection'.tr);
    }
  }


  @override
  Future<void> putWithId(String collection, {required String id, required Map<String, dynamic> params}) async {
    try {
      await _client.collection(collection).doc(id).update(params);
    } catch (e) {
      throw _handleError(e, 'errorUpdatingDocument'.tr);
    }
  }
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xeros-connect: Boost Days - What's on this week! :xeros-connect:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Morning Ahuriri :wave: Happy Monday, let's get ready to dive into another week in the Hawke's Bay office! See below for what's in store :eyes:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-2: Wednesday, 2nd April :camel:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Café Partnership*: Enjoy coffee and café-style beverages from our cafe partner, *Adoro*, located in our office building *8:00AM - 11:30AM*.\n:breakfast: *Breakfast*: Provided by *Design Cuisine* from *9:30AM-10:30AM* in the Kitchen."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-3: Thursday, 3rd April",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Café Partnership*: Enjoy coffee and café-style beverages from our cafe partner, *Adoro*, located in our office building *8:00AM - 11:30AM*.\n:knife_fork_plate: *Lunch*: Provided by *Mitzi & Twinn* from *12:00PM* in the Kitchen. \n :Xerovision: *Xerovision 2025 LIVE SHOW*: Watch party location information to come! \n :beer: *Social Happy Hour:* Celebrate Xerovision 2025 with drinks and nibbles with your fellow Xeros from *4:00pm* in Clearview!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*What else?* \n :caution: Please be *patient* and keep up to date with WX comms as we set up our Xerovision Watch Parties over the week! \n :eyes: Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=eGVyby5jb21fbXRhc2ZucThjaTl1b3BpY284dXN0OWlhdDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ|*Hawkes Bay Social Calendar*>, and get ready to Boost your workdays!\n\nWX Team :party-wx:"
			}
		}
	]
}
<?php
/*
Plugin Name: WooCommerce - Schedule showing and hiding of products
Plugin URI: https://www.damiencarbery.com/2025/01/schedule-showing-and-hiding-of-woocommerce-products/
Description: Add the ability to show and hide a product on specified dates.
Author: Damien Carbery
Author URI: https://www.damiencarbery.com
Version: 0.1.20250108
Requires Plugins: woocommerce
*/


class ScheduleHideProducts {
	private $show_hide_dates_start_key;
	private $show_hide_dates_end_key;


	// Returns an instance of this class. 
	public static function get_instance() {
		if ( null == self::$instance ) {
			self::$instance = new self;
		} 
		return self::$instance;
	}


	// Initialize the plugin variables.
	public function __construct() {
		// The custom meta key for the start and end dates.
		$this->show_hide_dates_start_key = '_show_hide_dates_start';
		$this->show_hide_dates_end_key = '_show_hide_dates_end';

		$this->init();
	}


	// Set up WordPress specfic actions.
	public function init() {
		// Declare that this plugin supports WooCommerce HPOS.
		// This plugin does not interact with WooCommerce orders so it doesn't have to do anything special to support HPOS.
		add_action( 'before_woocommerce_init', function() {
			if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
			\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
			}
		} );

		// Add the date fields to the Product/General tab.
		add_action( 'woocommerce_product_options_pricing', array( $this, 'add_hide_date' ) );
		// Save the date fields values if set.
		add_action( 'woocommerce_process_product_meta', array( $this, 'save_show_hide_dates' ), 10, 2 );
		// Scheduled check for products to show or hide.
		add_action( 'woocommerce_scheduled_sales', array( $this, 'scheduled_show_hide_check' ) );

		// For debugging.
		add_shortcode( 'show_hide', array( $this, 'show_hide_shortcode' ) );
	}


	public function show_hide_shortcode() {
		$product_id = 32;

		$visibility_terms = $this->get_visibility_terms( $product_id );
		echo '<pre>', var_export( $visibility_terms, true ), '</pre>';
		
		array_push( $visibility_terms, 'exclude-from-catalog', 'exclude-from-search' );
		echo '<pre>', var_export( $visibility_terms, true ), '</pre>';
	}

	// Get the terms without the 'exclude-from-catalog' or 'exclude-from-search' terms.
	private function get_visibility_terms( $product_id ) {
		// Get the term slugs.
		$visibility_terms = wp_list_pluck( wp_get_object_terms( $product_id, 'product_visibility' ), 'slug' );
		
		// Remove 'exclude-from-catalog' or 'exclude-from-search' terms, if present.
		$visibility_terms = array_filter( $visibility_terms, function( $x ) { return $x != 'exclude-from-catalog' && $x != 'exclude-from-search'; } );
		
		return $visibility_terms;
	}


	// Add the date fields to the Product/General tab.
	public function add_hide_date() {
		$post_id = get_the_ID();
		$product_type = WC_Product_Factory::get_product_type( $post_id );
		$classname = WC_Product_Factory::get_product_classname( $post_id, $product_type ? $product_type : 'simple' );
		$product = new $classname( $post_id );

		$show_hide_dates_start_timestamp = $product->get_meta( $this->show_hide_dates_start_key, true, 'edit' );
		$show_hide_dates_end_timestamp = $product->get_meta( $this->show_hide_dates_end_key, true, 'edit' );

		// Convert the timestamp into Y-m-d format.
		$show_hide_dates_start = $show_hide_dates_start_timestamp ? date_i18n( 'Y-m-d', $show_hide_dates_start_timestamp ) : '';
		$show_hide_dates_end = $show_hide_dates_end_timestamp ? date_i18n( 'Y-m-d', $show_hide_dates_end_timestamp ) : '';

		// Attach DatePicker to the two fields.
		echo "
		<script>
		jQuery( function ( $ ) {
			$( '.show_hide_dates_fields' ).each( function () {
				$( this )
					.find( 'input' )
					.datepicker( {
						defaultDate: '',
						dateFormat: 'yy-mm-dd',
						numberOfMonths: 1,
						showButtonPanel: true,
					} );
			} );
			$( '#woocommerce-product-data' ).on(
				'click',
				'.cancel_show_hide_schedule',
				function () {
					var wrap = $( this ).closest( 'div, table' );

					//$( this ).hide();  // Hide the 'Cancel' link.
					wrap.find( '.show_hide_dates_fields' ).find( 'input' ).val( '' );

					return false;
				}
			);
		} );
		</script>
		";
		echo '
		<style>
		.woocommerce_options_panel .show_hide_dates_fields .short:first-of-type { margin-bottom: 1em; }
		.woocommerce_options_panel .show_hide_dates_fields .short:nth-of-type(2) { clear: left; }
		</style>
		<p class="form-field show_hide_dates_fields">
			<label for="'.$this->show_hide_dates_start_key.'">' . esc_html__( 'Show/hide dates', 'woocommerce' ) . '</label>
			<input type="text" class="short" name="'.$this->show_hide_dates_start_key.'" id="'.$this->show_hide_dates_start_key.'" value="' . esc_attr( $show_hide_dates_start ) . '" placeholder="' . esc_html( _x( 'Starting&hellip;', 'placeholder', 'woocommerce' ) ) . ' YYYY-MM-DD" maxlength="10" pattern="' . esc_attr( apply_filters( 'woocommerce_date_input_html_pattern', '[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])' ) ) . '" />
			<input type="text" class="short" name="'.$this->show_hide_dates_end_key.'" id="'.$this->show_hide_dates_end_key.'" value="' . esc_attr( $show_hide_dates_end ) . '" placeholder="' . esc_html( _x( 'Ending&hellip;', 'placeholder', 'woocommerce' ) ) . ' YYYY-MM-DD" maxlength="10" pattern="' . esc_attr( apply_filters( 'woocommerce_date_input_html_pattern', '[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])' ) ) . '" />' .
			'<a href="#" class="description cancel_show_hide_schedule">' . esc_html__( 'Cancel', 'woocommerce' ) . '</a>' . wc_help_tip( __( 'The product will be shown at 00:00:00 of "Starting" date and hidden at 23:59:59 of "Ending" date.', 'woocommerce' ) ) . '
		</p>';
	}


	// Save the date fields values if set.
	public function save_show_hide_dates( $post_id, $post ) {
		$product_type = empty( $_POST['product-type'] ) ? WC_Product_Factory::get_product_type( $post_id ) : sanitize_title( wp_unslash( $_POST['product-type'] ) );
		$classname = WC_Product_Factory::get_product_classname( $post_id, $product_type ? $product_type : 'simple' );
		$product = new $classname( $post_id );

		// Handle show/hide dates.
		$show_hide_dates_start = '';
		$show_hide_dates_end   = '';

		// Force 'date from' to beginning of day.
		if ( isset( $_POST['_show_hide_dates_start'] ) ) {
			$show_hide_dates_start = wc_clean( wp_unslash( $_POST['_show_hide_dates_start'] ) );

			if ( ! empty( $show_hide_dates_start ) ) {
				// ToDo: Maybe use code from set_date_prop() in woocommerce/includes/abstracts/abstract-wc-data.php.
				$show_hide_dates_start = new WC_DateTime( date( 'Y-m-d 00:00:00', strtotime( $show_hide_dates_start ) ), new DateTimeZone( 'UTC' ) );

				// ToDo: If $show_hide_dates_start is in the future I should hide the product now! (set product_visibility terms)?
			}
		}

		// Force 'date to' to the end of the day.
		if ( isset( $_POST['_show_hide_dates_end'] ) ) {
			$show_hide_dates_end = wc_clean( wp_unslash( $_POST['_show_hide_dates_end'] ) );

			if ( ! empty( $show_hide_dates_end ) ) {
				// ToDo: Maybe use code from set_date_prop() in woocommerce/includes/abstracts/abstract-wc-data.php.
				$show_hide_dates_end = new WC_DateTime( date( 'Y-m-d 00:00:00', strtotime( $show_hide_dates_end ) ), new DateTimeZone( 'UTC' ) );
			}
		}

		$product->update_meta_data( $this->show_hide_dates_start_key, $show_hide_dates_start ? $show_hide_dates_start->getTimestamp() : $show_hide_dates_start );
		$product->update_meta_data( $this->show_hide_dates_end_key, $show_hide_dates_end ? $show_hide_dates_end->getTimestamp() : $show_hide_dates_end );
		$product->save();
	}


	// Returns an array of IDs of products that will be shown soon.
	public function get_starting_shows() {
		global $wpdb;

		return $wpdb->get_col(
			$wpdb->prepare(
				"SELECT postmeta.post_id FROM {$wpdb->postmeta} as postmeta
				WHERE postmeta.meta_key = '%s'
					AND postmeta.meta_value > 0
					AND postmeta.meta_value < %s",
				$this->show_hide_dates_start_key, time()
			)
		);
	}


	// Returns an array of IDs of products that are due to be hidden.
	public function get_ending_shows() {
		global $wpdb;

		return $wpdb->get_col(
			$wpdb->prepare(
				"SELECT postmeta.post_id FROM {$wpdb->postmeta} as postmeta
				WHERE postmeta.meta_key = '%s'
					AND postmeta.meta_value > 0
					AND postmeta.meta_value < %s",
				$this->show_hide_dates_end_key, time()
			)
		);
	}


	// Scheduled check for products to show or hide.
	public function scheduled_show_hide_check() {
		// Get products to be shown (or published).
		$product_ids = $this->get_starting_shows();

		if ( $product_ids ) {
			$visibility_ids = wc_get_product_visibility_term_ids();

			foreach ( $product_ids as $product_id ) {
				$product = wc_get_product( $product_id );

				if ( $product ) {
					$visibility_terms = $this->get_visibility_terms( $product_id );

					wp_set_object_terms( $product_id, $visibility_terms, 'product_visibility' );

					// Delete the start date so we don't keep changing the product_visibility terms.
					$product->delete_meta_data( $this->show_hide_dates_start_key );
					$product->save();
				}
			}
		}


		// Get products to be hidden (or unpublished).
		$product_ids = $this->get_ending_shows();

		if ( $product_ids ) {
			foreach ( $product_ids as $product_id ) {
				$product = wc_get_product( $product_id );

				if ( $product ) {
					// Get the terms without the 'exclude-from-catalog' or 'exclude-from-search' terms.
					$visibility_terms = $this->get_visibility_terms( $product_id );
					// Add 'exclude-from-catalog' and 'exclude-from-search' terms so that the product will be hidden.
					array_push( $visibility_terms, 'exclude-from-catalog', 'exclude-from-search' );

					// Hide product by adding 'exclude-from-catalog' and 'exclude-from-search' terms.
					wp_set_object_terms( $product_id, $visibility_terms, 'product_visibility' );

					// Delete the end date so we don't keep hiding this product.
					$product->delete_meta_data( $this->show_hide_dates_end_key );
					$product->save();
				}
			}
		}
	}
}

$ScheduleHideProducts = new ScheduleHideProducts();
Object.keys(this.obj).forEach(key => this.obj[key] = '')
<style>

#row-f84a0e6a, #row-1d8c3a6d {
  position: relative; /* Permet de superposer l'élément */
  z-index: 10; /* Définit un niveau supérieur pour placer la rangée au-dessus */
  margin-top: -20px; /* Ajuste la marge négative selon vos besoins */
}

#image-1fdce2fa {
  position: relative; /* Permet à l'élément de rester en dessous */
  z-index: 5; /* Niveau inférieur pour assurer que cet élément reste en dessous */
}


</style>




<script>configObj={"shadowSize":"rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.05) 0px 4px 6px -2px","roundnessSize":"20%","buttonDToBottom":"4rem","buttonDToRight":"2rem","selectedBackgroundColor":"#F84724","selectedIconColor":"#ffffff","buttonWidth":"3rem","buttonHeight":"3rem","svgContent":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"injected-svg\">\n                            <path d=\"M11.573 11.672a.615.615 0 0 1 .854 0l3.896 3.824a.578.578 0 0 1 0 .832.615.615 0 0 1-.853 0L12 12.92l-3.47 3.408a.615.615 0 0 1-.853 0 .578.578 0 0 1 0-.832zm0-4a.615.615 0 0 1 .854 0l3.896 3.824a.578.578 0 0 1 0 .832.615.615 0 0 1-.853 0L12 8.92l-3.47 3.408a.615.615 0 0 1-.853 0 .578.578 0 0 1 0-.832z\" fill=\"#ffffff\">\n                            </path>\n                        </svg>"};function createButton(o,t){const e=document.querySelector("body"),n=document.createElement("span");n.classList.add("softr-back-to-top-button"),n.id="softr-back-to-top-button",t?t.appendChild(n):e.appendChild(n),n.style.width=o.buttonWidth,n.style.height=o.buttonHeight,n.style.marginRight=o.buttonDToRight,n.style.marginBottom=o.buttonDToBottom,n.style.borderRadius=o.roundnessSize,n.style.boxShadow=o.shadowSize,n.style.color=o.selectedBackgroundColor,n.style.backgroundColor=o.selectedBackgroundColor,t?n.style.position="absolute":n.style.position="fixed",n.style.outline="none",n.style.bottom="0px",n.style.right="0px",n.style.cursor="pointer",n.style.textAlign="center",n.style.border="solid 2px currentColor",n.style.display="none",n.innerHTML=o.svgContent,t||(window.onscroll=function(){document.body.scrollTop>20||document.documentElement.scrollTop>20?n.style.display="block":n.style.display="none"},n.onclick=function(){document.body.scrollTop=0,document.documentElement.scrollTop=0})}document.addEventListener("DOMContentLoaded",function(){createButton(configObj,null)});</script>      
      


<style>
  /* Empêche le débordement horizontal */
  html, body {
    margin: 0;
    padding: 0;
    overflow-x: hidden;
  }

  /* Assurez-vous que les conteneurs respectent la largeur de l'écran */
  * {
    box-sizing: border-box;
  }

  /* Correction pour les éléments qui pourraient déborder */
  img, iframe, .container, .row, .section {
    max-width: 100%;
    width: 100%;
  }
</style>

<!DOCTYPE html>
<html>
<head>
<style>
body {
  font-family: 'Open Sans', sans-serif;
  font-size: 1em;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0.05em;
  background: #171A31;
  color: white;
  margin: 0;
  padding: 20px;
}

.timeline {
  margin: 4em auto;
  position: relative;
  max-width: 46em;
  padding: 0;
}

.timeline:before {
  background-color: white;
  content: '';
  margin-left: -1px;
  position: absolute;
  top: 0;
  left: 2em;
  width: 2px;
  height: 100%;
}

.timeline-event {
  position: relative;
  margin: 3em 0;
  list-style: none;
}

.timeline-event-icon {
  transition: transform 0.2s ease-in;
  transform: rotate(45deg);
  background-color: white;
  outline: 10px solid #171A31;
  display: block;
  margin: 0.5em 0.5em 0.5em -0.5em;
  position: absolute;
  top: 0;
  left: 2em;
  width: 1em;
  height: 1em;
}

.timeline-event:hover .timeline-event-icon {
  transform: rotate(-45deg);
  background-color: #E74C3C;
}

.timeline-event-copy {
  padding: 2em;
  position: relative;
  top: -1.875em;
  left: 4em;
  width: 80%;
  background: rgba(255,255,255,0.1);
  border-radius: 10px;
}

.timeline-event-copy h3 {
  font-size: 1.75em;
  margin: 0 0 0.5em;
}

.timeline-event-copy h4 {
  font-size: 1.2em;
  margin: 0 0 1.2em;
}

.timeline-event-copy strong {
  font-weight: 700;
}

.timeline-event-copy p {
  margin: 0 0 1.2em;
}

.timeline-event-thumbnail {
  color: white;
  font-size: 0.75em;
  background-color: #E74C3C;
  display: inline-block;
  margin-bottom: 1.2em;
  padding: 0.25em 1em;
  border-radius: 25px;
}
</style>
</head>
<body>

<ul class="timeline">
  <li class="timeline-event">
    <label class="timeline-event-icon"></label>
    <div class="timeline-event-copy">
      <p class="timeline-event-thumbnail">2022 - Present</p>
      <h3>Company One</h3>
      <h4>Senior Developer</h4>
      <p><strong>Frontend Development</strong><br>
      Building responsive and adaptive websites using modern technologies.</p>
    </div>
  </li>
  <li class="timeline-event">
    <label class="timeline-event-icon"></label>
    <div class="timeline-event-copy">
      <p class="timeline-event-thumbnail">2020 - 2022</p>
      <h3>Company Two</h3>
      <h4>Web Developer</h4>
      <p>Design and development of digital products using latest web technologies.</p>
    </div>
  </li>
  <li class="timeline-event">
    <label class="timeline-event-icon"></label>
    <div class="timeline-event-copy">
      <p class="timeline-event-thumbnail">2018 - 2020</p>
      <h3>Company Three</h3>
      <h4>Junior Developer</h4>
      <p><strong>Development & Consulting</strong><br>
      Working on various client projects and internal systems.</p>
    </div>
  </li>
</ul>

</body>
</html>






<style>
    /* Appliquer un ruban à la rangée */
    #row-33298a79 {
      position: relative; /* Nécessaire pour positionner le ruban */
    }
  
    /* Ruban avec texte */
    #row-33298a79::before {
      content: "RÉDUCTION -15%"; /* Texte affiché sur le ruban */
      font-size: 12px; /* Taille du texte */
      font-weight: bold; /* Texte en gras */
      color: #fff; /* Couleur du texte */
      --f: 0.5em; /* Contrôle la taille de la partie pliée */
      
      position: absolute;
      top: 0;
      right: 0;
      line-height: 1.8;
      padding: 5px 20px; /* Espacement autour du texte */
      border-image: conic-gradient(#ff000088 0 0) 51%/var(--f);
      clip-path: polygon(
        100% calc(100% - var(--f)),
        100% 100%,
        calc(100% - var(--f)) calc(100% - var(--f)),
        var(--f) calc(100% - var(--f)),
        0 100%,
        0 calc(100% - var(--f)),
        999px calc(100% - var(--f) - 999px),
        calc(100% - 999px) calc(100% - var(--f) - 999px)
      );
      transform: translate(calc((1 - cos(45deg)) * 100%), -100%) rotate(45deg);
      transform-origin: 0% 100%;
      background-color: #FF2F4E; /* Couleur principale */
      z-index: 10; /* Place le ruban au-dessus de la rangée */
    }
  </style>
  
<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bouton WhatsApp</title>
  <style>
    /* Style du bouton rectangulaire */
    .whatsapp-button {
      position: fixed;
      bottom: 20px; /* Position en bas */
      right: 20px; /* Position à droite */
      background-color: #25D366; /* Couleur officielle de WhatsApp */
      color: white; /* Couleur du texte */
      border: none;
      border-radius: 5px; /* Coins légèrement arrondis */
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 10px 15px; /* Espacement intérieur */
      box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); /* Ombre légère */
      cursor: pointer;
      font-size: 14px; /* Taille du texte */
      font-family: Arial, sans-serif; /* Police du texte */
      transition: transform 0.3s ease, background-color 0.3s ease; /* Animation au survol */
    }

    /* Icône WhatsApp dans le bouton */
    .whatsapp-button i {
      margin-right: 10px; /* Espace entre l'icône et le texte */
      font-size: 18px; /* Taille de l'icône */
    }

    /* Effet au survol */
    .whatsapp-button:hover {
      background-color: #1ebe57; /* Couleur légèrement plus foncée au survol */
      transform: scale(1.05); /* Légère augmentation de taille */
    }
  </style>
  <!-- FontAwesome pour l'icône WhatsApp -->
  <script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script>
</head>
<body>
  <!-- Bouton WhatsApp -->
  <button class="whatsapp-button" id="whatsappBtn">
    <i class="fab fa-whatsapp"></i> Posez des questions
  </button>

  <script>
    // Fonction pour ouvrir WhatsApp
    document.getElementById('whatsappBtn').addEventListener('click', function() {
      const phoneNumber = "23058009839"; // Numéro WhatsApp sans "+" ni espaces
      const message = "Bonjour, j'ai une question à propos de ."; // Message par défaut
      const whatsappURL = `https://wa.me/${phoneNumber}?text=${encodeURIComponent(message)}`;
      window.open(whatsappURL, "_blank"); // Ouvrir dans un nouvel onglet
    });
  </script>
</body>
</html>

<div id="row-59920160" class="RowUi-okiyiz-0 fyvZZg" style="background-size: initial; background-position: 50% 50%; background-repeat: repeat; background-attachment: initial;"><div size="12" class="ColumnUi-sc-2n8p1b-0 kxDUMc"><div class="StyleWrapperUi-tm5iqm-0 kKyYSI"><div id="rawhtml-988044f0" class="RawHtmlUi-sc-1lqhwfx-0 ePOjZl"><ul class="faq">
    <li><input type="checkbox" checked="checked"> <i></i>
    <h2><span>1:</span> What is in the course?</h2>
    <p>Inside the course you'll get access to a series of short, straight to the point, videos that will give you all the information you need to improve your content creation process.</p>
    </li>
    <li><input type="checkbox" checked="checked"> <i></i>
    <h2><span>2:</span> How does it compare to other courses out there?</h2>
    <p> This process is the documentation of over 3 years of content creation optimization. You'll learn my way of creating content, fast, consistently and in a way that connects with your audience and boosts interest and desire.</p>
    </li>
    <li><input type="checkbox" checked="checked"> <i></i>
    <h2><span>3:</span> When can I see results?</h2>
    <p>You'll be able to finish the course in just a few hours, and start implementing right away. Results will vary from person to person, but the sooner you start improving your content the faster you'll get results. </p>
    </li>
    <li><input type="checkbox" checked="checked"> <i></i>
    <h2><span>4:</span> Is there any guarantee?</h2>
    <p> I offer no refunds nor guarantees, every purchase is final. But I can confidently say that I've personally generated 6-figures and won a $100k award using the content strategy and framework that I teach inside this course. If you're looking for straight to the point, no BS information this will give you exactly that.</p>
    </li>
    <li><input type="checkbox" checked="checked"> <i></i>
    <h2><span>5:</span> Is there any support available</h2>
    <p> Since this course is straight forward, I don't offer a specific support method. But you can get my 1-on-1 mentorship if you'd like to have consistent support, or send me an email if you have any questions about the course.</p>
    </li>
    </ul>
    <style> .transition, p, .faq li i:before, .faq li i:after {
        transition: all 0.25s ease-in-out;
    }
    .flipIn, h1, .faq li {
        animation: flipdown 0.5s ease both;
    }
    .no-select, h2 {
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }
    .faq p {
        color: rgba(22, 22, 55, 0.8);
        font-size: 14px;
        line-height: 26px;
        position: relative;
        overflow: hidden;
        max-height: 800px;
        opacity: 1;
        transform: translate(0, 0);
        margin-top: 14px;
        margin-bottom: 0;
        z-index: 2;
        font-family: 'Poppins', sans-serif !important;
    }
    .faq {
        list-style: none;
        perspective: 900;
        padding: 0;
        margin: 0;
    }
    .faq h2{
        margin: 0;
        color: black;
        font-size: 16px;
        font-family: 'Poppins', sans-serif !important;
    }
    .faq li {
        position: relative;
        padding: 0;
        margin-top: 20px;
        color: white;
        background: #F3F4F3;
        padding: 20px;
        border: 1px solid rgb(255, 255, 255, 0.2);
    }
    .faq li:nth-of-type(1) {
        animation-delay: 0.5s;
    }
    .faq li:nth-of-type(2) {
        animation-delay: 0.75s;
    }
    .faq li:nth-of-type(3) {
        animation-delay: 1s;
    }
    .faq span{
        color: #50E3C2;
        margin-right: 5px;
    }
    .faq li i {
        position: absolute;
        transform: translate(-6px, 0);
        right: 0;
        top: 10px;
    }
    .faq li i:before, .faq li i:after {
        content: "";
        position: absolute;
        background: #161637;
        width: 3px;
        height: 9px;
        right: 23px;
        top: 20px;
    }
    .faq li i:before {
        transform: translate(-2px, 0) rotate(45deg);
    }
    .faq li i:after {
        transform: translate(2px, 0) rotate(-45deg);
    }
    .faq li input[type=checkbox] {
        background: #161637;
        position: absolute;
        cursor: pointer;
        width: 100%;
        height: 100%;
        z-index: 1;
        opacity: 0;
        left: 0px;
        top: 0;
    }
    .faq li input[type=checkbox]:checked ~ p {
        background: #161637;
        margin: 0;
        max-height: 0;
        opacity: 0;
        transform: translate(0, 50%);
    }
    .faq li input[type=checkbox]:checked ~ i:before {
        background: #161637;
        transform: translate(2px, 0) rotate(45deg);
    }
    .faq li input[type=checkbox]:checked ~ i:after {
        background: #161637;
        transform: translate(-2px, 0) rotate(-45deg);
    }
    @keyframes flipdown {
        0% {
            opacity: 0;
            transform-origin: top center;
            transform: rotateX(-90deg);
        }
        5% {
            opacity: 1;
        }
        80% {
            transform: rotateX(8deg);
        }
        83% {
            transform: rotateX(6deg);
        }
        92% {
            transform: rotateX(-3deg);
        }
        100% {
            transform-origin: top center;
            transform: rotateX(0deg);
        }
    }
     </style>
    </div></div></div></div>

  <!-- Ajoute ce code ci-dessous là où tu veux que la FAQ soit -->

    
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FAQ</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <!-- Chargement des icônes Font Awesome -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="styles.css">
</head>
<body>

<div class="faq-container">
    <div class="faq-item">
        <div class="faq-question">Qu'est-ce que Systeme.io? <span class="faq-icon"><i class="fa-solid fa-plus"></i></span></div>
        <div class="faq-answer">
            <p>Systeme.io est une plateforme de marketing en ligne tout-en-un qui permet de créer des tunnels de vente, des pages de capture, des espaces membres et bien plus encore.</p>
        </div>
    </div>

    <div class="faq-item">
        <div class="faq-question">Comment puis-je commencer avec Systeme.io? <span class="faq-icon"><i class="fa-solid fa-plus"></i></span></div>
        <div class="faq-answer">
            <p>Pour commencer avec Systeme.io, vous devez vous inscrire sur leur site web, créer un compte et choisir le plan qui convient le mieux à vos besoins.</p>
        </div>
    </div>

    <div class="faq-item">
        <div class="faq-question">Est-ce que Systeme.io offre un essai gratuit? <span class="faq-icon"><i class="fa-solid fa-plus"></i></span></div>
        <div class="faq-answer">
            <p>Oui, Systeme.io propose un essai gratuit de 14 jours pour vous permettre d'explorer toutes les fonctionnalités de la plateforme avant de vous engager.</p>
        </div>
    </div>

    <!-- Ajoute d'autres questions/réponses selon tes besoins -->

</div>


        
        
        
        
        
         <!-- Ajoute ce code ci-dessous en footer -->


<script>
$(".faq-question").click(function() {
    var container = $(this).parent(".faq-item");
    var answer = container.find(".faq-answer");
    var icon = $(this).find(".faq-icon i");

    // Fermer toutes les autres réponses
    $(".faq-answer").not(answer).slideUp(200).removeClass("scale-in-ver-top");
    $(".faq-icon i").not(icon).removeClass("fa-minus").addClass("fa-plus");

    // Ouvrir ou fermer la réponse actuelle
    answer.slideToggle(200).css("transform-origin", "top").toggleClass("scale-in-ver-top");

    if (icon.hasClass("fa-plus")) {
        icon.removeClass("fa-plus").addClass("fa-minus");
    } else {
        icon.removeClass("fa-minus").addClass("fa-plus");
    }
});
</script>

</body>
</html>

<style>
  
body {
    font-family: Arial, sans-serif;
    background-color: #000; /* Fond noir pour la page */
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
    color: #fff; /* Couleur de texte blanche par défaut */
}

.faq-container {
    width: 70%;
    margin: 0 auto;
}

.faq-item {
    border-bottom: 1px solid #01ffff21; /* Bordure inférieure sombre entre les questions */
    background: rgb(2, 0, 36);
    background: linear-gradient(90deg, #002424 0%, #000000 100%); /* Dégradé léger */
    padding: 20px;
    margin-bottom: 12px; /* Espacement entre chaque question/réponse */
    border-radius: 4px; /* Coins arrondis */
}

.faq-question {
    font-size: 18px;
    font-weight: bold;
    color: #ffffff; /* Couleur principale pour les questions */
    cursor: pointer;
    transition: background-color 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: space-between; /* Pour aligner le texte à gauche et l'icône à droite */
    position: relative; /* Position relative pour le contour */
}

.faq-icon {
    margin-left: 10px;
}

.faq-answer {
    padding: 10px 25px 10px 25px;
    display: none;
    margin-top: 12px;
    margin-left: 12px;
    color: #ffffff; /* Couleur de texte blanche pour les réponses */
    background-color: #0000006e; /* Fond semi-transparent pour les réponses */
    border-radius: 4px; /* Coins arrondis */
    transform-origin: top; /* Point d'origine pour l'animation de scale */
    border-left: 5px solid #01ffff; /* Contour à gauche de couleur principale */
}

.scale-in-ver-top {
    animation: scale-in-ver-top 0.3s ease;
}

@keyframes scale-in-ver-top {
    0% {
        transform: scaleY(0);
        opacity: 0;
    }
    100% {
        transform: scaleY(1);
        opacity: 1;
    }
}

</style>


<style>
#video-6549f229{
  -webkit-box-shadow: 0px 29px 36px -19px rgba(0,0,0,0.48);
-moz-box-shadow: 0px 29px 36px -19px rgba(0,0,0,0.48);
box-shadow: 0px 34px 46px -19px #FF0102;
}
</style>
<script>
    // Désactive le clic droit
    document.addEventListener('contextmenu', function(event) {
        alert('Votre souris a un problème de compatibilité.');
        event.preventDefault();
    });
</script>

from pydantic import BaseModel, Field
from restack_ai.workflow import workflow, import_functions, log
from src.functions.llm_chat import llm_chat, LlmChatInput, Message


class AgentChatInput(BaseModel):
    message: str


class MessageEvent(BaseModel):
    content: str


class EndEvent(BaseModel):
    end: bool


@workflow.defn()
class AgentChat:
    def __init__(self) -> None:
        self.end = False
        self.messages = []
        
    @workflow.event
    async def message(self, message: MessageEvent) -> List[Message]:
        self.messages.append({"role": "user", "content": message.content})
        assistant_message = await workflow.step(llm_chat, LlmChatInput(messages=self.messages))
        self.messages.append(assistant_message)
        return assistant_message
      
    @workflow.event
    async def end(self, end: EndEvent) -> EndEvent:
        self.end = True
        return end
      
    @workflow.run
    async def run(self, input: AgentChatInput):
        await workflow.step(llm_chat, LlmChatInput(messages=self.messages))
        await workflow.condition(lambda: self.end)
        return
async function getCurrentPosition() {
    return new Promise((resolve, reject) => {
      if (!navigator.geolocation) {
        reject("Geolocation is not supported");
        return;
      }

      navigator.geolocation.getCurrentPosition(
        (position) => {
          const { latitude, longitude } = position.coords;
          userLocation = { latitude, longitude }; // Store globally
          resolve(userLocation); // Resolve with user location
        },
        (error) => reject(error.message) // Reject on error (e.g., permission denied)
      );
    });
  }

  async function init() {
    // prettier-ignore
    try { // get user location  on page load 
      const location = await getCurrentPosition();
      console.log({userLocation});
    } catch (error) {
      console.error(error); 
    }
  }

  window.addEventListener("DOMContentLoaded", init);
class naredra:
    def __init__(self,brand , model):
        self._brand= brand
        self.model = model
        
    def display(self):
        print(f"Brand:{self._brand},Model:{self.model}")
        
n1 = naredra("narendra",3)
#print(n1.brand)
#print(n1.model)
n1.display()
<style>
  .sc-kDhYZr.eBMIet {
    display: none;
}

.kDhYZr {
    width: 165px;
    height: 38px;
    background-image: url(https://d3syewzhvzylbl.cloudfront.net/images/affiliate_badge_logo.png);
    background-size: cover;
    padding: 3px 0px;
    position: fixed;
    bottom: 4px;
    right: 0px;
    z-index: 3;
}
</style>


<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Animation de Carte</title>
  <style>
    @font-face {
      font-family: 'Satoshi-Medium';
      src: url('https://d1yei2z3i6k35z.cloudfront.net/1970629/66b23470627c0_Satoshi-Medium.ttf') format('truetype');
      font-weight: normal;
      font-style: normal;
    }

    @font-face {
      font-family: 'Square721BTRoman';
      src: url('https://d1yei2z3i6k35z.cloudfront.net/1970629/669a71400c0c2_square721_bt_roman.ttf') format('truetype');
      font-weight: normal;
      font-style: normal;
    }

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    .container {
      width: 100%;
      display: flex;
      justify-content: center;
      height: 500px;
      gap: 10px;
      flex-wrap: wrap;
    }

    .container > div {
      flex: 0 0 120px;
      transition: 0.5s ease-in-out;
      cursor: pointer;
      position: relative;
      overflow: hidden;
      border-radius: 20px;
    }

    .container > div:nth-of-type(1) {
      background: url("https://images.pexels.com/photos/17179705/pexels-photo-17179705.jpeg?auto=compress&cs=tinysrgb&w=600")
        no-repeat 50% / cover;
    }

    .container > div:nth-of-type(2) {
      background: url("https://images.pexels.com/photos/14344696/pexels-photo-14344696.jpeg?auto=compress&cs=tinysrgb&w=600")
        no-repeat 50% / cover;
    }

    .container > div:nth-of-type(3) {
      background: url("https://images.pexels.com/photos/17179699/pexels-photo-17179699.jpeg?auto=compress&cs=tinysrgb&w=600")
        no-repeat 50% / cover;
    }

    .container > div:nth-of-type(4) {
      background: url("https://images.pexels.com/photos/14344661/pexels-photo-14344661.jpeg?auto=compress&cs=tinysrgb&w=600")
        no-repeat 50% / cover;
    }

    .container > div:nth-of-type(5) {
      background: url("https://images.pexels.com/photos/14448341/pexels-photo-14448341.jpeg?auto=compress&cs=tinysrgb&w=600")
        no-repeat 50% / cover;
    }

    .container > div:nth-of-type(6) {
      background: url("https://images.pexels.com/photos/14344694/pexels-photo-14344694.jpeg?auto=compress&cs=tinysrgb&w=600")
        no-repeat 50% / cover;
    }

    .content {
      font-size: 10px;
      color: #fff;
      display: flex;
      align-items: center;
      padding: 15px;
      opacity: 0;
      flex-direction: column;
      height: 100%;
      justify-content: flex-end;
      background: linear-gradient(
        0deg,
        #ffffff00 0%,
        #ffffff00 100%
      );
      transform: translatey(100%);
      transition: opacity 0.5s ease-in-out, transform 0.5s 0.2s;
      visibility: hidden;
      border-radius: 30px;
    }

    .content h2 {
      font-family: "Square721BTRoman", sans-serif;
      text-decoration: none;
      text-transform: uppercase;
    }

    .content span {
      display: block;
      margin-top: 5px;
      font-size: 15px;
      font-family: "Satoshi-Medium", sans-serif;
      background-color: #0054FF;
      padding: 5px 10px;
      border-radius: 5px;
    }

    .container > div:hover {
      flex: 0 0 250px;
      transform: translatey(-30px);
      border-radius: 40px;
    }

    .container > div:hover .content {
      opacity: 1;
      transform: translatey(0%);
      visibility: visible;
      border-radius: 40px;
    }
  </style>
</head>
<body>
  <div class="container">
    <div>
      <div class="content">
        <h2>Jean Dupont</h2>
        <span>Photographe</span>
      </div>
    </div>
    <div>
      <div class="content">
        <h2>Marie Lambert</h2>
        <span>Designer Graphique</span>
      </div>
    </div>
    <div>
      <div class="content">
        <h2>Paul Martin</h2>
        <span>Développeur Web</span>
      </div>
    </div>
    <div>
      <div class="content">
        <h2>Sophie Leroy</h2>
        <span>Chef de Projet</span>
      </div>
    </div>
    <div>
      <div class="content">
        <h2>Thomas Moreau</h2>
        <span>Consultant SEO</span>
      </div>
    </div>
    <div>
      <div class="content">
        <h2>Laura Petit</h2>
        <span>Community Manager</span>
      </div>
    </div>
  </div>
</body>
</html>

A mettre sur la page Optin

<script type="text/javascript">
    function saveName() {
        // Récupérer les valeurs des champs d'entrée
        const prenom = document.getElementById('form-input-2592a6bd').value;
        const email = document.getElementById('form-input-213e069e').value;

        // Vérifier que les champs ne sont pas vides
        if (prenom && email) {
            // Sauvegarder le prénom et l'email dans le stockage local du navigateur
            localStorage.setItem('prenom', prenom);
            localStorage.setItem('email', email);
        } else {
            alert('Veuillez remplir tous les champs.');
        }
    }

    // Attacher la fonction saveName à l'événement de clic du bouton
    document.addEventListener('DOMContentLoaded', function() {
        document.getElementById('button-a8765457').addEventListener('click', saveName);
    });
</script>





A mettre sur la thank you page : 

<script type="text/javascript">
    document.addEventListener('DOMContentLoaded', function() {
        const prenom = localStorage.getItem('prenom');
        if (prenom) {
            const titleElement = document.getElementById('headline-7fee0d19');
            titleElement.innerHTML = `Félicitations <span class="styled-name">${prenom}</span>, tes templates ont été envoyés`;
        }
    });
</script>





Pour l’effet derrière le prenom


<style>
    .styled-name {
        color: #FF0004;
        position: relative;
    }
    .styled-name::after {
        content: '';
        position: absolute;
        left: 0;
        bottom: -5px; /* Ajustez cette valeur pour déplacer le soulignement plus près ou plus loin du texte */
        width: 100%;
        height: 2px; /* Épaisseur du soulignement */
        background: linear-gradient(36deg, rgba(11,10,11,1) 30%, rgba(255,0,4,1) 100%);
        border-radius: 5px; /* Optionnel : pour rendre le soulignement avec des coins arrondis */
    }
</style>


<div size="6" class="sc-sPYgB dHDOqC">
  <div class="sc-dHIava KkaSa">
    <div class="sc-dREXXX bHaVCq">
      <div class="scrolling-image-container">
        <img class="scrolling-image" src="https://d1yei2z3i6k35z.cloudfront.net/1970629/67a647751b52d_Home.png">
      </div>
    </div>
  </div>

  <style>
    .scrolling-image-container {
      position: relative;
      overflow: hidden;
      width: 100%;

      height: 300px; /* Vous pouvez ajuster cette valeur en fonction de la hauteur souhaitée pour le conteneur de l'image */
    }

    .scrolling-image {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: auto;
      object-fit: cover;
      transform: translateY(0);
      will-change: transform;
      transition: transform 2s ease-out;
    }

    .scrolling-image-container:hover .scrolling-image {
      transform: translateY(-25%);
    }
  </style>
</div>
<?php
if (!defined('ABSPATH')) {
    exit;
}

class  Elementor_Slider_Custom_Widget extends \Elementor\Widget_Base
{
    public function get_name()
    {
        return 'custom_slider';
    }

    public function get_title()
    {
        return esc_html__('Custom Slider', 'elementor-list-widget');
    }

    public function get_icon()
    {
        return 'eicon-slides';
    }

    public function get_categories()
    {
        return ['custom'];
    }

    public function get_keywords()
    {
        return ['list', 'slider', 'custom', 'smo'];
    }

    protected function register_controls()
    {
        //content
        $this->start_controls_section(
            'section_content',
            [
                'label' => esc_html__('Content', 'textdomain'),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]
        );
        $this->add_control(
			'title_main',
			[
				'label' => esc_html__('Title', 'textdomain'),
                'type' => \Elementor\Controls_Manager::TEXT,
                'default' => 'text',
			]
		);
        $this->add_control(
            'slider_list',
            [
                'label' => esc_html__('List Item', 'textdomain'),
                'type' => \Elementor\Controls_Manager::REPEATER,
                'fields' => [
                    [
                        'name' => 'image',
                        'label' => esc_html__('Image', 'textdomain'),
                        'type' => \Elementor\Controls_Manager::MEDIA,
                        'media_types' => ['image', 'video'],
                        'default' => [
                            'url' => \Elementor\Utils::get_placeholder_image_src(),
                        ],
                    ],
                    [
                        'name' => 'sub_title',
                        'label' => esc_html__('Top Title', 'textdomain'),
                        'type' => \Elementor\Controls_Manager::TEXTAREA,
				        'rows' => 5,
                        'default' => '',
                    ],
                    [
                        'name' => 'sub_title_color',
                        'label' => esc_html__('Top Title Color', 'textdomain'),
                        'type' => \Elementor\Controls_Manager::COLOR,
                        'default' => '#FFFFFF',
                    ],
                    [
                        'name' => 'title',
                        'label' => esc_html__('Title', 'textdomain'),
                        'type' => \Elementor\Controls_Manager::TEXTAREA,
                        'rows' => 5,
                        'default' => '',
                    ],
                    [
                        'name' => 'title_color',
                        'label' => esc_html__('Title Color', 'textdomain'),
                        'type' => \Elementor\Controls_Manager::COLOR,
                        'default' => '#FFFFFF',
                    ],
                    [
                        'name' => 'link',
                        'label' => esc_html__('Link', 'textdomain'),
                        'type' => \Elementor\Controls_Manager::URL,
                        'options' => ['url', 'is_external', 'nofollow'],
                        'default' => [
                            'url' => '',
                            'is_external' => false,
                            'nofollow' => false,
                            'custom_attributes' => '',
                        ],
                        'label_block' => true,
                    ],
                ],
                'title_field' => '{{{ sub_title }}}',
            ]
        );
        $this->end_controls_section();


        // Setting silder PC

        $this->start_controls_section(
            'section_slider',
            [
                'label' => esc_html__('Slider PC (>1024px) ', 'textdomain'),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]

        );
        $this->add_control(
            'box_height',
            [
                'label' => esc_html__('Height', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 10000,
                'step' => 1,
                'default' => 471,
            ]
        );
        $this->add_control(
            'box_width',
            [
                'label' => esc_html__('Width', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 10000,
                'step' => 1,
                'default' => 353,
            ]
        );
        
        $this->add_control(
            'display_team',
            [
                'label' => esc_html__('Display', 'textdomain'),
                'type' => \Elementor\Controls_Manager::TEXT,
                'default' => '3.5',
            ]
        );
        $this->add_control(
            'space_between',
            [
                'label' => esc_html__('Space Between', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 100,
                'step' => 1,
                'default' => 14,
            ]
        );
        $this->add_control(
            'loop',
            [
                'label' => esc_html__('Loop', 'textdomain'),
                'type' => \Elementor\Controls_Manager::SWITCHER,
                'label_on' => esc_html__('Yes', 'textdomain'),
                'label_off' => esc_html__('No', 'textdomain'),
                'return_value' => 'yes',
                'default' => '',
            ]
        );
        $this->add_control(
            'pagination',
            [
                'label' => esc_html__('Pagination', 'textdomain'),
                'type' => \Elementor\Controls_Manager::SWITCHER,
                'label_on' => esc_html__('Yes', 'textdomain'),
                'label_off' => esc_html__('No', 'textdomain'),
                'return_value' => 'no',
                'default' => '',
            ]
        );
        $this->add_control(
            'navigation',
            [
                'label' => esc_html__('Navigation', 'textdomain'),
                'type' => \Elementor\Controls_Manager::SWITCHER,
                'label_on' => esc_html__('Yes', 'textdomain'),
                'label_off' => esc_html__('No', 'textdomain'),
                'return_value' => 'yes',
                'default' => '',
            ]
        );
        $this->end_controls_section();

        // Setting silder tablet
        $this->start_controls_section(
            'section_slider_tl',
            [
                'label' => esc_html__('Slider Tablet (768px - 1024px)', 'textdomain'),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]

        );
        $this->add_control(
            'box_height_tl',
            [
                'label' => esc_html__('Height', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 10000,
                'step' => 1,
                'default' => '425',
            ]
        );
        $this->add_control(
            'box_width_tl',
            [
                'label' => esc_html__('Width', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 10000,
                'step' => 1,
                'default' => '318',
            ]
        );
        
        $this->add_control(
            'display_team_tl',
            [
                'label' => esc_html__('Display', 'textdomain'),
                'type' => \Elementor\Controls_Manager::TEXT,
                'default' => '3.2',
            ]
        );
        $this->add_control(
            'space_between_tl',
            [
                'label' => esc_html__('Space Between', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 100,
                'step' => 1,
                'default' => 14,
            ]
        );
        $this->end_controls_section();

        //Setting silder MB
        $this->start_controls_section(
            'section_slider_mb',
            [
                'label' => esc_html__('Slider Mobile (< 768px)', 'textdomain'),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]

        );
        $this->add_control(
            'box_height_mb',
            [
                'label' => esc_html__('Height', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 10000,
                'step' => 1,
                'default' => '320',
            ]
        );
        $this->add_control(
            'box_width_mb',
            [
                'label' => esc_html__('Width', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 10000,
                'step' => 1,
                'default' => '240',
            ]
        );
        
        $this->add_control(
            'display_team_mb',
            [
                'label' => esc_html__('Display', 'textdomain'),
                'type' => \Elementor\Controls_Manager::TEXT,
                'default' => '1.5',
            ]
        );
        $this->add_control(
            'space_between_mb',
            [
                'label' => esc_html__('Space Between', 'textdomain'),
                'type' => \Elementor\Controls_Manager::NUMBER,
                'min' => 1,
                'max' => 100,
                'step' => 1,
                'default' => 14,
            ]
        );
        $this->end_controls_section();



        // Style

        $this->start_controls_section(
			'style_name',
			[
				'label' => esc_html__( 'Style Title', 'textdomain' ),
				'tab' => \Elementor\Controls_Manager::TAB_STYLE,
			]
		);
        $this->add_group_control(
			\Elementor\Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'selector' => '{{WRAPPER}} .slider-title',
			]
		);
        
        $this->end_controls_section();


        $this->start_controls_section(
			'style_slider_title',
			[
				'label' => esc_html__( 'Style Slider', 'textdomain' ),
				'tab' => \Elementor\Controls_Manager::TAB_STYLE,
			]
		);
        $this->add_group_control(
			\Elementor\Group_Control_Typography::get_type(),
			[
				'name' => 'slider_title_typography',
				'selector' => '{{WRAPPER}} .title',
			]
		);
		$this->end_controls_section();
		
		
		$this->start_controls_section(
			'style_slider_subtitle',
			[
				'label' => esc_html__( 'Style Slider Subtitle', 'textdomain' ),
				'tab' => \Elementor\Controls_Manager::TAB_STYLE,
			]
		);
        $this->add_group_control(
			\Elementor\Group_Control_Typography::get_type(),
			[
				'name' => 'slider_subtitle_typography',
				'selector' => '{{WRAPPER}} .sub-title',
			]
		);

		$this->end_controls_section();
    }

    protected function render()
    {
        $settings = $this->get_settings_for_display();
        $title_main = $settings['title_main'];
        
        $slider_list = $settings['slider_list'];
        $box_height = $settings['box_height'];
        $box_width = $settings['box_width'];
        $display_team = $settings['display_team'];
        $loop = $settings['loop'] === 'yes' ? 'true' : 'false';
        $navigation  = $settings['navigation'];
        $pagination = $settings['pagination'];
        $space_between = $settings['space_between'];

        $box_height_mb = $settings['box_height_mb'];
        $box_width_mb = $settings['box_width_mb'];
        $display_team_mb = $settings['display_team_mb'];
        $space_between_mb = $settings['space_between_mb'];

        $box_height_tl = $settings['box_height_tl'];
        $box_width_tl = $settings['box_width_tl'];
        $display_team_tl = $settings['display_team_tl'];
        $space_between_tl = $settings['space_between_tl'];

        // Generate a random string
        $unique_id = uniqid();
        $class_unique = 'slider-item'.$unique_id;
        ob_start();
        ?>
        <!-- PC -->
        <div class="smo-slider-section">
            <div class="smo-title-container">
                <div class="smo-title-box">
                    <?php if(!empty($title_main)): ?>
                        <h2 class="slider-title"><?php echo $title_main?></h2>
                    <?php endif; ?>
                    <?php if($navigation == "yes"):?>
                        <div class="slider-navigation">
                            <div class="navigation-next  navigation-next-<?php echo $unique_id; ?>">
                                <svg width="40" height="41" viewBox="0 0 40 41" fill="none" xmlns="http://www.w3.org/2000/svg">
                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M16.2929 27.2572C15.9024 26.8666 15.9024 26.2335 16.2929 25.8429L21.5858 20.55L16.2929 15.2571C15.9024 14.8666 15.9024 14.2334 16.2929 13.8429C16.6834 13.4524 17.3166 13.4524 17.7071 13.8429L23.7071 19.8429C23.8946 20.0305 24 20.2848 24 20.55C24 20.8152 23.8946 21.0696 23.7071 21.2571L17.7071 27.2572C17.3166 27.6477 16.6834 27.6477 16.2929 27.2572Z" fill="#080808" fill-opacity="0.8"/>
                                </svg>
                            </div>
                            <div class="navigation-prev navigation-prev-<?php echo $unique_id; ?>">
                                <svg width="40" height="41" viewBox="0 0 40 41" fill="none" xmlns="http://www.w3.org/2000/svg">
                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M23.7071 13.8429C24.0976 14.2335 24.0976 14.8666 23.7071 15.2572L18.4142 20.5501L23.7071 25.8429C24.0976 26.2334 24.0976 26.8666 23.7071 27.2571C23.3166 27.6476 22.6834 27.6476 22.2929 27.2571L16.2929 21.2572C16.1054 21.0696 16 20.8153 16 20.5501C16 20.2848 16.1054 20.0305 16.2929 19.843L22.2929 13.8429C22.6834 13.4524 23.3166 13.4524 23.7071 13.8429Z" fill="#080808" fill-opacity="0.8"/>
                                </svg>
                            </div>
                        </div>
                    <?php endif; ?>
                </div>
            </div>

            <div class="smo-slider-container">
                <div class="smo-slider smo-slider-<?php echo $unique_id; ?> swiper">
                    <div class="swiper-wrapper">
                        <?php foreach ($slider_list as $key => $team):
                            $image = $team['image']['url'];
                            $title = $team['title'];
                            $title_color = $team['title_color'];
                            $sub_title = $team['sub_title'];
                            $sub_title_color = $team['sub_title_color'];
                            $link = $team['link'];
                            $tags = !empty($link['url'])?'a':'div';
                            $href = !empty($link['url'])?'href="'.$link['url'].'"':'';
                            $target = !empty($link['url']) && $link['is_external'] ? 'target="_blank"' : '';
                            $nofollow = !empty($link['url']) && $link['nofollow'] ? 'rel="nofollow"' : '';

                            $is_video = preg_match('/\.(mp4|webm|ogg)$/i', $image);
                            ?>
                            <div class="swiper-slide slider-item <?php echo $class_unique ?>">
                                <<?php echo $tags ?> class="item-box" style="background: url(<?php echo (!$is_video)?esc_url($image):'' ?>) center/cover no-repeat;" <?php echo $href ?> <?php echo $target ?> <?php echo $nofollow ?>>
                                    <?php if ($is_video): ?>
                                        <video class="background-media" autoplay loop muted playsinline>
                                            <source src="<?php echo esc_url($image) ?>" type="video/mp4">
                                        </video>
                                    <?php endif; ?>
                                    <div class="slider-infor">
                                        <?php if(!empty($sub_title)): ?>
                                            <p class="sub-title" style="color: <?php echo $sub_title_color ?>">
                                                <?php echo $sub_title ?>
                                            </p>
                                        <?php endif; ?>

                                        <?php if(!empty($title)): ?>
                                        <h3 class="title" style="color: <?php echo $title_color ?>">
                                            <?php echo $title ?>
                                        </h3>
                                        <?php endif; ?>
                                        
                                    </div>
                                </<?php echo $tags ?>>
                            </div>
                        <?php endforeach; ?>
                    </div>
                    <?php if($pagination == "yes"):?>
                        <div class="swiper-pagination slider-pagination"></div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        <style>
            .smo-slider-section <?php echo '.'.$class_unique ?>{
                aspect-ratio: <?php echo $box_width?>/<?php echo $box_height?>;
                max-width: <?php echo $box_width?>px;
            }
            @media(max-width: 1024px){
                .smo-slider-section <?php echo '.'.$class_unique ?>{
                    aspect-ratio: <?php echo $box_width_tl?>/<?php echo $box_height_tl?>;
                    max-width: <?php echo $box_width_tl?>px;
                }
            }
            @media(max-width: 767px){
                .smo-slider-section <?php echo '.'.$class_unique ?>{
                    aspect-ratio: <?php echo $box_width_mb?>/<?php echo $box_height_mb?>;
					max-width: <?php echo $box_width_mb?>px;
                }
            }
        </style>

        <script>
            (function ($) {
                $(document).ready(function () {
                    var swiper = new Swiper(".smo-slider-<?php echo $unique_id; ?>", {
                        slidesPerView: <?php echo $display_team; ?>,
                        spaceBetween: <?php echo $space_between; ?>,
                        loop: <?php echo $loop; ?>,
                        centeredSlides: false,
						speed: 600,
                        breakpoints: {
                            0: {
                                slidesPerView: <?php echo $display_team_mb; ?>,
                                spaceBetween: <?php echo $space_between_mb; ?>,
                            },
                            768: {
                                slidesPerView: <?php echo $display_team_tl; ?>,
                                spaceBetween: <?php echo $space_between_tl; ?>,
                            },
                            1025: {
                                slidesPerView: <?php echo $display_team; ?>,
                                spaceBetween: <?php echo $space_between; ?>,
                            }
                        },
                        pagination: {
                            el: ".slider-pagination",
                        },
                        navigation: {
                            nextEl: ".navigation-next-<?php echo $unique_id; ?>",
                            prevEl: ".navigation-prev-<?php echo $unique_id; ?>",
                        },
// 						direction: 'horizontal',
// 						mousewheel: true,
// 						effect: 'slide'
                    });
                });
            })(jQuery)
        </script>
        <?php
        echo ob_get_clean();
    }
}


  const validKeys = new Set(newVariables.map(v => v.name)); // Extracts valid keys from newVariables
  return Object.fromEntries(Object.entries(prev).filter(([key]) => validKeys.has(key))); // Removes invalid keys
With a massive $14B+ weekly trading volume and a 58.04% growth surge, PancakeSwap has officially overtaken Uniswap as the leading decentralized exchange!

What’s driving its success? High liquidity & smooth trading Low fees & ultra-fast transactions Strong community-driven ecosystem

Looking to build a decentralized exchange like PancakeSwap? Contact Opris Decentralized Exchange Development Company and launch your own DEX today!
SELECT *
FROM request_call
WHERE created_at >= STR_TO_DATE('2025-03-23', '%Y-%m-%d');

SELECT count(distinct email)
FROM request_call
WHERE created_at >= STR_TO_DATE('2025-05-05', '%Y-%m-%d') and type = 'trial_class_request_website';
// getEmail = Partner_Details[Partner_Entity_Name == input.CP_Name];
getEmailID = Partner_Onboarding_and_KYC[Partner_Entity_Name == input.CP_Name];
// info getEmailID;
if(getEmailID.count() > 0)
{
	insdata = insert into CP_Internal_Invoice_Backend
	[
		Added_User=zoho.loginuser
		Accumulated_Commission_Amount=input.Accumulated_Commission_Amount
		Internal_Invoice_Created_Date=input.Internal_Invoice_Created_Date
		Books_Journal_ID=input.Books_Journal_ID
		Internal_Invoice_ID=input.Internal_Invoice_ID
		Application_No=input.Application_No
		Enrollment_Date=input.Enrollment_Date
		Tranasaction_ID=input.Tranasaction_ID
		CP_Name=input.CP_Name
		Contracting_Organisation=input.Contracting_Organisation
		Payout=input.Payout
		Total_Amount=input.Total_Amount
		Program_fee=input.Program_fee
		Registration_fee=input.Registration_fee
		Exam_fee=input.Exam_fee
		Loan_subvention_charges=input.Loan_subvention_charges
		Eligible_fee=input.Eligible_fee
		Balance_Amount=input.Balance_Amount
		UTR_number=input.UTR_number
		Mail_CP=input.Mail_CP
		Uploaded_Invoice=input.Uploaded_Invoice
		Tranasaction=input.Tranasaction
		Send_mail_Status=input.Send_mail_Status
		Status=input.Status
		Button_Status=input.Button_Status
		Zoho_Book_Total_Amount=input.Zoho_Book_Total_Amount
		Zoho_Books_Balance_Amount=input.Zoho_Books_Balance_Amount
		Decision_box=input.Decision_box
		Decision_box1=input.Decision_box1
		Internal_Invoice=input.ID
		Balance_Amount_Backend=input.Balance_Amount_Backend
		Bill_Creation_Status="No"
	];
	// 	External_Invoice_Amount=input.External_Invoice_Amount
	// 	External_Invoice_number=input.External_Invoice_number
	// 		External_Invoice=input.External_Invoice
	// 		External_Invoice_Date=input.External_Invoice_Date
	// 	info "inside if";
	// 		Contracting_organisation1=input.Contracting_organisation1
	Content = "<a href='https://creatorapp.zohopublic.in/centralisedprocurement_usdcglobal/usdc1/CP_Internal_Invoice_Backend/record-edit/CP_Internal_Invoice_Backend_Report/" + insdata +  "/A3hQ1AfsuCWn3DPEmaDrQZbdK4B5GsNYUfGemsA3k24Ue1d8NuMxnYrJR21ADe5E84m5N6PHqOkruO6vBR43Sxsf7bUvTqrPyUVQ?&Decision_Box2="+false+"'>Click link to upload the invoice.</a>";
	sendmail
	[
		from :zoho.adminuserid
		to :getEmailID.Partner_Representative_Email
		cc:"indhu@techvaria.com","pooja.s@techvaria.com","vimal@techvaria.com"
		subject :"Action required - Submit invoice for commission finalized to " + getEmailID.Contracting_organisation1.Contracting_organisation
		message :"Commission is finalized " + Content + "<br><br>" + "Payments will be subject to verification of the invoice submitted and completion of necessary approvals."
	]
}
input.Button_Status = "Send to Cp";
input.Mail_CP = true;
/----------------------- Custom Post type Services ------------------------------------/
//Services Post Type
add_action('init', 'services_post_type_init');
function services_post_type_init()
{
 
    $labels = array(
 
        'name' => __('Services', 'post type general name', ''),
        'singular_name' => __('Services', 'post type singular name', ''),
        'add_new' => __('Add New', 'Services', ''),
        'add_new_item' => __('Add New Services', ''),
        'edit_item' => __('Edit Services', ''),
        'new_item' => __('New Services', ''),
        'view_item' => __('View Services', ''),
        'search_items' => __('Search Services', ''),
        'not_found' =>  __('No Services found', ''),
        'not_found_in_trash' => __('No Services found in Trash', ''),
        'parent_item_colon' => ''
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'rewrite' => true,
        'query_var' => true,
        'menu_icon' => 'dashicons-admin-generic',
        'capability_type' => 'post',
        'hierarchical' => true,
        'public' => true,
        'has_archive' => true,
        'show_in_nav_menus' => true,
        'menu_position' => null,
        'rewrite' => array(
            'slug' => 'services',
            'with_front' => true
        ),
        'supports' => array(
            'title',
            'editor',
            'thumbnail'
        )
    );
 
    register_post_type('services', $args);
}
 
 
=============================
SHORTCODE
=============================
 
// Add Shortcode [our_services];
add_shortcode('our_services', 'codex_our_services');
function codex_our_services()
{
    ob_start();
    wp_reset_postdata();
?>
 
    <div class="row ">
        <div id="owl-demo" class="owl-carousel ser-content">
            <?php
            $arg = array(
                'post_type' => 'services',
                'posts_per_page' => -1,
            );
            $po = new WP_Query($arg);
            ?>
            <?php if ($po->have_posts()) : ?>
 
                <?php while ($po->have_posts()) : ?>
                    <?php $po->the_post(); ?>
                    <div class="item">
                        <div class="ser-body">
                            <a href="#">
                                <div class="thumbnail-blog">
                                    <?php echo get_the_post_thumbnail(get_the_ID(), 'full'); ?>
                                </div>
                                <div class="content">
                                    <h3 class="title"><?php the_title(); ?></h3>
<!--                                     <p><?php //echo wp_trim_words(get_the_content(), 25, '...'); ?></p> -->
                                </div>
                            </a>
                            <div class="readmore">
                                <a href="<?php echo get_permalink() ?>">Read More</a>
                            </div>
                        </div>
                    </div>
                <?php endwhile; ?>
 
            <?php endif; ?>
        </div>
    </div>
 
 
<?php
    wp_reset_postdata();
    return '' . ob_get_clean();
}
if(input.Status == "KYC Pending")
{
	addRecord = insert into KYC_Approvals
	[
		Added_User=zoho.loginuser
		Partner_ID1=input.ID
		Business_Operator_Name=input.Business_Operator_Name
		IT_return_acknowledgement_for_last_2_years=input.IT_return_acknowledgement_for_last_2_years
		Finance_Email=input.Finance_Email
		Director_Email=input.Director_Email
		Operator_Email=input.Operator_Email
		Finance_Name1=input.Finance_Name1
		Beneficiary_Name=input.Beneficiary_Name
		IFSC=input.IFSC
		Data_privacy_Integrity_and_Protection=input.Data_privacy_Integrity_and_Protection
		Date_of_Establishment=input.Date_of_Establishment
		GST_Registration_Certificate=input.GST_Registration_Certificate
		Equal_Opportunities_Equality_Diversity=input.Equal_Opportunities_Equality_Diversity
		Partner_Declaration=input.Partner_Declaration
		Partner_Representative_Contact=input.Partner_Representative_Contact
		Student_feedback_on_enrollment_process=input.Student_feedback_on_enrollment_process
		Status=input.Status
		Partner_Email_Address=input.Partner_Email_Address
		Confidentiality_of_information=input.Confidentiality_of_information
		Existing_Exclusivity_Arrangements=input.Existing_Exclusivity_Arrangements
		GST_Treatment=input.GST_Treatment
		Director_Contact_Number=input.Director_Contact_Number
		Partner_Address=input.Partner_Address
		Partner_Representative_Name=input.Partner_Representative_Name
		Malpractice=input.Malpractice
		Operator_No=input.Operator_No
		Student_grievance_resolution_process=input.Student_grievance_resolution_process
		Approved_partner_other_universities=input.Approved_partner_other_universities
		Partner_Representative_Email=input.Partner_Representative_Email
		Partner_Entity_Name=input.Partner_Entity_Name
		Refused_withdrawn_approval_by_awarding_organization=input.Refused_withdrawn_approval_by_awarding_organization
		Partner_website_if_any=input.Partner_website_if_any
		Director_Name=input.Director_Name
		Partner_Entity_Structure=input.Partner_Entity_Structure
		Recruitment_Induction=input.Recruitment_Induction
		Health_Safety_and_risk_assessments=input.Health_Safety_and_risk_assessments
		Bank_Name=input.Bank_Name
		Registered_as_MSME=input.Registered_as_MSME
		If_yes_provide_MSME_Certificate=input.If_yes_provide_MSME_Certificate
		PAN=input.PAN
		Finance_No=input.Finance_No
		SWIFT_code=input.SWIFT_code
		Application_type=input.Application_type
		Partner_Enquiry=input.Partner_Enquiry
		Certificate_of_Registration=input.Certificate_of_Registration
		Account_Currency=input.Account_currency
		GST_registered=input.GST_registered
		POC_email_for_partner_portal_access=input.POC_email_for_partner_portal_access
		POC_name_for_partner_portal_access=input.POC_name_for_partner_portal_access
		Partner_alternate_POC_name=input.Partner_alternate_POC_name
		Partner_alternate_POC_contact=input.Partner_alternate_POC_contact
		Partner_ID1=input.ID
		Bank_Account_Number=input.Bank_Account_Number
		International_Bank_Account_Number=input.International_Bank_Account_Number
		POC_contact_for_mobile_app_access=input.POC_contact_for_mobile_app_access1
		Contracting_organisation=input.Contracting_organisation1
		Partner_Category=input.Partner_Category
		KYC_Status="Verified"
	];
	if(addRecord != null)
	{
		input.KYC_Approvals1 = addRecord;
	}
	content = "<a href='https://creatorapp.zohopublic.in/centralisedprocurement_usdcglobal/usdc1/KYC_Approvals/record-edit/KYC_Approvals_Report/" + addRecord + "/8gw05CY046CTaEr7R86kBXD708VuO5bStJXndxEjFQ56mMtwuNkV32a8wKrPBu10J5eRumsUr9vjrT9A9wQueQaYDrkJy5NRFH5p'>Click here to access the form.</a>";
	sendmail
	[
		from :zoho.adminuserid
		to :input.Partner_Representative_Email
		cc:"bhoomika@techvaria.com","vimal@techvaria.com","pooja.s@techvaria.com","indhu@techvaria.com"
		subject :"Action required - KYC initiated with " + input.Contracting_organisation1.Contracting_organisation
		message :"Thank you for your business interest.\n\n" + "Kindly be notified that the KYC process has been initiated by " + input.Contracting_organisation1.Contracting_organisation + ".\n" + "You are required to submit KYC information and documents.\n\n" + content + "\n\n" + "KYC will be subject to verification."
	]
	input.Status = "KYC Verification Pending";
	input.Decision_box11 = true;
}
else
{
	kycdet = KYC_Approvals[Partner_ID1 == input.ID];
	info "kyc data" + kycdet;
	content = "<a href='https://creatorapp.zohopublic.in/centralisedprocurement_usdcglobal/usdc1/KYC_Approvals/record-edit/KYC_Approvals_Report/" + kycdet.ID + "/8gw05CY046CTaEr7R86kBXD708VuO5bStJXndxEjFQ56mMtwuNkV32a8wKrPBu10J5eRumsUr9vjrT9A9wQueQaYDrkJy5NRFH5p'>[Click here] to access the form.</a>";
	sendmail
	[
		from :zoho.adminuserid
		to :kycdet.Partner_Representative_Email
		cc:"bhoomika@techvaria.com","vimal@techvaria.com","pooja.s@techvaria.com","indhu@techvaria.com"
		subject :"Action required - KYC discrepancies with " + input.Contracting_organisation1.Contracting_organisation
		message :"Kindly be notified that your KYC submission has been rejected by " + input.Contracting_organisation1.Contracting_organisation + " due to insufficiency of or errors in the documents submitted.\n\n" + "To resume the KYC process, kindly submit additional documents and/or provide clarifications.\n\n" + content
	]
	input.Status = "KYC Verification Pending";
}
getitmid = Item_Master[ID != null] sort by Item_Code desc;
if(getitmid.count() == 0)
{
	input.Item_Code = "ITM001";
}
else
{
	var1 = getitmid.Item_Code.getsuffix("ITM");
	if(var1.isEmpty() || !var1.isNumber())
	{
		var2 = 1;
	}
	else
	{
		var2 = var1.tolong() + 1;
	}
	autoList = var2.toString().length();
	accList = {1:"ITM00",2:"ITM0",3:"ITM"};
	input.Item_Code = accList.get(autoList) + var2;
}
disable Item_Code;
#	User Home Directory Permissions - jocha.se 2013-01-15
#
#	Creates a HomeDirectory for users who are missing one.
#	Verifies they have Modify permissions, if they have Full it replaces with Modify.

# Loading modules
Import-Module ActiveDirectory

$DC = "DC01.DOMAIN.LOCAL"
$OU = "OU=Users,DC=DOMAIN,DC=LOCAL"

$Content = (Get-ADUser -server $Dc -filter * -Properties * -SearchBase $OU | select SamAccountName, HomeDirectory)

FOREACH ($ID in $Content) {
    $User = $ID.SamAccountName
    $Folder = $ID.HomeDirectory
    # If the user does not have a value for HomeDirectory it skips.
    If ($Folder) { 
        # If the HomeDirectory does not exist its created.
        If ((Test-Path $Folder) -ne $true) {
            New-Item -ItemType directory -Path $Folder
            icacls $Folder /grant $User`:`(OI`)`(CI`)M
            }
        # Checking if user has Full permissions on their folder.
        $Icacls = icacls $Folder 
        $Match = "*" + $User + ":(F)*"
        $IcaclsResult = $Icacls -like $Match
        If ($IcaclsResult) {
            Write-Host $User " HomeDirectory has incorrect permissions. Resetting..."
            icacls $Folder /remove:g $User
            icacls $Folder /grant $User`:`(OI`)`(CI`)M
        }
    }    
}
Fat tire bikes have become a game-changer in the cycling industry, offering riders the freedom to explore any terrain with confidence. Whether you love off-road adventures, winter cycling, or simply want a smoother ride, fat tire bikes provide the stability and versatility you need. If you’re looking for a high-quality fat tire bike, check out [Dakeya Bike](https://dakeyabike.com/) for top-tier options.

### What Makes Fat Tire Bikes Unique?
Unlike standard bikes, fat tire bikes feature oversized tires—typically between 3.8 and 5 inches wide. These tires allow for lower air pressure, increasing traction and making it easier to ride on snow, sand, mud, and rocky surfaces. The wide contact area helps distribute weight evenly, preventing the bike from sinking into soft terrain.

### Advantages of Fat Tire Bikes

#### 1. **Unmatched Stability and Traction**
Fat tires offer increased grip on loose or uneven surfaces, reducing the risk of slipping. This makes them ideal for challenging environments such as beaches, forests, and snowy landscapes.

#### 2. **Comfortable Riding Experience**
The large tires absorb shocks and vibrations better than traditional bike tires. This results in a smoother ride, even on rough and bumpy trails.

#### 3. **Ride Anywhere, Anytime**
One of the biggest advantages of fat tire bikes is their ability to perform in all conditions. Whether you’re tackling winter snow or a sandy desert trail, these bikes are designed to handle it all.

#### 4. **Beginner-Friendly**
Fat tire bikes are great for beginners because they provide more balance and control. Their stability reduces the learning curve for new riders and makes off-road cycling more accessible.

### Choosing the Right Fat Tire Bike
When selecting a fat tire bike, consider the following factors:

- **Tire Width:** Wider tires provide better flotation and grip on soft surfaces, while narrower options offer improved speed and maneuverability.
- **Frame Material:** Aluminum and carbon fiber frames are lightweight and rust-resistant, while steel frames offer durability and strength.
- **Suspension Options:** Rigid frames are ideal for smoother trails, whereas suspension forks help absorb shocks on rocky terrain.
- **Gear System:** Multi-speed bikes offer versatility for hilly terrain, while single-speed models are great for casual riding.
- **Braking System:** Disc brakes provide superior stopping power, especially in wet or muddy conditions.

For top-quality fat tire bikes, explore the selection at [Dakeya Bike](https://dakeyabike.com/), where performance meets adventure.

### Maintaining Your Fat Tire Bike
To keep your fat tire bike in peak condition, follow these maintenance tips:

- **Adjust Tire Pressure:** Lower pressure for better grip on soft terrain and higher pressure for speed on hard surfaces.
- **Keep It Clean:** Wash off dirt and debris after every ride to prevent wear and tear.
- **Lubricate the Chain:** A well-lubricated chain ensures a smooth ride and prolongs the life of your bike’s drivetrain.
- **Check Brakes Regularly:** Properly functioning brakes are crucial for safety, especially on downhill or wet trails.

### Final Thoughts
Fat tire bikes redefine adventure by allowing you to ride anywhere, anytime. Whether you’re looking for an off-road beast or a comfortable all-season ride, fat tire bikes deliver the ultimate cycling experience. Ready to explore new trails? Visit [Dakeya Bike](https://dakeyabike.com/) to find the perfect fat tire bike for your adventures!

add_filter('use_block_editor_for_post', '__return_false', 10);
add_filter( 'use_widgets_block_editor', '__return_false' );
star

Tue Apr 01 2025 20:26:46 GMT+0000 (Coordinated Universal Time) https://webinstall.dev/ollama/

@hmboyd

star

Tue Apr 01 2025 20:26:24 GMT+0000 (Coordinated Universal Time) https://webinstall.dev/ollama/

@hmboyd

star

Tue Apr 01 2025 12:46:40 GMT+0000 (Coordinated Universal Time)

@mhaschke_works #rekursiv #bash #chmod

star

Tue Apr 01 2025 08:38:28 GMT+0000 (Coordinated Universal Time)

@linabalciunaite #accessibility #css

star

Tue Apr 01 2025 08:29:34 GMT+0000 (Coordinated Universal Time)

@linabalciunaite #accessibility #aria

star

Tue Apr 01 2025 05:40:23 GMT+0000 (Coordinated Universal Time) https://www.malgotechnologies.com/dream11-clone-script

@benjaminvalor #dream11 #fantasy #clone #ipl

star

Tue Apr 01 2025 01:21:50 GMT+0000 (Coordinated Universal Time)

@Gaimo #typescript

star

Mon Mar 31 2025 17:30:33 GMT+0000 (Coordinated Universal Time)

@Curable1600 #browsers #windows

star

Mon Mar 31 2025 13:54:36 GMT+0000 (Coordinated Universal Time) /cart/?add-to-cart=2888

@odesign

star

Mon Mar 31 2025 05:30:12 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/create-erc20-token/

@LilianAnderson #createerc20token #erc20tokendevelopment #blockchainforstartups #cryptotokencreation #ethereumtokenguide

star

Sun Mar 30 2025 20:58:20 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Sun Mar 30 2025 19:10:53 GMT+0000 (Coordinated Universal Time)

@satinbest #php

star

Sun Mar 30 2025 16:37:35 GMT+0000 (Coordinated Universal Time)

@kanatov

star

Sun Mar 30 2025 09:34:04 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:33:26 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:32:49 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:32:05 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:31:14 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:28:15 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:26:38 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:25:32 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:21:53 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 09:20:51 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sun Mar 30 2025 05:59:24 GMT+0000 (Coordinated Universal Time) https://www.restack.io/

@TuckSmith541

star

Sat Mar 29 2025 22:29:45 GMT+0000 (Coordinated Universal Time)

@davidmchale #promise #pageload #init

star

Sat Mar 29 2025 14:54:44 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/python-programming/online-compiler/

@Narendra

star

Sat Mar 29 2025 12:41:58 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sat Mar 29 2025 12:40:49 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sat Mar 29 2025 12:37:56 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sat Mar 29 2025 12:29:13 GMT+0000 (Coordinated Universal Time)

@Etiennette

star

Sat Mar 29 2025 07:50:10 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/upbit-clone-script/

@janetbrownjb #upbitclonescript #cryptoexchangedevelopment #startyourcryptoexchange #upbitlikeexchange #cryptotradingplatform

star

Sat Mar 29 2025 07:08:38 GMT+0000 (Coordinated Universal Time) https://www.addustechnologies.com/blog/okx-clone-script

@Seraphina ##okxclonescript ##whitelabelokxclonesoftware ##okxcloneapp ##okxclonesoftware

star

Sat Mar 29 2025 02:31:22 GMT+0000 (Coordinated Universal Time)

@quanganh141220 #elementor #custom #widget #slider

star

Fri Mar 28 2025 11:28:42 GMT+0000 (Coordinated Universal Time)

@Harsh #javascript #string

star

Fri Mar 28 2025 06:07:01 GMT+0000 (Coordinated Universal Time)

@IfedayoAwe

star

Fri Mar 28 2025 05:58:44 GMT+0000 (Coordinated Universal Time)

@Pooja

star

Thu Mar 27 2025 18:13:31 GMT+0000 (Coordinated Universal Time)

@shahmeeriqbal

star

Thu Mar 27 2025 13:07:44 GMT+0000 (Coordinated Universal Time) https://appticz.com/outsource-mobile-app-development

@davidscott

star

Thu Mar 27 2025 11:52:12 GMT+0000 (Coordinated Universal Time)

@Pooja

star

Thu Mar 27 2025 11:04:57 GMT+0000 (Coordinated Universal Time)

@Pooja

star

Thu Mar 27 2025 09:53:35 GMT+0000 (Coordinated Universal Time) https://logicsimplified.com/unity-game-development-company/

@gamedev1 #unitygamedevelopment #gamedevelopment #unity3dgamedevelopment #gamedevelopmentcompany ##unity ##gameengine

star

Thu Mar 27 2025 08:22:04 GMT+0000 (Coordinated Universal Time) https://jocha.se/blog/tech/fix-users-homefolder-permissions

@See182

star

Wed Mar 26 2025 20:41:31 GMT+0000 (Coordinated Universal Time)

@dakeyabike

star

Wed Mar 26 2025 19:35:07 GMT+0000 (Coordinated Universal Time) https://usonlineclasstaker.com/

@tonywill665

star

Wed Mar 26 2025 18:59:32 GMT+0000 (Coordinated Universal Time)

@shahmeeriqbal

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension