File manager - Edit - /home/premiey/www/wp-includes/images/media/timeline.tar
Back
flex-timeline.php 0000666 00000001526 15165661050 0010034 0 ustar 00 <?php /** * @package Load Flex Timeline files * @description Templates for Timeline * * Author: wpdevelop, oplugins * @link http://oplugins.com/ * @email info@oplugins.com * * @version 1.0 * @modified 2019-06-28 11:20 */ /** * Delete Changes * If we need to rollback all these changes, so then need, * * * 2. And search for this '//FixIn: Flex TimeLine 1.0' * * 3. Comment in wp-config.php this line if ( ! defined( 'SCRIPT_DEBUG' ) ) { define( 'SCRIPT_DEBUG', true ); } * for do not load full src files. */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly require_once( WPBC_PLUGIN_DIR . '/core/timeline/v2/wpbc-class-timeline_v2.php' ); // Version 2.0 of Timeline v2/wpbc-class-timeline_v2.php 0000666 00000477062 15165661050 0012106 0 ustar 00 <?php /** * @version 1.1 * @package Booking Calendar * @category Timeline for Admin Panel * @author wpdevelop * * @web-site https://wpbookingcalendar.com/ * @email info@wpbookingcalendar.com * * @modified 2016-01-18 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly class WPBC_TimelineFlex { public $bookings; // Booking objects from external function public $booking_types; // Resources objects from external function public $dates_array; // Dates for Timeline format public $time_array_new; // Times for Timeline format public $request_args; // Parsed paramaters private $is_frontend; // Client ot Admin sides. public $timeline_titles; private $week_days_titles; private $current_user_id; private $html_client_id; // ID of border element at client side. public $options; //FixIn:7.0.1.50 private $data_in_previous_cell; //FixIn: 8.5.2.6 public function __construct(){// $bookings, $booking_types ) { $this->reset_data_in_previous_cell(); $this->options = array(); //FixIn:7.0.1.50 $this->html_client_id = false; $this->current_user_id = 0; $this->is_frontend = false; //FixIn: 8.1.3.31 $calendar_overview_start_time = get_bk_option( 'booking_calendar_overview_start_time' ); $calendar_overview_end_time = get_bk_option( 'booking_calendar_overview_end_time' ); $hours_limit = ( empty( $calendar_overview_start_time ) ? '0' : $calendar_overview_start_time ) . ',' . ( empty( $calendar_overview_end_time ) ? '24' : $calendar_overview_end_time ); $this->request_args = array( 'wh_booking_type' => '1' , 'is_matrix' => false , 'view_days_num' => '90' , 'scroll_start_date' => '' , 'scroll_day' => 0 , 'scroll_month' => 0 , 'wh_trash' => '' , 'limit_hours' => $hours_limit // '0,24' //FixIn: 7.0.1.14 if ( ! ( ( $tt >= $start_hour_for_1day_view ) && ( $tt <= $end_hour_for_1day_view ) ) ) continue; , 'only_booked_resources' => ( isset( $_REQUEST['only_booked_resources'] ) ) ? 1 : 0 //FixIn: 7.0.1.51 , 'booking_hash' => ( isset( $_REQUEST['booking_hash'] ) ) ? $_REQUEST['booking_hash'] : '' //FixIn: 8.1.3.5 ); $this->timeline_titles = array( 'header_column1' => __('Resources', 'booking') , 'header_column2' => __('Dates', 'booking') , 'header_title' => __('Bookings', 'booking') ); $this->week_days_titles = array( 'full' => array( 1 => __( 'Monday', 'booking' ) , 2 => __( 'Tuesday', 'booking' ) , 3 => __( 'Wednesday', 'booking' ) , 4 => __( 'Thursday', 'booking' ) , 5 => __( 'Friday', 'booking' ) , 6 => __( 'Saturday', 'booking' ) , 7 => __( 'Sunday', 'booking' ) ) , '3' => array( //FixIn: 7.0.1.11 1 => __( 'Mon', 'booking' ) , 2 => __( 'Tue', 'booking' ) , 3 => __( 'Wed', 'booking' ) , 4 => __( 'Thu', 'booking' ) , 5 => __( 'Fri', 'booking' ) , 6 => __( 'Sat', 'booking' ) , 7 => __( 'Sun', 'booking' ) ) , '1' => array( //FixIn: 7.0.1.11 //FixIn: 8.7.7.14 1 => mb_substr( __( 'Mon', 'booking' ), 0, -1 ) , 2 => mb_substr( __( 'Tue', 'booking' ), 0, -1 ) , 3 => mb_substr( __( 'Wed', 'booking' ), 0, -1 ) , 4 => mb_substr( __( 'Thu', 'booking' ), 0, -1 ) , 5 => mb_substr( __( 'Fri', 'booking' ), 0, -1 ) , 6 => mb_substr( __( 'Sat', 'booking' ), 0, -1 ) , 7 => mb_substr( __( 'Sun', 'booking' ), 0, -1 ) ) , 'short' => array( 1 => mb_substr( __( 'Mon', 'booking' ), 0, 1 ) , 2 => mb_substr( __( 'Tue', 'booking' ), 0, 1 ) , 3 => mb_substr( __( 'Wed', 'booking' ), 0, 1 ) , 4 => mb_substr( __( 'Thu', 'booking' ), 0, 1 ) , 5 => mb_substr( __( 'Fri', 'booking' ), 0, 1 ) , 6 => mb_substr( __( 'Sat', 'booking' ), 0, 1 ) , 7 => mb_substr( __( 'Sun', 'booking' ), 0, 1 ) ) ); } /** * Rezet data in previos cell */ private function reset_data_in_previous_cell(){ $this->data_in_previous_cell = array( 'bookings_in_cell' => array(), 'previous_month' => '' ); } //////////////////////////////////////////////////////////////////////////// /** * Init Timeline From page shortcode * * @param array $attr = array( 'wh_booking_type' => '' , 'is_matrix' => false , 'view_days_num' => '30' , 'scroll_start_date' => '' , 'scroll_day' => 0 , 'scroll_month' => 0 ); */ public function client_init( $attr ) { $this->is_frontend = true; //FixIn:7.0.1.50 if ( isset( $attr['options'] ) ) { $bk_otions = $attr['options']; $bk_otions = html_entity_decode( $bk_otions ); //FixIn: 9.8.15.6 $custom_params = array(); if (! empty($bk_otions)) { $param ='\s*([^\s]+)=[\'"]{1}([^\'"]+)[\'"]{1}\s*'; // Find all possible options $pattern_to_search='%\s*{([^\s]+)' . $param .'}\s*[,]?\s*%'; preg_match_all($pattern_to_search, $bk_otions, $matches, PREG_SET_ORDER); //debuge($matches); /** * [bookingtimeline ... options='{resource_link 3="http://beta/resource-apartment3-id3/"},{resource_link 4="http://beta/resource-3-id4/"}' ... ] [0] => {resource_link 3="http://beta/resource-apartment3-id3/"}, [1] => resource_link // Name [2] => 3 // ID [3] => http://beta/resource-apartment3-id3/ // Value */ foreach ( $matches as $matche_value ) { if ( ! isset( $this->options[ $matche_value[1] ] ) ) { $this->options[ $matche_value[1] ] = array(); } $this->options[ $matche_value[1] ][ $matche_value[2] ] = $matche_value[3]; } } //debuge($this->options); } //FixIn:7.0.1.50 //Ovverride some parameters //if ( isset( $attr['resource_id'] ) ) { $attr['type'] = $attr['resource_id']; } if ( isset( $attr['type'] ) ) { $attr['wh_booking_type'] = $attr['type']; //Instead of 'wh_booking_type' paramter in shortcode is used 'type' parameter } // Get paramaters from shortcode paramaters $this->define_request_view_params_from_params( $attr ); if ( ! $this->request_args['is_matrix'] ) $this->timeline_titles['header_column1'] = ''; //Override any possible titles from shortcode paramaters $this->timeline_titles = wp_parse_args( $attr, $this->timeline_titles ); // Get clean parameters to request booking data $args = $this->wpbc_get_clean_paramas_from_request_for_timeline(); //FixIn: 8.1.3.5 /** Client - Page first load * * If provided valid request_args['booking_hash'] * - Firstly defined in constructor in $_REQUEST['booking_hash'] * - or overwrited in define_request_view_params_from_params from parameters in shortcode 'booking_hash' * then check, if exist booking for this hash. * If exist, get Email of this booking, and * filter getting all other bookings by email keyword. * Addtionly set param ['only_booked_resources'] for showing only booking resources with exist bookings. */ if ( isset( $this->request_args['booking_hash'] ) ) { // Get booking details by HASH, and then return Email (or other data of booking, or false if error $booking_details_email = wpbc_get__booking_data_field__by_booking_hash( $this->request_args['booking_hash'] , 'email' ); if ( ! empty( $booking_details_email ) ) { // Do not show booking resources with no bookings $this->request_args['only_booked_resources'] = 1; //Set keyword for showing bookings ony relative to this email $args['wh_keyword'] = $booking_details_email; // 'jo@wpbookingcalendar.com'; } } //FixIn: 8.1.3.5 - End // Get booking data $bk_listing = wpbc_get_bookings_objects( $args ); $this->bookings = $bk_listing['bookings']; $this->booking_types = $bk_listing['resources']; //Get Dates and Times for Timeline format //debuge($this->bookings[84]); $bookings_date_time = $this->wpbc_get_dates_and_times_for_timeline( $this->bookings ); $this->dates_array = $bookings_date_time[0]; $this->time_array_new = $bookings_date_time[1]; //debuge($this->time_array_new['2017-01-13']); //$milliseconds = round(microtime(true) * 1000); //FixIn: 7.0.Beta.18 $milliseconds = rand( 10000, 99999 ); $this->html_client_id = 'wpbc_timeline_' . $milliseconds; return $this->html_client_id; } /** * Init parameters after Ajax Navigation actions * * @param array $attr * @return string html_client_id - exist from input parameters */ public function ajax_init( $attr ) { if ( ! defined( 'WPBC_TIMELINE_AJAX' ) ) { define( 'WPBC_TIMELINE_AJAX', true ); } //FixIn: 8.4.7.13 $this->is_frontend = (bool) $attr['is_frontend'];; //Ovverride some parameters //if ( isset( $attr['resource_id'] ) ) { $attr['type'] = $attr['resource_id']; } if ( isset( $attr['type'] ) ) { $attr['wh_booking_type'] = $attr['type']; //Instead of 'wh_booking_type' paramter in shortcode is used 'type' parameter } //debuge($this->request_args, $attr); // Get paramaters from shortcode paramaters $this->define_request_view_params_from_params( $attr ); //debuge($this->request_args); if ( ! $this->request_args['is_matrix'] ) { switch ( $this->request_args['view_days_num'] ) { case '90': case '30': if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); else $scroll_day = 0; //FixIn: 8.9.4.3 // Here we need to define number of days to scroll depends from selected number of days to show. $days_num_to_scroll = intval( get_bk_option( 'booking_timeline__month_mode__days_number_show' ) ); if ( empty( $days_num_to_scroll ) ) { $days_num_to_scroll = 7; } if ( $attr['nav_step'] == '-1' ) { $this->request_args['scroll_day'] = intval( $scroll_day - $days_num_to_scroll ); } if ( $attr['nav_step'] == '1' ) { $this->request_args['scroll_day'] = intval( $scroll_day + $days_num_to_scroll ); } /* * From Admin panel: * // Here we need to define number of days to scroll depends from selected number of days to show. $days_num_to_scroll = intval( get_bk_option( 'booking_calendar_overview__day_mode__days_number_show' ) ); if ( empty( $days_num_to_scroll ) ) { $days_num_to_scroll = 7; } $scroll_params = array( '&scroll_day='.intval( $scroll_day - $days_num_to_scroll * 2 ), '&scroll_day='.intval( $scroll_day - $days_num_to_scroll ), '&scroll_day=0', '&scroll_day='.intval( $scroll_day + $days_num_to_scroll ), '&scroll_day='.intval( $scroll_day + $days_num_to_scroll *2 ) ); $scroll_titles = array( __( 'Previous', 'booking' ) . ' ' . ( 2 * $days_num_to_scroll ) . ' ' . __( 'days', 'booking' ), __( 'Previous', 'booking' ) . ' ' . $days_num_to_scroll . ' ' . __( 'days', 'booking' ), __('Current week' ,'booking'), __( 'Next', 'booking' ) . ' ' . $days_num_to_scroll . ' ' . __( 'days', 'booking' ), __( 'Next', 'booking' ) . ' ' . ( 2 * $days_num_to_scroll ) . ' ' . __( 'days', 'booking' ) ); */ break; default: // 365 if ( !isset( $this->request_args['scroll_month'] ) ) $this->request_args['scroll_month'] = 0; $scroll_month = intval( $this->request_args['scroll_month'] ); if ( $attr['nav_step'] == '-1' ) $this->request_args['scroll_month'] = intval( $scroll_month - 1 ); if ( $attr['nav_step'] == '1' ) $this->request_args['scroll_month'] = intval( $scroll_month + 1 ); /* $scroll_params = array( '&scroll_month='.intval($scroll_month-3), '&scroll_month='.intval($scroll_month-1), '&scroll_month=0', '&scroll_month='.intval($scroll_month+1 ), '&scroll_month='.intval($scroll_month+3) ); $scroll_titles = array( __('Previous 3 months' ,'booking'), __('Previous month' ,'booking'), __('Current month' ,'booking'), __('Next month' ,'booking'), __('Next 3 months' ,'booking') );*/ break; } } else { // Matrix switch ( $this->request_args['view_days_num'] ) { case '1': //Day if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); else $scroll_day = 0; if ( $attr['nav_step'] == '-1' ) $this->request_args['scroll_day'] = intval( $scroll_day - 1 ); if ( $attr['nav_step'] == '1' ) $this->request_args['scroll_day'] = intval( $scroll_day + 1 ); /* $scroll_params = array( '&scroll_day='.intval($scroll_day-7), '&scroll_day='.intval($scroll_day-1), '&scroll_day=0', '&scroll_day='.intval($scroll_day+1 ), '&scroll_day='.intval($scroll_day+7) ); $scroll_titles = array( __('Previous 7 days' ,'booking'), __('Previous day' ,'booking'), __('Current day' ,'booking'), __('Next day' ,'booking'), __('Next 7 days' ,'booking') );*/ break; case '7': //Week if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); else $scroll_day = 0; if ( $attr['nav_step'] == '-1' ) $this->request_args['scroll_day'] = intval( $scroll_day - 7 ); if ( $attr['nav_step'] == '1' ) $this->request_args['scroll_day'] = intval( $scroll_day + 7 ); /* $scroll_params = array( '&scroll_day='.intval($scroll_day-4*7), '&scroll_day='.intval($scroll_day-7), '&scroll_day=0', '&scroll_day='.intval($scroll_day+7 ), '&scroll_day='.intval($scroll_day+4*7) ); $scroll_titles = array( __('Previous 4 weeks' ,'booking'), __('Previous week' ,'booking'), __('Current week' ,'booking'), __('Next week' ,'booking'), __('Next 4 weeks' ,'booking') );*/ break; case '30': case '60': case '90': //3 months if ( !isset( $this->request_args['scroll_month'] ) ) $this->request_args['scroll_month'] = 0; $scroll_month = intval( $this->request_args['scroll_month'] ); if ( $attr['nav_step'] == '-1' ) $this->request_args['scroll_month'] = intval( $scroll_month - 1 ); if ( $attr['nav_step'] == '1' ) $this->request_args['scroll_month'] = intval( $scroll_month + 1 ); /* $scroll_params = array( '&scroll_month='.intval($scroll_month-3), '&scroll_month='.intval($scroll_month-1), '&scroll_month=0', '&scroll_month='.intval($scroll_month+1 ), '&scroll_month='.intval($scroll_month+3) ); $scroll_titles = array( __('Previous 3 months' ,'booking'), __('Previous month' ,'booking'), __('Current month' ,'booking'), __('Next month' ,'booking'), __('Next 3 months' ,'booking') );*/ break; default: // 30, 60, 90... if ( !isset( $this->request_args['scroll_month'] ) ) $this->request_args['scroll_month'] = 0; $scroll_month = intval( $this->request_args['scroll_month'] ); if ( $attr['nav_step'] == '-1' ) $this->request_args['scroll_month'] = intval( $scroll_month - 1 ); if ( $attr['nav_step'] == '1' ) $this->request_args['scroll_month'] = intval( $scroll_month + 1 ); /* $scroll_params = array( '&scroll_month='.intval($scroll_month-3), '&scroll_month='.intval($scroll_month-1), '&scroll_month=0', '&scroll_month='.intval($scroll_month+1 ), '&scroll_month='.intval($scroll_month+3) ); $scroll_titles = array( __('Previous 3 months' ,'booking'), __('Previous month' ,'booking'), __('Current month' ,'booking'), __('Next month' ,'booking'), __('Next 3 months' ,'booking') ); */ break; } } // Titles if ( ! $this->request_args['is_matrix'] ) $this->timeline_titles['header_column1'] = ''; //Override any possible titles from shortcode paramaters $this->timeline_titles = wp_parse_args( $attr, $this->timeline_titles ); // Get clean parameters to request booking data $args = $this->wpbc_get_clean_paramas_from_request_for_timeline(); //FixIn: 8.1.3.5 /** * If provided valid ['booking_hash'] in timeline_obj in JavaScript param during Ajax request, * then check, if exist booking for this hash. If exist, get Email of this booking, and * filter getting all other bookings by email keyword. * Addtionly set param ['only_booked_resources'] for showing only booking resources with exist bookings */ if ( isset( $attr['booking_hash'] ) ) { // Get booking details by HASH, and then return Email (or other data of booking, or false if error $booking_details_email = wpbc_get__booking_data_field__by_booking_hash( $attr['booking_hash'] , 'email' ); //debuge($attr, $booking_details_email); if ( ! empty( $booking_details_email ) ) { // Do not show booking resources with no bookings $this->request_args['only_booked_resources'] = 1; //Set keyword for showing bookings ony relative to this email $args['wh_keyword'] = $booking_details_email; // 'jo@wpbookingcalendar.com'; } if ( ( empty( $booking_details_email ) ) && ( ! empty( $attr['booking_hash'] ) ) ) { //FixIn: 8.4.6.1 //FixIn: 8.4.5.13 $this->request_args['only_booked_resources'] = 1; $args['wh_keyword'] = '``^`````^^````^`````````'; } } //FixIn: 8.1.3.5 - End // Get booking data $bk_listing = wpbc_get_bookings_objects( $args ); $this->bookings = $bk_listing['bookings']; $this->booking_types = $bk_listing['resources']; //Get Dates and Times for Timeline format $bookings_date_time = $this->wpbc_get_dates_and_times_for_timeline( $this->bookings ); $this->dates_array = $bookings_date_time[0]; $this->time_array_new = $bookings_date_time[1]; $this->html_client_id = $attr['html_client_id']; return $this->html_client_id; } /** * Define initial REQUEST parameters for Admin Panel and Get bookings and resources */ public function admin_init() { // User //////////////////////////////////////////////////////////////// $user = wpbc_get_current_user(); $this->current_user_id = $user->ID; $this->is_frontend = false; // Get paramaters from REQUEST $this->define_request_view_params(); if ( ! $this->request_args['is_matrix'] ) $this->timeline_titles['header_column1'] = ''; // debuge($this->request_args); // Get clean parameters to request booking data $args = $this->wpbc_get_clean_paramas_from_request_for_timeline(); // Get booking data $bk_listing = wpbc_get_bookings_objects( $args ); $this->bookings = $bk_listing['bookings']; $this->booking_types = $bk_listing['resources']; //Get Dates and Times for Timeline format $bookings_date_time = $this->wpbc_get_dates_and_times_for_timeline( $this->bookings ); $this->dates_array = $bookings_date_time[0]; $this->time_array_new = $bookings_date_time[1]; } public function client_navigation( $param ) { ?> <script type="text/javascript"> wpbc_timeline_obj["<?php echo $this->html_client_id; ?>"] = { is_frontend: "<?php echo ( $this->is_frontend ? '1' : '0' ); ?>" , html_client_id: "<?php echo $this->html_client_id; ?>" , wh_booking_type: "<?php echo $this->request_args['wh_booking_type']; ?>" , is_matrix: "<?php echo ( $this->request_args['is_matrix'] ? '1' : '0' ); ?>" , view_days_num: "<?php echo $this->request_args['view_days_num']; ?>" , scroll_start_date: "<?php echo $this->request_args['scroll_start_date']; ?>" , scroll_day: "<?php echo $this->request_args['scroll_day']; ?>" , scroll_month: "<?php echo $this->request_args['scroll_month']; ?>" , 'header_column1': "<?php echo esc_js( $this->timeline_titles['header_column1'] ); ?>" , 'header_column2': "<?php echo esc_js( $this->timeline_titles['header_column2'] ); ?>" , 'header_title': "<?php echo esc_js( $this->timeline_titles['header_title'] ); ?>" , 'wh_trash': "<?php echo esc_js( $this->request_args['wh_trash'] ); ?>" , 'limit_hours': "<?php echo esc_js( $this->request_args['limit_hours'] ); ?>" //FixIn: 7.0.1.14 , 'only_booked_resources': "<?php echo esc_js( $this->request_args['only_booked_resources'] ); ?>" //FixIn: 7.0.1.51 , 'options': '<?php echo wp_json_encode( $this->options ); ?>' //FixIn: 9.2.1.8 //FixIn: 7.2.1.14 , 'booking_hash': "<?php echo esc_js( $this->request_args['booking_hash'] ); ?>" //FixIn: 8.1.3.5 }; </script> <div class="flex_tl_nav"> <div class="flex_tl_prev" href="javascript:void(0)" onclick="javascript:wpbc_flextimeline_nav( wpbc_timeline_obj['<?php echo $this->html_client_id; ?>'], -1 );"><a>«</a></div> <div class="flex_tl_title"><?php echo $param['title'] ?></div> <div class="flex_tl_next" href="javascript:void(0)" onclick="javascript:wpbc_flextimeline_nav( wpbc_timeline_obj['<?php echo $this->html_client_id; ?>'], 1 );"><a>»</a></div> </div> <?php } //////////////////////////////////////////////////////////////////////////// // S u p p o r t //////////////////////////////////////////////////////////////////////////// /** * Get array of cleaned (limited number) paramas from request for getting bookings by "wpbc_get_bookings_objects" * * @return array */ public function wpbc_get_clean_paramas_from_request_for_timeline() { //Replacing in this file from date( to date_i18n( to wpbc_datetime__no_wp_timezone( //FixIn: 9.9.0.18 $start_year = intval( wpbc_datetime__no_wp_timezone( "Y" ) ); $start_month = intval( wpbc_datetime__no_wp_timezone( "m" ) ); $start_day = 1; //debuge( '1.( $start_year, $start_month, $start_day , $this->request_args ', $start_year, $start_month, $start_day , $this->request_args ); if ( ! empty( $this->request_args['scroll_start_date'] ) ) { // scroll_start_date=2013-07-01 list( $start_year, $start_month, $start_day ) = explode( '-', $this->request_args['scroll_start_date'] ); $start_year = intval( $start_year ); $start_month = intval( $start_month ); $start_day = intval( $start_day ); } //debuge( '2.( $start_year, $start_month, $start_day )', $start_year, $start_month, $start_day ); $scroll_day = 0; $scroll_month = 0; if ( ( isset( $this->request_args['view_days_num'] ) ) //&& ($this->request_args['view_days_num'] != '30') ) $view_days_num = $this->request_args['view_days_num']; else $view_days_num = get_bk_option( 'booking_view_days_num' ); $view_days_num = intval( $view_days_num ); //debuge( '2.1( $view_days_num )', $view_days_num ); $is_matrix = (bool) $this->request_args['is_matrix']; if ( $is_matrix ) { switch ( $view_days_num ) { case '1': if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = intval( wpbc_datetime__no_wp_timezone( "d" ) ); // Today date if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); break; case '7': if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = intval( wpbc_datetime__no_wp_timezone( "d" ) ); //Today date $start_week_day_num = intval( wpbc_datetime__no_wp_timezone( "w" ) ); $start_day_weeek = intval( get_bk_option( 'booking_start_day_weeek' ) ); //[0]:Sun .. [6]:Sut if ( $start_week_day_num != $start_day_weeek ) { for ( $d_inc = 1; $d_inc < 8; $d_inc++ ) { // Just get week back $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) - intval( $d_inc ) ), intval( $start_year ) ); $start_week_day_num = intval( wpbc_datetime__no_wp_timezone( "w", $real_date ) ); if ( $start_week_day_num == $start_day_weeek ) { $start_day = intval( wpbc_datetime__no_wp_timezone( "d", $real_date ) ); $start_year = intval( wpbc_datetime__no_wp_timezone( "Y", $real_date ) ); $start_month = intval( wpbc_datetime__no_wp_timezone( "m", $real_date ) ); $d_inc = 9; } } } if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + 7 + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); break; case '30': if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = intval( $this->request_args['scroll_month'] ); //debuge('3.$scroll_month, $start_month, $start_day, $start_year', $scroll_month, $start_month, $start_day, $start_year ); $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + intval( $scroll_month ) ), intval( $start_day ), intval( $start_year ) ); //debuge('4.$real_date',$real_date); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); //debuge('5.$wh_booking_date',$wh_booking_date); $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + 1 + intval( $scroll_month ) ), ( intval( $start_day ) - 1 ), intval( $start_year ) ); //debuge('6.$real_date',$real_date); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); //debuge('7.$wh_booking_date2', $wh_booking_date2); break; case '60': if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = intval( $this->request_args['scroll_month'] ); $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + intval( $scroll_month ) ), intval( $start_day ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2012-12-01'; $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + 2 + intval( $scroll_month ) ), ( intval( $start_day ) - 1 ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2013-02-31'; break; //////////////////////////////////////////////////////////////////////////////// default: // 30 - default if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = intval( $this->request_args['scroll_month'] ); $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + intval( $scroll_month ) ), intval( $start_day ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2012-12-01'; $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + 1 + intval( $scroll_month ) ), ( intval( $start_day ) - 1 ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2012-12-31'; break; } } else { // Single resource switch ( $view_days_num ) { case '90': if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = intval( wpbc_datetime__no_wp_timezone( "d" ) ); //Today Date $start_week_day_num = intval( wpbc_datetime__no_wp_timezone( "w" ) ); $start_day_weeek = intval( get_bk_option( 'booking_start_day_weeek' ) ); //[0]:Sun .. [6]:Sut if ( $start_week_day_num != $start_day_weeek ) { for ( $d_inc = 1; $d_inc < 8; $d_inc++ ) { // Just get week back $real_date = mktime( 0, 0, 0, intval($start_month), (intval($start_day) - intval($d_inc) ), intval($start_year) ); $start_week_day_num = intval( wpbc_datetime__no_wp_timezone( "w", $real_date ) ); if ( $start_week_day_num == $start_day_weeek ) { $start_day = intval( wpbc_datetime__no_wp_timezone( "d", $real_date ) ); $start_year = intval( wpbc_datetime__no_wp_timezone( "Y", $real_date ) ); $start_month = intval( wpbc_datetime__no_wp_timezone( "m", $real_date ) ); $d_inc = 9; } } } if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2012-12-01'; $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + 7 * 12 + 7 + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2013-12-31'; break; case '30': if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = intval( wpbc_datetime__no_wp_timezone( "d" ) ); //Today Date if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = intval( $this->request_args['scroll_day'] ); $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2012-12-01'; $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + 31 + intval( $scroll_day ) ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2013-12-31'; break; default: // 365 if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = intval( $this->request_args['scroll_month'] ); else $scroll_month = 0; $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + intval( $scroll_month ) ), intval( $start_day ), intval( $start_year ) ); $wh_booking_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2012-12-01'; $real_date = mktime( 0, 0, 0, ( intval( $start_month ) + intval( $scroll_month ) + 13 ), ( intval( $start_day ) - 1 ), intval( $start_year ) ); $wh_booking_date2 = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); // '2013-12-31'; break; } } $or_sort = ''; $args = array( 'wh_booking_type' => $this->request_args['wh_booking_type'], 'wh_approved' => '', 'wh_booking_id' => '', 'wh_is_new' => '', 'wh_pay_status' => 'all', 'wh_keyword' => '', 'wh_booking_date' => $wh_booking_date, 'wh_booking_date2' => $wh_booking_date2, 'wh_modification_date' => '3', 'wh_modification_date2' => '', 'wh_cost' => '', 'wh_cost2' => '', 'or_sort' => $or_sort, 'page_num' => '1', 'wh_trash' => $this->request_args['wh_trash'], 'limit_hours' => $this->request_args['limit_hours'], 'only_booked_resources' => $this->request_args['only_booked_resources'], //FixIn: 7.0.1.51 'page_items_count' => '100000' ); //debuge('8.',$args); return $args; } /** * Define View Params from $_REQUEST */ public function define_request_view_params() { // All other sanitizing and escaping are inside of this function wpbc_check_request_paramters(), which executing before. //FixIn: 8.9.2.1 // Used once for comma seperated resources only. if ( isset( $_REQUEST['wh_booking_type'] ) ) { $this->request_args['wh_booking_type'] = wpbc_clean_digit_or_csd( $_REQUEST['wh_booking_type'] ); //FixIn: 8.9.2.1 } elseif ( isset( $_GET['booking_type'] ) ) { $this->request_args['wh_booking_type'] = wpbc_clean_digit_or_csd( $_GET['booking_type'] ); //FixIn: 8.9.2.1 } if ( ( isset( $_REQUEST['wh_booking_type'] ) ) && ( strpos( $_REQUEST['wh_booking_type'], ',' ) !== false ) ) $this->request_args['is_matrix'] = true; if ( isset( $_REQUEST['view_days_num'] ) ) $this->request_args['view_days_num'] = $_REQUEST['view_days_num']; if ( isset( $_REQUEST['scroll_start_date'] ) ) $this->request_args['scroll_start_date'] = $_REQUEST['scroll_start_date']; if ( isset( $_REQUEST['scroll_day'] ) ) $this->request_args['scroll_day'] = $_REQUEST['scroll_day']; if ( isset( $_REQUEST['scroll_month'] ) ) $this->request_args['scroll_month'] = $_REQUEST['scroll_month']; if ( isset( $_REQUEST['wh_trash'] ) ) $this->request_args['wh_trash'] = $_REQUEST['wh_trash']; if ( isset( $_REQUEST['limit_hours'] ) ) $this->request_args['limit_hours'] = $_REQUEST['limit_hours']; //FixIn: 7.0.1.14 if ( isset( $_REQUEST['only_booked_resources'] ) ) $this->request_args['only_booked_resources'] = 1;//$_REQUEST['only_booked_resources']; //FixIn: 7.0.1.51 } /** * Define Request View Params * * @param array $param = = array( 'wh_booking_type' => '' , 'is_matrix' => false , 'view_days_num' => '30' , 'scroll_start_date' => '' , 'scroll_day' => 0 , 'scroll_month' => 0 ); */ public function define_request_view_params_from_params( $param ) { //debuge( $param , $this->options , maybe_unserialize( wp_unslash( $param['options'] ) ) );die; if ( isset( $param['wh_booking_type'] ) ) $this->request_args['wh_booking_type'] = $param['wh_booking_type']; // Used once for comma seperated resources only. if ( ( isset( $param['wh_booking_type'] ) ) && ( strpos( $param['wh_booking_type'], ',' ) !== false ) ) $this->request_args['is_matrix'] = true; if ( isset( $param['view_days_num'] ) ) $this->request_args['view_days_num'] = $param['view_days_num']; if ( isset( $param['scroll_start_date'] ) ) $this->request_args['scroll_start_date'] = $param['scroll_start_date']; if ( isset( $param['scroll_day'] ) ) $this->request_args['scroll_day'] = $param['scroll_day']; if ( isset( $param['scroll_month'] ) ) $this->request_args['scroll_month'] = $param['scroll_month']; if ( isset( $param['wh_trash'] ) ) $this->request_args['wh_trash'] = $param['wh_trash']; if ( isset( $param['limit_hours'] ) ) $this->request_args['limit_hours'] = $param['limit_hours']; //FixIn: 7.0.1.14 if ( isset( $param['only_booked_resources'] ) ) $this->request_args['only_booked_resources'] = $param['only_booked_resources']; //FixIn: 7.0.1.14 if ( isset( $param['booking_hash'] ) ) $this->request_args['booking_hash'] = $param['booking_hash']; //FixIn: 8.1.3.5 if ( ( empty( $this->options ) ) && ( isset( $param['options'] ) ) ) { $this->options = json_decode( wp_unslash( $param['options'] ), true ); //FixIn: 9.2.1.8 } } /** * Get D A T E S and T I M E S from B o o k i n g s * * @param array $bookings - Booking input array * @return array - array( $dates_array, $time_array_new ) */ public function wpbc_get_dates_and_times_for_timeline( $bookings ) { // Generate: Array ( [0] => array(), [3600] => array(), [7200] => array(), ..... [43200] => array(),.... [82800] => array() ) $fixed_time_hours_array = array(); for ( $tt = 0; $tt < 24; $tt++ ) { $fixed_time_hours_array[$tt * 60 * 60] = array(); } //debuge($bookings); // Dates array: { '2012-12-24' => array( Booking ID 1, Booking ID 2, ....), ... } $dates_array = $time_array = array(); foreach ( $bookings as $bk ) { /** * Check situation , while we are having end time but do not have start time, like here: * $bk->dates = Array( [0] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-22 00:00:00 [approved] => 1 [type_id] => ) [1] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-23 00:00:00 [approved] => 1 [type_id] => ) [2] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-24 15:00:02 [approved] => 1 [type_id] => ) ) * * So we need to add the new Start time before End time, like this: * [0] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-22 00:00:00 [approved] => 1 [type_id] => ) [1] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-23 00:00:00 [approved] => 1 [type_id] => ) [2] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-24 00:00:01 [approved] => 1 [type_id] => ) [2] => stdClass Object ( [booking_id] => 911 [booking_date] => 2019-07-24 15:00:02 [approved] => 1 [type_id] => ) * */ $dates_to_check = array(); $is_started = 0; foreach ( $bk->dates as $dt ) { $last_second = substr( $dt->booking_date, -1); // Count start end end times started. switch ( $last_second ) { case '1': // Start $is_started++; break; case '2': // End case '8': //FixIn: 9.0.1.2 $is_started--; break; case '0': // Full default: } // Its means that we have now end time, but was not having start time if ( $is_started < 0 ) { $is_started++; $my_temp_start_time = clone $dt; $temp_time = explode( ' ' ,$my_temp_start_time->booking_date ); $temp_time = $temp_time[0] . ' 00:00:01'; $my_temp_start_time->booking_date = $temp_time; // Add start time day $dates_to_check[] = $my_temp_start_time; } $dates_to_check[] = $dt; } if ( 0 != $is_started ) { ?><div class="warning_check_in_out_not_equal"><?php //FixIn: 9.2.4.5 ?><div style="margin:0 10px 10px;font-weight:600;font-size:1.1em;"><?php printf( 'Warning! Structure of your booking dates has an issue.'); ?></div><?php ?><div style="margin:0 10px 30px;font-weight:400;font-size:1.1em;"><?php printf( 'Number of check in times != check out times in a booking, or check-in time is older than the check-out time on the same date in the same booking.' ); ?></div><?php ?><div style="margin:10px;font-weight:600;font-size:1.05em;color:#752;"><?php printf( 'To resolve this issue, you need to delete the following bookings and create new bookings with the same booking details.' ); ?></div><?php $bookings_to_del = array(); for( $day_i = 0; $day_i <= ( count( $dates_to_check ) - 1 ); $day_i++) { $bookings_to_del[] = $dates_to_check[$day_i]->booking_id; } $bookings_to_del = array_unique ( $bookings_to_del ); for( $bk_i = 0; $bk_i <= ( count( $bookings_to_del ) - 1 ); $bk_i++) { $booking_id__to_del = $bookings_to_del [ $bk_i ]; ?><div style="margin:10px;font-weight:600;font-size:1.05em;"><?php printf( 'Delete booking with %s', htmlspecialchars_decode( '<strong></strong><a href="' . esc_url( wpbc_get_bookings_url() . '&view_mode=vm_listing&tab=actions&wh_booking_id=' . $booking_id__to_del ) . '">' . 'ID = ' . $booking_id__to_del . '</a></strong>' ) ); ?></div><?php } ?><div style="margin:50px;font-weight:600;font-size:1.05em;"></div><?php debuge( $dates_to_check, $is_started) ; ?></div><script type="text/javascript"> jQuery( '.warning_check_in_out_not_equal' ).animate( {opacity: 1}, 15000 ).toggle(1000); </script><?php } foreach ( $dates_to_check as $dt ) { //foreach ( $bk->dates as $dt ) { // Transform from MySQL date to PHP date $dt->booking_date = trim( $dt->booking_date ); $dta = explode( ' ', $dt->booking_date ); $tms = $dta[1]; //FixIn: 8.2.1.21 //if ( substr( $dta[1], - 1 ) == '2' ) { continue; } $tms = explode( ':', $tms ); // array('13','30','40') $dta = $dta[0]; $dta = explode( '-', $dta ); // array('2012','12','30') $php_dt = mktime( intval( $tms[0] ), intval( $tms[1] ), intval( $tms[2] ), intval( $dta[1] ), intval( $dta[2] ), intval( $dta[0] ) ); if ( ( isset( $dt->type_id ) ) && (!empty( $dt->type_id )) ) $date_bk_res_id = $dt->type_id; else $date_bk_res_id = $bk->booking_type; //FixIn: 9.9.0.18 - booking $my_date = wpbc_datetime__no_wp_timezone( "Y-m-d", $php_dt ); // '2012-12-01'; if ( !isset( $dates_array[$my_date] ) ) { $dates_array[$my_date] = array( array( 'id' => $bk->booking_id, 'resource' => $date_bk_res_id ) ); } else { $dates_array[$my_date][] = array( 'id' => $bk->booking_id, 'resource' => $date_bk_res_id ); } //FixIn: 9.9.0.18 - booking $my_time = wpbc_datetime__no_wp_timezone( "H:i:s", $php_dt ); // '21:55:01'; $my_time_index = explode( ':', $my_time ); $my_time_index = (int) ($my_time_index[0] * 60 * 60 + $my_time_index[1] * 60 + $my_time_index[2]); $my_time = strtotime( $my_time ); //FixIn: 8.1.1.6 if ( !isset( $time_array[$my_date] ) ) { $time_array[$my_date] = array( $my_time_index => array( $my_time => array( 'id' => $bk->booking_id, 'resource' => $date_bk_res_id ) ) ); } else { if ( !isset( $time_array[$my_date][$my_time_index] ) ) $time_array[$my_date][$my_time_index] = array( $my_time => array( 'id' => $bk->booking_id, 'resource' => $date_bk_res_id ) ); else { if ( !isset( $time_array[$my_date][$my_time_index][$my_time] ) ) $time_array[$my_date][$my_time_index][$my_time] = array( 'id' => $bk->booking_id, 'resource' => $date_bk_res_id ); else { $my_time_inc = 3; while ( isset( $time_array[$my_date][$my_time_index][$my_time + $my_time_inc] ) ) { $my_time_inc++; } //Just in case if we are have the booking in the same time, so we are $time_array[$my_date][$my_time_index][($my_time + $my_time_inc)] = array( 'id' => $bk->booking_id, 'resource' => $date_bk_res_id ); } } } } } //debuge($time_array); // Sorting .......... foreach ( $time_array as $key => $value_t ) { // Sort the times from lower to higher ksort( $value_t ); $time_array[$key] = $value_t; } ksort( $time_array ); // Sort array by dates from lower to higher. /* $time_array: $key_date $value_t [2012-12-13] => Array ( $tt_index $times_bk_id_array [44401] => Array ( [12:20:01] => 19) ), [2012-12-14] => Array ( [10802] => Array([03:00:02] => 19), [43801] => Array([12:10:01] => 2) ), .... */ //debuge($time_array); $time_array_new = array(); foreach ( $time_array as $key_date => $value_t ) { // fill the $time_array_new - by bookings of full dates.... $new_times_array = $fixed_time_hours_array; // Array ( [0] => Array, [3600] => Array, [7200] => Array ..... foreach ( $value_t as $tt_index => $times_bk_id_array ) { // [44401] => Array ( [12:20:01] => 19 ), ..... $tt_index_round = floor( ($tt_index / 60) / 60 ) * 60 * 60; // 14400, 18000, $is_bk_for_full_date = $tt_index % 10; // 0, 1, 2 switch ( $is_bk_for_full_date ) { case 0: // Full date - fill every time slot foreach ( $new_times_array as $round_time_slot => $bk_id_array ) { $new_times_array[$round_time_slot] = array_merge( $bk_id_array, array_values( $times_bk_id_array ) ); } //debuge('$time_array[$key_date][$tt_index]',$time_array[$key_date][$tt_index], $round_time_slot); unset( $time_array[$key_date][$tt_index] ); break; case 1: break; case 2: break; default: break; } } if ( count( $time_array[$key_date] ) == 0 ) unset( $time_array[$key_date] ); $time_array_new[$key_date] = $new_times_array; } //$time_array_new - Array filled by bookings FOR FULL DAY booking only //debuge($time_array_new); foreach ( $time_array as $key_date => $value_t ) { $new_times_array_for_day_start = $new_times_array_for_day_end = array(); foreach ( $value_t as $tt_index => $times_bk_id_array ) { // [44401] => Array ( [12:20:01] => 19 ), ..... $tt_index_round = floor( ($tt_index / 60) / 60 ) * 60 * 60; // 14400, 18000, //debuge($tt_index, $tt_index_round); $is_bk_for_full_date = $tt_index % 10; // 0, 1, 2 if ( $is_bk_for_full_date == 1 ) { if ( !isset( $new_times_array_for_day_start[$tt_index_round] ) ) $new_times_array_for_day_start[$tt_index_round] = array(); $new_times_array_for_day_start[$tt_index_round] = array_merge( $new_times_array_for_day_start[$tt_index_round], array_values( $times_bk_id_array ) ); } if ( $is_bk_for_full_date == 2 ) { // Its mean that the booking is finished exactly at the beginig of this hour, // so we will not fill the end of booking in this hour, but in previous if ( ($tt_index_round - $tt_index) == -2 ) { $tt_index_round = $tt_index_round - 60 * 60; } if ( !isset( $new_times_array_for_day_end[$tt_index_round] ) ) $new_times_array_for_day_end[$tt_index_round] = array(); $new_times_array_for_day_end[$tt_index_round] = array_merge( $new_times_array_for_day_end[$tt_index_round], array_values( $times_bk_id_array ) ); } } $time_array[$key_date] = array( 'start' => $new_times_array_for_day_start, 'end' => $new_times_array_for_day_end ); } //debuge($time_array); //$time_array['2019-07-24']['start'][0] = $time_array['2019-07-24']['end'][82800]; /* $time_array [2012-12-24] => Array ( [start] => Array ( [68400] => Array ( [0] => 15 ) ) [end] => Array ( [64800] => Array ( [0] => 6 ) ) ) */ $fill_this_date = array(); //debuge($time_array_new['2017-01-13']); //debuge($time_array_new); // Fil specific times based on start and end times foreach ( $time_array_new as $ddate => $ttime_round_array ) { foreach ( $ttime_round_array as $ttime_round => $bk_id_array ) { // [3600] => Array( [0] => Array ( [id] => 214 [resource] => 9 ), [1] => Array ( [id] => 154 [resource] => 7 //if ('2019-11-27' == $ddate ) { //debuge( ' $fill_this_date', $dates_array[ $ddate ], $fill_this_date ); //} //////////////////////////////////////////////////////////////////////////////////////////////////////// /** * Search for situation, when at some previous date was started some booking at specific start time, like: * Booking #77: "October 30 18:00; December 4; December 25 20:00" * This booking exist in $fill_this_date - array ( [0] => array( [id] => 77, [resource] => 1 ) ) * * but at current date "November 6" (where start other Booking #76: November 6 18:00; November 13; November 27 20:00" * this booking #77 does not exist at all !!! * so we nee to remove this booking(s) from array $fill_this_date */ //FixIn: 8.7.1.1 if(1){ //////////////////////////////////////////////////////////////////////////////////////////////////////// // Search to remove $remove_arr_keys = array(); foreach ( $fill_this_date as $is_remove_key => $is_remove_value ) { /** * Remove elements from $fill_this_date * if such elements does not exist in $dates_array[$ddate] */ if ( ! in_array( $is_remove_value, $dates_array[ $ddate ] ) ) { $remove_arr_keys[] = $is_remove_key; //if ($is_remove_value['id']==76) { //debuge('$ddate,$ttime_round_array',$ddate); //} } } // Removing foreach ( $remove_arr_keys as $is_remove_key ) { unset($fill_this_date[$is_remove_key]); // Remove item at index 1 which is 'for' } $fill_this_date = array_values($fill_this_date); // Re-index the array elements } //////////////////////////////////////////////////////////////////////////////////////////////////////// //if ('2019-11-27' == $ddate ) { //debuge( 'updated $fill_this_date', $fill_this_date ); //} if ( isset( $time_array[$ddate] ) ) { if ( isset( $time_array[$ddate]['start'][$ttime_round] ) ) // array $fill_this_date = array_merge( $fill_this_date, array_values( $time_array[$ddate]['start'][$ttime_round] ) ); //debuge($fill_this_date); $time_array_new[$ddate][$ttime_round] = array_merge( $time_array_new[$ddate][$ttime_round], $fill_this_date ); //debuge('$ttime_round',$ttime_round); //debuge($ddate, $ttime_round, $time_array_new[$ddate][$ttime_round]); //FixIn: 7.0.1.16 - advanced checking about delettion of times in $time_array[$ddate]['end'] // End array checking for deleting. if ( isset( $time_array[$ddate]['end'][$ttime_round] ) ) // array foreach ( $time_array[$ddate]['end'][$ttime_round] as $toDelete ) { //debuge($ddate, $ttime_round, $fill_this_date); //if ( $ddate == '2019-07-24' ) { // debuge('$toDelete, $fill_this_date',$toDelete, $fill_this_date); //} //debuge($toDelete); $fill_this_date_keys_to_delete = array(); foreach ( $fill_this_date as $fill_this_date_key => $check_element_array ) { // [0] => Array ( [id] => 54 [resource] => 5 ) //debuge($ddate,'$toDelete, $check_element_array', $toDelete, $check_element_array); if ( // Check if arrays equals - identical ( is_array( $toDelete ) && is_array( $check_element_array ) ) && ( count( $toDelete ) == count( $check_element_array ) ) && ( array_diff( $toDelete, $check_element_array ) === array_diff( $check_element_array, $toDelete ) ) ) { $fill_this_date_keys_to_delete[] = $fill_this_date_key; // $toDelete element exist so save key in original array } } //FixIn: on 2019-07-24 14:22 /** // Fix, when we are having END time but was not having START time (usually when first booking // was booked for entire day, and last day booking, have the end time. // So in this case at day with end time we need to fill all "round times" with End time data */ //FixIn: 8.7.1.1 if(1) if ( empty( $fill_this_date_keys_to_delete ) ) { // Fill the date by data $toDelete foreach ( $time_array_new[ $ddate ] as $time_round_refill => $time_array_new_value_refill ) { if ( $time_round_refill <= $ttime_round ) { // Refill $time_array_new[ $ddate ][ $time_round_refill ][] = $toDelete; } } } //debuge(' $fill_this_date_keys_to_delete ',$fill_this_date_keys_to_delete ); $fill_this_date_new = array(); foreach ( $fill_this_date as $fill_this_date_key => $fill_this_date_value ) { if ( ! in_array( $fill_this_date_key, $fill_this_date_keys_to_delete ) ) { $fill_this_date_new[] = $fill_this_date_value; } } $fill_this_date = $fill_this_date_new; // Reassign cleared array (with deleted values) //debuge($toDelete); if ( !empty( $fill_this_date ) ) { // $fill_this_date = array_diff( $fill_this_date, array( $toDelete ) ); //if ( $ddate == '2017-01-13' ) { // debuge('AFTER:: $toDelete, $fill_this_date',$toDelete, $fill_this_date); //} } } } } } //debuge( '$dates_array, $time_array_new',$dates_array, $time_array_new ); return array( $dates_array, $time_array_new ); } //////////////////////////////////////////////////////////////////////////// // C a l e n d a r T i m e l i n e /////////////////////////////// //////////////////////////////////////////////////////////////////////////// private function wpbc_dates_only_of_specific_resource( $booked_dates_array, $resource_id, $bookings ) { foreach ( $booked_dates_array as $key => $value ) { $new_array = array(); foreach ( $value as $bk_id ) { if ( $bk_id['resource'] == $resource_id ) { $new_array[] = $bk_id['id']; } } if ( !empty( $new_array ) ) $booked_dates_array[$key] = $new_array; else unset( $booked_dates_array[$key] ); } return $booked_dates_array; } private function wpbc_times_only_of_specific_resource( $time_array_new, $resource_id, $bookings ) { foreach ( $time_array_new as $date_key => $times_array ) { foreach ( $times_array as $time_key => $value ) { $new_array = array(); foreach ( $value as $bk_id ) { if ( $bk_id['resource'] == $resource_id ) { $new_array[] = $bk_id['id']; } } $time_array_new[$date_key][$time_key] = $new_array; } } return $time_array_new; } private function wpbc_write_bk_id_css_classes( $prefix, $previous_booking_id ) { if ( (!isset( $previous_booking_id )) || (empty( $previous_booking_id )) ) return ''; if ( is_string( $previous_booking_id ) ) $bk_id_array = explode( ',', $previous_booking_id ); else if ( is_array( $previous_booking_id ) ) $bk_id_array = $previous_booking_id; else // Some Unknown situation return ''; $bk_id_array = array_unique( $bk_id_array ); // If we are have several bookings, so add this special class if ( count( $bk_id_array ) > 1 ) $css_class = 'here_several_bk_id '; else $css_class = ''; foreach ( $bk_id_array as $bk_id ) { $css_class .= $prefix . $bk_id . ' '; } return $css_class; } //////////////////////////////////////////////////////////////////////////// // Header //////////////////////////////////////////////////////////////////////////// /** Header */ public function wpbc_show_timeline_header_row( $start_date = false ) { $current_resource_id = ''; $is_matrix = $this->request_args['is_matrix']; $view_days_num = $this->request_args['view_days_num']; $start_hour_for_1day_view = 0; //FixIn: 7.0.1.14 $end_hour_for_1day_view = 24; $limit_hours = 24; if ( $is_matrix ) { // MATRIX VIEW switch ( $view_days_num ) { case '1': $days_num = 1; $dwa = $this->week_days_titles['full']; $time_selles_num = 24; if ( isset( $this->request_args[ 'limit_hours' ] ) ) { //FixIn: 7.0.1.14 $limit_hours = explode(',',$this->request_args[ 'limit_hours' ]); $start_hour_for_1day_view = intval( $limit_hours[0] ); $end_hour_for_1day_view = intval( $limit_hours[1] ); $limit_hours = $limit_hours[1] - $limit_hours[0]; } break; case '7': $days_num = 7; $dwa = $this->week_days_titles['3']; $time_selles_num = 1; break; case '30': $days_num = 31; $days_num = intval( wpbc_datetime__no_wp_timezone('t',$start_date) ); // num of days in the specific month, wchih relative to $real_date from header //FixIn: 7.0.1.47 $dwa = $this->week_days_titles['1']; $time_selles_num = 1; break; case '60': $days_num = 62; $dwa = $this->week_days_titles['short']; $time_selles_num = 1; break; default: // 30 $days_num = 31; $dwa = $this->week_days_titles['3']; $time_selles_num = 1; break; } } else { switch ( $view_days_num ) { case '90': $days_num = 7; $dwa = $this->week_days_titles['3']; $time_selles_num = 1; break; case '365': $days_num = 31; //FixIn: 8.7.6.5 //$days_num = intval( wpbc_datetime__no_wp_timezone('t',$start_date) ); // num of days in the specific month, wchih relative to $real_date from header //FixIn: 7.0.1.47 $dwa = $this->week_days_titles['3']; $time_selles_num = 1; break; default: // 30 $days_num = 1; $dwa = $this->week_days_titles['full']; $time_selles_num = 24; if ( isset( $this->request_args[ 'limit_hours' ] ) ) { //FixIn: 7.0.1.14 $limit_hours = explode(',',$this->request_args[ 'limit_hours' ]); $start_hour_for_1day_view = intval( $limit_hours[0] ); $end_hour_for_1day_view = intval( $limit_hours[1] ); $limit_hours = $limit_hours[1] - $limit_hours[0]; } break; } } if ( $start_date === false ) { if ( ! empty( $this->request_args['scroll_start_date'] ) ) list( $start_year, $start_month, $start_day ) = explode( '-', $this->request_args['scroll_start_date'] ); // scroll_start_date=2013-07-01 else list( $start_year, $start_month, $start_day ) = explode( '-', wpbc_datetime__no_wp_timezone( 'Y-n-j' ) ); } else { list( $start_year, $start_month, $start_day ) = explode( '-', wpbc_datetime__no_wp_timezone( 'Y-m-d', $start_date ) ); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Month Line //////////////////////////////////////////////////////////////////////////////////////////////////////////////// ?><div class="flex_tl_dates_bar flex_tl_dates_bar_month"><?php $previous_month = ''; //Scroll months Firstly for ( $d_inc = 0; $d_inc < $days_num; $d_inc++ ) { $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $d_inc ) ), intval( $start_year ) ); $yy = wpbc_datetime__no_wp_timezone( "Y", $real_date ); //2012 $mm = wpbc_datetime__no_wp_timezone( "m", $real_date ); //09 $dd = wpbc_datetime__no_wp_timezone( "d", $real_date ); //31 $ww = wpbc_datetime__no_wp_timezone( "N", $real_date ); //7 $day_week = $dwa[$ww]; //Su if ( ( $previous_month != $mm ) || ( 1 == $dd ) ) { $previous_month = $mm; $month_title = wpbc_datetime__no_wp_timezone( "F", $real_date ); //09 $month_class = ' new_month '; } else { $month_title = ''; $month_class = ''; } ?> <div class="<?php echo implode(' ', array( 'flex_tl_day_cell', 'flex_tl_day_cell_header', 'flex_time_in_days_num_' . $view_days_num, $month_class )); ?>" ><?php // New Month ! if ($month_title != '') { ?><div class="in_cell_month_year"><?php if ( $is_matrix ) { echo $dd . ' ' . $month_title .', ' . $yy ; if ( '1' == $view_days_num ) { echo ' (' . $day_week . ')'; } } else { if ( '30' == $view_days_num ) { //echo '(' . $day_week . ') ' . $dd . ' '; } } ?></div><?php } ?> </div> <?php } ?> </div><?php //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Dates / Times Line //////////////////////////////////////////////////////////////////////////////////////////////////////////////// ?><div class="flex_tl_dates_bar <?php echo $is_matrix ? ' flex_tl_matrix_resources ' : ' flex_tl_single_resource '; ?>" id="timeline_scroller<?php echo $current_resource_id; ?>" ><?php $previous_month = ''; $bk_admin_url_today = wpbc_get_params_in_url( wpbc_get_bookings_url( false, false ), array( 'scroll_month', 'scroll_day', 'scroll_start_date' ) ); for ( $d_inc = 0; $d_inc < $days_num; $d_inc++ ) { $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $d_inc ) ), intval( $start_year ) ); if ( wpbc_datetime__no_wp_timezone( 'm.d.Y' ) == wpbc_datetime__no_wp_timezone( "m.d.Y", $real_date ) ) $is_today = ' today_date '; else $is_today = ''; $yy = wpbc_datetime__no_wp_timezone( "Y", $real_date ); //2012 $mm = wpbc_datetime__no_wp_timezone( "m", $real_date ); //09 $dd = wpbc_datetime__no_wp_timezone( "d", $real_date ); //31 $ww = wpbc_datetime__no_wp_timezone( "N", $real_date ); //7 $day_week = $dwa[$ww]; //Su $day_title = $dd . ' ' . $day_week; if ( $is_matrix ) { if ( $view_days_num == 1 ) { $day_title = '<div class="in_cell_day_num">' . __( 'Times', 'booking' ) . '</div>'; } if ( $view_days_num == 7 ) { $day_title = '<div class="in_cell_day_num">' . $dd . '</div><div class="in_cell_day_week">' . $day_week . '</div>'; } if ( $view_days_num == 30 ) { $day_title = '<div class="in_cell_day_num">' . $dd . '</div><div class="in_cell_day_week">' . $day_week . '</div>'; } if ( $view_days_num == 60 ) { $day_title = '<div class="in_cell_day_num">' . $dd . '</div><div class="in_cell_day_week">' . $day_week . '</div>'; } } else { if ( $view_days_num == 30 ) { $day_title = '<div class="in_cell_day_num">' . __( 'Times', 'booking' ) . '</div>'; } if ( $view_days_num == 90 ) { $day_title = '<div class="in_cell_day_week">' . $day_week . '</div>'; } if ( $view_days_num == 365 ) { $day_title = '<div class="in_cell_day_num">' . $dd . '</div>'; } } $day_filter_id = $yy . '-' . $mm . '-' . $dd; if ( ( $previous_month != $mm ) || ( 1 == $dd ) ) { $previous_month = $mm; $month_class = ' new_month '; } else { $month_class = ''; } ?> <div id="cell_<?php echo $current_resource_id . '_' . $day_filter_id ; ?>" class="<?php echo implode(' ', array( 'flex_tl_day_cell', 'flex_tl_day_cell_header', 'flex_time_in_days_num_' . $view_days_num, 'flex_tl_weekday' . $ww, $day_filter_id, $month_class )); ?>" ><?php if ( ( $is_matrix ) && ( ( $view_days_num == 30 ) || ( $view_days_num == 60 ) ) ) { ?><div class="in_cell_date_container day_num<?php echo $d_inc ?>"><?php if ( ! $this->is_frontend ) { ?><a href='<?php echo $bk_admin_url_today . '&scroll_start_date=' . $yy . '-' . $mm . '-' . $dd; ?>'><?php } echo $day_title; if ( ! $this->is_frontend ) { ?></a><?php } ?></div><?php } else { ?><div class="in_cell_date_container day_num<?php echo $d_inc ?>"><?php echo $day_title;?></div><?php } //////////////////////////////////////////////////////////////////////////////////////// // T i m e c e l l s //////////////////////////////////////////////////////////////////////////////////////// $tm = floor( 24 / $time_selles_num ); if ( $time_selles_num > 1 ) { ?><div class="<?php echo implode(' ', array( 'in_cell_time_section_in_day', 'flex_time_section_in_day_header', 'flex_time_in_days_num_' . $view_days_num )); ?>"><?php for ( $tt = 0; $tt < $time_selles_num; $tt++ ) { ?> <?php if ( ( $tt < $start_hour_for_1day_view ) || ( $tt > $end_hour_for_1day_view ) ) { continue; } //FixIn: 7.0.1.14 ?> <div class="<?php echo 'in_cell_time_hour time_hour' . ( $tt * $tm ); ?>" ><?php $this->show_time_number_in_correct_format( $tt * $tm , $view_days_num ); ?></div><?php } ?></div><?php } ?></div><?php } ?></div><?php return $real_date ; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Booking Row Support functions //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** * Define Init Row settings parameters * * @param $row_settings array * * @return array */ private function get_init_row_settings( $row_settings ){ // Initial params $row_settings['is_matrix'] = $this->request_args['is_matrix']; $row_settings['start_hour_for_1day_view'] = 0; $row_settings['end_hour_for_1day_view'] = 24; $row_settings['limit_hours'] = 24; $row_settings['view_days_num'] = $this->request_args['view_days_num']; // Single booking resource if ( ! $row_settings['is_matrix'] ) { switch ($row_settings['view_days_num']) { case '90': $row_settings['days_num'] = 7; $row_settings['dwa'] = $this->week_days_titles['full']; $row_settings['time_selles_num'] = 1; break; case '365': $row_settings['days_num'] = 31; //$row_settings['days_num'] = intval( wpbc_datetime__no_wp_timezone('t',$row_settings['start_date']) ); // num of days in the specific month, wchih relative to $row_settings['real_date'] from header //FixIn: 7.0.1.47 $row_settings['dwa'] = $this->week_days_titles['1']; $row_settings['time_selles_num'] = 1; break; default: // 30 $row_settings['days_num'] = 1; $row_settings['dwa'] = $this->week_days_titles['3']; $row_settings['time_selles_num'] = 24;//25; if ( isset( $this->request_args[ 'limit_hours' ] ) ) { //FixIn: 7.0.1.14 $row_settings['limit_hours'] = explode(',',$this->request_args[ 'limit_hours' ]); $row_settings['start_hour_for_1day_view'] = intval( $row_settings['limit_hours'][0] ); $row_settings['end_hour_for_1day_view'] = intval( $row_settings['limit_hours'][1] ); $row_settings['limit_hours'] = $row_settings['limit_hours'][1] - $row_settings['limit_hours'][0]; } //$row_settings['view_days_num'] = 1; break; } } else { // Multiple booking resources //$row_settings['view_days_num'] = 365; switch ($row_settings['view_days_num']) { case '1': $row_settings['days_num'] = 1; $row_settings['dwa'] = $this->week_days_titles['full']; $row_settings['time_selles_num'] = 24; if ( isset( $this->request_args[ 'limit_hours' ] ) ) { //FixIn: 7.0.1.14 $row_settings['limit_hours'] = explode(',',$this->request_args[ 'limit_hours' ]); $row_settings['start_hour_for_1day_view'] = intval( $row_settings['limit_hours'][0] ); $row_settings['end_hour_for_1day_view'] = intval( $row_settings['limit_hours'][1] ); $row_settings['limit_hours'] = $row_settings['limit_hours'][1] - $row_settings['limit_hours'][0]; } break; case '7': $row_settings['days_num'] = 7; $row_settings['dwa'] = $this->week_days_titles['full']; $row_settings['time_selles_num'] = 1; break; case '60': $row_settings['days_num'] = 62; $row_settings['dwa'] = $this->week_days_titles['1']; $row_settings['time_selles_num'] = 1; break; case 'old_365': $row_settings['days_num'] = 365; $row_settings['time_selles_num'] = 1; $row_settings['dwa'] = $this->week_days_titles['1']; break; default: // 30 $row_settings['days_num'] = 32; $row_settings['days_num'] = intval( wpbc_datetime__no_wp_timezone('t',$row_settings['start_date']) ); // num of days in the specific month, wchih relative to $row_settings['real_date'] from header //FixIn: 7.0.1.47 $row_settings['dwa'] = $this->week_days_titles['3']; $row_settings['time_selles_num'] = 1;//25; break; } } return $row_settings; } /** * Show time in correct format - showing in Header, and in time CELLs * * @param $time_milliseconds * @param $view_days_num */ private function show_time_number_in_correct_format( $time_milliseconds , $view_days_num ){ //FixIn: 8.1.3.34 $bc_time_format = get_bk_option( 'booking_time_format' ); if ( ! empty( $bc_time_format ) ) { //FixIn: 8.2.1.2 $time_show = wpbc_datetime__no_wp_timezone( str_replace( ':i', '', get_bk_option( 'booking_time_format' ) ), mktime( intval($time_milliseconds), 0, 0 ) ); echo ( $view_days_num < 31 ) ? $time_show : ''; } else { echo( ( $view_days_num < 31 ) ? ( ( ( $time_milliseconds ) < 10 ? '0' : '' ) . ( $time_milliseconds ) . '<sup>:00</sup>' ) : '' ); } } /** * Is show Day View ( showing days || times ) * @param $row_settings * * @return bool */ private function is_show_day_view( $row_settings ){ if ( ( ( 30 == $row_settings['view_days_num'] ) && ( ! $row_settings['is_matrix'] ) ) // Day View for Single || ( ( 1 == $row_settings['view_days_num'] ) && ( $row_settings['is_matrix'] ) ) // Day View for Matrix ) { return true; } else { return false; } } /** * Check, if starting new booking (something changed) relative to previous CELL * * @param array $bookings_in_cell * @param array $previous_bookings_in_cell * * @return bool */ private function is_start_new_booking_cell( $bookings_in_cell, $previous_bookings_in_cell ) { $bookings_in_cell = implode( '|', $bookings_in_cell ); $previous_bookings_in_cell = implode( '|', $previous_bookings_in_cell ); if ( $bookings_in_cell !== $previous_bookings_in_cell ) { return true; } else { return false; } } /** * Check method 2, if starting new booking (something changed) relative to previous CELL * * @param array $bookings_in_cell * @param array $previous_bookings_in_cell * * @return bool */ private function is_start_new_booking_cell2( $bookings_in_cell, $previous_bookings_in_cell ) { $bookings_in_cell = implode( '|', $bookings_in_cell ); $previous_bookings_in_cell = implode( '|', $previous_bookings_in_cell ); $bookings_in_cell_arr = explode( '|', $bookings_in_cell ); $previous_bookings_in_cell_arr = explode( '|', $previous_bookings_in_cell ); $is_check1 = empty( array_diff( $bookings_in_cell_arr, $previous_bookings_in_cell_arr ) ); $is_check2 = empty( array_diff( $previous_bookings_in_cell_arr, $bookings_in_cell_arr ) ); return ( ( ! $is_check1 ) && ( ! $is_check2 ) ); } /** * Get Text for booking Title in PIPELINE * * @param $bk_id * @param $bookings * * @return string */ private function get_booking_title_for_timeline( $bk_id, $bookings ){ $text_in_day_cell = ''; if ( $this->is_frontend ) $what_show_in_day_template = get_bk_option( 'booking_default_title_in_day_for_timeline_front_end' ); else $what_show_in_day_template = get_bk_option( 'booking_default_title_in_day_for_calendar_view_mode' ); if ( function_exists( 'get_title_for_showing_in_day' ) ) { $text_in_day_cell .= esc_textarea( get_title_for_showing_in_day( $bk_id, $bookings, $what_show_in_day_template ) ); //FixIn: 7.1.1.2 } else { if ( ! $this->is_frontend ) { // Default Free //FixIn: 7.1.1.2 $text_in_day_cell .= $bk_id . ':' ; if ( isset( $bookings[ $bk_id ]->form_data['_all_fields_']['name'] ) ) { $text_in_day_cell .= ' ' . esc_textarea( $bookings[ $bk_id ]->form_data['_all_fields_']['name'] ); } //FixIn: 10.0.0.24 if ( isset( $bookings[ $bk_id ]->form_data['_all_fields_']['secondname'] ) ) { $text_in_day_cell .= ' ' . esc_textarea( $bookings[ $bk_id ]->form_data['_all_fields_']['secondname'] ); } if ( isset( $bookings[ $bk_id ]->form_data['_all_fields_']['lastname'] ) ) { $text_in_day_cell .= ' ' . esc_textarea( $bookings[ $bk_id ]->form_data['_all_fields_']['lastname'] ); } } } return $text_in_day_cell; } /** * Title, when mouse-over booking Pipeline (bar with background) * * @param $booking_id * @param $row_settings */ private function show_booking_title_for_pipeline_bar( $booking_id, $row_settings ){ //FixIn: 8.7.1.4 $bk_title = ''; $is_date = wpbc_get_date_in_correct_format( wpbc_datetime__no_wp_timezone( "Y-m-d", $row_settings['real_date'] ) ); if ( ( is_array( $is_date ) ) && ( ! empty( $is_date ) ) ) { $bk_title = $is_date[0]; } $bk_title .= " \n" . $this->get_booking_title_for_timeline( $booking_id, $row_settings['bookings'] ); $bk_title .= " \n" . strip_tags( wpbc_get_short_dates_formated_to_show( $row_settings['bookings'][ $booking_id ]->dates_short ) ) ; ?><a href="javascript:void(0)" class="in_cell_date_booking_pipeline_a" title="<?php echo str_replace( '"', "", $bk_title ); ?>" ><?php ?><div class="in_cell_date_booking_pipeline_a_sizer"></div><?php ?></a><?php } /** * Show booking TITLE in PIPELINE * * @param $bookings_in_cell * @param $row_settings */ private function show_booking_title_for_timeline( $bookings_in_cell, $row_settings ){ $bk_a_title_arr = array(); $popup_content_arr = array(); $popup_title_arr = array(); $is_show_popover_in_timeline = wpbc_is_show_popover_in_flex_timeline( $this->is_frontend, $this->request_args['booking_hash'] ); //FixIn: 8.1.3.5 foreach ( $bookings_in_cell as $booking_id ) { $bk_a_title = $this->get_booking_title_for_timeline( $booking_id, $row_settings['bookings'] ); $bk_a_title = htmlspecialchars_decode( $bk_a_title, ENT_NOQUOTES ); //FixIn: 8.7.11.5 $bk_a_title_arr[] = $bk_a_title; $title_in_day = $title = $title_hint = ''; if ( $is_show_popover_in_timeline ) { $popup_content = $this->wpbc_get_booking_info_4_popover( $booking_id, $row_settings['bookings'], $row_settings['booking_types'] ); $popup_title_arr[] = $popup_content['title']; //FixIn: 9.7.4.1 - escape coded html/xss $popup_content_arr[] = '<div class="popover-title">' . esc_html($popup_content['title']) . '</div><div class="popover-content">' . esc_html( $popup_content['content'] ) . '</div>'; } //$popup_content_arr[] = $bk_a_title . ': ' . strip_tags( wpbc_get_short_dates_formated_to_show( $row_settings['bookings'][ $booking_id ]->dates_short ) ) ; } // Title A link $bk_a_title__text = implode( ', ', $bk_a_title_arr ); if ( strlen( $bk_a_title__text ) > 20 ) { $bk_a_title__text = substr( $bk_a_title__text, 0, 20 ) . '...'; } if ( count( $bookings_in_cell ) > 1 ) { if ( ! $this->is_bookings_use_check_in_out( $bookings_in_cell, $row_settings['bookings'] ) ) { $bk_a_title__text = '<sup>[' . count( $bookings_in_cell ) . ']</sup> ' . $bk_a_title__text; } else { return; } } if ( ! $this->is_frontend ) { $line_separator = '<div class=\'clear\'></div>'; } else { $line_separator = ''; } $popup_title_arr = implode( $line_separator, $popup_title_arr ); $line_separator = ''; // '<hr class="wpbc_tl_popover_booking_separator" />'; $popup_content_arr = implode( $line_separator, $popup_content_arr ); // Booking CELL Title ?><a href="javascript:void(0)" class="<?php echo implode(' ', array( 'in_cell_date_booking_title', ( $is_show_popover_in_timeline ) ? 'popover_bottom' : '', ( $is_show_popover_in_timeline ) ? 'popover_click' : '', ( count( $bookings_in_cell ) > 1 ) ? 'several_bookings_in_cell' : '' )); ?>" <?php //FixIn: 8.9.3.3 if ( $is_show_popover_in_timeline ) { ?> data-content="<?php echo esc_html( str_replace( '"', "", $popup_content_arr ) ); ?>" data-original-title="<?php echo esc_html( str_replace( '"', "", $popup_title_arr ) ); ?>" <?php } ?> ><?php echo $bk_a_title__text; ?></a><?php } /** * Check if some bookings used check in / out functionality * * @param $bookings_id_arr * @param $bookings_obj_arr * * @return false */ function is_bookings_use_check_in_out( $bookings_id_arr, $bookings_obj_arr ) { // ----------------------------------------------------------------------------------------------------- // Is Check In/out ? // ----------------------------------------------------------------------------------------------------- $is_use_check_in_out_time = ( get_bk_option( 'booking_range_selection_time_is_active' ) == 'On' ); if ( $is_use_check_in_out_time ) { foreach ( $bookings_id_arr as $booking_id ) { if ( isset( $bookings_obj_arr[ $booking_id ] ) ) { foreach ( $bookings_obj_arr[ $booking_id ]->dates as $booking_date_obj ) { $booking_date_ymdhis = $booking_date_obj->booking_date; $is_check_in_out__or_full = substr( $booking_date_ymdhis, - 1 ); // '1', '2' (not '0') if ( '1' === $is_check_in_out__or_full ) { return true; } if ( '2' === $is_check_in_out__or_full ) { return true; } } } } } return false; } /** * Get array of CSS classes for booking bar * @param int $booking_id * @param array $bookings * * @return array */ function get_booking_class_arr( $booking_id, $row_settings , $real_date, $time_hour ){ $bookings = $row_settings['bookings']; $class_arr = array(); if ( ( ! empty( $booking_id ) ) && isset( $bookings[ $booking_id ] ) ) { // Appoved | Pending if ( count( $bookings[ $booking_id ]->dates ) > 0 ) { $is_approved = $bookings[ $booking_id ]->dates[0]->approved; } else { $is_approved = 0; } $class_arr[] = $is_approved ? 'approved_booking' : 'pending_booking'; // ----------------------------------------------------------------------------------------------------- // Is Check In/out ? // ----------------------------------------------------------------------------------------------------- $is_use_check_in_out_time = ( get_bk_option( 'booking_range_selection_time_is_active' ) == 'On' ); $one_date__one_booking__check_in_out__arr = array(); if ( ( $is_use_check_in_out_time ) && ( ( $row_settings['is_matrix'] ) || ( 30 != $row_settings['view_days_num'] ) ) && ( ( ! $row_settings['is_matrix'] ) || ( 1 != $row_settings['view_days_num'] ) ) ){ $real_date_ymd = wpbc_datetime__no_wp_timezone( "Y-m-d", $real_date ); foreach ( $bookings[ $booking_id ]->dates as $booking_date_obj ) { $booking_date_ymdhis = $booking_date_obj->booking_date; if ( substr( $booking_date_ymdhis, 0, 10 ) === $real_date_ymd ) { $is_check_in_out__or_full = substr( $booking_date_ymdhis, -1 ); // '1', '2' (not '0') if ('1'=== $is_check_in_out__or_full ){ $one_date__one_booking__check_in_out__arr[] = 'booking_check_in'; } if ('2'=== $is_check_in_out__or_full ){ $one_date__one_booking__check_in_out__arr[] = 'booking_check_out'; } //break; } } } // If we have 2 or more like: [ 'booking_check_in', 'booking_check_out' ], in the same date for same booking, then it is time slots bookings if ( count( $one_date__one_booking__check_in_out__arr ) == 1 ) { $class_arr[] = $one_date__one_booking__check_in_out__arr[0]; $class_arr[] = 'booking_change_over'; } if ( count( $one_date__one_booking__check_in_out__arr ) > 1 ) { $class_arr[] = 'booking_time_slots'; } // ----------------------------------------------------------------------------------------------------- if ( isset( $bookings[ $booking_id ]->trash ) ) { $is_trash = $bookings[ $booking_id ]->trash; } else { $is_trash = false; } $class_arr[] = $is_trash ? 'booking_trash' : ''; ///////////////////////////////////////////////////////////////// if ( ( isset( $bookings[ $booking_id ]->form_data['email'] ) ) && ( ( 'blank@wpbookingmanager.com' == $bookings[ $booking_id ]->form_data['email'] ) || ( 'admin@blank.com' == $bookings[ $booking_id ]->form_data['email'] ) ) ) { $is_blank_bookings = true; } else { $is_blank_bookings = false; } $class_arr[] = $is_blank_bookings ? 'booking_blank' : ''; ///////////////////////////////////////////////////////////////// if ( wpbc_datetime__no_wp_timezone( 'Y.m.d' ) > wpbc_datetime__no_wp_timezone( "Y.m.d", $real_date ) ) { $class_arr[] = 'past_date'; } if ( wpbc_datetime__no_wp_timezone( 'Y.m.d' ) == wpbc_datetime__no_wp_timezone( "Y.m.d", $real_date ) ) { $class_arr[] = 'today_date'; } if ( $this->is_show_day_view( $row_settings ) ) { if ( ( wpbc_datetime__no_wp_timezone( 'm.d.Y' ) == wpbc_datetime__no_wp_timezone( "m.d.Y", $real_date ) ) // Today Date && ( intval( wpbc_datetime__no_wp_timezone( 'H' ) ) > intval( $time_hour ) ) ) { $class_arr[] = 'past_date'; } } ///////////////////////////////////////////////////////////////// $css_class_additional = apply_filters( 'wpbc_timeline_booking_header_css', '', $booking_id, $bookings ); //FixIn: 7.0.1.41 $class_arr[] = $css_class_additional; } // Remove empty values from array $class_arr = array_filter( $class_arr ); return $class_arr; } /** * Show Date cell :: 3 variants :: Date Number | Booking Pipeline | Booking Title * @param $row_settings */ private function show_day_cell( $row_settings ){ $data_in_previous_cell = $this->data_in_previous_cell; $yy = wpbc_datetime__no_wp_timezone( "Y", $row_settings[ 'real_date' ] ); // 2012 $mm = wpbc_datetime__no_wp_timezone( "m", $row_settings[ 'real_date' ] ); // 09 $dd = wpbc_datetime__no_wp_timezone( "d", $row_settings[ 'real_date' ] ); // 31 $ww = wpbc_datetime__no_wp_timezone( "N", $row_settings[ 'real_date' ] ); // 7 $day_week = $row_settings[ 'dwa' ][$ww]; // Su $row_settings['day_filter_id'] = $yy . '-' . $mm . '-' . $dd; // <editor-fold defaultstate="collapsed" desc=" = $bookings_in_day_cell - Array of booking ID - Sorted by Time in this date cell = " > $bookings_in__times_arr = array(); /** * $bookings_in__times_arr = array( [0] => array( [0] => 918, [1] => 917 ), [3600] => array( [0] => 918 [1] => 917 ), ... [82800] => Array ( [0] => 918 [1] => 917 ) ) */ if ( ! empty ( $row_settings['time_array_new'][ $row_settings['day_filter_id'] ] ) ) { // $row_settings['time_array_new'][ '2019-07-19' ] $bookings_in__times_arr = $row_settings['time_array_new'][ $row_settings['day_filter_id'] ]; } $bookings_in_day_cell = array(); if ( ! empty ( $bookings_in__times_arr ) ) { foreach ( $bookings_in__times_arr as $times_milliseconds => $bookings_in_times_arr ) { foreach ( $bookings_in_times_arr as $booking_id_in_time_interval ) { if ( ! in_array( $booking_id_in_time_interval, $bookings_in_day_cell ) ) { /** * Array ( [0] => 15 [1] => 16 [2] => 13 [3] => 14 ) */ $bookings_in_day_cell[] = $booking_id_in_time_interval; } } } } // </editor-fold> //debuge($bookings_in__times_arr); // <editor-fold defaultstate="collapsed" desc=" = $cell_css[] - Define CSS classes of day cell = " > $cell_css = array(); $cell_css[] = 'flex_tl_day_cell'; $cell_css[] = 'flex_tl_weekday' . $ww; $cell_css[] = $row_settings['day_filter_id']; if ( wpbc_datetime__no_wp_timezone( 'm.d.Y' ) == wpbc_datetime__no_wp_timezone( "m.d.Y", $row_settings['real_date'] ) ) { $cell_css[] = 'today_date'; } else if ( wpbc_datetime__no_wp_timezone( 'Y.m.d' ) > wpbc_datetime__no_wp_timezone( "Y.m.d", $row_settings['real_date'] ) ) { $cell_css[] = 'past_date'; } if ( ( $data_in_previous_cell['previous_month'] != $mm ) || ( 1 == $dd ) ) { $data_in_previous_cell['previous_month'] = $mm; $cell_css[] = 'new_month'; } if ( ! empty( $bookings_in_day_cell ) ) { $cell_css[] = 'exist_booking_in_cell'; } else { $cell_css[] = 'no_booking_in_cell'; } // </editor-fold> ?><div id="cell_<?php echo $row_settings[ 'current_resource_id' ] . '_' . $row_settings['day_filter_id'] ; ?>" class="<?php echo implode(' ', $cell_css ); ?>" ><?php //////////////////////////////////////////////////////////////////////////////////////// // T i m e c e l l s //////////////////////////////////////////////////////////////////////////////////////// $time_selles_num = $row_settings['time_selles_num']; $tm = floor( 24 / $time_selles_num ); ?><div class="<?php echo implode(' ', array( 'in_cell_time_section_in_day', 'flex_time_section_in_day_booking', 'flex_time_in_days_num_' . $row_settings['view_days_num'] )); ?>" ><?php for ( $tt = 0; $tt < $time_selles_num; $tt++ ) { // Get bookings for time-slot if ( $this->is_show_day_view( $row_settings ) ) { $time_ms = $tt * 60 * 60; $bookings_in_this_time_arr = empty( $bookings_in__times_arr[ $time_ms ] ) ? array() : $bookings_in__times_arr[ $time_ms ]; $is_start_new_booking = $this->is_start_new_booking_cell( $bookings_in_this_time_arr, $data_in_previous_cell['bookings_in_cell'] ); $is_start_new_booking2 = $this->is_start_new_booking_cell2( $bookings_in_this_time_arr, $data_in_previous_cell['bookings_in_cell'] ); $bookings_in_day_cell = $bookings_in_this_time_arr; } else { // Get bookings for a day $is_start_new_booking = $this->is_start_new_booking_cell( $bookings_in_day_cell, $data_in_previous_cell['bookings_in_cell'] ); $is_start_new_booking2 = $this->is_start_new_booking_cell2( $bookings_in_day_cell, $data_in_previous_cell['bookings_in_cell'] ); } // Skip timeslots for day view if ( $this->is_show_day_view( $row_settings ) ) { if ( ( $tt < $row_settings['start_hour_for_1day_view'] ) || ( $tt > $row_settings['end_hour_for_1day_view'] ) ) { continue; } } $today_time_css_class=''; //FixIn: 10.0.0.40 if ( wpbc_datetime__use_wp_timezone( 'Y.m.d' ) == wpbc_datetime__use_wp_timezone( "Y.m.d", $row_settings[ 'real_date' ] ) ) { if ( $this->is_show_day_view( $row_settings ) ) { if ( ( wpbc_datetime__use_wp_timezone( 'm.d.Y' ) == wpbc_datetime__use_wp_timezone( "m.d.Y", $row_settings[ 'real_date' ] ) ) // Today Date && ( intval( wpbc_datetime__use_wp_timezone( 'H' ) ) == intval( $tt ) ) ) { $today_time_css_class = 'today_time'; } } } ?><div class="<?php echo 'in_cell_time_hour time_hour' . ( $tt * $tm ). ' ' . $today_time_css_class; ?>" ><?php if ( 'show_dates' == $row_settings['what_to_show'] ) { ?> <div class="in_cell_date_container in_cell_date_container_<?php echo $row_settings['what_to_show'] ?>"><?php //if ( empty( $bookings_in_day_cell ) ) { if ( $this->is_show_day_view( $row_settings ) ) { $this->show_time_number_in_correct_format( $tt * $tm , $row_settings['view_days_num'] ); } else { echo $dd; } //} ?></div><?php } if ( 'show_bookings' == $row_settings['what_to_show'] ) { if ( ! empty( $bookings_in_day_cell ) ) { $booking_id_title = array(); ?> <div class="in_cell_date_container in_cell_date_container_<?php echo $row_settings['what_to_show'] ?>"><?php foreach ( $bookings_in_day_cell as $booking_id ) { $booking_css_class_arr = $this->get_booking_class_arr( $booking_id, $row_settings, $row_settings['real_date'], $tt ); if ( ! in_array( 'booking_change_over', $booking_css_class_arr ) ) { if ( $is_start_new_booking2 ) { $booking_css_class_arr[] = 'start_new_booking'; } } ?> <div class="<?php echo implode( ' ', array( 'booking_id', 'booking_id_' . $booking_id, //$is_start_new_booking ? 'start_new_booking' : '', ) ); echo ' ' . implode( ' ', $booking_css_class_arr ); ?>" ><?php // Booking CELL background $this->show_booking_title_for_pipeline_bar( $booking_id, $row_settings ); // Title, when mouse-over booking Pipeline (bar with background) ?></div><?php } ?></div><?php } } if ( 'show_booking_titles' == $row_settings['what_to_show'] ) { if ( ! empty( $bookings_in_day_cell ) ) { // Title of new booking(s) if ( $is_start_new_booking ) { ?><div class="<?php echo implode( ' ', array( 'in_cell_date_container', 'in_cell_date_container_booking_id_title', 'in_cell_date_container_' . $row_settings['what_to_show'] ) ); echo ' booking_id_' . implode( '_', $bookings_in_day_cell ); ?>" ><?php $this->show_booking_title_for_timeline( $bookings_in_day_cell, $row_settings ); ?></div><?php } } } ?></div><?php $data_in_previous_cell['bookings_in_cell'] = $bookings_in_day_cell; } ?></div><?php ?></div><?php $this->data_in_previous_cell = $data_in_previous_cell; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Booking R O W //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** Row */ public function wpbc_show_timeline_booking_row( $start_date, $booking_arr = array() ) { $row_settings = array( 'start_date' => $start_date ); $row_settings = $this->get_init_row_settings( $row_settings ); if ( $row_settings['start_date'] !== false ) { list( $start_year, $start_month, $start_day ) = explode( '-', wpbc_datetime__no_wp_timezone( 'Y-m-d', $row_settings['start_date'] ) ); } else { if ( ! empty( $this->request_args['scroll_start_date'] ) ) list( $start_year, $start_month, $start_day ) = explode( '-', $this->request_args['scroll_start_date'] ); // scroll_start_date=2013-07-01 else list( $start_year, $start_month, $start_day ) = explode( '-', wpbc_datetime__no_wp_timezone( 'Y-n-j' ) ); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Dates / Times Line //////////////////////////////////////////////////////////////////////////////////////////////////////////////// $this->data_in_previous_cell['previous_booking_id'] = false; $saved_previos_data_cell = $this->data_in_previous_cell; foreach ( array( 'show_dates', 'show_bookings', 'show_booking_titles' ) as $what_to_show ) { $this->data_in_previous_cell = $saved_previos_data_cell; ?><div id="flex_resource_row_<?php echo $what_to_show . '_' . $booking_arr['current_resource_id']; ?>" class="<?php echo implode(' ', array( 'flex_tl_dates_bar', 'flex_tl_row_height', 'flex_tl_row_bar_' . $what_to_show , $row_settings['is_matrix'] ? 'flex_tl_matrix_resources' : 'flex_tl_single_resource' ) ); ?>" ><?php for ( $d_inc = 0; $d_inc < $row_settings['days_num']; $d_inc ++ ) { $row_settings['real_date'] = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $d_inc ) ), intval( $start_year ) ); $day_cell_params = array_merge( $row_settings, $booking_arr ); $day_cell_params['what_to_show'] = $what_to_show; $this->show_day_cell( $day_cell_params ); } ?></div><?php } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Timeline //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** Show Structure of the TimeLine */ public function wpbc_show_timeline( $dates_array, $bookings, $booking_types, $time_array_new = array() ){ // Skip showing rows of booking resource(s) in TimeLine or Calendar Overview, if no any exist booking(s) for current view $booked_booking_resources = array(); //FixIn: 7.0.1.51 if ( ! empty( $this->request_args['only_booked_resources'] ) ) { foreach ( $bookings as $single_booking ) { if ( ! empty( $single_booking->booking_type ) ) $booked_booking_resources[] = $single_booking->booking_type; foreach ( $single_booking->dates as $booking_date_obj ) { if ( ( isset( $booking_date_obj->type_id ) ) && ( ! empty( $booking_date_obj->type_id ) ) ) $booked_booking_resources[] = $booking_date_obj->type_id; } } $booked_booking_resources = array_unique( $booked_booking_resources ); } $view_days_num = $this->request_args['view_days_num']; // Get start date and number of rows, which is depend from the view days mode $is_matrix = $this->request_args['is_matrix']; $scroll_day = 0; $scroll_month = 0; $start_year = wpbc_datetime__no_wp_timezone( "Y" ); $start_month = wpbc_datetime__no_wp_timezone( "m" ); // 09 if ( ! empty( $this->request_args['scroll_start_date'] ) ) { // scroll_start_date=2013-07-01 // Set the correct start date, if was selected the stard date different from the today in the Filters Tab. list( $start_year, $start_month, $start_day ) = explode( '-', $this->request_args['scroll_start_date'] ); } //////////////////////////////////////////////////////////////////////// // Get Start Date and Scroll Day/Month Variables //////////////////////////////////////////////////////////////////////// if ( $is_matrix ) { // MATRIX VIEW $bk_resources_id = explode( ',', $this->request_args['wh_booking_type'] ); $max_rows_number = count( $bk_resources_id ); switch ( $view_days_num ) { case '1': if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = $this->request_args['scroll_day']; if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = wpbc_datetime__no_wp_timezone( "d" ); //FixIn: 7.0.1.13 break; case '30': case '60': if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = $this->request_args['scroll_month']; if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = 1; break; case '7': // 7 Week - start from Monday (or other start week day) if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = $this->request_args['scroll_day']; if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = wpbc_datetime__no_wp_timezone( "d" ); $start_week_day_num = wpbc_datetime__no_wp_timezone( "w" ); $start_day_weeek = get_bk_option( 'booking_start_day_weeek' ); //[0]:Sun .. [6]:Sut if ( $start_week_day_num != $start_day_weeek ) { for ( $d_inc = 1; $d_inc < 8; $d_inc++ ) { // Just get week back $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) - intval( $d_inc ) ), intval( $start_year ) ); $start_week_day_num = wpbc_datetime__no_wp_timezone( "w", $real_date ); if ( $start_week_day_num == $start_day_weeek ) { $start_day = wpbc_datetime__no_wp_timezone( "d", $real_date ); $start_year = wpbc_datetime__no_wp_timezone( "Y", $real_date ); $start_month = wpbc_datetime__no_wp_timezone( "m", $real_date ); $d_inc = 9; } } } break; default: //30 if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = $this->request_args['scroll_month']; if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = 1; break; } } else { // SINGLE Resource VIEW switch ( $view_days_num ) { case '90': if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = $this->request_args['scroll_day']; else $scroll_day = 0; $max_rows_number = 12; if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = wpbc_datetime__no_wp_timezone( "d" ); $start_week_day_num = wpbc_datetime__no_wp_timezone( "w" ); $start_day_weeek = get_bk_option( 'booking_start_day_weeek' ); //[0]:Sun .. [6]:Sut if ( $start_week_day_num != $start_day_weeek ) { for ( $d_inc = 1; $d_inc < 8; $d_inc++ ) { // Just get week back $real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) - intval( $d_inc ) ), intval( $start_year ) ); $start_week_day_num = wpbc_datetime__no_wp_timezone( "w", $real_date ); if ( $start_week_day_num == $start_day_weeek ) { $start_day = wpbc_datetime__no_wp_timezone( "d", $real_date ); $start_year = wpbc_datetime__no_wp_timezone( "Y", $real_date ); $start_month = wpbc_datetime__no_wp_timezone( "m", $real_date ); $d_inc = 9; } } } break; case '365': if ( isset( $this->request_args['scroll_month'] ) ) $scroll_month = $this->request_args['scroll_month']; else $scroll_month = 0; $max_rows_number = 12; if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = 1; break; default: // 30 if ( isset( $this->request_args['scroll_day'] ) ) $scroll_day = $this->request_args['scroll_day']; else $scroll_day = 0; //FixIn: 8.9.4.3 if ( $this->is_frontend ) { $max_rows_number = intval( get_bk_option( 'booking_timeline__month_mode__days_number_show' ) ); } else { $max_rows_number = intval( get_bk_option( 'booking_calendar_overview__day_mode__days_number_show' ) );; } if (empty($max_rows_number)) { $max_rows_number = 31; } if ( empty( $this->request_args['scroll_start_date'] ) ) $start_day = wpbc_datetime__no_wp_timezone( "d" ); //FixIn: 7.0.1.13 break; } } //////////////////////////////////////////////////////////////////////////////////////////////// //FixIn: 10.0.0.25 if ( ! $this->is_frontend ){ $this->show_timeline_header_start__admin_panel(); } // New Spinner Loader //FixIn: 10.0.0.25 ?><div class="flex_tl_table_loading wpbc_spins_loading_container"> <div class="wpbc_booking_form_spin_loader"><div class="wpbc_spins_loader_wrapper"><div class="wpbc_spins_loader_mini"></div></div></div> <?php // echo '<span class="0glyphicon 0glyphicon-refresh wpbc_icn_autorenew wpbc_spin"></span>' ?> <span><?php _e('Loading','booking'); ?>...</span> </div><?php ?><div class="flex_timeline_frame<?php if ( $this->is_frontend ) echo ' wpbc_timeline_front_end' ?> flex_frame_view_days_num_<?php echo $view_days_num; if ($is_matrix) { echo ' flex_tl_matrix_resources '; } else { echo ' flex_tl_single_resource '; } ?>"> <div class="flex_tl_table"> <div class="flex_tl_table_header" style="<?php if ( ! $this->is_frontend ) { echo 'display:none;'; /* //FixIn: 10.0.0.25 */ } ?>"> <?php if ( $this->is_frontend ) { ?><div class="flex_tl_collumn_2"><?php $title = wpbc_lang( $this->timeline_titles['header_title'] ); $params_nav = array(); $params_nav['title'] = $title; $this->client_navigation( $params_nav ); ?></div><?php } else { ?> <div class="flex_tl_collumn_1"><?php $title = wpbc_lang( $this->timeline_titles['header_column1'] ); echo $title; // Resources ?></div> <div class="flex_tl_collumn_2"><?php $title = wpbc_lang( $this->timeline_titles['header_column2'] ); echo $title; // Dates ?></div> <?php } ?> </div><?php ?><div class="flex_tl__scrolling_sections"><?php ?><div class="flex_tl__scrolling_section1"> <div class="flex_tl_table_titles"><div class="flex_tl_collumn_1"></div></div><?php for ( $d_inc = 0; $d_inc < $max_rows_number; $d_inc++ ) { // Skip showing rows of booking resource(s) in TimeLine or Calendar Overview, if no any exist booking(s) for current view if ( ! empty( $this->request_args['only_booked_resources'] ) ) { $resource_id = ( $is_matrix ) ? $bk_resources_id[ $d_inc ] : $this->request_args['wh_booking_type']; if ( ! in_array( $resource_id, $booked_booking_resources ) ) { continue; } } // Ger Start Date to real_date variable $real_date = $this->get_start_day__to_real_date( array( 'is_matrix' => $is_matrix, 'view_days_num' => $view_days_num, 'start_month' => $start_month, 'start_day' => $start_day, 'start_year' => $start_year, 'scroll_month' => $scroll_month, 'scroll_day' => $scroll_day, 'd_inc' => $d_inc ) ); ?><div class="flex_tl_table_row_bookings"> <div class="flex_tl_collumn_1"><?php // Title in first column of each row in calendar if ( ( $is_matrix ) && ( isset( $bk_resources_id[$d_inc] ) ) && (isset( $booking_types[$bk_resources_id[$d_inc]] )) ) { // Matrix - resource titles $resource_value = $booking_types[$bk_resources_id[$d_inc]]; $bk_admin_url = wpbc_get_params_in_url( wpbc_get_bookings_url( false, false ), array( 'wh_booking_type' ) ); ?><div class="flex_tl_resource_title flex_tl_row_height <?php if ( isset( $resource_value->parent ) ) { if ( $resource_value->parent == 0 ) { echo 'parent'; } else { echo 'child'; } } ?> "><?php if ( $this->is_frontend ) { if ( ( isset( $this->options['resource_link'] ) ) && ( isset( $this->options['resource_link'][ $resource_value->booking_type_id ] ) ) ){ //FixIn: 7.0.1.50 ?><a href="<?php echo $this->options['resource_link'][ $resource_value->booking_type_id ]; ?>" ><?php //FixIn: 7.2.1.14 } echo wpbc_lang( $resource_value->title ); //FixIn: 7.0.1.11 if ( ( isset( $this->options['resource_link'] ) ) && ( isset( $this->options['resource_link'][ $resource_value->booking_type_id ] ) ) ){ //FixIn: 7.0.1.50 ?></a><?php } } else { ?><a href="<?php echo $bk_admin_url . '&wh_booking_type=' . $bk_resources_id[$d_inc]; ?>" title="<?php echo wpbc_lang( $resource_value->title ); ?>" ><?php echo wpbc_lang( $resource_value->title ); ?></a><?php } ?></div><?php } else { // Single Resource - Dates titles ?><div class="flex_tl_resource_title flex_tl_row_height"><?php switch ( $view_days_num ) { case '90': $end_real_date = mktime( 0, 0, 0, intval( $start_month ), ( intval( $start_day ) + intval( $d_inc ) * 7 + intval( $scroll_day ) ) + 6, intval( $start_year ) ); $date_format = ' j, Y'; //get_bk_option( 'booking_date_format'); echo __( wpbc_datetime__no_wp_timezone( "M", $real_date ) ) . wpbc_datetime__no_wp_timezone( $date_format, $real_date ) . ' - ' . __( wpbc_datetime__no_wp_timezone( "M", $end_real_date ) ) . wpbc_datetime__no_wp_timezone( $date_format, $end_real_date ); break; case '365': echo __( wpbc_datetime__no_wp_timezone( "F", $real_date ) ) . ', ' . wpbc_datetime__no_wp_timezone( "Y", $real_date ); break; default: // 30 //$date_format = 'd / m / Y'; $date_format = get_bk_option( 'booking_date_format' ); //FixIn:5.4.5.13 $ww = wpbc_datetime__no_wp_timezone( "N", $real_date ); //7 ?> <div class="flex_tl_resource_title_dates_container"> <div class="flex_tl_resource_title_dates_days flex_tl_weekday<?php echo $ww; ?>"><?php echo wpbc_datetime__no_wp_timezone( $date_format, $real_date ); ?></div> <div class="flex_tl_resource_title_dates_weeks flex_tl_weekday<?php echo $ww; ?>"><?php echo __( wpbc_datetime__no_wp_timezone( "D", $real_date ) ); ?></div> </div> <?php break; } ?></div><?php } ?> </div> </div><?php } ?></div><?php ?><div class="flex_tl__scrolling_section2"> <div class="flex_tl_table_titles flex_tl_row_max_width"> <div class="flex_tl_collumn_2"><?php // Header above the calendar table $real_date = mktime( 0, 0, 0, intval( $start_month ), intval( $start_day ), intval( $start_year ) ); // Ger Start Date to real_date variable $real_date = $this->get_start_day__to_real_date( array( 'is_matrix' => $is_matrix, 'view_days_num' => $view_days_num, 'start_month' => $start_month, 'start_day' => $start_day, 'start_year' => $start_year, 'scroll_month' => $scroll_month, 'scroll_day' => $scroll_day, 'd_inc' => $d_inc ) ); $this->wpbc_show_timeline_header_row( $real_date ); ?> </div> </div><?php for ( $d_inc = 0; $d_inc < $max_rows_number; $d_inc++ ) { // Skip showing rows of booking resource(s) in TimeLine or Calendar Overview, if no any exist booking(s) for current view if ( ! empty( $this->request_args['only_booked_resources'] ) ) { $resource_id = ( $is_matrix ) ? $bk_resources_id[ $d_inc ] : $this->request_args['wh_booking_type']; if ( ! in_array( $resource_id, $booked_booking_resources ) ) { continue; } } // Ger Start Date to real_date variable $real_date = $this->get_start_day__to_real_date( array( 'is_matrix' => $is_matrix, 'view_days_num' => $view_days_num, 'start_month' => $start_month, 'start_day' => $start_day, 'start_year' => $start_year, 'scroll_month' => $scroll_month, 'scroll_day' => $scroll_day, 'd_inc' => $d_inc ) ); ?> <div class="flex_tl_table_row_bookings flex_tl_row_max_width"> <div class="flex_tl_collumn_2"><?php if ( $is_matrix ) { $this->reset_data_in_previous_cell(); $resource_id = $bk_resources_id[ $d_inc ]; } else { $resource_id = $this->request_args['wh_booking_type']; } // Request from GET or REQUEST $booking_arr = array( 'current_resource_id' => ( ( ! empty( $resource_id ) ) ? $resource_id : 1 ), // Remove dates and Times from the arrays, which is not belong to the $booking_arr['current_resource_id'] We do not remove it only, when the $booking_arr['current_resource_id'] - is empty - OLD ALL Resources VIEW 'booked_dates_array' => $dates_array, 'bookings' => $bookings, 'booking_types' => $booking_types, 'time_array_new' => $time_array_new ); /** * FROM: [2019-07-19] => Array ( [0] => Array ( * [id] => 19 [resource] => 3 ) [1] => Array ( [id] => 19 [resource] => 3 ), .... * TO * * [2019-07-19] => Array ( * [0] => 19 * [1] => 19 * [2] => 18 * [3] => 18 ... */ $booking_arr['booked_dates_array'] = $this->wpbc_dates_only_of_specific_resource( $booking_arr['booked_dates_array'], $booking_arr['current_resource_id'], $booking_arr['bookings'] ); /** * FROM: [2019-07-19] => Array ( ... , [28800] => Array( [0] => Array ( [id] => 15 [resource] => 3 ) [1] => Array ( [id] => 16 [resource] => 3 ) [2] => Array ( [id] => 13 [resource] => 3 ) .... * TO * [2019-07-19] => Array ( ... , [28800] => Array( [0] => 15 [1] => 16 [2] => 13 ) */ $booking_arr['time_array_new'] = $this->wpbc_times_only_of_specific_resource( $booking_arr['time_array_new'], $booking_arr['current_resource_id'], $booking_arr['bookings'] ); $this->wpbc_show_timeline_booking_row( $real_date, $booking_arr ); ?> </div> </div><?php } ?></div><?php ?></div><?php ?></div></div><?php if ( ! $this->is_frontend ){ $this->show_timeline_header_end__admin_panel(); //FixIn: 10.0.0.25 } } /** * Ger Start Date to real_date variable * * @param $params = array( * 'is_matrix' => $is_matrix, * 'view_days_num' => $view_days_num, * 'start_month' => $start_month, * 'start_day' => $start_day, * 'start_year' => $start_year, * 'scroll_month' => $scroll_month * 'scroll_day' => $scroll_day * 'd_inc' => $d_inc * ) * * @return false|int */ private function get_start_day__to_real_date( $params ) { if ( $params['is_matrix'] ) { // MATRIX VIEW switch ( $params['view_days_num'] ) { // Set real start date for the rows in calendar case '1': case '7': $real_date = mktime( 0, 0, 0, intval( $params['start_month'] ), ( intval( $params['start_day'] ) + intval( $params['scroll_day'] ) ), intval( $params['start_year'] ) ); break; case '30': case '90': $real_date = mktime( 0, 0, 0, ( intval( $params['start_month'] ) + intval( $params['scroll_month'] ) ), intval( $params['start_day'] ), intval( $params['start_year'] ) ); break; default: // 30 $real_date = mktime( 0, 0, 0, ( intval( $params['start_month'] ) + intval( $params['scroll_month'] ) ), intval( $params['start_day'] ), intval( $params['start_year'] ) ); break; } } else { // Single Resource View switch ( $params['view_days_num'] ) { // Set real start date for the rows in calendar case '90': $real_date = mktime( 0, 0, 0, intval( $params['start_month'] ), ( intval( $params['start_day'] ) + intval( $params['d_inc'] ) * 7 + intval( $params['scroll_day'] ) ), intval( $params['start_year'] ) ); break; case '365': $real_date = mktime( 0, 0, 0, ( intval( $params['start_month'] ) + intval( $params['d_inc'] ) + intval( $params['scroll_month'] ) ), intval( $params['start_day'] ), intval( $params['start_year'] ) ); break; default: // 30 $real_date = mktime( 0, 0, 0, intval( $params['start_month'] ), ( intval( $params['start_day'] ) + intval( $params['d_inc'] ) + intval( $params['scroll_day'] ) ), intval( $params['start_year'] ) ); break; } } return $real_date; } /** * Show timeline * All parameters must be defined. */ public function show_timeline() { $this->wpbc_show_timeline( $this->dates_array, $this->bookings, $this->booking_types, $this->time_array_new ); //FixIn: 10.0.0.25 // removed loader text from here //FixIn: 9.1.2.4 echo '<script type="text/javascript"> if ( ( document.readyState !== "loading" ) && ( ( "undefined" !== typeof jQuery ) && ( window.jQuery ) ) ){ jQuery( ".flex_tl_table_loading").hide(); jQuery( ".flex_tl_table" ).show(); } else { ' . wpbc_jq_ready_start(); //FixIn: 10.1.3.7 ?> jQuery( '.flex_tl_table_loading').hide(); jQuery( '.flex_tl_table' ).show(); <?php echo wpbc_jq_ready_end() . ' } </script>'; //FixIn: 10.1.3.7 } /** * Show Header for Timeline in Calendar Overview page in admin panel. Header contain switches of modes and novigation buttons * @return void */ public function show_timeline_header_start__admin_panel(){ //FixIn: 10.0.0.25 $is_show_resources_matrix = ( ( isset( $_REQUEST['wh_booking_type'] ) ) && ( strpos( $_REQUEST['wh_booking_type'], ',' ) !== false ) ) ? true : false; $view_days_num = ( isset( $_REQUEST['view_days_num'] ) ) ? intval( $_REQUEST['view_days_num'] ) : get_bk_option( 'booking_view_days_num' ); $bk_admin_url = wpbc_get_params_in_url( wpbc_get_bookings_url( false ), array( 'view_days_num' ) ); ?><div class="wpbc_calendar_overview__header" > <div class="wpdvlp-top-tabs "> <div class="wpdvlp-tabs-wrapper"> <div class="nav-tabs"><?php if ( $is_show_resources_matrix ) { ?> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=1' ); ?>" class="nav-tab <?php echo ( 1 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar-event"></i> <span class="nav-tab-text"> <?php echo __('Day', 'booking') ; ?></span> </a> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=7' ); ?>" class="nav-tab <?php echo ( 7 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar-week"></i> <span class="nav-tab-text"> <?php echo __('Week', 'booking'); ?></span> </a> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=30' ); ?>" class="nav-tab <?php echo ( 30 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar3"></i> <span class="nav-tab-text"> <?php echo __('Month', 'booking'); ?></span> </a> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=60' ); ?>" class="nav-tab <?php echo ( 60 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar2-week"></i> <span class="nav-tab-text"> 2 <?php echo __('Months', 'booking'); ?></span> </a> <?php } else { ?> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=30' ); ?>" class="nav-tab <?php echo ( 30 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar-event"></i> <span class="nav-tab-text"> <?php echo __('Day', 'booking') ; ?></span> </a> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=90' ); ?>" class="nav-tab <?php echo ( 90 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar-week"></i> <span class="nav-tab-text"> <?php echo __('Week', 'booking'); ?></span> </a> <a href="<?php echo esc_url( $bk_admin_url . '&view_days_num=365' ); ?>" class="nav-tab <?php echo ( 365 == $view_days_num ) ? 'nav-tab-active' : ''; ?>"><i class="menu_icon icon-1x wpbc-bi-calendar3"></i> <span class="nav-tab-text"> <?php echo __('Month', 'booking'); ?></span> </a> <?php } ?><div class="wpbc_calendar_overview__navigation"><?php wpbc_toolbar_btn__timeline_navigation(); ?></div> </div><!-- nav-tabs --> </div><!-- wpdvlp-tabs-wrapper --> </div><!-- wpdvlp-top-tabs --> </div> <div class="clear"></div> <div class="wpbc_calendar_overview__container"> <?php } function show_timeline_header_end__admin_panel(){ //FixIn: 10.0.0.25 ?></div><?php // End: .wpbc_calendar_overview__container } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // P O P O V E R //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO: Refactor this: 2019-07-29 09:01 /** * Get Data for Popover * * @param int $bk_id * @param array $bookings * @param array $booking_types * @param string $text_in_day_cell * @param string $header_title * @param string $content_text * * @return array */ public function wpbc_get_booking_info_4_popover( $bk_id, $bookings, $booking_types ){ if ( isset( $bookings[ $bk_id ] ) ) { //$bookings[ $bk_id ]->form_show = str_replace( "&", '&', $bookings[ $bk_id ]->form_show ); //FixIn:7.1.2.12 // We escaping at other place: wpbc__legacy__get_form_content_arr() } if ( count( $bookings[ $bk_id ]->dates ) > 0 ) { $is_approved = $bookings[ $bk_id ]->dates[0]->approved; } else { $is_approved = 0; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Title //////////////////////////////////////////////////////////////////////////////////////////////////////////////// $header_title = '<div class=\'popover-title-id\' > ID: ' . $bk_id . '</div>'; // ID $is_can = true; //current_user_can( 'edit_posts' ); if ( ( ( $is_can ) && ( ! $this->is_frontend ) ) || ( ( $this->is_frontend ) && ( ! empty( $this->request_args['booking_hash'] ) ) ) ) { // Buttons $header_title .= '<div class=\'popover-title-buttons control-group timeline_info_bk_actionsbar_' . $bk_id . '\' >'; if ( ( ! $this->is_frontend ) && ( $is_can ) ) { // Link $header_title .= '<a class=\'button button-secondary\' title=\'' . esc_attr( str_replace( "'", '', __( 'Booking Listing', 'booking' ) ) ) . '\' href=\''.wpbc_get_bookings_url( true, false ).'&wh_booking_id='.$bk_id.'&view_mode=vm_listing&tab=actions\' ><i class=\'wpbc_icn_gps_fixed\'></i></a>'; //Edit if ( class_exists( 'wpdev_bk_personal' ) ) { $bk_url_add = wpbc_get_new_booking_url( true, false ); $bk_hash = (isset( $bookings[$bk_id]->hash )) ? $bookings[$bk_id]->hash : ''; $bk_booking_type = $bookings[$bk_id]->booking_type; $edit_booking_url = $bk_url_add . '&booking_type=' . $bk_booking_type . '&booking_hash=' . $bk_hash . '&parent_res=1'; $edit_booking_url .= ( 'Off' !== get_bk_option( 'booking_is_resource_no_update__during_editing' ) ) ? '&resource_no_update=1' : ''; //FixIn: 9.4.2.3 if ( ! empty( $bookings[ $bk_id ]->form_data['_all_fields_']['wpbc_custom_booking_form'] ) ) { $edit_booking_url .= '&booking_form=' . $bookings[ $bk_id ]->form_data['_all_fields_']['wpbc_custom_booking_form']; //FixIn: 9.4.3.12 } $header_title .= '<a class=\'button button-secondary\' title=\'' . esc_attr( str_replace( "'", '', __( 'Edit', 'booking' ) ) ) . '\' href=\'' . esc_url($edit_booking_url) . '\' onclick=\'\' ><i class=\'wpbc_icn_draw\'></i></a>'; $header_title .= '<span class=\'wpbc-buttons-separator\'></span>'; } // Trash //$header_title .= '<a class=\'button button-secondary\' href=\'javascript:;\' onclick=\'javascript:delete_booking(' . $bk_id . ', ' . $this->current_user_id . ', "' . wpbc_get_maybe_reloaded_booking_locale() . '" , 1 );\' ><i class=\'wpbc_icn_delete_outline\'></i></a>'; //FixIn: 6.1.1.10 $is_trash = $bookings[$bk_id]->trash; // Trash $header_title .= '<a class=\'button button-secondary trash_bk_link'.(( $is_trash)?' hidden_items ':'').'\' title=\'' . esc_attr( str_replace( "'", '', __( 'Trash / Reject', 'booking' ) ) ) . '\' href=\'javascript:;\' onclick=\'javascript:if ( wpbc_are_you_sure_popup() ) trash__restore_booking(1,' . $bk_id . ', ' . $this->current_user_id . ', "' . wpbc_get_maybe_reloaded_booking_locale() . '" , 1 );\' ><i class=\'wpbc_icn_delete_outline\'></i></a>'; //FixIn: 8.4.7.14 // Restore $header_title .= '<a class=\'button button-secondary restore_bk_link'.((!$is_trash)?' hidden_items ':'').'\' title=\'' . esc_attr( str_replace( "'", '', __( 'Restore', 'booking' ) ) ) . '\' href=\'javascript:;\' onclick=\'javascript:trash__restore_booking(0,' . $bk_id . ', ' . $this->current_user_id . ', "' . wpbc_get_maybe_reloaded_booking_locale() . '" , 1 );\' ><i class=\'wpbc_icn_rotate_left\'></i></a>'; // Delete $header_title .= '<a class=\'button button-secondary delete_bk_link'.((!$is_trash)?' hidden_items ':'').'\' title=\'' . esc_attr( str_replace( "'", '', __( 'Delete', 'booking' ) ) ) . '\' href=\'javascript:;\' onclick=\'javascript:if ( wpbc_are_you_sure_popup() ) delete_booking(' . $bk_id . ', ' . $this->current_user_id . ', "' . wpbc_get_maybe_reloaded_booking_locale() . '" , 1 );\' ><i class=\'wpbc_icn_close\'></i></a>'; //FixIn: 8.4.7.14 //End FixIn: 6.1.1.10 // Approve | Decline $header_title .= '<a class=\'button button-secondary approve_bk_link ' . ($is_approved ? 'hidden_items' : '') . '\' title=\'' . esc_attr( str_replace( "'", '', __( 'Approve', 'booking' ) ) ) . '\' href=\'javascript:;\' onclick=\'javascript:approve_unapprove_booking(' . $bk_id . ',1, ' . $this->current_user_id . ', "' . wpbc_get_maybe_reloaded_booking_locale() . '" , 1 );\' ><i class=\'wpbc_icn_check_circle_outline\'></i></a>'; $header_title .= '<a class=\'button button-secondary pending_bk_link ' . ($is_approved ? '' : 'hidden_items') . '\' title=\'' . esc_attr( str_replace( "'", '', __( 'Pending', 'booking' ) ) ) . '\' href=\'javascript:;\' onclick=\'javascript:approve_unapprove_booking(' . $bk_id . ',0, ' . $this->current_user_id . ', "' . wpbc_get_maybe_reloaded_booking_locale() . '" , 1 );\' ><i class=\'wpbc_icn_block\'></i></a>'; } else if ( ( $this->is_frontend ) && ( ! empty( $this->request_args['booking_hash'] ) ) ) { //FixIn: 8.1.3.5 // Valid or not valid hash we was checked at beginning of function. //Edit if ( class_exists( 'wpdev_bk_personal' ) ) { // $edit_booking_url_admin = wpbc_get_bookings_url( true, false ).'&wh_booking_id='.$bk_id.'&view_mode=vm_listing&tab=actions'; // $trash_booking_url_admin = wpbc_get_bookings_url( true, false ).'&wh_booking_id='.$bk_id.'&view_mode=vm_listing&tab=actions'; $is_change_hash_after_approvement = get_bk_option( 'booking_is_change_hash_after_approvement' ); //FixIn: 8.6.1.6 if ( ( ! $is_approved ) || ( 'On' != $is_change_hash_after_approvement ) ) { //FixIn: 8.2.1.14 $visitorbookingediturl = apply_bk_filter( 'wpdev_booking_set_booking_edit_link_at_email', '[visitorbookingediturl]', $bk_id ); $visitorbookingcancelurl = apply_bk_filter( 'wpdev_booking_set_booking_edit_link_at_email', '[visitorbookingcancelurl]', $bk_id ); $visitorbookingpayurl = apply_bk_filter( 'wpdev_booking_set_booking_edit_link_at_email', '[visitorbookingpayurl]', $bk_id ); $header_title .= '<a class=\'btn btn-default wpbc_btn_in_timeline\' title=\''. esc_attr( __( 'Edit', 'booking' ) ).'\' href=\'' . $visitorbookingediturl . '\' ><i class=\'wpbc_icn_draw\'></i></a>'; $header_title .= '<a class=\'btn btn-default wpbc_btn_in_timeline\' title=\''. esc_attr( __( 'Cancel', 'booking' ) ).'\' href=\'' . $visitorbookingcancelurl . '\' ><i class=\'wpbc_icn_delete_outline\'></i></a>'; $header_title .= '<a class=\'btn btn-default wpbc_btn_in_timeline\' title=\''. esc_attr( __( 'Pay', 'booking' ) ).'\' href=\'' . $visitorbookingpayurl . '\' ><i class=\'wpbc_icn_forward_to_inbox\'></i></a>'; } } } $header_title .= '</div>'; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Content //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Container $content_text = '<div id=\'wpbc-booking-id-'.$bk_id.'\' class=\'flex-popover-content-data\' >'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Labels //////////////////////////////////////////////////////////////////////////////////////////////////////////////// $content_text .= '<div class=\'flex-popover-bars\' >'; $content_text .= '<div class=\'flex-popover-labels-bar\' >'; // ID $content_text .= '<div class=\'flex-label flex-label-id\'>'; $content_text .= '<span class=\'label0\'>' . $bk_id . '</span>'; $content_text .= '</div>'; // Labels $content_text .= '<div class=\'flex-label flex-label-booking-status label-pending' . ( $is_approved ? ' hidden_items' : '' ) . '\'>' . __('Pending' ,'booking') . '</div>'; $content_text .= '<div class=\'flex-label flex-label-booking-status label-approved' . ( ! $is_approved ? ' hidden_items' : '' ) . '\'>' . __('Approved' ,'booking') . '</div>'; // Resource if ( function_exists( 'wpbc_db__get_resource_title' ) ) { if ( isset( $booking_types[ $bookings[ $bk_id ]->booking_type ] ) ) { $bk_title = wpbc_lang( $booking_types[ $bookings[ $bk_id ]->booking_type ]->title ); } else { $bk_title = wpbc_get_resource_title( $bookings[ $bk_id ]->booking_type ); } $content_text .= '<div class=\'flex-label flex-label-resource\'>'; $content_text .= '<span class=\'\'>' . esc_textarea( $bk_title ) . '</span>'; //FixIn: 7.1.1.2 $content_text .= '</div>'; } // Payment Status if ( ( function_exists( 'wpdev_bk_get_payment_status_simple' ) ) && ( floatval( $bookings[ $bk_id ]->cost ) > 0 ) ) { $pay_status = wpdev_bk_get_payment_status_simple( $bookings[ $bk_id ]->pay_status ); $is_payment_ok = wpbc_is_payment_status_ok( trim( $bookings[ $bk_id ]->pay_status ) ); $payment_label_status = $is_payment_ok ? 'payment-label-success' : 'payment-label-unknown'; $content_text .= '<div class=\'flex-label flex-label-payment '. $payment_label_status .'\'>'; if ( $is_payment_ok ) $content_text .= '<span class=\'label-prefix\'>' . esc_js( __( 'Payment', 'booking' ) ). '</span> ' . esc_js( $pay_status ); else { $content_text .= '<span class=\'label-prefix\'>' . esc_js( __( 'Payment', 'booking' ) ) . '</span> ' . esc_js( $pay_status ); //FixIn: 7.1.1.3 } $content_text .= '</div>'; } if ( ! $this->is_frontend ) { // Trash $content_text .= '<div class=\'flex-label flex-label-trash' . ( ( ! $bookings[$bk_id]->trash ) ? ' hidden_items ' : '' ) . '\'>'; $content_text .= '<span class=\'\'>' . esc_js( __('Trash / Reject' ,'booking') ) . '</span>'; //FixIn: 6.1.1.10 //FixIn: 7.1.1.3 $content_text .= '</div>'; } $content_text .= '</div>'; //////////////////////////////////////////////////////////////////////////////////////////////////////////// // Cost Bar //////////////////////////////////////////////////////////////////////////////////////////////////////////// if ( ( class_exists( 'wpdev_bk_biz_s' ) ) ) { //&& ( ! $this->is_frontend ) ){ $content_text .= '<div class=\'flex-popover-cost-bar\' >'; //FixIn: 8.3.3.9 if ( floatval( $bookings[ $bk_id ]->cost ) > 0 ) { // Cost $booking_cost = wpbc_get_cost_with_currency_for_user( $bookings[ $bk_id ]->cost, $bookings[ $bk_id ]->booking_type ); $content_text .= '<div class=\'flex-label flex-label-cost\' >'; //$content_text .= '<div class=\'text-left field-labels booking-labels\'>'; $content_text .= '<div class=\'\'>' . $booking_cost . '</div>'; //$content_text .= '</div>'; $content_text .= '</div>'; } $content_text .= '</div>'; } $content_text .= '</div>'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Booking Data //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Booking Data $content_text .= '<div class=\'clear\'></div>'; //FixIn: 8.7.9.4 $content_text .= '<div class=\'flex-popover-booking-data\'>' . esc_textarea( $bookings[$bk_id]->form_show ) . '</div>'; //FixIn: 7.1.1.2 $content_text .= '<div class=\'clear\'></div>'; //FixIn: 8.7.9.4 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Notes //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Notes if ( ! empty( $bookings[$bk_id]->remark ) ) { $content_text .= '<div class=\'wpbc-popover-booking-notes\'>' . '<strong>' . esc_js( __('Note', 'booking') ). ':</strong> ' . esc_textarea( $bookings[$bk_id]->remark ) . '</div>'; //FixIn: 7.1.1.2 //FixIn: 7.1.1.3 } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Dates //////////////////////////////////////////////////////////////////////////////////////////////////////////////// $bk_dates_short_id = array(); //BL if ( count( $bookings[$bk_id]->dates ) > 0 ) $bk_dates_short_id = (isset( $bookings[$bk_id]->dates_short_id )) ? $bookings[$bk_id]->dates_short_id : array(); // Array ([0] => [1] => .... [4] => 6... [11] => [12] => 8 ) $short_dates_content = wpbc_get_short_dates_formated_to_show( $bookings[$bk_id]->dates_short, $is_approved, $bk_dates_short_id, $booking_types ); $short_dates_content = str_replace( '"', "'", $short_dates_content ); $content_text .= '<div class=\'flex-label-dates \'>'; $content_text .= $short_dates_content; $content_text .= '</div>'; //FixIn: 8.9.4.14 $date_format = get_bk_option( 'booking_date_format' ); if ( empty( $date_format ) ) { $date_format = 'm / d / Y, D'; } $time_format = get_bk_option( 'booking_time_format' ); if ( empty( $time_format ) ) { $time_format = 'h:i a'; } $cr_date = wpbc_datetime__no_wp_timezone( $date_format . ' ' . $time_format, mysql2date( 'U', $bookings[ $bk_id ]->modification_date ) ); $content_text .= '<div class=\'wpbc-listing-collumn field-system-info \'>'; $content_text .= __( 'Created', 'booking' ) . ': ' . $cr_date; $content_text .= '</div>'; $content_text .= '</div>'; // Main Container: 'flex-popover-content-data' return array( 'title' => $header_title, 'content' => $content_text ); } } /** Navigation of Timeline in Ajax request */ function wpbc_ajax_flex_timeline() { /* [timeline_obj] => Array ( [is_frontend] => 1 [html_client_id] => wpbc_timeline_1454680376080 [wh_booking_type] => 3,4,1,5,6,7,8,9,2,10,11,12,14 [is_matrix] => 1 [view_days_num] => 30 [scroll_start_date] => [scroll_day] => 0 [scroll_month] => 0 ) */ $attr = $_POST['timeline_obj']; $attr['nav_step'] = $_POST['nav_step']; //FixIn: 9.9.0.18 $server_zone = date_default_timezone_get(); // If in 'Theme' or 'other plugin' set default timezone other than UTC. Save it. if ( 'UTC' !== $server_zone ) { // Needed for WP date functions - set timezone to UTC @date_default_timezone_set( 'UTC' ); } ob_start(); $timeline = new WPBC_TimelineFlex(); $html_client_id = $timeline->ajax_init( $attr ); // Define arameters and get bookings //debuge($timeline->options); //echo '<div class="wpbc_timeline_ajax_replace">'; // Replace content of this container $timeline->show_timeline(); $is_show_popover_in_timeline = wpbc_is_show_popover_in_flex_timeline( $attr['is_frontend'], $attr['booking_hash'] ); //FixIn: 8.1.3.5 if ( $is_show_popover_in_timeline ) { // Update New Popovers $html = '<script type="text/javascript"> ' . wpbc_jq_ready_start(); //FixIn: 10.1.3.7 $html .= ' wpbc_define_tippy_popover(); '; $html .= wpbc_jq_ready_end() . '</script>'; //FixIn: 10.1.3.7 echo $html; /* ?><script type="text/javascript"> wpbc_define_tippy_popover(); </script><?php */ } //echo '</div>'; $timeline_results = ob_get_contents(); ob_end_clean(); //FixIn: 9.9.0.18 if ( 'UTC' !== $server_zone ) { // Back to previos state, if it was changed. @date_default_timezone_set( $server_zone ); } echo $timeline_results ; } add_bk_action('wpbc_ajax_flex_timeline', 'wpbc_ajax_flex_timeline'); /** Check if we are showing booking details or not * Admin panel - always show * Timeline - show if activated setting option * Customer listing - show always, if valid hash. * * @param $is_frontend * @param $booking_hash * * @return bool */ function wpbc_is_show_popover_in_flex_timeline( $is_frontend, $booking_hash ){ // Default for admin $is_show_popover_in_timeline = true; // For client Timeline if ( $is_frontend ) $is_show_popover_in_timeline = ( get_bk_option( 'booking_is_show_popover_in_timeline_front_end' ) == 'On' ) ? true : false ; // For customer booking listing with ability to edit //FixIn: 8.1.3.5 if ( ( $is_frontend ) && ( ! empty( $booking_hash ) ) ) { //In case if we have valid valid hash then show booking details $my_booking_id_type = wpbc_hash__get_booking_id__resource_id( $booking_hash ); if ( ! empty( $my_booking_id_type ) ) { $is_show_popover_in_timeline = true; } else { $is_show_popover_in_timeline = false; } } return $is_show_popover_in_timeline; } /** * TimeLine shortcode * * @param type $attr * @return type * * Shortcodes exmaples: * * ** Matrix: * 1 Month View Mode: [bookingtimeline type="3,4,1,5,6,7,8,9,2,10,11,12,14" view_days_num=30 scroll_start_date="" scroll_month=0 header_title='All Bookings'] * 2 Months View Mode: [bookingtimeline type="1,5,6,7,8,9,2,10,11,12,3,4,14" view_days_num=60 scroll_start_date="" scroll_month=-1 header_title='All Bookings'] * 1 Week View Mode: [bookingtimeline type="3,4" view_days_num=7 scroll_start_date="" scroll_day=-7 header_title='All Bookings'] * 1 Day View Mode: [bookingtimeline type="3,4" view_days_num=1 scroll_start_date="" scroll_day=0 header_title='All Bookings'] ** Single: * 1 Month View Mode: [bookingtimeline type="4" view_days_num=30 scroll_start_date="" scroll_day=-15 scroll_month=0 header_title='All Bookings'] * 3 Months View Mode: [bookingtimeline type="4" view_days_num=90 scroll_start_date="" scroll_day=-30] * 1 Year View Mode: [bookingtimeline type="4" view_days_num=365 scroll_start_date="" scroll_month=-3] */ function bookingflextimeline_shortcode($attr) { if ( wpbc_is_on_edit_page() ) { return wpbc_get_preview_for_shortcode( 'bookingflextimeline', $attr ); //FixIn: 9.9.0.39 } $attr = wpbc_escape_shortcode_params( $attr ); //FixIn: 9.7.3.6.1 if ( '' === $attr ) { $attr = array(); //FixIn: 9.9.0.30 } //if ( function_exists( 'wpbc_br_cache' ) ) $br_cache = wpbc_br_cache(); // Init booking resources cache if ( isset( $attr['resource_id'] ) ) { $attr['type'] = $attr['resource_id']; } if ( empty( $attr['type'] ) ) { // 8.7.7.4 if ( class_exists( 'wpdev_bk_personal' ) ) { $br_list = wpbc_get_all_booking_resources_list(); $br_list = array_keys( $br_list ); $br_list = implode( ',', $br_list ); $attr['type'] = $br_list; } else { $attr['type'] = wpbc_get_default_resource(); } } if ( ! isset( $attr['view_days_num' ] ) ) { $attr['view_days_num' ] = 30; } if ( ! isset( $attr['scroll_start_date' ] ) ) { $attr['scroll_start_date' ] = ''; } if ( ! isset( $attr['scroll_day' ] ) ) { $attr['scroll_day' ] = 0; } if ( ! isset( $attr['scroll_month' ] ) ) { $attr['scroll_month' ] = 0; } if ( ! isset( $attr['header_title' ] ) ) { $attr['header_title' ] = ''; } //FixIn: 9.9.0.18 $server_zone = date_default_timezone_get(); // If in 'Theme' or 'other plugin' set default timezone other than UTC. Save it. if ( 'UTC' !== $server_zone ) { // Needed for WP date functions - set timezone to UTC @date_default_timezone_set( 'UTC' ); } ob_start(); $timeline = new WPBC_TimelineFlex(); $html_client_id = $timeline->client_init( $attr ); // Define arameters and get bookings //wpbc_datepicker_js(); // JS Datepicker //wpbc_datepicker_css(); // CSS DatePicker echo '<div class="wpdevelop">'; echo '<div id="'.$html_client_id.'" class="wpbc_timeline_client_border">'; echo wp_nonce_field( 'WPBC_FLEXTIMELINE_NAV', 'wpbc_nonce_' . $html_client_id , true , false ); echo '<div id="ajax_respond_insert'.$html_client_id.'" class="ajax_respond_insert" style="display:none;"></div>'; echo '<div class="wpbc_timeline_ajax_replace">'; if ( ! WPBC()->booking_obj->popover_front_end_js_is_writed ) { //Write this JS only once at page wpbc_bs_javascript_popover(); // JS Popover WPBC()->booking_obj->popover_front_end_js_is_writed = true; } //FixIn: 9.2.1.3 //Define Global JavaScript Object - array of objects. //FixIn: 9.2.1.3 ?> <script type="text/javascript"> var wpbc_timeline_obj; if ( undefined === wpbc_timeline_obj ){ wpbc_timeline_obj = []; } </script> <?php $timeline->show_timeline(); echo '</div>'; echo '</div>'; echo '</div>'; // Fix for "Twenty Two" theme. // Theme incorrectly closing HTML elements with attributes that contain HTML tags in content of the posts and pages. // For example, if the HTML element have tags like this // <div data-content="<div class='flex-popover-content-data'>Data</div>" data-original-title="<div class='popover-title-id' > ID: 19</div>" >My text</div> // Theme show info like this // <div data-content="<div class='flex-popover-content-data'>Data</div>” data-original-title=”<div class='popover-title-id' > ID: 19</div>” >My text</div> /* ?><script type="text/javascript"> wpbc_flextimeline_nav( wpbc_timeline_obj['<?php echo $html_client_id; ?>'], 0 ); </script><?php */ $timeline_results = ob_get_contents(); ob_end_clean(); //FixIn: 9.9.0.18 if ( 'UTC' !== $server_zone ) { // Back to previos state, if it was changed. @date_default_timezone_set( $server_zone ); } return $timeline_results ; } add_shortcode( 'bookingflextimeline', 'bookingflextimeline_shortcode' ); /** JSS */ function wpbc_timeline_js_load_files( $where_to_load ) { //FixIn: 8.6.1.13 $is_in_footer = ! true; if ( in_array( $where_to_load, array( 'admin', 'both', 'client' ) ) ) { wp_enqueue_script( 'wpbc-timeline-flex' , trailingslashit( plugins_url( '', __FILE__ ) ) . '_out/timeline_v2.js' /* wpbc_plugin_url( '/core/timeline/wpbc-flex-timeline.js' ) */ , array( 'wpbc_all' /*, 'wp-element'*/ ) , WP_BK_VERSION_NUM , $is_in_footer ); } } add_action( 'wpbc_enqueue_js_files', 'wpbc_timeline_js_load_files', 50 ); /** CSS */ function wpbc_timeline_enqueue_css_files( $where_to_load ) { //FixIn: 8.6.1.13 if ( in_array( $where_to_load, array( 'admin', 'both', 'client' ) ) ) { if ( ( ( isset($_REQUEST['view_mode']) ) && ( $_REQUEST['view_mode']== 'vm_calendar' ) ) || ( 'client' == $where_to_load ) ){ wp_enqueue_style( 'wpbc-flex-timeline' , trailingslashit( plugins_url( '', __FILE__ ) ) . '_out/timeline_v2.1.css' /* wpbc_plugin_url( '/src/css/codemirror.css' ) */ , array() , WP_BK_VERSION_NUM ); } } } add_action( 'wpbc_enqueue_css_files', 'wpbc_timeline_enqueue_css_files', 50 ); v2/_src/timeline_v2.1.css 0000666 00000150434 15165661050 0011127 0 ustar 00 /* T i m e l i n e - C O L O R S K I N ****************************/ /* * For better compatibility, please change here only following properties: * background , background-color, background-repeat, background-image, background-repeat, background-position * border * box-shadow * border-radius * color * font-weight * text-shadow * text-transform * */ :root { --wpbc_timeline-row-height: 35px; --wpbc_timeline-row-header-height: 58px; --wpbc_timeline-booking-pending-color: #ffd86c; --wpbc_timeline-past-booking-pending-color: #fff3d2; --wpbc_timeline-booking-pending-border-color: #e49c2d; --wpbc_timeline-booking-approved-color: #5A71A1; --wpbc_timeline-past-booking-approved-color: #8591aa; --wpbc_timeline-booking-approved-border-color: #4B5E85; } /* ===================================================================================================================== */ /* ===================================================================================================================== */ /* Timeline Main Container */ .flex_tl_table { display: flex; flex-flow: column nowrap; box-sizing: border-box; } /* Timeline: Header, Dates number, all bookings Rows */ .flex_tl_table .flex_tl_table_header, .flex_tl_table .flex_tl_table_titles, .flex_tl_table .flex_tl_table_row_bookings { flex: 1; display: flex; flex-flow: row nowrap; justify-content: space-between; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 { flex:0 1 auto; /*width: 180px;*/ min-width: 0; word-wrap: break-word; display: flex; flex-flow: column nowrap; justify-content: center; } /* Column 2 - dates/bookings */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 { flex: 1 1 0; min-width: 0; } /* Make the same align of Dates title as Resource title //FixIn: 9.5.4.6 */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{ display: flex; flex-flow: column nowrap; justify-content: center; } /**********************************************************************************************************************/ @media (max-width: 782px) { /* Wrap to New lines */ .flex_tl_table .flex_tl_table_header, .flex_tl_table .flex_tl_table_titles, .flex_tl_table .flex_tl_table_row_bookings { flex-flow: row wrap; } /* Show booking resources in a ROW above the dates */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 { width: 100%; flex: 1 1 auto; } } /**********************************************************************************************************************/ /* Ajax Header Nav */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav{ display: flex; flex-flow: row nowrap; justify-content: space-between; align-items: baseline; /* //FixIn: 9.5.4.6 */ padding: 7px 0 0; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_title { flex: 1 1 0; word-break: break-word; min-width: 0; } /**********************************************************************************************************************/ /* T i t l e D a t e s B a r - .flex_tl_table_titles */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar { display:flex; flex-flow: row nowrap; justify-content: space-between; } /* Header "Dates number" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { flex: 1 1 0; min-width: 0; display:flex; flex-flow: column nowrap; justify-content: space-between; } /* "Top Month Line" & "Date Number CELL container" */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { flex: 1; display: flex; flex-flow: column wrap; justify-content: space-between; overflow: hidden; } /* Day Number & WeekDay - in - Title D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { flex: 1; font-size: 0.85em; font-weight: 600; text-align: center; display: flex; flex-flow: column; align-items: center; justify-content: center; } .flex_tl_matrix_resources .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { } .flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { font-size:1em; padding: 0; } .flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { font-size:0.85em; font-weight: 600; } /**********************************************************************************************************************/ /* "Responsive Mode" - in - T i t l e D a t e s B a r */ @media (max-width: 782px) { .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { /*overflow: hidden;*/ /*padding:0;*/ } /* Show Scroller for Months and 2 Months view modes */ .flex_tl_matrix_resources.flex_frame_view_days_num_1, .flex_tl_matrix_resources.flex_frame_view_days_num_30, .flex_tl_matrix_resources.flex_frame_view_days_num_60, .flex_tl_single_resource.flex_frame_view_days_num_30, .flex_tl_single_resource.flex_frame_view_days_num_365 { /*width: 100%;*/ /*overflow-x: scroll;*/ } .flex_tl_matrix_resources.flex_frame_view_days_num_30 .flex_tl_table, .flex_tl_single_resource.flex_frame_view_days_num_365 .flex_tl_table{ /*min-width: 500px;*/ } .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table, .flex_tl_matrix_resources.flex_frame_view_days_num_60 .flex_tl_table, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table { /*min-width: 1000px;*/ } } /**********************************************************************************************************************/ /* "Top Month Line" - in - D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { height: 1.5em; overflow: hidden; } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month.flex_tl_dates_bar .flex_tl_day_cell { border:none; } /* Header "Month Name" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month .flex_tl_day_cell .in_cell_month_year { overflow: visible; word-wrap: normal; white-space: nowrap; } /**********************************************************************************************************************/ /* "Time Slots" - in - D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day { flex: 1; display: flex; flex-flow: row nowrap; justify-content: space-between; overflow: hidden; } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour { flex: 1 1 0; min-width: 0; } /* Date Number during showing 1 day */ .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { flex-flow: row nowrap; align-items: center; } /**********************************************************************************************************************/ /* Dates in First Column during single resource view mode */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container { display: flex; flex-flow: row wrap; justify-content: space-around; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { flex: 1 1 0; text-align: left; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks{ text-align: right; padding:0 1em; } @media (max-width: 782px) { .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container { justify-content: flex-start; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { flex: 0 1 auto; text-align: left; padding:0 1em; } } /**********************************************************************************************************************/ /* B o o k i n g s R o w - B o o k i n g s D a t e s B a r - .flex_tl_table_row_bookings */ /**********************************************************************************************************************/ /* Define Height of Bookings Row for .flex_tl_row_bar_show_bookings & .flex_tl_row_bar_show_dates */ .flex_tl_row_height, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar{ min-height: var(--wpbc_timeline-row-height); } /* Move Bookings Row to Dates Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_bookings { margin-top: calc( -1 * var(--wpbc_timeline-row-height) ); } /* Move Bookings Titles Row to Dates Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles { margin-top: calc( -1 * var(--wpbc_timeline-row-height) ); overflow: hidden; /* Hide booking titles, that overflow timeline frame */ } /* Bookings Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar { display:flex; flex-flow: row nowrap; justify-content: space-between; } /**********************************************************************************************************************/ /* B o o k i n g T i m e s C e l l */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day { flex: 1 1 0; min-width: 0; display:flex; flex-flow: row nowrap; justify-content: space-between; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day .in_cell_time_hour { flex: 1 1 0; min-width: 0; display:flex; flex-flow: row nowrap; justify-content: space-between; } /**********************************************************************************************************************/ /* B o o k i n g C e l l */ /**********************************************************************************************************************/ /* Cell - "Container" */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { flex: 1 1 0; min-width: 0; display: flex; flex-flow: row nowrap; justify-content: space-between; } /* Cell - Date Number */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates { flex: 1 1 0; display: flex; flex-flow: row nowrap; justify-content: center; align-items: center; } /* Show Times in Cells during 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{ justify-content: flex-start; align-items: flex-start; } /* Cell - Booking Pipelines (container for several bookings in cell) */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings { flex: 1 1 0; min-width: 0; display: flex; flex-flow: column nowrap; /* Show booking pipeline in a CELL - Horizontally */ /*flex-flow: row nowrap;*/ /* Show booking pipeline in a CELL - Vertically */ justify-content: space-between; position: relative; } /* Cell - Booking Pipeline for specific one booking in Cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id{ flex: 1 1 0; min-width: 0; word-wrap: normal; white-space: nowrap; } /* Borders for several horizontal booking pipelines in day cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.pending_booking{ border-bottom:1px dashed #555; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking{ border-bottom:1px dashed #ccc; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id:last-child{ border-bottom:none; } /* Booking Pipeline ( background bar ) - Link for showing titles */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:hover, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a{ position: relative; cursor: default; outline : none; box-shadow: none; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a .in_cell_date_booking_pipeline_a_sizer { width: 100%; height: 100%; } /* Cell - Show Booking Titles (container) *****************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles { display: flex; flex-flow: column wrap; justify-content: flex-start; } /* Cell - Show Booking Title */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title{ overflow: visible; white-space: nowrap; word-wrap: initial; padding: 0px 0.5em; margin-left: 4px; margin-top: 4px; z-index: 1; /* Important for working links in neighborhood cells, when title overflow to them */ } /* Cell - Do not show border for Booking Cell title */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell{ border:none; } /**********************************************************************************************************************/ /**********************************************************************************************************************/ /* On initial Loading - Showing with JavaScript */ .flex_tl_table { display:none; } /**********************************************************************************************************************/ /* P O P O V E R in T i m e l i n e ****************************************************/ /**********************************************************************************************************************/ .hidden_items { display: none; } @media (max-width: 782px) { .flex_timeline_frame .popover{ width:98%; max-width:98%; } } .flex_timeline_frame .popover { border: 2px solid #555; font-size: 12px; max-width: 299px; /* FixIn: 10.1.5.3 */ max-height: 425px; overflow-y: auto; scrollbar-width: thin; scrollbar-gutter: unset; } hr.wpbc_tl_popover_booking_separator { margin-bottom:0; } .wpbc-listing-collumn.field-system-info { font-size: 9px; font-style: normal; line-height: 1.2em; text-shadow: none; white-space: nowrap; padding: 2px 0 0 5px; text-align: right; color: #777; } /** P o p o v e r T i t l e **/ .flex_timeline_frame .popover .popover-title { display: flex; flex-flow:row wrap; justify-content: flex-start; align-items: center; min-height: 2.5em; margin:0; padding: 5px 30px 5px 6px; border-radius: 5px 5px 0 0; background-color: #f7f7f7; } .flex_timeline_frame .popover .popover-title .popover-title-id { flex: 0 0 auto; width: 100%; /*Start with new line*/ font-size:14px; font-weight: 500; line-height: 1.8; margin: 0; padding: 0 12px 0 5px; border: 0; vertical-align: baseline; } /** Buttons **************************************/ .flex_timeline_frame .popover .popover-title .popover-title-buttons{ flex: 1 1 auto; display: flex; flex-flow: row wrap; justify-content: flex-start; margin: 2px 0; } .flex_timeline_frame .popover .popover-title .popover-title-buttons a, .flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover, .flex_timeline_frame .popover .popover-title .popover-title-buttons a:focus { flex: none; box-sizing: border-box; margin: 0 5px 0 0; padding: 0 10px 1px; font-size: 13px; height: 28px; line-height: 28px; white-space: nowrap; text-decoration: none; cursor: pointer; -webkit-appearance: none; color: #555; background: #f7f7f7; border-radius: 3px; border: 1px solid #d8d8d8; box-shadow: none; outline: none; } .flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover { background: #fafafa; border-color: #ccc; color: #23282d; } .flex_timeline_frame .popover .popover-title .popover-title-buttons .wpbc-buttons-separator{ margin-right:1.5em; } /** Close X ********************************/ .flex_timeline_frame .popover .popover-close, .flex_timeline_frame .popover .popover-close:hover { position: absolute; right: 0; top: 0; font-size: 20px; line-height: 1.5em; padding: 5px; } .flex_timeline_frame .popover .popover-close a, .flex_timeline_frame .popover .popover-close a:hover, .flex_timeline_frame .popover .popover-close a:active, .flex_timeline_frame .popover .popover-close a:focus { text-decoration: none; border-style: none; outline: 0; color:#444; background: transparent; padding: 0 5px; } /**********************************************/ .flex_timeline_frame .popover.bottom > .arrow::after { border-bottom-color: transparent; } /**********************************************************************************************************************/ /** P o p o v e r C o n t e n t **/ /**********************************************************************************************************************/ .popover-content .flex-popover-content-data { display:flex; flex-flow:column wrap; justify-content: space-between; } .popover-content .flex-popover-content-data .flex-popover-bars, .popover-content .wpbc-popover-content-data .wpbc-popover-cost-bar, .popover-content .wpbc-popover-content-data .booking-labels, .popover-content .wpbc-popover-content-data .wpbc-popover-booking-data, .popover-content .wpbc-popover-content-data .wpbc-popover-booking-notes, .popover-content .wpbc-popover-content-data .booking-dates{ flex: 1 1 auto; /* //FixIn: 8.7.9.4 */ } .popover-content .flex-popover-content-data .flex-popover-bars { display:flex; flex-flow:row nowrap; justify-content: space-between; } .popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-labels-bar{ flex: 1 1 0; clear: both; } .popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-cost-bar { flex: none; padding: 0.3em 0; margin: 0; } .popover-content .flex-popover-content-data .flex-popover-labels-bar{ display:flex; flex-flow:row wrap; justify-content: flex-start; } .popover-content .flex-popover-content-data .flex-popover-labels-bar .flex-label { flex: 0 1 auto; min-width: 0; } .popover-content .flex-popover-content-data .flex-label { border: 0; border-radius: 3px; text-shadow: none; box-shadow: 0 0 1px #ddd; font-weight: 400; font-size: 95%; line-height: 1.7em; padding: .2em .8em 0.2em; background-color: #5bc0de; color: #ffffff; text-align: center; vertical-align: baseline; margin: 0.15em 0.75em 0.5em 0; word-wrap: break-word; word-wrap: anywhere; white-space: pre-wrap; } .popover-content .flex-popover-content-data .flex-label .label-prefix { font-size: 70%; font-weight: 400; } .popover-content .flex-popover-content-data .flex-label.flex-label-id { background: #888; } .popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-pending { background: #FFBB45; } .popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-approved { background: #9BE; } .popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-success { background: #468847; } .popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-unknown { background: #999; } .popover-content .flex-popover-content-data .flex-label.flex-label-trash { background: #D94A48; } .popover-content .flex-popover-content-data .flex-label.flex-label-resource { text-align: left; } /* Move cost to right side*/ .popover-content .flex-popover-content-data .flex-label.flex-label-cost { margin-left:auto; background: transparent; font-weight: 600; color:#333; box-shadow: none; padding: 0; margin: 0; } .popover-content .flex-popover-content-data .flex-popover-booking-data { margin: 1em 0; text-align: left; font-size: 1.05em; line-height: 1.8em; color: #333; max-width: 100%; word-wrap: break-word; word-wrap: anywhere; } .popover-content .flex-popover-content-data .flex-popover-booking-data span.fieldvalue { background: transparent; padding: 2px 2px; border-radius: 1px; margin:0 0.5em 0 0; word-break: initial; word-wrap: break-word; } .popover-content .flex-popover-content-data .flex-popover-booking-data label { font-weight:600; vertical-align: baseline; } .popover-content .flex-popover-content-data .flex-popover-booking-data * { vertical-align: baseline; line-height: 2em; } /* Notes ***************************************************/ .popover-content .flex-popover-content-data .wpbc-popover-booking-notes{ margin: 0 0 1em 0; max-width: 100%; word-break: break-word; } /* Dates ***************************************************/ .popover-content .flex-popover-content-data .flex-label-dates { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: flex-start; } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date{ flex:0 1 auto; font-size: 103%; padding: 0.1em .7em 0.1em; margin: 0 0 0.2em; } .popover-content .flex-popover-content-data .flex-label-dates .date_tire{ flex:0 1 auto; margin: 0 0.2em; font-size: 175%; line-height: 1em; } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date .field-booking-time{ font-size: 0.7em; font-weight: 400; color:#23282d; } /* Pending Background */ .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date{ background: #FFBB45; } /* Approved Background */ .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date.approved{ background: #9BE; } /* HR separator for several bookings in popover */ .popover-content .wpbc_tl_popover_booking_separator { margin: 20px 0; border-top: 1px solid #ddd; box-shadow: 0 1px 1px #f9f9f9; } /* == SKIN ============================================================================================================= */ /* ===================================================================================================================== */ /* Timeline Main Container */ .flex_tl_table { background: #fff; border: 1px solid #ddd; box-shadow: 0 1px 2px #eef; font-size:12px; border-radius: 4px 4px 0 0; } /* Timeline: Header //FixIn: 9.5.4.6 */ .flex_tl_table .flex_tl_table_header{ /*background: #e9e9e9;*/ background: transparent; border-bottom: 1px solid #dfdfdf; font-size: 15px; font-weight: 600; color: #606060; text-shadow:none; line-height: 3em; height:3em; overflow: hidden; padding-left:1em; border-radius: 4px 4px 0 0; } .wpbc_timeline_front_end .flex_tl_table .flex_tl_table_header{ padding:0 2px; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{ font-weight: 600; padding: 8px; line-height: 1.42857143em; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{ text-align: center; } /**********************************************************************************************************************/ /* Ajax Navigation TOP menu */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_title{ color:#777; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next{ font-size: 22px; font-weight: 600; line-height: 12px; color:#777; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a:hover, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a:hover { text-decoration: none; color: #757575; cursor: pointer; } /**********************************************************************************************************************/ /* Booking Rows - background colors */ .flex_tl_table .flex_tl_table_row_bookings { border-top: 1px solid #dddddd; } .flex_tl_table .flex_tl_table_row_bookings:nth-of-type(2n+1) { background-color: #f9f9f9; } /**********************************************************************************************************************/ /* 1st C o l u m n */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 { font-weight: 600; padding: 4px; line-height: 1.42857143em; box-shadow: none; padding:0 0 0 4px; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_row_height { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; } /* Booking resources Titles*/ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title{ color: #999; font-weight: 400; overflow: hidden; white-space: nowrap; } /**********************************************************************************************************************/ /* Booking resources Links */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a { border-bottom: 0 dashed; color: #789; text-decoration: none; text-shadow: none;/*0 -1px 0 #EEEEEE;*/ margin: 0 0 0 2px; box-shadow: none; outline: none; text-decoration: none; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:hover, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:focus, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:active{ text-decoration: underline; text-decoration-style: dashed; text-decoration-thickness: 1px; text-underline-offset: 3px; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.parent { font-weight: 600; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.child { margin-left: 20px; } /**********************************************************************************************************************/ /* 2nd C o l u m n - T i t l e D a t e s B a r - .flex_tl_table_titles */ /**********************************************************************************************************************/ /* Header "Dates number" Row */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar { } /* Header "Dates number" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { border-left:1px solid #eee; } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_date_container{ border-left:2px solid #C54; } /* Weekend Days */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 a, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 a{ color: #c32; background: #FFFCF4; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 .in_cell_date_container_show_dates, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 .in_cell_date_container_show_dates{ color: #bd7f78; background: #FFFCF4; } /* Header "Top Dates Line" */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a:hover{ color: #789; text-decoration: none; /*text-shadow: 0 -1px 0 #EEEEEE;*/ } /**********************************************************************************************************************/ /* "Top Month Line" - in - T i t l e D a t e s B a r */ .flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { /* //FixIn: 9.5.4.6 */ display:none; } .flex_tl_matrix_resources .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { height: 1.5em; border-bottom:1px solid #eee; border-left:1px solid #eee; } /* Header "Month Name" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year { color: #c32; font-size: 0.85em; font-weight: 600; padding:0 0.5em; } /**********************************************************************************************************************/ /* "Time Slots" - in - T i t l e D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day { } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour { border-left:1px solid #eee; border-top:1px solid #eee; display: flex; justify-content:flex-start; align-items: center; padding: 0 0 0 2px; white-space: nowrap; overflow: hidden; min-height: 12px; font-size: 0.8em; font-weight: 600; } /* Date Number during showing 1 day */ .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num{ font-size: 0.85em; font-weight:600; text-align: left; padding: 0 1em; } /**********************************************************************************************************************/ /* Dates in First Column during single resource view mode */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday6, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday7, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday6, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday7{ color: #bd7f78; } /**********************************************************************************************************************/ /* B o o k i n g s R o w - B o o k i n g s D a t e s B a r - .flex_tl_table_row_bookings */ /**********************************************************************************************************************/ /* Header "Dates number" Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar { } /* Header "Dates number" Cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { border-left:1px solid #eee; color:#aaa; font-size: 0.7em; } /* New Month */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_time_hour:first-child .in_cell_date_container{ border-left:2px solid #C54; } /* Cross months - booking on 1st day of some month */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month.exist_booking_in_cell .in_cell_time_hour:first-child .in_cell_date_container{ border-left:1px solid #C54; } /**********************************************************************************************************************/ /* B o o k i n g C e l l */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id{ background: none repeat scroll 0 0 #FC4; margin-left: -1px; /* Hide White 1px border in Cells in booking pipeline */ } /* Start New Booking */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking{ border-left:2px solid #f3a844; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking { background-color: #78A; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.start_new_booking{ border-color: #616f8b; } /* Bookings in a Past*/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date{ background-color:#f0cf77; } /* Bookings in a Past Approved */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.past_date{ background-color:#9099aa; } /* Trash Booking */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking.booking_trash { border-left:2px solid #901c1a; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_trash { background-color:#DB6F6D; } /** T O D A Y ******************************************************************/ /* Today Background for DAYS */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_dates .flex_tl_day_cell.today_date .in_cell_time_section_in_day{ /*background-color: #efc;*/ } /* Today Border for DAYS */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day{ border-left: 1px solid #090; } /* Disasable Today Border for DAYS in 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day{ border-left: none; } /* Today Border for Hours in 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time { border-left: 1px solid #77ce0f; } /********************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id a { font-size:7px; font-weight:600; color:#fff; cursor: pointer; } /* Show Booking Titles ***************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title{ background: #777; color: #fff; border-left: 2px solid #555; cursor: pointer; border-radius: 3px; } /* Title for Several bookings in cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title.several_bookings_in_cell{ font-weight: bold; background: #fdab36; color: #455366; border-left: 2px solid #dd8b16; } /* Show Times in Cells during 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{ border-left:1px solid #eee; border-top:1px solid #eee; font-size:0.8em; word-wrap: normal; white-space: nowrap; overflow: hidden; padding:0 2px; } /* Calendar Overview - New simple Header 2024-04-11 //FixIn: 10.0.0.25 */ .wpbc_calendar_overview__header { position: relative; width: 100%; } .wpbc_calendar_overview__header .nav-tabs { box-shadow: 0 3px 8px #eaeaea; border-bottom: 1px solid #e3e3e3; display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; } .wpbc_calendar_overview__header .wpbc_calendar_overview__navigation { display: flex; flex-flow: row wrap; justify-content: flex-end; align-items: center; margin-left: auto; margin-right: 5px; margin-top: 4px; margin-bottom: 4px; } .wpbc_calendar_overview__container { padding: 0px 5px 5px; margin-top: 0px; border: 1px solid #d5d5d5; background: #fff; font-size: 13px; border-radius: 0 0 3px 3px; box-shadow: 0 0px 8px #dadada; margin-bottom: 25px; } .wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container { margin: -21px 0 0 !important; position: relative; box-shadow: 0 4px 8px #e4e4e4; } .wpbc_timeline_toolbar_container .wpdvlp-sub-tabs{ border-radius: 0 0 2px 2px; } .wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container .wpdvlp-sub-tabs { padding-bottom: 1px; } .wpbc_calendar_overview__container .flex_tl_table { border-radius: 0; border-top: none; font-size: 13px; } .wpbc_timeline_toolbar_structure{ display:flex; flex-flow:row wrap; justify-content: flex-start; align-items: center; } .wpbc_timeline_toolbar_structure > * { margin-top: 0px; margin-bottom: 10px; margin-right:15px; } .wpbc_timeline_toolbar_structure > *:last-child{ margin-left:auto; margin-right:0px; } /* Top search form for searching bookings by ID */ .wpbc_toolbar_search_by_id_bookings{ align-self: flex-end; } @media (max-width: 501px) { .wpbc_toolbar_search_by_id_bookings { display:none; } } /* == 2024-07-26 =================================================================================================== */ .flex_tl__scrolling_sections { display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: flex-start; overflow-y: auto; scrollbar-width: thin; /*max-height: calc(100vh - 250px);*/ } .flex_tl__scrolling_sections .flex_tl__scrolling_section1{ width: 220px; overflow-x: auto; scrollbar-width: thin; box-shadow: 0px 0 3px #9b9b9b; z-index: 1; padding: 0; } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 > div { flex: 0 1 180px; border-right: 1px solid #dfdfdf; } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 > div.flex_tl_table_titles{ border-right: 1px solid transparent; } .flex_tl__scrolling_sections .flex_tl__scrolling_section2 { flex: 1 1 100%; overflow-x: auto; /*scrollbar-width: thin;*/ } /* 1 D */ .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 900px; } /* 1 W */ .flex_tl_single_resource.flex_frame_view_days_num_90 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 350px; } /* 1 Y */ .flex_tl_single_resource.flex_frame_view_days_num_365 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 1400px; } /* 1 D */ .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 900px; } /* 1 W */ .flex_tl_matrix_resources.flex_frame_view_days_num_7 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 300px; } /* 1 M */ .flex_tl_matrix_resources.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 1400px; } /* 2 M */ .flex_tl_matrix_resources.flex_frame_view_days_num_60 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 2800px; } /* Headers Height */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{ height: var(--wpbc_timeline-row-header-height); overflow: hidden; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{ display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: stretch; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 > div, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 > div{ flex:1 1 100%; } /* Add Transparency and Redefine Colors */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id { opacity: 0.8; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking { border-left: 2px solid #df8d18; } /* == Bookings Colors ================================================================================================= */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id { background: none repeat scroll; background-color: var(--wpbc_timeline-booking-pending-color); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking { background-color: var(--wpbc_timeline-booking-approved-color); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date { background-color: var(--wpbc_timeline-past-booking-pending-color); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.past_date { background-color: var(--wpbc_timeline-past-booking-approved-color); } /* == Check In / Out ================================================================================================= */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_change_over { border:none; width: 100%; height: 100%; position: absolute; width: calc( 100% + 1px ); margin: 0 -1px; } /* pending check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-pending-border-color ) 50%, var( --wpbc_timeline-booking-pending-border-color ) 52%, var( --wpbc_timeline-booking-pending-color ) 52%, var( --wpbc_timeline-booking-pending-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-pending-color ) 50%, var( --wpbc_timeline-booking-pending-color ) 100%); } /* Approved check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-approved-border-color ) 50%, var( --wpbc_timeline-booking-approved-border-color ) 52%, var( --wpbc_timeline-booking-approved-color ) 52%, var( --wpbc_timeline-booking-approved-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-approved-color ) 50%, var( --wpbc_timeline-booking-approved-color ) 100%); } /* :: PAST :: Bookings */ /* pending check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in.past_date { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-pending-border-color ) 50%, var( --wpbc_timeline-booking-pending-border-color ) 52%, var( --wpbc_timeline-past-booking-pending-color ) 52%, var( --wpbc_timeline-past-booking-pending-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out.past_date { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-past-booking-pending-color ) 50%, var( --wpbc_timeline-past-booking-pending-color ) 100%); } /* Approved check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in.past_date { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-approved-border-color ) 50%, var( --wpbc_timeline-booking-approved-border-color ) 52%, var( --wpbc_timeline-past-booking-approved-color ) 52%, var( --wpbc_timeline-past-booking-approved-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out.past_date { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-past-booking-approved-color ) 50%, var( --wpbc_timeline-past-booking-approved-color ) 100%); } /* == Dates Font Size ================================================================================================= */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { font-size: 0.85em; text-shadow:none; } /* Booking Title Size */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title { font-size:10px; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:hover, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:focus{ outline: 0; box-shadow: 0 0 0 2px #a6bbe5; box-shadow: 0 0 4px -1px #000; text-decoration-style: dashed; text-decoration-thickness: 0px; text-underline-offset: 2px; } v2/_src/timeline_v2.js 0000666 00000005137 15165661050 0010613 0 ustar 00 function wpbc_flextimeline_nav( timeline_obj, nav_step ){ jQuery( ".wpbc_timeline_front_end" ).trigger( "timeline_nav" , [ timeline_obj, nav_step ] ); //FixIn:7.0.1.48 // jQuery( '#'+timeline_obj.html_client_id + ' .wpbc_tl_prev,#'+timeline_obj.html_client_id + ' .wpbc_tl_next').remove(); // jQuery('#'+timeline_obj.html_client_id + ' .wpbc_tl_title').html( '<span class="wpbc_icn_rotate_right wpbc_spin"></span>   Loading...' ); // '<div style="height:20px;width:100%;text-align:center;margin:15px auto;">Loading ... <img style="vertical-align:middle;box-shadow:none;width:14px;" src="'+_wpbc.get_other_param( 'url_plugin' )+'/assets/img/ajax-loader.gif"><//div>' jQuery( '#'+timeline_obj.html_client_id + ' .flex_tl_prev,#'+timeline_obj.html_client_id + ' .flex_tl_next').remove(); jQuery('#'+timeline_obj.html_client_id + ' .flex_tl_title').html( '<span class="wpbc_icn_rotate_right wpbc_spin"></span>   Loading...' ); // '<div style="height:20px;width:100%;text-align:center;margin:15px auto;">Loading ... <img style="vertical-align:middle;box-shadow:none;width:14px;" src="'+_wpbc.get_other_param( 'url_plugin' )+'/assets/img/ajax-loader.gif"><//div>' //Deprecated: FixIn: 9.0.1.1.1 // if ( 'function' === typeof( jQuery(".popover_click.popover_bottom" ).popover ) ) //FixIn: 7.0.1.2 - 2016-12-10 // jQuery('.popover_click.popover_bottom').popover( 'hide' ); //Hide all opened popovers jQuery.ajax({ url: wpbc_url_ajax, type:'POST', success: function ( data, textStatus ){ // Note, here we direct show HTML to TimeLine frame if( textStatus == 'success') { jQuery('#' + timeline_obj.html_client_id + ' .wpbc_timeline_ajax_replace' ).html( data ); return true; } }, error: function ( XMLHttpRequest, textStatus, errorThrown){ window.status = 'Ajax Error! Status: ' + textStatus; alert( 'Ajax Error! Status: ' + XMLHttpRequest.status + ' ' + XMLHttpRequest.statusText ); }, // beforeSend: someFunction, data:{ action: 'WPBC_FLEXTIMELINE_NAV', timeline_obj: timeline_obj, nav_step: nav_step, wpdev_active_locale: _wpbc.get_other_param( 'locale_active' ), wpbc_nonce: document.getElementById('wpbc_nonce_'+ timeline_obj.html_client_id).value } }); } v2/_out/timeline_v2.1.css 0000666 00000122776 15165661050 0011157 0 ustar 00 :root { --wpbc_timeline-row-height: 35px; --wpbc_timeline-row-header-height: 58px; --wpbc_timeline-booking-pending-color: #ffd86c; --wpbc_timeline-past-booking-pending-color: #fff3d2; --wpbc_timeline-booking-pending-border-color: #e49c2d; --wpbc_timeline-booking-approved-color: #5A71A1; --wpbc_timeline-past-booking-approved-color: #8591aa; --wpbc_timeline-booking-approved-border-color: #4B5E85 } .flex_tl_table { -ms-flex-flow: column nowrap; flex-flow: column nowrap; box-sizing: border-box } .flex_tl_table .flex_tl_table_header, .flex_tl_table .flex_tl_table_row_bookings, .flex_tl_table .flex_tl_table_titles { -ms-flex: 1; flex: 1; display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1 { -ms-flex: 0 1 auto; flex: 0 1 auto; min-width: 0; word-wrap: break-word; display: -ms-flexbox; display: flex; -ms-flex-flow: column nowrap; flex-flow: column nowrap; -ms-flex-pack: center; justify-content: center } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 { -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0 } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 { display: -ms-flexbox; display: flex; -ms-flex-flow: column nowrap; flex-flow: column nowrap; -ms-flex-pack: center; justify-content: center } @media (max-width:782px) { .flex_tl_table .flex_tl_table_header, .flex_tl_table .flex_tl_table_row_bookings, .flex_tl_table .flex_tl_table_titles { -ms-flex-flow: row wrap; flex-flow: row wrap } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 { width: 100%; -ms-flex: 1 1 auto; flex: 1 1 auto } } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav { display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between; -ms-flex-align: baseline; align-items: baseline; padding: 7px 0 0 } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_title { -ms-flex: 1 1 0px; flex: 1 1 0; word-break: break-word; min-width: 0; color: #777 } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar { display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0; display: -ms-flexbox; display: flex; -ms-flex-flow: column nowrap; flex-flow: column nowrap; -ms-flex-pack: justify; justify-content: space-between } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year { -ms-flex: 1; flex: 1; display: -ms-flexbox; display: flex; -ms-flex-flow: column wrap; flex-flow: column wrap; -ms-flex-pack: justify; justify-content: space-between; overflow: hidden } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { -ms-flex: 1; flex: 1; font-size: .85em; font-weight: 600; text-align: center; display: -ms-flexbox; display: flex; -ms-flex-flow: column; flex-flow: column; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center } .flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { font-size: 1em; padding: 0 } .flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { font-size: .85em; font-weight: 600 } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month.flex_tl_dates_bar .flex_tl_day_cell { border: none } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month .flex_tl_day_cell .in_cell_month_year { overflow: visible; word-wrap: normal; white-space: nowrap } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day { -ms-flex: 1; flex: 1; display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between; overflow: hidden } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour { -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0 } .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-align: center; align-items: center } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: distribute; justify-content: space-around } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { -ms-flex: 1 1 0px; flex: 1 1 0; text-align: left } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { text-align: right; padding: 0 1em } @media (max-width:782px) { .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container { -ms-flex-pack: start; justify-content: flex-start } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { -ms-flex: 0 1 auto; flex: 0 1 auto; text-align: left; padding: 0 1em } .flex_timeline_frame .popover { width: 98%; max-width: 98% } } .flex_tl_row_height, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar { min-height: var(--wpbc_timeline-row-height) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_bookings { margin-top: calc(-1 * var(--wpbc_timeline-row-height)) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles { margin-top: calc(-1 * var(--wpbc_timeline-row-height)); overflow: hidden } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar { display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day .in_cell_time_hour { -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0; display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates { -ms-flex: 1 1 0px; flex: 1 1 0; display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: center; justify-content: center; -ms-flex-align: center; align-items: center } .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates, .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates { -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: start; align-items: flex-start } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings { -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0; display: -ms-flexbox; display: flex; -ms-flex-flow: column nowrap; flex-flow: column nowrap; -ms-flex-pack: justify; justify-content: space-between; position: relative } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id { -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0; word-wrap: normal; white-space: nowrap } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.pending_booking { border-bottom: 1px dashed #555 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking { border-bottom: 1px dashed #ccc; background-color: #78a } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id:last-child { border-bottom: none } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:hover { position: relative; cursor: default; outline: 0; box-shadow: none } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a .in_cell_date_booking_pipeline_a_sizer { width: 100%; height: 100% } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles { display: -ms-flexbox; display: flex; -ms-flex-flow: column wrap; flex-flow: column wrap; -ms-flex-pack: start; justify-content: flex-start } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title { overflow: visible; white-space: nowrap; word-wrap: initial; padding: 0 .5em; margin-left: 4px; margin-top: 4px; z-index: 1 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell { border: none } .flex_tl_table, .hidden_items { display: none } .flex_timeline_frame .popover { border: 2px solid #555; font-size: 12px; max-width: 299px; max-height: 425px; overflow-y: auto; scrollbar-width: thin; scrollbar-gutter: unset } hr.wpbc_tl_popover_booking_separator { margin-bottom: 0 } .wpbc-listing-collumn.field-system-info { font-size: 9px; font-style: normal; line-height: 1.2em; text-shadow: none; white-space: nowrap; padding: 2px 0 0 5px; text-align: right; color: #777 } .flex_timeline_frame .popover .popover-title { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: center; align-items: center; min-height: 2.5em; margin: 0; padding: 5px 30px 5px 6px; border-radius: 5px 5px 0 0; background-color: #f7f7f7 } .flex_timeline_frame .popover .popover-title .popover-title-id { -ms-flex: 0 0 auto; flex: 0 0 auto; width: 100%; font-size: 14px; font-weight: 500; line-height: 1.8; margin: 0; padding: 0 12px 0 5px; border: 0; vertical-align: baseline } .flex_timeline_frame .popover .popover-title .popover-title-buttons { -ms-flex: 1 1 auto; flex: 1 1 auto; display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; margin: 2px 0 } .flex_timeline_frame .popover .popover-title .popover-title-buttons a, .flex_timeline_frame .popover .popover-title .popover-title-buttons a:focus, .flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover { -ms-flex: none; flex: none; box-sizing: border-box; margin: 0 5px 0 0; padding: 0 10px 1px; font-size: 13px; height: 28px; line-height: 28px; white-space: nowrap; text-decoration: none; cursor: pointer; -webkit-appearance: none; color: #555; background: #f7f7f7; border-radius: 3px; border: 1px solid #d8d8d8; box-shadow: none; outline: 0 } .flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover { background: #fafafa; border-color: #ccc; color: #23282d } .flex_timeline_frame .popover .popover-title .popover-title-buttons .wpbc-buttons-separator { margin-right: 1.5em } .flex_timeline_frame .popover .popover-close, .flex_timeline_frame .popover .popover-close:hover { position: absolute; right: 0; top: 0; font-size: 20px; line-height: 1.5em; padding: 5px } .flex_timeline_frame .popover .popover-close a, .flex_timeline_frame .popover .popover-close a:active, .flex_timeline_frame .popover .popover-close a:focus, .flex_timeline_frame .popover .popover-close a:hover { text-decoration: none; border-style: none; outline: 0; color: #444; background: 0 0; padding: 0 5px } .flex_timeline_frame .popover.bottom > .arrow::after { border-bottom-color: transparent } .popover-content .flex-popover-content-data { display: -ms-flexbox; display: flex; -ms-flex-flow: column wrap; flex-flow: column wrap; -ms-flex-pack: justify; justify-content: space-between } .popover-content .flex-popover-content-data .flex-popover-bars, .popover-content .wpbc-popover-content-data .booking-dates, .popover-content .wpbc-popover-content-data .booking-labels, .popover-content .wpbc-popover-content-data .wpbc-popover-booking-data, .popover-content .wpbc-popover-content-data .wpbc-popover-booking-notes, .popover-content .wpbc-popover-content-data .wpbc-popover-cost-bar { -ms-flex: 1 1 auto; flex: 1 1 auto } .popover-content .flex-popover-content-data .flex-popover-bars { display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: justify; justify-content: space-between } .popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-labels-bar { -ms-flex: 1 1 0px; flex: 1 1 0; clear: both } .popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-cost-bar { -ms-flex: none; flex: none; padding: .3em 0; margin: 0 } .popover-content .flex-popover-content-data .flex-popover-labels-bar { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start } .popover-content .flex-popover-content-data .flex-popover-labels-bar .flex-label { -ms-flex: 0 1 auto; flex: 0 1 auto; min-width: 0 } .popover-content .flex-popover-content-data .flex-label { border: 0; border-radius: 3px; text-shadow: none; box-shadow: 0 0 1px #ddd; font-weight: 400; font-size: 95%; line-height: 1.7em; padding: .2em .8em; background-color: #5bc0de; color: #fff; text-align: center; vertical-align: baseline; margin: .15em .75em .5em 0; word-wrap: break-word; word-wrap: anywhere; white-space: pre-wrap } .popover-content .flex-popover-content-data .flex-label .label-prefix { font-size: 70%; font-weight: 400 } .popover-content .flex-popover-content-data .flex-label.flex-label-id { background: #888 } .popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-pending { background: #ffbb45 } .popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-approved { background: #9be } .popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-success { background: #468847 } .popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-unknown { background: #999 } .popover-content .flex-popover-content-data .flex-label.flex-label-trash { background: #d94a48 } .popover-content .flex-popover-content-data .flex-label.flex-label-resource { text-align: left } .popover-content .flex-popover-content-data .flex-label.flex-label-cost { background: 0 0; font-weight: 600; color: #333; box-shadow: none; padding: 0; margin: 0 } .popover-content .flex-popover-content-data .flex-popover-booking-data { margin: 1em 0; text-align: left; font-size: 1.05em; line-height: 1.8em; color: #333; max-width: 100%; word-wrap: break-word; word-wrap: anywhere } .popover-content .flex-popover-content-data .flex-popover-booking-data span.fieldvalue { background: 0 0; padding: 2px; border-radius: 1px; margin: 0 .5em 0 0; word-break: initial; word-wrap: break-word } .popover-content .flex-popover-content-data .flex-popover-booking-data label { font-weight: 600; vertical-align: baseline } .popover-content .flex-popover-content-data .flex-popover-booking-data * { vertical-align: baseline; line-height: 2em } .popover-content .flex-popover-content-data .wpbc-popover-booking-notes { margin: 0 0 1em; max-width: 100%; word-break: break-word } .popover-content .flex-popover-content-data .flex-label-dates { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: start; align-items: flex-start } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date { -ms-flex: 0 1 auto; flex: 0 1 auto; font-size: 103%; padding: .1em .7em; margin: 0 0 .2em; background: #ffbb45 } .popover-content .flex-popover-content-data .flex-label-dates .date_tire { -ms-flex: 0 1 auto; flex: 0 1 auto; margin: 0 .2em; font-size: 175%; line-height: 1em } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date .field-booking-time { font-size: .7em; font-weight: 400; color: #23282d } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date.approved { background: #9be } .popover-content .wpbc_tl_popover_booking_separator { margin: 20px 0; border-top: 1px solid #ddd; box-shadow: 0 1px 1px #f9f9f9 } .flex_tl_table { background: #fff; border: 1px solid #ddd; box-shadow: 0 1px 2px #eef; font-size: 12px; border-radius: 4px 4px 0 0 } .flex_tl_table .flex_tl_table_header { background: 0 0; border-bottom: 1px solid #dfdfdf; font-size: 15px; font-weight: 600; color: #606060; text-shadow: none; line-height: 3em; height: 3em; overflow: hidden; padding-left: 1em; border-radius: 4px 4px 0 0 } .wpbc_timeline_front_end .flex_tl_table .flex_tl_table_header { padding: 0 2px } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 { font-weight: 600; padding: 8px; line-height: 1.42857143em } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 { text-align: center } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev { font-size: 22px; font-weight: 600; line-height: 12px; color: #777 } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a:hover, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a:hover { text-decoration: none; color: #757575; cursor: pointer } .flex_tl_table .flex_tl_table_row_bookings { border-top: 1px solid #ddd } .flex_tl_table .flex_tl_table_row_bookings:nth-of-type(2n+1) { background-color: #f9f9f9 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1 { font-weight: 600; padding: 0 0 0 4px; line-height: 1.42857143em; box-shadow: none } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_row_height { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: center; align-items: center } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1 { color: #999; font-weight: 400; overflow: hidden; white-space: nowrap } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a { border-bottom: 0 dashed; color: #789; text-shadow: none; margin: 0 0 0 2px; box-shadow: none; outline: 0; text-decoration: none } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:focus, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:hover { text-decoration: underline; -webkit-text-decoration-style: dashed; text-decoration-style: dashed; text-decoration-thickness: 1px; text-underline-offset: 3px } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.parent { font-weight: 600 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.child { margin-left: 20px } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { border-left: 1px solid #eee } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_date_container { border-left: 2px solid #c54 } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 a, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 a { color: #c32; background: #fffcf4 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 .in_cell_date_container_show_dates, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 .in_cell_date_container_show_dates { color: #bd7f78; background: #fffcf4 } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a:hover { color: #789; text-decoration: none } .flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { display: none } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { overflow: hidden; height: 1.5em; border-bottom: 1px solid #eee; border-left: 1px solid #eee } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year { color: #c32; font-size: .85em; font-weight: 600; padding: 0 .5em } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour { border-left: 1px solid #eee; border-top: 1px solid #eee; display: -ms-flexbox; display: flex; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: center; align-items: center; padding: 0 0 0 2px; white-space: nowrap; overflow: hidden; min-height: 12px; font-size: .8em; font-weight: 600 } .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num { font-size: .85em; font-weight: 600; text-align: left; padding: 0 1em } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday6, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday7, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday6, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday7 { color: #bd7f78 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { border-left: 1px solid #eee; color: #aaa; font-size: .85em; text-shadow: none } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_time_hour:first-child .in_cell_date_container { border-left: 2px solid #c54 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month.exist_booking_in_cell .in_cell_time_hour:first-child .in_cell_date_container { border-left: 1px solid #c54 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.start_new_booking { border-color: #616f8b } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date { background-color: #f0cf77 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.past_date { background-color: #9099aa; background-color: var(--wpbc_timeline-past-booking-approved-color) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking.booking_trash { border-left: 2px solid #901c1a } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_trash { background-color: #db6f6d } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day { border-left: 1px solid #090 } .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day, .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day { border-left: none } .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time, .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time { border-left: 1px solid #77ce0f } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id a { font-size: 7px; font-weight: 600; color: #fff; cursor: pointer } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title { background: #777; color: #fff; border-left: 2px solid #555; cursor: pointer; border-radius: 3px; font-size: 10px } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title.several_bookings_in_cell { font-weight: 700; background: #fdab36; color: #455366; border-left: 2px solid #dd8b16 } .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates, .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates { border-left: 1px solid #eee; border-top: 1px solid #eee; font-size: .8em; word-wrap: normal; white-space: nowrap; overflow: hidden; padding: 0 2px } .wpbc_calendar_overview__header { position: relative; width: 100% } .wpbc_calendar_overview__header .nav-tabs { box-shadow: 0 3px 8px #eaeaea; border-bottom: 1px solid #e3e3e3; display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: center; align-items: center } .wpbc_calendar_overview__header .wpbc_calendar_overview__navigation { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: end; justify-content: flex-end; -ms-flex-align: center; align-items: center; margin: 4px 5px 4px auto } .wpbc_calendar_overview__container { padding: 0 5px 5px; margin-top: 0; border: 1px solid #d5d5d5; background: #fff; font-size: 13px; border-radius: 0 0 3px 3px; box-shadow: 0 0 8px #dadada; margin-bottom: 25px } .wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container { margin: -21px 0 0!important; position: relative; box-shadow: 0 4px 8px #e4e4e4 } .wpbc_timeline_toolbar_container .wpdvlp-sub-tabs { border-radius: 0 0 2px 2px } .wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container .wpdvlp-sub-tabs { padding-bottom: 1px } .wpbc_calendar_overview__container .flex_tl_table { border-radius: 0; border-top: none; font-size: 13px } .wpbc_timeline_toolbar_structure { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: center; align-items: center } .wpbc_timeline_toolbar_structure > * { margin-top: 0; margin-bottom: 10px; margin-right: 15px } .wpbc_timeline_toolbar_structure > :last-child { margin-left: auto; margin-right: 0 } .wpbc_toolbar_search_by_id_bookings { -ms-flex-item-align: end; align-self: flex-end } @media (max-width:501px) { .wpbc_toolbar_search_by_id_bookings { display: none } } .flex_tl__scrolling_sections { display: -ms-flexbox; display: flex; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: start; align-items: flex-start; overflow-y: auto; scrollbar-width: thin } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 { width: 220px; overflow-x: auto; scrollbar-width: thin; box-shadow: 0 0 3px #9b9b9b; z-index: 1; padding: 0 } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 > div { -ms-flex: 0 1 180px; flex: 0 1 180px; border-right: 1px solid #dfdfdf } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 > div.flex_tl_table_titles { border-right: 1px solid transparent } .flex_tl__scrolling_sections .flex_tl__scrolling_section2 { -ms-flex: 1 1 100%; flex: 1 1 100%; overflow-x: auto } .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 900px } .flex_tl_single_resource.flex_frame_view_days_num_90 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 350px } .flex_tl_single_resource.flex_frame_view_days_num_365 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 1400px } .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 900px } .flex_tl_matrix_resources.flex_frame_view_days_num_7 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 300px } .flex_tl_matrix_resources.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 1400px } .flex_tl_matrix_resources.flex_frame_view_days_num_60 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width { min-width: 2800px } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 { height: var(--wpbc_timeline-row-header-height); overflow: hidden } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-pack: start; justify-content: flex-start; -ms-flex-align: stretch; align-items: stretch } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 > div, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 > div { -ms-flex: 1 1 100%; flex: 1 1 100% } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id { margin-left: -1px; opacity: .8; background: none; background-color: var(--wpbc_timeline-booking-pending-color) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking { border-left: 2px solid #df8d18 } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking { background-color: var(--wpbc_timeline-booking-approved-color) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date { background-color: var(--wpbc_timeline-past-booking-pending-color) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_change_over { border: none; width: 100%; height: 100%; position: absolute; width: calc(100% + 1px); margin: 0 -1px } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in { background: linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-pending-border-color) 50%,var(--wpbc_timeline-booking-pending-border-color) 52%,var(--wpbc_timeline-booking-pending-color) 52%,var(--wpbc_timeline-booking-pending-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out { background: linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-pending-color) 50%,var(--wpbc_timeline-booking-pending-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in { background: linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-approved-border-color) 50%,var(--wpbc_timeline-booking-approved-border-color) 52%,var(--wpbc_timeline-booking-approved-color) 52%,var(--wpbc_timeline-booking-approved-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out { background: linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-approved-color) 50%,var(--wpbc_timeline-booking-approved-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in.past_date { background: linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-pending-border-color) 50%,var(--wpbc_timeline-booking-pending-border-color) 52%,var(--wpbc_timeline-past-booking-pending-color) 52%,var(--wpbc_timeline-past-booking-pending-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out.past_date { background: linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-past-booking-pending-color) 50%,var(--wpbc_timeline-past-booking-pending-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in.past_date { background: linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-approved-border-color) 50%,var(--wpbc_timeline-booking-approved-border-color) 52%,var(--wpbc_timeline-past-booking-approved-color) 52%,var(--wpbc_timeline-past-booking-approved-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out.past_date { background: linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-past-booking-approved-color) 50%,var(--wpbc_timeline-past-booking-approved-color) 100%) } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:focus, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:hover { outline: 0; box-shadow: 0 0 0 2px #a6bbe5; box-shadow: 0 0 4px -1px #000; -webkit-text-decoration-style: dashed; text-decoration-style: dashed; text-decoration-thickness: 0; text-underline-offset: 2px } v2/_out/timeline_v2.1.min.css 0000666 00000331007 15165661050 0011726 0 ustar 00 :root{--wpbc_timeline-row-height:35px;--wpbc_timeline-row-header-height:58px;--wpbc_timeline-booking-pending-color:#ffd86c;--wpbc_timeline-past-booking-pending-color:#fff3d2;--wpbc_timeline-booking-pending-border-color:#e49c2d;--wpbc_timeline-booking-approved-color:#5A71A1;--wpbc_timeline-past-booking-approved-color:#8591aa;--wpbc_timeline-booking-approved-border-color:#4B5E85}.flex_tl_table{-ms-flex-flow:column nowrap;flex-flow:column nowrap;box-sizing:border-box}.flex_tl_table .flex_tl_table_header,.flex_tl_table .flex_tl_table_row_bookings,.flex_tl_table .flex_tl_table_titles{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1{-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;word-wrap:break-word;display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-ms-flex-pack:center;justify-content:center}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{-ms-flex:1 1 0px;flex:1 1 0;min-width:0}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-ms-flex-pack:center;justify-content:center}@media (max-width:782px){.flex_tl_table .flex_tl_table_header,.flex_tl_table .flex_tl_table_row_bookings,.flex_tl_table .flex_tl_table_titles{-ms-flex-flow:row wrap;flex-flow:row wrap}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{width:100%;-ms-flex:1 1 auto;flex:1 1 auto}}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:baseline;align-items:baseline;padding:7px 0 0}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_title{-ms-flex:1 1 0px;flex:1 1 0;word-break:break-word;min-width:0;color:#777}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell{-ms-flex:1 1 0px;flex:1 1 0;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-ms-flex-pack:justify;justify-content:space-between}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week{-ms-flex:1;flex:1;font-size:.85em;font-weight:600;text-align:center;display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week{font-size:1em;padding:0}.flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num,.flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week{font-size:.85em;font-weight:600}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month.flex_tl_dates_bar .flex_tl_day_cell{border:none}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month .flex_tl_day_cell .in_cell_month_year{overflow:visible;word-wrap:normal;white-space:nowrap}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour{-ms-flex:1 1 0px;flex:1 1 0;min-width:0}.flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container,.flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:center;align-items:center}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:distribute;justify-content:space-around}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks{-ms-flex:1 1 0px;flex:1 1 0;text-align:left}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks{text-align:right;padding:0 1em}@media (max-width:782px){.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container{-ms-flex-pack:start;justify-content:flex-start}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks{-ms-flex:0 1 auto;flex:0 1 auto;text-align:left;padding:0 1em}.flex_timeline_frame .popover{width:98%;max-width:98%}}.flex_tl_row_height,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar{min-height:var(--wpbc_timeline-row-height)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_bookings{margin-top:calc(-1 * var(--wpbc_timeline-row-height))}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles{margin-top:calc(-1 * var(--wpbc_timeline-row-height));overflow:hidden}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day .in_cell_time_hour{-ms-flex:1 1 0px;flex:1 1 0;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{-ms-flex:1 1 0px;flex:1 1 0;display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates,.flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:start;align-items:flex-start}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings{-ms-flex:1 1 0px;flex:1 1 0;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-ms-flex-pack:justify;justify-content:space-between;position:relative}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id{-ms-flex:1 1 0px;flex:1 1 0;min-width:0;word-wrap:normal;white-space:nowrap}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.pending_booking{border-bottom:1px dashed #555}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking{border-bottom:1px dashed #ccc;background-color:#78a}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id:last-child{border-bottom:none}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:active,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:hover{position:relative;cursor:default;outline:0;box-shadow:none}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a .in_cell_date_booking_pipeline_a_sizer{width:100%;height:100%}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles{display:-ms-flexbox;display:flex;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-pack:start;justify-content:flex-start}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title{overflow:visible;white-space:nowrap;word-wrap:initial;padding:0 .5em;margin-left:4px;margin-top:4px;z-index:1}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell{border:none}.flex_tl_table,.hidden_items{display:none}.flex_timeline_frame .popover{border:2px solid #555;font-size:12px;max-width:299px;max-height:425px;overflow-y:auto;scrollbar-width:thin;scrollbar-gutter:unset}hr.wpbc_tl_popover_booking_separator{margin-bottom:0}.wpbc-listing-collumn.field-system-info{font-size:9px;font-style:normal;line-height:1.2em;text-shadow:none;white-space:nowrap;padding:2px 0 0 5px;text-align:right;color:#777}.flex_timeline_frame .popover .popover-title{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center;min-height:2.5em;margin:0;padding:5px 30px 5px 6px;border-radius:5px 5px 0 0;background-color:#f7f7f7}.flex_timeline_frame .popover .popover-title .popover-title-id{-ms-flex:0 0 auto;flex:0 0 auto;width:100%;font-size:14px;font-weight:500;line-height:1.8;margin:0;padding:0 12px 0 5px;border:0;vertical-align:baseline}.flex_timeline_frame .popover .popover-title .popover-title-buttons{-ms-flex:1 1 auto;flex:1 1 auto;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;margin:2px 0}.flex_timeline_frame .popover .popover-title .popover-title-buttons a,.flex_timeline_frame .popover .popover-title .popover-title-buttons a:focus,.flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover{-ms-flex:none;flex:none;box-sizing:border-box;margin:0 5px 0 0;padding:0 10px 1px;font-size:13px;height:28px;line-height:28px;white-space:nowrap;text-decoration:none;cursor:pointer;-webkit-appearance:none;color:#555;background:#f7f7f7;border-radius:3px;border:1px solid #d8d8d8;box-shadow:none;outline:0}.flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover{background:#fafafa;border-color:#ccc;color:#23282d}.flex_timeline_frame .popover .popover-title .popover-title-buttons .wpbc-buttons-separator{margin-right:1.5em}.flex_timeline_frame .popover .popover-close,.flex_timeline_frame .popover .popover-close:hover{position:absolute;right:0;top:0;font-size:20px;line-height:1.5em;padding:5px}.flex_timeline_frame .popover .popover-close a,.flex_timeline_frame .popover .popover-close a:active,.flex_timeline_frame .popover .popover-close a:focus,.flex_timeline_frame .popover .popover-close a:hover{text-decoration:none;border-style:none;outline:0;color:#444;background:0 0;padding:0 5px}.flex_timeline_frame .popover.bottom>.arrow::after{border-bottom-color:transparent}.popover-content .flex-popover-content-data{display:-ms-flexbox;display:flex;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-pack:justify;justify-content:space-between}.popover-content .flex-popover-content-data .flex-popover-bars,.popover-content .wpbc-popover-content-data .booking-dates,.popover-content .wpbc-popover-content-data .booking-labels,.popover-content .wpbc-popover-content-data .wpbc-popover-booking-data,.popover-content .wpbc-popover-content-data .wpbc-popover-booking-notes,.popover-content .wpbc-popover-content-data .wpbc-popover-cost-bar{-ms-flex:1 1 auto;flex:1 1 auto}.popover-content .flex-popover-content-data .flex-popover-bars{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:justify;justify-content:space-between}.popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-labels-bar{-ms-flex:1 1 0px;flex:1 1 0;clear:both}.popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-cost-bar{-ms-flex:none;flex:none;padding:.3em 0;margin:0}.popover-content .flex-popover-content-data .flex-popover-labels-bar{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start}.popover-content .flex-popover-content-data .flex-popover-labels-bar .flex-label{-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.popover-content .flex-popover-content-data .flex-label{border:0;border-radius:3px;text-shadow:none;box-shadow:0 0 1px #ddd;font-weight:400;font-size:95%;line-height:1.7em;padding:.2em .8em;background-color:#5bc0de;color:#fff;text-align:center;vertical-align:baseline;margin:.15em .75em .5em 0;word-wrap:break-word;word-wrap:anywhere;white-space:pre-wrap}.popover-content .flex-popover-content-data .flex-label .label-prefix{font-size:70%;font-weight:400}.popover-content .flex-popover-content-data .flex-label.flex-label-id{background:#888}.popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-pending{background:#ffbb45}.popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-approved{background:#9be}.popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-success{background:#468847}.popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-unknown{background:#999}.popover-content .flex-popover-content-data .flex-label.flex-label-trash{background:#d94a48}.popover-content .flex-popover-content-data .flex-label.flex-label-resource{text-align:left}.popover-content .flex-popover-content-data .flex-label.flex-label-cost{background:0 0;font-weight:600;color:#333;box-shadow:none;padding:0;margin:0}.popover-content .flex-popover-content-data .flex-popover-booking-data{margin:1em 0;text-align:left;font-size:1.05em;line-height:1.8em;color:#333;max-width:100%;word-wrap:break-word;word-wrap:anywhere}.popover-content .flex-popover-content-data .flex-popover-booking-data span.fieldvalue{background:0 0;padding:2px;border-radius:1px;margin:0 .5em 0 0;word-break:initial;word-wrap:break-word}.popover-content .flex-popover-content-data .flex-popover-booking-data label{font-weight:600;vertical-align:baseline}.popover-content .flex-popover-content-data .flex-popover-booking-data *{vertical-align:baseline;line-height:2em}.popover-content .flex-popover-content-data .wpbc-popover-booking-notes{margin:0 0 1em;max-width:100%;word-break:break-word}.popover-content .flex-popover-content-data .flex-label-dates{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:start;align-items:flex-start}.popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date{-ms-flex:0 1 auto;flex:0 1 auto;font-size:103%;padding:.1em .7em;margin:0 0 .2em;background:#ffbb45}.popover-content .flex-popover-content-data .flex-label-dates .date_tire{-ms-flex:0 1 auto;flex:0 1 auto;margin:0 .2em;font-size:175%;line-height:1em}.popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date .field-booking-time{font-size:.7em;font-weight:400;color:#23282d}.popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date.approved{background:#9be}.popover-content .wpbc_tl_popover_booking_separator{margin:20px 0;border-top:1px solid #ddd;box-shadow:0 1px 1px #f9f9f9}.flex_tl_table{background:#fff;border:1px solid #ddd;box-shadow:0 1px 2px #eef;font-size:12px;border-radius:4px 4px 0 0}.flex_tl_table .flex_tl_table_header{background:0 0;border-bottom:1px solid #dfdfdf;font-size:15px;font-weight:600;color:#606060;text-shadow:none;line-height:3em;height:3em;overflow:hidden;padding-left:1em;border-radius:4px 4px 0 0}.wpbc_timeline_front_end .flex_tl_table .flex_tl_table_header{padding:0 2px}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{font-weight:600;padding:8px;line-height:1.42857143em}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{text-align:center}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next,.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev{font-size:22px;font-weight:600;line-height:12px;color:#777}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a,.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a:hover,.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a,.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a:hover{text-decoration:none;color:#757575;cursor:pointer}.flex_tl_table .flex_tl_table_row_bookings{border-top:1px solid #ddd}.flex_tl_table .flex_tl_table_row_bookings:nth-of-type(2n+1){background-color:#f9f9f9}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1{font-weight:600;padding:0 0 0 4px;line-height:1.42857143em;box-shadow:none}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_row_height{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1{color:#999;font-weight:400;overflow:hidden;white-space:nowrap}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a{border-bottom:0 dashed;color:#789;text-shadow:none;margin:0 0 0 2px;box-shadow:none;outline:0;text-decoration:none}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:active,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:focus,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:hover{text-decoration:underline;-webkit-text-decoration-style:dashed;text-decoration-style:dashed;text-decoration-thickness:1px;text-underline-offset:3px}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.parent{font-weight:600}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.child{margin-left:20px}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell{border-left:1px solid #eee}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_date_container{border-left:2px solid #c54}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 a,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 a{color:#c32;background:#fffcf4}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 .in_cell_date_container_show_dates,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 .in_cell_date_container_show_dates{color:#bd7f78;background:#fffcf4}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a:hover{color:#789;text-decoration:none}.flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month{display:none}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month{overflow:hidden;height:1.5em;border-bottom:1px solid #eee;border-left:1px solid #eee}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year{color:#c32;font-size:.85em;font-weight:600;padding:0 .5em}.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour{border-left:1px solid #eee;border-top:1px solid #eee;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center;padding:0 0 0 2px;white-space:nowrap;overflow:hidden;min-height:12px;font-size:.8em;font-weight:600}.flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num,.flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num{font-size:.85em;font-weight:600;text-align:left;padding:0 1em}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday6,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday7,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday6,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday7{color:#bd7f78}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell{border-left:1px solid #eee;color:#aaa;font-size:.85em;text-shadow:none}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_time_hour:first-child .in_cell_date_container{border-left:2px solid #c54}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month.exist_booking_in_cell .in_cell_time_hour:first-child .in_cell_date_container{border-left:1px solid #c54}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.start_new_booking{border-color:#616f8b}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date{background-color:#f0cf77}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.past_date{background-color:#9099aa;background-color:var(--wpbc_timeline-past-booking-approved-color)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking.booking_trash{border-left:2px solid #901c1a}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_trash{background-color:#db6f6d}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day{border-left:1px solid #090}.flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day,.flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day{border-left:none}.flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time,.flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time{border-left:1px solid #77ce0f}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id a{font-size:7px;font-weight:600;color:#fff;cursor:pointer}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title{background:#777;color:#fff;border-left:2px solid #555;cursor:pointer;border-radius:3px;font-size:10px}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title.several_bookings_in_cell{font-weight:700;background:#fdab36;color:#455366;border-left:2px solid #dd8b16}.flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates,.flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{border-left:1px solid #eee;border-top:1px solid #eee;font-size:.8em;word-wrap:normal;white-space:nowrap;overflow:hidden;padding:0 2px}.wpbc_calendar_overview__header{position:relative;width:100%}.wpbc_calendar_overview__header .nav-tabs{box-shadow:0 3px 8px #eaeaea;border-bottom:1px solid #e3e3e3;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center}.wpbc_calendar_overview__header .wpbc_calendar_overview__navigation{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-align:center;align-items:center;margin:4px 5px 4px auto}.wpbc_calendar_overview__container{padding:0 5px 5px;margin-top:0;border:1px solid #d5d5d5;background:#fff;font-size:13px;border-radius:0 0 3px 3px;box-shadow:0 0 8px #dadada;margin-bottom:25px}.wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container{margin:-21px 0 0!important;position:relative;box-shadow:0 4px 8px #e4e4e4}.wpbc_timeline_toolbar_container .wpdvlp-sub-tabs{border-radius:0 0 2px 2px}.wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container .wpdvlp-sub-tabs{padding-bottom:1px}.wpbc_calendar_overview__container .flex_tl_table{border-radius:0;border-top:none;font-size:13px}.wpbc_timeline_toolbar_structure{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center}.wpbc_timeline_toolbar_structure>*{margin-top:0;margin-bottom:10px;margin-right:15px}.wpbc_timeline_toolbar_structure>:last-child{margin-left:auto;margin-right:0}.wpbc_toolbar_search_by_id_bookings{-ms-flex-item-align:end;align-self:flex-end}@media (max-width:501px){.wpbc_toolbar_search_by_id_bookings{display:none}}.flex_tl__scrolling_sections{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:start;align-items:flex-start;overflow-y:auto;scrollbar-width:thin}.flex_tl__scrolling_sections .flex_tl__scrolling_section1{width:220px;overflow-x:auto;scrollbar-width:thin;box-shadow:0 0 3px #9b9b9b;z-index:1;padding:0}.flex_tl__scrolling_sections .flex_tl__scrolling_section1>div{-ms-flex:0 1 180px;flex:0 1 180px;border-right:1px solid #dfdfdf}.flex_tl__scrolling_sections .flex_tl__scrolling_section1>div.flex_tl_table_titles{border-right:1px solid transparent}.flex_tl__scrolling_sections .flex_tl__scrolling_section2{-ms-flex:1 1 100%;flex:1 1 100%;overflow-x:auto}.flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:900px}.flex_tl_single_resource.flex_frame_view_days_num_90 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:350px}.flex_tl_single_resource.flex_frame_view_days_num_365 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:1400px}.flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:900px}.flex_tl_matrix_resources.flex_frame_view_days_num_7 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:300px}.flex_tl_matrix_resources.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:1400px}.flex_tl_matrix_resources.flex_frame_view_days_num_60 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{min-width:2800px}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{height:var(--wpbc_timeline-row-header-height);overflow:hidden}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:stretch;align-items:stretch}.flex_tl_table .flex_tl_table_header .flex_tl_collumn_2>div,.flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2>div{-ms-flex:1 1 100%;flex:1 1 100%}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id{margin-left:-1px;opacity:.8;background:0 0;background-color:var(--wpbc_timeline-booking-pending-color)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking{border-left:2px solid #df8d18}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking{background-color:var(--wpbc_timeline-booking-approved-color)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date{background-color:var(--wpbc_timeline-past-booking-pending-color)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_change_over{border:none;width:100%;height:100%;position:absolute;width:calc(100% + 1px);margin:0 -1px}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in{background:linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-pending-border-color) 50%,var(--wpbc_timeline-booking-pending-border-color) 52%,var(--wpbc_timeline-booking-pending-color) 52%,var(--wpbc_timeline-booking-pending-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out{background:linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-pending-color) 50%,var(--wpbc_timeline-booking-pending-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in{background:linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-approved-border-color) 50%,var(--wpbc_timeline-booking-approved-border-color) 52%,var(--wpbc_timeline-booking-approved-color) 52%,var(--wpbc_timeline-booking-approved-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out{background:linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-approved-color) 50%,var(--wpbc_timeline-booking-approved-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in.past_date{background:linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-pending-border-color) 50%,var(--wpbc_timeline-booking-pending-border-color) 52%,var(--wpbc_timeline-past-booking-pending-color) 52%,var(--wpbc_timeline-past-booking-pending-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out.past_date{background:linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-past-booking-pending-color) 50%,var(--wpbc_timeline-past-booking-pending-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in.past_date{background:linear-gradient(to bottom right,#fff0 0,#fff0 50%,var(--wpbc_timeline-booking-approved-border-color) 50%,var(--wpbc_timeline-booking-approved-border-color) 52%,var(--wpbc_timeline-past-booking-approved-color) 52%,var(--wpbc_timeline-past-booking-approved-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out.past_date{background:linear-gradient(to top left,#fff0 0,#fff0 50%,var(--wpbc_timeline-past-booking-approved-color) 50%,var(--wpbc_timeline-past-booking-approved-color) 100%)}.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:active,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:focus,.flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:hover{outline:0;box-shadow:0 0 0 2px #a6bbe5;box-shadow:0 0 4px -1px #000;-webkit-text-decoration-style:dashed;text-decoration-style:dashed;text-decoration-thickness:0;text-underline-offset:2px} /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvdGltZWxpbmUvdjIvX291dC90aW1lbGluZV92Mi4xLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUNFLDJCQUE0QixLQUM1QixrQ0FBbUMsS0FDbkMsc0NBQXVDLFFBQ3ZDLDJDQUE0QyxRQUM1Qyw2Q0FBOEMsUUFDOUMsdUNBQXdDLFFBQ3hDLDRDQUE2QyxRQUM3Qyw4Q0FBK0MsUUFFakQsZUFDRSxjQUFlLE9BQU8sT0FDdEIsVUFBVyxPQUFPLE9BQ2xCLFdBQVksV0FFZCxxQ0FDQSwyQ0FDQSxxQ0FDRSxTQUFVLEVBQ1YsS0FBTSxFQUNOLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLE9BQ25CLFVBQVcsSUFBSSxPQUNmLGNBQWUsUUFDZixnQkFBaUIsY0FFbkIsd0RBQ0EsOERBQ0Esd0RBQ0UsU0FBVSxFQUFFLEVBQUUsS0FDZCxLQUFNLEVBQUUsRUFBRSxLQUNWLFVBQVcsRUFDWCxVQUFXLFdBQ1gsUUFBUyxZQUNULFFBQVMsS0FDVCxjQUFlLE9BQU8sT0FDdEIsVUFBVyxPQUFPLE9BQ2xCLGNBQWUsT0FDZixnQkFBaUIsT0FFbkIsd0RBQ0EsOERBQ0Esd0RBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLFVBQVcsRUFFYix3REFDRSxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsT0FBTyxPQUN0QixVQUFXLE9BQU8sT0FDbEIsY0FBZSxPQUNmLGdCQUFpQixPQUVuQix5QkFDRSxxQ0FDQSwyQ0FDQSxxQ0FDRSxjQUFlLElBQUksS0FDbkIsVUFBVyxJQUFJLEtBRWpCLDhEQUNBLDhEQUNBLHdEQUNBLHdEQUNFLE1BQU8sS0FDUCxTQUFVLEVBQUUsRUFBRSxLQUNkLEtBQU0sRUFBRSxFQUFFLE1BR2QscUVBQ0UsUUFBUyxZQUNULFFBQVMsS0FDVCxjQUFlLElBQUksT0FDbkIsVUFBVyxJQUFJLE9BQ2YsY0FBZSxRQUNmLGdCQUFpQixjQUNqQixlQUFnQixTQUNoQixZQUFhLFNBQ2IsUUFBUyxJQUFJLEVBQUUsRUFFakIsb0ZBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLFdBQVksV0FDWixVQUFXLEVBQ1gsTUFBTyxLQUVULDJFQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLE9BQ25CLFVBQVcsSUFBSSxPQUNmLGNBQWUsUUFDZixnQkFBaUIsY0FFbkIsNkZBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLFVBQVcsRUFDWCxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsT0FBTyxPQUN0QixVQUFXLE9BQU8sT0FDbEIsY0FBZSxRQUNmLGdCQUFpQixjQUVuQixxSEFDQSxpSEFDRSxTQUFVLEVBQ1YsS0FBTSxFQUNOLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxPQUFPLEtBQ3RCLFVBQVcsT0FBTyxLQUNsQixjQUFlLFFBQ2YsZ0JBQWlCLGNBQ2pCLFNBQVUsT0FFWixzSUFDQSx1SUFDRSxTQUFVLEVBQ1YsS0FBTSxFQUNOLFVBQVcsTUFDWCxZQUFhLElBQ2IsV0FBWSxPQUNaLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxPQUNmLFVBQVcsT0FDWCxlQUFnQixPQUNoQixZQUFhLE9BQ2IsY0FBZSxPQUNmLGdCQUFpQixPQUVuQixnS0FDRSxVQUFXLElBQ1gsUUFBUyxFQUVYLG1LQUNBLG9LQUNFLFVBQVcsTUFDWCxZQUFhLElBRWYscUhBQ0UsT0FBUSxLQUVWLHVIQUNFLFNBQVUsUUFDVixVQUFXLE9BQ1gsWUFBYSxPQUVmLDBIQUNFLFNBQVUsRUFDVixLQUFNLEVBQ04sUUFBUyxZQUNULFFBQVMsS0FDVCxjQUFlLElBQUksT0FDbkIsVUFBVyxJQUFJLE9BQ2YsY0FBZSxRQUNmLGdCQUFpQixjQUNqQixTQUFVLE9BRVosNklBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLFVBQVcsRUFFYiwwS0FDQSwwS0FDRSxjQUFlLElBQUksT0FDbkIsVUFBVyxJQUFJLE9BQ2YsZUFBZ0IsT0FDaEIsWUFBYSxPQUVmLHNHQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLEtBQ25CLFVBQVcsSUFBSSxLQUNmLGNBQWUsV0FDZixnQkFBaUIsYUFFbkIseUlBQ0EsMElBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLFdBQVksS0FFZCwwSUFDRSxXQUFZLE1BQ1osUUFBUyxFQUFFLElBRWIseUJBQ0Usc0dBQ0UsY0FBZSxNQUNmLGdCQUFpQixXQUVuQix5SUFDQSwwSUFDRSxTQUFVLEVBQUUsRUFBRSxLQUNkLEtBQU0sRUFBRSxFQUFFLEtBQ1YsV0FBWSxLQUNaLFFBQVMsRUFBRSxJQUViLDhCQUNFLE1BQU8sSUFDUCxVQUFXLEtBR2Ysb0JBQ0EsaUZBQ0UsV0FBWSxnQ0FFZCwrR0FDRSxXQUFZLDJDQUVkLHFIQUNFLFdBQVksMkNBQ1osU0FBVSxPQUVaLGlGQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLE9BQ25CLFVBQVcsSUFBSSxPQUNmLGNBQWUsUUFDZixnQkFBaUIsY0FFbkIsbUdBQ0EsOEdBQ0EsaUlBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLFVBQVcsRUFDWCxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxPQUNuQixVQUFXLElBQUksT0FDZixjQUFlLFFBQ2YsZ0JBQWlCLGNBRW5CLHNJQUNFLFNBQVUsRUFBRSxFQUFFLElBQ2QsS0FBTSxFQUFFLEVBQUUsRUFDVixRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxPQUNuQixVQUFXLElBQUksT0FDZixjQUFlLE9BQ2YsZ0JBQWlCLE9BQ2pCLGVBQWdCLE9BQ2hCLFlBQWEsT0FFZiwrTUFDQSwrTUFDRSxjQUFlLE1BQ2YsZ0JBQWlCLFdBQ2pCLGVBQWdCLE1BQ2hCLFlBQWEsV0FFZix5SUFDRSxTQUFVLEVBQUUsRUFBRSxJQUNkLEtBQU0sRUFBRSxFQUFFLEVBQ1YsVUFBVyxFQUNYLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxPQUFPLE9BQ3RCLFVBQVcsT0FBTyxPQUNsQixjQUFlLFFBQ2YsZ0JBQWlCLGNBQ2pCLFNBQVUsU0FFWixxSkFDRSxTQUFVLEVBQUUsRUFBRSxJQUNkLEtBQU0sRUFBRSxFQUFFLEVBQ1YsVUFBVyxFQUNYLFVBQVcsT0FDWCxZQUFhLE9BRWYscUtBQ0UsY0FBZSxJQUFJLE9BQU8sS0FFNUIsc0tBQ0UsY0FBZSxJQUFJLE9BQU8sS0FDMUIsaUJBQWtCLEtBRXBCLGdLQUNFLGNBQWUsS0FFakIsc0xBQ0EsNkxBQ0EsNExBQ0UsU0FBVSxTQUNWLE9BQVEsUUFDUixRQUFTLEVBQ1QsV0FBWSxLQUVkLDZOQUNFLE1BQU8sS0FDUCxPQUFRLEtBRVYsK0lBQ0UsUUFBUyxZQUNULFFBQVMsS0FDVCxjQUFlLE9BQU8sS0FDdEIsVUFBVyxPQUFPLEtBQ2xCLGNBQWUsTUFDZixnQkFBaUIsV0FFbkIsMktBQ0UsU0FBVSxRQUNWLFlBQWEsT0FDYixVQUFXLFFBQ1gsUUFBUyxFQUFFLEtBQ1gsWUFBYSxJQUNiLFdBQVksSUFDWixRQUFTLEVBRVgsdUlBQ0UsT0FBUSxLQUVWLGVBQ0EsY0FDRSxRQUFTLEtBRVgsOEJBQ0UsT0FBUSxJQUFJLE1BQU0sS0FDbEIsVUFBVyxLQUNYLFVBQVcsTUFDWCxXQUFZLE1BQ1osV0FBWSxLQUNaLGdCQUFpQixLQUNqQixpQkFBa0IsTUFFcEIscUNBQ0UsY0FBZSxFQUVqQix3Q0FDRSxVQUFXLElBQ1gsV0FBWSxPQUNaLFlBQWEsTUFDYixZQUFhLEtBQ2IsWUFBYSxPQUNiLFFBQVMsSUFBSSxFQUFFLEVBQUUsSUFDakIsV0FBWSxNQUNaLE1BQU8sS0FFVCw2Q0FDRSxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxLQUNuQixVQUFXLElBQUksS0FDZixjQUFlLE1BQ2YsZ0JBQWlCLFdBQ2pCLGVBQWdCLE9BQ2hCLFlBQWEsT0FDYixXQUFZLE1BQ1osT0FBUSxFQUNSLFFBQVMsSUFBSSxLQUFLLElBQUksSUFDdEIsY0FBZSxJQUFJLElBQUksRUFBRSxFQUN6QixpQkFBa0IsUUFFcEIsK0RBQ0UsU0FBVSxFQUFFLEVBQUUsS0FDZCxLQUFNLEVBQUUsRUFBRSxLQUNWLE1BQU8sS0FDUCxVQUFXLEtBQ1gsWUFBYSxJQUNiLFlBQWEsSUFDYixPQUFRLEVBQ1IsUUFBUyxFQUFFLEtBQUssRUFBRSxJQUNsQixPQUFRLEVBQ1IsZUFBZ0IsU0FFbEIsb0VBQ0UsU0FBVSxFQUFFLEVBQUUsS0FDZCxLQUFNLEVBQUUsRUFBRSxLQUNWLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLEtBQ25CLFVBQVcsSUFBSSxLQUNmLGNBQWUsTUFDZixnQkFBaUIsV0FDakIsT0FBUSxJQUFJLEVBRWQsc0VBQ0EsNEVBQ0EsNEVBQ0UsU0FBVSxLQUNWLEtBQU0sS0FDTixXQUFZLFdBQ1osT0FBUSxFQUFFLElBQUksRUFBRSxFQUNoQixRQUFTLEVBQUUsS0FBSyxJQUNoQixVQUFXLEtBQ1gsT0FBUSxLQUNSLFlBQWEsS0FDYixZQUFhLE9BQ2IsZ0JBQWlCLEtBQ2pCLE9BQVEsUUFDUixtQkFBb0IsS0FDcEIsTUFBTyxLQUNQLFdBQVksUUFDWixjQUFlLElBQ2YsT0FBUSxJQUFJLE1BQU0sUUFDbEIsV0FBWSxLQUNaLFFBQVMsRUFFWCw0RUFDRSxXQUFZLFFBQ1osYUFBYyxLQUNkLE1BQU8sUUFFVCw0RkFDRSxhQUFjLE1BRWhCLDZDQUNBLG1EQUNFLFNBQVUsU0FDVixNQUFPLEVBQ1AsSUFBSyxFQUNMLFVBQVcsS0FDWCxZQUFhLE1BQ2IsUUFBUyxJQUVYLCtDQUNBLHNEQUNBLHFEQUNBLHFEQUNFLGdCQUFpQixLQUNqQixhQUFjLEtBQ2QsUUFBUyxFQUNULE1BQU8sS0FDUCxXQUFZLEVBQUUsRUFDZCxRQUFTLEVBQUUsSUFFYixtREFDRSxvQkFBcUIsWUFFdkIsNENBQ0UsUUFBUyxZQUNULFFBQVMsS0FDVCxjQUFlLE9BQU8sS0FDdEIsVUFBVyxPQUFPLEtBQ2xCLGNBQWUsUUFDZixnQkFBaUIsY0FFbkIsK0RBQ0EsMkRBQ0EsNERBQ0EsdUVBQ0Esd0VBQ0EsbUVBQ0UsU0FBVSxFQUFFLEVBQUUsS0FDZCxLQUFNLEVBQUUsRUFBRSxLQUVaLCtEQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLE9BQ25CLFVBQVcsSUFBSSxPQUNmLGNBQWUsUUFDZixnQkFBaUIsY0FFbkIsd0ZBQ0UsU0FBVSxFQUFFLEVBQUUsSUFDZCxLQUFNLEVBQUUsRUFBRSxFQUNWLE1BQU8sS0FFVCxzRkFDRSxTQUFVLEtBQ1YsS0FBTSxLQUNOLFFBQVMsS0FBSyxFQUNkLE9BQVEsRUFFVixxRUFDRSxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxLQUNuQixVQUFXLElBQUksS0FDZixjQUFlLE1BQ2YsZ0JBQWlCLFdBRW5CLGlGQUNFLFNBQVUsRUFBRSxFQUFFLEtBQ2QsS0FBTSxFQUFFLEVBQUUsS0FDVixVQUFXLEVBRWIsd0RBQ0UsT0FBUSxFQUNSLGNBQWUsSUFDZixZQUFhLEtBQ2IsV0FBWSxFQUFFLEVBQUUsSUFBSSxLQUNwQixZQUFhLElBQ2IsVUFBVyxJQUNYLFlBQWEsTUFDYixRQUFTLEtBQUssS0FDZCxpQkFBa0IsUUFDbEIsTUFBTyxLQUNQLFdBQVksT0FDWixlQUFnQixTQUNoQixPQUFRLE1BQU0sTUFBTSxLQUFLLEVBQ3pCLFVBQVcsV0FDWCxVQUFXLFNBQ1gsWUFBYSxTQUVmLHNFQUNFLFVBQVcsSUFDWCxZQUFhLElBRWYsc0VBQ0UsV0FBWSxLQUVkLGdHQUNFLFdBQVksUUFFZCxpR0FDRSxXQUFZLEtBRWQsaUdBQ0UsV0FBWSxRQUVkLGlHQUNFLFdBQVksS0FFZCx5RUFDRSxXQUFZLFFBRWQsNEVBQ0UsV0FBWSxLQUVkLHdFQUNFLFdBQVksRUFBRSxFQUNkLFlBQWEsSUFDYixNQUFPLEtBQ1AsV0FBWSxLQUNaLFFBQVMsRUFDVCxPQUFRLEVBRVYsdUVBQ0UsT0FBUSxJQUFJLEVBQ1osV0FBWSxLQUNaLFVBQVcsT0FDWCxZQUFhLE1BQ2IsTUFBTyxLQUNQLFVBQVcsS0FDWCxVQUFXLFdBQ1gsVUFBVyxTQUViLHVGQUNFLFdBQVksRUFBRSxFQUNkLFFBQVMsSUFDVCxjQUFlLElBQ2YsT0FBUSxFQUFFLEtBQUssRUFBRSxFQUNqQixXQUFZLFFBQ1osVUFBVyxXQUViLDZFQUNFLFlBQWEsSUFDYixlQUFnQixTQUVsQix5RUFDRSxlQUFnQixTQUNoQixZQUFhLElBRWYsd0VBQ0UsT0FBUSxFQUFFLEVBQUUsSUFDWixVQUFXLEtBQ1gsV0FBWSxXQUVkLDhEQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLEtBQ25CLFVBQVcsSUFBSSxLQUNmLGNBQWUsTUFDZixnQkFBaUIsV0FDakIsZUFBZ0IsTUFDaEIsWUFBYSxXQUVmLDZGQUNFLFNBQVUsRUFBRSxFQUFFLEtBQ2QsS0FBTSxFQUFFLEVBQUUsS0FDVixVQUFXLEtBQ1gsUUFBUyxLQUFLLEtBQ2QsT0FBUSxFQUFFLEVBQUUsS0FDWixXQUFZLFFBRWQseUVBQ0UsU0FBVSxFQUFFLEVBQUUsS0FDZCxLQUFNLEVBQUUsRUFBRSxLQUNWLE9BQVEsRUFBRSxLQUNWLFVBQVcsS0FDWCxZQUFhLElBRWYsaUhBQ0UsVUFBVyxLQUNYLFlBQWEsSUFDYixNQUFPLFFBRVQsc0dBQ0UsV0FBWSxLQUVkLG9EQUNFLE9BQVEsS0FBSyxFQUNiLFdBQVksSUFBSSxNQUFNLEtBQ3RCLFdBQVksRUFBRSxJQUFJLElBQUksUUFFeEIsZUFDRSxXQUFZLEtBQ1osT0FBUSxJQUFJLE1BQU0sS0FDbEIsV0FBWSxFQUFFLElBQUksSUFBSSxLQUN0QixVQUFXLEtBQ1gsY0FBZSxJQUFJLElBQUksRUFBRSxFQUUzQixxQ0FDRSxXQUFZLEVBQUUsRUFDZCxjQUFlLElBQUksTUFBTSxRQUN6QixVQUFXLEtBQ1gsWUFBYSxJQUNiLE1BQU8sUUFDUCxZQUFhLEtBQ2IsWUFBYSxJQUNiLE9BQVEsSUFDUixTQUFVLE9BQ1YsYUFBYyxJQUNkLGNBQWUsSUFBSSxJQUFJLEVBQUUsRUFFM0IsOERBQ0UsUUFBUyxFQUFFLElBRWIsd0RBQ0Esd0RBQ0UsWUFBYSxJQUNiLFFBQVMsSUFDVCxZQUFhLGFBRWYsd0RBQ0UsV0FBWSxPQUVkLG1GQUNBLG1GQUNFLFVBQVcsS0FDWCxZQUFhLElBQ2IsWUFBYSxLQUNiLE1BQU8sS0FFVCxxRkFDQSwyRkFDQSxxRkFDQSwyRkFDRSxnQkFBaUIsS0FDakIsTUFBTyxRQUNQLE9BQVEsUUFFViwyQ0FDRSxXQUFZLElBQUksTUFBTSxLQUV4Qiw2REFDRSxpQkFBa0IsUUFFcEIsOERBQ0Esd0RBQ0UsWUFBYSxJQUNiLFFBQVMsRUFBRSxFQUFFLEVBQUUsSUFDZixZQUFhLGFBQ2IsV0FBWSxLQUVkLGtGQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLEtBQ25CLFVBQVcsSUFBSSxLQUNmLGNBQWUsTUFDZixnQkFBaUIsV0FDakIsZUFBZ0IsT0FDaEIsWUFBYSxPQUVmLHNGQUNBLHdEQUNFLE1BQU8sS0FDUCxZQUFhLElBQ2IsU0FBVSxPQUNWLFlBQWEsT0FFZix3RkFDRSxjQUFlLEVBQUUsT0FDakIsTUFBTyxLQUNQLFlBQWEsS0FDYixPQUFRLEVBQUUsRUFBRSxFQUFFLElBQ2QsV0FBWSxLQUNaLFFBQVMsRUFDVCxnQkFBaUIsS0FFbkIsK0ZBQ0EsOEZBQ0EsOEZBQ0UsZ0JBQWlCLFVBQ2pCLDhCQUErQixPQUMvQixzQkFBdUIsT0FDdkIsMEJBQTJCLElBQzNCLHNCQUF1QixJQUV6Qiw2RkFDRSxZQUFhLElBRWYsNEZBQ0UsWUFBYSxLQUVmLDZGQUNFLFlBQWEsSUFBSSxNQUFNLEtBRXpCLCtIQUNFLFlBQWEsSUFBSSxNQUFNLEtBRXpCLDhHQUNBLGdIQUNBLDhHQUNBLGdIQUNFLE1BQU8sS0FDUCxXQUFZLFFBRWQsdUpBQ0EsdUpBQ0UsTUFBTyxRQUNQLFdBQVksUUFFZCwrRkFDQSxxR0FDRSxNQUFPLEtBQ1AsZ0JBQWlCLEtBRW5CLDBHQUNFLFFBQVMsS0FFWCxpRkFDRSxTQUFVLE9BQ1YsT0FBUSxNQUNSLGNBQWUsSUFBSSxNQUFNLEtBQ3pCLFlBQWEsSUFBSSxNQUFNLEtBRXpCLGlIQUNFLE1BQU8sS0FDUCxVQUFXLE1BQ1gsWUFBYSxJQUNiLFFBQVMsRUFBRSxLQUViLDZJQUNFLFlBQWEsSUFBSSxNQUFNLEtBQ3ZCLFdBQVksSUFBSSxNQUFNLEtBQ3RCLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxNQUNmLGdCQUFpQixXQUNqQixlQUFnQixPQUNoQixZQUFhLE9BQ2IsUUFBUyxFQUFFLEVBQUUsRUFBRSxJQUNmLFlBQWEsT0FDYixTQUFVLE9BQ1YsV0FBWSxLQUNaLFVBQVcsS0FDWCxZQUFhLElBRWYsMkxBQ0EsMkxBQ0UsVUFBVyxNQUNYLFlBQWEsSUFDYixXQUFZLEtBQ1osUUFBUyxFQUFFLElBRWIsMEpBQ0EsMEpBQ0EsMkpBQ0EsMkpBQ0UsTUFBTyxRQUVULG1HQUNFLFlBQWEsSUFBSSxNQUFNLEtBQ3ZCLE1BQU8sS0FDUCxVQUFXLE1BQ1gsWUFBYSxLQUVmLG9LQUNFLFlBQWEsSUFBSSxNQUFNLEtBRXpCLDBMQUNFLFlBQWEsSUFBSSxNQUFNLEtBRXpCLHdMQUNFLGFBQWMsUUFFaEIsK0pBQ0UsaUJBQWtCLFFBRXBCLGdMQUNFLGlCQUFrQixRQUNsQixpQkFBa0IsaURBRXBCLHFMQUNFLFlBQWEsSUFBSSxNQUFNLFFBRXpCLG1LQUNFLGlCQUFrQixRQUVwQiwrS0FDRSxZQUFhLElBQUksTUFBTSxLQUV6Qix3UEFDQSx3UEFDRSxZQUFhLEtBRWYsMlFBQ0EsMlFBQ0UsWUFBYSxJQUFJLE1BQU0sUUFFekIsdUpBQ0UsVUFBVyxJQUNYLFlBQWEsSUFDYixNQUFPLEtBQ1AsT0FBUSxRQUVWLDJLQUNFLFdBQVksS0FDWixNQUFPLEtBQ1AsWUFBYSxJQUFJLE1BQU0sS0FDdkIsT0FBUSxRQUNSLGNBQWUsSUFDZixVQUFXLEtBRWIsb01BQ0UsWUFBYSxJQUNiLFdBQVksUUFDWixNQUFPLFFBQ1AsWUFBYSxJQUFJLE1BQU0sUUFFekIsK01BQ0EsK01BQ0UsWUFBYSxJQUFJLE1BQU0sS0FDdkIsV0FBWSxJQUFJLE1BQU0sS0FDdEIsVUFBVyxLQUNYLFVBQVcsT0FDWCxZQUFhLE9BQ2IsU0FBVSxPQUNWLFFBQVMsRUFBRSxJQUViLGdDQUNFLFNBQVUsU0FDVixNQUFPLEtBRVQsMENBQ0UsV0FBWSxFQUFFLElBQUksSUFBSSxRQUN0QixjQUFlLElBQUksTUFBTSxRQUN6QixRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxLQUNuQixVQUFXLElBQUksS0FDZixjQUFlLE1BQ2YsZ0JBQWlCLFdBQ2pCLGVBQWdCLE9BQ2hCLFlBQWEsT0FFZixvRUFDRSxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxLQUNuQixVQUFXLElBQUksS0FDZixjQUFlLElBQ2YsZ0JBQWlCLFNBQ2pCLGVBQWdCLE9BQ2hCLFlBQWEsT0FDYixPQUFRLElBQUksSUFBSSxJQUFJLEtBRXRCLG1DQUNFLFFBQVMsRUFBRSxJQUFJLElBQ2YsV0FBWSxFQUNaLE9BQVEsSUFBSSxNQUFNLFFBQ2xCLFdBQVksS0FDWixVQUFXLEtBQ1gsY0FBZSxFQUFFLEVBQUUsSUFBSSxJQUN2QixXQUFZLEVBQUUsRUFBRSxJQUFJLFFBQ3BCLGNBQWUsS0FFakIscUZBQ0UsT0FBUSxNQUFNLEVBQUUsWUFDaEIsU0FBVSxTQUNWLFdBQVksRUFBRSxJQUFJLElBQUksUUFFeEIsa0RBQ0UsY0FBZSxFQUFFLEVBQUUsSUFBSSxJQUV6QixzR0FDRSxlQUFnQixJQUVsQixrREFDRSxjQUFlLEVBQ2YsV0FBWSxLQUNaLFVBQVcsS0FFYixpQ0FDRSxRQUFTLFlBQ1QsUUFBUyxLQUNULGNBQWUsSUFBSSxLQUNuQixVQUFXLElBQUksS0FDZixjQUFlLE1BQ2YsZ0JBQWlCLFdBQ2pCLGVBQWdCLE9BQ2hCLFlBQWEsT0FFZixtQ0FDRSxXQUFZLEVBQ1osY0FBZSxLQUNmLGFBQWMsS0FFaEIsNkNBQ0UsWUFBYSxLQUNiLGFBQWMsRUFFaEIsb0NBQ0Usb0JBQXFCLElBQ3JCLFdBQVksU0FFZCx5QkFDRSxvQ0FDRSxRQUFTLE1BR2IsNkJBQ0UsUUFBUyxZQUNULFFBQVMsS0FDVCxjQUFlLElBQUksT0FDbkIsVUFBVyxJQUFJLE9BQ2YsY0FBZSxNQUNmLGdCQUFpQixXQUNqQixlQUFnQixNQUNoQixZQUFhLFdBQ2IsV0FBWSxLQUNaLGdCQUFpQixLQUVuQiwwREFDRSxNQUFPLE1BQ1AsV0FBWSxLQUNaLGdCQUFpQixLQUNqQixXQUFZLEVBQUUsRUFBRSxJQUFJLFFBQ3BCLFFBQVMsRUFDVCxRQUFTLEVBRVgsOERBQ0UsU0FBVSxFQUFFLEVBQUUsTUFDZCxLQUFNLEVBQUUsRUFBRSxNQUNWLGFBQWMsSUFBSSxNQUFNLFFBRTFCLG1GQUNFLGFBQWMsSUFBSSxNQUFNLFlBRTFCLDBEQUNFLFNBQVUsRUFBRSxFQUFFLEtBQ2QsS0FBTSxFQUFFLEVBQUUsS0FDVixXQUFZLEtBRWQsc0lBQ0UsVUFBVyxNQUViLHNJQUNFLFVBQVcsTUFFYix1SUFDRSxVQUFXLE9BRWIsc0lBQ0UsVUFBVyxNQUViLHNJQUNFLFVBQVcsTUFFYix1SUFDRSxVQUFXLE9BRWIsdUlBQ0UsVUFBVyxPQUViLHdEQUNBLHdEQUNBLHdEQUNBLHdEQUNFLE9BQVEsdUNBQ1IsU0FBVSxPQUVaLHdEQUNBLHdEQUNFLFFBQVMsWUFDVCxRQUFTLEtBQ1QsY0FBZSxJQUFJLEtBQ25CLFVBQVcsSUFBSSxLQUNmLGNBQWUsTUFDZixnQkFBaUIsV0FDakIsZUFBZ0IsUUFDaEIsWUFBYSxRQUVmLDREQUNBLDREQUNFLFNBQVUsRUFBRSxFQUFFLEtBQ2QsS0FBTSxFQUFFLEVBQUUsS0FFWixxSkFDRSxZQUFhLEtBQ2IsUUFBUyxHQUNULFdBQVksSUFDWixpQkFBa0IsMkNBRXBCLHVLQUNFLFlBQWEsSUFBSSxNQUFNLFFBRXpCLHNLQUNFLGlCQUFrQiw0Q0FFcEIsK0pBQ0UsaUJBQWtCLGdEQUVwQix5S0FDRSxPQUFRLEtBQ1IsTUFBTyxLQUNQLE9BQVEsS0FDUixTQUFVLFNBQ1YsTUFBTyxpQkFDUCxPQUFRLEVBQUUsS0FFWixzS0FDRSxXQUFZLDhQQUVkLHVLQUNFLFdBQVksOElBRWQsdUxBQ0UsV0FBWSxrUUFFZCx3TEFDRSxXQUFZLGdKQUVkLGdMQUNFLFdBQVksd1FBRWQsaUxBQ0UsV0FBWSx3SkFFZCxpTUFDRSxXQUFZLDRRQUVkLGtNQUNFLFdBQVksMEpBRWQsa0xBQ0EsaUxBQ0EsaUxBQ0UsUUFBUyxFQUNULFdBQVksRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUN0QixXQUFZLEVBQUUsRUFBRSxJQUFJLEtBQUssS0FDekIsOEJBQStCLE9BQy9CLHNCQUF1QixPQUN2QiwwQkFBMkIsRUFDM0Isc0JBQXVCIiwiZmlsZSI6ImNvcmUvdGltZWxpbmUvdjIvX291dC90aW1lbGluZV92Mi4xLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6cm9vdCB7XHJcbiAgLS13cGJjX3RpbWVsaW5lLXJvdy1oZWlnaHQ6IDM1cHg7XHJcbiAgLS13cGJjX3RpbWVsaW5lLXJvdy1oZWFkZXItaGVpZ2h0OiA1OHB4O1xyXG4gIC0td3BiY190aW1lbGluZS1ib29raW5nLXBlbmRpbmctY29sb3I6ICNmZmQ4NmM7XHJcbiAgLS13cGJjX3RpbWVsaW5lLXBhc3QtYm9va2luZy1wZW5kaW5nLWNvbG9yOiAjZmZmM2QyO1xyXG4gIC0td3BiY190aW1lbGluZS1ib29raW5nLXBlbmRpbmctYm9yZGVyLWNvbG9yOiAjZTQ5YzJkO1xyXG4gIC0td3BiY190aW1lbGluZS1ib29raW5nLWFwcHJvdmVkLWNvbG9yOiAjNUE3MUExO1xyXG4gIC0td3BiY190aW1lbGluZS1wYXN0LWJvb2tpbmctYXBwcm92ZWQtY29sb3I6ICM4NTkxYWE7XHJcbiAgLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctYXBwcm92ZWQtYm9yZGVyLWNvbG9yOiAjNEI1RTg1XHJcbn1cclxuLmZsZXhfdGxfdGFibGUge1xyXG4gIC1tcy1mbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XHJcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3hcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIHtcclxuICAtbXMtZmxleDogMTtcclxuICBmbGV4OiAxO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDtcclxuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIgLmZsZXhfdGxfY29sbHVtbl8xLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8xLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8xIHtcclxuICAtbXMtZmxleDogMCAxIGF1dG87XHJcbiAgZmxleDogMCAxIGF1dG87XHJcbiAgbWluLXdpZHRoOiAwO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XHJcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciAuZmxleF90bF9jb2xsdW1uXzIsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIge1xyXG4gIC1tcy1mbGV4OiAxIDEgMHB4O1xyXG4gIGZsZXg6IDEgMSAwO1xyXG4gIG1pbi13aWR0aDogMFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciAuZmxleF90bF9jb2xsdW1uXzIge1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcclxuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyXHJcbn1cclxuQG1lZGlhIChtYXgtd2lkdGg6NzgycHgpIHtcclxuICAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIsXHJcbiAgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzLFxyXG4gIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyB7XHJcbiAgICAtbXMtZmxleC1mbG93OiByb3cgd3JhcDtcclxuICAgIGZsZXgtZmxvdzogcm93IHdyYXBcclxuICB9XHJcbiAgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSxcclxuICAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yLFxyXG4gIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzEsXHJcbiAgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcclxuICAgIGZsZXg6IDEgMSBhdXRvXHJcbiAgfVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfbmF2IHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTtcclxuICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XHJcbiAgcGFkZGluZzogN3B4IDAgMFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfbmF2IC5mbGV4X3RsX3RpdGxlIHtcclxuICAtbXMtZmxleDogMSAxIDBweDtcclxuICBmbGV4OiAxIDEgMDtcclxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gIG1pbi13aWR0aDogMDtcclxuICBjb2xvcjogIzc3N1xyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwge1xyXG4gIC1tcy1mbGV4OiAxIDEgMHB4O1xyXG4gIGZsZXg6IDEgMSAwO1xyXG4gIG1pbi13aWR0aDogMDtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XHJcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXIsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX21vbnRoX3llYXIge1xyXG4gIC1tcy1mbGV4OiAxO1xyXG4gIGZsZXg6IDE7XHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICAtbXMtZmxleC1mbG93OiBjb2x1bW4gd3JhcDtcclxuICBmbGV4LWZsb3c6IGNvbHVtbiB3cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIG92ZXJmbG93OiBoaWRkZW5cclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lciAuaW5fY2VsbF9kYXlfbnVtLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lciAuaW5fY2VsbF9kYXlfd2VlayB7XHJcbiAgLW1zLWZsZXg6IDE7XHJcbiAgZmxleDogMTtcclxuICBmb250LXNpemU6IC44NWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogY29sdW1uO1xyXG4gIGZsZXgtZmxvdzogY29sdW1uO1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXJcclxufVxyXG4uZmxleF90bF9zaW5nbGVfcmVzb3VyY2UgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXIgLmluX2NlbGxfZGF5X3dlZWsge1xyXG4gIGZvbnQtc2l6ZTogMWVtO1xyXG4gIHBhZGRpbmc6IDBcclxufVxyXG4uZmxleF9mcmFtZV92aWV3X2RheXNfbnVtXzYwIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyIC5pbl9jZWxsX2RheV9udW0sXHJcbi5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fNjAgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXIgLmluX2NlbGxfZGF5X3dlZWsge1xyXG4gIGZvbnQtc2l6ZTogLjg1ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyX21vbnRoLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIHtcclxuICBib3JkZXI6IG5vbmVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2Jhcl9tb250aCAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9tb250aF95ZWFyIHtcclxuICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICB3b3JkLXdyYXA6IG5vcm1hbDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfdGltZV9zZWN0aW9uX2luX2RheSB7XHJcbiAgLW1zLWZsZXg6IDE7XHJcbiAgZmxleDogMTtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIG92ZXJmbG93OiBoaWRkZW5cclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF90aW1lX3NlY3Rpb25faW5fZGF5IC5pbl9jZWxsX3RpbWVfaG91ciB7XHJcbiAgLW1zLWZsZXg6IDEgMSAwcHg7XHJcbiAgZmxleDogMSAxIDA7XHJcbiAgbWluLXdpZHRoOiAwXHJcbn1cclxuLmZsZXhfdGxfbWF0cml4X3Jlc291cmNlcy5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fMSAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcixcclxuLmZsZXhfdGxfc2luZ2xlX3Jlc291cmNlLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8zMCAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lciB7XHJcbiAgLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDtcclxuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcclxuICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19jb250YWluZXIgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfZGF5cyxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19jb250YWluZXIgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfd2Vla3Mge1xyXG4gIC1tcy1mbGV4OiAxIDEgMHB4O1xyXG4gIGZsZXg6IDEgMSAwO1xyXG4gIHRleHQtYWxpZ246IGxlZnRcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8xIC5mbGV4X3RsX3Jlc291cmNlX3RpdGxlX2RhdGVzX2NvbnRhaW5lciAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc193ZWVrcyB7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgcGFkZGluZzogMCAxZW1cclxufVxyXG5AbWVkaWEgKG1heC13aWR0aDo3ODJweCkge1xyXG4gIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzEgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfY29udGFpbmVyIHtcclxuICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0XHJcbiAgfVxyXG4gIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzEgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfY29udGFpbmVyIC5mbGV4X3RsX3Jlc291cmNlX3RpdGxlX2RhdGVzX2RheXMsXHJcbiAgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19jb250YWluZXIgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfd2Vla3Mge1xyXG4gICAgLW1zLWZsZXg6IDAgMSBhdXRvO1xyXG4gICAgZmxleDogMCAxIGF1dG87XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgcGFkZGluZzogMCAxZW1cclxuICB9XHJcbiAgLmZsZXhfdGltZWxpbmVfZnJhbWUgLnBvcG92ZXIge1xyXG4gICAgd2lkdGg6IDk4JTtcclxuICAgIG1heC13aWR0aDogOTglXHJcbiAgfVxyXG59XHJcbi5mbGV4X3RsX3Jvd19oZWlnaHQsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIHtcclxuICBtaW4taGVpZ2h0OiB2YXIoLS13cGJjX3RpbWVsaW5lLXJvdy1oZWlnaHQpXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIuZmxleF90bF9yb3dfYmFyX3Nob3dfYm9va2luZ3Mge1xyXG4gIG1hcmdpbi10b3A6IGNhbGMoLTEgKiB2YXIoLS13cGJjX3RpbWVsaW5lLXJvdy1oZWlnaHQpKVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyLmZsZXhfdGxfcm93X2Jhcl9zaG93X2Jvb2tpbmdfdGl0bGVzIHtcclxuICBtYXJnaW4tdG9wOiBjYWxjKC0xICogdmFyKC0td3BiY190aW1lbGluZS1yb3ctaGVpZ2h0KSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlblxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5pbl9jZWxsX3RpbWVfc2VjdGlvbl9pbl9kYXksXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5pbl9jZWxsX3RpbWVfc2VjdGlvbl9pbl9kYXkgLmluX2NlbGxfdGltZV9ob3VyIHtcclxuICAtbXMtZmxleDogMSAxIDBweDtcclxuICBmbGV4OiAxIDEgMDtcclxuICBtaW4td2lkdGg6IDA7XHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcclxuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfZGF0ZXMge1xyXG4gIC1tcy1mbGV4OiAxIDEgMHB4O1xyXG4gIGZsZXg6IDEgMSAwO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDtcclxuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxyXG59XHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8xLmZsZXhfdGxfbWF0cml4X3Jlc291cmNlcyAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2RhdGVzLFxyXG4uZmxleF90aW1lbGluZV9mcmFtZS5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fMzAuZmxleF90bF9zaW5nbGVfcmVzb3VyY2UgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19kYXRlcyB7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIC1tcy1mbGV4LWFsaWduOiBzdGFydDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3Mge1xyXG4gIC1tcy1mbGV4OiAxIDEgMHB4O1xyXG4gIGZsZXg6IDEgMSAwO1xyXG4gIG1pbi13aWR0aDogMDtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XHJcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQge1xyXG4gIC1tcy1mbGV4OiAxIDEgMHB4O1xyXG4gIGZsZXg6IDEgMSAwO1xyXG4gIG1pbi13aWR0aDogMDtcclxuICB3b3JkLXdyYXA6IG5vcm1hbDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5wZW5kaW5nX2Jvb2tpbmcge1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgIzU1NVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYXBwcm92ZWRfYm9va2luZyB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjY2NjO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM3OGFcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkOmxhc3QtY2hpbGQge1xyXG4gIGJvcmRlci1ib3R0b206IG5vbmVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkIC5pbl9jZWxsX2RhdGVfYm9va2luZ19waXBlbGluZV9hLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkIC5pbl9jZWxsX2RhdGVfYm9va2luZ19waXBlbGluZV9hOmFjdGl2ZSxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZCAuaW5fY2VsbF9kYXRlX2Jvb2tpbmdfcGlwZWxpbmVfYTpob3ZlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGN1cnNvcjogZGVmYXVsdDtcclxuICBvdXRsaW5lOiAwO1xyXG4gIGJveC1zaGFkb3c6IG5vbmVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkIC5pbl9jZWxsX2RhdGVfYm9va2luZ19waXBlbGluZV9hIC5pbl9jZWxsX2RhdGVfYm9va2luZ19waXBlbGluZV9hX3NpemVyIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdfdGl0bGVzIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IGNvbHVtbiB3cmFwO1xyXG4gIGZsZXgtZmxvdzogY29sdW1uIHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5nX3RpdGxlcyAuaW5fY2VsbF9kYXRlX2Jvb2tpbmdfdGl0bGUge1xyXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgd29yZC13cmFwOiBpbml0aWFsO1xyXG4gIHBhZGRpbmc6IDAgLjVlbTtcclxuICBtYXJnaW4tbGVmdDogNHB4O1xyXG4gIG1hcmdpbi10b3A6IDRweDtcclxuICB6LWluZGV4OiAxXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIuZmxleF90bF9yb3dfYmFyX3Nob3dfYm9va2luZ190aXRsZXMgLmZsZXhfdGxfZGF5X2NlbGwge1xyXG4gIGJvcmRlcjogbm9uZVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlLFxyXG4uaGlkZGVuX2l0ZW1zIHtcclxuICBkaXNwbGF5OiBub25lXHJcbn1cclxuLmZsZXhfdGltZWxpbmVfZnJhbWUgLnBvcG92ZXIge1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICM1NTU7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIG1heC13aWR0aDogMjk5cHg7XHJcbiAgbWF4LWhlaWdodDogNDI1cHg7XHJcbiAgb3ZlcmZsb3cteTogYXV0bztcclxuICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XHJcbiAgc2Nyb2xsYmFyLWd1dHRlcjogdW5zZXRcclxufVxyXG5oci53cGJjX3RsX3BvcG92ZXJfYm9va2luZ19zZXBhcmF0b3Ige1xyXG4gIG1hcmdpbi1ib3R0b206IDBcclxufVxyXG4ud3BiYy1saXN0aW5nLWNvbGx1bW4uZmllbGQtc3lzdGVtLWluZm8ge1xyXG4gIGZvbnQtc2l6ZTogOXB4O1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBsaW5lLWhlaWdodDogMS4yZW07XHJcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBwYWRkaW5nOiAycHggMCAwIDVweDtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxuICBjb2xvcjogIzc3N1xyXG59XHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lIC5wb3BvdmVyIC5wb3BvdmVyLXRpdGxlIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBtaW4taGVpZ2h0OiAyLjVlbTtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogNXB4IDMwcHggNXB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3XHJcbn1cclxuLmZsZXhfdGltZWxpbmVfZnJhbWUgLnBvcG92ZXIgLnBvcG92ZXItdGl0bGUgLnBvcG92ZXItdGl0bGUtaWQge1xyXG4gIC1tcy1mbGV4OiAwIDAgYXV0bztcclxuICBmbGV4OiAwIDAgYXV0bztcclxuICB3aWR0aDogMTAwJTtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBsaW5lLWhlaWdodDogMS44O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwIDEycHggMCA1cHg7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZVxyXG59XHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lIC5wb3BvdmVyIC5wb3BvdmVyLXRpdGxlIC5wb3BvdmVyLXRpdGxlLWJ1dHRvbnMge1xyXG4gIC1tcy1mbGV4OiAxIDEgYXV0bztcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIG1hcmdpbjogMnB4IDBcclxufVxyXG4uZmxleF90aW1lbGluZV9mcmFtZSAucG9wb3ZlciAucG9wb3Zlci10aXRsZSAucG9wb3Zlci10aXRsZS1idXR0b25zIGEsXHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lIC5wb3BvdmVyIC5wb3BvdmVyLXRpdGxlIC5wb3BvdmVyLXRpdGxlLWJ1dHRvbnMgYTpmb2N1cyxcclxuLmZsZXhfdGltZWxpbmVfZnJhbWUgLnBvcG92ZXIgLnBvcG92ZXItdGl0bGUgLnBvcG92ZXItdGl0bGUtYnV0dG9ucyBhOmhvdmVyIHtcclxuICAtbXMtZmxleDogbm9uZTtcclxuICBmbGV4OiBub25lO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgbWFyZ2luOiAwIDVweCAwIDA7XHJcbiAgcGFkZGluZzogMCAxMHB4IDFweDtcclxuICBmb250LXNpemU6IDEzcHg7XHJcbiAgaGVpZ2h0OiAyOHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgY29sb3I6ICM1NTU7XHJcbiAgYmFja2dyb3VuZDogI2Y3ZjdmNztcclxuICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q4ZDhkODtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIG91dGxpbmU6IDBcclxufVxyXG4uZmxleF90aW1lbGluZV9mcmFtZSAucG9wb3ZlciAucG9wb3Zlci10aXRsZSAucG9wb3Zlci10aXRsZS1idXR0b25zIGE6aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6ICNmYWZhZmE7XHJcbiAgYm9yZGVyLWNvbG9yOiAjY2NjO1xyXG4gIGNvbG9yOiAjMjMyODJkXHJcbn1cclxuLmZsZXhfdGltZWxpbmVfZnJhbWUgLnBvcG92ZXIgLnBvcG92ZXItdGl0bGUgLnBvcG92ZXItdGl0bGUtYnV0dG9ucyAud3BiYy1idXR0b25zLXNlcGFyYXRvciB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAxLjVlbVxyXG59XHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lIC5wb3BvdmVyIC5wb3BvdmVyLWNsb3NlLFxyXG4uZmxleF90aW1lbGluZV9mcmFtZSAucG9wb3ZlciAucG9wb3Zlci1jbG9zZTpob3ZlciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIHRvcDogMDtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xyXG4gIHBhZGRpbmc6IDVweFxyXG59XHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lIC5wb3BvdmVyIC5wb3BvdmVyLWNsb3NlIGEsXHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lIC5wb3BvdmVyIC5wb3BvdmVyLWNsb3NlIGE6YWN0aXZlLFxyXG4uZmxleF90aW1lbGluZV9mcmFtZSAucG9wb3ZlciAucG9wb3Zlci1jbG9zZSBhOmZvY3VzLFxyXG4uZmxleF90aW1lbGluZV9mcmFtZSAucG9wb3ZlciAucG9wb3Zlci1jbG9zZSBhOmhvdmVyIHtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xyXG4gIG91dGxpbmU6IDA7XHJcbiAgY29sb3I6ICM0NDQ7XHJcbiAgYmFja2dyb3VuZDogMCAwO1xyXG4gIHBhZGRpbmc6IDAgNXB4XHJcbn1cclxuLmZsZXhfdGltZWxpbmVfZnJhbWUgLnBvcG92ZXIuYm90dG9tID4gLmFycm93OjphZnRlciB7XHJcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnRcclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IGNvbHVtbiB3cmFwO1xyXG4gIGZsZXgtZmxvdzogY29sdW1uIHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC5mbGV4LXBvcG92ZXItYmFycyxcclxuLnBvcG92ZXItY29udGVudCAud3BiYy1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuYm9va2luZy1kYXRlcyxcclxuLnBvcG92ZXItY29udGVudCAud3BiYy1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuYm9va2luZy1sYWJlbHMsXHJcbi5wb3BvdmVyLWNvbnRlbnQgLndwYmMtcG9wb3Zlci1jb250ZW50LWRhdGEgLndwYmMtcG9wb3Zlci1ib29raW5nLWRhdGEsXHJcbi5wb3BvdmVyLWNvbnRlbnQgLndwYmMtcG9wb3Zlci1jb250ZW50LWRhdGEgLndwYmMtcG9wb3Zlci1ib29raW5nLW5vdGVzLFxyXG4ucG9wb3Zlci1jb250ZW50IC53cGJjLXBvcG92ZXItY29udGVudC1kYXRhIC53cGJjLXBvcG92ZXItY29zdC1iYXIge1xyXG4gIC1tcy1mbGV4OiAxIDEgYXV0bztcclxuICBmbGV4OiAxIDEgYXV0b1xyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtcG9wb3Zlci1iYXJzIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1wb3BvdmVyLWJhcnMgLmZsZXgtcG9wb3Zlci1sYWJlbHMtYmFyIHtcclxuICAtbXMtZmxleDogMSAxIDBweDtcclxuICBmbGV4OiAxIDEgMDtcclxuICBjbGVhcjogYm90aFxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtcG9wb3Zlci1iYXJzIC5mbGV4LXBvcG92ZXItY29zdC1iYXIge1xyXG4gIC1tcy1mbGV4OiBub25lO1xyXG4gIGZsZXg6IG5vbmU7XHJcbiAgcGFkZGluZzogLjNlbSAwO1xyXG4gIG1hcmdpbjogMFxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtcG9wb3Zlci1sYWJlbHMtYmFyIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1wb3BvdmVyLWxhYmVscy1iYXIgLmZsZXgtbGFiZWwge1xyXG4gIC1tcy1mbGV4OiAwIDEgYXV0bztcclxuICBmbGV4OiAwIDEgYXV0bztcclxuICBtaW4td2lkdGg6IDBcclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC5mbGV4LWxhYmVsIHtcclxuICBib3JkZXI6IDA7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIHRleHQtc2hhZG93OiBub25lO1xyXG4gIGJveC1zaGFkb3c6IDAgMCAxcHggI2RkZDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGZvbnQtc2l6ZTogOTUlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdlbTtcclxuICBwYWRkaW5nOiAuMmVtIC44ZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTtcclxuICBjb2xvcjogI2ZmZjtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xyXG4gIG1hcmdpbjogLjE1ZW0gLjc1ZW0gLjVlbSAwO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLXdyYXA6IGFueXdoZXJlO1xyXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcFxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtbGFiZWwgLmxhYmVsLXByZWZpeCB7XHJcbiAgZm9udC1zaXplOiA3MCU7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMFxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtbGFiZWwuZmxleC1sYWJlbC1pZCB7XHJcbiAgYmFja2dyb3VuZDogIzg4OFxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtbGFiZWwuZmxleC1sYWJlbC1ib29raW5nLXN0YXR1cy5sYWJlbC1wZW5kaW5nIHtcclxuICBiYWNrZ3JvdW5kOiAjZmZiYjQ1XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC5mbGV4LWxhYmVsLWJvb2tpbmctc3RhdHVzLmxhYmVsLWFwcHJvdmVkIHtcclxuICBiYWNrZ3JvdW5kOiAjOWJlXHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC5mbGV4LWxhYmVsLXBheW1lbnQucGF5bWVudC1sYWJlbC1zdWNjZXNzIHtcclxuICBiYWNrZ3JvdW5kOiAjNDY4ODQ3XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC5mbGV4LWxhYmVsLXBheW1lbnQucGF5bWVudC1sYWJlbC11bmtub3duIHtcclxuICBiYWNrZ3JvdW5kOiAjOTk5XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC5mbGV4LWxhYmVsLXRyYXNoIHtcclxuICBiYWNrZ3JvdW5kOiAjZDk0YTQ4XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC5mbGV4LWxhYmVsLXJlc291cmNlIHtcclxuICB0ZXh0LWFsaWduOiBsZWZ0XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC5mbGV4LWxhYmVsLWNvc3Qge1xyXG4gIGJhY2tncm91bmQ6IDAgMDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxuICBtYXJnaW46IDBcclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC5mbGV4LXBvcG92ZXItYm9va2luZy1kYXRhIHtcclxuICBtYXJnaW46IDFlbSAwO1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgZm9udC1zaXplOiAxLjA1ZW07XHJcbiAgbGluZS1oZWlnaHQ6IDEuOGVtO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC13cmFwOiBhbnl3aGVyZVxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtcG9wb3Zlci1ib29raW5nLWRhdGEgc3Bhbi5maWVsZHZhbHVlIHtcclxuICBiYWNrZ3JvdW5kOiAwIDA7XHJcbiAgcGFkZGluZzogMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxuICBtYXJnaW46IDAgLjVlbSAwIDA7XHJcbiAgd29yZC1icmVhazogaW5pdGlhbDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmRcclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC5mbGV4LXBvcG92ZXItYm9va2luZy1kYXRhIGxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZVxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtcG9wb3Zlci1ib29raW5nLWRhdGEgKiB7XHJcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xyXG4gIGxpbmUtaGVpZ2h0OiAyZW1cclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC53cGJjLXBvcG92ZXItYm9va2luZy1ub3RlcyB7XHJcbiAgbWFyZ2luOiAwIDAgMWVtO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkXHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC1kYXRlcyB7XHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICAtbXMtZmxleC1mbG93OiByb3cgd3JhcDtcclxuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnRcclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC5mbGV4LWxhYmVsLWRhdGVzIC5mbGV4LWxhYmVsLmZpZWxkLWJvb2tpbmctZGF0ZSB7XHJcbiAgLW1zLWZsZXg6IDAgMSBhdXRvO1xyXG4gIGZsZXg6IDAgMSBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMTAzJTtcclxuICBwYWRkaW5nOiAuMWVtIC43ZW07XHJcbiAgbWFyZ2luOiAwIDAgLjJlbTtcclxuICBiYWNrZ3JvdW5kOiAjZmZiYjQ1XHJcbn1cclxuLnBvcG92ZXItY29udGVudCAuZmxleC1wb3BvdmVyLWNvbnRlbnQtZGF0YSAuZmxleC1sYWJlbC1kYXRlcyAuZGF0ZV90aXJlIHtcclxuICAtbXMtZmxleDogMCAxIGF1dG87XHJcbiAgZmxleDogMCAxIGF1dG87XHJcbiAgbWFyZ2luOiAwIC4yZW07XHJcbiAgZm9udC1zaXplOiAxNzUlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxZW1cclxufVxyXG4ucG9wb3Zlci1jb250ZW50IC5mbGV4LXBvcG92ZXItY29udGVudC1kYXRhIC5mbGV4LWxhYmVsLWRhdGVzIC5mbGV4LWxhYmVsLmZpZWxkLWJvb2tpbmctZGF0ZSAuZmllbGQtYm9va2luZy10aW1lIHtcclxuICBmb250LXNpemU6IC43ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBjb2xvcjogIzIzMjgyZFxyXG59XHJcbi5wb3BvdmVyLWNvbnRlbnQgLmZsZXgtcG9wb3Zlci1jb250ZW50LWRhdGEgLmZsZXgtbGFiZWwtZGF0ZXMgLmZsZXgtbGFiZWwuZmllbGQtYm9va2luZy1kYXRlLmFwcHJvdmVkIHtcclxuICBiYWNrZ3JvdW5kOiAjOWJlXHJcbn1cclxuLnBvcG92ZXItY29udGVudCAud3BiY190bF9wb3BvdmVyX2Jvb2tpbmdfc2VwYXJhdG9yIHtcclxuICBtYXJnaW46IDIwcHggMDtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcclxuICBib3gtc2hhZG93OiAwIDFweCAxcHggI2Y5ZjlmOVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIHtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgYm94LXNoYWRvdzogMCAxcHggMnB4ICNlZWY7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kOiAwIDA7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZmRmZGY7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICM2MDYwNjA7XHJcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XHJcbiAgbGluZS1oZWlnaHQ6IDNlbTtcclxuICBoZWlnaHQ6IDNlbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHBhZGRpbmctbGVmdDogMWVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwXHJcbn1cclxuLndwYmNfdGltZWxpbmVfZnJvbnRfZW5kIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciB7XHJcbiAgcGFkZGluZzogMCAycHhcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIgLmZsZXhfdGxfY29sbHVtbl8xLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIgLmZsZXhfdGxfY29sbHVtbl8yIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHBhZGRpbmc6IDhweDtcclxuICBsaW5lLWhlaWdodDogMS40Mjg1NzE0M2VtXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMiB7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9uYXYgLmZsZXhfdGxfbmV4dCxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9uYXYgLmZsZXhfdGxfcHJldiB7XHJcbiAgZm9udC1zaXplOiAyMnB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEycHg7XHJcbiAgY29sb3I6ICM3NzdcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX25hdiAuZmxleF90bF9uZXh0IGEsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfbmF2IC5mbGV4X3RsX25leHQgYTpob3ZlcixcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9uYXYgLmZsZXhfdGxfcHJldiBhLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9oZWFkZXIgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX25hdiAuZmxleF90bF9wcmV2IGE6aG92ZXIge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBjb2xvcjogIzc1NzU3NTtcclxuICBjdXJzb3I6IHBvaW50ZXJcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3Mge1xyXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzOm50aC1vZi10eXBlKDJuKzEpIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBwYWRkaW5nOiAwIDAgMCA0cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDNlbTtcclxuICBib3gtc2hhZG93OiBub25lXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yb3dfaGVpZ2h0IHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzEgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGUsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzEge1xyXG4gIGNvbG9yOiAjOTk5O1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZSBhIHtcclxuICBib3JkZXItYm90dG9tOiAwIGRhc2hlZDtcclxuICBjb2xvcjogIzc4OTtcclxuICB0ZXh0LXNoYWRvdzogbm9uZTtcclxuICBtYXJnaW46IDAgMCAwIDJweDtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIG91dGxpbmU6IDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZSBhOmFjdGl2ZSxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZSBhOmZvY3VzLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8xIC5mbGV4X3RsX3Jlc291cmNlX3RpdGxlIGE6aG92ZXIge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBkYXNoZWQ7XHJcbiAgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBkYXNoZWQ7XHJcbiAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMXB4O1xyXG4gIHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZS5wYXJlbnQge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDBcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8xIC5mbGV4X3RsX3Jlc291cmNlX3RpdGxlLmNoaWxkIHtcclxuICBtYXJnaW4tbGVmdDogMjBweFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIHtcclxuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlZWVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbC5uZXdfbW9udGggLmluX2NlbGxfZGF0ZV9jb250YWluZXIge1xyXG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2M1NFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsLmZsZXhfdGxfd2Vla2RheTYsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsLmZsZXhfdGxfd2Vla2RheTYgYSxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwuZmxleF90bF93ZWVrZGF5NyxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwuZmxleF90bF93ZWVrZGF5NyBhIHtcclxuICBjb2xvcjogI2MzMjtcclxuICBiYWNrZ3JvdW5kOiAjZmZmY2Y0XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwuZmxleF90bF93ZWVrZGF5NiAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2RhdGVzLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbC5mbGV4X3RsX3dlZWtkYXk3IC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfZGF0ZXMge1xyXG4gIGNvbG9yOiAjYmQ3Zjc4O1xyXG4gIGJhY2tncm91bmQ6ICNmZmZjZjRcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCBhLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCBhOmhvdmVyIHtcclxuICBjb2xvcjogIzc4OTtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmVcclxufVxyXG4uZmxleF90bF9zaW5nbGVfcmVzb3VyY2UgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXJfbW9udGgge1xyXG4gIGRpc3BsYXk6IG5vbmVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2Jhcl9tb250aCB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBoZWlnaHQ6IDEuNWVtO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xyXG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2VlZVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX21vbnRoX3llYXIge1xyXG4gIGNvbG9yOiAjYzMyO1xyXG4gIGZvbnQtc2l6ZTogLjg1ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBwYWRkaW5nOiAwIC41ZW1cclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV90aXRsZXMgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF90aW1lX3NlY3Rpb25faW5fZGF5IC5pbl9jZWxsX3RpbWVfaG91ciB7XHJcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZWVlO1xyXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAwIDAgMCAycHg7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIG1pbi1oZWlnaHQ6IDEycHg7XHJcbiAgZm9udC1zaXplOiAuOGVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDBcclxufVxyXG4uZmxleF90bF9tYXRyaXhfcmVzb3VyY2VzLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8xIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyIC5pbl9jZWxsX2RheV9udW0sXHJcbi5mbGV4X3RsX3NpbmdsZV9yZXNvdXJjZS5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fMzAgLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXIgLmluX2NlbGxfZGF5X251bSB7XHJcbiAgZm9udC1zaXplOiAuODVlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgcGFkZGluZzogMCAxZW1cclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8xIC5mbGV4X3RsX3Jlc291cmNlX3RpdGxlX2RhdGVzX2NvbnRhaW5lciAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19kYXlzLmZsZXhfdGxfd2Vla2RheTYsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzEgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfY29udGFpbmVyIC5mbGV4X3RsX3Jlc291cmNlX3RpdGxlX2RhdGVzX2RheXMuZmxleF90bF93ZWVrZGF5NyxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19jb250YWluZXIgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfd2Vla3MuZmxleF90bF93ZWVrZGF5NixcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMSAuZmxleF90bF9yZXNvdXJjZV90aXRsZV9kYXRlc19jb250YWluZXIgLmZsZXhfdGxfcmVzb3VyY2VfdGl0bGVfZGF0ZXNfd2Vla3MuZmxleF90bF93ZWVrZGF5NyB7XHJcbiAgY29sb3I6ICNiZDdmNzhcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCB7XHJcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZWVlO1xyXG4gIGNvbG9yOiAjYWFhO1xyXG4gIGZvbnQtc2l6ZTogLjg1ZW07XHJcbiAgdGV4dC1zaGFkb3c6IG5vbmVcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbC5uZXdfbW9udGggLmluX2NlbGxfdGltZV9ob3VyOmZpcnN0LWNoaWxkIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyIHtcclxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNjNTRcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbC5uZXdfbW9udGguZXhpc3RfYm9va2luZ19pbl9jZWxsIC5pbl9jZWxsX3RpbWVfaG91cjpmaXJzdC1jaGlsZCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lciB7XHJcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYzU0XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5hcHByb3ZlZF9ib29raW5nLnN0YXJ0X25ld19ib29raW5nIHtcclxuICBib3JkZXItY29sb3I6ICM2MTZmOGJcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkLnBhc3RfZGF0ZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwY2Y3N1xyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYXBwcm92ZWRfYm9va2luZy5wYXN0X2RhdGUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MDk5YWE7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3BiY190aW1lbGluZS1wYXN0LWJvb2tpbmctYXBwcm92ZWQtY29sb3IpXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5zdGFydF9uZXdfYm9va2luZy5ib29raW5nX3RyYXNoIHtcclxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICM5MDFjMWFcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkLmJvb2tpbmdfdHJhc2gge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjZmNmRcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2Jhci5mbGV4X3RsX3Jvd19iYXJfc2hvd19ib29raW5nX3RpdGxlcyAuZmxleF90bF9kYXlfY2VsbC50b2RheV9kYXRlIC5pbl9jZWxsX3RpbWVfc2VjdGlvbl9pbl9kYXkge1xyXG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzA5MFxyXG59XHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8xLmZsZXhfdGxfbWF0cml4X3Jlc291cmNlcyAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2Jhci5mbGV4X3RsX3Jvd19iYXJfc2hvd19ib29raW5nX3RpdGxlcyAuZmxleF90bF9kYXlfY2VsbC50b2RheV9kYXRlIC5pbl9jZWxsX3RpbWVfc2VjdGlvbl9pbl9kYXksXHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8zMC5mbGV4X3RsX3NpbmdsZV9yZXNvdXJjZSAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2Jhci5mbGV4X3RsX3Jvd19iYXJfc2hvd19ib29raW5nX3RpdGxlcyAuZmxleF90bF9kYXlfY2VsbC50b2RheV9kYXRlIC5pbl9jZWxsX3RpbWVfc2VjdGlvbl9pbl9kYXkge1xyXG4gIGJvcmRlci1sZWZ0OiBub25lXHJcbn1cclxuLmZsZXhfdGltZWxpbmVfZnJhbWUuZmxleF9mcmFtZV92aWV3X2RheXNfbnVtXzEuZmxleF90bF9tYXRyaXhfcmVzb3VyY2VzIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyLmZsZXhfdGxfcm93X2Jhcl9zaG93X2Jvb2tpbmdfdGl0bGVzIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX3RpbWVfc2VjdGlvbl9pbl9kYXkgLmluX2NlbGxfdGltZV9ob3VyLnRvZGF5X3RpbWUsXHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8zMC5mbGV4X3RsX3NpbmdsZV9yZXNvdXJjZSAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2Jhci5mbGV4X3RsX3Jvd19iYXJfc2hvd19ib29raW5nX3RpdGxlcyAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF90aW1lX3NlY3Rpb25faW5fZGF5IC5pbl9jZWxsX3RpbWVfaG91ci50b2RheV90aW1lIHtcclxuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM3N2NlMGZcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkIGEge1xyXG4gIGZvbnQtc2l6ZTogN3B4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgY3Vyc29yOiBwb2ludGVyXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5nX3RpdGxlcyAuaW5fY2VsbF9kYXRlX2Jvb2tpbmdfdGl0bGUge1xyXG4gIGJhY2tncm91bmQ6ICM3Nzc7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjNTU1O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgZm9udC1zaXplOiAxMHB4XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5nX3RpdGxlcyAuaW5fY2VsbF9kYXRlX2Jvb2tpbmdfdGl0bGUuc2V2ZXJhbF9ib29raW5nc19pbl9jZWxsIHtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIGJhY2tncm91bmQ6ICNmZGFiMzY7XHJcbiAgY29sb3I6ICM0NTUzNjY7XHJcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZGQ4YjE2XHJcbn1cclxuLmZsZXhfdGltZWxpbmVfZnJhbWUuZmxleF9mcmFtZV92aWV3X2RheXNfbnVtXzEuZmxleF90bF9tYXRyaXhfcmVzb3VyY2VzIC5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfZGF0ZXMsXHJcbi5mbGV4X3RpbWVsaW5lX2ZyYW1lLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV8zMC5mbGV4X3RsX3NpbmdsZV9yZXNvdXJjZSAuZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2RhdGVzIHtcclxuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlZWU7XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XHJcbiAgZm9udC1zaXplOiAuOGVtO1xyXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBwYWRkaW5nOiAwIDJweFxyXG59XHJcbi53cGJjX2NhbGVuZGFyX292ZXJ2aWV3X19oZWFkZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogMTAwJVxyXG59XHJcbi53cGJjX2NhbGVuZGFyX292ZXJ2aWV3X19oZWFkZXIgLm5hdi10YWJzIHtcclxuICBib3gtc2hhZG93OiAwIDNweCA4cHggI2VhZWFlYTtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UzZTNlMztcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxyXG59XHJcbi53cGJjX2NhbGVuZGFyX292ZXJ2aWV3X19oZWFkZXIgLndwYmNfY2FsZW5kYXJfb3ZlcnZpZXdfX25hdmlnYXRpb24ge1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcclxuICAtbXMtZmxleC1wYWNrOiBlbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgbWFyZ2luOiA0cHggNXB4IDRweCBhdXRvXHJcbn1cclxuLndwYmNfY2FsZW5kYXJfb3ZlcnZpZXdfX2NvbnRhaW5lciB7XHJcbiAgcGFkZGluZzogMCA1cHggNXB4O1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDtcclxuICBib3gtc2hhZG93OiAwIDAgOHB4ICNkYWRhZGE7XHJcbiAgbWFyZ2luLWJvdHRvbTogMjVweFxyXG59XHJcbi53cGJjX3BhZ2VfdGFiX192bV9jYWxlbmRhciAjdG9vbGJhcl9ib29raW5nX2xpc3Rpbmcud3BiY190aW1lbGluZV90b29sYmFyX2NvbnRhaW5lciB7XHJcbiAgbWFyZ2luOiAtMjFweCAwIDAhaW1wb3J0YW50O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBib3gtc2hhZG93OiAwIDRweCA4cHggI2U0ZTRlNFxyXG59XHJcbi53cGJjX3RpbWVsaW5lX3Rvb2xiYXJfY29udGFpbmVyIC53cGR2bHAtc3ViLXRhYnMge1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4XHJcbn1cclxuLndwYmNfcGFnZV90YWJfX3ZtX2NhbGVuZGFyICN0b29sYmFyX2Jvb2tpbmdfbGlzdGluZy53cGJjX3RpbWVsaW5lX3Rvb2xiYXJfY29udGFpbmVyIC53cGR2bHAtc3ViLXRhYnMge1xyXG4gIHBhZGRpbmctYm90dG9tOiAxcHhcclxufVxyXG4ud3BiY19jYWxlbmRhcl9vdmVydmlld19fY29udGFpbmVyIC5mbGV4X3RsX3RhYmxlIHtcclxuICBib3JkZXItcmFkaXVzOiAwO1xyXG4gIGJvcmRlci10b3A6IG5vbmU7XHJcbiAgZm9udC1zaXplOiAxM3B4XHJcbn1cclxuLndwYmNfdGltZWxpbmVfdG9vbGJhcl9zdHJ1Y3R1cmUge1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcclxuICAtbXMtZmxleC1wYWNrOiBzdGFydDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyXHJcbn1cclxuLndwYmNfdGltZWxpbmVfdG9vbGJhcl9zdHJ1Y3R1cmUgPiAqIHtcclxuICBtYXJnaW4tdG9wOiAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4XHJcbn1cclxuLndwYmNfdGltZWxpbmVfdG9vbGJhcl9zdHJ1Y3R1cmUgPiA6bGFzdC1jaGlsZCB7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgbWFyZ2luLXJpZ2h0OiAwXHJcbn1cclxuLndwYmNfdG9vbGJhcl9zZWFyY2hfYnlfaWRfYm9va2luZ3Mge1xyXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZDtcclxuICBhbGlnbi1zZWxmOiBmbGV4LWVuZFxyXG59XHJcbkBtZWRpYSAobWF4LXdpZHRoOjUwMXB4KSB7XHJcbiAgLndwYmNfdG9vbGJhcl9zZWFyY2hfYnlfaWRfYm9va2luZ3Mge1xyXG4gICAgZGlzcGxheTogbm9uZVxyXG4gIH1cclxufVxyXG4uZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb25zIHtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgb3ZlcmZsb3cteTogYXV0bztcclxuICBzY3JvbGxiYXItd2lkdGg6IHRoaW5cclxufVxyXG4uZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb25zIC5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbjEge1xyXG4gIHdpZHRoOiAyMjBweDtcclxuICBvdmVyZmxvdy14OiBhdXRvO1xyXG4gIHNjcm9sbGJhci13aWR0aDogdGhpbjtcclxuICBib3gtc2hhZG93OiAwIDAgM3B4ICM5YjliOWI7XHJcbiAgei1pbmRleDogMTtcclxuICBwYWRkaW5nOiAwXHJcbn1cclxuLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9ucyAuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb24xID4gZGl2IHtcclxuICAtbXMtZmxleDogMCAxIDE4MHB4O1xyXG4gIGZsZXg6IDAgMSAxODBweDtcclxuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGZkZmRmXHJcbn1cclxuLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9ucyAuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb24xID4gZGl2LmZsZXhfdGxfdGFibGVfdGl0bGVzIHtcclxuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudFxyXG59XHJcbi5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbnMgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9uMiB7XHJcbiAgLW1zLWZsZXg6IDEgMSAxMDAlO1xyXG4gIGZsZXg6IDEgMSAxMDAlO1xyXG4gIG92ZXJmbG93LXg6IGF1dG9cclxufVxyXG4uZmxleF90bF9zaW5nbGVfcmVzb3VyY2UuZmxleF9mcmFtZV92aWV3X2RheXNfbnVtXzMwIC5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbnMgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9uMiAuZmxleF90bF9yb3dfbWF4X3dpZHRoIHtcclxuICBtaW4td2lkdGg6IDkwMHB4XHJcbn1cclxuLmZsZXhfdGxfc2luZ2xlX3Jlc291cmNlLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV85MCAuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb25zIC5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbjIgLmZsZXhfdGxfcm93X21heF93aWR0aCB7XHJcbiAgbWluLXdpZHRoOiAzNTBweFxyXG59XHJcbi5mbGV4X3RsX3NpbmdsZV9yZXNvdXJjZS5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fMzY1IC5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbnMgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9uMiAuZmxleF90bF9yb3dfbWF4X3dpZHRoIHtcclxuICBtaW4td2lkdGg6IDE0MDBweFxyXG59XHJcbi5mbGV4X3RsX21hdHJpeF9yZXNvdXJjZXMuZmxleF9mcmFtZV92aWV3X2RheXNfbnVtXzEgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9ucyAuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb24yIC5mbGV4X3RsX3Jvd19tYXhfd2lkdGgge1xyXG4gIG1pbi13aWR0aDogOTAwcHhcclxufVxyXG4uZmxleF90bF9tYXRyaXhfcmVzb3VyY2VzLmZsZXhfZnJhbWVfdmlld19kYXlzX251bV83IC5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbnMgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9uMiAuZmxleF90bF9yb3dfbWF4X3dpZHRoIHtcclxuICBtaW4td2lkdGg6IDMwMHB4XHJcbn1cclxuLmZsZXhfdGxfbWF0cml4X3Jlc291cmNlcy5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fMzAgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9ucyAuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb24yIC5mbGV4X3RsX3Jvd19tYXhfd2lkdGgge1xyXG4gIG1pbi13aWR0aDogMTQwMHB4XHJcbn1cclxuLmZsZXhfdGxfbWF0cml4X3Jlc291cmNlcy5mbGV4X2ZyYW1lX3ZpZXdfZGF5c19udW1fNjAgLmZsZXhfdGxfX3Njcm9sbGluZ19zZWN0aW9ucyAuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb24yIC5mbGV4X3RsX3Jvd19tYXhfd2lkdGgge1xyXG4gIG1pbi13aWR0aDogMjgwMHB4XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMSxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMixcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMSxcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiB7XHJcbiAgaGVpZ2h0OiB2YXIoLS13cGJjX3RpbWVsaW5lLXJvdy1oZWFkZXItaGVpZ2h0KTtcclxuICBvdmVyZmxvdzogaGlkZGVuXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfaGVhZGVyIC5mbGV4X3RsX2NvbGx1bW5fMixcclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfdGl0bGVzIC5mbGV4X3RsX2NvbGx1bW5fMiB7XHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICAtbXMtZmxleC1mbG93OiByb3cgd3JhcDtcclxuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDtcclxuICBhbGlnbi1pdGVtczogc3RyZXRjaFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX2hlYWRlciAuZmxleF90bF9jb2xsdW1uXzIgPiBkaXYsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3RpdGxlcyAuZmxleF90bF9jb2xsdW1uXzIgPiBkaXYge1xyXG4gIC1tcy1mbGV4OiAxIDEgMTAwJTtcclxuICBmbGV4OiAxIDEgMTAwJVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQge1xyXG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xyXG4gIG9wYWNpdHk6IC44O1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3BiY190aW1lbGluZS1ib29raW5nLXBlbmRpbmctY29sb3IpXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5zdGFydF9uZXdfYm9va2luZyB7XHJcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZGY4ZDE4XHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5hcHByb3ZlZF9ib29raW5nIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctYXBwcm92ZWQtY29sb3IpXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5wYXN0X2RhdGUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwYmNfdGltZWxpbmUtcGFzdC1ib29raW5nLXBlbmRpbmctY29sb3IpXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5ib29raW5nX2NoYW5nZV9vdmVyIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogY2FsYygxMDAlICsgMXB4KTtcclxuICBtYXJnaW46IDAgLTFweFxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYm9va2luZ19jaGVja19pbiB7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSByaWdodCwjZmZmMCAwLCNmZmYwIDUwJSx2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctcGVuZGluZy1ib3JkZXItY29sb3IpIDUwJSx2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctcGVuZGluZy1ib3JkZXItY29sb3IpIDUyJSx2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctcGVuZGluZy1jb2xvcikgNTIlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1wZW5kaW5nLWNvbG9yKSAxMDAlKVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYm9va2luZ19jaGVja19vdXQge1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AgbGVmdCwjZmZmMCAwLCNmZmYwIDUwJSx2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctcGVuZGluZy1jb2xvcikgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1wZW5kaW5nLWNvbG9yKSAxMDAlKVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYXBwcm92ZWRfYm9va2luZy5ib29raW5nX2NoZWNrX2luIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIHJpZ2h0LCNmZmYwIDAsI2ZmZjAgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1hcHByb3ZlZC1ib3JkZXItY29sb3IpIDUwJSx2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctYXBwcm92ZWQtYm9yZGVyLWNvbG9yKSA1MiUsdmFyKC0td3BiY190aW1lbGluZS1ib29raW5nLWFwcHJvdmVkLWNvbG9yKSA1MiUsdmFyKC0td3BiY190aW1lbGluZS1ib29raW5nLWFwcHJvdmVkLWNvbG9yKSAxMDAlKVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYXBwcm92ZWRfYm9va2luZy5ib29raW5nX2NoZWNrX291dCB7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCBsZWZ0LCNmZmYwIDAsI2ZmZjAgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1hcHByb3ZlZC1jb2xvcikgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1hcHByb3ZlZC1jb2xvcikgMTAwJSlcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkLmJvb2tpbmdfY2hlY2tfaW4ucGFzdF9kYXRlIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIHJpZ2h0LCNmZmYwIDAsI2ZmZjAgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1wZW5kaW5nLWJvcmRlci1jb2xvcikgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1wZW5kaW5nLWJvcmRlci1jb2xvcikgNTIlLHZhcigtLXdwYmNfdGltZWxpbmUtcGFzdC1ib29raW5nLXBlbmRpbmctY29sb3IpIDUyJSx2YXIoLS13cGJjX3RpbWVsaW5lLXBhc3QtYm9va2luZy1wZW5kaW5nLWNvbG9yKSAxMDAlKVxyXG59XHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ3MgLmJvb2tpbmdfaWQuYm9va2luZ19jaGVja19vdXQucGFzdF9kYXRlIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wIGxlZnQsI2ZmZjAgMCwjZmZmMCA1MCUsdmFyKC0td3BiY190aW1lbGluZS1wYXN0LWJvb2tpbmctcGVuZGluZy1jb2xvcikgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtcGFzdC1ib29raW5nLXBlbmRpbmctY29sb3IpIDEwMCUpXHJcbn1cclxuLmZsZXhfdGxfdGFibGUgLmZsZXhfdGxfdGFibGVfcm93X2Jvb2tpbmdzIC5mbGV4X3RsX2NvbGx1bW5fMiAuZmxleF90bF9kYXRlc19iYXIgLmZsZXhfdGxfZGF5X2NlbGwgLmluX2NlbGxfZGF0ZV9jb250YWluZXJfc2hvd19ib29raW5ncyAuYm9va2luZ19pZC5hcHByb3ZlZF9ib29raW5nLmJvb2tpbmdfY2hlY2tfaW4ucGFzdF9kYXRlIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIHJpZ2h0LCNmZmYwIDAsI2ZmZjAgNTAlLHZhcigtLXdwYmNfdGltZWxpbmUtYm9va2luZy1hcHByb3ZlZC1ib3JkZXItY29sb3IpIDUwJSx2YXIoLS13cGJjX3RpbWVsaW5lLWJvb2tpbmctYXBwcm92ZWQtYm9yZGVyLWNvbG9yKSA1MiUsdmFyKC0td3BiY190aW1lbGluZS1wYXN0LWJvb2tpbmctYXBwcm92ZWQtY29sb3IpIDUyJSx2YXIoLS13cGJjX3RpbWVsaW5lLXBhc3QtYm9va2luZy1hcHByb3ZlZC1jb2xvcikgMTAwJSlcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdzIC5ib29raW5nX2lkLmFwcHJvdmVkX2Jvb2tpbmcuYm9va2luZ19jaGVja19vdXQucGFzdF9kYXRlIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wIGxlZnQsI2ZmZjAgMCwjZmZmMCA1MCUsdmFyKC0td3BiY190aW1lbGluZS1wYXN0LWJvb2tpbmctYXBwcm92ZWQtY29sb3IpIDUwJSx2YXIoLS13cGJjX3RpbWVsaW5lLXBhc3QtYm9va2luZy1hcHByb3ZlZC1jb2xvcikgMTAwJSlcclxufVxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdfdGl0bGVzIC5pbl9jZWxsX2RhdGVfYm9va2luZ190aXRsZTphY3RpdmUsXHJcbi5mbGV4X3RsX3RhYmxlIC5mbGV4X3RsX3RhYmxlX3Jvd19ib29raW5ncyAuZmxleF90bF9jb2xsdW1uXzIgLmZsZXhfdGxfZGF0ZXNfYmFyIC5mbGV4X3RsX2RheV9jZWxsIC5pbl9jZWxsX2RhdGVfY29udGFpbmVyX3Nob3dfYm9va2luZ190aXRsZXMgLmluX2NlbGxfZGF0ZV9ib29raW5nX3RpdGxlOmZvY3VzLFxyXG4uZmxleF90bF90YWJsZSAuZmxleF90bF90YWJsZV9yb3dfYm9va2luZ3MgLmZsZXhfdGxfY29sbHVtbl8yIC5mbGV4X3RsX2RhdGVzX2JhciAuZmxleF90bF9kYXlfY2VsbCAuaW5fY2VsbF9kYXRlX2NvbnRhaW5lcl9zaG93X2Jvb2tpbmdfdGl0bGVzIC5pbl9jZWxsX2RhdGVfYm9va2luZ190aXRsZTpob3ZlciB7XHJcbiAgb3V0bGluZTogMDtcclxuICBib3gtc2hhZG93OiAwIDAgMCAycHggI2E2YmJlNTtcclxuICBib3gtc2hhZG93OiAwIDAgNHB4IC0xcHggIzAwMDtcclxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1zdHlsZTogZGFzaGVkO1xyXG4gIHRleHQtZGVjb3JhdGlvbi1zdHlsZTogZGFzaGVkO1xyXG4gIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDA7XHJcbiAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHhcclxufSJdfQ== */ v2/_out/timeline_v2.js 0000666 00000020127 15165661050 0010627 0 ustar 00 "use strict"; function wpbc_flextimeline_nav(timeline_obj, nav_step) { jQuery(".wpbc_timeline_front_end").trigger("timeline_nav", [timeline_obj, nav_step]); //FixIn:7.0.1.48 // jQuery( '#'+timeline_obj.html_client_id + ' .wpbc_tl_prev,#'+timeline_obj.html_client_id + ' .wpbc_tl_next').remove(); // jQuery('#'+timeline_obj.html_client_id + ' .wpbc_tl_title').html( '<span class="wpbc_icn_rotate_right wpbc_spin"></span>   Loading...' ); // '<div style="height:20px;width:100%;text-align:center;margin:15px auto;">Loading ... <img style="vertical-align:middle;box-shadow:none;width:14px;" src="'+_wpbc.get_other_param( 'url_plugin' )+'/assets/img/ajax-loader.gif"><//div>' jQuery('#' + timeline_obj.html_client_id + ' .flex_tl_prev,#' + timeline_obj.html_client_id + ' .flex_tl_next').remove(); jQuery('#' + timeline_obj.html_client_id + ' .flex_tl_title').html('<span class="wpbc_icn_rotate_right wpbc_spin"></span>   Loading...'); // '<div style="height:20px;width:100%;text-align:center;margin:15px auto;">Loading ... <img style="vertical-align:middle;box-shadow:none;width:14px;" src="'+_wpbc.get_other_param( 'url_plugin' )+'/assets/img/ajax-loader.gif"><//div>' //Deprecated: FixIn: 9.0.1.1.1 // if ( 'function' === typeof( jQuery(".popover_click.popover_bottom" ).popover ) ) //FixIn: 7.0.1.2 - 2016-12-10 // jQuery('.popover_click.popover_bottom').popover( 'hide' ); //Hide all opened popovers jQuery.ajax({ url: wpbc_url_ajax, type: 'POST', success: function success(data, textStatus) { // Note, here we direct show HTML to TimeLine frame if (textStatus == 'success') { jQuery('#' + timeline_obj.html_client_id + ' .wpbc_timeline_ajax_replace').html(data); return true; } }, error: function error(XMLHttpRequest, textStatus, errorThrown) { window.status = 'Ajax Error! Status: ' + textStatus; alert('Ajax Error! Status: ' + XMLHttpRequest.status + ' ' + XMLHttpRequest.statusText); }, // beforeSend: someFunction, data: { action: 'WPBC_FLEXTIMELINE_NAV', timeline_obj: timeline_obj, nav_step: nav_step, wpdev_active_locale: _wpbc.get_other_param('locale_active'), wpbc_nonce: document.getElementById('wpbc_nonce_' + timeline_obj.html_client_id).value } }); } //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS90aW1lbGluZS92Mi9fb3V0L3RpbWVsaW5lX3YyLmpzIiwibmFtZXMiOlsid3BiY19mbGV4dGltZWxpbmVfbmF2IiwidGltZWxpbmVfb2JqIiwibmF2X3N0ZXAiLCJqUXVlcnkiLCJ0cmlnZ2VyIiwiaHRtbF9jbGllbnRfaWQiLCJyZW1vdmUiLCJodG1sIiwiYWpheCIsInVybCIsIndwYmNfdXJsX2FqYXgiLCJ0eXBlIiwic3VjY2VzcyIsImRhdGEiLCJ0ZXh0U3RhdHVzIiwiZXJyb3IiLCJYTUxIdHRwUmVxdWVzdCIsImVycm9yVGhyb3duIiwid2luZG93Iiwic3RhdHVzIiwiYWxlcnQiLCJzdGF0dXNUZXh0IiwiYWN0aW9uIiwid3BkZXZfYWN0aXZlX2xvY2FsZSIsIl93cGJjIiwiZ2V0X290aGVyX3BhcmFtIiwid3BiY19ub25jZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbImNvcmUvdGltZWxpbmUvdjIvX3NyYy90aW1lbGluZV92Mi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZnVuY3Rpb24gd3BiY19mbGV4dGltZWxpbmVfbmF2KCB0aW1lbGluZV9vYmosIG5hdl9zdGVwICl7XHJcblxyXG4gICAgalF1ZXJ5KCBcIi53cGJjX3RpbWVsaW5lX2Zyb250X2VuZFwiICkudHJpZ2dlciggXCJ0aW1lbGluZV9uYXZcIiAsIFsgdGltZWxpbmVfb2JqLCBuYXZfc3RlcCBdICk7ICAgICAgICAvL0ZpeEluOjcuMC4xLjQ4XHJcblxyXG4gICAgLy8galF1ZXJ5KCAnIycrdGltZWxpbmVfb2JqLmh0bWxfY2xpZW50X2lkICsgJyAud3BiY190bF9wcmV2LCMnK3RpbWVsaW5lX29iai5odG1sX2NsaWVudF9pZCArICcgLndwYmNfdGxfbmV4dCcpLnJlbW92ZSgpO1xyXG4gICAgLy8galF1ZXJ5KCcjJyt0aW1lbGluZV9vYmouaHRtbF9jbGllbnRfaWQgKyAnIC53cGJjX3RsX3RpdGxlJykuaHRtbCggJzxzcGFuIGNsYXNzPVwid3BiY19pY25fcm90YXRlX3JpZ2h0IHdwYmNfc3BpblwiPjwvc3Bhbj4gJm5ic3AgTG9hZGluZy4uLicgKTsgICAgICAvLyAnPGRpdiBzdHlsZT1cImhlaWdodDoyMHB4O3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjE1cHggYXV0bztcIj5Mb2FkaW5nIC4uLiA8aW1nIHN0eWxlPVwidmVydGljYWwtYWxpZ246bWlkZGxlO2JveC1zaGFkb3c6bm9uZTt3aWR0aDoxNHB4O1wiIHNyYz1cIicrX3dwYmMuZ2V0X290aGVyX3BhcmFtKCAndXJsX3BsdWdpbicgKSsnL2Fzc2V0cy9pbWcvYWpheC1sb2FkZXIuZ2lmXCI+PC8vZGl2PidcclxuXHJcbiAgICBqUXVlcnkoICcjJyt0aW1lbGluZV9vYmouaHRtbF9jbGllbnRfaWQgKyAnIC5mbGV4X3RsX3ByZXYsIycrdGltZWxpbmVfb2JqLmh0bWxfY2xpZW50X2lkICsgJyAuZmxleF90bF9uZXh0JykucmVtb3ZlKCk7XHJcbiAgICBqUXVlcnkoJyMnK3RpbWVsaW5lX29iai5odG1sX2NsaWVudF9pZCArICcgLmZsZXhfdGxfdGl0bGUnKS5odG1sKCAnPHNwYW4gY2xhc3M9XCJ3cGJjX2ljbl9yb3RhdGVfcmlnaHQgd3BiY19zcGluXCI+PC9zcGFuPiAmbmJzcCBMb2FkaW5nLi4uJyApOyAgICAgIC8vICc8ZGl2IHN0eWxlPVwiaGVpZ2h0OjIwcHg7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MTVweCBhdXRvO1wiPkxvYWRpbmcgLi4uIDxpbWcgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym94LXNoYWRvdzpub25lO3dpZHRoOjE0cHg7XCIgc3JjPVwiJytfd3BiYy5nZXRfb3RoZXJfcGFyYW0oICd1cmxfcGx1Z2luJyApKycvYXNzZXRzL2ltZy9hamF4LWxvYWRlci5naWZcIj48Ly9kaXY+J1xyXG5cclxuXHJcbi8vRGVwcmVjYXRlZDogRml4SW46IDkuMC4xLjEuMVxyXG4vLyBpZiAoICdmdW5jdGlvbicgPT09IHR5cGVvZiggalF1ZXJ5KFwiLnBvcG92ZXJfY2xpY2sucG9wb3Zlcl9ib3R0b21cIiApLnBvcG92ZXIgKSAgKSAgICAgICAvL0ZpeEluOiA3LjAuMS4yICAtIDIwMTYtMTItMTBcclxuLy8gICAgIGpRdWVyeSgnLnBvcG92ZXJfY2xpY2sucG9wb3Zlcl9ib3R0b20nKS5wb3BvdmVyKCAnaGlkZScgKTsgICAgICAgICAgICAgICAgICAgICAgLy9IaWRlIGFsbCBvcGVuZWQgcG9wb3ZlcnNcclxuXHJcbiAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgdXJsOiB3cGJjX3VybF9hamF4LFxyXG4gICAgICAgIHR5cGU6J1BPU1QnLFxyXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uICggZGF0YSwgdGV4dFN0YXR1cyApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGUsICBoZXJlIHdlIGRpcmVjdCBzaG93IEhUTUwgdG8gVGltZUxpbmUgZnJhbWVcclxuICAgICAgICAgICAgICAgICAgICBpZiggdGV4dFN0YXR1cyA9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjJyArIHRpbWVsaW5lX29iai5odG1sX2NsaWVudF9pZCArICcgLndwYmNfdGltZWxpbmVfYWpheF9yZXBsYWNlJyApLmh0bWwoIGRhdGEgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogIGZ1bmN0aW9uICggWE1MSHR0cFJlcXVlc3QsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKXtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc3RhdHVzID0gJ0FqYXggRXJyb3IhIFN0YXR1czogJyArIHRleHRTdGF0dXM7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoICdBamF4IEVycm9yISBTdGF0dXM6ICcgKyBYTUxIdHRwUmVxdWVzdC5zdGF0dXMgKyAnICcgKyBYTUxIdHRwUmVxdWVzdC5zdGF0dXNUZXh0ICk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgIC8vIGJlZm9yZVNlbmQ6IHNvbWVGdW5jdGlvbixcclxuICAgICAgICBkYXRhOntcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogICAgICAgICAgICAgICdXUEJDX0ZMRVhUSU1FTElORV9OQVYnLFxyXG4gICAgICAgICAgICAgICAgdGltZWxpbmVfb2JqOiAgICAgICAgdGltZWxpbmVfb2JqLFxyXG4gICAgICAgICAgICAgICAgbmF2X3N0ZXA6ICAgICAgICAgICAgbmF2X3N0ZXAsXHJcbiAgICAgICAgICAgICAgICB3cGRldl9hY3RpdmVfbG9jYWxlOiBfd3BiYy5nZXRfb3RoZXJfcGFyYW0oICdsb2NhbGVfYWN0aXZlJyApLFxyXG4gICAgICAgICAgICAgICAgd3BiY19ub25jZTogICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dwYmNfbm9uY2VfJysgdGltZWxpbmVfb2JqLmh0bWxfY2xpZW50X2lkKS52YWx1ZVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0EscUJBQXFCQSxDQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRTtFQUVwREMsTUFBTSxDQUFFLDBCQUEyQixDQUFDLENBQUNDLE9BQU8sQ0FBRSxjQUFjLEVBQUcsQ0FBRUgsWUFBWSxFQUFFQyxRQUFRLENBQUcsQ0FBQyxDQUFDLENBQVE7O0VBRXBHO0VBQ0E7O0VBRUFDLE1BQU0sQ0FBRSxHQUFHLEdBQUNGLFlBQVksQ0FBQ0ksY0FBYyxHQUFHLGtCQUFrQixHQUFDSixZQUFZLENBQUNJLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQztFQUNySEgsTUFBTSxDQUFDLEdBQUcsR0FBQ0YsWUFBWSxDQUFDSSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsQ0FBQ0UsSUFBSSxDQUFFLHdFQUF5RSxDQUFDLENBQUMsQ0FBTTs7RUFHdko7RUFDQTtFQUNBOztFQUVJSixNQUFNLENBQUNLLElBQUksQ0FBQztJQUNSQyxHQUFHLEVBQUVDLGFBQWE7SUFDbEJDLElBQUksRUFBQyxNQUFNO0lBQ1hDLE9BQU8sRUFBRSxTQUFBQSxRQUFXQyxJQUFJLEVBQUVDLFVBQVUsRUFBRTtNQUFrQztNQUM1RCxJQUFJQSxVQUFVLElBQUksU0FBUyxFQUFFO1FBQ3pCWCxNQUFNLENBQUMsR0FBRyxHQUFHRixZQUFZLENBQUNJLGNBQWMsR0FBRyw4QkFBK0IsQ0FBQyxDQUFDRSxJQUFJLENBQUVNLElBQUssQ0FBQztRQUN4RixPQUFPLElBQUk7TUFDZjtJQUNKLENBQUM7SUFDVEUsS0FBSyxFQUFHLFNBQUFBLE1BQVdDLGNBQWMsRUFBRUYsVUFBVSxFQUFFRyxXQUFXLEVBQUM7TUFDL0NDLE1BQU0sQ0FBQ0MsTUFBTSxHQUFHLHNCQUFzQixHQUFHTCxVQUFVO01BQ25ETSxLQUFLLENBQUUsc0JBQXNCLEdBQUdKLGNBQWMsQ0FBQ0csTUFBTSxHQUFHLEdBQUcsR0FBR0gsY0FBYyxDQUFDSyxVQUFXLENBQUM7SUFDN0YsQ0FBQztJQUNUO0lBQ0FSLElBQUksRUFBQztNQUNHUyxNQUFNLEVBQWUsdUJBQXVCO01BQzVDckIsWUFBWSxFQUFTQSxZQUFZO01BQ2pDQyxRQUFRLEVBQWFBLFFBQVE7TUFDN0JxQixtQkFBbUIsRUFBRUMsS0FBSyxDQUFDQyxlQUFlLENBQUUsZUFBZ0IsQ0FBQztNQUM3REMsVUFBVSxFQUFXQyxRQUFRLENBQUNDLGNBQWMsQ0FBQyxhQUFhLEdBQUUzQixZQUFZLENBQUNJLGNBQWMsQ0FBQyxDQUFDd0I7SUFDakc7RUFDSixDQUFDLENBQUM7QUFDTiIsImlnbm9yZUxpc3QiOltdfQ==
| ver. 1.4 |
Github
|
.
| PHP 5.4.45 | Generation time: 0 |
proxy
|
phpinfo
|
Settings