dvadf
File manager - Edit - /home/theblueo/tv/fb4e3b/lib.tar
Back
notices/class-astra-notices.php 0000666 00000023231 15210370240 0012577 0 ustar 00 <?php /** * Astra Sites Notices * * Closing notice on click on `astra-notice-close` class. * * If notice has the data attribute `data-repeat-notice-after="%2$s"` then notice close for that SPECIFIC TIME. * If notice has NO data attribute `data-repeat-notice-after="%2$s"` then notice close for the CURRENT USER FOREVER. * * > Create custom close notice link in the notice markup. E.g. * `<a href="#" data-repeat-notice-after="<?php echo MONTH_IN_SECONDS; ?>" class="astra-notice-close">` * It close the notice for 30 days. * * @package Astra Sites * @since 1.4.0 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } if ( ! class_exists( 'Astra_Notices' ) ) : /** * Astra_Notices * * @since 1.4.0 */ class Astra_Notices { /** * Notices * * @access private * @var array Notices. * @since 1.4.0 */ private static $version = '1.1.5'; /** * Notices * * @access private * @var array Notices. * @since 1.4.0 */ private static $notices = array(); /** * Instance * * @access private * @var object Class object. * @since 1.4.0 */ private static $instance; /** * Initiator * * @since 1.4.0 * @return object initialized object of class. */ public static function get_instance() { if ( ! isset( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } /** * Constructor * * @since 1.4.0 */ public function __construct() { add_action( 'admin_notices', array( $this, 'show_notices' ), 30 ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'wp_ajax_astra-notice-dismiss', array( $this, 'dismiss_notice' ) ); add_filter( 'wp_kses_allowed_html', array( $this, 'add_data_attributes' ), 10, 2 ); } /** * Filters and Returns a list of allowed tags and attributes for a given context. * * @param Array $allowedposttags Array of allowed tags. * @param String $context Context type (explicit). * @since 1.4.0 * @return Array */ public function add_data_attributes( $allowedposttags, $context ) { $allowedposttags['a']['data-repeat-notice-after'] = true; return $allowedposttags; } /** * Add Notice. * * @since 1.4.0 * @param array $args Notice arguments. * @return void */ public static function add_notice( $args = array() ) { self::$notices[] = $args; } /** * Dismiss Notice. * * @since 1.4.0 * @return void */ public function dismiss_notice() { $notice_id = ( isset( $_POST['notice_id'] ) ) ? sanitize_key( $_POST['notice_id'] ) : ''; $repeat_notice_after = ( isset( $_POST['repeat_notice_after'] ) ) ? absint( $_POST['repeat_notice_after'] ) : ''; $nonce = ( isset( $_POST['nonce'] ) ) ? sanitize_key( $_POST['nonce'] ) : ''; if ( false === wp_verify_nonce( $nonce, 'astra-notices' ) ) { wp_send_json_error( esc_html_e( 'WordPress Nonce not validated.', 'astra' ) ); } // Valid inputs? if ( ! empty( $notice_id ) ) { if ( ! empty( $repeat_notice_after ) ) { set_transient( $notice_id, true, $repeat_notice_after ); } else { update_user_meta( get_current_user_id(), $notice_id, 'notice-dismissed' ); } wp_send_json_success(); } wp_send_json_error(); } /** * Enqueue Scripts. * * @since 1.4.0 * @return void */ public function enqueue_scripts() { wp_register_script( 'astra-notices', self::_get_uri() . 'notices.js', array( 'jquery' ), self::$version, true ); wp_localize_script( 'astra-notices', 'astraNotices', array( '_notice_nonce' => wp_create_nonce( 'astra-notices' ), ) ); } /** * Rating priority sort * * @since 1.5.2 * @param array $array1 array one. * @param array $array2 array two. * @return array */ public function sort_notices( $array1, $array2 ) { if ( ! isset( $array1['priority'] ) ) { $array1['priority'] = 10; } if ( ! isset( $array2['priority'] ) ) { $array2['priority'] = 10; } return $array1['priority'] - $array2['priority']; } /** * Notice Types * * @since 1.4.0 * @return void */ public function show_notices() { $defaults = array( 'id' => '', // Optional, Notice ID. If empty it set `astra-notices-id-<$array-index>`. 'type' => 'info', // Optional, Notice type. Default `info`. Expected [info, warning, notice, error]. 'message' => '', // Optional, Message. 'show_if' => true, // Optional, Show notice on custom condition. E.g. 'show_if' => if( is_admin() ) ? true, false, . 'repeat-notice-after' => '', // Optional, Dismiss-able notice time. It'll auto show after given time. 'display-notice-after' => false, // Optional, Dismiss-able notice time. It'll auto show after given time. 'class' => '', // Optional, Additional notice wrapper class. 'priority' => 10, // Priority of the notice. 'display-with-other-notices' => true, // Should the notice be displayed if other notices are being displayed from Astra_Notices. 'is_dismissible' => true, ); // Count for the notices that are rendered. $notices_displayed = 0; // sort the array with priority. usort( self::$notices, array( $this, 'sort_notices' ) ); foreach ( self::$notices as $key => $notice ) { $notice = wp_parse_args( $notice, $defaults ); $notice['id'] = self::get_notice_id( $notice, $key ); $notice['classes'] = self::get_wrap_classes( $notice ); // Notices visible after transient expire. if ( isset( $notice['show_if'] ) && true === $notice['show_if'] ) { // don't display the notice if it is not supposed to be displayed with other notices. if ( 0 !== $notices_displayed && false === $notice['display-with-other-notices'] ) { continue; } if ( self::is_expired( $notice ) ) { self::markup( $notice ); ++$notices_displayed; } } } } /** * Markup Notice. * * @since 1.4.0 * @param array $notice Notice markup. * @return void */ public static function markup( $notice = array() ) { wp_enqueue_script( 'astra-notices' ); do_action( 'astra_notice_before_markup' ); do_action( "astra_notice_before_markup_{$notice['id']}" ); ?> <div id="<?php echo esc_attr( $notice['id'] ); ?>" class="<?php echo esc_attr( $notice['classes'] ); ?>" data-repeat-notice-after="<?php echo esc_attr( $notice['repeat-notice-after'] ); ?>"> <div class="notice-container"> <?php do_action( "astra_notice_inside_markup_{$notice['id']}" ); ?> <?php echo wp_kses_post( $notice['message'] ); ?> </div> </div> <?php do_action( "astra_notice_after_markup_{$notice['id']}" ); do_action( 'astra_notice_after_markup' ); } /** * Notice classes. * * @since 1.4.0 * * @param array $notice Notice arguments. * @return array Notice wrapper classes. */ private static function get_wrap_classes( $notice ) { $classes = array( 'astra-notice', 'notice' ); if ( $notice['is_dismissible'] ) { $classes[] = 'is-dismissible'; } $classes[] = $notice['class']; if ( isset( $notice['type'] ) && '' !== $notice['type'] ) { $classes[] = 'notice-' . $notice['type']; } return esc_attr( implode( ' ', $classes ) ); } /** * Get Notice ID. * * @since 1.4.0 * * @param array $notice Notice arguments. * @param int $key Notice array index. * @return string Notice id. */ private static function get_notice_id( $notice, $key ) { if ( isset( $notice['id'] ) && ! empty( $notice['id'] ) ) { return $notice['id']; } return 'astra-notices-id-' . $key; } /** * Is notice expired? * * @since 1.4.0 * * @param array $notice Notice arguments. * @return boolean */ private static function is_expired( $notice ) { $transient_status = get_transient( $notice['id'] ); if ( false === $transient_status ) { if ( isset( $notice['display-notice-after'] ) && false !== $notice['display-notice-after'] ) { if ( 'delayed-notice' !== get_user_meta( get_current_user_id(), $notice['id'], true ) && 'notice-dismissed' !== get_user_meta( get_current_user_id(), $notice['id'], true ) ) { set_transient( $notice['id'], 'delayed-notice', $notice['display-notice-after'] ); update_user_meta( get_current_user_id(), $notice['id'], 'delayed-notice' ); return false; } } // Check the user meta status if current notice is dismissed or delay completed. $meta_status = get_user_meta( get_current_user_id(), $notice['id'], true ); if ( empty( $meta_status ) || 'delayed-notice' === $meta_status ) { return true; } } return false; } /** * Get URI * * @return mixed URL. */ public static function _get_uri() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore $path = wp_normalize_path( dirname( __FILE__ ) ); $theme_dir = wp_normalize_path( get_template_directory() ); $plugin_dir = wp_normalize_path( WP_PLUGIN_DIR ); if ( strpos( $path, $theme_dir ) !== false ) { return trailingslashit( get_template_directory_uri() . str_replace( $theme_dir, '', $path ) ); } elseif ( strpos( $path, $plugin_dir ) !== false ) { return plugin_dir_url( __FILE__ ); } elseif ( strpos( $path, dirname( plugin_basename( __FILE__ ) ) ) !== false ) { return plugin_dir_url( __FILE__ ); } return; // phpcs:ignore Squiz.PHP.NonExecutableCode.ReturnNotRequired } } /** * Kicking this off by calling 'get_instance()' method */ Astra_Notices::get_instance(); endif; notices/notices.js 0000666 00000004021 15210370240 0010205 0 ustar 00 /** * Customizer controls toggles * * @package Astra */ ( function( $ ) { /** * Helper class for the main Customizer interface. * * @since 1.0.0 * @class ASTCustomizer */ AstraNotices = { /** * Initializes our custom logic for the Customizer. * * @since 1.0.0 * @method init */ init: function() { this._bind(); }, /** * Binds events for the Astra Portfolio. * * @since 1.0.0 * @access private * @method _bind */ _bind: function() { $( document ).on('click', '.astra-notice-close', AstraNotices._dismissNoticeNew ); $( document ).on('click', '.astra-notice .notice-dismiss', AstraNotices._dismissNotice ); }, _dismissNotice: function( event ) { event.preventDefault(); var repeat_notice_after = $( this ).parents('.astra-notice').data( 'repeat-notice-after' ) || ''; var notice_id = $( this ).parents('.astra-notice').attr( 'id' ) || ''; AstraNotices._ajax( notice_id, repeat_notice_after ); }, _dismissNoticeNew: function( event ) { event.preventDefault(); var repeat_notice_after = $( this ).attr( 'data-repeat-notice-after' ) || ''; var notice_id = $( this ).parents('.astra-notice').attr( 'id' ) || ''; var $el = $( this ).parents('.astra-notice'); $el.fadeTo( 100, 0, function() { $el.slideUp( 100, function() { $el.remove(); }); }); AstraNotices._ajax( notice_id, repeat_notice_after ); var link = $( this ).attr( 'href' ) || ''; var target = $( this ).attr( 'target' ) || ''; if( '' !== link && '_blank' === target ) { window.open(link , '_blank'); } }, _ajax: function( notice_id, repeat_notice_after ) { if( '' === notice_id ) { return; } $.ajax({ url: ajaxurl, type: 'POST', data: { action : 'astra-notice-dismiss', nonce : astraNotices._notice_nonce, notice_id : notice_id, repeat_notice_after : parseInt( repeat_notice_after ), }, }); } }; $( function() { AstraNotices.init(); } ); } )( jQuery ); batch-processing/class-wp-async-request.php 0000666 00000005511 15210370240 0015042 0 ustar 00 <?php /** * WP Async Request * * @package WP-Background-Processing */ if ( ! class_exists( 'WP_Async_Request' ) ) { /** * Abstract WP_Async_Request class. * * @abstract */ abstract class WP_Async_Request { /** * Prefix * * (default value: 'wp') * * @var string * @access protected */ protected $prefix = 'wp'; /** * Action * * (default value: 'async_request') * * @var string * @access protected */ protected $action = 'async_request'; /** * Identifier * * @var mixed * @access protected */ protected $identifier; /** * Data * * (default value: array()) * * @var array * @access protected */ protected $data = array(); /** * Initiate new async request */ public function __construct() { $this->identifier = $this->prefix . '_' . $this->action; add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) ); add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) ); } /** * Set data used during the request * * @param array $data Data. * * @return $this */ public function data( $data ) { $this->data = $data; return $this; } /** * Dispatch the async request * * @return array|WP_Error */ public function dispatch() { $url = add_query_arg( $this->get_query_args(), $this->get_query_url() ); $args = $this->get_post_args(); return wp_remote_post( esc_url_raw( $url ), $args ); } /** * Get query args * * @return array */ protected function get_query_args() { if ( property_exists( $this, 'query_args' ) ) { return $this->query_args; } return array( 'action' => $this->identifier, 'nonce' => wp_create_nonce( $this->identifier ), ); } /** * Get query URL * * @return string */ protected function get_query_url() { if ( property_exists( $this, 'query_url' ) ) { return $this->query_url; } return admin_url( 'admin-ajax.php' ); } /** * Get post args * * @return array */ protected function get_post_args() { if ( property_exists( $this, 'post_args' ) ) { return $this->post_args; } return array( 'timeout' => 0.01, 'blocking' => false, 'body' => $this->data, 'cookies' => $_COOKIE, 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), ); } /** * Maybe handle * * Check for correct nonce and pass to handler. */ public function maybe_handle() { // Don't lock up other requests while processing session_write_close(); check_ajax_referer( $this->identifier, 'nonce' ); $this->handle(); wp_die(); } /** * Handle * * Override this method to perform any actions required * during the async request. */ abstract protected function handle(); } } batch-processing/class-wp-background-process.php 0000666 00000025176 15210370240 0016043 0 ustar 00 <?php /** * WP Background Process * * @package WP-Background-Processing */ if ( ! class_exists( 'WP_Background_Process' ) ) { /** * Abstract WP_Background_Process class. * * @abstract * @extends WP_Async_Request */ abstract class WP_Background_Process extends WP_Async_Request { /** * Action * * (default value: 'background_process') * * @var string * @access protected */ protected $action = 'background_process'; /** * Start time of current process. * * (default value: 0) * * @var int * @access protected */ protected $start_time = 0; /** * Cron_hook_identifier * * @var mixed * @access protected */ protected $cron_hook_identifier; /** * Cron_interval_identifier * * @var mixed * @access protected */ protected $cron_interval_identifier; /** * Initiate new background process */ public function __construct() { parent::__construct(); $this->cron_hook_identifier = $this->identifier . '_cron'; $this->cron_interval_identifier = $this->identifier . '_cron_interval'; add_action( $this->cron_hook_identifier, array( $this, 'handle_cron_healthcheck' ) ); add_filter( 'cron_schedules', array( $this, 'schedule_cron_healthcheck' ) ); } /** * Dispatch * * @access public * @return void */ public function dispatch() { // Schedule the cron healthcheck. $this->schedule_event(); // Perform remote post. return parent::dispatch(); } /** * Push to queue * * @param mixed $data Data. * * @return $this */ public function push_to_queue( $data ) { $this->data[] = $data; return $this; } /** * Save queue * * @return $this */ public function save() { $key = $this->generate_key(); if ( ! empty( $this->data ) ) { update_site_option( $key, $this->data ); } return $this; } /** * Update queue * * @param string $key Key. * @param array $data Data. * * @return $this */ public function update( $key, $data ) { if ( ! empty( $data ) ) { update_site_option( $key, $data ); } return $this; } /** * Delete queue * * @param string $key Key. * * @return $this */ public function delete( $key ) { delete_site_option( $key ); return $this; } /** * Generate key * * Generates a unique key based on microtime. Queue items are * given a unique key so that they can be merged upon save. * * @param int $length Length. * * @return string */ protected function generate_key( $length = 64 ) { $unique = md5( microtime() . rand() ); $prepend = $this->identifier . '_batch_'; return substr( $prepend . $unique, 0, $length ); } /** * Maybe process queue * * Checks whether data exists within the queue and that * the process is not already running. */ public function maybe_handle() { // Don't lock up other requests while processing session_write_close(); if ( $this->is_process_running() ) { // Background process already running. wp_die(); } if ( $this->is_queue_empty() ) { // No data to process. wp_die(); } check_ajax_referer( $this->identifier, 'nonce' ); $this->handle(); wp_die(); } /** * Is queue empty * * @return bool */ protected function is_queue_empty() { global $wpdb; $table = $wpdb->options; $column = 'option_name'; if ( is_multisite() ) { $table = $wpdb->sitemeta; $column = 'meta_key'; } $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%'; $count = $wpdb->get_var( $wpdb->prepare( " SELECT COUNT(*) FROM {$table} WHERE {$column} LIKE %s ", $key ) ); return ( $count > 0 ) ? false : true; } /** * Is process running * * Check whether the current process is already running * in a background process. */ protected function is_process_running() { if ( get_site_transient( $this->identifier . '_process_lock' ) ) { // Process already running. return true; } return false; } /** * Lock process * * Lock the process so that multiple instances can't run simultaneously. * Override if applicable, but the duration should be greater than that * defined in the time_exceeded() method. */ protected function lock_process() { $this->start_time = time(); // Set start time of current process. $lock_duration = ( property_exists( $this, 'queue_lock_time' ) ) ? $this->queue_lock_time : 60; // 1 minute $lock_duration = apply_filters( $this->identifier . '_queue_lock_time', $lock_duration ); set_site_transient( $this->identifier . '_process_lock', microtime(), $lock_duration ); } /** * Unlock process * * Unlock the process so that other instances can spawn. * * @return $this */ protected function unlock_process() { delete_site_transient( $this->identifier . '_process_lock' ); return $this; } /** * Get batch * * @return stdClass Return the first batch from the queue */ protected function get_batch() { global $wpdb; $table = $wpdb->options; $column = 'option_name'; $key_column = 'option_id'; $value_column = 'option_value'; if ( is_multisite() ) { $table = $wpdb->sitemeta; $column = 'meta_key'; $key_column = 'meta_id'; $value_column = 'meta_value'; } $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%'; $query = $wpdb->get_row( $wpdb->prepare( " SELECT * FROM {$table} WHERE {$column} LIKE %s ORDER BY {$key_column} ASC LIMIT 1 ", $key ) ); $batch = new stdClass(); $batch->key = $query->$column; $batch->data = maybe_unserialize( $query->$value_column ); return $batch; } /** * Handle * * Pass each queue item to the task handler, while remaining * within server memory and time limit constraints. */ protected function handle() { $this->lock_process(); do { $batch = $this->get_batch(); foreach ( $batch->data as $key => $value ) { $task = $this->task( $value ); if ( false !== $task ) { $batch->data[ $key ] = $task; } else { unset( $batch->data[ $key ] ); } if ( $this->time_exceeded() || $this->memory_exceeded() ) { // Batch limits reached. break; } } // Update or delete current batch. if ( ! empty( $batch->data ) ) { $this->update( $batch->key, $batch->data ); } else { $this->delete( $batch->key ); } } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() ); $this->unlock_process(); // Start next batch or complete process. if ( ! $this->is_queue_empty() ) { $this->dispatch(); } else { $this->complete(); } wp_die(); } /** * Memory exceeded * * Ensures the batch process never exceeds 90% * of the maximum WordPress memory. * * @return bool */ protected function memory_exceeded() { $memory_limit = $this->get_memory_limit() * 0.9; // 90% of max memory $current_memory = memory_get_usage( true ); $return = false; if ( $current_memory >= $memory_limit ) { $return = true; } return apply_filters( $this->identifier . '_memory_exceeded', $return ); } /** * Get memory limit * * @return int */ protected function get_memory_limit() { if ( function_exists( 'ini_get' ) ) { $memory_limit = ini_get( 'memory_limit' ); } else { // Sensible default. $memory_limit = '128M'; } if ( ! $memory_limit || -1 === intval( $memory_limit ) ) { // Unlimited, set to 32GB. $memory_limit = '32000M'; } return intval( $memory_limit ) * 1024 * 1024; } /** * Time exceeded. * * Ensures the batch never exceeds a sensible time limit. * A timeout limit of 30s is common on shared hosting. * * @return bool */ protected function time_exceeded() { $finish = $this->start_time + apply_filters( $this->identifier . '_default_time_limit', 20 ); // 20 seconds $return = false; if ( time() >= $finish ) { $return = true; } return apply_filters( $this->identifier . '_time_exceeded', $return ); } /** * Complete. * * Override if applicable, but ensure that the below actions are * performed, or, call parent::complete(). */ protected function complete() { // Unschedule the cron healthcheck. $this->clear_scheduled_event(); } /** * Schedule cron healthcheck * * @access public * @param mixed $schedules Schedules. * @return mixed */ public function schedule_cron_healthcheck( $schedules ) { $interval = apply_filters( $this->identifier . '_cron_interval', 5 ); if ( property_exists( $this, 'cron_interval' ) ) { $interval = apply_filters( $this->identifier . '_cron_interval', $this->cron_interval ); } // Adds every 5 minutes to the existing schedules. $schedules[ $this->identifier . '_cron_interval' ] = array( 'interval' => MINUTE_IN_SECONDS * $interval, 'display' => sprintf( __( 'Every %d Minutes', 'astra' ), $interval ), ); return $schedules; } /** * Handle cron healthcheck * * Restart the background process if not already running * and data exists in the queue. */ public function handle_cron_healthcheck() { if ( $this->is_process_running() ) { // Background process already running. exit; } if ( $this->is_queue_empty() ) { // No data to process. $this->clear_scheduled_event(); exit; } $this->handle(); exit; } /** * Schedule event */ protected function schedule_event() { if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) { wp_schedule_event( time(), $this->cron_interval_identifier, $this->cron_hook_identifier ); } } /** * Clear scheduled event */ protected function clear_scheduled_event() { $timestamp = wp_next_scheduled( $this->cron_hook_identifier ); if ( $timestamp ) { wp_unschedule_event( $timestamp, $this->cron_hook_identifier ); } } /** * Cancel Process * * Stop processing queue items, clear cronjob and delete batch. * */ public function cancel_process() { if ( ! $this->is_queue_empty() ) { $batch = $this->get_batch(); $this->delete( $batch->key ); wp_clear_scheduled_hook( $this->cron_hook_identifier ); } } /** * Task * * Override this method to perform any actions required on each * queue item. Return the modified item for further processing * in the next pass through. Or, return false to remove the * item from the queue. * * @param mixed $item Queue item to iterate over. * * @return mixed */ abstract protected function task( $item ); } } elements_icons.less 0000666 00000010013 15213303053 0010435 0 ustar 00 // [class^="icon-wpb"], // [class*=" icon-wpb"] // Icons .vc_element-icon { background-image: url(@vc_elements_icons_sprite); background-position: 0 0; background-repeat: no-repeat; display: block; margin: 0; &:extend(.vc_general.vc_element-icon); } .vc_general { &.vc_element-icon { width: 32px; height: 32px; } } .vc_element-icon[data-is-container="true"] { background-position: 0px -1216px; } .icon-wpb-application-icon-large { background-position: 0 -32px; } .icon-wpb-application-plus { background-position: 0 -64px; } .icon-wpb-balloon-facebook-left { background-position: 0 -96px; } .icon-wpb-balloon-twitter-left { background-position: 0 -128px; } .icon-wpb-film-youtube { background-position: 0 -160px; } .icon-wpb-images-stack { background-position: 0 -192px; } .icon-wpb-information-white { background-position: 0 -224px; } .icon-wpb-layer-shape-text { background-position: 0 -256px; } .icon-wpb-layout_sidebar { background-position: 0 -288px; } .icon-wpb-map-pin { background-position: 0 -320px; } .icon-wpb-slideshow { background-position: 0 -352px; } .icon-wpb-toggle-small-expand { background-position: 0 -384px; } .icon-wpb-ui-accordion, .icon-wpb-ui-accordion[data-is-container="true"] { background-position: 0 -416px; } .icon-wpb-ui-button { background-position: 0 -448px; } .icon-wpb-ui-separator-label { background-position: 0 -480px; } .icon-wpb-ui-separator { background-position: 0 -512px; } .icon-wpb-ui-tab-content, .icon-wpb-ui-tab-content[data-is-container="true"] { background-position: 0 -544px; } .icon-wpb-ui-tab-content-vertical, .icon-wpb-ui-tab-content-vertical[data-is-container="true"] { background-position: 0 -576px; } .icon-wpb-ui-pageable, .icon-wpb-ui-pageable[data-is-container="true"] { background-position: 0 -1696px; } .icon-wpb-pinterest { background-position: 0 -608px; } .icon-wpb-tweetme { background-position: 0 -128px; } .icon-wpb-single-image { background-position: 0 -672px; } .icon-wpb-call-to-action { background-position: 0 -704px; } .icon-wpb-raw-html { background-position: 0 -736px; } .icon-wpb-raw-javascript { background-position: 0 -768px; } .icon-wpb-flickr { background-position: 0 -800px; } .icon-wpb-graph { background-position: 0 -960px; } .icon-wpb-wp { background-position: 0 -992px; } .icon-wpb-vc_pie { background-position: 0 -1024px; } .icon-wpb-images-carousel { background-position: 0 -1056px; } .icon-wpb-vc_carousel { background-position: 0 -1088px; } .icon-wpb-row, .icon-wpb-row[data-is-container="true"] { background-position: 0 -1120px; } .icon-wpb-ui-empty_space { background-position: 0 -1152px; } .icon-wpb-atm { background-position: 0 -640px; } .icon-wpb-ui-custom_heading { background-position: 0 -1184px; } .icon-wpb-woocommerce { background-position: 0 -1248px; } .icon-wpb-ninjaforms { background-position: 0 -1280px; } //shortcode vc_icon @since 4.4 .icon-wpb-vc_icon { background-position: 0 -1312px; } .vc_icon-vc-gitem-post-excerpt { background-position: 0 -1344px; } .vc_icon-vc-gitem-image { background-position: 0 -1376px; } .vc_icon-acf { background-position: 0 -1408px; } .vc_icon-vc-gitem-post-date { background-position: 0 -1440px; } .vc_icon-vc-gitem-post-meta { background-position: 0 -1472px; } .vc_icon-vc-gitem-post-title { background-position: 0 -1504px; } .vc_icon-vc-media-grid { background-position: 0 -1536px; } .vc_icon-vc-masonry-media-grid { background-position: 0 -1568px; } .vc_icon-vc-masonry-grid { background-position: 0 -1600px; } .icon-wpb-vc-round-chart { background-position: 0 -1664px; } .icon-wpb-vc-line-chart { background-position: 0 -1632px; } .icon-wpb-ui-tta-section, .icon-wpb-ui-tta-section[data-is-container="true"] { background-position: 0 -416px; } .vc_icon-vc-gitem-post-author { background-position: 0 -1728px; } .vc_icon-vc-gitem-post-categories { background-position: 0 -1760px; } .vc_icon-vc-section, .vc_icon-vc-section[data-is-container="true"] { background-position: 0 -1792px; } backend_controls.less 0000666 00000015754 15213303053 0010761 0 ustar 00 /* Row Controls ---------------------------------------------------------- */ .vc_controls { .box-sizing(border-box); > div { border-radius: @vc_border_radius; > :first-child { .vc_btn-content { .border-left-radius(@vc_border_radius); } } > :last-child { .vc_btn-content { .border-right-radius(@vc_border_radius); } } } } .vc_column_color, .vc_color-helper { margin-top: 3px; width: 16px; height: 16px; display: inline-block; margin-right: 3px; border-radius: 8px; } .vc_column_image, .vc_image-helper { margin-top: 3px; width: 16px; height: 16px; display: inline-block; margin-right: 3px; background-size: cover; border-radius: 8px; } .vc_icon { width: 16px; height: 16px; display: inline-block; background: transparent url('../vc/controls.png') no-repeat -16px 0px; } .vc_control { cursor: pointer; display: inline-block; border-radius: 2px 2px 0 0; border: 1px solid transparent; padding: 0; text-decoration: none; color: #888888; font-size: 18px; &.column_add, .vc-controls-add { .vc_icon { background-position: -16px -16px; } } &.column_delete, .vc-controls-delete { .vc_icon { background-position: -16px -64px; } } &.column_clone, .vc-controls-clone { .vc_icon { background-position: -16px -48px; } } &.column_edit, .vc-controls-edit { .vc_icon { background-position: -16px -32px; } } &.column_toggle, .vc-controls-toggle { .vc_icon { background-position: -16px -96px; } } // Row drag handler &.column_move, .vc-controls-move { cursor: move; float: left; } &:hover { color: #888888; .vc-composer-icon { .opacity(0.7); } } } .vc_controls-row { text-align: center; line-height: 1px; position: relative; z-index: 1; visibility: visible; // TODO: set as default .opacity(1); // TODO: set as default height: auto; // TODO: set as default &:hover { z-index: 10; } .vc_control { background-color: @vc_row_control_bg; padding: 3px 8px; } .column_add, .vc_control-add-column { float: left; margin-left: 1px; } .vc-c-icon-add, .vc-c-icon-delete_empty, .vc-c-icon-content_copy { position: relative; font-size: 24px; display: inline-block; width: 18px; height: 18px; &::before { position: absolute; top: 50%; left: 50%; .translate(-50%, -50%); } } .vc-c-icon-delete_empty { font-size: 20px; } .vc-c-icon-content_copy { font-size: 18px; } .vc_row_layouts, .vc_control-row-layout { display: block; height: 16px; overflow: hidden; float: left; padding: 3px 0 5px 4px; text-align: left; margin-left: 1px; background: #e6e6e6; border: 1px solid transparent; border-radius: 2px 2px 0 0; .vc_active { display: inline-block; } &:hover { width: auto; height: auto; position: absolute; left: 36px; z-index: 1; a { display: inline-block; &:hover, &.vc_active { background-color: #FBEED5; } } } } .vc_control-set-column { //background-image: url(../vc/row_layouts/1.gif); //background-position: center center; //background-repeat: no-repeat; display: none; border: none; width: 32px; height: 20px; background-color: transparent; cursor: pointer; font-size: 12px; color: #A0A0A0; position: relative; &:active { outline: none; } &.vc_active { background-color: transparent; } .vc-composer-icon { position: absolute; top: 50%; left: 15px; .translate(-50%, -50%); } &.custom_columns { background-image: none; border-bottom: 1px dotted; font-size: 11px; height: auto; line-height: 12px; margin: 0 3px; padding: 4px 0 0 0; width: auto; color: #0073aa; &:hover { color: #00a0d2; } } &.l_12_12 { background-image: url(../vc/row_layouts/12_12.gif); } &.l_23_13 { background-image: url(../vc/row_layouts/23_13.gif); } &.l_13_13_13 { background-image: url(../vc/row_layouts/13_13_13.gif); } &.l_13_23 { background-image: url(../vc/row_layouts/13_23.gif); } &.l_14_14_14_14 { background-image: url(../vc/row_layouts/14_14_14_14.gif); } &.l_23_13 { background-image: url(../vc/row_layouts/23_13.gif); } &.l_14_34 { background-image: url(../vc/row_layouts/14_34.gif); } &.l_14_12_14 { background-image: url(../vc/row_layouts/14_12_14.gif); } &.l_56_16 { background-image: url(../vc/row_layouts/56_16.gif); } &.l_16_46_16 { background-image: url(../vc/row_layouts/14_46_16.gif); } &.l_16_16_16_12 { background-image: url(../vc/row_layouts/16_16_16_12.gif); } &.l_16_16_16_16_16_16 { background-image: url(../vc/row_layouts/16_16_16_16_16_16.gif); } } // Right controls (delete, clone, edit) .vc_row_edit_clone_delete { .vc_control { float: right; background-position: center center; background-repeat: no-repeat; margin-left: 1px; -webkit-box-shadow: none !important; -moz-box-shadow: none !important; box-shadow: none !important; } } .vc_row_color { float: right; margin-top: 3px; width: 16px; height: 16px; display: block; margin-right: 3px; border-radius: 8px; } .vc_row_image { float: right; margin-top: 3px; width: 16px; height: 16px; display: block; margin-right: 3px; background-size: cover; border-radius: 8px; } } .wpb_vc_section { padding-bottom: 30px; > .vc_controls-row { } > .wpb_element_wrapper { padding: 25px 30px 0; margin: 0 -15px; border-top: 1px solid #e6e6e6; } .vc_section-bottom-controls { text-align: center; border-bottom: 1px solid #e6e6e6; padding-bottom: 40px; margin-left: -15px; margin-right: -15px; } } .vc_control-align { .vc_control { display: none; border: 0; margin: 0; &.vc_active { display: block; } } &:hover { position: relative; height: 15px; width: 20px; z-index: 10; .vc_control-wrap { position: absolute; background-color: #e6e6e6; top: -3px; padding: 2px; left: 0; .vc_control { display: block; &.vc_active { background-color: lightyellow; } } } } } .vc_control-align-left { .vc_icon { background-position: -16px -143px; } } .vc_control-align-center { .vc_icon { background-position: -16px -159px; } } .vc_control-align-right { .vc_icon { background-position: -16px -175px; } } .controls_column { &.bottom-controls { .column_edit, .column_delete, .column_clone { display: none; } } } .wpb_content_element { &:hover { > .vc_controls { .vc_controls-visible; } } } frontend_draganddrop.less 0000666 00000003025 15213303053 0011617 0 ustar 00 @import "../modules/vc_helper.less"; @import "../modules/vc_placeholder.less"; // Sorting &.vc_sorting { .wpb_row_section() { .wpb_row { > .vc_element { &:before { content: ''; margin: 0; padding: 0; position: absolute; z-index: 0; top: 0; left: 0; width: 100%; height: 100%; outline: 1px dashed @vc_element_hover_border; outline: 1px dashed @vc_element_hover_border_rgba; } &:after { clear: both; } } } .vc_section:not(.vc_empty-element) { &:before { content: ''; margin: 0; padding: 0; position: absolute; z-index: 0; top: 0; left: 0; width: calc(~"100% + 30px"); margin-left: -15px; margin-right: -15px; height: 100%; outline: 1px dashed @vc_element_hover_border; outline: 1px dashed @vc_element_hover_border_rgba; } &:after { clear: both; } } .vc_section { &:before { content: ''; margin: 0; padding: 0; position: absolute; z-index: 0; top: 0; left: 0; width: 100%; height: 100%; outline: 1px dashed @vc_element_hover_border; outline: 1px dashed @vc_element_hover_border_rgba; } &:after { clear: both; } } } .wpb_row_section(); .vc_controls { visibility: hidden !important; .opacity(0); } } vc_font.less 0000666 00000004672 15213303053 0007102 0 ustar 00 @font-face { font-family: @vc_arrows_font; src: url('@{vc_arrows_path_eot}?-9hbgac'); src: url('@{vc_arrows_path_eot}?#iefix-9hbgac') format('embedded-opentype'), url('@{vc_arrows_path_woff}?-9hbgac') format('woff'), url('@{vc_arrows_path_ttf}?-9hbgac') format('truetype'), url('@{vc_arrows_path_svg}?-9hbgac#@{vc_arrows_font}') format('svg'); font-weight: normal; font-style: normal; } [class^="vc_arrow-icon-"], [class*=" vc_arrow-icon-"] { font-family: @vc_arrows_font; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .vc_arrow-icon-minus:before { content: "\e61c"; } .vc_arrow-icon-plus:before { content: "\e61d"; } .vc_arrow-icon-arrow_down:before { content: "\e61e"; } .vc_arrow-icon-arrow_up:before { content: "\e61f"; } .vc_arrow-icon-arrow_01_left:before { content: "\e600"; } .vc_arrow-icon-arrow_01_right:before { content: "\e601"; } .vc_arrow-icon-arrow_02_left:before { content: "\e602"; } .vc_arrow-icon-arrow_02_right:before { content: "\e603"; } .vc_arrow-icon-arrow_03_left:before { content: "\e604"; } .vc_arrow-icon-arrow_03_right:before { content: "\e605"; } .vc_arrow-icon-arrow_04_left:before { content: "\e606"; } .vc_arrow-icon-arrow_04_right:before { content: "\e607"; } .vc_arrow-icon-arrow_05_left:before { content: "\e608"; } .vc_arrow-icon-arrow_05_right:before { content: "\e609"; } .vc_arrow-icon-arrow_06_left:before { content: "\e60a"; } .vc_arrow-icon-arrow_06_right:before { content: "\e60b"; } .vc_arrow-icon-arrow_07_left:before { content: "\e60c"; } .vc_arrow-icon-arrow_07_right:before { content: "\e60d"; } .vc_arrow-icon-arrow_08_left:before { content: "\e60e"; } .vc_arrow-icon-arrow_08_right:before { content: "\e60f"; } .vc_arrow-icon-arrow_09_left:before { content: "\e610"; } .vc_arrow-icon-arrow_09_right:before { content: "\e611"; } .vc_arrow-icon-arrow_10_left:before { content: "\e612"; } .vc_arrow-icon-arrow_10_right:before { content: "\e613"; } .vc_arrow-icon-arrow_11_left:before { content: "\e614"; } .vc_arrow-icon-arrow_11_right:before { content: "\e615"; } .vc_arrow-icon-arrow_12_left:before { content: "\e616"; } .vc_arrow-icon-arrow_12_right:before { content: "\e617"; } .vc_arrow-icon-navicon:before { content: "\f0c9"; } panel_preview.less 0000666 00000003366 15213303053 0010303 0 ustar 00 // Preview template behaviour @grid-preview-max-width: 400px; .vc_ui-template-preview { .vc_welcome { display: none; } .wpb_vc_tta_tabs, .wpb_vc_tta_pageable, .wpb_vc_tta_tour, .wpb_vc_tta_accordion, .wpb_vc_tta_section .vc_tta-panel-body { .vc_controls { display: none; } } .postbox { border-color: transparent; margin-bottom: 0; box-shadow: none; } .vc_ui-templates-preview-design-helper { position: relative; height: auto; .vc_row_color, .vc_row_image { float: right; margin-top: 3px; width: 16px; height: 16px; display: block; margin-right: 3px; border-radius: 8px; background-size: cover; } } .wpb_vc_column_inner > .vc_controls:last-child { display: none; } // Fix for grid row .vc_gitem-content { > .vc_row { display: flex; flex-flow: row nowrap; justify-content: center; align-items: flex-start; align-content: flex-start; &::before, &::after { width: 0; } .vc_gitem-add-c-left, .vc_gitem-add-c-right, .vc_gitem-add-c-top, .vc_gitem-add-c-bottom { &:empty { display: none; } } .vc_gitem-ab-zone, .vc_gitem-add-c-left, .vc_gitem-add-c-right, .vc_gitem-add-c-top, .vc_gitem-add-c-bottom { width: 50%; max-width: @grid-preview-max-width; } .vc_gitem-add-c-top, .vc_gitem-add-c-bottom { margin-left: 0; } } } } .vc_general-template-preview { height: auto; #wpbody-content { padding-bottom: 0; } #wpbody { padding: 0; } // don't show wp update message in preview #update-nag, .update-nag { display: none; } } controls.less 0000666 00000027032 15213303053 0007302 0 ustar 00 // Controls .vc_controls { font-family: "Open Sans", Helvetica, sans-serif; height: 0; display: block; .opacity(0); visibility: hidden; > div { position: absolute; white-space: nowrap; font-size: 0 !important; //remove bottom extra space from display: inline-block > .vc_parent { display: inline-block; } > .vc_element { margin-left: 1px; display: inline-block; } } //Controls positions > .vc_controls- { &tl { //top left top: 0; left: 0; z-index: 1002; } &tc { //top center top: 0; left: 50%; .translate(-50%, 0); z-index: 1002; } &tr { //top right top: 0; right: 0; direction: rtl; z-index: 1002; } &bl { //bottom left bottom: 0; left: 0; height: auto; z-index: 1002; } &bc { //bottom center bottom: 0; left: 50%; .translate(-50%, 0); z-index: 1; } &br { //bottom right bottom: 0; right: 0; direction: rtl; z-index: 1002; } &cc { //vertical middle z-index: 1002; top: 50%; left: 50%; background-color: @vc_controls_background; border: 0px solid transparent; .translate(-50%, -50%); .border-top-radius(@vc_border_radius); .border-bottom-radius(@vc_border_radius); > :first-child { .vc_btn-content { .border-left-radius(@vc_border_radius); } } > :last-child { .vc_btn-content { .border-right-radius(@vc_border_radius); } } } &out-tc { left: 50%; top: -30px; direction: rtl; .translate(-50%, 0); } &out-l { //out left left: 0px; top: 1px; direction: rtl; } &out-tl { //out left z-index: 1002; left: -1px; top: -30px; > .vc_element { > :first-child { .vc_btn-content { .border-left-radius(@vc_border_radius); } } } } &out-tr { //out left z-index: 1003; right: -1px; top: -30px; } &out-r { //out right right: -1px; top: 1px; } &out-l, &out-r { width: 0; height: 0; } } } // Section controls .vc_vc_section { .vc_section.vc_section-has-fill { padding-top: 62px; } .vc_section-has-fill ~ .vc_controls-container > .vc_controls-out-tl { top: 1px !important; } > .vc_controls { > .vc_controls-out-tl { left: -17px; top: -61px; } } &.vc_empty { > .vc_controls { > .vc_controls-out-tl { top: -29px; } } } > [data-vc-full-width="true"] { ~ .vc_controls { > .vc_controls-out-tl { top: -29px; } } > .vc_vc_row { padding-left: 15px; padding-right: 15px; } } > .vc_parallax { ~ .vc_controls { > .vc_controls-out-tl { top: -29px; } } } } // Single Control button .vc_control-btn { display: inline-block; position: relative; vertical-align: middle !important; border: none !important; -webkit-box-shadow: none !important; -moz-box-shadow: none !important; box-shadow: none !important; .icon, .vc_icon { display: inline-block !important; background-image: url(@vc_pe_controls_sprite); background-repeat: no-repeat; width: 16px; height: 16px; } .vc_btn-content { &:hover { background-color: @vc_control_hover_color; } } .vc-composer-icon { display: inline-block; width: 16px; height: 16px; font-size: 18px; color: #F2F2F2; position: relative; &::before { position: absolute; left: 50%; top: 50%; .translate(-50%, -50%); } } .vc-c-icon-delete_empty { font-size: 20px; } .vc-c-icon-add{ font-size: 24px; } } .vc_controls-dark { .vc_control-btn { .vc-composer-icon { color: #868686; } } } .vc_btn-content { .transition(background-color 0.5s); background-color: transparent; display: inline-block !important; padding: 7px; cursor: pointer !important; line-height: 1px !important; font-size: 1px !important; vertical-align: middle !important; } .vc_element-name { .vc_btn-content { text-decoration: none !important; width: auto !important; font-size: 9px !important; color: #FFFFFF !important; line-height: 16px !important; padding: 7px 12px !important; cursor: auto !important; &:hover { text-decoration: none !important; } } } .vc_element-move, .vc_child-element-move { .vc_btn-content { cursor: move !important; padding-left: 30px !important; &:hover { background-color: @vc_control_hover_color; } } .vc-c-icon-dragndrop { position: absolute; top: 50%; left: 15px; .translate(-50%, -50%); } } // Control icons variations .vc_control-btn-append { position: relative; top: 19px; &:before { position: relative; left: 7px; content: ""; display: block; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-bottom: 4px solid @vc_controls_bottom_append_border_bottom; .transition(border-color 0.5s); } &:hover { &:before { border-bottom-color: @vc_controls_bottom_append_border_bottom_hover; } } &.vc_control-parent:before { border-bottom-color: @vc_controls_parent_border; } &.vc_control-parent:hover { &:before { border-bottom-color: @vc_controls_parent_border_hover; } } .vc_btn-content { -webkit-border-radius: @vc_border_radius; -moz-border-radius: @vc_border_radius; border-radius: @vc_border_radius; padding: 3px; } } .vc_control-btn-switcher { overflow-x: hidden; width: 24px; .transition(width 0.5s); display: inline-block; &-disable-switcher { display: none !important; } .vc-composer-icon { width: 10px; } } .vc_control-btn-move { background-position: 0 0; } // Container-container switcher .vc_control-btn-layout { position: relative; } .vc_controls-row, .vc_controls-column, .vc_controls-container { > div { .vc_btn-content { background-color: @vc_controls_child_background; border-color: @vc_controls_child_border; } .vc_control-btn { .vc_btn-content { &:hover { background-color: @vc_controls_child_background_hover; border-color: @vc_controls_child_border_hover; } } } .vc_control-parent { .vc_btn-content { background-color: @vc_controls_parent_background; border-color: @vc_controls_parent_border; } &.vc_control-btn { .vc_btn-content { &:hover { background-color: @vc_controls_parent_background_hover; border-color: @vc_controls_parent_border_hover; } } } } .vc_advanced { overflow: hidden; height: 30px; width: 0; display: inline-block; vertical-align: middle; .transition(width 0.5s); } > .vc_element { display: inline-block; :last-child { .vc_btn-content { .border-right-radius(@vc_border_radius); } } .vc_control-btn-switcher { .vc_btn-content { .border-right-radius(@vc_border_radius); } } } > .vc_parent { display: inline-block; .vc_btn-content { background-color: @vc_controls_parent_background; border-color: @vc_controls_parent_border; } .vc_control-btn { .vc_btn-content { background-color: @vc_controls_parent_background; border-color: @vc_controls_parent_border; &:hover { background-color: @vc_controls_parent_background_hover; border-color: @vc_controls_parent_border_hover; } } } > :first-child { .vc_btn-content { .border-left-radius(@vc_border_radius); } } } > .element-vc_section { .vc_btn-content { background-color: @vc_controls_parent_background; border-color: @vc_controls_parent_border; } .vc_control-btn { .vc_btn-content { background-color: @vc_controls_parent_background; border-color: @vc_controls_parent_border; &:hover { background-color: @vc_controls_parent_background_hover; border-color: @vc_controls_parent_border_hover; } } } } > .vc_active { .vc_control-btn { display: inline-block; } .vc_control-btn-switcher { width: 0; } &.vc_parent, &.vc_element { .vc_advanced { width: 120px; } } &.parent-vc_row, &.parent-vc_row_inner { .vc_advanced { width: 150px; } } &.element-vc_column, &.element-vc_column_inner { .vc_advanced { width: 90px; } } &.element-vc_tab { &.vc_element-name { .vc_btn-content { background-image: none; padding-right: 6px; } } } } } } .vc_element-container { > div.vc_container:first-of-type { margin-top: 31px; } } /** Layout switcher for complex container-container controler **/ .vc_layout-switcher { background: #94B9C6; display: block; height: auto; width: 100px; padding: 2px; position: absolute; top: 30px; white-space: normal; direction: ltr; // Animation settings .opacity(0); visibility: hidden; .transition(opacity 0.5s ease-out); &:hover { .vc_layout-switcher { .opacity(1); visibility: visible; } } .vc_layout-btn { display: inline-block; background-position: center center; background-repeat: no-repeat; width: 30px; height: 23px; background-color: white; margin: 1px; } .vc_custom-layout-btn { background-color: transparent; display: block; width: auto; height: auto; margin: 4px 0 3px; font-size: 11px; text-align: center; } .l_1 { background-image: url(../vc/row_layouts/1.gif); } .l_12_12 { background-image: url(../vc/row_layouts/12_12.gif); } .l_23_13 { background-image: url(../vc/row_layouts/23_13.gif); } .l_13_13_13 { background-image: url(../vc/row_layouts/13_13_13.gif); } .l_13_23 { background-image: url(../vc/row_layouts/13_23.gif); } .l_14_14_14_14 { background-image: url(../vc/row_layouts/14_14_14_14.gif); } .l_14_34 { background-image: url(../vc/row_layouts/14_34.gif); } .l_14_12_14 { background-image: url(../vc/row_layouts/14_12_14.gif); } .l_56_16 { background-image: url(../vc/row_layouts/56_16.gif); } .l_16_46_16 { background-image: url(../vc/row_layouts/14_46_16.gif); } .l_16_16_16_12 { background-image: url(../vc/row_layouts/16_16_16_12.gif); } .l_16_16_16_16_16_16 { background-image: url(../vc/row_layouts/16_16_16_16_16_16.gif); } } .vc_controls-visible { .opacity(1) !important; visibility: visible; } .vc_control-container { background: @vc_controls_child_background; border-color: @vc_controls_child_border; .vc_control-btn { .vc_btn-content { &:hover { background-color: @vc_controls_child_background_hover; } } } } .vc_controls-content-widget { background: @vc_controls_parent_background; border-color: @vc_controls_parent_border; top: -17px !important; direction: ltr !important; .vc_btn-content { &:hover { background-color: @vc_controls_parent_background_hover; } } } frontend_editor_controls.less 0000666 00000010741 15213303053 0012546 0 ustar 00 @vc_controls-padding: 32px; .vc_vc_tabs, .vc_vc_accordion, .vc_vc_tour, .vc_vc_row_inner { margin-top: 0 !important; } .vc_col-sm-1, .vc_col-sm-2, .vc_col-sm-3, .vc_col-sm-4 { .controls- { &out-tr { //out left z-index: 1003; left: -1px; top: -30px; } } .vc_vc_tabs { padding-top: 30px; .controls- { &out-tr { top: -64px; } } } .vc_vc_tour, .vc_vc_accordion { padding-top: 30px; } } // Custom elements css .vc_vc_row_inner, .vc_vc_row > .vc_parallax, .vc_vc_section > .vc_parallax { padding-top: @vc_controls-padding; } .vc_vc_row_inner, .vc_vc_row > [data-vc-full-width="true"], .vc_vc_section > [data-vc-full-width="true"] { padding-top: @vc_controls-padding; } .vc_vc_raw_js { .wpb_wrapper { height: 50px; background: transparent url(../vc/fe/js_icon.png) center center no-repeat; } } .vc_vc_tab { .vc_content & { .vc_clearfix(); } > .vc_controls { .vc_control-btn-append { display: none; } } } .vc_vc_video { padding-top: 32px; .vc_controls-element { .vc_controls-cc { top: 16px; } } } .vc_vc_column_text { min-height: 32px; } .vc_social-placeholder { display: block; } .vc_vc_facebook { .fb_type_box_count { height: auto; } .vc_social-placeholder { height: 32px; background: transparent url(../vc/fe/social/fb/standart.png) left center no-repeat; &.vc_socialtype-button_count { background-image: url(../vc/fe/social/fb/button_count.png); } &.vc_socialtype-box_count { background-image: url(../vc/fe/social/fb/box_count.png); height: 71px; } } } .vc_vc_tweetmeme { .vc_social-placeholder { height: 32px; background: transparent url(../vc/fe/social/tw/none.png) left center no-repeat; } } .vc_vc_pinterest { .vc_social-placeholder { height: 32px; background: transparent url(../vc/fe/social/pinterest/horizontal.png) left center no-repeat; &.vc_socialtype-vertical { background-image: url(../vc/fe/social/pinterest/vertical.png); height: 71px; } &.vc_socialtype-none { background-image: url(../vc/fe/social/pinterest/none.png); } } } .vc_vc_googleplus { .vc_social-placeholder { height: 32px; background: transparent url(../vc/fe/social/gp/standard_desc.png) left center no-repeat; &.vc_annotation-none { background-image: url(../vc/fe/social/gp/standard.png); } &.vc_annotation-bubble { background-image: url(../vc/fe/social/gp/standard_bubble.png); } &.vc_socialtype-small { background-image: url(../vc/fe/social/gp/small_desc.png); &.vc_annotation-none { background-image: url(../vc/fe/social/gp/small.png); } &.vc_annotation-bubble { background-image: url(../vc/fe/social/gp/small_bubble.png); } } &.vc_socialtype-medium { background-image: url(../vc/fe/social/gp/medium_desc.png); &.vc_annotation-none { background-image: url(../vc/fe/social/gp/medium.png); } &.vc_annotation-bubble { background-image: url(../vc/fe/social/gp/medium_bubble.png); } } &.vc_socialtype-tall { background-image: url(../vc/fe/social/gp/tall_desc.png); &.vc_annotation-none { background-image: url(../vc/fe/social/gp/tall.png); } &.vc_annotation-bubble { background-image: url(../vc/fe/social/gp/tall_bubble.png); height: 60px; } } } } .vc_vc_accordion_tab { .wpb_content_element { .wpb_accordion_wrapper { .wpb_accordion_content { padding: 1em 1em 1.5em; } } } &.vc_container-block.vc_empty.vc_active-accordion-tab .vc_controls-bc { visibility: hidden; } &.vc_container-block.vc_active-accordion-tab .vc_controls-bc { visibility: visible; } &.vc_container-block .vc_controls-bc { visibility: hidden; z-index: 90; } > .vc_controls { .control-btn-append { display: none; } } } .wpb_column { > .wpb_wrapper { > div.vc_vc_toggle + div:not(.vc_vc_toggle) { margin-top: @vc_element_margin_bottom; } } } .vc_vc_widget_sidebar, .vc_templatera { min-height: 32px; } .wpb_content_element .wpb_tabs_nav { z-index: 1001; position: relative; } .vc_empty-shortcode-element { min-height: 32px; } .vc_vc_tta_accordion { > .vc_controls > .vc_controls-bl { .vc_control-btn-append { left: 15px; top: 24px; } } } .vc_vc_tta_section { > .vc_controls > .vc_controls-bl { z-index: 1; } } editor.less 0000666 00000001467 15213303053 0006731 0 ustar 00 @import "../config/variables.less"; @import "responsive-utilities.less"; @import "grid.less"; @import "../modules/vc_buttons.less"; @import "../modules/vc_modals.less"; @import "../modules/vc_panels.less"; @import "../modules/vc_messages.less"; @import "../modules/vc_preloader.less"; @import "utils.less"; @import "../modules/vc_table.less"; @import "../modules/ui/vc_ui-loaders.less"; @import "media-gallery.less"; @import "../../fonts/vc_icons/init.less"; .vc_badge { .badge(); } .vc_nav { .nav(); } .vc_inappropriate { display: none !important; } .vc_off { .opacity(.7); } @import "vc_pointer.less"; @import "../modules/ui/vc_ui-panel/vc_ui-panel.less"; @import "../modules/ui/vc_ui-panel-edit-element.less"; @import "../modules/ui/vc_ui-panel-row-layout.less"; // REMOVE @import "resizable_modal.less"; vc_pointer.less 0000666 00000000721 15213303053 0007603 0 ustar 00 .vc_controls.vc-with-vc-pointer-controls { filter: alpha(opacity=1); opacity: 1; visibility: visible; } .wp-pointer { p { font-size: 13px; line-height: 1.5; margin: 1em 0; } .vc_pointer-close.close { cursor: pointer; line-height: 18px !important; font-size: 13px !important; .opacity(1) !important; color: #0074a2 !important; font-weight: normal !important; &:hover { color: #2ea2cc !important; } } } resizable_modal.less 0000666 00000002555 15213303053 0010576 0 ustar 00 @ui-resizable-handle-size: 9px; @ui-resizable-handle-corner-size: @ui-resizable-handle-size * 1.7; .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; //background: rgba(255, 255, 0, .5); } .ui-resizable-e { cursor: e-resize; width: @ui-resizable-handle-size; right: 0; top: 0; bottom: 0; } .ui-resizable-w { cursor: w-resize; width: @ui-resizable-handle-size; left: 0; top: 0; bottom: 0; } .ui-resizable-s { cursor: s-resize; height: @ui-resizable-handle-size; left: 0; right: 0; bottom: 0; } .ui-resizable-n { cursor: n-resize; height: @ui-resizable-handle-size; left: 0; right: 0; top: 0; } .ui-resizable-se { cursor: se-resize; width: @ui-resizable-handle-corner-size; height: @ui-resizable-handle-corner-size; right: -2px; bottom: -2px; transform: translate(10%, 10%); } .ui-resizable-sw { cursor: sw-resize; width: @ui-resizable-handle-corner-size; height: @ui-resizable-handle-corner-size; left: -2px; bottom: -2px; } .ui-resizable-ne { cursor: ne-resize; width: @ui-resizable-handle-corner-size; height: @ui-resizable-handle-corner-size; right: -2px; top: -2px; } .ui-resizable-nw { cursor: nw-resize; width: @ui-resizable-handle-corner-size; height: @ui-resizable-handle-corner-size; left: -2px; top: -2px; } pixel_icons.less 0000666 00000006336 15213303053 0007757 0 ustar 00 /* Pixel Icons */ .vc_pixel_icon { display: inline-block; vertical-align: middle; height: 16px; width: 16px; background-position: 0 0; background-repeat: no-repeat; } .vc_pixel_icon-alert { background-image: url(../vc/alert.png); } .vc_pixel_icon-info { background-image: url(../vc/info.png); } .vc_pixel_icon-tick { background-image: url(../vc/tick.png); } .vc_pixel_icon-explanation { background-image: url(../vc/exclamation.png); } .vc_pixel_icon-address_book { background-image: url(../images/icons/address-book.png); } .vc_pixel_icon-alarm_clock { background-image: url(../images/icons/alarm-clock.png); } .vc_pixel_icon-anchor { background-image: url(../images/icons/anchor.png); } .vc_pixel_icon-application_image { background-image: url(../images/icons/application-image.png); } .vc_pixel_icon-arrow { background-image: url(../images/icons/arrow.png); } .vc_pixel_icon-asterisk { background-image: url(../images/icons/asterisk.png); } .vc_pixel_icon-hammer { background-image: url(../images/icons/auction-hammer.png); } .vc_pixel_icon-balloon { background-image: url(../images/icons/balloon.png); } .vc_pixel_icon-balloon_buzz { background-image: url(../images/icons/balloon-buzz.png); } .vc_pixel_icon-balloon_facebook { background-image: url(../images/icons/balloon-facebook.png); } .vc_pixel_icon-balloon_twitter { background-image: url(../images/icons/balloon-twitter.png); } .vc_pixel_icon-battery { background-image: url(../images/icons/battery-full.png); } .vc_pixel_icon-binocular { background-image: url(../images/icons/binocular.png); } .vc_pixel_icon-document_excel { background-image: url(../images/icons/blue-document-excel.png); } .vc_pixel_icon-document_image { background-image: url(../images/icons/blue-document-image.png); } .vc_pixel_icon-document_music { background-image: url(../images/icons/blue-document-music.png); } .vc_pixel_icon-document_office { background-image: url(../images/icons/blue-document-office.png); } .vc_pixel_icon-document_pdf { background-image: url(../images/icons/blue-document-pdf.png); } .vc_pixel_icon-document_powerpoint { background-image: url(../images/icons/blue-document-powerpoint.png); } .vc_pixel_icon-document_word { background-image: url(../images/icons/blue-document-word.png); } .vc_pixel_icon-bookmark { background-image: url(../images/icons/bookmark.png); } .vc_pixel_icon-camcorder { background-image: url(../images/icons/camcorder.png); } .vc_pixel_icon-camera { background-image: url(../images/icons/camera.png); } .vc_pixel_icon-chart { background-image: url(../images/icons/chart.png); } .vc_pixel_icon-chart_pie { background-image: url(../images/icons/chart-pie.png); } .vc_pixel_icon-clock { background-image: url(../images/icons/clock.png); } .vc_pixel_icon-play { background-image: url(../images/icons/control.png); } .vc_pixel_icon-fire { background-image: url(../images/icons/fire.png); } .vc_pixel_icon-heart { background-image: url(../images/icons/heart.png); } .vc_pixel_icon-mail { background-image: url(../images/icons/mail.png); } .vc_pixel_icon-shield { background-image: url(../images/icons/plus-shield.png); } .vc_pixel_icon-video { background-image: url(../images/icons/video.png); } utils.less 0000666 00000001100 15213303053 0006563 0 ustar 00 .vc_pull-right { .pull-right(); } .vc_pull-left { .pull-left(); } .vc_clearfix { .clearfix(); } .vc_el-clearfix { clear: both; } .vc_el-clearfix-xs { @media (max-width: @screen-xs-max) { clear: both; } } .vc_el-clearfix-sm { @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { clear: both; } } .vc_el-clearfix-md { @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { clear: both; } } .vc_el-clearfix-lg { @media (min-width: @screen-lg-min) { clear: both; } } .vc_visible { display: block; } front.less 0000666 00000006772 15213303053 0006577 0 ustar 00 @import "responsive-utilities.less"; @import "grid.less"; @import "utils.less"; @import "../modules/vc_table.less"; // pixel icons @import "pixel_icons.less"; @import "../../fonts/vc_icons/init.less"; //Helper classes .vc_txt_align_ { &left { text-align: left; } &right { text-align: right; } ¢er { text-align: center; } &justify { text-align: justify; text-justify: inter-word; } } // Mixin for genereate .vc_el_width_X class .vc_el_width( @size ) { &.vc_el_width_@{size} { @percent_size: ~"@{size}%"; // string concatenation with number + % width: @percent_size; margin-left: auto !important; margin-right: auto !important; } } // Loop to call .vc_el_width mixin .generate_width(@start, @max: 100, @step: 10) when ( @start <= @max) { .vc_el_width(@start); .generate_width((@start+@step), @max, @step); // next iteration, will automatically break if @start+@step <= @max } // Generate classes in loop from 50 to 100, vc_el_width_50, .. vc_el_width_100. .generate_width(50, 100, 10); @import (once) "../modules/vc_buttons.less"; .vc_column_container { .vc_btn, .wpb_button { margin-top: 5px; margin-bottom: 5px; } } /* 2. Alerts (Message boxes) ---------------------------------------------------------- */ @import "../shortcodes/vc_message_box/vc_message_box_front.less"; /* 4. Separators ---------------------------------------------------------- */ /***************** OLD CSS *****************/ /* Content elements margins ---------------------------------------------------------- */ .wpb_alert p:last-child, #content .wpb_alert p:last-child, /* for twenty ten theme */ .wpb_text_column p:last-child, .wpb_text_column *:last-child, #content .wpb_text_column p:last-child, /* for twenty ten theme */ #content .wpb_text_column *:last-child /* for twenty ten theme */ { margin-bottom: 0; } .wpb_content_element, ul.wpb_thumbnails-fluid > li, .wpb_button { margin-bottom: @vc_element_margin_bottom; } .fb_like, .twitter-share-button, .entry-content .twitter-share-button, .wpb_googleplus, .wpb_pinterest, .wpb_tab .wpb_content_element, .wpb_accordion .wpb_content_element { margin-bottom: @vc_margin_bottom_gold; } @import "../lib/parallax.less"; @import "../shortcodes/vc_row.less"; @import "../shortcodes/vc_section.less"; @import "../shortcodes/frontend_vc_row.less"; @import "../shortcodes/vc_social_btns.less"; @import "../shortcodes/vc_toggle.less"; @import "../shortcodes/vc_widgetised_column.less"; @import "../shortcodes/vc_button.less"; @import "../shortcodes/vc_button3.less"; @import "../shortcodes/vc_custom_heading.less"; @import "../shortcodes/vc_call_to_action.less"; @import "../shortcodes/vc_call_to_action3.less"; @import "../shortcodes/vc_google_maps.less"; @import "../shortcodes/vc_tabs_tour_accordion.less"; @import "../shortcodes/vc_teaser_grid.less"; @import "../shortcodes/vc_image_gallery.less"; @import "../shortcodes/vc_flickr.less"; @import "../shortcodes/vc_video_widget.less"; @import "../shortcodes/vc_post_slider.less"; @import "../shortcodes/vc_progress_bar.less"; @import "../shortcodes/vc_pie.less"; @import "../shortcodes/vc_carousel.less"; @import "../shortcodes/vc_separator.less"; @import "../shortcodes/vc_single_image.less"; @import "../shortcodes/vc_icon_element.less"; @import "../shortcodes/vc_charts.less"; @import "../shortcodes/vc_zoom.less"; @import "../shortcodes/vc_pagination.less"; @import "../shortcodes/vc_basic_grid/vc_grid.less"; @import "vc_font.less"; @import "css3_animations.less"; @import "../vendor/woocommerce.less"; responsive-utilities.less 0000666 00000000666 15213303053 0011651 0 ustar 00 .vc_hidden-xs { @media (max-width: @screen-xs-max) { .responsive-invisibility(); } } .vc_hidden-sm { @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { .responsive-invisibility(); } } .vc_hidden-md { @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { .responsive-invisibility(); } } .vc_hidden-lg { @media (min-width: @screen-lg-min) { .responsive-invisibility(); } } bootstrap-components.less 0000666 00000000310 15213303053 0011625 0 ustar 00 @import (reference) "../../lib/bower/bootstrap3/less/component-animations.less"; .vc_general { &.fade { .fade(); } &.collapse { .collapse(); } &.collapsing { .collapsing() } } frontend_vc_elements.less 0000666 00000007654 15213303053 0011652 0 ustar 00 /** .vc_element html item wraps shortcodes output html. */ .vc_element { display: block; position: relative; > .vc_row.vc_row-no-padding { > .vc_column_container { padding-left: 0; padding-right: 0; } } &.vc_empty { .vc_empty-element { min-height: 100px; cursor: pointer; position: relative; &:hover { &:after { background-position: bottom center; } } > .vc_element-container { min-height: 100px; } } } &.vc_empty:not(.vc_sorting-over) { .vc_empty-element { &:after { font-family: 'VC-Icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; content: "\e145"; color: #fff; font-size: 28px; top: 0; left: 0; right: 0; bottom: 0; margin: auto; z-index: 0; height: 38px; width: 38px; line-height: 38px; text-align: center; position: absolute; background-color: #C9C9C9; border-radius: 5px; } } > .vc_controls { .control-btn-append { display: none; } } } &.vc_sorting-over { background-image: none; } &.bring-to-front { z-index: 100000; } &.vc_active:not(.vc_tta-panel), &.vc_hold-active { > .vc_controls { visibility: visible; .opacity(0.7); } } &:hover, &.vc_hover, &.vc_hold-hover { > .vc_controls { visibility: visible; .opacity(1); } .wpb_row() { > .wpb_row { > .vc_element { &:before { content: ''; margin: 0; padding: 0; position: absolute; z-index: 0; top: 0; left: 0; width: 100%; height: 100%; outline: 1px dashed @vc_element_hover_border; outline: 1px dashed @vc_element_hover_border_rgba; } &:after { clear: both; } } } } .wpb_row(); > .vc_section { &:before { content: ''; display: block; margin: 0; padding: 0; position: absolute; z-index: 0; top: 0; left: -15px; right: -15px; height: 100%; outline: 1px dashed @vc_element_hover_border; outline: 1px dashed @vc_element_hover_border_rgba; } &:after { clear: both; } } } &.vc_empty { &:hover, &.vc_hover, &.vc_hold-hover { > .vc_section { &:before { left: 0; right: 0; } } } } // Element must have min height enough to show placeholder on sorting. .vc_element-container { min-height: @vc_elemnet_container_min_height; } .wpb_accordion_wrapper > :last-child .wpb_accordion_content { margin-bottom: 30px; &.vc_empty-element { margin-bottom: 0px; } } &.vc_vc_separator:last-child { padding-bottom: 10px; padding-top: 10px; } &.vc_vc_separator:first-child { padding-bottom: 10px; padding-top: 10px; } &.vc_vc_gallery:last-child { padding-bottom: 15px; } &.vc_vc_row { > .vc_row { > .vc_vc_column { > .wpb_column { > .vc_element-container { > .vc_vc_row_inner { .vc_vc_column_inner { margin-bottom: 30px; } } } } } } } } .vc_element { .vc_element-container { &.vc_section { &.vc_row-o-full-height { min-height: 100vh; } } } } .wpb_column { > .wpb_wrapper > .vc_element:last-child > .wpb_content_element, > .wpb_wrapper > .vc_element:last-child > .wpb_row { margin-bottom: 0; //remove margin bottom from last content elements in columns } } backend_draganddrop.less 0000666 00000000601 15213303053 0011364 0 ustar 00 .widgets-placeholder { margin-top: 0px; margin-bottom: 15px; } .widgets-placeholder-column { float: left; } .widgets-placeholder, .widgets-placeholder-column, .widgets-placeholder-gallery { background-image: url(../vc/pattern.gif); height: 50px; } .vc_sorting-empty-container { .vc-empty; } @import "../modules/vc_helper.less"; @import "../modules/vc_placeholder.less"; parallax.less 0000666 00000001422 15213303053 0007236 0 ustar 00 /** * Parallax */ .vc_parallax { position: relative; overflow: hidden; > * { position: relative; z-index: 1; } .vc_parallax-inner { pointer-events: none; // disables video clickability position: absolute; left: 0; right: 0; top: 0; background-attachment: scroll; background-color: transparent; background-image: inherit; background-size: cover; z-index: 0; background-position: 50% 0%; } } .vc_parallax-inner { iframe { max-width: 1000%; } } .vc_video-bg-container { position: relative; } .vc_video-bg { height: 100%; overflow: hidden; pointer-events: none; // disables video clickability position: absolute; top: 0; left: 0; width: 100%; z-index: 0; iframe { max-width: 1000%; } } css3_animations.less 0000666 00000007614 15213303053 0010540 0 ustar 00 /* CSS Animations */ .wpb_animate_when_almost_visible { .opacity(0); } .wpb_animate_when_almost_visible:not(.wpb_start_animation) { .animation(none) } .wpb_top-to-bottom, .top-to-bottom { .animation(wpb_ttb 0.7s 1 cubic-bezier(0.175, 0.885, 0.320, 1.275)); } .wpb_bottom-to-top, .bottom-to-top { .animation(wpb_btt 0.7s 1 cubic-bezier(0.175, 0.885, 0.320, 1.275)); } .wpb_left-to-right, .left-to-right { .animation(wpb_ltr 0.7s 1 cubic-bezier(0.175, 0.885, 0.320, 1.275)); } .wpb_right-to-left, .right-to-left { .animation(wpb_rtl 0.7s 1 cubic-bezier(0.175, 0.885, 0.320, 1.275)); } .wpb_appear, .appear { .animation(wpb_appear 0.7s 1 cubic-bezier(0.175, 0.885, 0.320, 1.275)); .scale(1); } .wpb_start_animation { .opacity(1); } /* Top to bottom keyframes */ @-webkit-keyframes wpb_ttb { 0% { -webkit-transform: translate(0, -10%); .opacity(0); } 100% { -webkit-transform: translate(0, 0); .opacity(1); } } @-moz-keyframes wpb_ttb { 0% { -moz-transform: translate(0, -10%); .opacity(0); } 100% { -moz-transform: translate(0, 0); .opacity(1); } } @-o-keyframes wpb_ttb { 0% { -o-transform: translate(0, -10%); .opacity(0); } 100% { -o-transform: translate(0, 0); .opacity(1); } } @keyframes wpb_ttb { 0% { .translate(0, -10%); .opacity(0); } 100% { .translate(0, 0); .opacity(1); } } /* Bottom to top keyframes */ @-webkit-keyframes wpb_btt { 0% { -webkit-transform: translate(0, 10%); .opacity(0); } 100% { -webkit-transform: translate(0, 0); .opacity(1); } } @-moz-keyframes wpb_btt { 0% { -moz-transform: translate(0, 10%); .opacity(0); } 100% { -moz-transform: translate(0, 0); .opacity(1); } } @-o-keyframes wpb_btt { 0% { -o-transform: translate(0, 10%); .opacity(0); } 100% { -o-transform: translate(0, 0); .opacity(1); } } @keyframes wpb_btt { 0% { .translate(0, 10%); .opacity(0); } 100% { .translate(0, 0); .opacity(1); } } /* Left to right keyframes */ @-webkit-keyframes wpb_ltr { 0% { -webkit-transform: translate(-10%, 0); .opacity(0); } 100% { -webkit-transform: translate(0, 0); .opacity(1); } } @-moz-keyframes wpb_ltr { 0% { -moz-transform: translate(-10%, 0); .opacity(0); } 100% { -moz-transform: translate(0, 0); .opacity(1); } } @-o-keyframes wpb_ltr { 0% { -o-transform: translate(-10%, 0); .opacity(0); } 100% { -o-transform: translate(0, 0); .opacity(1); } } @keyframes wpb_ltr { 0% { .translate(-10%, 0); .opacity(0); } 100% { .translate(0, 0); .opacity(1); } } /* Right to left keyframes */ @-webkit-keyframes wpb_rtl { 0% { -webkit-transform: translate(10%, 0); .opacity(0); } 100% { -webkit-transform: translate(0, 0); .opacity(1); } } @-moz-keyframes wpb_rtl { 0% { -moz-transform: translate(10%, 0); .opacity(0); } 100% { -moz-transform: translate(0, 0); .opacity(1); } } @-o-keyframes wpb_rtl { 0% { -o-transform: translate(10%, 0); .opacity(0); } 100% { -o-transform: translate(0, 0); .opacity(1); } } @keyframes wpb_rtl { 0% { .translate(10%, 0); .opacity(0); } 100% { .translate(0, 0); .opacity(1); } } /* Appear from center keyframes */ @-webkit-keyframes wpb_appear { 0% { -webkit-transform: scale(0.5); .opacity(0.1); } 100% { -webkit-transform: scale(1); .opacity(1); } } @-moz-keyframes wpb_appear { 0% { -moz-transform: scale(0.5); .opacity(0.1); } 100% { -moz-transform: scale(1); .opacity(1); } } @-o-keyframes wpb_appear { 0% { -o-transform: scale(0.5); .opacity(0.1); } 100% { -o-transform: scale(1); .opacity(1); } } @keyframes wpb_appear { 0% { .scale(0.5); .opacity(0.1); } 100% { .scale(1); .opacity(1); } } wpb_icon.less 0000666 00000010276 15213303053 0007241 0 ustar 00 i.icon { display: inline-block; width: 16px; height: 16px; line-height: 16px; vertical-align: text-top; margin-left: 5px; } .wpb_btn-large i.icon { height: 19px; margin-left: 9px; } .wpb_btn-small i.icon { height: 15px; } .wpb_btn-mini i.icon { display: none; } .wpb_address_book i.icon, option.wpb_address_book { background: url(../images/icons/address-book.png) no-repeat right center; } .wpb_alarm_clock i.icon, option.wpb_alarm_clock { background: url(../images/icons/alarm-clock.png) no-repeat right center; } .wpb_anchor i.icon, option.wpb_anchor { background: url(../images/icons/anchor.png) no-repeat right center; } .wpb_application_image i.icon, option.wpb_application_image { background: url(../images/icons/application-image.png) no-repeat right center; } .wpb_arrow i.icon, option.wpb_arrow { background: url(../images/icons/arrow.png) no-repeat right center; } .wpb_asterisk i.icon, option.wpb_asterisk { background: url(../images/icons/asterisk.png) no-repeat right center; } .wpb_hammer i.icon, option.wpb_hammer { background: url(../images/icons/auction-hammer.png) no-repeat right center; } .wpb_balloon i.icon, option.wpb_balloon { background: url(../images/icons/balloon.png) no-repeat right center; } .wpb_balloon_buzz i.icon, option.wpb_balloon_buzz { background: url(../images/icons/balloon-buzz.png) no-repeat right center; } .wpb_balloon_facebook i.icon, option.wpb_balloon_facebook { background: url(../images/icons/balloon-facebook.png) no-repeat right center; } .wpb_balloon_twitter i.icon, option.wpb_balloon_twitter { background: url(../images/icons/balloon-twitter.png) no-repeat right center; } .wpb_battery i.icon, option.wpb_battery { background: url(../images/icons/battery-full.png) no-repeat right center; } .wpb_binocular i.icon, option.wpb_binocular { background: url(../images/icons/binocular.png) no-repeat right center; } .wpb_document_excel i.icon, option.wpb_document_excel { background: url(../images/icons/blue-document-excel.png) no-repeat right center; } .wpb_document_image i.icon, option.wpb_document_image { background: url(../images/icons/blue-document-image.png) no-repeat right center; } .wpb_document_music i.icon, option.wpb_document_music { background: url(../images/icons/blue-document-music.png) no-repeat right center; } .wpb_document_office i.icon, option.wpb_document_office { background: url(../images/icons/blue-document-office.png) no-repeat right center; } .wpb_document_pdf i.icon, option.wpb_document_pdf { background: url(../images/icons/blue-document-pdf.png) no-repeat right center; } .wpb_document_powerpoint i.icon, option.wpb_document_powerpoint { background: url(../images/icons/blue-document-powerpoint.png) no-repeat right center; } .wpb_document_word i.icon, option.wpb_document_word { background: url(../images/icons/blue-document-word.png) no-repeat right center; } .wpb_bookmark i.icon, option.wpb_bookmark { background: url(../images/icons/bookmark.png) no-repeat right center; } .wpb_camcorder i.icon, option.wpb_camcorder { background: url(../images/icons/camcorder.png) no-repeat right center; } .wpb_camera i.icon, option.wpb_camera { background: url(../images/icons/camera.png) no-repeat right center; } .wpb_chart i.icon, option.wpb_chart { background: url(../images/icons/chart.png) no-repeat right center; } .wpb_chart_pie i.icon, option.wpb_chart_pie { background: url(../images/icons/chart-pie.png) no-repeat right center; } .wpb_clock i.icon, option.wpb_clock { background: url(../images/icons/clock.png) no-repeat right center; } .wpb_play i.icon, option.wpb_play { background: url(../images/icons/control.png) no-repeat right center; } .wpb_fire i.icon, option.wpb_fire { background: url(../images/icons/fire.png) no-repeat right center; } .wpb_heart i.icon, option.wpb_heart { background: url(../images/icons/heart.png) no-repeat right center; } .wpb_mail i.icon, option.wpb_mail { background: url(../images/icons/mail.png) no-repeat right center; } .wpb_shield i.icon, option.wpb_shield { background: url(../images/icons/plus-shield.png) no-repeat right center; } .wpb_video i.icon, option.wpb_video { background: url(../images/icons/video.png) no-repeat right center; } grid.less 0000666 00000010340 15213303053 0006356 0 ustar 00 .vc_non_responsive { //If "Disable responsive content elements" is checked in VC Settings .vc_row { .vc_col-sm-1 { .make-xs-column(1); } .vc_col-sm-2 { .make-xs-column(2); } .vc_col-sm-3 { .make-xs-column(3); } .vc_col-sm-4 { .make-xs-column(4); } .vc_col-sm-5 { .make-xs-column(5); } .vc_col-sm-6 { .make-xs-column(6); } .vc_col-sm-7 { .make-xs-column(7); } .vc_col-sm-8 { .make-xs-column(8); } .vc_col-sm-9 { .make-xs-column(9); } .vc_col-sm-10 { .make-xs-column(10); } .vc_col-sm-11 { .make-xs-column(11); } .vc_col-sm-12 { .make-xs-column(12); } .vc_loop-grid-columns(@grid-columns, sm, offset); .vc_hidden-sm { .responsive-invisibility(); } } } // fix for flexbox row .vc_column_container { width: 100%; } .vc_make-grid-columns() { // Common styles for all sizes of grid columns, widths 1-12 .vc_col(@index) when (@index = 1) { // initial @item: ~".vc_col-xs-@{index}, .vc_col-sm-@{index}, .vc_col-md-@{index}, .vc_col-lg-@{index}"; .vc_col((@index + 1), @item); } .vc_col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo @item: ~".vc_col-xs-@{index}, .vc_col-sm-@{index}, .vc_col-md-@{index}, .vc_col-lg-@{index}"; .vc_col((@index + 1), ~"@{list}, @{item}"); } .vc_col(@index, @list) when (@index > @grid-columns) { // terminal @{list} { position: relative; // Prevent columns from collapsing when empty min-height: 1px; // Inner gutter via padding padding-left: (@grid-gutter-width / 2); padding-right: (@grid-gutter-width / 2); .box-sizing(border-box); } } .vc_col(1); // kickstart it } .vc_float-grid-columns(@class) { .vc_col(@index) when (@index = 1) { // initial @item: ~".vc_col-@{class}-@{index}"; .vc_col((@index + 1), @item); } .vc_col(@index, @list) when (@index =< @grid-columns) { // general @item: ~".vc_col-@{class}-@{index}"; .vc_col((@index + 1), ~"@{list}, @{item}"); } .vc_col(@index, @list) when (@index > @grid-columns) { // terminal @{list} { float: left; } } .vc_col(1); // kickstart it } .vc_calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { .vc_col-@{class}-@{index} { width: percentage((@index / @grid-columns)); } } .vc_calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) { .vc_col-@{class}-push-@{index} { left: percentage((@index / @grid-columns)); } } .vc_calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) { .vc_col-@{class}-push-0 { left: auto; } } .vc_calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) { .vc_col-@{class}-pull-@{index} { right: percentage((@index / @grid-columns)); } } .vc_calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) { .vc_col-@{class}-pull-0 { right: auto; } } .vc_calc-grid-column(@index, @class, @type) when (@type = offset) { .vc_col-@{class}-offset-@{index} { margin-left: percentage((@index / @grid-columns)); } } // Basic looping in LESS .vc_loop-grid-columns(@index, @class, @type) when (@index >= 0) { .vc_calc-grid-column(@index, @class, @type); // next iteration .vc_loop-grid-columns((@index - 1), @class, @type); } // Create grid for specific class .vc_make-grid(@class) { .vc_float-grid-columns(@class); .vc_loop-grid-columns(@grid-columns, @class, width); .vc_loop-grid-columns(@grid-columns, @class, pull); .vc_loop-grid-columns(@grid-columns, @class, push); .vc_loop-grid-columns(@grid-columns, @class, offset); } .vc_row { .make-row(); } .vc_make-grid-columns(); // Extra small grid // // Columns, offsets, pushes, and pulls for extra small devices like // smartphones. .vc_make-grid(xs); @media (min-width: @screen-sm-min) { .vc_make-grid(sm); } // Medium grid // // Columns, offsets, pushes, and pulls for the desktop device range. @media (min-width: @screen-md-min) { .vc_make-grid(md); } // Large grid // // Columns, offsets, pushes, and pulls for the large desktop device range. @media (min-width: @screen-lg-min) { .vc_make-grid(lg); } backend_grid_element_pointers.less 0000666 00000001567 15213303053 0013474 0 ustar 00 .vc_wp-pointer-controls-prev, .vc_wp-pointer-controls-next { .close { margin-top: 14px; } } .vc_wp-pointers-prev { float: none; margin-right: 6px !important; .vc_pointer-icon { position: relative; &:before { content: "\f141"; display: inline-block; -webkit-font-smoothing: antialiased; font: normal 26px/1 'dashicons'; vertical-align: middle; width: 20px; margin: 0 5px 0 -7px; } } } .vc_wp-pointers-next { .vc_pointer-icon:before { content: "\f139"; display: inline-block; -webkit-font-smoothing: antialiased; font: normal 26px/1 'dashicons'; vertical-align: middle; width: 20px; margin-left: -2px; } } .vc_gitem-animated-block-pointer-extend { margin-right: 63px; } .vc_gitem-animated-block-pointer-video { h4 { padding: 0 15px; } iframe { padding: 0 15px; } } media-gallery.less 0000666 00000002774 15213303053 0010161 0 ustar 00 .media-modal { .attachment-details .setting.vc-image-filter-setting { float: none; select { max-width: 65%; width: 100%; } } @media only screen and (max-width: 900px) { .attachment-details { .setting.vc-image-filter-setting { .name { display: block; } select { max-width: 98%; } } } } .attachment-info { @max_w: 100%; @max_h: 250px; .thumbnail { max-width: @max_w; max-height: @max_h; width: 100%; img { max-width: @max_w; max-height: @max_h; } &.loading { &::before { background: url('../images/spinner.gif') no-repeat center; position: absolute; content: ''; top: 0; left: 0; right: 0; bottom: 0; } } } .uploaded, .file-size { float: left; &::after { margin-right: 5px; content: ';'; } } .edit-attachment, .delete-attachment { display: inline; } .delete-attachment { &::before { content: '| '; color: #666; } } } &.processing-media { .media-button { &::before { content: ''; width: 16px; height: 16px; background: url('../images/spinner.gif'); display: inline-block; margin-left: -40px; position: absolute; pointer-events: none; margin-top: 6px; } } } } vc_mixins.less 0000666 00000013327 15213303053 0007440 0 ustar 00 // For clearing floats like a boss h5bp.com/q .vc_clearfix { &:before, &:after { display: table; content: ""; } &:after { clear: both; } } // Mixins 4.0 //Button variants mixin .vc_btn_variants(@color, @txt_color) { background-color: @color; color: @txt_color !important; // TODO: WTF? why it is not rendering? .transition(all 0.5s); &:hover { background-color: darken(@color, 6%); color: darken(@txt_color, 3%) !important; } &.vc_btn_outlined, &.vc_btn_square_outlined { color: @color !important; &:hover { border-color: darken(@color, 6%); } } &.vc_btn_3d { .box-shadow(0 5px 0 darken(@color, 11%)); margin-bottom: 5px; &.vc_btn_xs { .box-shadow(0 3px 0 darken(@color, 11%)); margin-bottom: 3px; } &.vc_btn_sm { .box-shadow(0 4px 0 darken(@color, 11%)); margin-bottom: 4px; } } } .vc_heading(@font_size) { font-weight: normal; font-size: @font_size; color: inherit; } .vc_box-heading { .border-top-radius(1px); background: @vc_modal_header_bg_color; color: @vc_modal_header_color; padding: 10px 15px; .vc_icon { width: 15px; height: 18px; display: block; } // TODO: refactor with SMCSS .vc_close { margin-top: 2px; float: right; display: block; &:focus { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .vc_icon { background: transparent url(../vc/fe/close_panel.png) center center; } } .vc_minimize { margin-top: 2px; margin-right: 2px; float: right; display: block; .vc_icon { background: transparent url(../vc/fe/modal_minimize.png) center center; } } .vc_transparent { margin-top: 2px; margin-right: 8px; float: right; display: block; .vc_icon { background: transparent url(../vc/fe/eye_ico.png) center center no-repeat; } } } .vc_edit_color_option_variants(@selector, @color, @txt_color) { .@{selector} { background-color: @color !important; color: @txt_color !important; } } .greyGradient() { background: #f1f1f1; background-image: -webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9)); background-image: -webkit-linear-gradient(bottom, #ececec, #f9f9f9); background-image: -moz-linear-gradient(bottom, #ececec, #f9f9f9); background-image: -o-linear-gradient(bottom, #ececec, #f9f9f9); background-image: linear-gradient(to top, #ececec, #f9f9f9); border: 1px solid #dfdfdf !important; -webkit-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; } // CSS3 PROPERTIES // -------------------------------------------------- // Border Radius .border-radius(@radius) { -webkit-border-radius: @radius; -moz-border-radius: @radius; border-radius: @radius; } // COMPONENT MIXINS // -------------------------------------------------- // Button backgrounds // ------------------ .buttonBackground(@startColor, @endColor) { background-color: @startColor; // in these cases the gradient won't cover the background, so we override &:hover, &:active, &.active, &.disabled, &[disabled] { background-color: @endColor; } } .no_bullet_fix() { background-image: none; list-style: none !important; &:after, &:before { display: none !important; } } //Transition .wpb_transition(@param: all, @time: 0.2s, @easing: linear) { transition: @param @time @easing; -moz-transition: @param @time @easing; -webkit-transition: @param @time @easing; -o-transition: @param @time @easing; } .wpb_transform(@param) { -webkit-transform: @param; -moz-transform: @param; -ms-transform: @param; -o-transform: @param; transform: @param; } .wpb_border_radius(@radius: 5px) { -webkit-border-radius: @radius; -moz-border-radius: @radius; border-radius: @radius; } // Mixins 4.0 //Button variants mixin .vc_btn_variants(@selector, @color, @txt_color) { &@{selector} { .vc_btn_variants(@color, @txt_color); } } .vc_frontend-editor-invisibility-settings { display: block !important; .opacity(.5); .vc_controls, &.vc_section + .vc_controls, &.vc_section + .vc_row-full-width + .vc_controls { .vc_btn-content { background-color: #CCC !important; border-color: #CCC !important; &:hover { background-color: #b3b3b3 !important; border-color: #b3b3b3 !important; } } .vc_control-btn-append:before { border-bottom-color: #CCC !important; } .vc_control-btn-append:hover:before { border-bottom-color: #b3b3b3 !important; } } &.vc_section + .vc_controls, &.vc_section + .vc_row-full-width + .vc_controls { .vc_btn-content { .opacity(.5); } } } .vc_backend-editor-invisibility-settings { display: block !important; .vc_controls { .vc_btn-content { background-color: #CCC !important; border-color: #CCC !important; &:hover { background-color: #b3b3b3 !important; border-color: #b3b3b3 !important; } } } > * { .opacity(.5) !important; } } .vc-empty { outline: 1px dotted @vc_border_color; min-height: 50px; position: relative; cursor: pointer; .box-sizing(border-box); &:after { font-family: 'VC-Icons' !important; speak: none; font-style: normal; font-weight: bold; font-variant: normal; text-transform: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; content: "\e145"; color: #848C92; font-size: 28px; top: 0; left: 0; right: 0; bottom: 0; margin: auto; z-index: 0; height: 30px; width: 30px; line-height: 30px; text-align: center; position: absolute; } } .vc_bg_color_variants(@color) { .vc_bg-@{color} { background-color: @@color; } } // End Mixins compiled/README.md 0000666 00000000222 15213303215 0007612 0 ustar 00 # Compiled libraries These files are built from the Loco core. Do not edit! They've been converted down for PHP 5.2 compatibility in WordPress. compiled/gettext.php 0000666 00000104576 15213303215 0010551 0 ustar 00 <?php /** * Downgraded for PHP 5.2 compatibility. Do not edit. */ interface LocoArrayInterface extends ArrayAccess, Iterator, Countable, JsonSerializable { public function export(); public function keys(); public function toArray(); public function getArrayCopy(); } class LocoHeaders extends ArrayIterator implements LocoArrayInterface { private $map = array(); public function __construct( array $raw = array() ){ if( $raw ){ $keys = array_keys( $raw ); $this->map = array_combine( array_map( 'strtolower', $keys ), $keys ); parent::__construct($raw); } } public function normalize( $key ){ $k = strtolower($key); return isset($this->map[$k]) ? $this->map[$k] : null; } public function add( $key, $val ){ $this->offsetSet( $key, $val ); return $this; } public function __toString(){ $pairs = array(); foreach( $this as $key => $val ){ $pairs[] = trim($key).': '.$val; } return implode("\n", $pairs ); } public function trimmed( $prop ){ return trim( $this->__get($prop) ); } public function has( $key ){ $k = strtolower($key); return isset($this->map[$k]); } public function __get( $key ){ return $this->offsetGet( $key ); } public function __set( $key, $val ){ $this->offsetSet( $key, $val ); } public function offsetExists( $k ){ return ! is_null( $this->normalize($k) ); } public function offsetGet( $k ){ $k = $this->normalize($k); if( is_null($k) ){ return ''; } return parent::offsetGet($k); } public function offsetSet( $key, $v ){ $k = strtolower($key); if( isset($this->map[$k]) && $key !== $this->map[$k] ){ parent::offsetUnset( $this->map[$k] ); } $this->map[$k] = $key; return parent::offsetSet( $key, $v ); } public function offsetUnset( $key ){ $k = strtolower($key); if( isset($this->map[$k]) ){ parent::offsetUnset( $this->map[$k] ); unset( $this->map[$k] ); } } public function export(){ return $this->getArrayCopy(); } public function jsonSerialize(){ return $this->getArrayCopy(); } public function toArray(){ return $this->getArrayCopy(); } public function keys(){ return array_values( $this->map ); } } class LocoPoHeaders extends LocoHeaders { public static function fromMsgstr( $str ){ $headers = new LocoPoHeaders; foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } public static function fromSource( $raw ){ while( preg_match('/^.*[\r\n]+/', $raw, $r ) ){ $line = $r[0]; if( '#' === $line{0} ){ $raw = substr( $raw, strlen($line) ); continue; } if( preg_match('/^msgid\s+""\s+msgstr\s+/', $raw, $r ) ){ $raw = substr( $raw, strlen($r[0]) ); $str = array(); while( preg_match('/^"(.*)"\s*/', $raw, $r ) ){ $raw = substr( $raw, strlen($r[0]) ); $chunk = $r[1]; if( '' !== $chunk ){ $str[] = stripcslashes( $r[1] ); } } if( $str ){ return self::fromMsgstr( implode('',$str) ); } break; } else { break; } } throw new Loco_error_ParseException('Invalid PO header'); } } function loco_parse_reference_id( $refs, &$_id ){ if( false === ( $n = strpos($refs,'loco:') ) ){ $_id = ''; return $refs; } $_id = substr($refs, $n+5, 24 ); $refs = substr_replace( $refs, '', $n, 29 ); return trim( $refs ); } function loco_ensure_utf8( $str, $enc = false, $prefix_bom = false ){ if( false === $enc ){ $m = substr( $str, 0, 3 ); if( "\xEF\xBB\xBF" === $m ){ $str = substr( $str, 3 ); } else if( "\xFF" === $m{0} && "\xFE" === $m{1} ){ $str = substr( $str, 2 ); $enc = 'UTF-16LE'; } else if( "\xFE" === $m{0} && "\xFF" === $m{1} ){ $str = substr( $str, 2 ); $enc = 'UTF-16BE'; } else { $enc = mb_detect_encoding( $str, array('UTF-8','Windows-1252','ISO-8859-1'), false ); if( ! $enc ){ throw new Exception('Unknown character encoding'); } } } else if( ! strcasecmp('ISO-8859-1',$enc) || ! strcasecmp('CP-1252', $enc ) ){ $enc = 'Windows-1252'; } else if( ! strcasecmp('UTF8', $enc) ){ $enc = ''; } else if( ! strcasecmp('UTF-16', $enc) ){ $enc = 'UTF-16BE'; } if( $enc && $enc !== 'UTF-8' ){ $str = mb_convert_encoding( $str, 'UTF-8', array($enc) ); } if( $prefix_bom ){ $str = "\xEF\xBB\xBF".$str; } return $str; } function loco_parse_po( $src ){ $src = loco_ensure_utf8( $src ); $i = -1; $key = ''; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array() ); foreach( preg_split('/[\r\n]+/', $src) as $_i => $line ){ while( $line = trim($line," \t") ){ $c = $line{0}; if( '"' === $c ){ if( $key && isset($entry) ){ if( '"' === substr($line,-1) ){ $line = substr( $line, 1, -1 ); $entry[$key][$idx][] = stripcslashes($line); } } } else if( '#' === $c ){ if( isset($entry['i']) ){ unset( $entry ); $entry = $template; } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( 'str' === $key ){ if( ! isset($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = &$entry; } } else if( ! isset($entry) || isset($entry['i']) ){ unset( $entry ); $entry = $template; } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } } unset( $entry ); $assets = array(); foreach( $entries as $i => $entry ){ if( empty($entry['id']) ){ continue; } if( empty($entry['str']) ){ $entry['str'] = array( array('') ); } $asset = array( 'id' => null, 'source' => implode('',$entry['id'][0]), 'target' => implode('',$entry['str'][0]), ); if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } if( isset($entry['#'][' ']) ){ $asset['comment'] = implode("\n", $entry['#'][' '] ); } if( isset($entry['#']['.']) ){ $asset['notes'] = implode("\n", $entry['#']['.'] ); } if( isset($entry['#'][':']) ){ if( $refs = implode( ' ', $entry['#'][':'] ) ) { if( $refs = loco_parse_reference_id( $refs, $_id ) ){ $asset['refs'] = $refs; } if( $_id ){ $asset['_id'] = $_id; } } } if( isset($entry['#'][',']) ){ foreach( $entry['#'][','] as $flag ){ if( preg_match('/((?:no-)?\w+)-format/', $flag, $r ) ){ $asset['format'] = $r[1]; } else if( $flag = loco_po_parse_flag($flag) ){ $asset['flag'] = $flag; break; } } } $pidx = count($assets); $assets[] = $asset; if( isset($entry['id_plural']) || isset($entry['str'][1]) ){ $idx = 0; $num = max( 2, count($entry['str']) ); while( ++$idx < $num ){ $plural = array ( 'id' => null, 'source' => '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', 'plural' => $idx, 'parent' => $pidx, ); if( 1 === $idx ){ $plural['source'] = isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : ''; } $assets[] = $plural; } } } if( isset($assets[0]) && '' === $assets[0]['source'] ){ $headers = loco_parse_po_headers( $assets[0]['target'] ); $indexed = $headers['X-Loco-Lookup']; if( $indexed && 'text' !== $indexed ){ foreach( $assets as $i => $asset ){ if( isset($asset['notes']) ){ $notes = $texts = array(); foreach( explode("\n",$asset['notes']) as $line ){ 0 === strpos($line,'Source text: ') ? $texts[] = substr($line,13) : $notes[] = $line; } $assets[$i]['notes'] = implode("\n",$notes); $assets[$i]['id'] = $asset['source']; $assets[$i]['source'] = implode("\n",$texts); } } } } return $assets; } function loco_po_parse_flag( $text ){ static $map; $flag = 0; foreach( explode(',',$text) as $needle ){ if( $needle = trim($needle) ){ if( ! isset($map) ){ $map = unserialize('a:1:{i:4;s:8:"#, fuzzy";}'); } foreach( $map as $loco_flag => $haystack ){ if( false !== stripos($haystack, $needle) ){ $flag = $loco_flag; break 2; } } } } return $flag; } function loco_parse_po_headers( $str ){ return LocoPoHeaders::fromMsgstr($str); } class LocoMoParser { private $bin; private $be; private $n; private $o; private $t; private $v; private $cs; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse(){ $r = array(); $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $soffset = $sourceOffset; $toffset = $targetOffset; while( $soffset < $targetOffset ){ $len = $this->integerAt( $soffset ); $idx = $this->integerAt( $soffset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false === $eot ){ $context = null; } else { $context = $this->decodeStr( substr($src, 0, $eot ) ); $src = substr( $src, $eot+1 ); } $sources = explode( "\0", $src, 2 ); $len = $this->integerAt( $toffset ); $idx = $this->integerAt( $toffset + 4 ); $targets = explode( "\0", $this->bytes( $idx, $len ) ); $r[] = array( 'id' => null, 'source' => $this->decodeStr( $sources[0] ), 'target' => $this->decodeStr( $targets[0] ), 'context' => $context, ); if( isset($sources[1]) ){ $p = count($r) - 1; $nforms = max( 2, count($targets) ); for( $i = 1; $i < $nforms; $i++ ){ $r[] = array( 'id' => null, 'source' => isset($sources[$i]) ? $this->decodeStr( $sources[$i] ) : sprintf('%s (plural %u)',$r[$p]['source'],$i), 'target' => isset($targets[$i]) ? $this->decodeStr( $targets[$i] ) : '', 'parent' => $p, 'plural' => $i, ); } } $soffset += 8; $toffset += 8; } return $r; } public function isBigendian(){ while( is_null($this->be) ){ $str = $this->words( 0, 1 ); if( "\xDE\x12\x04\x95" === $str ){ $this->be = false; break; } if( "\x95\x04\x12\xDE" === $str ){ $this->be = true; break; } throw new Loco_error_ParseException('Invalid MO format'); } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ return substr( $this->bin, $offset, $length ); } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Loco_error_ParseException('Failed to read integer at byte '.$offset); } return $arr[1]; } private function decodeStr( $str ){ if( $this->cs ){ $enc = $this->cs; } else { $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','ISO-8859-1'), false ); if( 'ASCII' !== $enc ){ $this->cs = $enc; } } if( 'UTF-8' !== $enc ){ $str = mb_convert_encoding( $str, 'UTF-8', array($enc) ); } return $str; } } function loco_parse_mo( $src ){ $mo = new LocoMoParser($src); return $mo->parse(); } function loco_parse_comment($comment){ if( '*' === $comment{1} ){ $lines = array(); $junk = "\r\t/ *"; foreach( explode("\n", $comment) as $line ){ if( $line = trim($line,$junk) ){ $lines[] = trim($line,$junk); } } return implode("\n", $lines); } return trim( $comment,"/ \n\r\t" ); } function loco_parse_wp_comment( $block ){ $header = array(); if( '*' === $block{1} ){ $junk = "\r\t/ *"; foreach( explode("\n", $block) as $line ){ if( false !== ( $i = strpos($line,':') ) ){ $key = substr($line,0,$i); $val = substr($line,++$i); $header[ trim($key,$junk) ] = trim($val,$junk); } } } return $header; } abstract class LocoExtractor { private $rules; private $exp = array(); private $reg = array(); private $dom = array(); private $wp = array(); private $dflt = ''; abstract public function decapse( $raw ); abstract public function fsniff( $str ); public function __construct( array $rules ){ $this->rules = $rules; } public function getTotal(){ return count( $this->exp ); } public function getDomainCounts(){ return $this->dom; } public function setDomain( $default ){ $this->dflt = (string) $default; return $this; } public function headerize( array $tags, $domain = '' ){ if( isset($this->wp[$domain]) ){ $this->wp[$domain] += $tags; } else { $this->wp[$domain] = $tags; } return $this; } public function extract( LocoTokensInterface $tokens, $fileref ){ $n = 0; $comment = ''; foreach( $tokens as $tok ){ if( is_string($tok) ){ $s = $tok; $t = null; } else { $t = $tok[0]; $s = $tok[1]; if( T_WHITESPACE === $t ){ throw new RuntimeException( get_class($tokens).' should not allow whitespace through' ); } } if( isset($args) ){ if( ')' === $s ){ if( 0 === --$depth ){ if( isset($arg) ){ $args[] = $arg; } $this->push( $rule, $args, $comment, $ref ); unset($args,$arg); $comment = ''; $n++; } } else if( '(' === $s ){ $depth++; } else if( ',' === $s ){ if( isset($arg) ){ $args[] = $arg; unset($arg); } } else if( isset($arg) ){ $arg[] = $tok; } else { $arg = array( $tok ); } } else if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ if( $this->wp && 0 === $n && ( $header = loco_parse_wp_comment($s) ) ){ foreach( $this->wp as $domain => $tags ){ foreach( array_intersect_key($header,$tags) as $tag => $source ){ $this->pushMeta( $source, $tags[$tag], $domain ); } } } else { $comment = $s; } } else if( T_STRING === $t && isset($this->rules[$s]) && '(' === $tokens->advance() ){ $rule = $this->rules[$s]; $args = array(); $ref = $fileref ? $fileref.':'.$tok[2]: ''; $depth = 1; } else if( $comment ){ if( false === stripos($comment, 'translators:') && false === strpos($comment, 'xgettext:') ){ $comment = ''; } } } return $this->exp; } public function pushMeta( $source, $notes = '', $domain = null ){ if( ! $domain ){ $domain = $this->dflt; } $entry = array( 'id' => '', 'source' => $source, 'target' => '', 'notes' => $notes, ); if( $domain ){ $entry['domain'] = $domain; $key = $source."\1".$domain; } else { $key = $source; } $this->pushMsgid( $key, $entry, $domain ); return $this; } private function pushMsgid( $key, array $entry, $domain ){ if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $a = array(); isset($this->exp[$index]['refs']) and $a[] = $this->exp[$index]['refs']; isset($entry['refs']) and $a[] = $entry['refs']; $a && $this->exp[$index]['refs'] = implode(" ", $a ); $a = array(); isset($this->exp[$index]['notes']) and $a[] = $this->exp[$index]['notes']; isset($entry['notes']) and $a[] = $entry['notes']; $a && $this->exp[$index]['notes'] = implode("\n", $a ); } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; if( isset($this->dom[$domain]) ){ $this->dom[$domain]++; } else { $this->dom[$domain] = 1; } } return $index; } private function push( $rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); $d = strpos( $rule, 'd'); foreach( $args as $i => $tokens ){ if( 1 === count($tokens) && is_array($tokens[0]) && T_CONSTANT_ENCAPSED_STRING === $tokens[0][0] ){ $args[$i] = $this->decapse( $tokens[0][1] ); } else { $args[$i] = null; } } if( ! isset($args[$s]) ){ return null; } $key = $msgid = $args[$s]; if( ! is_string($msgid) ){ return null; } $entry = array( 'id' => '', 'source' => $msgid, 'target' => '', ); if( is_int($c) && isset($args[$c]) ){ $entry['context'] = $context = $args[$c]; $key .= "\0". $context; } else if( ! isset($msgid{0}) ){ return null; } else { $context = null; } if( $ref ){ $entry['refs'] = $ref; } if( is_int($d) && array_key_exists($d,$args) ){ $domain = $args[$d]; if( is_null($domain) ){ $domain = ''; } } else { $domain = $this->dflt; } if( $domain ){ $entry['domain'] = $domain; $key .= "\1".$domain; } $parse_printf = true; if( $comment ){ if( preg_match('/xgettext:\s*((?:no-)?\w+)-format/', $comment, $r ) ){ $entry['format'] = $r[1]; if( 'no-' === substr($r[1],0,3) ){ $parse_printf = false; } else { $parse_printf = null; } $comment = str_replace( $r[0], '', $comment ); } $comment = loco_parse_comment($comment); if( preg_match('/^translators:\s+/i', $comment, $r ) ){ $comment = substr( $comment, strlen($r[0]) ); } $entry['notes'] = $comment; } if( $parse_printf && ( $format = $this->fsniff($msgid) ) ){ $entry['format'] = $format; } $index = $this->pushMsgid( $key, $entry, $domain ); if( is_int($p) && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); if( false !== $parse_printf && ( $format = $this->fsniff($msgid_plural) ) ){ $entry['format'] = $format; } $pkey = $key."\2"; if( isset($this->reg[$pkey]) ){ $plural_index = $this->reg[$pkey]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$pkey] = $plural_index; $this->exp[] = $entry; } } return $index; } public function filter( $domain ){ $map = array(); $newOffset = 1; $matchAll = '*' === $domain; $raw = array( array( 'id' => '', 'source' => '', 'target' => '', 'domain' => $matchAll ? '' : $domain, ) ); foreach( $this->exp as $oldOffset => $r ){ if( isset($r['parent']) ){ if( isset($map[$r['parent']]) ){ $r['parent'] = $map[ $r['parent'] ]; $raw[ $newOffset++ ] = $r; } } else { if( $matchAll ){ $match = true; } else if( isset($r['domain']) ){ $match = $domain === $r['domain']; } else { $match = $domain === ''; } if( $match ){ $map[ $oldOffset ] = $newOffset; $raw[ $newOffset++ ] = $r; } } } return $raw; } } interface LocoTokensInterface extends Iterator { public function advance(); } class LocoPHPTokens implements LocoTokensInterface { private $i; private $tokens; private $skip_tokens = array(); private $skip_strings = array(); private $literal_tokens = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function literal(){ foreach( func_get_args() as $t ){ $this->literal_tokens[ $t ] = 1; } return $this; } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function export(){ $arr = array(); foreach( $this as $tok ){ $arr[] = $tok; } return $arr; } public function advance(){ $this->next(); return $this->current(); } public function pop(){ $tok = array_pop( $this->tokens ); $this->rewind(); return $tok; } public function shift(){ $tok = array_shift( $this->tokens); $this->rewind(); return $tok; } public function rewind(){ $this->i = ( false === reset($this->tokens) ? null : key($this->tokens) ); } public function valid(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return true; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return true; } } return false; } public function key(){ return $this->i; } public function next(){ $this->i = ( false === next($this->tokens) ? null : key($this->tokens) ); } public function current(){ if( ! $this->valid() ){ return false; } $tok = $this->tokens[$this->i]; if( is_array($tok) && isset($this->literal_tokens[$tok[0]]) ){ return $tok[1]; } return $tok; } public function __toString(){ $s = ''; foreach( $this as $token ){ $s .= is_array($token) ? $token[1] : $token; } return $s; } } function loco_sniff_php_printf( $s ){ $n = 0; while( $s && false !== ( $i = strpos($s,'%') ) ){ if( 0 !== $i ){ $s = substr( $s, $i ); } if( ! preg_match('/^%(?:\\d+\\$)?[-+]?(?:\'.)?[ 0]*-?\\d*(?:\\.\d+)?[bcdeEfFgGosuxX%]/', $s, $r ) ){ return 0; } $s = substr( $s, strlen($r[0]) ); $n++; } return $n; } function loco_decapse_php_string( $s ){ if( ! $s ){ return ''; } $q = $s{0}; if( "'" === $q ){ return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), substr( $s, 1, -1 ) ); } if( '"' !== $q ){ return $s; } $s = substr( $s, 1, -1 ); $a = ''; $e = false; $symbols = array ( 'n' => "\x0A", 'r' => "\x0D", 't' => "\x09", 'v' => "\x0B", 'f' => "\x0C", 'e' => "\x1B", '$' => '$', '\\' => '\\', '"' => '"', ); foreach( explode('\\', $s) as $i => $t ){ if( '' === $t ){ if( $e ){ $a .= '\\'; } $e = ! $e; continue; } if( $e ){ $c = $t{0}; while( true ){ if( 'x' === $c || 'X' === $c ){ if( preg_match('/^x([0-9a-f]{1,2})/i', $t, $n ) ){ $c = chr( intval( $n[1], 16 ) ); $n = strlen($n[0]); break; } } else if( isset($symbols[$c]) ){ $c = $symbols[$c]; $n = 1; break; } else if( preg_match('/^[0-7]{1,3}/', $t, $n ) ){ $c = chr( intval( $n[0], 8 ) ); $n = strlen($n[0]); break; } $a .= '\\'.$t; continue 2; } $a .= substr_replace( $t, $c, 0, $n ); continue; } $a .= $t; $e = true; } return $a; } final class LocoPHPExtractor extends LocoExtractor { public function extractSource( $src, $fileref = '' ){ $tokens = new LocoPHPTokens( token_get_all($src) ); $tokens->ignore( T_WHITESPACE ); return $this->extract( $tokens, $fileref ); } public function decapse( $raw ){ return loco_decapse_php_string( $raw ); } public function fsniff( $str ){ return loco_sniff_php_printf($str) ? 'php' : ''; } } function loco_wp_extractor(){ $e = new LocoPHPExtractor( array( '__' => 'sd', '_e' => 'sd', '_c' => 'sd', '_n' => 'sp_d', '_n_noop' => 'spd', '_nc' => 'sp_d', '__ngettext' => 'spd', '__ngettext_noop' => 'spd', '_x' => 'scd', '_ex' => 'scd', '_nx' => 'sp_cd', '_nx_noop' => 'spcd', 'esc_attr__' => 'sd', 'esc_html__' => 'sd', 'esc_attr_e' => 'sd', 'esc_html_e' => 'sd', 'esc_attr_x' => 'scd', 'esc_html_x' => 'scd', ) ); return $e->setDomain('default'); } abstract class LocoPo { public static function pair( $key, $text, $width = 79 ){ if( ! $text && '0' !== $text ){ return $key.' ""'; } $text = addcslashes( $text, "\t\x0B\x0C\x07\x08\\\"" ); $text = preg_replace('/\R/u', "\\n\n", $text, -1, $nbr ); if( $nbr ){ } else if( $width && $width < mb_strlen($text,'UTF-8') + strlen($key) + 3 ){ } else { return $key.' "'.$text.'"'; } $lines = array( $key.' "' ); if( $width ){ $width -= 2; $a = '/^.{0,'.($width-1).'}[-– \\.,:;\\?!\\)\\]\\}\\>]/u'; $b = '/^[^-– \\.,:;\\?!\\)\\]\\}\\>]+/u'; foreach( explode("\n",$text) as $unwrapped ){ $length = mb_strlen( $unwrapped, 'UTF-8' ); while( $length > $width ){ if( preg_match( $a, $unwrapped, $r ) ){ $line = $r[0]; } else if( preg_match( $b, $unwrapped, $r ) ){ $line = $r[0]; } else { throw new Exception('Wrapping error'); } $lines[] = $line; $trunc = mb_strlen($line,'UTF-8'); $length -= $trunc; $unwrapped = substr( $unwrapped, strlen($line) ); if( ( false === $unwrapped && 0 !== $length ) || ( 0 === $length && false !== $unwrapped ) ){ throw new Exception('Truncation error'); } } if( 0 !== $length ){ $lines[] = $unwrapped; } } } else { foreach( explode("\n",$text) as $unwrapped ){ $lines[] = $unwrapped; } } return implode("\"\n\"",$lines).'"'; } public static function refs( $text, $width = 76 ){ $text = preg_replace('/\s+/', ' ', $text ); return '#: '.wordwrap( $text, $width, "\n#: ", false ); } public static function prefix( $text, $prefix ){ $lines = preg_split('/\\R/u', $text, -1 ); return $prefix.implode( "\n".$prefix, $lines ); } } class LocoPoIterator implements Iterator { private $po; private $headers; private $i; private $t; private $j; private $z; private $m; public function __construct( $po ){ $this->po = $po; $this->t = count( $po ); if( ! isset($po[0]) ){ throw new InvalidArgumentException('Empty PO data'); } $h = $po[0]; if( '' === $h['source'] && empty($h['context']) ){ $this->z = 0; } else { $this->z = -1; } } public function rewind(){ $this->i = $this->z; $this->j = -1; $this->next(); } public function key(){ return $this->j; } public function valid(){ return is_int($this->i); } public function next(){ $i = $this->i; while( ++$i < $this->t ){ $this->j++; $this->i = $i; return; } $this->i = null; $this->j = null; } public function current(){ $i = $this->i; $po = $this->po; $parent = new LocoPoMessage( $po[$i] ); $plurals = array(); while( isset($po[++$i]['parent']) ){ $this->i = $i; $plurals[] = new LocoPoMessage( $po[$i] ); } if( $plurals ){ $parent['plurals'] = $plurals; } return $parent; } public function getArrayCopy(){ $po = $this->po; if( 0 === $this->z ){ $po[0]['target'] = (string) $this->getHeaders(); } return $po; } public function getHeaders(){ if( ! $this->headers ){ $header = $this->po[0]; if( 0 === $this->z ){ $this->headers = loco_parse_po_headers( $header['target'] ); } else { $this->headers = new LocoPoHeaders; } } return $this->headers; } public function initPo(){ if( 0 === $this->z ){ unset( $this->po[0]['flag'] ); } return $this; } public function initPot(){ if( 0 === $this->z ){ $this->po[0]['flag'] = 4; } return $this; } public function strip(){ $po = $this->po; $i = count($po); $z = $this->z; while( --$i > $z ){ $po[$i]['target'] = ''; } $this->po = $po; return $this; } public function __toString(){ try { if( 0 === $this->z ){ $h = $this->po[0]; } else { $h = array( 'source' => '' ); } $h['target'] = (string) $this->getHeaders(); $msg = new LocoPoMessage( $h ); $s = $msg->__toString(); foreach( $this as $msg ){ $s .= "\n".$msg->__toString(); } } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); $s = ''; } return $s; } public function getHashes(){ $a = array(); foreach( $this as $msg ){ $a[] = $msg->getHash(); } sort( $a, SORT_STRING ); return $a; } public function equalSource( LocoPoIterator $that ){ $a = $this->getHashes(); $b = $that->getHashes(); if( count($a) !== count($b) ){ return false; } foreach( $a as $i => $hash ){ if( $hash !== $b[$i] ){ return false; } } return true; } } class LocoPoMessage extends ArrayObject { public function __construct( array $r ){ $r['key'] = $r['source']; parent::__construct($r); } public function __get( $prop ){ return isset($this[$prop]) ? $this[$prop] : null; } private function _getFlags(){ $flags = array(); $plurals = $this->__get('plurals'); if( 4 === $this->__get('flag') ){ $flags[] = 'fuzzy'; } else if( $plurals ){ foreach( $plurals as $child ){ if( 4 === $child->__get('flag') ){ $flags[] = 'fuzzy'; break; } } } if( $f = $this->__get('format') ){ $flags[] = $f.'-format'; } else if( isset($plurals[0]) && ( $f = $plurals[0]->__get('format') ) ){ $flags[] = $f.'-format'; } return $flags; } public function getHash(){ $msgid = $this['source']; if( isset($this['context']) ){ $msgctxt = $this['context']; if( is_string($msgctxt) && '' !== $msgctxt ){ if( ! $msgid && '0' !== $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( isset($this['plurals']) ){ foreach( $this['plurals'] as $p ){ $msgid .= "\0".$p->getHash(); break; } } return $msgid; } public function __toString(){ $s = ''; try { if( $text = $this->__get('comment') ) { $s .= LocoPo::prefix( $text, '# ')."\n"; } if( $text = $this->__get('notes') ) { $s .= LocoPo::prefix( $text, '#. ')."\n"; } if( $text = $this->__get('refs') ){ $s .= LocoPo::refs( $text )."\n"; } if( $texts = $this->_getFlags() ){ $s .= '#, '.implode(', ',$texts)."\n"; } $text = $this->__get('context'); if( is_string($text) && isset($text{0}) ){ $s .= LocoPo::pair('msgctxt', $text )."\n"; } $s .= LocoPo::pair( 'msgid', $this['key'] )."\n"; $target = $this['target']; if( is_array( $plurals = $this->__get('plurals') ) ){ if( $plurals ){ foreach( $plurals as $i => $p ){ if( 0 === $i ){ $s .= LocoPo::pair('msgid_plural', $p['key'])."\n"; $s .= LocoPo::pair('msgstr[0]', $target)."\n"; } $s .= LocoPo::pair('msgstr['.(++$i).']', $p['target'])."\n"; } } else if( isset($this['plural_key']) ){ $s .= LocoPo::pair('msgid_plural', $this['plural_key'] )."\n"; $s .= LocoPo::pair('msgstr[0]', $target)."\n"; } else { trigger_error('Missing plural_key in zero plural export'); $s .= LocoPo::pair('msgstr', $target )."\n"; } } else { $s .= LocoPo::pair('msgstr', $target )."\n"; } } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); } return $s; } } class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( $str{$i} ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } } class LocoMo { private $bin; private $msgs; private $head; private $hash; private $use_fuzzy = false; public function __construct( Iterator $export, Iterator $head = null ){ if( $head ){ $this->head = $head; } else { $this->head = new LocoHeaders( array ( 'Project-Id-Version' => 'Loco', 'Language' => 'English', 'Plural-Forms' => 'nplurals=2; plural=(n!=1);', 'MIME-Version' => '1.0', 'Content-Type' => 'text/plain; charset=UTF-8', 'Content-Transfer-Encoding' => '8bit', 'X-Generator' => 'Loco '.PLUG_HTTP_ADDR, ) ); } $this->msgs = $export; $this->bin = ''; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function useFuzzy(){ $this->use_fuzzy = true; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } public function setProject( LocoProject $Proj ){ return $this ->setHeader( 'Project-Id-Version', $Proj->proj_name ) ->setHeader($key, $val) ; } public function setLocale( LocoProjectLocale $Loc ){ return $this ->setHeader( 'Language', $Loc->label ) ->setHeader( 'Plural-Forms', (string) $Loc->getPlurals() ) ; } public function count(){ return count($this->msgs); } public function compile(){ $table = array(''); $sources = array(''); $targets = array( (string) $this->head ); $fuzzy_flag = 4; $skip_fuzzy = ! $this->use_fuzzy; foreach( $this->msgs as $r ){ if( isset($r['flag']) && $skip_fuzzy && $fuzzy_flag === $r['flag'] ){ continue; } $msgid = $r['key']; if( isset($r['context']) ){ $msgctxt = $r['context']; if( is_string($msgctxt) && '' !== $msgctxt ){ if( ! $msgid && '0' !== $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( ! $msgid && '0' !== $msgid ){ continue; } $msgstr = $r['target']; if( ! $msgstr && '0' !== $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['target']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = "\xDE\x12\x04\x95\x00\x00\x00\x00"; $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } } function loco_print_percent( $n, $t ){ $s = loco_string_percent( (int) $n, (int) $t ); echo $s,'%'; return ''; } function loco_print_progress( $translated, $untranslated, $flagged ){ $total = $translated + $untranslated; $complete = loco_string_percent( $translated - $flagged, $total ); $class = 'progress'; if( ! $translated && ! $flagged ){ $class .= ' empty'; } echo '<div class="',$class,'"><div class="t">'; if( $flagged ){ $s = loco_string_percent( $flagged, $total ); echo '<div class="bar f" style="width:',$s,'%"> </div>'; } if( '0' === $complete ){ echo ' '; } else { $class = 'bar p'; $p = (int) $complete; $class .= sprintf(' p-%u', 10*floor($p/10) ); $style = 'width:'.$complete.'%'; if( $flagged ){ $remain = 100.0 - (float) $s; $style .= '; max-width: '.sprintf('%s',$remain).'%'; } echo '<div class="',$class,'" style="'.$style.'"> </div>'; } echo '</div><div class="l">',$complete,'%</div></div>'; return ''; } function loco_string_percent( $n, $t ){ if( ! $t || ! $n ){ $s = '0'; } else if( $t === $n ){ $s = '100'; } else { $dp = 0; $n = 100 * $n / $t; if( $n > 99 ){ $n = min( $n, 99.99 ); do { $s = number_format( $n, ++$dp ); } while( '100' === substr($s,0,3) && $dp < 2 ); } else if( $n < 0.5 ){ $n = max( $n, 0.0001 ); do { $s = number_format( $n, ++$dp ); } while( preg_match('/^0\\.0+$/',$s) && $dp < 4 ); } else { $s = number_format( $n, $dp ); } } return $s; } compiled/phpunit.php 0000666 00000010117 15213303215 0010537 0 ustar 00 <?php /** * Downgraded for PHP 5.2 compatibility. Do not edit. */ class LocoDomQuery extends ArrayIterator { public static function parse( $source ){ $dom = new DOMDocument('1.0', 'UTF-8' ); $dom->preserveWhitespace = true; $dom->formatOutput = false; $source = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>'.$source.'</body></html>'; $used_errors = libxml_use_internal_errors(true); $opts = 0; defined('LIBXML_HTML_NODEFDTD') and $opts |= LIBXML_HTML_NODEFDTD; $parsed = $dom->loadHTML( $source, $opts ); $errors = libxml_get_errors(); $used_errors || libxml_use_internal_errors(false); libxml_clear_errors(); if( $errors || ! $parsed ){ $e = new Loco_error_ParseException('Unknown parse error'); foreach( $errors as $error ){ $e = new Loco_error_ParseException( trim($error->message) ); $e->setContext( $error->line, $error->column, $source ); if( LIBXML_ERR_FATAL === $error->level ){ throw $e; } } if( ! $parsed ){ throw $e; } } return $dom; } public function __construct( $value ){ if( is_array($value) ){ $nodes = $value; } else if( $value instanceof DOMDocument ){ $nodes = array( $value->documentElement ); } else if( $value instanceof DOMNodeList ){ $nodes = array(); foreach( $value as $node ){ $nodes[] = $node; } } else { $value = self::parse( $value ); $nodes = array( $value->documentElement ); } parent::__construct( $nodes ); } public function eq( $index ){ $q = new LocoDomQuery(array()); if( $el = $this[$index] ){ $q[] = $el; } return $q; } public function find( $value ){ $q = new LocoDomQuery( array() ); $f = new _LocoDomQueryFilter($value); foreach( $this as $el ){ foreach( $f->filter($el) as $match ){ $q[] = $match; } } return $q; } public function text(){ $s = ''; foreach( $this as $el ){ $s .= $el->textContent; } return $s; } public function html(){ $s = ''; foreach( $this as $outer ){ foreach( $outer->childNodes as $inner ){ $s .= $inner->ownerDocument->saveXML($inner); } break; } return $s; } public function attr( $name ){ foreach( $this as $el ){ return $el->getAttribute($name); } return null; } public function serialize(){ $pairs = array(); foreach( array('input','select','textarea','button') as $type ){ foreach( $this->find($type) as $field ){ $name = $field->getAttribute('name'); if( ! $name ){ continue; } if( $field->hasAttribute('type') ){ $type = $field->getAttribute('type'); } if( 'select' === $type ){ $value = null; $f = new _LocoDomQueryFilter('option'); foreach( $f->filter($field) as $option ){ if( $option->hasAttribute('value') ){ $_value = $option->getAttribute('value'); } else { $_value = $option->nodeValue; } if( $option->hasAttribute('selected') ){ $value = $_value; break; } else if( is_null($value) ){ $value = $_value; } } if( is_null($value) ){ $value = ''; } } else if( 'checkbox' === $type || 'radio' === $type ){ if( $field->hasAttribute('checked') ){ $value = $field->getAttribute('value'); } else { continue; } } else if( 'file' === $type ){ $value = ''; } else if( $field->hasAttribute('value') ){ $value = $field->getAttribute('value'); } else { $value = $field->textContent; } $pairs[] = sprintf('%s=%s', rawurlencode($name), rawurlencode($value) ); } } return implode('&',$pairs); } } class _LocoDomQueryFilter { private $tag; private $attr = array(); public function __construct( $value ){ if( ! preg_match('/^([a-z1-6]*)(\.[-a-z]+)?(\[(\w+)="(.+)"\])?$/i', $value, $r ) ){ throw new InvalidArgumentException('Bad filter, '.$value ); } if( $r[1] ){ $this->tag = $r[1]; } if( ! empty($r[2]) ){ $this->attr['class'] = substr($r[2],1); } if( ! empty($r[3]) ){ $this->attr[ $r[4] ] = $r[5]; } } public function filter( DOMElement $el ){ if( $this->tag ){ $list = $el->getElementsByTagName($this->tag); } else { $list = $el->childNodes; } if( $this->attr ){ return $this->reduce( $list ); } return $list; } public function reduce( DOMNodeList $list ){ $reduced = array(); foreach( $list as $node ){ foreach( $this->attr as $name => $value ){ if( ! $node->hasAttribute($name) ){ continue 2; } $values = array_flip( explode(' ', $node->getAttribute($name) ) ); if( ! isset($values[$value]) ){ continue 2; } } $reduced[] = $node; } return $reduced; } } compiled/locales.php 0000666 00000003113 15213303215 0010470 0 ustar 00 <?php /** * Downgraded for PHP 5.2 compatibility. Do not edit. */ function loco_parse_locale( $tag ){ $tag = trim( strtr( $tag, '_+', '--' ), '-' ); if( ! $tag ){ throw new InvalidArgumentException('Empty language tag'); } if( ! preg_match( '/^([a-z]{2,3})(?:-([a-z]{3}(?:-[a-z]{3}){0,2}))?(?:-([a-z]{4}))?(?:-([a-z]{2}|[0-9]{3}))?(?:-((?:[0-9][a-z0-9]{3,8}|[a-z0-9]{5,8})(?:-(?:[0-9][a-z0-9]{3,8}|[a-z0-9]{5,8}))*))?(?:-([a-wy-z0-9](?:-[a-z0-9]{2,8})+(?:-[a-wy-z0-9](?:-[a-z0-9]{2,8})+)*))?(?:-(x(?:-[a-z0-9]{1,8})+))?$/i', $tag, $tags ) ){ if( preg_match('/^x(?:-[a-z0-9]{1,8})+/i', $tag ) ){ return array( 'extension' => array($tag) ); } throw new InvalidArgumentException('Invalid language tag, '.$tag ); } $data['lang'] = strtolower($tags[1]); if( isset($tags[2]) && ( $subtag = $tags[2] ) ){ $data['extlang'] = strtolower( $subtag ); } if( isset($tags[3]) && ( $subtag = $tags[3] ) ){ $data['script'] = strtoupper($subtag{0}).strtolower(substr($subtag,1)); } if( isset($tags[4]) && ( $subtag = $tags[4] ) ){ $data['region'] = strtoupper($tags[4]); } if( isset($tags[5]) && ( $subtag = $tags[5]) ){ $data['variant'] = array_values( array_unique( explode('-',strtolower($subtag) ), SORT_REGULAR ) ); } if( isset($tags[6]) && ( $subtag = $tags[6] ) ){ $subtags = array(); $offset = -1; $parts = explode( '-', $subtag ); while( $value = array_shift($parts) ){ if( isset($value{1}) ){ $subtags[$offset] .= '-'.$value; } else { $subtags[++$offset] = $value; } } $data['extension'] = $subtags; } if( isset($tags[7]) && ( $subtag = $tags[7] ) ){ $data['extension'][] = 'x-'.substr($subtag,2); } return $data; } data/languages.php 0000666 00000007011 15213303215 0010132 0 ustar 00 <?php /** * Compiled data. Do not edit. */ return array('aa'=>'Afar','ab'=>'Abkhazian','ae'=>'Avestan','af'=>'Afrikaans','ak'=>'Akan','am'=>'Amharic','an'=>'Aragonese','ar'=>'Arabic','arq'=>'Algerian Arabic','ary'=>'Moroccan Arabic','as'=>'Assamese','ast'=>'Asturian','av'=>'Avaric','ay'=>'Aymara','az'=>'Azerbaijani','azb'=>'South Azerbaijani','ba'=>'Bashkir','bal'=>'Baluchi','bcc'=>'Southern Balochi','be'=>'Belarusian','bg'=>'Bulgarian','bi'=>'Bislama','bm'=>'Bambara','bn'=>'Bengali','bo'=>'Tibetan','br'=>'Breton','bs'=>'Bosnian','ca'=>'Catalan','ce'=>'Chechen','ceb'=>'Cebuano','ch'=>'Chamorro','ckb'=>'Central Kurdish','co'=>'Corsican','cr'=>'Cree','cs'=>'Czech','cu'=>'Church Slavic','cv'=>'Chuvash','cy'=>'Welsh','da'=>'Danish','de'=>'German','dv'=>'Dhivehi','dz'=>'Dzongkha','ee'=>'Ewe','el'=>'Greek','en'=>'English','eo'=>'Esperanto','es'=>'Spanish','et'=>'Estonian','eu'=>'Basque','fa'=>'Persian','ff'=>'Fulah','fi'=>'Finnish','fj'=>'Fijian','fo'=>'Faroese','fr'=>'French','frp'=>'Arpitan','fuc'=>'Pulaar','fur'=>'Friulian','fy'=>'Western Frisian','ga'=>'Irish','gd'=>'Scottish Gaelic','gl'=>'Galician','gn'=>'Guarani','gsw'=>'Swiss German','gu'=>'Gujarati','gv'=>'Manx','ha'=>'Hausa','haw'=>'Hawaiian','haz'=>'Hazaragi','he'=>'Hebrew','hi'=>'Hindi','ho'=>'Hiri Motu','hr'=>'Croatian','ht'=>'Haitian','hu'=>'Hungarian','hy'=>'Armenian','hz'=>'Herero','ia'=>'Interlingua','id'=>'Indonesian','ie'=>'Interlingue','ig'=>'Igbo','ii'=>'Sichuan Yi','ik'=>'Inupiaq','io'=>'Ido','is'=>'Icelandic','it'=>'Italian','iu'=>'Inuktitut','ja'=>'Japanese','jv'=>'Javanese','ka'=>'Georgian','kab'=>'Kabyle','kg'=>'Kongo','ki'=>'Kikuyu','kj'=>'Kuanyama','kk'=>'Kazakh','kl'=>'Kalaallisut','km'=>'Central Khmer','kn'=>'Kannada','ko'=>'Korean','kr'=>'Kanuri','ks'=>'Kashmiri','ku'=>'Kurdish','kv'=>'Komi','kw'=>'Cornish','ky'=>'Kirghiz','la'=>'Latin','lb'=>'Luxembourgish','lg'=>'Ganda','li'=>'Limburgan','ln'=>'Lingala','lo'=>'Lao','lt'=>'Lithuanian','lu'=>'Luba-Katanga','lv'=>'Latvian','mg'=>'Malagasy','mh'=>'Marshallese','mi'=>'Maori','mk'=>'Macedonian','ml'=>'Malayalam','mn'=>'Mongolian','mr'=>'Marathi','ms'=>'Malay','mt'=>'Maltese','my'=>'Burmese','na'=>'Nauru','nb'=>'Norwegian Bokmål','nd'=>'North Ndebele','ne'=>'Nepali','ng'=>'Ndonga','nl'=>'Dutch','nn'=>'Norwegian Nynorsk','no'=>'Norwegian','nr'=>'South Ndebele','nv'=>'Navajo','ny'=>'Nyanja','oc'=>'Occitan (post 1500)','oj'=>'Ojibwa','om'=>'Oromo','or'=>'Oriya','ory'=>'Oriya (individual language)','os'=>'Ossetian','pa'=>'Panjabi','pi'=>'Pali','pl'=>'Polish','ps'=>'Pushto','pt'=>'Portuguese','qu'=>'Quechua','rhg'=>'Rohingya','rm'=>'Romansh','rn'=>'Rundi','ro'=>'Romanian','ru'=>'Russian','rue'=>'Rusyn','rup'=>'Macedo-Romanian','rw'=>'Kinyarwanda','sa'=>'Sanskrit','sah'=>'Yakut','sc'=>'Sardinian','sd'=>'Sindhi','se'=>'Northern Sami','sg'=>'Sango','sh'=>'Serbo-Croatian','si'=>'Sinhala','sk'=>'Slovak','sl'=>'Slovenian','sm'=>'Samoan','sn'=>'Shona','so'=>'Somali','sq'=>'Albanian','sr'=>'Serbian','ss'=>'Swati','st'=>'Southern Sotho','su'=>'Sundanese','sv'=>'Swedish','sw'=>'Swahili','szl'=>'Silesian','ta'=>'Tamil','te'=>'Telugu','tg'=>'Tajik','th'=>'Thai','ti'=>'Tigrinya','tk'=>'Turkmen','tl'=>'Tagalog','tn'=>'Tswana','to'=>'Tonga (Tonga Islands)','tr'=>'Turkish','ts'=>'Tsonga','tt'=>'Tatar','tw'=>'Twi','twd'=>'Twents','ty'=>'Tahitian','tzm'=>'Central Atlas Tamazight','ug'=>'Uighur','uk'=>'Ukrainian','ur'=>'Urdu','uz'=>'Uzbek','ve'=>'Venda','vi'=>'Vietnamese','vo'=>'Volapük','wa'=>'Walloon','wo'=>'Wolof','xh'=>'Xhosa','xmf'=>'Mingrelian','yi'=>'Yiddish','yo'=>'Yoruba','za'=>'Zhuang','zh'=>'Chinese','zu'=>'Zulu'); data/locales.php 0000666 00000013457 15213303215 0007621 0 ustar 00 <?php /** * Compiled data. Do not edit. */ return array('af'=>array(0=>'Afrikaans',1=>'Afrikaans'),'ar'=>array(0=>'Arabic',1=>'العربية'),'ary'=>array(0=>'Moroccan Arabic',1=>'العربية المغربية'),'as'=>array(0=>'Assamese',1=>'অসমীয়া'),'azb'=>array(0=>'South Azerbaijani',1=>'گؤنئی آذربایجان'),'az'=>array(0=>'Azerbaijani',1=>'Azərbaycan dili'),'bel'=>array(0=>'Belarusian',1=>'Беларуская мова'),'bg_BG'=>array(0=>'Bulgarian',1=>'Български'),'bn_BD'=>array(0=>'Bengali (Bangladesh)',1=>'বাংলা'),'bo'=>array(0=>'Tibetan',1=>'བོད་ཡིག'),'bs_BA'=>array(0=>'Bosnian',1=>'Bosanski'),'ca'=>array(0=>'Catalan',1=>'Català'),'ceb'=>array(0=>'Cebuano',1=>'Cebuano'),'cs_CZ'=>array(0=>'Czech',1=>'Čeština'),'cy'=>array(0=>'Welsh',1=>'Cymraeg'),'da_DK'=>array(0=>'Danish',1=>'Dansk'),'de_CH'=>array(0=>'German (Switzerland)',1=>'Deutsch (Schweiz)'),'de_DE'=>array(0=>'German',1=>'Deutsch'),'de_DE_formal'=>array(0=>'German (Formal)',1=>'Deutsch (Sie)'),'de_CH_informal'=>array(0=>'German (Switzerland, Informal)',1=>'Deutsch (Schweiz, Du)'),'dzo'=>array(0=>'Dzongkha',1=>'རྫོང་ཁ'),'el'=>array(0=>'Greek',1=>'Ελληνικά'),'en_ZA'=>array(0=>'English (South Africa)',1=>'English (South Africa)'),'en_AU'=>array(0=>'English (Australia)',1=>'English (Australia)'),'en_NZ'=>array(0=>'English (New Zealand)',1=>'English (New Zealand)'),'en_CA'=>array(0=>'English (Canada)',1=>'English (Canada)'),'en_GB'=>array(0=>'English (UK)',1=>'English (UK)'),'eo'=>array(0=>'Esperanto',1=>'Esperanto'),'es_AR'=>array(0=>'Spanish (Argentina)',1=>'Español de Argentina'),'es_MX'=>array(0=>'Spanish (Mexico)',1=>'Español de México'),'es_CL'=>array(0=>'Spanish (Chile)',1=>'Español de Chile'),'es_VE'=>array(0=>'Spanish (Venezuela)',1=>'Español de Venezuela'),'es_CR'=>array(0=>'Spanish (Costa Rica)',1=>'Español de Costa Rica'),'es_PE'=>array(0=>'Spanish (Peru)',1=>'Español de Perú'),'es_GT'=>array(0=>'Spanish (Guatemala)',1=>'Español de Guatemala'),'es_CO'=>array(0=>'Spanish (Colombia)',1=>'Español de Colombia'),'es_ES'=>array(0=>'Spanish (Spain)',1=>'Español'),'et'=>array(0=>'Estonian',1=>'Eesti'),'eu'=>array(0=>'Basque',1=>'Euskara'),'fa_IR'=>array(0=>'Persian',1=>'فارسی'),'fi'=>array(0=>'Finnish',1=>'Suomi'),'fr_CA'=>array(0=>'French (Canada)',1=>'Français du Canada'),'fr_BE'=>array(0=>'French (Belgium)',1=>'Français de Belgique'),'fr_FR'=>array(0=>'French (France)',1=>'Français'),'fur'=>array(0=>'Friulian',1=>'Friulian'),'gd'=>array(0=>'Scottish Gaelic',1=>'Gàidhlig'),'gl_ES'=>array(0=>'Galician',1=>'Galego'),'gu'=>array(0=>'Gujarati',1=>'ગુજરાતી'),'haz'=>array(0=>'Hazaragi',1=>'هزاره گی'),'he_IL'=>array(0=>'Hebrew',1=>'עִבְרִית'),'hi_IN'=>array(0=>'Hindi',1=>'हिन्दी'),'hr'=>array(0=>'Croatian',1=>'Hrvatski'),'hu_HU'=>array(0=>'Hungarian',1=>'Magyar'),'hy'=>array(0=>'Armenian',1=>'Հայերեն'),'id_ID'=>array(0=>'Indonesian',1=>'Bahasa Indonesia'),'is_IS'=>array(0=>'Icelandic',1=>'Íslenska'),'it_IT'=>array(0=>'Italian',1=>'Italiano'),'ja'=>array(0=>'Japanese',1=>'日本語'),'jv_ID'=>array(0=>'Javanese',1=>'Basa Jawa'),'ka_GE'=>array(0=>'Georgian',1=>'ქართული'),'kab'=>array(0=>'Kabyle',1=>'Taqbaylit'),'kk'=>array(0=>'Kazakh',1=>'Қазақ тілі'),'km'=>array(0=>'Khmer',1=>'ភាសាខ្មែរ'),'ko_KR'=>array(0=>'Korean',1=>'한국어'),'ckb'=>array(0=>'Kurdish (Sorani)',1=>'كوردی'),'lo'=>array(0=>'Lao',1=>'ພາສາລາວ'),'lt_LT'=>array(0=>'Lithuanian',1=>'Lietuvių kalba'),'lv'=>array(0=>'Latvian',1=>'Latviešu valoda'),'mk_MK'=>array(0=>'Macedonian',1=>'Македонски јазик'),'ml_IN'=>array(0=>'Malayalam',1=>'മലയാളം'),'mn'=>array(0=>'Mongolian',1=>'Монгол'),'mr'=>array(0=>'Marathi',1=>'मराठी'),'ms_MY'=>array(0=>'Malay',1=>'Bahasa Melayu'),'my_MM'=>array(0=>'Myanmar (Burmese)',1=>'ဗမာစာ'),'nb_NO'=>array(0=>'Norwegian (Bokmål)',1=>'Norsk bokmål'),'ne_NP'=>array(0=>'Nepali',1=>'नेपाली'),'nl_NL_formal'=>array(0=>'Dutch (Formal)',1=>'Nederlands (Formeel)'),'nl_BE'=>array(0=>'Dutch (Belgium)',1=>'Nederlands (België)'),'nl_NL'=>array(0=>'Dutch',1=>'Nederlands'),'nn_NO'=>array(0=>'Norwegian (Nynorsk)',1=>'Norsk nynorsk'),'oci'=>array(0=>'Occitan',1=>'Occitan'),'pa_IN'=>array(0=>'Punjabi',1=>'ਪੰਜਾਬੀ'),'pl_PL'=>array(0=>'Polish',1=>'Polski'),'ps'=>array(0=>'Pashto',1=>'پښتو'),'pt_PT'=>array(0=>'Portuguese (Portugal)',1=>'Português'),'pt_BR'=>array(0=>'Portuguese (Brazil)',1=>'Português do Brasil'),'pt_PT_ao90'=>array(0=>'Portuguese (Portugal, AO90)',1=>'Português (AO90)'),'rhg'=>array(0=>'Rohingya',1=>'Ruáinga'),'ro_RO'=>array(0=>'Romanian',1=>'Română'),'ru_RU'=>array(0=>'Russian',1=>'Русский'),'sah'=>array(0=>'Sakha',1=>'Сахалыы'),'si_LK'=>array(0=>'Sinhala',1=>'සිංහල'),'sk_SK'=>array(0=>'Slovak',1=>'Slovenčina'),'sl_SI'=>array(0=>'Slovenian',1=>'Slovenščina'),'sq'=>array(0=>'Albanian',1=>'Shqip'),'sr_RS'=>array(0=>'Serbian',1=>'Српски језик'),'sv_SE'=>array(0=>'Swedish',1=>'Svenska'),'szl'=>array(0=>'Silesian',1=>'Ślōnskŏ gŏdka'),'ta_IN'=>array(0=>'Tamil',1=>'தமிழ்'),'te'=>array(0=>'Telugu',1=>'తెలుగు'),'th'=>array(0=>'Thai',1=>'ไทย'),'tl'=>array(0=>'Tagalog',1=>'Tagalog'),'tr_TR'=>array(0=>'Turkish',1=>'Türkçe'),'tt_RU'=>array(0=>'Tatar',1=>'Татар теле'),'tah'=>array(0=>'Tahitian',1=>'Reo Tahiti'),'ug_CN'=>array(0=>'Uighur',1=>'ئۇيغۇرچە'),'uk'=>array(0=>'Ukrainian',1=>'Українська'),'ur'=>array(0=>'Urdu',1=>'اردو'),'uz_UZ'=>array(0=>'Uzbek',1=>'O‘zbekcha'),'vi'=>array(0=>'Vietnamese',1=>'Tiếng Việt'),'zh_CN'=>array(0=>'Chinese (China)',1=>'简体中文'),'zh_HK'=>array(0=>'Chinese (Hong Kong)',1=>'香港中文版 '),'zh_TW'=>array(0=>'Chinese (Taiwan)',1=>'繁體中文')); data/regions.php 0000666 00000011727 15213303215 0007643 0 ustar 00 <?php /** * Compiled data. Do not edit. */ return array('AD'=>'Andorra','AE'=>'United Arab Emirates','AF'=>'Afghanistan','AG'=>'Antigua and Barbuda','AI'=>'Anguilla','AL'=>'Albania','AM'=>'Armenia','AO'=>'Angola','AQ'=>'Antarctica','AR'=>'Argentina','AS'=>'American Samoa','AT'=>'Austria','AU'=>'Australia','AW'=>'Aruba','AX'=>'Åland Islands','AZ'=>'Azerbaijan','BA'=>'Bosnia and Herzegovina','BB'=>'Barbados','BD'=>'Bangladesh','BE'=>'Belgium','BF'=>'Burkina Faso','BG'=>'Bulgaria','BH'=>'Bahrain','BI'=>'Burundi','BJ'=>'Benin','BL'=>'Saint Barthélemy','BM'=>'Bermuda','BN'=>'Brunei Darussalam','BO'=>'Bolivia','BQ'=>'Bonaire, Sint Eustatius and Saba','BR'=>'Brazil','BS'=>'Bahamas','BT'=>'Bhutan','BV'=>'Bouvet Island','BW'=>'Botswana','BY'=>'Belarus','BZ'=>'Belize','CA'=>'Canada','CC'=>'Cocos (Keeling) Islands','CD'=>'The Democratic Republic of the Congo','CF'=>'Central African Republic','CG'=>'Congo','CH'=>'Switzerland','CI'=>'Côte d\'Ivoire','CK'=>'Cook Islands','CL'=>'Chile','CM'=>'Cameroon','CN'=>'China','CO'=>'Colombia','CR'=>'Costa Rica','CU'=>'Cuba','CV'=>'Cabo Verde; Cape Verde','CW'=>'Curaçao','CX'=>'Christmas Island','CY'=>'Cyprus','CZ'=>'Czech Republic','DE'=>'Germany','DJ'=>'Djibouti','DK'=>'Denmark','DM'=>'Dominica','DO'=>'Dominican Republic','DZ'=>'Algeria','EC'=>'Ecuador','EE'=>'Estonia','EG'=>'Egypt','EH'=>'Western Sahara','ER'=>'Eritrea','ES'=>'Spain','ET'=>'Ethiopia','FI'=>'Finland','FJ'=>'Fiji','FK'=>'Falkland Islands (Malvinas)','FM'=>'Federated States of Micronesia','FO'=>'Faroe Islands','FR'=>'France','GA'=>'Gabon','GB'=>'United Kingdom','GD'=>'Grenada','GE'=>'Georgia','GF'=>'French Guiana','GG'=>'Guernsey','GH'=>'Ghana','GI'=>'Gibraltar','GL'=>'Greenland','GM'=>'Gambia','GN'=>'Guinea','GP'=>'Guadeloupe','GQ'=>'Equatorial Guinea','GR'=>'Greece','GS'=>'South Georgia and the South Sandwich Islands','GT'=>'Guatemala','GU'=>'Guam','GW'=>'Guinea-Bissau','GY'=>'Guyana','HK'=>'Hong Kong','HM'=>'Heard Island and McDonald Islands','HN'=>'Honduras','HR'=>'Croatia','HT'=>'Haiti','HU'=>'Hungary','ID'=>'Indonesia','IE'=>'Ireland','IL'=>'Israel','IM'=>'Isle of Man','IN'=>'India','IO'=>'British Indian Ocean Territory','IQ'=>'Iraq','IR'=>'Islamic Republic of Iran','IS'=>'Iceland','IT'=>'Italy','JE'=>'Jersey','JM'=>'Jamaica','JO'=>'Jordan','JP'=>'Japan','KE'=>'Kenya','KG'=>'Kyrgyzstan','KH'=>'Cambodia','KI'=>'Kiribati','KM'=>'Comoros','KN'=>'Saint Kitts and Nevis','KP'=>'Democratic People\'s Republic of Korea','KR'=>'Republic of Korea','KW'=>'Kuwait','KY'=>'Cayman Islands','KZ'=>'Kazakhstan','LA'=>'Lao People\'s Democratic Republic','LB'=>'Lebanon','LC'=>'Saint Lucia','LI'=>'Liechtenstein','LK'=>'Sri Lanka','LR'=>'Liberia','LS'=>'Lesotho','LT'=>'Lithuania','LU'=>'Luxembourg','LV'=>'Latvia','LY'=>'Libya','MA'=>'Morocco','MC'=>'Monaco','MD'=>'Moldova','ME'=>'Montenegro','MF'=>'Saint Martin (French part)','MG'=>'Madagascar','MH'=>'Marshall Islands','MK'=>'The Former Yugoslav Republic of Macedonia','ML'=>'Mali','MM'=>'Myanmar','MN'=>'Mongolia','MO'=>'Macao','MP'=>'Northern Mariana Islands','MQ'=>'Martinique','MR'=>'Mauritania','MS'=>'Montserrat','MT'=>'Malta','MU'=>'Mauritius','MV'=>'Maldives','MW'=>'Malawi','MX'=>'Mexico','MY'=>'Malaysia','MZ'=>'Mozambique','NA'=>'Namibia','NC'=>'New Caledonia','NE'=>'Niger','NF'=>'Norfolk Island','NG'=>'Nigeria','NI'=>'Nicaragua','NL'=>'Netherlands','NO'=>'Norway','NP'=>'Nepal','NR'=>'Nauru','NU'=>'Niue','NZ'=>'New Zealand','OM'=>'Oman','PA'=>'Panama','PE'=>'Peru','PF'=>'French Polynesia','PG'=>'Papua New Guinea','PH'=>'Philippines','PK'=>'Pakistan','PL'=>'Poland','PM'=>'Saint Pierre and Miquelon','PN'=>'Pitcairn','PR'=>'Puerto Rico','PS'=>'State of Palestine','PT'=>'Portugal','PW'=>'Palau','PY'=>'Paraguay','QA'=>'Qatar','RE'=>'Réunion','RO'=>'Romania','RS'=>'Serbia','RU'=>'Russian Federation','RW'=>'Rwanda','SA'=>'Saudi Arabia','SB'=>'Solomon Islands','SC'=>'Seychelles','SD'=>'Sudan','SE'=>'Sweden','SG'=>'Singapore','SH'=>'Saint Helena, Ascension and Tristan da Cunha','SI'=>'Slovenia','SJ'=>'Svalbard and Jan Mayen','SK'=>'Slovakia','SL'=>'Sierra Leone','SM'=>'San Marino','SN'=>'Senegal','SO'=>'Somalia','SR'=>'Suriname','SS'=>'South Sudan','ST'=>'Sao Tome and Principe','SV'=>'El Salvador','SX'=>'Sint Maarten (Dutch part)','SY'=>'Syrian Arab Republic','SZ'=>'Swaziland','TC'=>'Turks and Caicos Islands','TD'=>'Chad','TF'=>'French Southern Territories','TG'=>'Togo','TH'=>'Thailand','TJ'=>'Tajikistan','TK'=>'Tokelau','TL'=>'Timor-Leste','TM'=>'Turkmenistan','TN'=>'Tunisia','TO'=>'Tonga','TR'=>'Turkey','TT'=>'Trinidad and Tobago','TV'=>'Tuvalu','TW'=>'Taiwan','TZ'=>'United Republic of Tanzania','UA'=>'Ukraine','UG'=>'Uganda','UM'=>'United States Minor Outlying Islands','US'=>'United States','UY'=>'Uruguay','UZ'=>'Uzbekistan','VA'=>'Holy See (Vatican City State)','VC'=>'Saint Vincent and the Grenadines','VE'=>'Venezuela','VG'=>'British Virgin Islands','VI'=>'U.S. Virgin Islands','VN'=>'Viet Nam','VU'=>'Vanuatu','WF'=>'Wallis and Futuna','WS'=>'Samoa','YE'=>'Yemen','YT'=>'Mayotte','ZA'=>'South Africa','ZM'=>'Zambia','ZW'=>'Zimbabwe','ZZ'=>'Private use'); data/plurals.php 0000666 00000005201 15213303215 0007645 0 ustar 00 <?php /** * Compiled data. Do not edit. */ return array('ak'=>1,'am'=>1,'ar'=>2,'ary'=>2,'be'=>3,'bm'=>4,'bo'=>4,'br'=>1,'bs'=>3,'cs'=>5,'cy'=>6,'dz'=>4,'ff'=>1,'fr'=>1,'ga'=>7,'gd'=>8,'gv'=>9,'hr'=>10,'id'=>4,'ii'=>4,'iu'=>11,'ja'=>4,'ka'=>4,'kk'=>4,'km'=>4,'kn'=>4,'ko'=>4,'kw'=>11,'ky'=>4,'ln'=>1,'lo'=>4,'lt'=>12,'lv'=>13,'mg'=>1,'mi'=>1,'mk'=>14,'ms'=>4,'mt'=>15,'my'=>4,'nr'=>4,'oc'=>1,'pl'=>16,'ro'=>17,'ru'=>3,'sa'=>11,'sg'=>4,'sk'=>5,'sl'=>18,'sm'=>4,'sr'=>3,'su'=>4,'th'=>4,'ti'=>1,'tl'=>1,'to'=>4,'tt'=>4,'ug'=>4,'uk'=>3,'vi'=>4,'wa'=>1,'wo'=>4,'yo'=>4,'zh'=>4,''=>array(0=>array(0=>'n != 1',1=>array(0=>'one',1=>'other')),1=>array(0=>'n > 1',1=>array(0=>'one',1=>'other')),2=>array(0=>'n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5',1=>array(0=>'zero',1=>'one',2=>'two',3=>'few',4=>'many',5=>'other')),3=>array(0=>'(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)',1=>array(0=>'one',1=>'few',2=>'other')),4=>array(0=>'0',1=>array(0=>'other')),5=>array(0=>'( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2',1=>array(0=>'one',1=>'few',2=>'other')),6=>array(0=>'n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 5',1=>array(0=>'zero',1=>'one',2=>'two',3=>'few',4=>'many',5=>'other')),7=>array(0=>'n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4',1=>array(0=>'one',1=>'two',2=>'few',3=>'many',4=>'other')),8=>array(0=>'n==1||n==11 ? 0 : n==2||n==12 ? 1 :(n >= 3 && n<=10)||(n >= 13 && n<=19)? 2 : 3',1=>array(0=>'one',1=>'two',2=>'few',3=>'other')),9=>array(0=>'n%10==1 ? 0 : n%10==2 ? 1 : n%20==0 ? 2 : 3',1=>array(0=>'one',1=>'two',2=>'few',3=>'other')),10=>array(0=>'n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2',1=>array(0=>'one',1=>'few',2=>'other')),11=>array(0=>'n == 1 ? 0 : n == 2 ? 1 : 2',1=>array(0=>'one',1=>'two',2=>'other')),12=>array(0=>'(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 &&(n%100<10||n%100 >= 20)? 1 : 2)',1=>array(0=>'one',1=>'few',2=>'other')),13=>array(0=>'n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2',1=>array(0=>'one',1=>'other',2=>'zero')),14=>array(0=>'( n % 10 == 1 && n % 100 != 11 ) ? 0 : 1',1=>array(0=>'one',1=>'other')),15=>array(0=>'(n==1 ? 0 : n==0||( n%100>1 && n%100<11)? 1 :(n%100>10 && n%100<20)? 2 : 3)',1=>array(0=>'one',1=>'few',2=>'many',3=>'other')),16=>array(0=>'(n==1 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)',1=>array(0=>'one',1=>'few',2=>'other')),17=>array(0=>'(n==1 ? 0 :(((n%100>19)||(( n%100==0)&&(n!=0)))? 2 : 1))',1=>array(0=>'one',1=>'few',2=>'other')),18=>array(0=>'n%100==1 ? 0 : n%100==2 ? 1 : n%100==3||n%100==4 ? 2 : 3',1=>array(0=>'one',1=>'two',2=>'few',3=>'other')))); compiled/languages.php 0000666 00000011754 15213324324 0011032 0 ustar 00 <?php /** * Downgraded for PHP 5.2 compatibility. Do not edit. */ return unserialize('a:207:{s:2:"aa";s:4:"Afar";s:2:"ab";s:9:"Abkhazian";s:2:"ae";s:7:"Avestan";s:2:"af";s:9:"Afrikaans";s:2:"ak";s:4:"Akan";s:2:"am";s:7:"Amharic";s:2:"an";s:9:"Aragonese";s:2:"ar";s:6:"Arabic";s:3:"arq";s:15:"Algerian Arabic";s:3:"ary";s:15:"Moroccan Arabic";s:2:"as";s:8:"Assamese";s:2:"av";s:6:"Avaric";s:2:"ay";s:6:"Aymara";s:2:"az";s:11:"Azerbaijani";s:3:"azb";s:17:"South Azerbaijani";s:2:"ba";s:7:"Bashkir";s:3:"bal";s:7:"Baluchi";s:3:"bcc";s:16:"Southern Balochi";s:2:"be";s:10:"Belarusian";s:2:"bg";s:9:"Bulgarian";s:2:"bi";s:7:"Bislama";s:2:"bm";s:7:"Bambara";s:2:"bn";s:7:"Bengali";s:2:"bo";s:7:"Tibetan";s:2:"br";s:6:"Breton";s:2:"bs";s:7:"Bosnian";s:2:"ca";s:7:"Catalan";s:2:"ce";s:7:"Chechen";s:3:"ceb";s:7:"Cebuano";s:2:"ch";s:8:"Chamorro";s:3:"ckb";s:15:"Central Kurdish";s:2:"co";s:8:"Corsican";s:2:"cr";s:4:"Cree";s:2:"cs";s:5:"Czech";s:2:"cu";s:13:"Church Slavic";s:2:"cv";s:7:"Chuvash";s:2:"cy";s:5:"Welsh";s:2:"da";s:6:"Danish";s:2:"de";s:6:"German";s:2:"dv";s:7:"Dhivehi";s:2:"dz";s:8:"Dzongkha";s:2:"ee";s:3:"Ewe";s:2:"el";s:5:"Greek";s:2:"en";s:7:"English";s:2:"eo";s:9:"Esperanto";s:2:"es";s:7:"Spanish";s:2:"et";s:8:"Estonian";s:2:"eu";s:6:"Basque";s:2:"fa";s:7:"Persian";s:2:"ff";s:5:"Fulah";s:2:"fi";s:7:"Finnish";s:2:"fj";s:6:"Fijian";s:2:"fo";s:7:"Faroese";s:2:"fr";s:6:"French";s:3:"frp";s:7:"Arpitan";s:3:"fuc";s:6:"Pulaar";s:3:"fur";s:8:"Friulian";s:2:"fy";s:15:"Western Frisian";s:2:"ga";s:5:"Irish";s:2:"gd";s:15:"Scottish Gaelic";s:2:"gl";s:8:"Galician";s:2:"gn";s:7:"Guarani";s:3:"gsw";s:12:"Swiss German";s:2:"gu";s:8:"Gujarati";s:2:"gv";s:4:"Manx";s:2:"ha";s:5:"Hausa";s:3:"haw";s:8:"Hawaiian";s:3:"haz";s:8:"Hazaragi";s:2:"he";s:6:"Hebrew";s:2:"hi";s:5:"Hindi";s:2:"ho";s:9:"Hiri Motu";s:2:"hr";s:8:"Croatian";s:2:"ht";s:7:"Haitian";s:2:"hu";s:9:"Hungarian";s:2:"hy";s:8:"Armenian";s:2:"hz";s:6:"Herero";s:2:"ia";s:11:"Interlingua";s:2:"id";s:10:"Indonesian";s:2:"ie";s:11:"Interlingue";s:2:"ig";s:4:"Igbo";s:2:"ii";s:10:"Sichuan Yi";s:2:"ik";s:7:"Inupiaq";s:2:"io";s:3:"Ido";s:2:"is";s:9:"Icelandic";s:2:"it";s:7:"Italian";s:2:"iu";s:9:"Inuktitut";s:2:"ja";s:8:"Japanese";s:2:"jv";s:8:"Javanese";s:2:"ka";s:8:"Georgian";s:3:"kab";s:6:"Kabyle";s:2:"kg";s:5:"Kongo";s:2:"ki";s:6:"Kikuyu";s:2:"kj";s:8:"Kuanyama";s:2:"kk";s:6:"Kazakh";s:2:"kl";s:11:"Kalaallisut";s:2:"km";s:13:"Central Khmer";s:2:"kn";s:7:"Kannada";s:2:"ko";s:6:"Korean";s:2:"kr";s:6:"Kanuri";s:2:"ks";s:8:"Kashmiri";s:2:"ku";s:7:"Kurdish";s:2:"kv";s:4:"Komi";s:2:"kw";s:7:"Cornish";s:2:"ky";s:7:"Kirghiz";s:2:"la";s:5:"Latin";s:2:"lb";s:13:"Luxembourgish";s:2:"lg";s:5:"Ganda";s:2:"li";s:9:"Limburgan";s:2:"ln";s:7:"Lingala";s:2:"lo";s:3:"Lao";s:2:"lt";s:10:"Lithuanian";s:2:"lu";s:12:"Luba-Katanga";s:2:"lv";s:7:"Latvian";s:2:"mg";s:8:"Malagasy";s:2:"mh";s:11:"Marshallese";s:2:"mi";s:5:"Maori";s:2:"mk";s:10:"Macedonian";s:2:"ml";s:9:"Malayalam";s:2:"mn";s:9:"Mongolian";s:2:"mr";s:7:"Marathi";s:2:"ms";s:5:"Malay";s:2:"mt";s:7:"Maltese";s:2:"my";s:7:"Burmese";s:2:"na";s:5:"Nauru";s:2:"nb";s:17:"Norwegian Bokmål";s:2:"nd";s:13:"North Ndebele";s:2:"ne";s:6:"Nepali";s:2:"ng";s:6:"Ndonga";s:2:"nl";s:5:"Dutch";s:2:"nn";s:17:"Norwegian Nynorsk";s:2:"no";s:9:"Norwegian";s:2:"nr";s:13:"South Ndebele";s:2:"nv";s:6:"Navajo";s:2:"ny";s:6:"Nyanja";s:2:"oc";s:19:"Occitan (post 1500)";s:2:"oj";s:6:"Ojibwa";s:2:"om";s:5:"Oromo";s:2:"or";s:5:"Oriya";s:3:"ory";s:27:"Oriya (individual language)";s:2:"os";s:8:"Ossetian";s:2:"pa";s:7:"Panjabi";s:2:"pi";s:4:"Pali";s:2:"pl";s:6:"Polish";s:2:"ps";s:6:"Pushto";s:2:"pt";s:10:"Portuguese";s:2:"qu";s:7:"Quechua";s:3:"rhg";s:8:"Rohingya";s:2:"rm";s:7:"Romansh";s:2:"rn";s:5:"Rundi";s:2:"ro";s:8:"Romanian";s:2:"ru";s:7:"Russian";s:3:"rue";s:5:"Rusyn";s:3:"rup";s:15:"Macedo-Romanian";s:2:"rw";s:11:"Kinyarwanda";s:2:"sa";s:8:"Sanskrit";s:3:"sah";s:5:"Yakut";s:2:"sc";s:9:"Sardinian";s:2:"sd";s:6:"Sindhi";s:2:"se";s:13:"Northern Sami";s:2:"sg";s:5:"Sango";s:2:"sh";s:14:"Serbo-Croatian";s:2:"si";s:7:"Sinhala";s:2:"sk";s:6:"Slovak";s:2:"sl";s:9:"Slovenian";s:2:"sm";s:6:"Samoan";s:2:"sn";s:5:"Shona";s:2:"so";s:6:"Somali";s:2:"sq";s:8:"Albanian";s:2:"sr";s:7:"Serbian";s:2:"ss";s:5:"Swati";s:2:"st";s:14:"Southern Sotho";s:2:"su";s:9:"Sundanese";s:2:"sv";s:7:"Swedish";s:2:"sw";s:7:"Swahili";s:3:"szl";s:8:"Silesian";s:2:"ta";s:5:"Tamil";s:2:"te";s:6:"Telugu";s:2:"tg";s:5:"Tajik";s:2:"th";s:4:"Thai";s:2:"ti";s:8:"Tigrinya";s:2:"tk";s:7:"Turkmen";s:2:"tl";s:7:"Tagalog";s:2:"tn";s:6:"Tswana";s:2:"to";s:21:"Tonga (Tonga Islands)";s:2:"tr";s:7:"Turkish";s:2:"ts";s:6:"Tsonga";s:2:"tt";s:5:"Tatar";s:2:"tw";s:3:"Twi";s:3:"twd";s:6:"Twents";s:2:"ty";s:8:"Tahitian";s:3:"tzm";s:23:"Central Atlas Tamazight";s:2:"ug";s:6:"Uighur";s:2:"uk";s:9:"Ukrainian";s:2:"ur";s:4:"Urdu";s:2:"uz";s:5:"Uzbek";s:2:"ve";s:5:"Venda";s:2:"vi";s:10:"Vietnamese";s:2:"vo";s:8:"Volapük";s:2:"wa";s:7:"Walloon";s:2:"wo";s:5:"Wolof";s:2:"xh";s:5:"Xhosa";s:3:"xmf";s:10:"Mingrelian";s:2:"yi";s:7:"Yiddish";s:2:"yo";s:6:"Yoruba";s:2:"za";s:6:"Zhuang";s:2:"zh";s:7:"Chinese";s:2:"zu";s:4:"Zulu";}'); compiled/plurals.php 0000666 00000006533 15213324324 0010545 0 ustar 00 <?php /** * Downgraded for PHP 5.2 compatibility. Do not edit. */ return unserialize('a:65:{s:2:"ak";i:1;s:2:"am";i:1;s:2:"ar";i:2;s:3:"ary";i:2;s:2:"bm";i:3;s:2:"be";i:4;s:2:"bo";i:3;s:2:"bs";i:4;s:2:"br";i:1;s:2:"cs";i:5;s:2:"kw";i:6;s:2:"cy";i:7;s:2:"dz";i:3;s:2:"fa";i:3;s:2:"fr";i:1;s:2:"ff";i:1;s:2:"gd";i:8;s:2:"ga";i:9;s:2:"gv";i:10;s:2:"hr";i:11;s:2:"ii";i:3;s:2:"iu";i:6;s:2:"id";i:3;s:2:"ja";i:3;s:2:"kn";i:3;s:2:"ka";i:3;s:2:"kk";i:3;s:2:"km";i:3;s:2:"ky";i:3;s:2:"ko";i:3;s:2:"lo";i:3;s:2:"lv";i:12;s:2:"ln";i:1;s:2:"lt";i:13;s:2:"mk";i:14;s:2:"mg";i:1;s:2:"mt";i:15;s:2:"mi";i:1;s:2:"ms";i:3;s:2:"my";i:3;s:2:"nr";i:3;s:2:"oc";i:1;s:2:"pl";i:16;s:2:"ro";i:17;s:2:"ru";i:4;s:2:"sg";i:3;s:2:"sa";i:6;s:2:"sk";i:5;s:2:"sl";i:18;s:2:"sm";i:3;s:2:"sr";i:4;s:2:"su";i:3;s:2:"tt";i:3;s:2:"tl";i:1;s:2:"th";i:3;s:2:"ti";i:1;s:2:"to";i:3;s:2:"ug";i:3;s:2:"uk";i:4;s:2:"vi";i:3;s:2:"wa";i:1;s:2:"wo";i:3;s:2:"yo";i:3;s:2:"zh";i:3;s:0:"";a:19:{i:0;a:2:{i:0;s:6:"n != 1";i:1;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}i:1;a:2:{i:0;s:5:"n > 1";i:1;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}i:2;a:2:{i:0;s:95:"n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5";i:1;a:6:{i:0;s:4:"zero";i:1;s:3:"one";i:2;s:3:"two";i:3;s:3:"few";i:4;s:4:"many";i:5;s:5:"other";}}i:3;a:2:{i:0;s:1:"0";i:1;a:1:{i:0;s:5:"other";}}i:4;a:2:{i:0;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:5;a:2:{i:0;s:45:"( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:6;a:2:{i:0;s:27:"n == 1 ? 0 : n == 2 ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:5:"other";}}i:7;a:2:{i:0;s:56:"n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 5";i:1;a:6:{i:0;s:4:"zero";i:1;s:3:"one";i:2;s:3:"two";i:3;s:3:"few";i:4;s:4:"many";i:5;s:5:"other";}}i:8;a:2:{i:0;s:26:"n < 2 ? 0 : n == 2 ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:5:"other";}}i:9;a:2:{i:0;s:44:"n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4";i:1;a:5:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:4:"many";i:4;s:5:"other";}}i:10;a:2:{i:0;s:43:"n%10==1 ? 0 : n%10==2 ? 1 : n%20==0 ? 2 : 3";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}i:11;a:2:{i:0;s:80:"n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:12;a:2:{i:0;s:49:"n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:5:"other";i:2;s:4:"zero";}}i:13;a:2:{i:0;s:71:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:14;a:2:{i:0;s:40:"( n % 10 == 1 && n % 100 != 11 ) ? 0 : 1";i:1;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}i:15;a:2:{i:0;s:75:"(n==1 ? 0 : n==0||( n%100>1 && n%100<11)? 1 :(n%100>10 && n%100<20)? 2 : 3)";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";i:3;s:5:"other";}}i:16;a:2:{i:0;s:66:"(n==1 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:17;a:2:{i:0;s:56:"(n==1 ? 0 :(((n%100>19)||(( n%100==0)&&(n!=0)))? 2 : 1))";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:18;a:2:{i:0;s:56:"n%100==1 ? 0 : n%100==2 ? 1 : n%100==3||n%100==4 ? 2 : 3";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}}}'); compiled/regions.php 0000666 00000015466 15213324324 0010536 0 ustar 00 <?php /** * Downgraded for PHP 5.2 compatibility. Do not edit. */ return unserialize('a:250:{s:2:"AD";s:7:"Andorra";s:2:"AE";s:20:"United Arab Emirates";s:2:"AF";s:11:"Afghanistan";s:2:"AG";s:19:"Antigua and Barbuda";s:2:"AI";s:8:"Anguilla";s:2:"AL";s:7:"Albania";s:2:"AM";s:7:"Armenia";s:2:"AO";s:6:"Angola";s:2:"AQ";s:10:"Antarctica";s:2:"AR";s:9:"Argentina";s:2:"AS";s:14:"American Samoa";s:2:"AT";s:7:"Austria";s:2:"AU";s:9:"Australia";s:2:"AW";s:5:"Aruba";s:2:"AX";s:14:"Åland Islands";s:2:"AZ";s:10:"Azerbaijan";s:2:"BA";s:22:"Bosnia and Herzegovina";s:2:"BB";s:8:"Barbados";s:2:"BD";s:10:"Bangladesh";s:2:"BE";s:7:"Belgium";s:2:"BF";s:12:"Burkina Faso";s:2:"BG";s:8:"Bulgaria";s:2:"BH";s:7:"Bahrain";s:2:"BI";s:7:"Burundi";s:2:"BJ";s:5:"Benin";s:2:"BL";s:17:"Saint Barthélemy";s:2:"BM";s:7:"Bermuda";s:2:"BN";s:17:"Brunei Darussalam";s:2:"BO";s:7:"Bolivia";s:2:"BQ";s:32:"Bonaire, Sint Eustatius and Saba";s:2:"BR";s:6:"Brazil";s:2:"BS";s:7:"Bahamas";s:2:"BT";s:6:"Bhutan";s:2:"BV";s:13:"Bouvet Island";s:2:"BW";s:8:"Botswana";s:2:"BY";s:7:"Belarus";s:2:"BZ";s:6:"Belize";s:2:"CA";s:6:"Canada";s:2:"CC";s:23:"Cocos (Keeling) Islands";s:2:"CD";s:36:"The Democratic Republic of the Congo";s:2:"CF";s:24:"Central African Republic";s:2:"CG";s:5:"Congo";s:2:"CH";s:11:"Switzerland";s:2:"CI";s:14:"Côte d\'Ivoire";s:2:"CK";s:12:"Cook Islands";s:2:"CL";s:5:"Chile";s:2:"CM";s:8:"Cameroon";s:2:"CN";s:5:"China";s:2:"CO";s:8:"Colombia";s:2:"CR";s:10:"Costa Rica";s:2:"CU";s:4:"Cuba";s:2:"CV";s:22:"Cabo Verde; Cape Verde";s:2:"CW";s:8:"Curaçao";s:2:"CX";s:16:"Christmas Island";s:2:"CY";s:6:"Cyprus";s:2:"CZ";s:14:"Czech Republic";s:2:"DE";s:7:"Germany";s:2:"DJ";s:8:"Djibouti";s:2:"DK";s:7:"Denmark";s:2:"DM";s:8:"Dominica";s:2:"DO";s:18:"Dominican Republic";s:2:"DZ";s:7:"Algeria";s:2:"EC";s:7:"Ecuador";s:2:"EE";s:7:"Estonia";s:2:"EG";s:5:"Egypt";s:2:"EH";s:14:"Western Sahara";s:2:"ER";s:7:"Eritrea";s:2:"ES";s:5:"Spain";s:2:"ET";s:8:"Ethiopia";s:2:"FI";s:7:"Finland";s:2:"FJ";s:4:"Fiji";s:2:"FK";s:27:"Falkland Islands (Malvinas)";s:2:"FM";s:30:"Federated States of Micronesia";s:2:"FO";s:13:"Faroe Islands";s:2:"FR";s:6:"France";s:2:"GA";s:5:"Gabon";s:2:"GB";s:14:"United Kingdom";s:2:"GD";s:7:"Grenada";s:2:"GE";s:7:"Georgia";s:2:"GF";s:13:"French Guiana";s:2:"GG";s:8:"Guernsey";s:2:"GH";s:5:"Ghana";s:2:"GI";s:9:"Gibraltar";s:2:"GL";s:9:"Greenland";s:2:"GM";s:6:"Gambia";s:2:"GN";s:6:"Guinea";s:2:"GP";s:10:"Guadeloupe";s:2:"GQ";s:17:"Equatorial Guinea";s:2:"GR";s:6:"Greece";s:2:"GS";s:44:"South Georgia and the South Sandwich Islands";s:2:"GT";s:9:"Guatemala";s:2:"GU";s:4:"Guam";s:2:"GW";s:13:"Guinea-Bissau";s:2:"GY";s:6:"Guyana";s:2:"HK";s:9:"Hong Kong";s:2:"HM";s:33:"Heard Island and McDonald Islands";s:2:"HN";s:8:"Honduras";s:2:"HR";s:7:"Croatia";s:2:"HT";s:5:"Haiti";s:2:"HU";s:7:"Hungary";s:2:"ID";s:9:"Indonesia";s:2:"IE";s:7:"Ireland";s:2:"IL";s:6:"Israel";s:2:"IM";s:11:"Isle of Man";s:2:"IN";s:5:"India";s:2:"IO";s:30:"British Indian Ocean Territory";s:2:"IQ";s:4:"Iraq";s:2:"IR";s:24:"Islamic Republic of Iran";s:2:"IS";s:7:"Iceland";s:2:"IT";s:5:"Italy";s:2:"JE";s:6:"Jersey";s:2:"JM";s:7:"Jamaica";s:2:"JO";s:6:"Jordan";s:2:"JP";s:5:"Japan";s:2:"KE";s:5:"Kenya";s:2:"KG";s:10:"Kyrgyzstan";s:2:"KH";s:8:"Cambodia";s:2:"KI";s:8:"Kiribati";s:2:"KM";s:7:"Comoros";s:2:"KN";s:21:"Saint Kitts and Nevis";s:2:"KP";s:37:"Democratic People\'s Republic of Korea";s:2:"KR";s:17:"Republic of Korea";s:2:"KW";s:6:"Kuwait";s:2:"KY";s:14:"Cayman Islands";s:2:"KZ";s:10:"Kazakhstan";s:2:"LA";s:32:"Lao People\'s Democratic Republic";s:2:"LB";s:7:"Lebanon";s:2:"LC";s:11:"Saint Lucia";s:2:"LI";s:13:"Liechtenstein";s:2:"LK";s:9:"Sri Lanka";s:2:"LR";s:7:"Liberia";s:2:"LS";s:7:"Lesotho";s:2:"LT";s:9:"Lithuania";s:2:"LU";s:10:"Luxembourg";s:2:"LV";s:6:"Latvia";s:2:"LY";s:5:"Libya";s:2:"MA";s:7:"Morocco";s:2:"MC";s:6:"Monaco";s:2:"MD";s:7:"Moldova";s:2:"ME";s:10:"Montenegro";s:2:"MF";s:26:"Saint Martin (French part)";s:2:"MG";s:10:"Madagascar";s:2:"MH";s:16:"Marshall Islands";s:2:"MK";s:41:"The Former Yugoslav Republic of Macedonia";s:2:"ML";s:4:"Mali";s:2:"MM";s:7:"Myanmar";s:2:"MN";s:8:"Mongolia";s:2:"MO";s:5:"Macao";s:2:"MP";s:24:"Northern Mariana Islands";s:2:"MQ";s:10:"Martinique";s:2:"MR";s:10:"Mauritania";s:2:"MS";s:10:"Montserrat";s:2:"MT";s:5:"Malta";s:2:"MU";s:9:"Mauritius";s:2:"MV";s:8:"Maldives";s:2:"MW";s:6:"Malawi";s:2:"MX";s:6:"Mexico";s:2:"MY";s:8:"Malaysia";s:2:"MZ";s:10:"Mozambique";s:2:"NA";s:7:"Namibia";s:2:"NC";s:13:"New Caledonia";s:2:"NE";s:5:"Niger";s:2:"NF";s:14:"Norfolk Island";s:2:"NG";s:7:"Nigeria";s:2:"NI";s:9:"Nicaragua";s:2:"NL";s:11:"Netherlands";s:2:"NO";s:6:"Norway";s:2:"NP";s:5:"Nepal";s:2:"NR";s:5:"Nauru";s:2:"NU";s:4:"Niue";s:2:"NZ";s:11:"New Zealand";s:2:"OM";s:4:"Oman";s:2:"PA";s:6:"Panama";s:2:"PE";s:4:"Peru";s:2:"PF";s:16:"French Polynesia";s:2:"PG";s:16:"Papua New Guinea";s:2:"PH";s:11:"Philippines";s:2:"PK";s:8:"Pakistan";s:2:"PL";s:6:"Poland";s:2:"PM";s:25:"Saint Pierre and Miquelon";s:2:"PN";s:8:"Pitcairn";s:2:"PR";s:11:"Puerto Rico";s:2:"PS";s:18:"State of Palestine";s:2:"PT";s:8:"Portugal";s:2:"PW";s:5:"Palau";s:2:"PY";s:8:"Paraguay";s:2:"QA";s:5:"Qatar";s:2:"RE";s:8:"Réunion";s:2:"RO";s:7:"Romania";s:2:"RS";s:6:"Serbia";s:2:"RU";s:18:"Russian Federation";s:2:"RW";s:6:"Rwanda";s:2:"SA";s:12:"Saudi Arabia";s:2:"SB";s:15:"Solomon Islands";s:2:"SC";s:10:"Seychelles";s:2:"SD";s:5:"Sudan";s:2:"SE";s:6:"Sweden";s:2:"SG";s:9:"Singapore";s:2:"SH";s:44:"Saint Helena, Ascension and Tristan da Cunha";s:2:"SI";s:8:"Slovenia";s:2:"SJ";s:22:"Svalbard and Jan Mayen";s:2:"SK";s:8:"Slovakia";s:2:"SL";s:12:"Sierra Leone";s:2:"SM";s:10:"San Marino";s:2:"SN";s:7:"Senegal";s:2:"SO";s:7:"Somalia";s:2:"SR";s:8:"Suriname";s:2:"SS";s:11:"South Sudan";s:2:"ST";s:21:"Sao Tome and Principe";s:2:"SV";s:11:"El Salvador";s:2:"SX";s:25:"Sint Maarten (Dutch part)";s:2:"SY";s:20:"Syrian Arab Republic";s:2:"SZ";s:9:"Swaziland";s:2:"TC";s:24:"Turks and Caicos Islands";s:2:"TD";s:4:"Chad";s:2:"TF";s:27:"French Southern Territories";s:2:"TG";s:4:"Togo";s:2:"TH";s:8:"Thailand";s:2:"TJ";s:10:"Tajikistan";s:2:"TK";s:7:"Tokelau";s:2:"TL";s:11:"Timor-Leste";s:2:"TM";s:12:"Turkmenistan";s:2:"TN";s:7:"Tunisia";s:2:"TO";s:5:"Tonga";s:2:"TR";s:6:"Turkey";s:2:"TT";s:19:"Trinidad and Tobago";s:2:"TV";s:6:"Tuvalu";s:2:"TW";s:6:"Taiwan";s:2:"TZ";s:27:"United Republic of Tanzania";s:2:"UA";s:7:"Ukraine";s:2:"UG";s:6:"Uganda";s:2:"UM";s:36:"United States Minor Outlying Islands";s:2:"US";s:13:"United States";s:2:"UY";s:7:"Uruguay";s:2:"UZ";s:10:"Uzbekistan";s:2:"VA";s:29:"Holy See (Vatican City State)";s:2:"VC";s:32:"Saint Vincent and the Grenadines";s:2:"VE";s:9:"Venezuela";s:2:"VG";s:22:"British Virgin Islands";s:2:"VI";s:19:"U.S. Virgin Islands";s:2:"VN";s:8:"Viet Nam";s:2:"VU";s:7:"Vanuatu";s:2:"WF";s:17:"Wallis and Futuna";s:2:"WS";s:5:"Samoa";s:2:"YE";s:5:"Yemen";s:2:"YT";s:7:"Mayotte";s:2:"ZA";s:12:"South Africa";s:2:"ZM";s:6:"Zambia";s:2:"ZW";s:8:"Zimbabwe";s:2:"ZZ";s:11:"Private use";}');
dvadf
dvadf
| ver. 1.4 |
Github
|
.
| PHP 7.0.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings