That’s all, stop editing! Happy blogging empty( $parsed_selector[ self::SELECTOR_EXTRACTED_IDS ] ) || 0 === count( array_filter( $parsed_selector[ self::SELECTOR_EXTRACTED_IDS ], function( $id ) { return ! $this->dom->getElementById( $id ); } ) ) ) && // If tag names are present in the doc. ( empty( $parsed_selector[ self::SELECTOR_EXTRACTED_TAGS ] ) || $this->has_used_tag_names( $parsed_selector[ self::SELECTOR_EXTRACTED_TAGS ] ) ) && // If all attribute names are used in the doc. ( empty( $parsed_selector[ self::SELECTOR_EXTRACTED_ATTRIBUTES ] ) || $this->has_used_attributes( $parsed_selector[ self::SELECTOR_EXTRACTED_ATTRIBUTES ] ) ) ); $selectors[ $selector ] = $should_include; if ( $should_include ) { $used_selector_count++; } } $shaken_tokens[] = [ 0 !== $used_selector_count, $selectors, $declaration_block, ]; } // Strip empty at-rules after tree shaking. $stylesheet_part_count = count( $shaken_tokens ); for ( $i = 0; $i < $stylesheet_part_count; $i++ ) { // Skip anything that isn't an at-rule. if ( ! is_string( $shaken_tokens[ $i ][1] ) || '@' !== substr( $shaken_tokens[ $i ][1], 0, 1 ) ) { continue; } // Delete empty at-rules. if ( '{}' === substr( $shaken_tokens[ $i ][1], -2 ) ) { $shaken_tokens[ $i ][0] = false; continue; } // Delete at-rules that were emptied due to tree-shaking. if ( '{' === substr( $shaken_tokens[ $i ][1], -1 ) ) { $open_braces = 1; for ( $j = $i + 1; $j < $stylesheet_part_count; $j++ ) { if ( is_array( $shaken_tokens[ $j ][1] ) ) { // Is declaration block. if ( true === $shaken_tokens[ $j ][0] ) { // The declaration block has selectors which survived tree shaking, so the contained at- // rule cannot be removed and so we must abort. break; } else { // Continue to the next stylesheet part as this declaration block can be included in the // list of parts that may be part of an at-rule that is now empty and should be removed. continue; } } $is_at_rule = '@' === substr( $shaken_tokens[ $j ][1], 0, 1 ); if ( $is_at_rule && '{}' === substr( $shaken_tokens[ $j ][1], -2 ) ) { continue; // The rule opened is empty from the start. } if ( $is_at_rule && '{' === substr( $shaken_tokens[ $j ][1], -1 ) ) { $open_braces++; } elseif ( '}' === $shaken_tokens[ $j ][1] ) { $open_braces--; } else { break; } // Splice out the parts that are empty. if ( 0 === $open_braces ) { for ( $k = $i; $k <= $j; $k++ ) { $shaken_tokens[ $k ][0] = false; } $i = $j; // Jump the outer loop ahead to skip over what has been already marked as removed. continue 2; } } } } $pending_stylesheet['shaken_tokens'] = $shaken_tokens; unset( $pending_stylesheet['tokens'], $shaken_tokens ); // @todo After this point we could unset( $pending_stylesheet['tokens'] ) since they wouldn't be used in the course of generating a page, though they would still be useful for other purposes. $pending_stylesheet['serialized'] = implode( '', array_map( static function ( $shaken_token ) { if ( is_array( $shaken_token[1] ) ) { // Construct a declaration block. $selectors = array_keys( array_filter( $shaken_token[1] ) ); if ( empty( $selectors ) ) { return ''; } else { return implode( ',', $selectors ) . '{' . implode( ';', $shaken_token[2] ) . '}'; } } else { // Pass through parts other than declaration blocks. return $shaken_token[1]; } }, // Include the stylesheet parts that were not marked for exclusion during tree shaking. array_filter( $pending_stylesheet['shaken_tokens'], static function( $shaken_token ) { return false !== $shaken_token[0]; } ) ) ); $pending_stylesheet['included'] = null; // To be determined below. $pending_stylesheet['final_size'] = strlen( $pending_stylesheet['serialized'] ); // If this stylesheet is a duplicate of something that came before, mark the previous as not included automatically. if ( isset( $previously_seen_stylesheet_index[ $pending_stylesheet['hash'] ] ) ) { $this->pending_stylesheets[ $previously_seen_stylesheet_index[ $pending_stylesheet['hash'] ] ]['included'] = false; $this->pending_stylesheets[ $previously_seen_stylesheet_index[ $pending_stylesheet['hash'] ] ]['duplicate'] = true; } $previously_seen_stylesheet_index[ $pending_stylesheet['hash'] ] = $pending_stylesheet_index; $pending_stylesheet['shake_time'] = microtime( true ) - $start_time; } // End foreach pending_stylesheets. unset( $pending_stylesheet ); // Determine which stylesheets are included based on their priorities. $pending_stylesheet_indices = array_keys( $this->pending_stylesheets ); usort( $pending_stylesheet_indices, function ( $a, $b ) { return $this->pending_stylesheets[ $a ]['priority'] - $this->pending_stylesheets[ $b ]['priority']; } ); foreach ( $pending_stylesheet_indices as $i ) { if ( $group !== $this->pending_stylesheets[ $i ]['group'] ) { continue; } // Skip duplicates. if ( false === $this->pending_stylesheets[ $i ]['included'] ) { continue; } // Skip stylesheets that were completely tree-shaken and mark as included. if ( 0 === $this->pending_stylesheets[ $i ]['final_size'] ) { $this->pending_stylesheets[ $i ]['included'] = true; continue; } $is_stylesheet_excessive = $concatenated_size + $this->pending_stylesheets[ $i ]['final_size'] > $max_bytes; // Report validation error if size is now too big. if ( ! $this->args['allow_excessive_css'] && $is_stylesheet_excessive ) { $validation_error = [ 'code' => self::STYLESHEET_TOO_LONG, 'type' => AMP_Validation_Error_Taxonomy::CSS_ERROR_TYPE, 'spec_name' => self::STYLE_AMP_KEYFRAMES_GROUP_INDEX === $group ? self::STYLE_AMP_KEYFRAMES_SPEC_NAME : self::STYLE_AMP_CUSTOM_SPEC_NAME, ]; if ( isset( $this->pending_stylesheets[ $i ]['sources'] ) ) { $validation_error['sources'] = $this->pending_stylesheets[ $i ]['sources']; } $data = [ 'node' => $this->pending_stylesheets[ $i ]['element'], ]; if ( $this->should_sanitize_validation_error( $validation_error, $data ) ) { $this->pending_stylesheets[ $i ]['included'] = false; continue; // Skip to the next stylesheet. } } if ( ! isset( $this->pending_stylesheets[ $i ]['included'] ) ) { $this->pending_stylesheets[ $i ]['included'] = true; $included_count++; $concatenated_size += $this->pending_stylesheets[ $i ]['final_size']; $preload_font_urls = array_merge( $preload_font_urls, $this->pending_stylesheets[ $i ]['preload_font_urls'] ); if ( $is_stylesheet_excessive ) { $is_excessive_size = true; } // Note: the following two may be incorrect because the !important property or erroneous rule may have // actually been tree-shaken and thus is no longer in the document. $important_count += $this->pending_stylesheets[ $i ]['important_count']; $kept_error_count += $this->pending_stylesheets[ $i ]['kept_error_count']; } } return compact( 'included_count', 'is_excessive_size', 'important_count', 'kept_error_count', 'preload_font_urls' ); } /** * Creates and inserts a meta[name="viewport"] tag if there are @viewport style rules. * * These rules aren't valid in CSS, but they might be valid in that meta tag. * So this adds them to the content attribute of a new meta tag. * These are later processed, to merge the content values into a single meta tag. * * @param DOMElement $element An element. * @param array $viewport_rules An associative array of $rule_name => $rule_value. */ private function create_meta_viewport( DOMElement $element, $viewport_rules ) { if ( empty( $viewport_rules ) ) { return; } $viewport_meta = $this->dom->createElement( 'meta' ); $viewport_meta->setAttribute( 'name', 'viewport' ); $viewport_meta->setAttribute( 'content', implode( ',', array_map( static function ( $property_name ) use ( $viewport_rules ) { return $property_name . '=' . $viewport_rules[ $property_name ]; }, array_keys( $viewport_rules ) ) ) ); // Inject a potential duplicate meta viewport element, to later be merged in AMP_Meta_Sanitizer. $element->parentNode->insertBefore( $viewport_meta, $element ); } } بایگانی‌های پخش کرم معجزه تهران - شیک فصل

پخش کرم معجزه

پخش کرم معجزه درجه یک

پخش کرم معجزه مشخصات فروشگاه لوازم ارایشی شیک فصل پخش لوازم آرایشی و بهداشتی بصورت عمده و تک ارسالی از شیراز به سراسر کشور شماره تماس :09178014824آقای کاظمی   بیش از1000قلم جنس خارجی اصل جهت مشاهده و ثبت سفارش محصولات به کانال در برنامه:>سروش>ایتا< روبیکا>< واتساپ >بپوندید. رضایت مشتری فروشگاه ارایشی شیک فصل کلیک کنید.… ادامه خواندن پخش کرم معجزه

خروج از نسخه موبایل