Plugin Directory

Changeset 2125154


Ignore:
Timestamp:
07/18/2019 10:08:06 AM (7 years ago)
Author:
pixelative
Message:
  • Feature: Option to remove any taxonomy/post from AMP version udder General settings.
  • Fix: amp-mustache script enqueue error when using contact form 7
Location:
amp-wp
Files:
378 added
23 edited

Legend:

Unmodified
Added
Removed
  • amp-wp/trunk/README.txt

    r2077306 r2125154  
    44Tags: AMP, AMP For WP, AMP For WordPress, accelerated mobile pages, mobile theme, google amp, plugin, amp wp
    55Requires at least: 4.9.6
    6 Tested up to: 5.1.1
     6Tested up to: 5.2.2
    77Requires PHP: 5.6
    8 Stable tag: 1.5.7
     8Stable tag: 1.5.8
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    174174== Changelog ==
    175175
     176= 1.5.8 - 2019-07-18 =
     177* Feature: Option to remove any taxonomy/post from AMP version udder General settings.
     178* Fix: amp-mustache script enqueue error when using contact form 7
     179
    176180= 1.5.7 - 2019-04-30 =
    177181* Fix: Broken editor issue is resolved when a post/page is edit.
  • amp-wp/trunk/admin/class-amp-wp-meta-box.php

    r2077306 r2125154  
    6868
    6969        global $post;
    70         $html  = '<p>';
    71         $html .= '<label for="amp-wp-' . $id . '">' . $label . '</label>';
    72         $html .= '<input type="checkbox" id="amp-wp-' . $id . '" name="amp-wp-' . $id . '" value="1" ' . checked( true, get_post_meta( $post->ID, 'disable-amp-wp', true ) ) . ' />';
    73         if ( $desc ) {
    74             $html .= '<span class="tips">' . $desc . '</span>';
    75         }
    76 
    77         $html .= '</p>';
    78         echo $html;
     70?>
     71<p>
     72    <label for="amp-wp-<?php echo $id; ?>"><?php echo $label; ?></label>
     73    <input type="checkbox" id="amp-wp-<?php echo $id; ?>" name="amp-wp-<?php echo $id; ?>" value="1"
     74           <?php checked( get_post_meta( $post->ID, 'disable-amp-wp', true ), 1 ); ?>
     75    />
     76    <?php if ( $desc ) { ?>
     77    <span class="tips"><?php echo $desc; ?></span>
     78    <?php } ?>
     79</p>
     80<?php
    7981    }
    8082
  • amp-wp/trunk/admin/css/amp-wp-admin.css

    r2076574 r2125154  
    1 .select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option,.select2-container .select2-selection--multiple,.select2-container .select2-selection--single{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title:after,.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title:before,.amp-wp-adb .amp-wp-box-w-icon:after,.amp-wp-adb .amp-wp-box-w-icon:before,.amp-wp-adb .row:after,.amp-wp-adb .row:before{content:" ";display:table}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title:after,.amp-wp-adb .amp-wp-box-w-icon:after,.amp-wp-adb .row:after{clear:both}.amp-wp-adb .amp-wp-content-wrap,.amp-wp-adb .amp-wp-header .amp-wp-logo,.amp-wp-adb .amp-wp-htabs,.amp-wp-adb .amp-wp-table,.amp-wp-adb .amp-wp-vtabs{-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.amp-wp-adb .amp-wp-box,.amp-wp-adb .amp-wp-box-w-img,.amp-wp-adb .amp-wp-team .amp-wp-team-member{-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.3);box-shadow:0 1px 3px rgba(0, 0, 0, 0.3)}.amp-wp-adb .amp-wp-box,.amp-wp-adb .amp-wp-content-wrap,.amp-wp-adb .amp-wp-htabs,.amp-wp-adb .amp-wp-table,.amp-wp-adb .amp-wp-team .amp-wp-team-member,.amp-wp-adb .amp-wp-vtabs,.select2-container{-webkit-box-sizing:border-box;box-sizing:border-box}.amp-wp-adb .amp-wp-box *,.amp-wp-adb .amp-wp-box :after,.amp-wp-adb .amp-wp-box :before,.amp-wp-adb .amp-wp-box+.tgl-btn,.amp-wp-adb .amp-wp-box:after,.amp-wp-adb .amp-wp-box:before,.amp-wp-adb .amp-wp-content-wrap *,.amp-wp-adb .amp-wp-content-wrap :after,.amp-wp-adb .amp-wp-content-wrap :before,.amp-wp-adb .amp-wp-content-wrap+.tgl-btn,.amp-wp-adb .amp-wp-content-wrap:after,.amp-wp-adb .amp-wp-content-wrap:before,.amp-wp-adb .amp-wp-htabs *,.amp-wp-adb .amp-wp-htabs :after,.amp-wp-adb .amp-wp-htabs :before,.amp-wp-adb .amp-wp-htabs+.tgl-btn,.amp-wp-adb .amp-wp-htabs:after,.amp-wp-adb .amp-wp-htabs:before,.amp-wp-adb .amp-wp-table *,.amp-wp-adb .amp-wp-table :after,.amp-wp-adb .amp-wp-table :before,.amp-wp-adb .amp-wp-table+.tgl-btn,.amp-wp-adb .amp-wp-table:after,.amp-wp-adb .amp-wp-table:before,.amp-wp-adb .amp-wp-team .amp-wp-team-member *,.amp-wp-adb .amp-wp-team .amp-wp-team-member :after,.amp-wp-adb .amp-wp-team .amp-wp-team-member :before,.amp-wp-adb .amp-wp-team .amp-wp-team-member+.tgl-btn,.amp-wp-adb .amp-wp-team .amp-wp-team-member:after,.amp-wp-adb .amp-wp-team .amp-wp-team-member:before,.amp-wp-adb .amp-wp-vtabs *,.amp-wp-adb .amp-wp-vtabs :after,.amp-wp-adb .amp-wp-vtabs :before,.amp-wp-adb .amp-wp-vtabs+.tgl-btn,.amp-wp-adb .amp-wp-vtabs:after,.amp-wp-adb .amp-wp-vtabs:before,.select2-container *,.select2-container :after,.select2-container :before,.select2-container+.tgl-btn,.select2-container:after,.select2-container:before{-webkit-box-sizing:border-box;box-sizing:border-box}@font-face{font-family:"amp-wp-admin-icons";src:url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.eot");src:url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.eot?#iefix") format("embedded-opentype"), url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.woff") format("woff"), url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.ttf") format("truetype"), url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.svg#amp-wp-admin-icons") format("svg");font-weight:normal;font-style:normal}[data-icon]:before{font-family:"amp-wp-admin-icons"!important;content:attr(data-icon);font-style:normal!important;font-weight:normal!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class*=" amp-wp-admin-icon-"]:before,[class^=amp-wp-admin-icon-]:before{font-family:"amp-wp-admin-icons"!important;font-style:normal!important;font-weight:normal!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.amp-wp-admin-icon-settings:before{content:"\62"}.amp-wp-admin-icon-gears-setting-1:before{content:"\63"}.amp-wp-admin-icon-send-to-front:before{content:"\64"}.amp-wp-admin-icon-send-to-back:before{content:"\65"}.amp-wp-admin-icon-layers:before{content:"\66"}.amp-wp-admin-icon-layers-1:before{content:"\67"}.amp-wp-admin-icon-layers-2:before{content:"\6a"}.amp-wp-admin-icon-paint-brush-2:before{content:"\6f"}.amp-wp-admin-icon-area-chart:before{content:"\71"}.amp-wp-admin-icon-globe:before{content:"\73"}.amp-wp-admin-icon-bell:before{content:"\74"}.amp-wp-admin-icon-notification:before{content:"\76"}.amp-wp-admin-icon-cogs:before{content:"\77"}.amp-wp-admin-icon-cog:before{content:"\78"}.amp-wp-admin-icon-wrench:before{content:"\42"}.amp-wp-admin-icon-cog-gear:before{content:"\43"}.amp-wp-admin-icon-file:before{content:"\61"}.amp-wp-admin-icon-file-text:before{content:"\68"}.amp-wp-admin-icon-document-file-1:before{content:"\69"}.amp-wp-admin-icon-pin:before{content:"\6c"}.amp-wp-admin-icon-pin-map-2:before{content:"\6d"}.amp-wp-admin-icon-home:before{content:"\70"}.amp-wp-admin-icon-home-1:before{content:"\72"}.amp-wp-admin-icon-archive:before{content:"\75"}.amp-wp-admin-icon-search:before{content:"\7a"}.amp-wp-admin-icon-info-circle:before{content:"\6e"}.amp-wp-admin-icon-info-with-circle:before{content:"\44"}.amp-wp-admin-icon-user:before{content:"\6b"}.amp-wp-admin-icon-users:before{content:"\79"}.amp-wp-admin-icon-user-1:before{content:"\41"}.amp-wp-admin-icon-information-white:before{content:"\45"}.amp-wp-admin-icon-info:before{content:"\46"}.amp-wp-admin-icon-compose:before{content:"\47"}.amp-wp-admin-icon-calendar:before{content:"\48"}.amp-wp-admin-icon-browser:before{content:"\49"}.amp-wp-admin-icon-add:before{content:"\4a"}.amp-wp-admin-icon-calculator-2:before{content:"\4b"}.amp-wp-admin-icon-grid-alt:before{content:"\4c"}.amp-wp-admin-icon-grid:before{content:"\4d"}.amp-wp-admin-icon-globe-1:before{content:"\4e"}.amp-wp-admin-icon-home-2:before{content:"\4f"}.amp-wp-admin-icon-ipad:before{content:"\50"}.amp-wp-admin-icon-menu:before{content:"\51"}.amp-wp-admin-icon-list:before{content:"\52"}.amp-wp-admin-icon-maximize:before{content:"\53"}.amp-wp-admin-icon-windows:before{content:"\54"}.amp-wp-admin-icon-exclamation:before{content:"\55"}.amp-wp-admin-icon-comments:before{content:"\56"}.amp-wp-admin-icon-envelope:before{content:"\57"}.amp-wp-admin-icon-settings-1:before{content:"\58"}.amp-wp-admin-icon-task:before{content:"\59"}.amp-wp-admin-icon-screen:before{content:"\5a"}.amp-wp-admin-icon-attachment:before{content:"\30"}.amp-wp-admin-icon-forbid-1:before{content:"\31"}.amp-wp-admin-icon-inbox:before{content:"\32"}.amp-wp-admin-icon-hyperlink:before{content:"\33"}.amp-wp-admin-icon-newspaper:before{content:"\34"}.amp-wp-admin-icon-newspaper-alt:before{content:"\35"}.amp-wp-admin-icon-portfolio:before{content:"\36"}.amp-wp-admin-icon-heart:before{content:"\37"}.amp-wp-admin-icon-chat:before{content:"\38"}.amp-wp-admin-icon-circle-full:before{content:"\39"}.amp-wp-admin-icon-question:before{content:"\21"}.amp-wp-admin-icon-feather:before{content:"\22"}.amp-wp-admin-icon-clipboard:before{content:"\23"}.amp-wp-admin-icon-spinner:before{content:"\24"}.amp-wp-admin-icon-gallary:before{content:"\25"}.select2-container{display:inline-block;margin:0;position:relative;vertical-align:middle;font-size:14px;width:100%;max-width:300px}.select2-container .select2-selection--single{cursor:pointer;display:block;height:32px;background-color:#f9f9f9;border:1px solid #9f9f9f;border-radius:3px}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;color:#23282D;line-height:30px}.select2-container .select2-selection--single .select2-selection__clear{position:relative;cursor:pointer;float:right;font-weight:bold}.select2-container .select2-selection--single .select2-selection__placeholder{color:#9f9f9f}.select2-container .select2-selection--single .select2-selection__arrow{height:32px;position:absolute;top:1px;right:1px;width:20px}.select2-container .select2-selection--single .select2-selection__arrow b{border-color:#9f9f9f transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container .select2-selection--multiple{cursor:text;display:block;min-height:32px;background-color:#f9f9f9;border:1px solid #9f9f9f;border-radius:3px}.select2-container .select2-selection--multiple .select2-selection__rendered{padding:0 8px;display:inline-block;list-style:none;overflow:hidden;margin:0;width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container .select2-selection--multiple .select2-selection__placeholder{color:#9f9f9f;margin-top:5px;float:left}.select2-container .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container .select2-selection--multiple .select2-selection__choice{background-color:#0073AA;border:1px solid #0073AA;color:#fff;border-radius:3px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;font-size:12px;line-height:17px}.select2-container .select2-selection--multiple .select2-selection__choice__remove{color:#dddddd;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;position:relative;font-size:13px}.select2-container .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{font-size:100%;margin-top:5px;padding:0;background:transparent;border:none;outline:0;-webkit-box-shadow:none;box-shadow:none}.select2-container .select2-search--dropdown{display:block;padding:4px}.select2-container .select2-search--dropdown .select2-search__field{padding:4px;width:100%;border:1px solid #9f9f9f;border-radius:3px}.select2-container .select2-search--dropdown .select2-search__field:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#0073AA}.select2-container .select2-search--dropdown.select2-search--hide{display:none}.select2-container .select2-dropdown{background-color:#f9f9f9;border:1px solid #9f9f9f;border-radius:3px;display:block;position:absolute;left:-100000px;width:100%;z-index:1051;left:0}.select2-container .select2-dropdown.select2-dropdown--above,.select2-container .select2-dropdown.select2-dropdown--below{border-color:#0073AA}.select2-container .select2-dropdown.select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container .select2-dropdown.select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2-dropdown .select2-results{display:block}.select2-container .select2-dropdown .select2-results .select2-results__options{list-style:none;margin:0;padding:0;max-height:200px;overflow-y:auto}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option{padding:6px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-selected]{cursor:pointer}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[role=group]{padding:0}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-disabled=true]{color:#aaa}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-selected=true]{background-color:#dddddd}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__group{cursor:default;display:block;padding:6px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option{padding-left:14px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option{margin-left:-14px;padding-left:28px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-28px;padding-left:42px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-42px;padding-left:56px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-56px;padding-left:70px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-70px;padding-left:84px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option--highlighted[aria-selected]{background-color:#0073AA;color:#fff}.select2-container.select2-container--open .select2-selection--multiple,.select2-container.select2-container--open .select2-selection--single{border-color:#0073AA}.select2-container.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container.select2-container--open.select2-container--above .select2-selection--single{border-top:0 none;border-top-left-radius:0;border-top-right-radius:0}.select2-container.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container.select2-container--open.select2-container--below .select2-selection--single{border-bottom:0 none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #9f9f9f transparent;border-width:0 4px 5px 4px}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single{outline:0}.select2-container.select2-container--disabled .select2-selection--single{background-color:#eeeeee;cursor:default}.select2-container.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container.select2-container--disabled .select2-selection--multiple{background-color:#eeeeee;cursor:default}.select2-container.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container[dir=rtl] .select2-selection--multiple .select2-search--inline{float:right}.select2-container[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;text-shadow:0 0 2px #000;padding:4px 8px;border:1px solid rgba(255, 255, 255, 0.25);background-color:#191919;background-color:rgba(25, 25, 25, 0.92);background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:0 0 3px #555;-webkit-box-shadow:0 0 3px #555;-moz-box-shadow:0 0 3px #555}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow{border-top-color:#fff;border-top-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_bottom #tiptip_arrow{border-bottom-color:#fff;border-bottom-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_right #tiptip_arrow{border-right-color:#fff;border-right-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_left #tiptip_arrow{border-left-color:#fff;border-left-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#191919;border-top-color:rgba(25, 25, 25, 0.92)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#191919;border-bottom-color:rgba(25, 25, 25, 0.92)}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#191919;border-right-color:rgba(25, 25, 25, 0.92)}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#191919;border-left-color:rgba(25, 25, 25, 0.92)}@media screen and (-webkit-min-device-pixel-ratio:0){#tiptip_content{padding:4px 8px 5px 8px;background-color:rgba(45, 45, 45, 0.88)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{border-bottom-color:rgba(45, 45, 45, 0.88)}#tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:rgba(20, 20, 20, 0.92)}}.amp-wp-adb{}.amp-wp-adb h1,.amp-wp-adb h2,.amp-wp-adb h3,.amp-wp-adb h4,.amp-wp-adb h5,.amp-wp-adb h6,.amp-wp-adb p{margin-top:0;margin-bottom:10px}.amp-wp-adb h1,.amp-wp-adb h2,.amp-wp-adb h3,.amp-wp-adb h4,.amp-wp-adb h5,.amp-wp-adb h6{line-height:1.2}.amp-wp-adb p{line-height:1.3}.amp-wp-adb a{color:#0073AA;font-weight:600;-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.amp-wp-adb a:focus,.amp-wp-adb a:hover{color:#003f5e;-webkit-transition:all 0.2s ease-in;-o-transition:all 0.2s ease-in;transition:all 0.2s ease-in}.amp-wp-adb .description{margin-top:10px;font-style:normal;color:#666}.amp-wp-adb .pre{font-family:monospace}.amp-wp-adb .secondary-link{color:#e53935}.amp-wp-adb .secondary-link:focus,.amp-wp-adb .secondary-link:hover{color:#b61b17}.amp-wp-adb [class*=col-lg-],.amp-wp-adb [class*=col-md-],.amp-wp-adb [class*=col-sm-],.amp-wp-adb [class*=col-xs-]{float:left;min-height:1px;padding:0 15px}.amp-wp-adb .row{margin:0 -15px}.amp-wp-adb .container{padding:0 15px;margin:0 auto}.amp-wp-adb .col-xs-1{width:8.33%}.amp-wp-adb .col-xs-2{width:16.66%}.amp-wp-adb .col-xs-3{width:25%}.amp-wp-adb .col-xs-4{width:33.33%}.amp-wp-adb .col-xs-5{width:41.66%}.amp-wp-adb .col-xs-6{width:50%}.amp-wp-adb .col-xs-7{width:58.33%}.amp-wp-adb .col-xs-8{width:66.66%}.amp-wp-adb .col-xs-9{width:75%}.amp-wp-adb .col-xs-10{width:83.33%}.amp-wp-adb .col-xs-11{width:91.66%}.amp-wp-adb .col-xs-12{width:100%}@media (min-width:783px){.amp-wp-adb .container{max-width:740px}.amp-wp-adb .col-sm-1{width:8.33%}.amp-wp-adb .col-sm-2{width:16.66%}.amp-wp-adb .col-sm-3{width:25%}.amp-wp-adb .col-sm-4{width:33.33%}.amp-wp-adb .col-sm-5{width:41.66%}.amp-wp-adb .col-sm-6{width:50%}.amp-wp-adb .col-sm-7{width:58.33%}.amp-wp-adb .col-sm-8{width:66.66%}.amp-wp-adb .col-sm-9{width:75%}.amp-wp-adb .col-sm-10{width:83.33%}.amp-wp-adb .col-sm-11{width:91.66%}.amp-wp-adb .col-sm-12{width:100%}}@media (min-width:961px){.amp-wp-adb .container{max-width:940px}.amp-wp-adb .col-md-1{width:8.33%}.amp-wp-adb .col-md-2{width:16.66%}.amp-wp-adb .col-md-3{width:25%}.amp-wp-adb .col-md-4{width:33.33%}.amp-wp-adb .col-md-5{width:41.66%}.amp-wp-adb .col-md-6{width:50%}.amp-wp-adb .col-md-7{width:58.33%}.amp-wp-adb .col-md-8{width:66.66%}.amp-wp-adb .col-md-9{width:75%}.amp-wp-adb .col-md-10{width:83.33%}.amp-wp-adb .col-md-11{width:91.66%}.amp-wp-adb .col-md-12{width:100%}}@media (min-width:1366px){.amp-wp-adb .container{max-width:1200px}.amp-wp-adb .col-lg-1{width:8.33%}.amp-wp-adb .col-lg-2{width:16.66%}.amp-wp-adb .col-lg-3{width:25%}.amp-wp-adb .col-lg-4{width:33.33%}.amp-wp-adb .col-lg-5{width:41.66%}.amp-wp-adb .col-lg-6{width:50%}.amp-wp-adb .col-lg-7{width:58.33%}.amp-wp-adb .col-lg-8{width:66.66%}.amp-wp-adb .col-lg-9{width:75%}.amp-wp-adb .col-lg-10{width:83.33%}.amp-wp-adb .col-lg-11{width:91.66%}.amp-wp-adb .col-lg-12{width:100%}}.amp-wp-adb .amp-wp-table{margin-bottom:20px}.amp-wp-adb .amp-wp-table thead{background:#32373c}.amp-wp-adb .amp-wp-table thead th{font-weight:600;color:#eee}.amp-wp-adb .amp-wp-table tr td{border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-table tr:nth-child(2n){background:#f2f2f2}.amp-wp-adb .amp-wp-table td mark.yes,.amp-wp-adb .amp-wp-table th mark.yes{color:#7ad03a;background:transparent}.amp-wp-adb .amp-wp-table td .red,.amp-wp-adb .amp-wp-table td mark.error,.amp-wp-adb .amp-wp-table th .red,.amp-wp-adb .amp-wp-table th mark.error{background:transparent;color:#a00}.amp-wp-adb .amp-wp-table td mark.no,.amp-wp-adb .amp-wp-table th mark.no{background:transparent;color:#999}.amp-wp-adb .amp-wp-help-table td:first-child{width:180px;font-weight:600}.amp-wp-adb .amp-wp-help-table td.help{width:50px}.amp-wp-adb .amp-wp-help-table .help_tip i{font-size:18px;position:relative;top:1px}.amp-wp-adb .button,.amp-wp-adb .button-primary,.amp-wp-adb .button-secondary{text-shadow:none;-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out;font-weight:600}.amp-wp-adb .button-primary:focus,.amp-wp-adb .button-primary:hover,.amp-wp-adb .button-secondary:focus,.amp-wp-adb .button-secondary:hover,.amp-wp-adb .button:focus,.amp-wp-adb .button:hover{-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.amp-wp-adb .button-primary:active,.amp-wp-adb .button-secondary:active,.amp-wp-adb .button:active{-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out;-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);-webkit-box-shadow:inset 0 2px 5px -3px rgba(0, 0, 0, 0.5);box-shadow:inset 0 2px 5px -3px rgba(0, 0, 0, 0.5)}.amp-wp-adb .button{background:#eeeeee;border:1px solid #d5d5d5;-webkit-box-shadow:0 1px 0 #a2a2a2;box-shadow:0 1px 0 #a2a2a2}.amp-wp-adb .button:focus,.amp-wp-adb .button:hover{background:#e1e1e1;border-color:#d5d5d5;-webkit-box-shadow:0 1px 0 #d5d5d5;box-shadow:0 1px 0 #d5d5d5}.amp-wp-adb .button-primary{color:#fff;background:#0073AA;border:1px solid #005177;-webkit-box-shadow:0 1px 0 #000c11;box-shadow:0 1px 0 #000c11}.amp-wp-adb .button-primary:focus,.amp-wp-adb .button-primary:hover{background:#006291;border-color:#005177;-webkit-box-shadow:0 1px 0 #005177;box-shadow:0 1px 0 #005177}.amp-wp-adb .button-secondary{color:#fff;background:#e53935;border:1px solid #cd1e1a;-webkit-box-shadow:0 1px 0 #72110f;box-shadow:0 1px 0 #72110f}.amp-wp-adb .button-secondary:focus,.amp-wp-adb .button-secondary:hover{background:#e2231e;border-color:#cd1e1a;-webkit-box-shadow:0 1px 0 #cd1e1a;box-shadow:0 1px 0 #cd1e1a}.amp-wp-adb .amp-wp-action-buttons a{margin-right:5px}.amp-wp-adb .amp-wp-header{margin:15px 0}.amp-wp-adb .amp-wp-header:after,.amp-wp-adb .amp-wp-header:before{content:" ";display:table}.amp-wp-adb .amp-wp-header:after{clear:both}.amp-wp-adb .amp-wp-header .amp-wp-logo,.amp-wp-adb .amp-wp-header .amp-wp-title{display:block;float:left}.amp-wp-adb .amp-wp-header .amp-wp-logo{background:#fff;padding:20px 10px;min-width:50px}@media (min-width:414px){.amp-wp-adb .amp-wp-header .amp-wp-logo{padding:15px;min-width:70px}}.amp-wp-adb .amp-wp-header .amp-wp-logo img{max-width:70px;height:auto}.amp-wp-adb .amp-wp-header .amp-wp-title{vertical-align:top;padding-left:15px}.amp-wp-adb .amp-wp-header .amp-wp-title h1{margin:7px 0}.amp-wp-adb .amp-wp-header .amp-wp-title h3{margin-bottom:15px}.amp-wp-adb .amp-wp-header .amp-wp-version h4{display:inline-block;margin:0}.amp-wp-adb .amp-wp-header .amp-wp-version h4 strong{font-weight:700}.amp-wp-adb .amp-wp-htabs{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0;border:0 none;overflow:auto}.amp-wp-adb .amp-wp-htabs:after,.amp-wp-adb .amp-wp-htabs:before{content:" ";display:table}.amp-wp-adb .amp-wp-htabs:after{clear:both}.amp-wp-adb .amp-wp-htabs a{color:#555d66;font-size:13px;text-transform:uppercase;font-weight:700;width:100%;display:inline-block;margin:0;padding:10px 15px;background:#fff;border:0 none;border-right:1px solid #eeeeee;-webkit-transition:all 0.1s ease-out;-o-transition:all 0.1s ease-out;transition:all 0.1s ease-out}.amp-wp-adb .amp-wp-htabs a:last-child{border-right:0 none}.amp-wp-adb .amp-wp-htabs a>span{display:inline-block;color:#fff;width:23px;text-align:center;margin-right:7px;font-weight:800;font-size:12px}.amp-wp-adb .amp-wp-htabs a.nav-tab-active,.amp-wp-adb .amp-wp-htabs a:focus,.amp-wp-adb .amp-wp-htabs a:hover{color:#eee;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all 0.1s ease-in;-o-transition:all 0.1s ease-in;transition:all 0.1s ease-in}.amp-wp-adb .amp-wp-htabs a.welcome>span{background:#e53935}.amp-wp-adb .amp-wp-htabs a.welcome.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.welcome:focus,.amp-wp-adb .amp-wp-htabs a.welcome:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.welcome.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.welcome:focus>span,.amp-wp-adb .amp-wp-htabs a.welcome:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.settings>span{background:#20d37e}.amp-wp-adb .amp-wp-htabs a.settings.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.settings:focus,.amp-wp-adb .amp-wp-htabs a.settings:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.settings.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.settings:focus>span,.amp-wp-adb .amp-wp-htabs a.settings:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.customize>span{background:#62c5ed}.amp-wp-adb .amp-wp-htabs a.customize.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.customize:focus,.amp-wp-adb .amp-wp-htabs a.customize:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.customize.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.customize:focus>span,.amp-wp-adb .amp-wp-htabs a.customize:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.add-ons>span{background:#a151fc}.amp-wp-adb .amp-wp-htabs a.add-ons.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.add-ons:focus,.amp-wp-adb .amp-wp-htabs a.add-ons:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.add-ons.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.add-ons:focus>span,.amp-wp-adb .amp-wp-htabs a.add-ons:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.help>span{background:#416deb}.amp-wp-adb .amp-wp-htabs a.help.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.help:focus,.amp-wp-adb .amp-wp-htabs a.help:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.help.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.help:focus>span,.amp-wp-adb .amp-wp-htabs a.help:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.about>span{background:#d26948}.amp-wp-adb .amp-wp-htabs a.about.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.about:focus,.amp-wp-adb .amp-wp-htabs a.about:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.about.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.about:focus>span,.amp-wp-adb .amp-wp-htabs a.about:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.system-status>span{background:#9f9f9f}.amp-wp-adb .amp-wp-htabs a.system-status.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.system-status:focus,.amp-wp-adb .amp-wp-htabs a.system-status:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.system-status.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.system-status:focus>span,.amp-wp-adb .amp-wp-htabs a.system-status:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-vtabs{display:-webkit-box;display:-ms-flexbox;display:flex}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-sidebar{width:200px;background:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a{background:#23282D;color:#eee;font-size:14px;line-height:1.2;padding:12px;border-bottom:1px solid #333333;font-weight:400;text-decoration:none;display:block}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a i,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a span{position:relative}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a i{line-height:14px;font-size:18px;line-height:14px;margin-right:7px;top:1px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a span{top:-2px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:hover{background:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:active,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:focus{-webkit-box-shadow:none;box-shadow:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a.active{color:#fff;background:#0073AA;position:relative;border-right:0 none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a.active:after{right:-1px;border:8px solid transparent;border-right-color:transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:first-child.active:after{border-right-color:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap{width:calc(100% - 200px);border-left:0 none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header{padding:8px 15px 9px;background:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer:after,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer:before,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header:after,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header:before{content:" ";display:table}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer:after,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header:after{clear:both}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer h2,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header h2{color:#eee;font-size:16px;font-weight:600;line-height:26px;margin:0 15px 0 0;text-transform:uppercase;letter-spacing:0.2px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-title,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-title{float:left}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar{float:right}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar a,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar button,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar input,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar a,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar button,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar input{margin-left:5px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header{border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer{border-top:1px solid #e4e4e4;border-left:1px solid #444}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-body{padding:20px;background:#fff;min-height:40vh}@media (max-width:960px){.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-sidebar{width:46px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a span{display:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap{width:calc(100% - 46px)}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-body{min-height:auto}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar{display:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-title{display:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar{float:left}}@-webkit-keyframes dash{0%{stroke-dashoffset:1000}to{stroke-dashoffset:0}}@keyframes dash{0%{stroke-dashoffset:1000}to{stroke-dashoffset:0}}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes rotate{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes wave{0%{-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{-webkit-transform:translateY(10%);transform:translateY(10%)}}@keyframes wave{0%{-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{-webkit-transform:translateY(10%);transform:translateY(10%)}}.amp-wp-adb .amp-wp-rating-box{background:url("../images/rating-box/red-bg.jpg") left top no-repeat #e53935;background-size:cover;border:0 none;margin:20px 0;padding:0;overflow:hidden}@media (-webkit-min-device-pixl-ratio:2){.amp-wp-adb .amp-wp-rating-box{background-image:url("../images/rating-box/red-bg-2x.jpg")}}.amp-wp-adb .amp-wp-rating-box a{text-decoration:none;line-height:1;position:relative;display:block}.amp-wp-adb .amp-wp-rating-box a .after-img,.amp-wp-adb .amp-wp-rating-box a .before-img{position:absolute;bottom:-1px}.amp-wp-adb .amp-wp-rating-box a .after-img img,.amp-wp-adb .amp-wp-rating-box a .after-img svg,.amp-wp-adb .amp-wp-rating-box a .before-img img,.amp-wp-adb .amp-wp-rating-box a .before-img svg{max-height:70px;width:auto}.amp-wp-adb .amp-wp-rating-box a .before-img{left:10px;bottom:-10px}.amp-wp-adb .amp-wp-rating-box a .before-img svg{-webkit-animation:wave 1s cubic-bezier(0.45, 0.05, 0.55, 0.95) alternate infinite;animation:wave 1s cubic-bezier(0.45, 0.05, 0.55, 0.95) alternate infinite}.amp-wp-adb .amp-wp-rating-box a .before-img svg .st0{fill:#FFFFFF}.amp-wp-adb .amp-wp-rating-box a .before-img svg .st1{fill:none;stroke:#FFFFFF;stroke-width:5.5507;stroke-miterlimit:10}.amp-wp-adb .amp-wp-rating-box a .after-img{right:-38px;bottom:-4px}@media (max-width:782px){.amp-wp-adb .amp-wp-rating-box a .after-img{display:none}}.amp-wp-adb .amp-wp-rating-box a .after-img svg path{fill:none;stroke-linecap:round;stroke-miterlimit:10;stroke-width:2px;stroke:#fff;stroke-dasharray:1000;stroke-dashoffset:1000;-webkit-animation:dash 3s cubic-bezier(0.46, 0.03, 0.52, 0.96) alternate infinite;animation:dash 3s cubic-bezier(0.46, 0.03, 0.52, 0.96) alternate infinite}.amp-wp-adb .amp-wp-rating-box a .inner-content{padding:15px 0 15px 100px}@media (min-width:783px){.amp-wp-adb .amp-wp-rating-box a .inner-content{padding-right:120px}}.amp-wp-adb .amp-wp-rating-box a .inner-content h3,.amp-wp-adb .amp-wp-rating-box a .inner-content p{color:#fff;margin:0}.amp-wp-adb .amp-wp-rating-box a .inner-content h3{line-height:1;font-size:20px;font-weight:600;text-transform:uppercase;margin-bottom:5px}.amp-wp-adb .amp-wp-rating-box a .inner-content p{font-size:14px}.amp-wp-adb .amp-wp-rating-box a:active,.amp-wp-adb .amp-wp-rating-box a:focus,.amp-wp-adb .amp-wp-rating-box a:hover{border:0 none;-webkit-box-shadow:none;box-shadow:none}.amp-wp-adb .amp-wp-rating-box .notice-dismiss{height:100%;color:#fff;padding:15px;font-size:22px}.amp-wp-adb .amp-wp-rating-box .notice-dismiss:before{color:#fff;font-size:24px}.amp-wp-adb .amp-wp-star-rating{display:inline-block;color:#ffb900;position:relative;top:3px}.amp-wp-adb .amp-wp-star-rating svg{fill:#ffb900}.amp-wp-adb .amp-wp-star-rating svg:hover{fill:#ffb900}.amp-wp-adb .amp-wp-star-rating svg:hover~svg{fill:none}.amp-wp-adb .amp-wp-content-wrap{background:#fff}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-body{padding:15px}.amp-wp-adb .amp-wp-content-wrap p{margin-bottom:20px}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header{background:#32373c;padding:8px 15px 9px}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer:after,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer:before,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header:after,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header:before{content:" ";display:table}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer:after,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header:after{clear:both}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer h2,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer h3,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header h2,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header h3{color:#eee;font-size:16px;font-weight:700;line-height:26px;text-transform:uppercase;letter-spacing:0.2px;margin:0}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-title,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-title{float:left}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar{float:right}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar a,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar button,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar input,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar a,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar button,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar input{margin-left:5px}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header{border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer{border-top:1px solid #e4e4e4;border-left:1px solid #444}@media (max-width:960px){.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar{display:none}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-title{display:none}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar{float:left}}.amp-wp-adb #debug-report{display:none}.amp-wp-adb #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.amp-wp-adb .amp-wp-box{padding:20px 25px 25px 25px;margin:10px;border:0 none;background:#f2f2f2;width:100%}.amp-wp-adb .amp-wp-box h2,.amp-wp-adb .amp-wp-box h3{color:#555d66;text-transform:uppercase;font-size:16px;font-weight:600;line-height:1.4}.amp-wp-adb .amp-wp-box p{font-size:13px;margin-bottom:20px;line-height:1.5}.amp-wp-adb .amp-wp-box.alert-box{margin:0 0 20px 0;background:#fff;border-left:5px solid #2885bb}.amp-wp-adb .amp-wp-box.alert-box h3{text-transform:uppercase}.amp-wp-adb .amp-wp-box.alert-box p{margin:0}.amp-wp-adb .amp-wp-boxes{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-line-pack:stretch;align-content:stretch;margin:-10px}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-2-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-3-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:1200px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-3-col .amp-wp-box{width:calc(33.33% - 20px)}}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-4-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:783px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-4-col .amp-wp-box{width:calc(33.33% - 20px)}}@media (min-width:1200px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-4-col .amp-wp-box{width:calc(25% - 20px)}}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:783px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(33.33% - 20px)}}@media (min-width:1200px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(25% - 20px)}}@media (min-width:1400px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(20% - 20px)}}@media (min-width:1600px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(16.66% - 20px)}}.amp-wp-adb .amp-wp-boxes img{max-width:100%}.amp-wp-adb .amp-wp-box-num-icon img{max-height:49px;width:auto;margin-bottom:15px}@media (max-width:782px){.amp-wp-adb .amp-wp-box-num-icon h2{color:#555d66;font-size:13px;text-transform:uppercase;font-weight:700;line-height:1.5}}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title{margin-bottom:10px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title,.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-num{display:block;float:left}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-num{font-size:50px;line-height:44px;font-weight:600;display:inline-block;opacity:0.15;width:25px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title{width:calc(100% - 45px);margin-left:20px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title img{margin-bottom:10px}@media (min-width:1200px){.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-num{font-size:90px;font-weight:400;line-height:1;width:30px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title{width:calc(100% - 60px);margin-left:30px}}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num,.amp-wp-adb .amp-wp-box-num-icon span{font-size:100px;line-height:18px;height:20px;width:18px;font-weight:200;display:inline-block}.amp-wp-adb .amp-wp-box-w-icon h3,.amp-wp-adb .amp-wp-box-w-icon p{margin-bottom:0}.amp-wp-adb .amp-wp-box-w-icon .amp-wp-box-icon{border-bottom:1px solid #e4e4e4;padding-bottom:10px;margin-bottom:15px}.amp-wp-adb .amp-wp-box-w-icon .amp-wp-box-icon img{max-width:40px;margin-bottom:5px}.amp-wp-adb .amp-wp-box-w-img{padding:0;border-radius:3px}.amp-wp-adb .amp-wp-box-w-img img{border-top:1px solid #e4e4e4;border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-header{padding:15px 20px}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-header h2,.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-header h3{margin:0}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-body{padding:13px 20px 20px}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-body p{font-size:14px;margin:0}.amp-wp-adb .amp-wp-box-w-img.gray-scale img{-webkit-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.amp-wp-adb .amp-wp-box-w-img.gray-scale:hover img{-webkit-filter:none;filter:none;-webkit-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.amp-wp-adb .amp-wp-intro-box{padding:35px 30px 40px 30px}.amp-wp-adb .amp-wp-intro-box h2{font-size:20px}.amp-wp-adb .amp-wp-intro-box p{font-size:16px;margin:0}.amp-wp-adb .amp-wp-team .amp-wp-team-member{color:#555d66;display:inline-block;background:#f9f9f9;text-decoration:none;vertical-align:top;margin-right:15px;margin-bottom:15px;border-radius:3px;overflow:hidden}.amp-wp-adb .amp-wp-team .amp-wp-team-member:hover{background:#e53935;color:#fff}.amp-wp-adb .amp-wp-team .amp-wp-team-member .amp-wp-member-info,.amp-wp-adb .amp-wp-team .amp-wp-team-member img{display:inline-block;vertical-align:middle}.amp-wp-adb .amp-wp-team .amp-wp-team-member .amp-wp-member-info{padding:10px 15px 15px 10px}.amp-wp-adb .amp-wp-team .amp-wp-team-member h4,.amp-wp-adb .amp-wp-team .amp-wp-team-member p{line-height:1;margin:0}.amp-wp-adb .amp-wp-team .amp-wp-team-member h4{font-size:16px;margin-bottom:8px}.amp-wp-adb .amp-wp-form-section-title{margin:0;padding:10px;border:1px solid #eeeeee;background:#f2f2f2;border-radius:3px;text-transform:uppercase;font-size:14px;font-weight:700;color:#555d66}.amp-wp-adb .amp-wp-form-table{margin:0 0 40px}.amp-wp-adb .amp-wp-form-table:last-child{margin:0}.amp-wp-adb .amp-wp-form-table tr{border-top:1px solid #eeeeee}.amp-wp-adb .amp-wp-form-table th{padding:10px 10px 5px;line-height:22px}.amp-wp-adb .amp-wp-form-table td{padding:0 10px 15px}.amp-wp-adb .amp-wp-form-table .amp-wp-form-field-desc{margin-top:20px}.amp-wp-adb .amp-wp-form-table .amp-wp-form-field-desc p{margin-bottom:15px}.amp-wp-adb .amp-wp-form-table .amp-wp-form-field-desc p:last-child{margin:0}@media (min-width:783px){.amp-wp-adb .amp-wp-form-table td,.amp-wp-adb .amp-wp-form-table th{padding:20px 10px}.amp-wp-adb .amp-wp-form-table th{width:240px}}.amp-wp-adb .amp-wp-form-table{}.amp-wp-adb .amp-wp-form-table input[type=number],.amp-wp-adb .amp-wp-form-table input[type=text],.amp-wp-adb .amp-wp-form-table textarea{font-size:14px;line-height:1;padding:9px;border:1px solid #9f9f9f;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;width:100%;max-width:300px;background:#f9f9f9;position:relative;min-height:32px}.amp-wp-adb .amp-wp-form-table input[type=number]::-webkit-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::-webkit-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea::-webkit-input-placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea:-ms-input-placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea::-ms-input-placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]::placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::placeholder,.amp-wp-adb .amp-wp-form-table textarea::placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea:-ms-input-placeholder{color:#9f9f9f}.amp-wp-adb .amp-wp-form-table input[type=number]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea::-ms-input-placeholder{color:#9f9f9f}.amp-wp-adb .amp-wp-form-table input[type=number]:active,.amp-wp-adb .amp-wp-form-table input[type=number]:focus,.amp-wp-adb .amp-wp-form-table input[type=text]:active,.amp-wp-adb .amp-wp-form-table input[type=text]:focus,.amp-wp-adb .amp-wp-form-table textarea:active,.amp-wp-adb .amp-wp-form-table textarea:focus{border-color:#0073AA}.amp-wp-adb .amp-wp-form-table textarea{max-width:100%}.amp-wp-adb .amp-wp-form-table .switch{display:inline-block;position:relative;top:1px;font-size:16px;line-height:24px}.amp-wp-adb .amp-wp-form-table .switch input{position:absolute;top:0;left:0;width:36px;height:30px;opacity:0;z-index:0}.amp-wp-adb .amp-wp-form-table .switch label{display:block;padding:0 0 0 44px;cursor:pointer}.amp-wp-adb .amp-wp-form-table .switch label:before{content:'';position:absolute;top:7px;left:0;width:36px;height:14px;background-color:rgba(159, 159, 159, 0.8);border-radius:14px;z-index:1;-webkit-transition:background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);transition:background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1)}.amp-wp-adb .amp-wp-form-table .switch label:after{content:'';position:absolute;top:4px;left:0;width:20px;height:20px;background-color:#fff;border-radius:14px;-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);z-index:2;-webkit-transition:all 0.28s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all 0.28s cubic-bezier(0.4, 0, 0.2, 1);transition:all 0.28s cubic-bezier(0.4, 0, 0.2, 1);-webkit-transition-property:left, background-color;-o-transition-property:left, background-color;transition-property:left, background-color}.amp-wp-adb .amp-wp-form-table .switch input:checked+label:after{left:16px}.amp-wp-adb .amp-wp-form-table .switch input:checked+label:before{background-color:rgba(0, 115, 170, 0.6)}.amp-wp-adb .amp-wp-form-table .switch input:checked+label:after{background-color:#0073AA}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field{max-height:0;margin-bottom:10px;overflow:hidden;-webkit-transition:max-height 0.2s ease-out;-o-transition:max-height 0.2s ease-out;transition:max-height 0.2s ease-out}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field label{font-weight:600;display:block;margin-top:20px;margin-bottom:7px}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field input{margin-bottom:10px}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field .amp-wp-form-field-desc{margin-top:0}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field .amp-wp-field-error-msg{margin-top:10px;color:#ef5228;font-weight:600}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field .switch label{margin:0 0 3px}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field.active .amp-wp-child-field{max-height:1000px;-webkit-transition:max-height 0.2s ease-in;-o-transition:max-height 0.2s ease-in;transition:max-height 0.2s ease-in}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field.error-field .amp-wp-child-field label{color:#ef5228}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field.error-field .amp-wp-child-field input{border-color:#ef5228}#toplevel_page_amp-wp-welcome .wp-menu-image img{padding:1px 0 0 0}.toplevel_page_amp-wp-translation .wp-menu-image img{width:12px;padding-top:7px!important}#adminmenu .toplevel_page_amp-wp-translation{margin-top:10px;margin-bottom:10px}.amp-wp-adb{padding-right:10px}.amp-wp-adb .mt-10{margin-top:10px}.amp-wp-adb .mt-20{margin-top:20px}.amp-wp-adb .mt-30{margin-top:30px}.amp-wp-adb .mb-10{margin-bottom:10px}.amp-wp-adb .mb-20{margin-bottom:20px}.amp-wp-adb .mb-30{margin-bottom:30px}.amp-wp-adb hr.amp-wp-section-sep{margin:20px 0}@media (min-width:783px){.amp-wp-adb{padding-right:20px}}.wrap .notice.amp-wp-notice{margin:15px 0}
     1.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option,.select2-container .select2-selection--multiple,.select2-container .select2-selection--single{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title:after,.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title:before,.amp-wp-adb .amp-wp-box-w-icon:after,.amp-wp-adb .amp-wp-box-w-icon:before,.amp-wp-adb .row:after,.amp-wp-adb .row:before{content:" ";display:table}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title:after,.amp-wp-adb .amp-wp-box-w-icon:after,.amp-wp-adb .row:after{clear:both}.amp-wp-adb .amp-wp-content-wrap,.amp-wp-adb .amp-wp-header .amp-wp-logo,.amp-wp-adb .amp-wp-htabs,.amp-wp-adb .amp-wp-table,.amp-wp-adb .amp-wp-vtabs{-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.amp-wp-adb .amp-wp-box,.amp-wp-adb .amp-wp-box-w-img,.amp-wp-adb .amp-wp-team .amp-wp-team-member{-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.3);box-shadow:0 1px 3px rgba(0, 0, 0, 0.3)}.amp-wp-adb .amp-wp-box,.amp-wp-adb .amp-wp-content-wrap,.amp-wp-adb .amp-wp-htabs,.amp-wp-adb .amp-wp-table,.amp-wp-adb .amp-wp-team .amp-wp-team-member,.amp-wp-adb .amp-wp-vtabs,.select2-container{-webkit-box-sizing:border-box;box-sizing:border-box}.amp-wp-adb .amp-wp-box *,.amp-wp-adb .amp-wp-box :after,.amp-wp-adb .amp-wp-box :before,.amp-wp-adb .amp-wp-box+.tgl-btn,.amp-wp-adb .amp-wp-box:after,.amp-wp-adb .amp-wp-box:before,.amp-wp-adb .amp-wp-content-wrap *,.amp-wp-adb .amp-wp-content-wrap :after,.amp-wp-adb .amp-wp-content-wrap :before,.amp-wp-adb .amp-wp-content-wrap+.tgl-btn,.amp-wp-adb .amp-wp-content-wrap:after,.amp-wp-adb .amp-wp-content-wrap:before,.amp-wp-adb .amp-wp-htabs *,.amp-wp-adb .amp-wp-htabs :after,.amp-wp-adb .amp-wp-htabs :before,.amp-wp-adb .amp-wp-htabs+.tgl-btn,.amp-wp-adb .amp-wp-htabs:after,.amp-wp-adb .amp-wp-htabs:before,.amp-wp-adb .amp-wp-table *,.amp-wp-adb .amp-wp-table :after,.amp-wp-adb .amp-wp-table :before,.amp-wp-adb .amp-wp-table+.tgl-btn,.amp-wp-adb .amp-wp-table:after,.amp-wp-adb .amp-wp-table:before,.amp-wp-adb .amp-wp-team .amp-wp-team-member *,.amp-wp-adb .amp-wp-team .amp-wp-team-member :after,.amp-wp-adb .amp-wp-team .amp-wp-team-member :before,.amp-wp-adb .amp-wp-team .amp-wp-team-member+.tgl-btn,.amp-wp-adb .amp-wp-team .amp-wp-team-member:after,.amp-wp-adb .amp-wp-team .amp-wp-team-member:before,.amp-wp-adb .amp-wp-vtabs *,.amp-wp-adb .amp-wp-vtabs :after,.amp-wp-adb .amp-wp-vtabs :before,.amp-wp-adb .amp-wp-vtabs+.tgl-btn,.amp-wp-adb .amp-wp-vtabs:after,.amp-wp-adb .amp-wp-vtabs:before,.select2-container *,.select2-container :after,.select2-container :before,.select2-container+.tgl-btn,.select2-container:after,.select2-container:before{-webkit-box-sizing:border-box;box-sizing:border-box}@font-face{font-family:"amp-wp-admin-icons";src:url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.eot");src:url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.eot?#iefix") format("embedded-opentype"), url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.woff") format("woff"), url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.ttf") format("truetype"), url("../fonts/amp-wp-admin-icons/amp-wp-admin-icons.svg#amp-wp-admin-icons") format("svg");font-weight:normal;font-style:normal}[data-icon]:before{font-family:"amp-wp-admin-icons"!important;content:attr(data-icon);font-style:normal!important;font-weight:normal!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class*=" amp-wp-admin-icon-"]:before,[class^=amp-wp-admin-icon-]:before{font-family:"amp-wp-admin-icons"!important;font-style:normal!important;font-weight:normal!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.amp-wp-admin-icon-settings:before{content:"\62"}.amp-wp-admin-icon-gears-setting-1:before{content:"\63"}.amp-wp-admin-icon-send-to-front:before{content:"\64"}.amp-wp-admin-icon-send-to-back:before{content:"\65"}.amp-wp-admin-icon-layers:before{content:"\66"}.amp-wp-admin-icon-layers-1:before{content:"\67"}.amp-wp-admin-icon-layers-2:before{content:"\6a"}.amp-wp-admin-icon-paint-brush-2:before{content:"\6f"}.amp-wp-admin-icon-area-chart:before{content:"\71"}.amp-wp-admin-icon-globe:before{content:"\73"}.amp-wp-admin-icon-bell:before{content:"\74"}.amp-wp-admin-icon-notification:before{content:"\76"}.amp-wp-admin-icon-cogs:before{content:"\77"}.amp-wp-admin-icon-cog:before{content:"\78"}.amp-wp-admin-icon-wrench:before{content:"\42"}.amp-wp-admin-icon-cog-gear:before{content:"\43"}.amp-wp-admin-icon-file:before{content:"\61"}.amp-wp-admin-icon-file-text:before{content:"\68"}.amp-wp-admin-icon-document-file-1:before{content:"\69"}.amp-wp-admin-icon-pin:before{content:"\6c"}.amp-wp-admin-icon-pin-map-2:before{content:"\6d"}.amp-wp-admin-icon-home:before{content:"\70"}.amp-wp-admin-icon-home-1:before{content:"\72"}.amp-wp-admin-icon-archive:before{content:"\75"}.amp-wp-admin-icon-search:before{content:"\7a"}.amp-wp-admin-icon-info-circle:before{content:"\6e"}.amp-wp-admin-icon-info-with-circle:before{content:"\44"}.amp-wp-admin-icon-user:before{content:"\6b"}.amp-wp-admin-icon-users:before{content:"\79"}.amp-wp-admin-icon-user-1:before{content:"\41"}.amp-wp-admin-icon-information-white:before{content:"\45"}.amp-wp-admin-icon-info:before{content:"\46"}.amp-wp-admin-icon-compose:before{content:"\47"}.amp-wp-admin-icon-calendar:before{content:"\48"}.amp-wp-admin-icon-browser:before{content:"\49"}.amp-wp-admin-icon-add:before{content:"\4a"}.amp-wp-admin-icon-calculator-2:before{content:"\4b"}.amp-wp-admin-icon-grid-alt:before{content:"\4c"}.amp-wp-admin-icon-grid:before{content:"\4d"}.amp-wp-admin-icon-globe-1:before{content:"\4e"}.amp-wp-admin-icon-home-2:before{content:"\4f"}.amp-wp-admin-icon-ipad:before{content:"\50"}.amp-wp-admin-icon-menu:before{content:"\51"}.amp-wp-admin-icon-list:before{content:"\52"}.amp-wp-admin-icon-maximize:before{content:"\53"}.amp-wp-admin-icon-windows:before{content:"\54"}.amp-wp-admin-icon-exclamation:before{content:"\55"}.amp-wp-admin-icon-comments:before{content:"\56"}.amp-wp-admin-icon-envelope:before{content:"\57"}.amp-wp-admin-icon-settings-1:before{content:"\58"}.amp-wp-admin-icon-task:before{content:"\59"}.amp-wp-admin-icon-screen:before{content:"\5a"}.amp-wp-admin-icon-attachment:before{content:"\30"}.amp-wp-admin-icon-forbid-1:before{content:"\31"}.amp-wp-admin-icon-inbox:before{content:"\32"}.amp-wp-admin-icon-hyperlink:before{content:"\33"}.amp-wp-admin-icon-newspaper:before{content:"\34"}.amp-wp-admin-icon-newspaper-alt:before{content:"\35"}.amp-wp-admin-icon-portfolio:before{content:"\36"}.amp-wp-admin-icon-heart:before{content:"\37"}.amp-wp-admin-icon-chat:before{content:"\38"}.amp-wp-admin-icon-circle-full:before{content:"\39"}.amp-wp-admin-icon-question:before{content:"\21"}.amp-wp-admin-icon-feather:before{content:"\22"}.amp-wp-admin-icon-clipboard:before{content:"\23"}.amp-wp-admin-icon-spinner:before{content:"\24"}.amp-wp-admin-icon-gallary:before{content:"\25"}.select2-container{display:inline-block;margin:0;position:relative;vertical-align:middle;font-size:14px;width:100%;max-width:300px}.select2-container .select2-selection--single{cursor:pointer;display:block;height:32px;background-color:#f9f9f9;border:1px solid #9f9f9f;border-radius:3px}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;color:#23282D;line-height:30px}.select2-container .select2-selection--single .select2-selection__clear{position:relative;cursor:pointer;float:right;font-weight:bold}.select2-container .select2-selection--single .select2-selection__placeholder{color:#9f9f9f}.select2-container .select2-selection--single .select2-selection__arrow{height:32px;position:absolute;top:1px;right:1px;width:20px}.select2-container .select2-selection--single .select2-selection__arrow b{border-color:#9f9f9f transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container .select2-selection--multiple{cursor:text;display:block;min-height:32px;background-color:#f9f9f9;border:1px solid #9f9f9f;border-radius:3px}.select2-container .select2-selection--multiple .select2-selection__rendered{padding:0 8px;display:inline-block;list-style:none;overflow:hidden;margin:0;width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container .select2-selection--multiple .select2-selection__placeholder{color:#9f9f9f;margin-top:5px;float:left}.select2-container .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container .select2-selection--multiple .select2-selection__choice{background-color:#0073AA;border:1px solid #0073AA;color:#fff;border-radius:3px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;font-size:12px;line-height:17px}.select2-container .select2-selection--multiple .select2-selection__choice__remove{color:#dddddd;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;position:relative;font-size:13px}.select2-container .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{font-size:100%;margin-top:5px;padding:0;background:transparent;border:none;outline:0;-webkit-box-shadow:none;box-shadow:none}.select2-container .select2-search--dropdown{display:block;padding:4px}.select2-container .select2-search--dropdown .select2-search__field{padding:4px;width:100%;border:1px solid #9f9f9f;border-radius:3px}.select2-container .select2-search--dropdown .select2-search__field:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#0073AA}.select2-container .select2-search--dropdown.select2-search--hide{display:none}.select2-container .select2-dropdown{background-color:#f9f9f9;border:1px solid #9f9f9f;border-radius:3px;display:block;position:absolute;left:-100000px;width:100%;z-index:1051;left:0}.select2-container .select2-dropdown.select2-dropdown--above,.select2-container .select2-dropdown.select2-dropdown--below{border-color:#0073AA}.select2-container .select2-dropdown.select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container .select2-dropdown.select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2-dropdown .select2-results{display:block}.select2-container .select2-dropdown .select2-results .select2-results__options{list-style:none;margin:0;padding:0;max-height:200px;overflow-y:auto}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option{padding:6px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-selected]{cursor:pointer}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[role=group]{padding:0}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-disabled=true]{color:#aaa}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option[aria-selected=true]{background-color:#dddddd}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__group{cursor:default;display:block;padding:6px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option{padding-left:14px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option{margin-left:-14px;padding-left:28px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-28px;padding-left:42px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-42px;padding-left:56px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-56px;padding-left:70px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-70px;padding-left:84px}.select2-container .select2-dropdown .select2-results .select2-results__options .select2-results__option--highlighted[aria-selected]{background-color:#0073AA;color:#fff}.select2-container.select2-container--open .select2-selection--multiple,.select2-container.select2-container--open .select2-selection--single{border-color:#0073AA}.select2-container.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container.select2-container--open.select2-container--above .select2-selection--single{border-top:0 none;border-top-left-radius:0;border-top-right-radius:0}.select2-container.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container.select2-container--open.select2-container--below .select2-selection--single{border-bottom:0 none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #9f9f9f transparent;border-width:0 4px 5px 4px}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single{outline:0}.select2-container.select2-container--disabled .select2-selection--single{background-color:#eeeeee;cursor:default}.select2-container.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container.select2-container--disabled .select2-selection--multiple{background-color:#eeeeee;cursor:default}.select2-container.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container[dir=rtl] .select2-selection--multiple .select2-search--inline{float:right}.select2-container[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;text-shadow:0 0 2px #000;padding:4px 8px;border:1px solid rgba(255, 255, 255, 0.25);background-color:#191919;background-color:rgba(25, 25, 25, 0.92);background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:0 0 3px #555;-webkit-box-shadow:0 0 3px #555;-moz-box-shadow:0 0 3px #555}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow{border-top-color:#fff;border-top-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_bottom #tiptip_arrow{border-bottom-color:#fff;border-bottom-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_right #tiptip_arrow{border-right-color:#fff;border-right-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_left #tiptip_arrow{border-left-color:#fff;border-left-color:rgba(255, 255, 255, 0.35)}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#191919;border-top-color:rgba(25, 25, 25, 0.92)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#191919;border-bottom-color:rgba(25, 25, 25, 0.92)}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#191919;border-right-color:rgba(25, 25, 25, 0.92)}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#191919;border-left-color:rgba(25, 25, 25, 0.92)}@media screen and (-webkit-min-device-pixel-ratio:0){#tiptip_content{padding:4px 8px 5px 8px;background-color:rgba(45, 45, 45, 0.88)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{border-bottom-color:rgba(45, 45, 45, 0.88)}#tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:rgba(20, 20, 20, 0.92)}}.amp-wp-adb{}.amp-wp-adb h1,.amp-wp-adb h2,.amp-wp-adb h3,.amp-wp-adb h4,.amp-wp-adb h5,.amp-wp-adb h6,.amp-wp-adb p{margin-top:0;margin-bottom:10px}.amp-wp-adb h1,.amp-wp-adb h2,.amp-wp-adb h3,.amp-wp-adb h4,.amp-wp-adb h5,.amp-wp-adb h6{line-height:1.2}.amp-wp-adb p{line-height:1.3}.amp-wp-adb a{color:#0073AA;font-weight:600;-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.amp-wp-adb a:focus,.amp-wp-adb a:hover{color:#003f5e;-webkit-transition:all 0.2s ease-in;-o-transition:all 0.2s ease-in;transition:all 0.2s ease-in}.amp-wp-adb .description{margin-top:10px;font-style:normal;color:#666}.amp-wp-adb .pre{font-family:monospace}.amp-wp-adb .secondary-link{color:#e53935}.amp-wp-adb .secondary-link:focus,.amp-wp-adb .secondary-link:hover{color:#b61b17}.amp-wp-adb [class*=col-lg-],.amp-wp-adb [class*=col-md-],.amp-wp-adb [class*=col-sm-],.amp-wp-adb [class*=col-xs-]{float:left;min-height:1px;padding:0 15px}.amp-wp-adb .row{margin:0 -15px}.amp-wp-adb .container{padding:0 15px;margin:0 auto}.amp-wp-adb .col-xs-1{width:8.33%}.amp-wp-adb .col-xs-2{width:16.66%}.amp-wp-adb .col-xs-3{width:25%}.amp-wp-adb .col-xs-4{width:33.33%}.amp-wp-adb .col-xs-5{width:41.66%}.amp-wp-adb .col-xs-6{width:50%}.amp-wp-adb .col-xs-7{width:58.33%}.amp-wp-adb .col-xs-8{width:66.66%}.amp-wp-adb .col-xs-9{width:75%}.amp-wp-adb .col-xs-10{width:83.33%}.amp-wp-adb .col-xs-11{width:91.66%}.amp-wp-adb .col-xs-12{width:100%}@media (min-width:783px){.amp-wp-adb .container{max-width:740px}.amp-wp-adb .col-sm-1{width:8.33%}.amp-wp-adb .col-sm-2{width:16.66%}.amp-wp-adb .col-sm-3{width:25%}.amp-wp-adb .col-sm-4{width:33.33%}.amp-wp-adb .col-sm-5{width:41.66%}.amp-wp-adb .col-sm-6{width:50%}.amp-wp-adb .col-sm-7{width:58.33%}.amp-wp-adb .col-sm-8{width:66.66%}.amp-wp-adb .col-sm-9{width:75%}.amp-wp-adb .col-sm-10{width:83.33%}.amp-wp-adb .col-sm-11{width:91.66%}.amp-wp-adb .col-sm-12{width:100%}}@media (min-width:961px){.amp-wp-adb .container{max-width:940px}.amp-wp-adb .col-md-1{width:8.33%}.amp-wp-adb .col-md-2{width:16.66%}.amp-wp-adb .col-md-3{width:25%}.amp-wp-adb .col-md-4{width:33.33%}.amp-wp-adb .col-md-5{width:41.66%}.amp-wp-adb .col-md-6{width:50%}.amp-wp-adb .col-md-7{width:58.33%}.amp-wp-adb .col-md-8{width:66.66%}.amp-wp-adb .col-md-9{width:75%}.amp-wp-adb .col-md-10{width:83.33%}.amp-wp-adb .col-md-11{width:91.66%}.amp-wp-adb .col-md-12{width:100%}}@media (min-width:1366px){.amp-wp-adb .container{max-width:1200px}.amp-wp-adb .col-lg-1{width:8.33%}.amp-wp-adb .col-lg-2{width:16.66%}.amp-wp-adb .col-lg-3{width:25%}.amp-wp-adb .col-lg-4{width:33.33%}.amp-wp-adb .col-lg-5{width:41.66%}.amp-wp-adb .col-lg-6{width:50%}.amp-wp-adb .col-lg-7{width:58.33%}.amp-wp-adb .col-lg-8{width:66.66%}.amp-wp-adb .col-lg-9{width:75%}.amp-wp-adb .col-lg-10{width:83.33%}.amp-wp-adb .col-lg-11{width:91.66%}.amp-wp-adb .col-lg-12{width:100%}}.amp-wp-adb .amp-wp-table{margin-bottom:20px}.amp-wp-adb .amp-wp-table thead{background:#32373c}.amp-wp-adb .amp-wp-table thead th{font-weight:600;color:#eee}.amp-wp-adb .amp-wp-table tr td{border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-table tr:nth-child(2n){background:#f2f2f2}.amp-wp-adb .amp-wp-table td mark.yes,.amp-wp-adb .amp-wp-table th mark.yes{color:#7ad03a;background:transparent}.amp-wp-adb .amp-wp-table td .red,.amp-wp-adb .amp-wp-table td mark.error,.amp-wp-adb .amp-wp-table th .red,.amp-wp-adb .amp-wp-table th mark.error{background:transparent;color:#a00}.amp-wp-adb .amp-wp-table td mark.no,.amp-wp-adb .amp-wp-table th mark.no{background:transparent;color:#999}.amp-wp-adb .amp-wp-help-table td:first-child{width:180px;font-weight:600}.amp-wp-adb .amp-wp-help-table td.help{width:50px}.amp-wp-adb .amp-wp-help-table .help_tip i{font-size:18px;position:relative;top:1px}.amp-wp-adb .button,.amp-wp-adb .button-primary,.amp-wp-adb .button-secondary{text-shadow:none;-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out;font-weight:600}.amp-wp-adb .button-primary:focus,.amp-wp-adb .button-primary:hover,.amp-wp-adb .button-secondary:focus,.amp-wp-adb .button-secondary:hover,.amp-wp-adb .button:focus,.amp-wp-adb .button:hover{-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.amp-wp-adb .button-primary:active,.amp-wp-adb .button-secondary:active,.amp-wp-adb .button:active{-webkit-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;transition:all 0.2s ease-out;-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);-webkit-box-shadow:inset 0 2px 5px -3px rgba(0, 0, 0, 0.5);box-shadow:inset 0 2px 5px -3px rgba(0, 0, 0, 0.5)}.amp-wp-adb .button{background:#eeeeee;border:1px solid #d5d5d5;-webkit-box-shadow:0 1px 0 #a2a2a2;box-shadow:0 1px 0 #a2a2a2}.amp-wp-adb .button:focus,.amp-wp-adb .button:hover{background:#e1e1e1;border-color:#d5d5d5;-webkit-box-shadow:0 1px 0 #d5d5d5;box-shadow:0 1px 0 #d5d5d5}.amp-wp-adb .button-primary{color:#fff;background:#0073AA;border:1px solid #005177;-webkit-box-shadow:0 1px 0 #000c11;box-shadow:0 1px 0 #000c11}.amp-wp-adb .button-primary:focus,.amp-wp-adb .button-primary:hover{background:#006291;border-color:#005177;-webkit-box-shadow:0 1px 0 #005177;box-shadow:0 1px 0 #005177}.amp-wp-adb .button-secondary{color:#fff;background:#e53935;border:1px solid #cd1e1a;-webkit-box-shadow:0 1px 0 #72110f;box-shadow:0 1px 0 #72110f}.amp-wp-adb .button-secondary:focus,.amp-wp-adb .button-secondary:hover{background:#e2231e;border-color:#cd1e1a;-webkit-box-shadow:0 1px 0 #cd1e1a;box-shadow:0 1px 0 #cd1e1a}.amp-wp-adb .amp-wp-action-buttons a{margin-right:5px}.amp-wp-adb .amp-wp-header{margin:15px 0}.amp-wp-adb .amp-wp-header:after,.amp-wp-adb .amp-wp-header:before{content:" ";display:table}.amp-wp-adb .amp-wp-header:after{clear:both}.amp-wp-adb .amp-wp-header .amp-wp-logo,.amp-wp-adb .amp-wp-header .amp-wp-title{display:block;float:left}.amp-wp-adb .amp-wp-header .amp-wp-logo{background:#fff;padding:20px 10px;min-width:50px}@media (min-width:414px){.amp-wp-adb .amp-wp-header .amp-wp-logo{padding:15px;min-width:70px}}.amp-wp-adb .amp-wp-header .amp-wp-logo img{max-width:70px;height:auto}.amp-wp-adb .amp-wp-header .amp-wp-title{vertical-align:top;padding-left:15px}.amp-wp-adb .amp-wp-header .amp-wp-title h1{margin:7px 0}.amp-wp-adb .amp-wp-header .amp-wp-title h3{margin-bottom:15px}.amp-wp-adb .amp-wp-header .amp-wp-version h4{display:inline-block;margin:0}.amp-wp-adb .amp-wp-header .amp-wp-version h4 strong{font-weight:700}.amp-wp-adb .amp-wp-htabs{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0;border:0 none;overflow:auto}.amp-wp-adb .amp-wp-htabs:after,.amp-wp-adb .amp-wp-htabs:before{content:" ";display:table}.amp-wp-adb .amp-wp-htabs:after{clear:both}.amp-wp-adb .amp-wp-htabs a{color:#555d66;font-size:13px;text-transform:uppercase;font-weight:700;width:100%;display:inline-block;margin:0;padding:10px 15px;background:#fff;border:0 none;border-right:1px solid #eeeeee;-webkit-transition:all 0.1s ease-out;-o-transition:all 0.1s ease-out;transition:all 0.1s ease-out}.amp-wp-adb .amp-wp-htabs a:last-child{border-right:0 none}.amp-wp-adb .amp-wp-htabs a>span{display:inline-block;color:#fff;width:23px;text-align:center;margin-right:7px;font-weight:800;font-size:12px}.amp-wp-adb .amp-wp-htabs a.nav-tab-active,.amp-wp-adb .amp-wp-htabs a:focus,.amp-wp-adb .amp-wp-htabs a:hover{color:#eee;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all 0.1s ease-in;-o-transition:all 0.1s ease-in;transition:all 0.1s ease-in}.amp-wp-adb .amp-wp-htabs a.welcome>span{background:#e53935}.amp-wp-adb .amp-wp-htabs a.welcome.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.welcome:focus,.amp-wp-adb .amp-wp-htabs a.welcome:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.welcome.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.welcome:focus>span,.amp-wp-adb .amp-wp-htabs a.welcome:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.settings>span{background:#20d37e}.amp-wp-adb .amp-wp-htabs a.settings.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.settings:focus,.amp-wp-adb .amp-wp-htabs a.settings:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.settings.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.settings:focus>span,.amp-wp-adb .amp-wp-htabs a.settings:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.customize>span{background:#62c5ed}.amp-wp-adb .amp-wp-htabs a.customize.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.customize:focus,.amp-wp-adb .amp-wp-htabs a.customize:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.customize.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.customize:focus>span,.amp-wp-adb .amp-wp-htabs a.customize:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.add-ons>span{background:#a151fc}.amp-wp-adb .amp-wp-htabs a.add-ons.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.add-ons:focus,.amp-wp-adb .amp-wp-htabs a.add-ons:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.add-ons.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.add-ons:focus>span,.amp-wp-adb .amp-wp-htabs a.add-ons:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.help>span{background:#416deb}.amp-wp-adb .amp-wp-htabs a.help.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.help:focus,.amp-wp-adb .amp-wp-htabs a.help:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.help.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.help:focus>span,.amp-wp-adb .amp-wp-htabs a.help:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.about>span{background:#d26948}.amp-wp-adb .amp-wp-htabs a.about.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.about:focus,.amp-wp-adb .amp-wp-htabs a.about:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.about.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.about:focus>span,.amp-wp-adb .amp-wp-htabs a.about:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-htabs a.system-status>span{background:#9f9f9f}.amp-wp-adb .amp-wp-htabs a.system-status.nav-tab-active,.amp-wp-adb .amp-wp-htabs a.system-status:focus,.amp-wp-adb .amp-wp-htabs a.system-status:hover{background:#0073AA;color:#fff}.amp-wp-adb .amp-wp-htabs a.system-status.nav-tab-active>span,.amp-wp-adb .amp-wp-htabs a.system-status:focus>span,.amp-wp-adb .amp-wp-htabs a.system-status:hover>span{color:#0073AA;background:#fff}.amp-wp-adb .amp-wp-vtabs{display:-webkit-box;display:-ms-flexbox;display:flex}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-sidebar{width:200px;background:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a{background:#23282D;color:#eee;font-size:14px;line-height:1.2;padding:12px;border-bottom:1px solid #333333;font-weight:400;text-decoration:none;display:block}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a i,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a span{position:relative}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a i{line-height:14px;font-size:18px;line-height:14px;margin-right:7px;top:1px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a span{top:-2px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:hover{background:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:active,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:focus{-webkit-box-shadow:none;box-shadow:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a.active{color:#fff;background:#0073AA;position:relative;border-right:0 none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a.active:after{right:-1px;border:8px solid transparent;border-right-color:transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a:first-child.active:after{border-right-color:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap{width:calc(100% - 200px);border-left:0 none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header{padding:8px 15px 9px;background:#32373c}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer:after,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer:before,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header:after,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header:before{content:" ";display:table}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer:after,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header:after{clear:both}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer h2,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header h2{color:#eee;font-size:16px;font-weight:600;line-height:26px;margin:0 15px 0 0;text-transform:uppercase;letter-spacing:0.2px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-title,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-title{float:left}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar{float:right}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar a,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar button,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar input,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar a,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar button,.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar input{margin-left:5px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header{border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer{border-top:1px solid #e4e4e4;border-left:1px solid #444}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-body{padding:20px;background:#fff;min-height:40vh}@media (max-width:960px){.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-sidebar{width:46px}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-menu a span{display:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap{width:calc(100% - 46px)}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-body{min-height:auto}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-header .amp-wp-vtabs-btn-toolbar{display:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-title{display:none}.amp-wp-adb .amp-wp-vtabs .amp-wp-vtabs-content-wrap .amp-wp-vtabs-footer .amp-wp-vtabs-btn-toolbar{float:left}}@-webkit-keyframes dash{0%{stroke-dashoffset:1000}to{stroke-dashoffset:0}}@keyframes dash{0%{stroke-dashoffset:1000}to{stroke-dashoffset:0}}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes rotate{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes wave{0%{-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{-webkit-transform:translateY(10%);transform:translateY(10%)}}@keyframes wave{0%{-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{-webkit-transform:translateY(10%);transform:translateY(10%)}}.amp-wp-adb .amp-wp-rating-box{background:url("../images/rating-box/red-bg.jpg") left top no-repeat #e53935;background-size:cover;border:0 none;margin:20px 0;padding:0;overflow:hidden}@media (-webkit-min-device-pixl-ratio:2){.amp-wp-adb .amp-wp-rating-box{background-image:url("../images/rating-box/red-bg-2x.jpg")}}.amp-wp-adb .amp-wp-rating-box a{text-decoration:none;line-height:1;position:relative;display:block}.amp-wp-adb .amp-wp-rating-box a .after-img,.amp-wp-adb .amp-wp-rating-box a .before-img{position:absolute;bottom:-1px}.amp-wp-adb .amp-wp-rating-box a .after-img img,.amp-wp-adb .amp-wp-rating-box a .after-img svg,.amp-wp-adb .amp-wp-rating-box a .before-img img,.amp-wp-adb .amp-wp-rating-box a .before-img svg{max-height:70px;width:auto}.amp-wp-adb .amp-wp-rating-box a .before-img{left:10px;bottom:-10px}.amp-wp-adb .amp-wp-rating-box a .before-img svg{-webkit-animation:wave 1s cubic-bezier(0.45, 0.05, 0.55, 0.95) alternate infinite;animation:wave 1s cubic-bezier(0.45, 0.05, 0.55, 0.95) alternate infinite}.amp-wp-adb .amp-wp-rating-box a .before-img svg .st0{fill:#FFFFFF}.amp-wp-adb .amp-wp-rating-box a .before-img svg .st1{fill:none;stroke:#FFFFFF;stroke-width:5.5507;stroke-miterlimit:10}.amp-wp-adb .amp-wp-rating-box a .after-img{right:-38px;bottom:-4px}@media (max-width:782px){.amp-wp-adb .amp-wp-rating-box a .after-img{display:none}}.amp-wp-adb .amp-wp-rating-box a .after-img svg path{fill:none;stroke-linecap:round;stroke-miterlimit:10;stroke-width:2px;stroke:#fff;stroke-dasharray:1000;stroke-dashoffset:1000;-webkit-animation:dash 3s cubic-bezier(0.46, 0.03, 0.52, 0.96) alternate infinite;animation:dash 3s cubic-bezier(0.46, 0.03, 0.52, 0.96) alternate infinite}.amp-wp-adb .amp-wp-rating-box a .inner-content{padding:15px 0 15px 100px}@media (min-width:783px){.amp-wp-adb .amp-wp-rating-box a .inner-content{padding-right:120px}}.amp-wp-adb .amp-wp-rating-box a .inner-content h3,.amp-wp-adb .amp-wp-rating-box a .inner-content p{color:#fff;margin:0}.amp-wp-adb .amp-wp-rating-box a .inner-content h3{line-height:1;font-size:20px;font-weight:600;text-transform:uppercase;margin-bottom:5px}.amp-wp-adb .amp-wp-rating-box a .inner-content p{font-size:14px}.amp-wp-adb .amp-wp-rating-box a:active,.amp-wp-adb .amp-wp-rating-box a:focus,.amp-wp-adb .amp-wp-rating-box a:hover{border:0 none;-webkit-box-shadow:none;box-shadow:none}.amp-wp-adb .amp-wp-rating-box .notice-dismiss{height:100%;color:#fff;padding:15px;font-size:22px}.amp-wp-adb .amp-wp-rating-box .notice-dismiss:before{color:#fff;font-size:24px}.amp-wp-adb .amp-wp-star-rating{display:inline-block;color:#ffb900;position:relative;top:3px}.amp-wp-adb .amp-wp-star-rating svg{fill:#ffb900}.amp-wp-adb .amp-wp-star-rating svg:hover{fill:#ffb900}.amp-wp-adb .amp-wp-star-rating svg:hover~svg{fill:none}.amp-wp-adb .amp-wp-content-wrap{background:#fff}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-body{padding:15px}.amp-wp-adb .amp-wp-content-wrap p{margin-bottom:20px}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header{background:#32373c;padding:8px 15px 9px}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer:after,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer:before,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header:after,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header:before{content:" ";display:table}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer:after,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header:after{clear:both}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer h2,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer h3,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header h2,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header h3{color:#eee;font-size:16px;font-weight:700;line-height:26px;text-transform:uppercase;letter-spacing:0.2px;margin:0}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-title,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-title{float:left}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar{float:right}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar a,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar button,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar input,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar a,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar button,.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar input{margin-left:5px}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header{border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer{border-top:1px solid #e4e4e4;border-left:1px solid #444}@media (max-width:960px){.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-header .amp-wp-content-btn-toolbar{display:none}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-title{display:none}.amp-wp-adb .amp-wp-content-wrap .amp-wp-content-footer .amp-wp-content-btn-toolbar{float:left}}.amp-wp-adb #debug-report{display:none}.amp-wp-adb #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.amp-wp-adb .amp-wp-box{padding:20px 25px 25px 25px;margin:10px;border:0 none;background:#f2f2f2;width:100%}.amp-wp-adb .amp-wp-box h2,.amp-wp-adb .amp-wp-box h3{color:#555d66;text-transform:uppercase;font-size:16px;font-weight:600;line-height:1.4}.amp-wp-adb .amp-wp-box p{font-size:13px;margin-bottom:20px;line-height:1.5}.amp-wp-adb .amp-wp-box.alert-box{margin:0 0 20px 0;background:#fff;border-left:5px solid #2885bb}.amp-wp-adb .amp-wp-box.alert-box h3{text-transform:uppercase}.amp-wp-adb .amp-wp-box.alert-box p{margin:0}.amp-wp-adb .amp-wp-boxes{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-line-pack:stretch;align-content:stretch;margin:-10px}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-2-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-3-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:1200px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-3-col .amp-wp-box{width:calc(33.33% - 20px)}}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-4-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:783px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-4-col .amp-wp-box{width:calc(33.33% - 20px)}}@media (min-width:1200px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-4-col .amp-wp-box{width:calc(25% - 20px)}}@media (min-width:500px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(50% - 20px)}}@media (min-width:783px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(33.33% - 20px)}}@media (min-width:1200px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(25% - 20px)}}@media (min-width:1400px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(20% - 20px)}}@media (min-width:1600px){.amp-wp-adb .amp-wp-boxes.amp-wp-boxes-6-col .amp-wp-box{width:calc(16.66% - 20px)}}.amp-wp-adb .amp-wp-boxes img{max-width:100%}.amp-wp-adb .amp-wp-box-num-icon img{max-height:49px;width:auto;margin-bottom:15px}@media (max-width:782px){.amp-wp-adb .amp-wp-box-num-icon h2{color:#555d66;font-size:13px;text-transform:uppercase;font-weight:700;line-height:1.5}}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title{margin-bottom:10px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title,.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-num{display:block;float:left}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-num{font-size:50px;line-height:44px;font-weight:600;display:inline-block;opacity:0.15;width:25px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title{width:calc(100% - 45px);margin-left:20px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title img{margin-bottom:10px}@media (min-width:1200px){.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-num{font-size:90px;font-weight:400;line-height:1;width:30px}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num-icon-title .amp-wp-icon-title{width:calc(100% - 60px);margin-left:30px}}.amp-wp-adb .amp-wp-box-num-icon .amp-wp-num,.amp-wp-adb .amp-wp-box-num-icon span{font-size:100px;line-height:18px;height:20px;width:18px;font-weight:200;display:inline-block}.amp-wp-adb .amp-wp-box-w-icon h3,.amp-wp-adb .amp-wp-box-w-icon p{margin-bottom:0}.amp-wp-adb .amp-wp-box-w-icon .amp-wp-box-icon{border-bottom:1px solid #e4e4e4;padding-bottom:10px;margin-bottom:15px}.amp-wp-adb .amp-wp-box-w-icon .amp-wp-box-icon img{max-width:40px;margin-bottom:5px}.amp-wp-adb .amp-wp-box-w-img{padding:0;border-radius:3px}.amp-wp-adb .amp-wp-box-w-img img{border-top:1px solid #e4e4e4;border-bottom:1px solid #e4e4e4}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-header{padding:15px 20px}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-header h2,.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-header h3{margin:0}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-body{padding:13px 20px 20px}.amp-wp-adb .amp-wp-box-w-img .amp-wp-box-body p{font-size:14px;margin:0}.amp-wp-adb .amp-wp-box-w-img.gray-scale img{-webkit-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.amp-wp-adb .amp-wp-box-w-img.gray-scale:hover img{-webkit-filter:none;filter:none;-webkit-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.amp-wp-adb .amp-wp-intro-box{padding:35px 30px 40px 30px}.amp-wp-adb .amp-wp-intro-box h2{font-size:20px}.amp-wp-adb .amp-wp-intro-box p{font-size:16px;margin:0}.amp-wp-adb .amp-wp-team .amp-wp-team-member{color:#555d66;display:inline-block;background:#f9f9f9;text-decoration:none;vertical-align:top;margin-right:15px;margin-bottom:15px;border-radius:3px;overflow:hidden}.amp-wp-adb .amp-wp-team .amp-wp-team-member:hover{background:#e53935;color:#fff}.amp-wp-adb .amp-wp-team .amp-wp-team-member .amp-wp-member-info,.amp-wp-adb .amp-wp-team .amp-wp-team-member img{display:inline-block;vertical-align:middle}.amp-wp-adb .amp-wp-team .amp-wp-team-member .amp-wp-member-info{padding:10px 15px 15px 10px}.amp-wp-adb .amp-wp-team .amp-wp-team-member h4,.amp-wp-adb .amp-wp-team .amp-wp-team-member p{line-height:1;margin:0}.amp-wp-adb .amp-wp-team .amp-wp-team-member h4{font-size:16px;margin-bottom:8px}.amp-wp-adb .amp-wp-form-section-title{margin:0;padding:10px;border:1px solid #eeeeee;background:#f2f2f2;border-radius:3px;text-transform:uppercase;font-size:14px;font-weight:700;color:#555d66}.amp-wp-adb .amp-wp-form-table{margin:0 0 40px}.amp-wp-adb .amp-wp-form-table:last-child{margin:0}.amp-wp-adb .amp-wp-form-table tr{border-top:1px solid #eeeeee}.amp-wp-adb .amp-wp-form-table th{padding:10px 10px 5px;line-height:22px}.amp-wp-adb .amp-wp-form-table td{padding:0 10px 15px}.amp-wp-adb .amp-wp-form-table .amp-wp-form-field-desc{margin-top:20px}.amp-wp-adb .amp-wp-form-table .amp-wp-form-field-desc p{margin-bottom:15px}.amp-wp-adb .amp-wp-form-table .amp-wp-form-field-desc p:last-child{margin:0}@media (min-width:783px){.amp-wp-adb .amp-wp-form-table td,.amp-wp-adb .amp-wp-form-table th{padding:20px 10px}.amp-wp-adb .amp-wp-form-table th{width:240px}}.amp-wp-adb .amp-wp-form-table{}.amp-wp-adb .amp-wp-form-table input[type=number],.amp-wp-adb .amp-wp-form-table input[type=text],.amp-wp-adb .amp-wp-form-table textarea{font-size:14px;line-height:1;padding:9px;border:1px solid #9f9f9f;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;width:100%;max-width:300px;background:#f9f9f9;position:relative;min-height:32px}.amp-wp-adb .amp-wp-form-table input[type=number]::-webkit-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::-webkit-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea::-webkit-input-placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea:-ms-input-placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea::-ms-input-placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]::placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::placeholder,.amp-wp-adb .amp-wp-form-table textarea::placeholder{color:#9f9f9f;opacity:1}.amp-wp-adb .amp-wp-form-table input[type=number]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]:-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea:-ms-input-placeholder{color:#9f9f9f}.amp-wp-adb .amp-wp-form-table input[type=number]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table input[type=text]::-ms-input-placeholder,.amp-wp-adb .amp-wp-form-table textarea::-ms-input-placeholder{color:#9f9f9f}.amp-wp-adb .amp-wp-form-table input[type=number]:active,.amp-wp-adb .amp-wp-form-table input[type=number]:focus,.amp-wp-adb .amp-wp-form-table input[type=text]:active,.amp-wp-adb .amp-wp-form-table input[type=text]:focus,.amp-wp-adb .amp-wp-form-table textarea:active,.amp-wp-adb .amp-wp-form-table textarea:focus{border-color:#0073AA}.amp-wp-adb .amp-wp-form-table textarea{max-width:100%}.amp-wp-adb .amp-wp-form-table .switch{display:inline-block;position:relative;top:1px;font-size:16px;line-height:24px}.amp-wp-adb .amp-wp-form-table .switch input{position:absolute;top:0;left:0;width:36px;height:30px;opacity:0;z-index:0}.amp-wp-adb .amp-wp-form-table .switch label{display:block;padding:0 0 0 44px;cursor:pointer}.amp-wp-adb .amp-wp-form-table .switch label:before{content:'';position:absolute;top:7px;left:0;width:36px;height:14px;background-color:rgba(159, 159, 159, 0.8);border-radius:14px;z-index:1;-webkit-transition:background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);transition:background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1)}.amp-wp-adb .amp-wp-form-table .switch label:after{content:'';position:absolute;top:4px;left:0;width:20px;height:20px;background-color:#fff;border-radius:14px;-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);z-index:2;-webkit-transition:all 0.28s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all 0.28s cubic-bezier(0.4, 0, 0.2, 1);transition:all 0.28s cubic-bezier(0.4, 0, 0.2, 1);-webkit-transition-property:left, background-color;-o-transition-property:left, background-color;transition-property:left, background-color}.amp-wp-adb .amp-wp-form-table .switch input:checked+label:after{left:16px}.amp-wp-adb .amp-wp-form-table .switch input:checked+label:before{background-color:rgba(0, 115, 170, 0.6)}.amp-wp-adb .amp-wp-form-table .switch input:checked+label:after{background-color:#0073AA}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field{max-height:0;margin-bottom:10px;overflow:hidden;-webkit-transition:max-height 0.2s ease-out;-o-transition:max-height 0.2s ease-out;transition:max-height 0.2s ease-out}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field label{font-weight:600;display:block;margin-top:20px;margin-bottom:7px}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field input{margin-bottom:10px}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field .amp-wp-form-field-desc{margin-top:0}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field .amp-wp-field-error-msg{margin-top:10px;color:#ef5228;font-weight:600}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field .amp-wp-child-field .switch label{margin:0 0 3px}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field.active .amp-wp-child-field{max-height:1000px;-webkit-transition:max-height 0.2s ease-in;-o-transition:max-height 0.2s ease-in;transition:max-height 0.2s ease-in}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field.error-field .amp-wp-child-field label{color:#ef5228}.amp-wp-adb .amp-wp-form-table .amp-wp-parent-child-field.error-field .amp-wp-child-field input{border-color:#ef5228}#toplevel_page_amp-wp-welcome .wp-menu-image img{padding:1px 0 0 0}.toplevel_page_amp-wp-translation .wp-menu-image img{width:12px;padding-top:7px!important}#adminmenu .toplevel_page_amp-wp-translation{margin-top:10px;margin-bottom:10px}.amp-wp-adb{padding-right:10px}.amp-wp-adb .mt-10{margin-top:10px}.amp-wp-adb .mt-20{margin-top:20px}.amp-wp-adb .mt-30{margin-top:30px}.amp-wp-adb .mb-10{margin-bottom:10px}.amp-wp-adb .mb-20{margin-bottom:20px}.amp-wp-adb .mb-30{margin-bottom:30px}.amp-wp-adb hr.amp-wp-section-sep{margin:20px 0}@media (min-width:783px){.amp-wp-adb{padding-right:20px}}.wrap .notice.amp-wp-notice{margin:15px 0}.notice,div.error,div.updated{margin:15px 20px 15px 0}
  • amp-wp/trunk/admin/partials/settings/amp-wp-admin-general.php

    r2057758 r2125154  
    1717        <div class="amp-wp-vtabs-header">
    1818            <div class="amp-wp-vtabs-title">
    19                 <h2><?php _e( 'General Settings', 'amp-wp' ); ?></h2>
     19                <h2><?php esc_html_e( 'General Settings', 'amp-wp' ); ?></h2>
    2020            </div>
    2121            <div class="amp-wp-vtabs-btn-toolbar">
    2222                <?php submit_button( esc_html__( 'Save Changes', 'amp-wp' ), 'button-primary', 'save', false ); ?>
    23                 <button class="button"><?php _e( 'Reset', 'amp-wp' ); ?></button>
     23                <!-- <button class="button">< ?php esc_html_e( 'Reset', 'amp-wp' ); ?></button> -->
    2424            </div>
    2525        </div>
    2626        <div class="amp-wp-vtabs-body">
    2727            <!-- Enable/Disable AMP - START -->
    28             <h3 class="amp-wp-form-section-title"><?php _e( 'Enable/Disable AMP', 'amp-wp' ); ?></h3>
     28            <h3 class="amp-wp-form-section-title"><?php esc_html_e( 'Enable/Disable AMP', 'amp-wp' ); ?></h3>
    2929            <table class="form-table amp-wp-form-table">
    3030                <tbody>
    3131                    <tr>
    32                         <th scope="row"><label for="amp_on_home"><?php _e( 'Enable AMP on Home Page', 'amp-wp' ); ?></label></th>
     32                        <th scope="row"><label for="amp_on_home"><?php esc_html_e( 'Enable AMP on Home Page', 'amp-wp' ); ?></label></th>
    3333                        <td>
    3434                            <div class="switch">
     
    3939                    </tr>
    4040                    <tr>
    41                         <th scope="row"><label for="amp_on_search"><?php _e( 'Enable AMP on Search Page', 'amp-wp' ); ?></label></th>
     41                        <th scope="row"><label for="amp_on_search"><?php esc_html_e( 'Enable AMP on Search Page', 'amp-wp' ); ?></label></th>
    4242                        <td>
    4343                            <div class="switch">
     
    5252                        ?>
    5353                    <tr>
    54                         <th scope="row"><label for="amp_on_post_types"><?php _e( 'Disable AMP on Post Types', 'amp-wp' ); ?></label></th>
     54                        <th scope="row"><label for="amp_on_post_types"><?php esc_html_e( 'Disable AMP on Post Types', 'amp-wp' ); ?></label></th>
    5555                        <td>
    5656                            <select name="amp_wp_general_settings[amp_on_post_types][]" id="amp_on_post_types" multiple="multiple" class="amp-wp-select" data-placeholder="Select Post Types">
     
    7070                        ?>
    7171                    <tr>
    72                         <th scope="row"><label for="amp_on_taxonomies"><?php _e( 'Disable AMP on Taxonomies', 'amp-wp' ); ?></label></th>
     72                        <th scope="row"><label for="amp_on_taxonomies"><?php esc_html_e( 'Disable AMP on Taxonomies', 'amp-wp' ); ?></label></th>
    7373                        <td>
    7474                            <select name="amp_wp_general_settings[amp_on_taxonomies][]" id="amp_on_taxonomies" multiple="multiple" class="amp-wp-select" data-placeholder="Select Taxonomies">
     
    8484                    <?php endif; ?>
    8585                    <tr>
    86                         <th scope="row"><label for="exclude_urls"><?php _e( 'Exclude URLs From Auto Converting:', 'amp-wp' ); ?></label></th>
     86                        <th scope="row"><label for="exclude_urls"><?php esc_html_e( 'Exclude URLs From Auto Converting:', 'amp-wp' ); ?></label></th>
    8787                        <td>
    8888                            <textarea id="exclude_urls" name="amp_wp_general_settings[exclude_urls]" rows="5" class="large-text code"><?php echo wp_kses_post( $exclude_urls ); ?></textarea>
    8989                            <div class="description">
    90                                 <p><?php _e( 'You can exclude URLs of your site to prevent converting them into AMP URL inside your site.', 'amp-wp' ); ?></p>
     90                                <p><?php esc_html_e( 'You can exclude URLs of your site to prevent converting them into AMP URL inside your site.', 'amp-wp' ); ?></p>
    9191                                <p><?php _e( 'You can use <strong>*</strong> in the end of URL to exclude all URLs that start with it. e.g. <span class="pre">https://yoursite.com/test/*</span>', 'amp-wp' ); ?></p>
    9292                            </div>
    9393                        </td>
    9494                    </tr>
    95                     <!--
    9695                    <tr>
    97                         <th scope="row"><label for="excluded_urls">< ?php _e('Exclude AMP by URL:', 'amp-wp'); ?></label></th>
     96                        <th scope="row"><label for="excluded_urls"><?php esc_html_e('Exclude AMP by URL:', 'amp-wp'); ?></label></th>
    9897                        <td>
    99                             <textarea id="excluded_urls" name="amp_wp_general_settings[excluded_urls]" rows="5" class="large-text code">< ?php echo wp_kses_post( $excluded_urls ); ?></textarea>
     98                            <textarea id="excluded_urls" name="amp_wp_general_settings[excluded_urls]" rows="5" class="large-text code"><?php echo wp_kses_post( $excluded_urls ); ?></textarea>
    10099                            <div class="description">
    101                                 <p>< ?php _e('You can disable AMP version of the page. e.g. /product/* will disable all amp pages starting with product in the URL.', 'amp-wp');?></p>
     100                                <p><?php esc_html_e('You can disable AMP version of the page. e.g. /product/* will disable all amp pages starting with product in the URL.', 'amp-wp');?></p>
    102101                            </div>
    103102                        </td>
    104103                    </tr>
    105                     -->
    106104                </tbody>
    107105            </table>
     
    109107
    110108            <!-- AMP Permalink- START -->
    111             <h3 class="amp-wp-form-section-title"><?php _e( 'AMP Permalink', 'amp-wp' ); ?></h3>
     109            <h3 class="amp-wp-form-section-title"><?php esc_html_e( 'AMP Permalink', 'amp-wp' ); ?></h3>
    112110            <table class="form-table amp-wp-form-table">
    113111                <tbody>
    114112                    <tr>
    115                         <th scope="row"><label for="url_structure"><?php _e( 'AMP URL Format', 'amp-wp' ); ?></label></th>
     113                        <th scope="row"><label for="url_structure"><?php esc_html_e( 'AMP URL Format', 'amp-wp' ); ?></label></th>
    116114                        <td>
    117115                            <select name="amp_wp_general_settings[url_structure]" id="url_structure" class="amp-wp-select">
    118                                 <option value="start-point"<?php echo ( 'start-point' == $url_structure ) ? ' selected="selected"' : ''; ?>><?php _e( 'Start Point - At the beginning of the URL', 'amp-wp' ); ?></option>
    119                                 <option value="end-point"<?php echo ( 'end-point' == $url_structure ) ? ' selected="selected"' : ''; ?>><?php _e( 'End Point - At the end of the URL', 'amp-wp' ); ?></option>
     116                                <option value="start-point"<?php echo ( 'start-point' == $url_structure ) ? ' selected="selected"' : ''; ?>><?php esc_html_e( 'Start Point - At the beginning of the URL', 'amp-wp' ); ?></option>
     117                                <option value="end-point"<?php echo ( 'end-point' == $url_structure ) ? ' selected="selected"' : ''; ?>><?php esc_html_e( 'End Point - At the end of the URL', 'amp-wp' ); ?></option>
    120118                            </select>
    121119                            <div class="description">
    122                                 <p><strong>Start Point:</strong> <span class="pre"><?php _e( 'https://yoursite.com/<strong>amp</strong>/post/', 'amp-wp' ); ?></span></p>
    123                                 <p><strong>End Point:</strong> <span class="pre"><?php _e( 'https://yoursite.com/post/<strong>amp</strong>/', 'amp-wp' ); ?></span></p>
     120                                <p><strong><?php esc_html_e( 'Start Point:', 'amp-wp' ); ?></strong> <span class="pre"><?php _e( 'https://yoursite.com/<strong>amp</strong>/post/', 'amp-wp' ); ?></span></p>
     121                                <p><strong><?php esc_html_e( 'End Point:', 'amp-wp' ); ?></strong> <span class="pre"><?php _e( 'https://yoursite.com/post/<strong>amp</strong>/', 'amp-wp' ); ?></span></p>
    124122                            </div>
    125123                        </td>
     
    130128
    131129            <!-- Mobile Redirect - START -->
    132             <h3 class="amp-wp-form-section-title"><?php _e( 'Mobile Redirect', 'amp-wp' ); ?></h3>
     130            <h3 class="amp-wp-form-section-title"><?php esc_html_e( 'Mobile Redirect', 'amp-wp' ); ?></h3>
    133131            <table class="form-table amp-wp-form-table">
    134132                <tbody>
     
    145143                            </div>
    146144
    147                             <p class="description"><?php _e( 'This will automatically redirect all mobile users to the AMP version of the site.', 'amp-wp' ); ?></p>
     145                            <p class="description"><?php esc_html_e( 'This will automatically redirect all mobile users to the AMP version of the site.', 'amp-wp' ); ?></p>
    148146                        </td>
    149147                    </tr>
     
    153151
    154152            <!-- Theme Settings - START -->
    155             <h3 class="amp-wp-form-section-title"><?php _e( 'Theme Settings', 'amp-wp' ); ?></h3>
     153            <h3 class="amp-wp-form-section-title"><?php esc_html_e( 'Theme Settings', 'amp-wp' ); ?></h3>
    156154            <table class="form-table amp-wp-form-table">
    157155                <tbody>
     
    172170                                ?>
    173171                            </select>
    174                             <p class="description"><?php _e( 'More themes coming soon.', 'amp-wp' ); ?></p>
     172                            <p class="description"><?php esc_html_e( 'More themes coming soon.', 'amp-wp' ); ?></p>
    175173                        </td>
    176174                    </tr>
     
    182180        <div class="amp-wp-vtabs-footer">
    183181            <div class="amp-wp-vtabs-title">
    184                 <h2><?php _e( 'General Settings', 'amp-wp' ); ?></h2>
     182                <h2><?php esc_html_e( 'General Settings', 'amp-wp' ); ?></h2>
    185183            </div>
    186184            <div class="amp-wp-vtabs-btn-toolbar">
    187185                <?php submit_button( esc_html__( 'Save Changes', 'amp-wp' ), 'button-primary', 'save', false ); ?>
    188                 <button class="button"><?php _e( 'Reset', 'amp-wp' ); ?></button>
     186                <!-- <button class="button">< ?php esc_html_e( 'Reset', 'amp-wp' ); ?></button> -->
    189187            </div>
    190188        </div>
  • amp-wp/trunk/amp-wp.php

    r2077306 r2125154  
    1616 * Plugin URI:          https://wordpress.org/plugins/amp-wp
    1717 * Description:         Automagically add Google AMP functionality to your site. Tons of Premium Features for FREE. Enable/Disable Post Types, Categories, and Tags.
    18  * Version:             1.5.7
     18 * Version:             1.5.8
    1919 * Author:              Pixelative, Mohsin Rafique
    2020 * Author URI:          https://pixelative.co
     
    5454 * Rename this for your plugin and update it as you release new versions.
    5555 */
    56 define( 'AMP_WP_VERSION', '1.5.7' );
     56define( 'AMP_WP_VERSION', '1.5.8' );
    5757
    5858/**
  • amp-wp/trunk/includes/admin/settings/class-amp-wp-general.php

    r2062068 r2125154  
    9797            $amp_on_taxonomies       = ( isset( $amp_wp_general_settings['amp_on_taxonomies'] ) && ! empty( $amp_wp_general_settings['amp_on_taxonomies'] ) ) ? $amp_wp_general_settings['amp_on_taxonomies'] : array();
    9898            $exclude_urls            = ( isset( $amp_wp_general_settings['exclude_urls'] ) && ! empty( $amp_wp_general_settings['exclude_urls'] ) ) ? $amp_wp_general_settings['exclude_urls'] : '';
    99             // $excluded_urls = ( isset( $amp_wp_general_settings['excluded_urls'] ) && !empty( $amp_wp_general_settings['excluded_urls'] ) ) ? $amp_wp_general_settings['excluded_urls'] : '';
    100             $url_structure        = ( isset( $amp_wp_general_settings ) && ! empty( $amp_wp_general_settings['url_structure'] ) ) ? $amp_wp_general_settings['url_structure'] : 'start-point';
    101             $mobile_auto_redirect = ( isset( $amp_wp_general_settings['mobile_auto_redirect'] ) && ! empty( $amp_wp_general_settings['mobile_auto_redirect'] ) ) ? intval( $amp_wp_general_settings['mobile_auto_redirect'] ) : '';
    102             $theme_name           = ( isset( $amp_wp_general_settings['theme_name'] ) && ! empty( $amp_wp_general_settings['theme_name'] ) ) ? esc_attr( $amp_wp_general_settings['theme_name'] ) : '';
     99            $excluded_urls          = ( isset( $amp_wp_general_settings['excluded_urls'] ) && !empty( $amp_wp_general_settings['excluded_urls'] ) ) ? $amp_wp_general_settings['excluded_urls'] : '';
     100            $url_structure           = ( isset( $amp_wp_general_settings ) && ! empty( $amp_wp_general_settings['url_structure'] ) ) ? $amp_wp_general_settings['url_structure'] : 'start-point';
     101            $mobile_auto_redirect    = ( isset( $amp_wp_general_settings['mobile_auto_redirect'] ) && ! empty( $amp_wp_general_settings['mobile_auto_redirect'] ) ) ? intval( $amp_wp_general_settings['mobile_auto_redirect'] ) : '';
     102            $theme_name              = ( isset( $amp_wp_general_settings['theme_name'] ) && ! empty( $amp_wp_general_settings['theme_name'] ) ) ? esc_attr( $amp_wp_general_settings['theme_name'] ) : '';
    103103        }
    104104
  • amp-wp/trunk/includes/class-amp-wp-component.php

    r2070880 r2125154  
    55 * @since 1.0.0
    66 */
     7
    78class Amp_WP_Component extends Amp_WP_Component_Base {
    89
  • amp-wp/trunk/includes/class-amp-wp-content-sanitizer.php

    r2076574 r2125154  
    77 * @since     1.0.0
    88 */
     9
    910class Amp_WP_Content_Sanitizer {
    1011
     
    128129    private function strip_attributes_recursive( $node, $bad_attributes ) {
    129130
    130         if ( ! isset( $node->nodeType ) || $node->nodeType !== XML_ELEMENT_NODE ) {
     131        if ( ! isset( $node->nodeType ) || XML_ELEMENT_NODE !== $node->nodeType ) {
    131132            return;
    132133        }
    133134
    134         if ( ! isset( $this->tags[ $node->tagName ] ) ) { // remove invalid tag
     135        // Remove invalid tag.
     136        if ( ! isset( $this->tags[ $node->tagName ] ) ) {
    135137            self::remove_element( $node );
    136138            return;
     
    157159
    158160                // on* attributes (like onclick) are a special case.
    159                 if ( 0 === stripos( $attribute_name, 'on' ) && $attribute_name != 'on' ) {
     161                if ( 0 === stripos( $attribute_name, 'on' ) && 'on' != $attribute_name ) {
    160162                    $node->removeAttribute( $attribute_name );
    161163                    continue;
     
    401403            $url = trailingslashit( $matched[1] ) . Amp_WP_Public::SLUG . '/' . $matched[2];
    402404        } else {
    403             // $url = trailingslashit( $url ) . Amp_WP_Public::SLUG . '/';
    404405            $url = trailingslashit( $url ) . Amp_WP_Public::SLUG;
    405406        }
     
    683684        switch ( $element->tagName ) {
    684685            case 'amp-img':
    685                 if ( isset( $element_atts['width'] ) && $element_atts['width'] === 'auto' ) {
     686                if ( isset( $element_atts['width'] ) && 'auto' === $element_atts['width'] ) {
    686687                    $invalid_attrs[] = 'width';
    687688                }
     
    714715                    $prev_tag_name = $rule['tag_name'];
    715716                }
    716                 if ( $nodes_count = $elements->length ) {
     717
     718                $nodes_count = $elements->length;
     719                if ( $nodes_count ) {
    717720                    foreach ( $rule['attrs'] as $atts ) {
    718721                        if ( empty( $atts['name'] ) ) {
     
    738741                            * STEP 1) remove height=auto images
    739742                            */
    740                             if ( $rule['tag_name'] === 'amp-img' && isset( $element_atts['height'] ) && $element_atts['height'] === 'auto' ) {
     743                            if ( 'amp-img' === $rule['tag_name'] && isset( $element_atts['height'] ) && 'auto' === $element_atts['height'] ) {
    741744                                self::remove_element( $element ); // Remove invalid element.
    742745                                continue;
     
    752755                                        $this->sanitize_layout_attribute( $layout, $element, $element_atts );
    753756                                    } else {
    754                                         // invalid layout attribute value
     757                                        // invalid layout attribute value.
    755758                                        if ( ! empty( $element_atts['width'] ) && ! empty( $element_atts['height'] ) ) {
    756759                                            $new_atts['layout'] = 'responsive';
     
    760763                                    }
    761764                                } else {
    762                                     if ( isset( $element_atts['width'] ) && $element_atts['width'] === 'auto' && ! empty( $element_atts['height'] ) ) {
     765                                    if ( isset( $element_atts['width'] ) && 'auto' === $element_atts['width'] && ! empty( $element_atts['height'] ) ) {
    763766                                        // default layout is FIXED-HEIGHT.
    764767                                        if ( ! in_array( 'FIXED-HEIGHT', $rule['layouts']['supported_layouts'] ) ) {
     
    880883
    881884                                // Force schema for amp-iframe tag.
    882                                 if ( empty( $parsed['scheme'] ) && $rule['tag_name'] == 'amp-iframe' ) {
     885                                if ( empty( $parsed['scheme'] ) && 'amp-iframe' == $rule['tag_name'] ) {
    883886                                    $parsed['scheme'] = 'https';
    884887                                }
     
    923926                                        }
    924927                                    }
    925                                     $atts2remove = array_diff_key( $atts2remove, $el_atts ); // Filter extra attrs
     928
     929                                    // Filter extra attrs.
     930                                    $atts2remove = array_diff_key( $atts2remove, $el_atts );
    926931                                    $atts2remove = array_keys( $atts2remove );
    927932                                }
     
    983988                        $element = $elements->item( $i );
    984989
    985                         if ( $tag_name === 'script' && ( $element->parentNode->tagName === 'amp-analytics' || $element->parentNode->tagName === 'amp-geo' || $element->parentNode->tagName === 'amp-consent' ) ) {
     990                        if ( 'script' === $tag_name ) {
    986991                            $atts = self::get_node_attributes( $element );
    987                             if ( isset( $atts['type'] ) && $atts['type'] === 'application/json' ) {
     992
     993                            if ( 'amp-analytics' === $element->parentNode->tagName || 'amp-geo' === $element->parentNode->tagName || 'amp-consent' === $element->parentNode->tagName ) {
     994                                if ( isset( $atts['type'] ) && 'application/json' === $atts['type'] ) {
     995                                    continue;
     996                                }
     997                            } elseif ( isset( $atts['type'] ) && 'application/ld+json' === $atts['type'] ) {
    988998                                continue;
    989999                            }
     
    10021012                for ( $i = $elements->length - 1; $i >= 0; $i -- ) {
    10031013                    $element = $elements->item( $i );
    1004                     $style   = preg_replace( '/\s*!\s*important/', '', $element->nodeValue ); // Remove !important.
     1014
     1015                    // Remove !important.
     1016                    $style = preg_replace( '/\s*!\s*important/', '', $element->nodeValue );
    10051017                    amp_wp_add_inline_style( $style );
    10061018                    self::remove_element( $element );
     
    10531065                            continue;
    10541066                        }
    1055                        
     1067
    10561068                        // Append error handler if not found.
    10571069                    } else {
     
    10641076                        $action_attr_name = 'action';
    10651077                    }
    1066                    
    1067                    
    1068                    
    10691078
    10701079                    $element->setAttribute( $action_attr_name, $action_xhr );
     
    11071116                        $element = $elements->item( $i );
    11081117
    1109                         if ( $element->parentNode->tagName !== 'noscript' ) {
    1110 
    1111                             if ( ! $source = $element->getAttribute( 'src' ) ) {
    1112                                 if ( ! $source = Amp_WP_Html_Util::get_child_tag_attribute( $element, 'source', 'src' ) ) {
    1113                                     $source = Amp_WP_Html_Util::get_child_tag_attribute( $element, 'a', 'href' );
    1114                                 }
    1115                             }
    1116 
    1117                             if ( empty( $source ) || ! preg_match( '#^\s*https://#', $source ) ) {
    1118                                 self::remove_element( $element );
    1119                                 continue;
    1120                             }
    1121 
    1122                             $element->setAttribute( 'src', $source );
    1123                             Amp_WP_Html_Util::renameElement( $element, $tag_info[0] );
    1124 
    1125                             if ( $enqueue ) {
    1126                                 amp_wp_enqueue_script( $tag_info[0], $tag_info[1] );
    1127                                 $enqueue = false;
    1128                             }
     1118                        if ( 'noscript' === $element->parentNode->tagName ) {
     1119                            continue;
     1120                        }
     1121
     1122                        if ( ! $source = $element->getAttribute( 'src' ) ) {
     1123                            if ( ! $source = Amp_WP_Html_Util::get_child_tag_attribute( $element, 'source', 'src' ) ) {
     1124                                $source = Amp_WP_Html_Util::get_child_tag_attribute( $element, 'a', 'href' );
     1125                            }
     1126                        }
     1127
     1128                        if ( empty( $source ) || ! preg_match( '#^\s*https://#', $source ) ) {
     1129                            self::remove_element( $element );
     1130                            continue;
     1131                        }
     1132
     1133                        $element->setAttribute( 'src', $source );
     1134
     1135                        // Fix width.
     1136                        if ( preg_match( '/(\d+)\%/', $element->getAttribute( 'width' ), $match ) ) {
     1137                            $content_width = 738; // $GLOBALS['content_width'];
     1138                            $element->setAttribute(
     1139                                'width',
     1140                                floor( $content_width * $match[1] / 100 )
     1141                            );
     1142                        }
     1143
     1144                        // Fix height.
     1145                        if ( 'auto' === $element->getAttribute( 'height' ) ) {
     1146                            $element->setAttribute(
     1147                                'height',
     1148                                floor( $element->getAttribute( 'width' ) * 0.85 )
     1149                            );
     1150                        }
     1151
     1152                        Amp_WP_Html_Util::renameElement( $element, $tag_info[0] );
     1153
     1154                        if ( $enqueue ) {
     1155                            amp_wp_enqueue_script( $tag_info[0], $tag_info[1] );
     1156                            $enqueue = false;
    11291157                        }
    11301158                    }
     
    12181246        if (
    12191247                $required_atts['width'] &&
    1220                 ( empty( $element_atts['width'] ) || $element_atts['width'] === 'auto' )
     1248                ( empty( $element_atts['width'] ) || 'auto' === $element_atts['width'] )
    12211249        ) {
    12221250            $atts2remove[] = 'layout';
     
    12251253        if (
    12261254                $required_atts['height'] &&
    1227                 ( empty( $element_atts['height'] ) || $element_atts['height'] === 'auto' )
     1255                ( empty( $element_atts['height'] ) || 'auto' === $element_atts['height'] )
    12281256        ) {
    12291257            $atts2remove[] = 'layout';
     
    12311259
    12321260        if ( $atts2remove ) {
    1233             $this->dom->remove_attributes( $element, $atts2remove ); // Remove invalid attributes
     1261            // Remove invalid attributes.
     1262            $this->dom->remove_attributes( $element, $atts2remove );
    12341263        }
    12351264    }
     
    12911320     * @since       1.0.0
    12921321     *
    1293      * @param   $urls   string|array
     1322     * @param string|array $urls Can contains URLs string or array.
    12941323     */
    12951324    public static function set_non_amp_url( $urls ) {
     
    12991328                $last_char = substr( $url, - 1 );
    13001329
    1301                 if ( $last_char === '*' ) {
     1330                if ( '*' === $last_char ) {
    13021331                    if ( empty( self::$non_amp_urls['start_with'] ) ) {
    13031332                        self::$non_amp_urls['start_with'] = '';
  • amp-wp/trunk/includes/class-amp-wp-html-util.php

    r2070880 r2125154  
    169169        }
    170170        return $attributes;
     171       
     172        if ( empty( $attributes['src'] ) ) {
     173            if ( ! empty( $attributes['data-src'] ) && $this->is_valid_url( $attributes['data-src'] ) ) {
     174                $attributes['src'] = $attributes['data-src'];
     175            }
     176        }
     177        return $attributes;
     178    }
     179   
     180    /**
     181     * Is given URL valid?
     182     *
     183     * @param string $url
     184     *
     185     * @since 1.5.8
     186     * @return bool
     187     */
     188    public function is_valid_url( $url ) {
     189        return preg_match( '#^(?: https?:)?// (?: w{3}.)? (.*?)/*$#ix', $url );
    171190    }
    172191
  • amp-wp/trunk/includes/class-amp-wp-menu-walker.php

    r2070880 r2125154  
    11<?php
    2 
    32/**
    43 * Custom class to display navigation menu AMP-Friendly - some like this:
     
    6362     */
    6463    public function end_lvl( &$output, $depth = 0, $args = array() ) {
    65         if ( $this->accordion_childs_started && $depth == 0 ) {
     64        if ( $this->accordion_childs_started && 0 == $depth ) {
    6665            $this->end_accordion_child_wrapper( $output, $depth );
    6766        }
    68         if ( $this->accordion_started && $depth == 0 ) {
     67        if ( $this->accordion_started && 0 == $depth ) {
    6968            $this->end_accordion( $output, $depth );
    7069        }
     
    119118    }
    120119
    121     // start_el.
     120    /**
     121     * Ends the element output, if needed.
     122     *
     123     * @param string $output Used to append additional content.
     124     * @param object $item Page data object.
     125     * @param int    $depth Depth of page.
     126     * @param array  $args An object of wp_nav_menu() arguments.
     127     *
     128     * @return void
     129     */
    122130    public function end_el( &$output, $item, $depth = 0, $args = array() ) { }
    123131
     
    125133     * Adds the start code of accordion
    126134     *
    127      * @param     $output
    128      * @param int    $depth
     135     * @param string $output
     136     * @param int    $depth Depth of page.
    129137     *
    130138     * @since 1.0.0
     
    152160     * Adds acordion childs wrapper div
    153161     *
    154      * @param     $output
     162     * @param string $output
    155163     * @param int    $depth
    156164     *
     
    165173     * Closes the accordion childs wrapper tag
    166174     *
    167      * @param     $output
     175     * @param string $output
    168176     * @param int    $depth
    169177     *
     
    176184
    177185    /**
    178      * @param $item
    179      * @param $depth
    180      * @param $args
    181      * @param $id
     186     * @param string $item
     187     * @param int    $depth
     188     * @param array  $args
     189     * @param int    $id
    182190     *
    183191     * @since 1.0.0
     
    189197        parent::start_el( $current_el, $item, $depth, $args, $id );
    190198
    191         // Unwrap li tag
     199        // Unwrap li tag.
    192200        if ( preg_match( '#<\s*li\s* [^>]* > (.+) #ix', $current_el, $matched ) ) {
    193201            return $matched[1];
  • amp-wp/trunk/includes/class-amp-wp-plugin-compatibility.php

    r2070880 r2125154  
    11<?php
     2
    23/**
    34 * Third Party Plugins Compatibility
     
    2021
    2122        if ( ! is_amp_wp() ) {
    22             return; }
     23            return;
     24        }
    2325
    2426        /**
     
    3234        add_action( 'init', array( __CLASS__, 'wpml_template_hooks' ) );
    3335        add_action( 'template_redirect', array( __CLASS__, 'wpml_template_hooks' ) );
     36
     37        add_action( 'init', array( __CLASS__, 'wp_init' ) );
    3438
    3539        self::$plugins = array_flip( wp_get_active_and_valid_plugins() );
     
    165169         */
    166170        add_action( 'after_setup_theme', 'Amp_WP_Plugin_Compatibility::multi_rating' );
     171
     172        /**
     173         * Snip - The Rich Snippets & Structured Data Plugin
     174         *
     175         * @param Frontend_Controller $instance
     176         *
     177         * @since 1.5.8
     178         */
     179        add_action( 'wpbuddy/rich_snippets/frontend/init', array( __CLASS__, 'rich_snippets' ) );
    167180    }
    168181
     
    208221    public static function pre_init() {
    209222        remove_action( 'init', 'wpspgrpro_init_minify_html', 1 );
     223    }
     224
     225    public static function wp_init() {
     226
     227        if ( class_exists( 'wpForo' ) ) {
     228            add_filter( 'amp_wp_amp_version_exists', array( __CLASS__, 'wpforo_amp_exists' ) );
     229        }
     230    }
     231
     232    /**
     233     * wpForo plugin compatibility.
     234     *
     235     * @link https://wordpress.org/plugins/wpforo/
     236     *
     237     * @param bool $exists
     238     *
     239     * @return bool
     240     */
     241    public static function wpforo_amp_exists( $exists ) {
     242
     243        if ( ! $exists || is_wpforo_page() ) {
     244            return false;
     245        }
     246
     247        return $exists;
    210248    }
    211249
     
    426464         *
    427465         * @since   1.0.0
    428          * @since   1.5.5   Disabled filter 'w3tc_minify_html_enable'
     466         * @since   1.5.5   Disabled filter 'w3tc_minify_html_enable'
    429467         */
    430468        add_filter( 'w3tc_minify_js_enable', '__return_false' );
     
    547585         */
    548586        if ( ! is_callable( 'SQ_Classes_ObjController::getClass' ) ) {
    549             return; }
     587            return;
     588        }
    550589        $object = SQ_Classes_ObjController::getClass( 'SQ_Models_Services_Canonical' );
    551590        remove_filter( 'sq_canonical', array( $object, 'packCanonical' ), 99 );
     
    796835        return $options;
    797836    }
     837
     838    /**
     839     * Snip - The Rich Snippets & Structured Data Plugin
     840     *
     841     * @param Frontend_Controller $instance
     842     *
     843     * @since 1.5.8
     844     */
     845    public static function rich_snippets( $instance ) {
     846        if ( get_option( 'wpb_rs/settings/snippets_in_footer', true ) ) {
     847            add_action( 'amp_wp_template_footer', array( $instance, 'print_snippets' ) );
     848        } else {
     849            add_action( 'amp_wp_template_head', array( $instance, 'print_snippets' ) );
     850        }
     851    }
    798852}
    799853
  • amp-wp/trunk/includes/class-amp-wp-redirect-router.php

    r2070880 r2125154  
    9898        if ( $this->can_redirect_url( $new_url ) ) {
    9999            wp_redirect( $new_url, 301 );
    100             exit;
     100            exit();
    101101        }
    102102    }
     
    112112    protected function can_redirect_url( $url ) {
    113113        list( $url ) = explode( '?', $url );
    114         return ! empty( $url ) && trim( str_replace( home_url(), '', $url ), '/' ) !== trim( $this->request_url, '/' );
     114        return ! empty( $url ) && trim( str_replace( get_option( 'home' ), '', $url ), '/' ) !== trim( $this->request_url, '/' );
    115115    }
    116116
     
    137137         * Skip redirection for amp pages because it looks like like start-point!
    138138         *
    139          * e.g.
     139         * Example given
    140140         *  amp/page/2   right
    141141         *  /page/2/amp  wrong
  • amp-wp/trunk/includes/class-amp-wp-rewrite-rules.php

    r2076574 r2125154  
    11<?php
    2 
    32/**
    43 * Class to generate the custom AMP start/end points
     
    385384        global $wp_rewrite;
    386385
    387         // Remove Exclude Items From extra_permastructs
     386        // Remove Exclude Items From extra_permastructs.
    388387        $extra_permastruct = array_diff_key( $wp_rewrite->extra_permastructs, $this->get_exclude_extra_permastructs() );
    389388
     
    539538        $wp->add_query_var( $query_var );
    540539    } // add_end_point
    541    
     540
    542541    /**
    543542     * Check If a permalink structure contains any numeric rewrite tag like: %year%, %monthnum%, %day%
     
    549548        global $wp_rewrite;
    550549        static $result;
     550
    551551        if ( ! isset( $result ) ) {
    552552            $permalink_structure = str_replace( $wp_rewrite->rewritecode, $wp_rewrite->rewritereplace, get_option( 'permalink_structure' ) );
    553553            $result              = strstr( $permalink_structure, '([0-9]' ) !== false;
    554554        }
     555
    555556        return $result;
    556557    }
    557558}
    558559
    559 // Amp_WP_Rewrite_Rules
     560// Amp_WP_Rewrite_Rules.
    560561$GLOBALS['amp_wp_rewrite_rules'] = new Amp_WP_Rewrite_Rules();
    561562$GLOBALS['amp_wp_rewrite_rules']->init();
     
    564565 * Add a Start Point to Rewrite Rules
    565566 *
    566  * @global  Amp_WP_Rewrite_Rules    $amp_wp_rewrite_rules AMP WP Rewrite API
    567  * @param   string $name
    568  * @param   int    $places
     567 * @global Amp_WP_Rewrite_Rules    $amp_wp_rewrite_rules AMP WP Rewrite API
     568 * @param string $name
     569 * @param int    $places
    569570 *
    570571 * @since   1.0.0
     
    580581 * @global  Amp_WP_Rewrite_Rules    $amp_wp_rewrite_rules AMP WP Rewrite API
    581582 *
    582  * @param   string $name
    583  * @param   int    $places
     583 * @param string $name
     584 * @param int    $places
    584585 *
    585586 * @since   1.4.0
     
    589590    $amp_wp_rewrite_rules->add_end_point( $name, $places );
    590591}
    591    
  • amp-wp/trunk/includes/class-amp-wp-scripts.php

    r2070880 r2125154  
    6363        $attrs  = '';
    6464
    65         if ( substr( $handle, 0, 4 ) === 'amp-' ) {
     65        if ( substr( $handle, 0, 4 ) === 'amp-' && substr( $handle, 0, 12 ) !== 'amp-mustache' ) {
    6666            $attrs .= " custom-element='$handle'";
     67        }
     68       
     69        if ( substr( $handle, 0, 12 ) === 'amp-mustache' ) {
     70            $attrs .= " custom-template='$handle'";
    6771        }
    6872
  • amp-wp/trunk/includes/components/class-amp-wp-img-component.php

    r2076574 r2125154  
    324324     */
    325325    public function get_image_dimension( $url ) {
    326 
    327         $url = $this->normalize_url( $url );
    328         if ( ! ( $url ) ) {
    329             return false; }
    330 
    331         $url_hash  = md5( $url );
    332         $dimension = get_transient( 'amp_wp_dimension_' . $url_hash );
    333         if ( ! ( $dimension ) ) {
    334             if ( $dimension = $this->fetch_image_dimension( $url ) ) {
    335                 set_transient( 'amp_wp_dimension_' . $url_hash, $dimension, HOUR_IN_SECONDS );
    336             } else {
    337                 $dimension = array(
    338                     738, // fallback for width.
    339                     400, // fallback for height.
    340                 );
    341             }
     326       
     327        $hash_key = 'amp_wp_dimension_' . md5( $url );
     328       
     329        $dimension = get_transient( $hash_key );
     330        if ( $dimension ) {
     331            return $dimension;
     332        }
     333       
     334        if ( $normalize_url = $this->normalize_url( $url ) ) {
     335            $dimension = $this->fetch_image_dimension( $normalize_url );
     336        } elseif ( $this->is_data_url( $url ) ) {
     337            if ( $size = @getimagesize( $url ) ) {
     338                $dimension = [ $size[0], $size[1] ];
     339            }
     340        }
     341       
     342        if ( $dimension ) {
     343            set_transient( $hash_key, $dimension, HOUR_IN_SECONDS );
     344        } else {
     345            $dimension = array(
     346                738, // fallback for width
     347                400, // fallback for height
     348            );
    342349        }
    343350
    344351        return $dimension;
     352    }
     353   
     354    /**
     355     * Is this a data-src URL?
     356     *
     357     * @param string $url The URL to check.
     358     *
     359     * @since 1.5.8
     360     * @return bool true on success.
     361     */
     362    public function is_data_url( $url ) {
     363        return (bool) preg_match( '#^\s*data\:.+#', $url );
    345364    }
    346365
  • amp-wp/trunk/includes/components/class-amp-wp-instagram-component.php

    r2076574 r2125154  
    1010 * @since       1.5.6
    1111 */
     12
    1213class Amp_WP_Instagram_Component implements Amp_WP_Component_Interface {
    1314
     
    5556            return $instance;
    5657        }
    57         for ( $i = $nodes_count - 1; $i >= 0; $i -- ) {
     58        for ( $i = $nodes_count - 1; $i >= 0; $i-- ) {
     59           
    5860            $element = $elements->item( $i );
    5961            if ( ! $element ) {
    6062                continue;
    6163            }
     64           
    6265            $post_url = $element->getAttribute( 'data-instgrm-permalink' );
    6366            if ( ! preg_match( '#^(?: https?:)?// (?: w{3}.)? instagram.com /+ p/+ ([^/]+) /*#ix', $post_url, $match ) ) {
    6467                continue;
    6568            }
     69           
    6670            $this->enable_enqueue_scripts = true;
    6771            $attributes                   = array(
     
    7175                'layout'         => 'responsive',
    7276            );
     77           
    7378            $instance->replace_node( $element, 'amp-instagram', $attributes );
    7479        }
     80       
    7581        return $instance;
    7682    }
  • amp-wp/trunk/includes/customizer/amp-wp-core-customizer.php

    r2062068 r2125154  
    705705         */
    706706        $wp_customize->add_setting( 'amp-wp-additional-css', array(
    707             'sanitize_callback' => 'wp_strip_all_tags'
     707            //'sanitize_callback' => 'wp_strip_all_tags'
     708            'sanitize_callback' => 'amp_wp_sanitize_css'
    708709        ));
    709710
  • amp-wp/trunk/includes/functions/amp-wp-ad-functions.php

    r2070880 r2125154  
    4141     * @version 1.0.0
    4242     * @since   1.0.0
     43     *
    4344     * @return  array
    4445     */
  • amp-wp/trunk/includes/functions/amp-wp-core-functions.php

    r2070880 r2125154  
    4444            return false !== $wp_query->get( $amp_qv, false );
    4545        } elseif ( amp_wp_get_permalink_structure() ) {
     46
    4647            $path = trim( dirname( $_SERVER['SCRIPT_NAME'] ), '/' );
    4748
     
    495496     * Converts Parsed URL to Printable Link
    496497     *
    497      * @param $parsed_url
     498     * @param $parsed_url contain parsed URL.
    498499     *
    499500     * @return string
     
    631632    }
    632633endif;
     634
     635if ( ! function_exists( 'amp_wp_sanitize_css' ) ) :
     636    /**
     637     * Sanitize and prepare CSS for amp version
     638     *
     639     * @param string $css
     640     *
     641     * @since 1.5.8
     642     *
     643     * @return string
     644     */
     645    function amp_wp_sanitize_css( $css ) {
     646
     647        // -- Remove !important qualifier. --
     648        $css = preg_replace( '/\s*!\s*important/im', '', $css );
     649
     650        // -- Remove invalid properties. --
     651        $invalid_properties = array(
     652            'behavior',
     653            '-moz-binding',
     654            'filter',
     655            'animation',
     656            'transition',
     657        );
     658        $pattern            = '/((?:' . implode( '|', $invalid_properties ) . ')\s* :[^;]+ ;? \n*\t* )+/xs';
     659        $css                = preg_replace_callback(
     660            $pattern,
     661            function ( $var ) {
     662                return substr( $var[1], - 1 ) === '}' ? '}' : '';
     663            },
     664            $css
     665        );
     666
     667        return $css;
     668    }
     669endif;
  • amp-wp/trunk/includes/functions/amp-wp-formatting-functions.php

    r2057758 r2125154  
    1010    return htmlspecialchars(
    1111        wp_kses(
    12             html_entity_decode( $var ), array(
     12            html_entity_decode( $var ),
     13            array(
    1314                'br'     => array(),
    1415                'em'     => array(),
     
    3435 */
    3536function amp_wp_let_to_num( $size ) {
    36     $l = substr( $size, -1 );
    37     $ret = substr( $size, 0, -1 );
     37    $l    = substr( $size, -1 );
     38    $ret  = substr( $size, 0, -1 );
    3839    $byte = 1024;
    3940
    40     switch( strtoupper( $l ) ) {
     41    switch ( strtoupper( $l ) ) {
    4142        case 'P':
    4243            $ret *= 1024;
  • amp-wp/trunk/includes/functions/amp-wp-template-functions.php

    r2070880 r2125154  
    7878        $is_show_sidebar        = ( isset( $amp_wp_layout_settings['is_show_sidebar'] ) && ! empty( $amp_wp_layout_settings['is_show_sidebar'] ) ) ? $amp_wp_layout_settings['is_show_sidebar'] : '';
    7979
    80         if ( '1' == $is_show_sidebar ) {
     80        if ( 1 === $is_show_sidebar ) {
    8181            amp_wp_enqueue_script( 'amp-sidebar', 'https://cdn.ampproject.org/v0/amp-sidebar-0.1.js' );
    8282        }
     
    11431143     */
    11441144    function amp_wp_consent_submission() {
    1145         $current_url = $site_url = $site_host = $amp_site = '';
     1145        $current_url = '';
     1146        $site_url    = '';
     1147        $site_host   = '';
     1148        $amp_site    = '';
    11461149        $current_url = wp_get_referer();
    11471150        $site_url    = wp_parse_url( get_site_url() );
     
    11841187    }
    11851188endif;
    1186 
    11871189add_filter( 'amp_wp_url_excluded', 'amp_wp_set_excluded_url_format' );
    11881190
  • amp-wp/trunk/includes/functions/amp-wp-utility-functions.php

    r2057758 r2125154  
    99 */
    1010
    11 if( !function_exists( 'amp_wp_remove_query_string' ) ) :
    12     /**
    13      * Remove anything after question mark
    14      *
    15      * Example: pixelative.co/?publisher=great
    16      * becomes: pixelative.co/
    17      *
    18      * @param string $string
    19      *
    20      * @since 1.0.0
    21      *
    22      * @return string
    23      */
    24     function amp_wp_remove_query_string( $string ) {
    25         if( preg_match( '/([^\?]+)\?/', $string, $matches ) ) {
    26             return $matches[1];
    27         }
    28         return $string;
    29     }
    30 endif;
    31 
    32 if( !function_exists( 'amp_wp_filter_attributes' ) ) :
    33     /**
    34      * Filter AMP element attributes
    35      *
    36      * @param   array   $attributes         key-value paired attributes list
    37      * @param   array   $valid_attributes   valid attributes key
    38      * @param   string  $tag_name           optional. amp tag-name
    39      *
    40      * @since   1.0.0
    41      *
    42      * @return  array   filtered attributes
    43      */
    44     function amp_wp_filter_attributes( $attributes, $valid_attributes, $tag_name = '' ) {
    45         $attributes = wp_array_slice_assoc( $attributes, $valid_attributes );
    46         return apply_filters( 'amp_wp_html_dom_filter_attributes', $attributes, $tag_name, $valid_attributes );
    47     }
    48 endif;
    49 
    50 if( !function_exists( 'amp_wp_remove_class_filter' ) ) :
    51     /**
    52      * Remove Class Filter Without Access to Class Object
    53      *
    54      * In order to use the core WordPress remove_filter() on a filter added with the callback
    55      * to a class, you either have to have access to that class object, or it has to be a call
    56      * to a static method.  This method allows you to remove filters with a callback to a class
    57      * you don't have access to.
    58      *
    59      * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
    60      * Updated 2-27-2017 to use internal WordPress removal for 4.7+ (to prevent PHP warnings output)
    61      *
    62      * @param string $tag         Filter to remove
    63      * @param string $class_name  Class name for the filter's callback
    64      * @param string $method_name Method name for the filter's callback
    65      * @param int    $priority    Priority of the filter (default 10)
    66      *
    67      *
    68      * Copyright: https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53
    69      *
    70      * @return bool Whether the function is removed.
    71      */
    72     function amp_wp_remove_class_filter( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
    73         global $wp_filter;
    74 
    75         // Check that filter actually exists first
    76         if( ! isset( $wp_filter[ $tag ] ) ) { return false; }
    77 
    78         /**
    79          * If filter config is an object, means we're using WordPress 4.7+ and the config is no longer
    80          * a simple array, rather it is an object that implements the ArrayAccess interface.
    81          *
    82          * To be backwards compatible, we set $callbacks equal to the correct array as a reference (so $wp_filter is updated)
    83          *
    84          * @see https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/
    85          */
    86         if( is_object( $wp_filter[ $tag ] ) && isset( $wp_filter[ $tag ]->callbacks ) ) {
    87             // Create $fob object from filter tag, to use below
    88             $fob = $wp_filter[ $tag ];
    89             $callbacks = &$wp_filter[ $tag ]->callbacks;
    90         } else {
    91             $callbacks = &$wp_filter[ $tag ];
    92         }
    93 
    94         // Exit if there aren't any callbacks for specified priority
    95         if( !isset( $callbacks[ $priority ] ) || empty( $callbacks[ $priority ] ) ) {
    96             return false;
    97         }
    98 
    99         // Loop through each filter for the specified priority, looking for our class & method
    100         foreach( (array) $callbacks[ $priority ] as $filter_id => $filter ) {
    101             // Filter should always be an array - array( $this, 'method' ), if not goto next
    102             if( !isset( $filter['function'] ) || ! is_array( $filter['function'] ) ) {
    103                 continue;
    104             }
    105             // If first value in array is not an object, it can't be a class
    106             if( !is_object( $filter['function'][0] ) ) {
    107                 continue;
    108             }
    109             // Method doesn't match the one we're looking for, goto next
    110             if( $filter['function'][1] !== $method_name ) {
    111                 continue;
    112             }
    113             // Method matched, now let's check the Class
    114             if( get_class( $filter['function'][0] ) === $class_name ) {
    115                 // WordPress 4.7+ use core remove_filter() since we found the class object
    116                 if( isset( $fob ) ) {
    117                     // Handles removing filter, reseting callback priority keys mid-iteration, etc.
    118                     $fob->remove_filter( $tag, $filter['function'], $priority );
    119                 } else {
    120                     // Use legacy removal process (pre 4.7)
    121                     unset( $callbacks[ $priority ][ $filter_id ] );
    122                     // and if it was the only filter in that priority, unset that priority
    123                     if( empty( $callbacks[ $priority ] ) ) {
    124                         unset( $callbacks[ $priority ] );
    125                     }
    126                     // and if the only filter for that tag, set the tag to an empty array
    127                     if( empty( $callbacks ) ) {
    128                         $callbacks = array();
    129                     }
    130                     // Remove this filter from merged_filters, which specifies if filters have been sorted
    131                     unset( $GLOBALS['merged_filters'][ $tag ] );
    132                 }
    133                 return true;
    134             }
    135         }
    136         return false;
    137     }
    138 endif;
    139 
    140 if( !function_exists( 'amp_wp_remove_class_action' ) ) :
    141     /**
    142      * In order to use the core WordPress remove_action() on an action added with the callback
    143      * to a class, you either have to have access to that class object, or it has to be a call
    144      * to a static method.  This method allows you to remove actions with a callback to a class
    145      * you don't have access to.
    146      *
    147      * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
    148      *
    149      * @param   string  $tag            Action to remove
    150      * @param   string  $class_name     Class name for the action's callback
    151      * @param   string  $method_name    Method name for the action's callback
    152      * @param   int $priority           Priority of the action (default 10)
    153      *
    154      * Copyright: https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53
    155      *
    156      * @return  bool    Whether the function is removed.
    157      */
    158     function amp_wp_remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
    159         amp_wp_remove_class_filter( $tag, $class_name, $method_name, $priority );
    160     }
    161 endif;
    162 
    163 if( !function_exists( 'amp_wp_trans_allowed_html' ) ) :
    164     /**
    165      *
    166      * Handy function for translation wp_kses when we need it for descriptions and help HTMLs
    167      */
    168     function amp_wp_trans_allowed_html() {
    169         return array(
    170             'a' => array(
    171                 'href'   => array(),
    172                 'target' => array(),
    173                 'id'     => array(),
    174                 'class'  => array(),
    175                 'rel'    => array(),
    176                 'style'  => array(),
    177             ),
    178             'span' => array(
    179                 'class' => array(),
    180                 'id'    => array(),
    181                 'style' => array(),
    182             ),
    183             'p' => array(
    184                 'class' => array(),
    185                 'id'    => array(),
    186                 'style' => array(),
    187             ),
    188             'strong' => array(
    189                 'class' => array(),
    190                 'style' => array(),
    191             ),
    192             'hr' => array(
    193                 'class' => array(),
    194             ),
    195             'br' => '',
    196             'b' => '',
    197             'h6' => array(
    198                 'class' => array(),
    199                 'id'    => array(),
    200             ),
    201             'h5' => array(
    202                 'class' => array(),
    203                 'id'    => array(),
    204             ),
    205             'h4' => array(
    206                 'class' => array(),
    207                 'id'    => array(),
    208             ),
    209             'h3' => array(
    210                 'class' => array(),
    211                 'id'    => array(),
    212             ),
    213             'h2' => array(
    214                 'class' => array(),
    215                 'id'    => array(),
    216             ),
    217             'h1' => array(
    218                 'class' => array(),
    219                 'id'    => array(),
    220             ),
    221             'code' => array(
    222                 'class' => array(),
    223                 'id'    => array(),
    224             ),
    225             'em' => array(
    226                 'class' => array(),
    227             ),
    228             'i' => array(
    229                 'class' => array(),
    230             ),
    231             'img' => array(
    232                 'class' => array(),
    233                 'style' => array(),
    234             ),
    235             'label' => array(
    236                 'for'   => array(),
    237                 'style' => array(),
    238             ),
    239             'ol' => array(
    240                 'class' => array(),
    241             ),
    242             'ul' => array(
    243                 'class' => array(),
    244             ),
    245             'li' => array(
    246                 'class' => array(),
    247             ),
    248         );
    249     }
    250 endif;
    251 
    252 if( !function_exists( 'amp_wp_is' ) ) {
    253     /**
    254      * Handy function for checking current AMP WP state
    255      *
    256      * @param   string $id
    257      *
    258      * @version 1.0.0
    259      * @since   1.0.0
    260      *
    261      * @return  bool
    262      */
    263     function amp_wp_is( $id = '' ) {
    264         switch ( $id ) {
    265             /**
    266              * Doing Ajax
    267              */
    268             case 'doing_ajax':
    269             case 'doing-ajax':
    270             case 'ajax':
    271                 return defined( 'DOING_AJAX' ) && DOING_AJAX;
    272             break;
    273 
    274             /**
    275              * Development Mode
    276              */
    277             case 'dev':
    278                 return defined( 'AMPWP_DEV_MODE' ) && AMPWP_DEV_MODE;
    279             break;
    280 
    281             /*
    282              *
    283              * Demo development mode,
    284              * Define This If You Want to Load All Demo Importing Functionality From Your Local Not Remote Server
    285              *
    286              */
    287             case 'demo-dev':
    288                 return defined( 'AMPWP_DEMO_DEV_MODE' ) && AMPWP_DEMO_DEV_MODE;
    289             break;
    290             default:
    291                 return false;
    292         }
    293     }
     11if ( ! function_exists( 'amp_wp_remove_query_string' ) ) :
     12    /**
     13     * Remove anything after question mark
     14     *
     15     * Example: pixelative.co/?publisher=great
     16     * becomes: pixelative.co/
     17     *
     18     * @param string $string
     19     *
     20     * @since 1.0.0
     21     *
     22     * @return string
     23     */
     24    function amp_wp_remove_query_string( $string ) {
     25
     26        $matches = array();
     27        if ( preg_match( '/([^\?]+)\?/', $string, $matches ) ) {
     28            return $matches[1];
     29        }
     30        return $string;
     31    }
     32endif;
     33
     34if ( ! function_exists( 'amp_wp_filter_attributes' ) ) :
     35    /**
     36     * Filter AMP element attributes
     37     *
     38     * @param   array  $attributes         key-value paired attributes list.
     39     * @param   array  $valid_attributes   valid attributes key.
     40     * @param   string $tag_name           optional. amp tag-name.
     41     *
     42     * @since   1.0.0
     43     *
     44     * @return  array   filtered attributes
     45     */
     46    function amp_wp_filter_attributes( $attributes, $valid_attributes, $tag_name = '' ) {
     47        $attributes = wp_array_slice_assoc( $attributes, $valid_attributes );
     48        return apply_filters( 'amp_wp_html_dom_filter_attributes', $attributes, $tag_name, $valid_attributes );
     49    }
     50endif;
     51
     52if ( ! function_exists( 'amp_wp_remove_class_filter' ) ) :
     53    /**
     54     * Remove Class Filter Without Access to Class Object
     55     *
     56     * In order to use the core WordPress remove_filter() on a filter added with the callback
     57     * to a class, you either have to have access to that class object, or it has to be a call
     58     * to a static method.  This method allows you to remove filters with a callback to a class
     59     * you don't have access to.
     60     *
     61     * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
     62     * Updated 2-27-2017 to use internal WordPress removal for 4.7+ (to prevent PHP warnings output)
     63     *
     64     * @param string $tag         Filter to remove.
     65     * @param string $class_name  Class name for the filter's callback.
     66     * @param string $method_name Method name for the filter's callback.
     67     * @param int    $priority    Priority of the filter. (default 10)
     68     *
     69     *
     70     * Copyright: https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53
     71     *
     72     * @return bool Whether the function is removed.
     73     */
     74    function amp_wp_remove_class_filter( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
     75        global $wp_filter;
     76
     77        // Check that filter actually exists first.
     78        if ( ! isset( $wp_filter[ $tag ] ) ) {
     79            return false; }
     80
     81        /**
     82         * If filter config is an object, means we're using WordPress 4.7+ and the config is no longer
     83         * a simple array, rather it is an object that implements the ArrayAccess interface.
     84         *
     85         * To be backwards compatible, we set $callbacks equal to the correct array as a reference (so $wp_filter is updated)
     86         *
     87         * @see https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/
     88         */
     89        if ( is_object( $wp_filter[ $tag ] ) && isset( $wp_filter[ $tag ]->callbacks ) ) {
     90
     91            // Create $fob object from filter tag, to use below.
     92            $fob       = $wp_filter[ $tag ];
     93            $callbacks = &$wp_filter[ $tag ]->callbacks;
     94        } else {
     95            $callbacks = &$wp_filter[ $tag ];
     96        }
     97
     98        // Exit if there aren't any callbacks for specified priority.
     99        if ( ! isset( $callbacks[ $priority ] ) || empty( $callbacks[ $priority ] ) ) {
     100            return false;
     101        }
     102
     103        // Loop through each filter for the specified priority, looking for our class & method.
     104        foreach ( (array) $callbacks[ $priority ] as $filter_id => $filter ) {
     105
     106            // Filter should always be an array - array( $this, 'method' ), if not goto next.
     107            if ( ! isset( $filter['function'] ) || ! is_array( $filter['function'] ) ) {
     108                continue;
     109            }
     110            // If first value in array is not an object, it can't be a class.
     111            if ( ! is_object( $filter['function'][0] ) ) {
     112                continue;
     113            }
     114            // Method doesn't match the one we're looking for, goto next.
     115            if ( $filter['function'][1] !== $method_name ) {
     116                continue;
     117            }
     118            // Method matched, now let's check the Class.
     119            if ( get_class( $filter['function'][0] ) === $class_name ) {
     120
     121                // WordPress 4.7+ use core remove_filter() since we found the class object.
     122                if ( isset( $fob ) ) {
     123                    // Handles removing filter, reseting callback priority keys mid-iteration, etc.
     124                    $fob->remove_filter( $tag, $filter['function'], $priority );
     125                } else {
     126                    // Use legacy removal process (pre 4.7).
     127                    unset( $callbacks[ $priority ][ $filter_id ] );
     128
     129                    // and if it was the only filter in that priority, unset that priority.
     130                    if ( empty( $callbacks[ $priority ] ) ) {
     131                        unset( $callbacks[ $priority ] );
     132                    }
     133
     134                    // and if the only filter for that tag, set the tag to an empty array.
     135                    if ( empty( $callbacks ) ) {
     136                        $callbacks = array();
     137                    }
     138
     139                    // Remove this filter from merged_filters, which specifies if filters have been sorted.
     140                    unset( $GLOBALS['merged_filters'][ $tag ] );
     141                }
     142                return true;
     143            }
     144        }
     145        return false;
     146    }
     147endif;
     148
     149if ( ! function_exists( 'amp_wp_remove_class_action' ) ) :
     150    /**
     151     * In order to use the core WordPress remove_action() on an action added with the callback
     152     * to a class, you either have to have access to that class object, or it has to be a call
     153     * to a static method.  This method allows you to remove actions with a callback to a class
     154     * you don't have access to.
     155     *
     156     * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
     157     *
     158     * @param   string $tag            Action to remove.
     159     * @param   string $class_name     Class name for the action's callback.
     160     * @param   string $method_name    Method name for the action's callback.
     161     * @param   int    $priority           Priority of the action (default 10).
     162     *
     163     *    Copyright: https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53
     164     *
     165     * @return  bool Whether the function is removed.
     166     */
     167    function amp_wp_remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
     168        amp_wp_remove_class_filter( $tag, $class_name, $method_name, $priority );
     169    }
     170endif;
     171
     172if ( ! function_exists( 'amp_wp_trans_allowed_html' ) ) :
     173    /**
     174     *
     175     * Handy function for translation wp_kses when we need it for descriptions and help HTMLs
     176     */
     177    function amp_wp_trans_allowed_html() {
     178        return array(
     179            'a'      => array(
     180                'href'   => array(),
     181                'target' => array(),
     182                'id'     => array(),
     183                'class'  => array(),
     184                'rel'    => array(),
     185                'style'  => array(),
     186            ),
     187            'span'   => array(
     188                'class' => array(),
     189                'id'    => array(),
     190                'style' => array(),
     191            ),
     192            'p'      => array(
     193                'class' => array(),
     194                'id'    => array(),
     195                'style' => array(),
     196            ),
     197            'strong' => array(
     198                'class' => array(),
     199                'style' => array(),
     200            ),
     201            'hr'     => array(
     202                'class' => array(),
     203            ),
     204            'br'     => '',
     205            'b'      => '',
     206            'h6'     => array(
     207                'class' => array(),
     208                'id'    => array(),
     209            ),
     210            'h5'     => array(
     211                'class' => array(),
     212                'id'    => array(),
     213            ),
     214            'h4'     => array(
     215                'class' => array(),
     216                'id'    => array(),
     217            ),
     218            'h3'     => array(
     219                'class' => array(),
     220                'id'    => array(),
     221            ),
     222            'h2'     => array(
     223                'class' => array(),
     224                'id'    => array(),
     225            ),
     226            'h1'     => array(
     227                'class' => array(),
     228                'id'    => array(),
     229            ),
     230            'code'   => array(
     231                'class' => array(),
     232                'id'    => array(),
     233            ),
     234            'em'     => array(
     235                'class' => array(),
     236            ),
     237            'i'      => array(
     238                'class' => array(),
     239            ),
     240            'img'    => array(
     241                'class' => array(),
     242                'style' => array(),
     243            ),
     244            'label'  => array(
     245                'for'   => array(),
     246                'style' => array(),
     247            ),
     248            'ol'     => array(
     249                'class' => array(),
     250            ),
     251            'ul'     => array(
     252                'class' => array(),
     253            ),
     254            'li'     => array(
     255                'class' => array(),
     256            ),
     257        );
     258    }
     259endif;
     260
     261if ( ! function_exists( 'amp_wp_is' ) ) {
     262    /**
     263     * Handy function for checking current AMP WP state
     264     *
     265     * @param   string $id
     266     *
     267     * @version 1.0.0
     268     * @since   1.0.0
     269     *
     270     * @return  bool
     271     */
     272    function amp_wp_is( $id = '' ) {
     273        switch ( $id ) {
     274            /**
     275             * Doing Ajax
     276             */
     277            case 'doing_ajax':
     278            case 'doing-ajax':
     279            case 'ajax':
     280                return defined( 'DOING_AJAX' ) && DOING_AJAX;
     281            break;
     282
     283            /**
     284             * Development Mode
     285             */
     286            case 'dev':
     287                return defined( 'AMPWP_DEV_MODE' ) && AMPWP_DEV_MODE;
     288            break;
     289
     290            /*
     291             *
     292             * Demo development mode,
     293             * Define This If You Want to Load All Demo Importing Functionality From Your Local Not Remote Server
     294             *
     295             */
     296            case 'demo-dev':
     297                return defined( 'AMPWP_DEMO_DEV_MODE' ) && AMPWP_DEMO_DEV_MODE;
     298            break;
     299            default:
     300                return false;
     301        }
     302    }
    294303}
    295304
     
    297306 * Retrieves the full AMP-specific permalink for the given post ID.
    298307 *
    299  * @since   1.0.0
    300  *
    301  * @param   int     $post_id Post ID.
    302  *
    303  * @return  string  AMP permalink.
     308 * @since   1.0.0
     309 *
     310 * @param   int $post_id Post ID.
     311 *
     312 * @return  string  AMP permalink.
    304313 */
    305314function amp_wp_get_permalink( $post_id ) {
    306315
    307     /**
    308     * Filters the AMP permalink to short-circuit normal generation.
    309     *
    310     * Returning a non-false value in this filter will cause the `get_permalink()` to get called and the `amp_wp_get_permalink` filter to not apply.
    311     *
    312     * @since 0.4
    313     *
    314     * @param false $url     Short-circuited URL.
    315     * @param int   $post_id Post ID.
    316     */
    317     $pre_url = apply_filters( 'amp_wp_pre_get_permalink', false, $post_id );
    318 
    319     if( false !== $pre_url ) {
    320         return $pre_url;
    321     }
    322 
    323     if( amp_wp_is_canonical() ) {
    324         $amp_url = get_permalink( $post_id );
    325     } else {
    326         $parsed_url = wp_parse_url( get_permalink( $post_id ) );
    327         $structure = get_option( 'permalink_structure' );
    328         if( empty( $structure ) || !empty( $parsed_url['query'] ) || is_post_type_hierarchical( get_post_type( $post_id ) ) ) {
    329             $amp_url = add_query_arg( Amp_WP_Public::AMP_WP_STARTPOINT, '', get_permalink( $post_id ) );
    330         } else {
    331             $amp_url = trailingslashit( get_permalink( $post_id ) ) . user_trailingslashit( Amp_WP_Public::AMP_WP_STARTPOINT, 'single_amp' );
    332         }
    333     }
    334 
    335     /**
    336     * Filters AMP Permalink.
    337     *
    338     * @since 1.0.0
    339     *
    340     * @param   false   $amp_url    AMP URL.
    341     * @param   int     $post_id    Post ID.
    342     */
    343     return apply_filters( 'amp_wp_get_permalink', $amp_url, $post_id );
     316    /**
     317    * Filters the AMP permalink to short-circuit normal generation.
     318    *
     319    * Returning a non-false value in this filter will cause the `get_permalink()` to get called and the `amp_wp_get_permalink` filter to not apply.
     320    *
     321    * @since 0.4
     322    *
     323    * @param false $url     Short-circuited URL.
     324    * @param int   $post_id Post ID.
     325    */
     326    $pre_url = apply_filters( 'amp_wp_pre_get_permalink', false, $post_id );
     327
     328    if ( false !== $pre_url ) {
     329        return $pre_url;
     330    }
     331
     332    if ( amp_wp_is_canonical() ) {
     333        $amp_url = get_permalink( $post_id );
     334    } else {
     335        $parsed_url = wp_parse_url( get_permalink( $post_id ) );
     336        $structure = get_option( 'permalink_structure' );
     337        if ( empty( $structure ) || ! empty( $parsed_url['query'] ) || is_post_type_hierarchical( get_post_type( $post_id ) ) ) {
     338            $amp_url = add_query_arg( Amp_WP_Public::AMP_WP_STARTPOINT, '', get_permalink( $post_id ) );
     339        } else {
     340            $amp_url = trailingslashit( get_permalink( $post_id ) ) . user_trailingslashit( Amp_WP_Public::AMP_WP_STARTPOINT, 'single_amp' );
     341        }
     342    }
     343
     344    /**
     345    * Filters AMP Permalink.
     346    *
     347    * @since 1.0.0
     348    *
     349    * @param   false   $amp_url    AMP URL.
     350    * @param   int     $post_id    Post ID.
     351    */
     352    return apply_filters( 'amp_wp_get_permalink', $amp_url, $post_id );
    344353}
    345354
     
    356365 */
    357366function amp_wp_is_canonical() {
    358     $support = get_theme_support( 'amp' );
    359     if( true === $support ) {
    360         return true;
    361     }
    362     if( is_array( $support ) ) {
    363         $args = array_shift( $support );
    364         if( empty( $args['template_dir'] ) ) {
    365             return true;
    366         }
    367     }
    368     return false;
     367    $support = get_theme_support( 'amp' );
     368    if ( true === $support ) {
     369        return true;
     370    }
     371    if ( is_array( $support ) ) {
     372        $args = array_shift( $support );
     373        if ( empty( $args['template_dir'] ) ) {
     374            return true;
     375        }
     376    }
     377    return false;
    369378}
    370379
    371 if( !function_exists( 'amp_wp_transpile_text_to_pattern' ) ) :
     380if ( ! function_exists( 'amp_wp_transpile_text_to_pattern' ) ) :
    372381
    373382    /**
    374383     * Compile the given string to valid PCRE pattern.
    375384     *
    376      * @param   string  $text       The formatted text.
    377      * @param   string  $delimiter  Pattern delimiter.
    378      *
    379      * @since   1.4.1
    380      * @return  string
     385     * @param   string $text       The formatted text.
     386     * @param   string $delimiter  Pattern delimiter.
     387     *
     388     * @since   1.4.1
     389     * @return  string
    381390     */
    382391    function amp_wp_transpile_text_to_pattern( $text, $delimiter = '#' ) {
    383392
    384         $pattern = preg_replace( '/ ( (?<!\\\) \* ) /x', '@@CAPTURE@@', $text );
    385         $pattern = preg_quote( $pattern, $delimiter );
    386         $pattern = str_replace( '@@CAPTURE@@', '[^/]+', $pattern );
     393        $should_all_be_blocked = substr( $text, strlen( $text ) - 1 ) == '*';
     394        $pattern               = preg_replace( '/ ( (?<!\\\) \* ) /x', '@@CAPTURE@@', $text );
     395        $pattern               = preg_quote( $pattern, $delimiter );
     396        $pattern               = str_replace( '@@CAPTURE@@', ( $should_all_be_blocked ? '+.*' : '$' ), $pattern );
    387397
    388398        return $pattern;
  • amp-wp/trunk/public/class-amp-wp-public.php

    r2076574 r2125154  
    33 * The public-facing functionality of the plugin.
    44 *
    5  * @link       http://pixelative.co
    6  * @since      1.0.0
     5 * @link http://pixelative.co
     6 * @since 1.0.0
    77 *
    8  * @package    Amp_WP
     8 * @package Amp_WP
    99 * @subpackage Amp_WP/public
    1010 */
     
    4343     * Default endpoint for AMP URL of site. This can be overridden by filter.
    4444     *
    45      * @since   1.0.4
     45     * @since   1.0.4
    4646     */
    4747    const SLUG = 'amp';
     
    5858
    5959    /**
    60      * pre_get_posts hook priority
     60     * Hook 'pre_get_posts' priority
    6161     *
    6262     * @var      int
     
    105105        $this->version     = $version;
    106106
    107         // Setup Initial Configurations for AMP WP
     107        // Setup Initial Configurations for AMP WP.
    108108        add_action( 'amp_wp_default_configurations', array( $this, 'default_configurations' ) );
    109109
    110110        $this->register_autoload();
    111111
    112         // Registers the AMP Rewrite Rules
     112        // Registers the AMP Rewrite Rules.
    113113        add_action( 'init', array( $this, 'amp_wp_add_rewrite' ) );
    114114        add_action( 'init', array( $this, 'amp_wp_append_index_rewrite_rule' ) );
    115115
    116         // Initialize AMP Components
     116        // Initialize AMP Components.
    117117        add_action( 'init', array( $this, 'amp_wp_include_components' ) );
    118118
    119         // Changes Page Template File With AMP Template File
     119        // Changes Page Template File With AMP Template File.
    120120        add_filter( 'template_include', array( $this, 'amp_wp_include_template_file' ), 9999 );
    121121
    122         // Override Template File
     122        // Override Template File.
    123123        add_filter( 'comments_template', array( $this, 'amp_wp_override_comments_template' ), 9999 );
    124124
    125         // Initialize AMP Theme and It’s Functionality
     125        // Initialize AMP Theme and It’s Functionality.
    126126        add_action( 'after_setup_theme', array( $this, 'amp_wp_template_functions' ), 1 );
    127127
    128         // Register the AMP special shortcode ports
     128        // Register the AMP special shortcode ports.
    129129        add_filter( 'the_content', array( $this, 'register_components_shortcodes' ), 1 );
    130130
     
    133133        add_action( 'wp', array( $this, 'amp_wp_replace_internal_links_with_amp_version' ) );
    134134
    135         // Registers All Components Scripts Into the Header Style and Scripts
     135        // Registers All Components Scripts Into the Header Style and Scripts.
    136136        add_action( 'amp_wp_template_enqueue_scripts', array( $this, 'amp_wp_enqueue_components_scripts' ) );
    137137
    138         // Let the Components to Do Their Functionality in Head
     138        // Let the Components to Do Their Functionality in Head.
    139139        add_action( 'amp_wp_template_head', array( $this, 'amp_wp_trigger_component_head' ), 0 );
    140140
     
    153153        add_filter( 'request', array( $this, 'amp_wp_fix_search_page_queries' ) );
    154154
    155         // Auto Redirect Mobile Users
     155        // Auto Redirect Mobile Users.
    156156        add_action( 'template_redirect', array( $this, 'amp_wp_auto_redirect_to_amp' ), 1 );
    157157
    158         // Init AMP WP JSON-LD
     158        // Init AMP WP JSON-LD.
    159159        add_action( 'template_redirect', 'Amp_WP_Public::amp_wp_init_json_ld', 1 );
    160160
    161161        $this->amp_wp_fix_front_page_display_options();
    162162
    163         // Fire the modules
     163        // Fire the modules.
    164164        Amp_WP_Redirect_Router::Run();
    165165    }
     
    178178        update_option( 'amp_wp_general_settings', array( 'theme_name' => 'tez' ) );
    179179
    180         // General Settings Setup
     180        // General Settings Setup.
    181181        $general_default_settings = array(
    182182            'amp_on_home'          => 1,
     
    248248     * Autoload handler for AMP WP classes only
    249249     *
    250      * @param string $class_name class to include
     250     * @param string $class_name Class to include.
    251251     *
    252252     * @since 1.0.0
     
    262262        $sanitized_class_name = str_replace( '_', '-', $sanitized_class_name );
    263263
    264         // Remove interface suffix
     264        // Remove interface suffix.
    265265        if ( $is_interface ) {
    266266            $sanitized_class_name = substr( $sanitized_class_name, 0, - 10 );
     
    297297     * @version 1.0.0
    298298     * @since   1.0.0
    299      *
    300      * @return  array
    301299     */
    302300    public function amp_wp_append_index_rewrite_rule() {
     
    329327        include AMP_WP_DIR_PATH . 'includes/components/class-amp-wp-carousel-component.php';
    330328        include AMP_WP_DIR_PATH . 'includes/components/class-amp-wp-instagram-component.php';
     329        include AMP_WP_DIR_PATH . 'includes/components/class-amp-wp-playbuzz-component.php';
    331330    }
    332331
     
    443442     */
    444443    public function amp_wp_replace_internal_links_with_amp_version( $wp ) {
    445         // if( empty( $wp->query_vars['amp'] ) ) {
     444
     445        // if( empty( $wp->query_vars['amp'] ) ) {.
    446446        if ( ! isset( $wp->query_vars['amp'] ) ) {
    447447            return;
     
    463463     * Transform allowed posts URL to AMP
    464464     *
    465      * @param   string      $url  The Post’s Permalink
    466      * @param   WP_Post|int $post The post object/id of the post.
     465     * @param string      $url  The Post's Permalink.
     466     * @param WP_Post|int $post The post object/id of the post.
    467467     *
    468468     * @since   1.0.0
     
    472472        $post_id = isset( $post->ID ) ? $post->ID : $post;
    473473
     474        if ( 'page' == $this->amp_wp_get_option( 'show_on_front' ) && $post_id == $this->amp_wp_get_option( 'page_on_front' ) ) {
     475            $url = home_url( '/' );
     476        }
     477
    474478        if ( isset( $this->excluded_posts_id[ $post_id ] ) ) {
    475479            return $url;
    476480        }
     481
    477482        return Amp_WP_Content_Sanitizer::transform_to_amp_url( $url );
    478483    }
     
    489494        amp_wp_enqueue_script( $deps[0], 'https://cdn.ampproject.org/v0.js' );
    490495
    491         // Enqueues all needed scripts of components with 'ampproject' dependency
     496        // Enqueues all needed scripts of components with 'ampproject' dependency.
    492497        $this->amp_wp_call_components_method( 'enqueue_amp_scripts', $deps );
    493498
     
    568573
    569574            preg_match( '#(<\s*body[^>]*>)#isx', $content, $match );
    570             $prepend .= isset( $match[1] ) ? $match[1] : '<body>'; // open body tag
     575            $prepend .= isset( $match[1] ) ? $match[1] : '<body>'; // Open body tag.
    571576
    572577            $this->amp_wp_render_content( $instance, true ); // Convert HTML top amp html
    573             // @see Amp_WP_Component::enqueue_amp_tags_script
     578            // @see 'Amp_WP_Component::enqueue_amp_tags_script'.
    574579            $this->amp_wp_call_components_method( 'enqueue_amp_tags_script', $instance );
    575580
    576581            $content = $instance->get_content( true );
    577             // End convert output to valid amp html
     582            // End convert output to valid amp html.
    578583        }
    579584
     
    619624        }
    620625
    621         // collect and prepare method arguments
     626        // Collect and prepare method arguments.
    622627        $args = func_get_args();
    623628        $args = array_slice( $args, 1 );
     
    626631        }
    627632
    628         // iterate registered components and call method on them
     633        // Iterate registered components and call method on them.
    629634        foreach ( $amp_wp_registered_components as $component ) {
    630635            $instance = Amp_WP_Component::instance( $component['component_class'] );
     
    747752    public function redirect_to_start_point_amp() {
    748753
    749         // Disable Functionality in Customizer Preview
     754        // Disable Functionality in Customizer Preview.
    750755        if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) {
    751756            return; }
     
    795800    public function redirect_to_end_point_amp() {
    796801
    797         // Disable Functionality in Customizer Preview
     802        // Disable Functionality in Customizer Preview.
    798803        if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) {
    799804            return; }
     
    888893        }
    889894
    890         // if post have not AMP version
     895        // if post have not AMP version.
    891896        if ( ! $this->amp_version_exists() ) {
    892897            return;
     
    922927        }
    923928
    924         // Fix for "WP Fastest Cache" plugin
     929        // Fix for "WP Fastest Cache" plugin.
    925930        if ( $plugins = array_flip( wp_get_active_and_valid_plugins() ) ) {
    926931            return isset( $plugins[ WP_PLUGIN_DIR . '/wp-fastest-cache/wpFastestCache.php' ] );
     
    945950            return;
    946951        }
    947         // global $wp_filesystem;
    948         // $wp_filesystem->get_contents( amp_wp_min_suffix( AMP_WP_DIR_PATH . 'public/js/mobile_redirect', '.js' ) );
     952        // global $wp_filesystem.
    949953        $script = file_get_contents( amp_wp_min_suffix( AMP_WP_DIR_PATH . 'public/js/mobile_redirect', '.js' ) );
    950954        $script = str_replace( '%%amp_permalink%%', $amp_permalink, $script );
     
    971975            }
    972976
    973             // Config AMP WP JSON-LD
     977            // Config AMP WP JSON-LD.
    974978            add_filter( 'amp_wp_json_ld_config', 'Amp_WP_Public::config_json_ld', 15 );
    975979        }
     
    10641068        static $filters;
    10651069
    1066         // if( Amp_WP_Public::is_amp_excluded_by_url() ) {
    1067         // return false;
    1068         // }
     1070        if ( self::is_amp_excluded_by_url() ) {
     1071            return apply_filters( 'amp_wp_amp_version_exists', false );
     1072        }
     1073
    10691074        if ( ! isset( $filters ) ) {
    10701075            $filters = wp_parse_args(
     
    10911096
    10921097        if ( $post_id ) {
    1093             // if( get_post_meta( $post_id, 'disable-amp-wp', true ) || isset( $this->excluded_posts_id[$post_id] ) ) {
     1098            // if( get_post_meta( $post_id, 'disable-amp-wp', true ) || isset( $this->excluded_posts_id[$post_id] ) ) {.
    10941099            if ( get_post_meta( $post_id, 'disable-amp-wp', true ) ) {
    1095                 return false;
     1100                return apply_filters( 'amp_wp_amp_version_exists', false );
    10961101            }
    10971102        }
    10981103
    10991104        if ( empty( $filters ) ) {
    1100             return true;
    1101         }
     1105            return apply_filters( 'amp_wp_amp_version_exists', true );
     1106        }
     1107
    11021108        if ( is_home() || is_front_page() ) {
    1103             return ! $filters['disabled_homepage'];
    1104         }
     1109            return apply_filters( 'amp_wp_amp_version_exists', ! $filters['disabled_homepage'] );
     1110        }
     1111
    11051112        if ( is_search() ) {
    1106             return ! $filters['disabled_search'];
    1107         }
     1113            return apply_filters( 'amp_wp_amp_version_exists', ! $filters['disabled_search'] );
     1114        }
     1115
    11081116        if ( is_singular() ) {
    1109             return ! in_array( get_queried_object()->post_type, $filters['disabled_post_types'] );
    1110         }
     1117            return apply_filters( 'amp_wp_amp_version_exists', ! in_array( get_queried_object()->post_type, $filters['disabled_post_types'] ) );
     1118        }
     1119
    11111120        if ( is_post_type_archive() ) {
    11121121            $queried_object = get_queried_object();
    1113             if ( $queried_object instanceof WP_Post_Type ) { // WP >= 4.6.0
     1122            if ( $queried_object instanceof WP_Post_Type ) { // WP >= 4.6.0.
    11141123                $post_type = $queried_object->name;
    1115             } elseif ( $queried_object instanceof WP_Post ) { // WP < 4.6.0
     1124            } elseif ( $queried_object instanceof WP_Post ) { // WP < 4.6.0.
    11161125                $post_type = $queried_object->post_type;
    11171126            } else {
    1118                 return false;
    1119             }
    1120             return ! in_array( $post_type, $filters['disabled_post_types'] );
    1121         }
     1127                return apply_filters( 'amp_wp_amp_version_exists', false );
     1128            }
     1129            return apply_filters( 'amp_wp_amp_version_exists', ! in_array( $post_type, $filters['disabled_post_types'] ) );
     1130        }
     1131
    11221132        if ( is_tax() || is_category() || is_tag() ) {
    1123             return ! in_array( get_queried_object()->taxonomy, $filters['disabled_taxonomies'] );
    1124         }
    1125         return true;
     1133            return apply_filters( 'amp_wp_amp_version_exists', ! in_array( get_queried_object()->taxonomy, $filters['disabled_taxonomies'] ) );
     1134        }
     1135
     1136        return apply_filters( 'amp_wp_amp_version_exists', true );
    11261137    }
    11271138
     
    11341145     */
    11351146    protected static function is_amp_excluded_by_url() {
    1136         if ( ! $excluded_patterns = amp_wp_excluded_urls_format() ) {
     1147
     1148        $excluded_patterns = amp_wp_excluded_urls_format();
     1149
     1150        if ( ! $excluded_patterns ) {
    11371151            return false;
    11381152        }
    11391153
    1140         // Get current page
    1141         $current_path = trim( str_replace( home_url(), '', amp_wp_guess_non_amp_url() ), '/' );
     1154        /**
     1155         * Get current page.
     1156         * $current_path = trim( str_replace( home_url(), '', amp_wp_guess_non_amp_url() ), '/' );
     1157         */
     1158        $current_path = amp_wp_guess_non_amp_url();
    11421159        foreach ( $excluded_patterns as $url_format ) {
    11431160
     
    11461163            }
    11471164
    1148             $url_format = trim( $url_format, '/' ); // throw surrounded slash away
    1149 
    1150             // Format given url to valid PCRE regex
    1151             $pattern = amp_wp_transpile_text_to_pattern( $url_format, '#' );
    1152             $pattern = '#^/?' . $pattern . '/*$#i';
    1153 
    1154             // Check if the given url is match with current page url path
    1155             if ( preg_match( $pattern, $current_path ) ) {
    1156                 return true;
     1165            $url_format    = trim( $url_format );
     1166            $apply_reg_exp = substr( $url_format, strlen( $url_format ) - 1 ) == '*';
     1167            if ( $apply_reg_exp ) {
     1168
     1169                // Format given url to valid PCRE regex.
     1170                $pattern = amp_wp_transpile_text_to_pattern( $url_format, '/' );
     1171                $pattern = '/' . trim( $pattern ) . '/';
     1172                if ( preg_match( $pattern, $current_path ) ) {
     1173                    return true;
     1174                }
     1175            } else {
     1176                if ( trim( $url_format, '/' ) == trim( $current_path, '/' ) ) {
     1177                    return true;
     1178                }
    11571179            }
    11581180        }
Note: See TracChangeset for help on using the changeset viewer.