diff --git a/wp/license.txt b/wp/license.txt
new file mode 100644
index 00000000..a5e2c796
--- /dev/null
+++ b/wp/license.txt
@@ -0,0 +1,384 @@
+WordPress - Web publishing software
+
+Copyright 2011-2023 by the contributors
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+This program incorporates work covered by the following copyright and
+permission notices:
+
+ b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com
+
+ Wherever third party code has been used, credit has been given in the code's
+ comments.
+
+ b2 is released under the GPL
+
+and
+
+ WordPress - Web publishing software
+
+ Copyright 2003-2010 by the contributors
+
+ WordPress is released under the GPL
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ Semantic Personal Publishing Platform Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I am proud to be a part of. Thousands of hours have gone into WordPress, and we are dedicated to making it better every day. Thank you for making it part of your world. — Matt Mullenweg WordPress can import from a number of systems. First you need to get WordPress installed and working as described above, before using our import tools. If you have any questions that are not addressed in this document, please take advantage of WordPress’ numerous online resources: WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better—you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgeable than yourself, or writing the author of a media article that overlooks us. WordPress is the official continuation of b2/cafélog, which came from Michel V. The work has been continued by the WordPress developers. If you would like to support WordPress, please consider donating. WordPress is free software, and is released under the terms of the GPL (GNU General Public License) version 2 or (at your option) any later version. See license.txt.
+
+
+First Things First
+Installation: Famous 5-minute install
+
+
+
+wp-config.php file with your database connection details.
+
+
+ wp-config-sample.php with a text editor like WordPad or similar and fill in your database connection details.wp-config.php and upload it.wp-config.php file, and try again. If it fails again, please go to the WordPress support forums with as much data as you can gather.admin.Updating
+Using the Automatic Updater
+
+
+
+Updating Manually
+
+
+
+index.php.Migrating from other systems
+System Requirements
+
+
+Recommendations
+
+
+
+Online Resources
+
+
+
+Final Notes
+
+
+
+Share the Love
+License
+
+ +
+ Version %1$s addressed %2$s bug.', + 'Version %1$s addressed %2$s bugs.', + 4 + ), + '6.4.1', + '4' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version. */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '6.4.1' ) + ) + ); + ?> +
diff --git a/wp/wp-admin/includes/class-file-upload-upgrader.php b/wp/wp-admin/includes/class-file-upload-upgrader.php index 2b76e41e..e6256151 100644 --- a/wp/wp-admin/includes/class-file-upload-upgrader.php +++ b/wp/wp-admin/includes/class-file-upload-upgrader.php @@ -69,6 +69,30 @@ class File_Upload_Upgrader { wp_die( $file['error'] ); } + if ( 'pluginzip' === $form || 'themezip' === $form ) { + $archive_is_valid = false; + + /** This filter is documented in wp-admin/includes/file.php */ + if ( class_exists( 'ZipArchive', false ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) { + $archive = new ZipArchive(); + $archive_is_valid = $archive->open( $file['file'], ZIPARCHIVE::CHECKCONS ); + + if ( true === $archive_is_valid ) { + $archive->close(); + } + } else { + require_once ABSPATH . 'wp-admin/includes/class-pclzip.php'; + + $archive = new PclZip( $file['file'] ); + $archive_is_valid = is_array( $archive->properties() ); + } + + if ( true !== $archive_is_valid ) { + wp_delete_file( $file['file'] ); + wp_die( __( 'Incompatible Archive.' ) ); + } + } + $this->filename = $_FILES[ $form ]['name']; $this->package = $file['file']; diff --git a/wp/wp-admin/includes/schema.php b/wp/wp-admin/includes/schema.php index d339af3b..20648d7d 100644 --- a/wp/wp-admin/includes/schema.php +++ b/wp/wp-admin/includes/schema.php @@ -599,14 +599,12 @@ function populate_options( array $options = array() ) { $autoload = 'yes'; } - if ( is_array( $value ) ) { - $value = serialize( $value ); - } - if ( ! empty( $insert ) ) { $insert .= ', '; } + $value = maybe_serialize( sanitize_option( $option, $value ) ); + $insert .= $wpdb->prepare( '(%s, %s, %s)', $option, $value, $autoload ); } diff --git a/wp/wp-admin/update.php b/wp/wp-admin/update.php index 29480c28..090c37cf 100644 --- a/wp/wp-admin/update.php +++ b/wp/wp-admin/update.php @@ -154,6 +154,10 @@ if ( isset( $_GET['action'] ) ) { check_admin_referer( 'plugin-upload' ); + if ( isset( $_FILES['pluginzip']['name'] ) && ! str_ends_with( strtolower( $_FILES['pluginzip']['name'] ), '.zip' ) ) { + wp_die( __( 'Only .zip archives may be uploaded.' ) ); + } + $file_upload = new File_Upload_Upgrader( 'pluginzip', 'package' ); // Used in the HTML title tag. @@ -302,6 +306,10 @@ if ( isset( $_GET['action'] ) ) { check_admin_referer( 'theme-upload' ); + if ( isset( $_FILES['themezip']['name'] ) && ! str_ends_with( strtolower( $_FILES['themezip']['name'] ), '.zip' ) ) { + wp_die( __( 'Only .zip archives may be uploaded.' ) ); + } + $file_upload = new File_Upload_Upgrader( 'themezip', 'package' ); // Used in the HTML title tag. diff --git a/wp/wp-config-sample.php b/wp/wp-config-sample.php new file mode 100644 index 00000000..feb1137f --- /dev/null +++ b/wp/wp-config-sample.php @@ -0,0 +1,96 @@ + 1) { - for (var x = 1; x < v.length; x++) { - var att = v[x].split('='); - if (att.length === 2) { - var key = att[0]; - atts[key] = att[1].split("'").join(''); - } - } - } - var value = ''; - switch (tag) { - case 'CF7_GET': - value = dtx.get(atts); - break; - case 'CF7_referrer': - value = dtx.referrer(atts); - break; - case 'CF7_URL': - value = dtx.current_url(atts); - break; - case 'CF7_get_cookie': - value = dtx.get_cookie(atts); - break; - case 'CF7_guid': - value = dtx.guid(); - break; - case 'CF7_get_current_var': - if (dtx.validKey(atts, 'key') && atts.key == 'url') { - value = dtx.current_url(atts); - } else { - return; // Do nothing, current page variables are safe to cache, just use the value that was calculated by server - } - break; - case 'CF7_get_post_var': // Current post variables are safe to cache - case 'CF7_get_custom_field': // Meta data is safe to cache - case 'CF7_get_taxonomy': // Terms are safe to cache - case 'CF7_get_attachment': // Media attachment info is safe to cache - case 'CF7_bloginfo': // Site info is safe to cache - case 'CF7_get_theme_option': // Theme options are safe to cache - return; // Do nothing, just use the value that was calculated by server - default: - if (tag) { - // Queue the requests for an AJAX call at the end of init - dtx.queue.push({ 'value': raw_value, 'multiline': $input.is('textarea') }); - } - return; // Don't continue after queuing it for AJAX - } - dtx.set($input, value); - } - }); - if (dtx.queue.length) { - setTimeout(function() { // Set timeout to force it async - $.ajax({ - type: 'POST', - url: dtx_obj.ajax_url, - dataType: 'json', // only accept strict JSON objects - data: { - 'action': 'wpcf7dtx', - 'shortcodes': dtx.queue - }, - cache: false, - error: function(xhr, status, error) { - console.error('[CF7 DTX AJAX ERROR]', error, status, xhr); - }, - success: function(data, status, xhr) { - if (typeof(data) == 'object' && data.length) { - $.each(data, function(i, obj) { - var $inputs = $('.wpcf7 form input.dtx-pageload[data-dtx-value="' + obj.raw_value + '"]'); - if ($inputs.length) { - dtx.set($inputs, obj.value); - $inputs.addClass('dtx-ajax-loaded'); - } - }); - } - } - }); - }, 10); - } - } - }, - /** - * Check if Key Exists in Object - */ - validKey: function(obj, key) { - return obj.hasOwnProperty(key) && typeof(obj[key]) == 'string' && obj[key].trim(); - }, - /** - * Maybe Obfuscate Value - * - * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-attribute-obfuscate/ - */ - obfuscate: function(value, atts) { - value = value.trim(); - if (dtx.validKey(atts, 'obfuscate') && atts.obfuscate) { - var o = ''; - for (var i = 0; i < value.length; i++) { - o += '' + value.codePointAt(i) + ';'; - } - return o; - } - return value; - }, - /** - * Set Value for Form Field - */ - set: function($input, value) { - $input.attr('value', value).addClass('dtx-loaded'); - }, - /** - * Get Value form URL Query by Key - * - * @see @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-php-get-variables/ - */ - get: function(atts) { - if (dtx.validKey(atts, 'key')) { - var query = window.location.search; - if (query) { - query = new URLSearchParams(query); - return dtx.obfuscate(query.get(atts.key).trim(), atts); - } - } - return ''; - }, - /** - * Get Referrering URL - * - * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-referrer-url/ - */ - referrer: function(atts) { - return dtx.obfuscate(document.referrer, atts); - }, - /** - * Get Current URL or Part - * - * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-current-url/ - */ - current_url: function(atts) { - if (atts.hasOwnProperty('part')) { - var parts = [ - 'scheme', // e.g. `http` - 'host', - 'port', - 'path', - 'query', // after the question mark ? - 'fragment' // after the pound sign # - ]; - if (parts.includes(atts.part)) { - // return part of the url - switch (atts.part) { - case 'scheme': - return dtx.obfuscate(window.location.protocol.replace(':', ''), atts); - case 'host': - return dtx.obfuscate(window.location.host, atts); - case 'port': - return dtx.obfuscate(window.location.port, atts); - case 'path': - return dtx.obfuscate(window.location.pathname, atts); - case 'query': - return dtx.obfuscate(window.location.search.replace('?', ''), atts); - case 'fragment': - return dtx.obfuscate(window.location.hash.replace('#', ''), atts); - default: - break; - } - } - } else { - return dtx.obfuscate(window.location.href, atts); // Return the full url - } - return ''; - }, - /** - * Get Cookie Value - * - * @since 3.3.0 - * - * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-cookie/ - */ - get_cookie: function(atts) { - if (atts.hasOwnProperty('key') && typeof(atts.key) == 'string' && atts.key.trim() != '') { - var keyValue = document.cookie.match('(^|;) ?' + atts.key.trim() + '=([^;]*)(;|$)'); - return keyValue ? dtx.obfuscate(keyValue[2], atts) : ''; - } - return ''; - }, - /** - * Generate a random GUID (globally unique identifier) - * - * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-guid/ - */ - guid: function() { - if (typeof(window.crypto) != 'undefined' && typeof(window.crypto.getRandomValues) != 'undefined') { - return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => - (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) - ).toUpperCase(); - } - console.warn('[CF7 DTX] Cryptographically secure PRNG is not available for generating GUID value'); - var d = new Date().getTime(), //Timestamp - d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0; //Time in microseconds since page-load or 0 if unsupported - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = Math.random() * 16; //random number between 0 and 16 - if (d > 0) { //Use timestamp until depleted - r = (d + r) % 16 | 0; - d = Math.floor(d / 16); - } else { //Use microseconds since page-load if supported - r = (d2 + r) % 16 | 0; - d2 = Math.floor(d2 / 16); - } - return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16).toUpperCase(); - }).toUpperCase();; - } - }; +window['$'] = window['$'] || jQuery.noConflict(); +var dtx = { + queue: [], + init: function() { + var $inputs = $('input.dtx-pageload[data-dtx-value]'); + if ($inputs.length) { + // If this is any of our built-in shortcodes, see if there's any that can be duplicated via client side + $inputs.each(function(i, el) { + var $input = $(el), + raw_value = $input.attr('data-dtx-value'), + v = decodeURIComponent(raw_value).split(' '); + if (v.length) { + var tag = v[0], + atts = {}; + if (v.length > 1) { + for (var x = 1; x < v.length; x++) { + var att = v[x].split('='); + if (att.length === 2) { + var key = att[0]; + atts[key] = att[1].split("'").join(''); + } + } + } + var value = ''; + switch (tag) { + case 'CF7_GET': + value = dtx.get(atts); + break; + case 'CF7_referrer': + value = dtx.referrer(atts); + break; + case 'CF7_URL': + value = dtx.current_url(atts); + break; + case 'CF7_get_cookie': + value = dtx.get_cookie(atts); + break; + case 'CF7_guid': + value = dtx.guid(); + break; + case 'CF7_get_current_var': + if (dtx.validKey(atts, 'key') && atts.key == 'url') { + value = dtx.current_url(atts); + } else { + return; // Do nothing, current page variables are safe to cache, just use the value that was calculated by server + } + break; + case 'CF7_get_post_var': // Current post variables are safe to cache + case 'CF7_get_custom_field': // Meta data is safe to cache + case 'CF7_get_taxonomy': // Terms are safe to cache + case 'CF7_get_attachment': // Media attachment info is safe to cache + case 'CF7_bloginfo': // Site info is safe to cache + case 'CF7_get_theme_option': // Theme options are safe to cache + return; // Do nothing, just use the value that was calculated by server + default: + if (tag) { + // Queue the requests for an AJAX call at the end of init + dtx.queue.push({ 'value': raw_value, 'multiline': $input.is('textarea') }); + } + return; // Don't continue after queuing it for AJAX + } + dtx.set($input, value); + } + }); + if (dtx.queue.length) { + setTimeout(function() { // Set timeout to force it async + $.ajax({ + type: 'POST', + url: dtx_obj.ajax_url, + dataType: 'json', // only accept strict JSON objects + data: { + 'action': 'wpcf7dtx', + 'shortcodes': dtx.queue + }, + cache: false, + error: function(xhr, status, error) { + console.error('[CF7 DTX AJAX ERROR]', error, status, xhr); + }, + success: function(data, status, xhr) { + if (typeof(data) == 'object' && data.length) { + $.each(data, function(i, obj) { + var $inputs = $('.wpcf7 form input.dtx-pageload[data-dtx-value="' + obj.raw_value + '"]'); + if ($inputs.length) { + $inputs.addClass('dtx-ajax-loaded'); + dtx.set($inputs, obj.value); + } + }); + } + } + }); + }, 10); + } + } + }, + /** + * Check if Key Exists in Object + */ + validKey: function(obj, key) { + return obj.hasOwnProperty(key) && typeof(obj[key]) == 'string' && obj[key].trim(); + }, + /** + * Maybe Obfuscate Value + * + * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-attribute-obfuscate/ + */ + obfuscate: function(value, atts) { + value = value.trim(); + if (dtx.validKey(atts, 'obfuscate') && atts.obfuscate) { + var o = ''; + for (var i = 0; i < value.length; i++) { + o += '' + value.codePointAt(i) + ';'; + } + return o; + } + return value; + }, + /** + * Set Value for Form Field + */ + set: function($input, value) { + $input + .attr('value', value) + .addClass('dtx-loaded') + .trigger('dtx_init'); + }, + /** + * Get Value form URL Query by Key + * + * @see @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-php-get-variables/ + */ + get: function(atts) { + if (dtx.validKey(atts, 'key')) { + var query = window.location.search; + if (query) { + query = new URLSearchParams(query); + return dtx.obfuscate(query.get(atts.key).trim(), atts); + } + } + return ''; + }, + /** + * Get Referrering URL + * + * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-referrer-url/ + */ + referrer: function(atts) { + return dtx.obfuscate(document.referrer, atts); + }, + /** + * Get Current URL or Part + * + * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-current-url/ + */ + current_url: function(atts) { + if (atts.hasOwnProperty('part')) { + var parts = [ + 'scheme', // e.g. `http` + 'host', + 'port', + 'path', + 'query', // after the question mark ? + 'fragment' // after the pound sign # + ]; + if (parts.includes(atts.part)) { + // return part of the url + switch (atts.part) { + case 'scheme': + return dtx.obfuscate(window.location.protocol.replace(':', ''), atts); + case 'host': + return dtx.obfuscate(window.location.host, atts); + case 'port': + return dtx.obfuscate(window.location.port, atts); + case 'path': + return dtx.obfuscate(window.location.pathname, atts); + case 'query': + return dtx.obfuscate(window.location.search.replace('?', ''), atts); + case 'fragment': + return dtx.obfuscate(window.location.hash.replace('#', ''), atts); + default: + break; + } + } + } else { + return dtx.obfuscate(window.location.href, atts); // Return the full url + } + return ''; + }, + /** + * Get Cookie Value + * + * @since 3.3.0 + * + * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-cookie/ + */ + get_cookie: function(atts) { + if (atts.hasOwnProperty('key') && typeof(atts.key) == 'string' && atts.key.trim() != '') { + var keyValue = document.cookie.match('(^|;) ?' + atts.key.trim() + '=([^;]*)(;|$)'); + return keyValue ? dtx.obfuscate(keyValue[2], atts) : ''; + } + return ''; + }, + /** + * Generate a random GUID (globally unique identifier) + * + * @see https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/shortcodes/dtx-shortcode-guid/ + */ + guid: function() { + if (typeof(window.crypto) != 'undefined' && typeof(window.crypto.getRandomValues) != 'undefined') { + return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => + (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) + ).toUpperCase(); + } + console.warn('[CF7 DTX] Cryptographically secure PRNG is not available for generating GUID value'); + var d = new Date().getTime(), //Timestamp + d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0; //Time in microseconds since page-load or 0 if unsupported + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random() * 16; //random number between 0 and 16 + if (d > 0) { //Use timestamp until depleted + r = (d + r) % 16 | 0; + d = Math.floor(d / 16); + } else { //Use microseconds since page-load if supported + r = (d2 + r) % 16 | 0; + d2 = Math.floor(d2 / 16); + } + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16).toUpperCase(); + }).toUpperCase();; + } +}; $(document).ready(dtx.init); \ No newline at end of file diff --git a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/assets/scripts/dtx.min.js b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/assets/scripts/dtx.min.js index a361301f..ea085bca 100644 --- a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/assets/scripts/dtx.min.js +++ b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/assets/scripts/dtx.min.js @@ -1,2 +1,2 @@ -/*! Do not edit, this file is generated automatically - 2024-01-09 15:01:30 MST */ -var $=jQuery.noConflict(),dtx={queue:[],init:function(){var e=$("input.dtx-pageload[data-dtx-value]");e.length&&(e.each(function(e,t){var r=$(t),a=r.attr("data-dtx-value"),o=decodeURIComponent(a).split(" ");if(o.length){var n=o[0],c={};if(1%s %s
render_back_to_settings_button(); ?>
-- -
- - - > -- -
- - -- -
- - -- -
- - -- -
- 'cf7dtx_settings[' . $field['id'] . ']', - 'textarea_rows' => 5, - ) - ); - break; - } - - case "email": { - ?> - -- -
- - -- -
- - -- -
- - -- -
- -sections[$args['id']]['description']; ?>
-'.__('Scan complete. No keys detected.', 'contact-form-7-dynamic-text-extension').'
'; - $this->render_back_to_settings_button(); - return; - } - - // Check if we need to scan another batch - if( $results['forms_scanned'] === $this->num_forms_to_scan ){ - $offset = isset( $_GET['offset'] ) ? $_GET['offset'] : 0; - $next_offset = $offset + $this->num_forms_to_scan; - echo ''; - echo sprintf( - __( '%1$s forms scanned. There may be more forms to scan.', 'contact-form-7-dynamic-text-extension' ), - $results['forms_scanned'], - ); - echo ' '; - echo ''.sprintf( - __( 'Scan %1$s more forms', 'contact-form-7-dynamic-text-extension' ), - $this->num_forms_to_scan - ).''; - echo '
:
- - -:
- - - - - - - render_back_to_settings_button(); - } - - function render_back_to_settings_button(){ - ?> - « - [ - 'title' => __('Post Meta Access', 'contact-form-7-dynamic-text-extension'), - 'description' => __('Control which post metadata the CF7 DTX shortcodes (CF7_get_custom_field) can access. By default, all metadata is protected, so you can open up access through these settings. Keep in mind that users with Contributor+ credentials can add shortcodes and therefore access this data, so make sure not to expose anything sensitive.'). - ' '. __('More Information', 'contact-form-7-dynamic-text-extension' ).'', - ], - 'user_data_access' => [ - 'title' => __('User Data Access', 'contact-form-7-dynamic-text-extension'), - 'description' => __('Control which user data the CF7 DTX shortcodes (CF7_get_current_user) can access. By default, all user data is protected, so you can open up access through these settings. Keep in mind that users with Contributor+ credentials can add shortcodes and therefore access this data, so make sure not to expose anything sensitive.'). - ' '. __('More Information', 'contact-form-7-dynamic-text-extension' ).'', - ], -]; - -/** - * Array of fields that should be displayed in the settings page. - * - * @var array $fields - */ -$fields = [ - [ - 'id' => 'post_meta_allow_keys', - 'label' => __('Meta Key Allow List', 'contact-form-7-dynamic-text-extension'), - 'description' => __('Allow access to these specific post metadata keys. Enter one per line.', 'contact-form-7-dynamic-text-extension'), - 'type' => 'textarea', - 'section' => 'post_meta_access', - ], - [ - 'id' => 'post_meta_allow_all', - 'label' => __('Allow Access to All Post Metadata', 'contact-form-7-dynamic-text-extension'), - 'description' => __('**Use with caution.** Should only be enabled if all authorized users with editor privileges (Contributor+) are trusted and should have access to this data. All metadata from any post (including custom post types) will be accessible via the CF7_get_custom_field shortcode. If in doubt, use the Allow List to allow only specific keys.', 'contact-form-7-dynamic-text-extension'), - 'type' => 'select', - 'options' => [ - 'disabled' => __( 'Disabled - Only Allow Access to Meta Key Allow List', 'contact-form-7-dynamic-text-extension' ), - 'enabled' => __( 'Enabled - Allow Access to All Post Metadata', 'contact-form-7-dynamic-text-extension' ), - ], - 'section' => 'post_meta_access', - ], - [ - 'id' => 'user_data_allow_keys', - 'label' => __('User Data Key Allow List', 'contact-form-7-dynamic-text-extension'), - 'description' => __('Allow access to these specific user data keys. Enter one per line.', 'contact-form-7-dynamic-text-extension'), - 'type' => 'textarea', - 'section' => 'user_data_access', - ], - [ - 'id' => 'user_data_allow_all', - 'label' => __('Allow Access to All User Data', 'contact-form-7-dynamic-text-extension'), - 'description' => __('**Use with caution.** Should only be enabled if all authorized users with editor privileges (Contributor+) are trusted and should have access to this data. All of the current user\'s data fields will be accessible via the CF7_get_current_user shortcode. If in doubt, use the Allow List to allow only specific keys.', 'contact-form-7-dynamic-text-extension'), - 'type' => 'select', - 'options' => [ - 'disabled' => __( 'Disabled - Only Allow Access to User Data Key Allow List', 'contact-form-7-dynamic-text-extension' ), - 'enabled' => __( 'Enabled - Allow Access to User Data', 'contact-form-7-dynamic-text-extension' ), - ], - 'section' => 'user_data_access', - ], -]; - - -new CF7DTX_Plugin_Settings($sections, $fields); - - -function wpcf7dtx_get_admin_scan_screen_url($offset=0){ - $path = 'admin.php?page=cf7dtx_settings&scan-meta-keys'; - if( $offset ){ - $path.= '&offset='.$offset; - } - return admin_url($path); -} -function wpcf7dtx_get_admin_settings_screen_url(){ - return admin_url('admin.php?page=cf7dtx_settings'); -} - - -/** - * Search all CF7 forms for - */ -function wpcf7dtx_scan_forms_for_access_keys( $num, $offset=0){ - - $found = [ - 'forms' => [], - ]; - $forms = []; - - if( function_exists('wpcf7_contact_form') ){ - - $cf7forms = get_posts([ - 'post_type' => 'wpcf7_contact_form', - // 'numberposts' => $numposts, // sanity check - 'posts_per_page' => $num, - 'offset' => $offset, - ]); - - $found['forms_scanned'] = count($cf7forms); - - // Loop through forms - foreach( $cf7forms as $form ){ - - // Search for the custom fields shortcode - if( str_contains($form->post_content, 'CF7_get_custom_field') || - str_contains($form->post_content, 'CF7_get_current_user') - ){ - $cf7 = wpcf7_contact_form( $form->ID ); - - $forms[$form->ID] = [ - 'title' => $cf7->title(), - 'meta_keys' => [], - 'user_keys' => [], - 'admin_url' => admin_url( "admin.php?page=wpcf7&post={$form->ID}&action=edit" ), - ]; - - $tags = $cf7->scan_form_tags(); - - // Check each tag - foreach( $tags as $tag ){ - // Find dynamic tags - if( str_starts_with( $tag->type, 'dynamic' ) ){ - // Check each value - foreach( $tag->values as $val ){ - // Find CF7_get_custom_field - if( str_starts_with( $val, 'CF7_get_custom_field' )){ - // Parse out the shortcode atts - $atts = shortcode_parse_atts($val); - if( $atts ){ - // Grab the meta key - $meta_key = $atts['key']; - - // Add meta key to the list - if( $meta_key ){ - $forms[$form->ID]['meta_keys'][] = $meta_key; - } - } - } - // Find CF7_get_current_user - if( str_starts_with( $val, 'CF7_get_current_user' )){ - // Parse out the shortcode atts - $atts = shortcode_parse_atts($val); - if( $atts ){ - // Grab user data key - $key = $atts['key']; - if( $key ){ - $forms[$form->ID]['user_keys'][] = $key; - } - } - } - } - } - } - } - } - } - $found['forms'] = $forms; - return $found; - -} +sections = $sections; + $this->fields = $fields; + } + + /** + * Register the settings and all fields. + * + * @since 4.2.0 + * + * @return void + */ + function settings_init(): void + { + + // Register a new setting this page. + register_setting('cf7dtx_settings', 'cf7dtx_settings'); + + foreach ($this->sections as $section_id => $section) { + // Register a new section. + add_settings_section( + $section_id, + $section['title'], + [$this, 'render_section'], + 'cf7dtx_settings', + ); + } + + + /* Register All The Fields. */ + foreach ($this->fields as $field) { + // Register a new field in the main section. + add_settings_field( + $field['id'], /* ID for the field. Only used internally. To set the HTML ID attribute, use $args['label_for']. */ + $field['label'], /* Label for the field. */ + [$this, 'render_field'], /* The name of the callback function. */ + 'cf7dtx_settings', /* The menu page on which to display this field. */ + $field['section'], /* The section of the settings page in which to show the box. */ + [ + 'label_for' => $field['id'], /* The ID of the field. */ + 'class' => 'cf7dtx_row', /* The class of the field. */ + 'field' => $field, /* Custom data for the field. */ + ] + ); + } + } + + /** + * Add a subpage to the WordPress Settings menu. + * + * @since 4.2.0 + * + * @return void + */ + function options_page(): void + { + add_submenu_page( + 'wpcf7', /* Parent Menu Slug */ + 'Contact Form 7 - Dynamic Text Extension', /* Page Title */ + 'Dynamic Text Extension', /* Menu Title */ + $this->capability, /* Capability */ + 'cf7dtx_settings', /* Menu Slug */ + [$this, 'render_options_page'], /* Callback */ + ); + } + + /** + * Render the settings page. + * + * @since 4.2.0 + * + * @return void + */ + function render_options_page(): void + { + + // check user capabilities + if (!current_user_can($this->capability)) { + return; + } + + if (isset($_GET['dismiss-access-keys-notice'])) { + wpcf7dtx_set_update_access_scan_check_status('notice_dismissed'); +?> +render_back_to_settings_button(); ?>
++ +
+ + > ++ +
+ + ++ +
+ + ++ +
+ + ++ +
+ 'cf7dtx_settings[' . $field['id'] . ']', + 'textarea_rows' => 5, + ) + ); + break; + } + + case "email": { + ?> + ++ +
+ + ++ +
+ + ++ +
+ + ++ +
+ +sections[$args['id']]['description']; ?>
+' . __('Scan complete. No keys detected.', 'contact-form-7-dynamic-text-extension') . '
'; + $this->render_back_to_settings_button(); + return; + } + + // Check if we need to scan another batch + if ($results['forms_scanned'] === $this->num_forms_to_scan) { + $offset = isset($_GET['offset']) ? $_GET['offset'] : 0; + $next_offset = $offset + $this->num_forms_to_scan; + echo ''; + echo sprintf( + __('%1$s forms scanned. There may be more forms to scan.', 'contact-form-7-dynamic-text-extension'), + $results['forms_scanned'], + ); + echo ' '; + echo '' . sprintf( + __('Scan %1$s more forms', 'contact-form-7-dynamic-text-extension'), + $this->num_forms_to_scan + ) . ''; + echo '
:
+ + +:
+ + + + + + + render_back_to_settings_button(); + } + + /** + * Render Back to Settings Button + * + * @since 4.2.0 + * + * @return void + */ + function render_back_to_settings_button() + { + ?> + « + [ + 'title' => __('Post Meta Access', 'contact-form-7-dynamic-text-extension'), + 'description' => __('Control which post metadata the CF7 DTX shortcodes (CF7_get_custom_field) can access. By default, all metadata is protected, so you can open up access through these settings. Keep in mind that users with Contributor+ credentials can add shortcodes and therefore access this data, so make sure not to expose anything sensitive.') . + ' ' . __('More Information', 'contact-form-7-dynamic-text-extension') . '', + ], + 'user_data_access' => [ + 'title' => __('User Data Access', 'contact-form-7-dynamic-text-extension'), + 'description' => __('Control which user data the CF7 DTX shortcodes (CF7_get_current_user) can access. By default, all user data is protected, so you can open up access through these settings. Keep in mind that users with Contributor+ credentials can add shortcodes and therefore access this data, so make sure not to expose anything sensitive.') . + ' ' . __('More Information', 'contact-form-7-dynamic-text-extension') . '', + ], +]; + +/** + * Array of fields that should be displayed in the settings page. + * + * @var array $fields + */ +$fields = [ + [ + 'id' => 'post_meta_allow_keys', + 'label' => __('Meta Key Allow List', 'contact-form-7-dynamic-text-extension'), + 'description' => __('Allow access to these specific post metadata keys. Enter one per line.', 'contact-form-7-dynamic-text-extension'), + 'type' => 'textarea', + 'section' => 'post_meta_access', + ], + [ + 'id' => 'post_meta_allow_all', + 'label' => __('Allow Access to All Post Metadata', 'contact-form-7-dynamic-text-extension'), + 'description' => __('**Use with caution.** Should only be enabled if all authorized users with editor privileges (Contributor+) are trusted and should have access to this data. All metadata from any post (including custom post types) will be accessible via the CF7_get_custom_field shortcode. If in doubt, use the Allow List to allow only specific keys.', 'contact-form-7-dynamic-text-extension'), + 'type' => 'select', + 'options' => [ + 'disabled' => __('Disabled - Only Allow Access to Meta Key Allow List', 'contact-form-7-dynamic-text-extension'), + 'enabled' => __('Enabled - Allow Access to All Post Metadata', 'contact-form-7-dynamic-text-extension'), + ], + 'section' => 'post_meta_access', + ], + [ + 'id' => 'user_data_allow_keys', + 'label' => __('User Data Key Allow List', 'contact-form-7-dynamic-text-extension'), + 'description' => __('Allow access to these specific user data keys. Enter one per line.', 'contact-form-7-dynamic-text-extension'), + 'type' => 'textarea', + 'section' => 'user_data_access', + ], + [ + 'id' => 'user_data_allow_all', + 'label' => __('Allow Access to All User Data', 'contact-form-7-dynamic-text-extension'), + 'description' => __('**Use with caution.** Should only be enabled if all authorized users with editor privileges (Contributor+) are trusted and should have access to this data. All of the current user\'s data fields will be accessible via the CF7_get_current_user shortcode. If in doubt, use the Allow List to allow only specific keys.', 'contact-form-7-dynamic-text-extension'), + 'type' => 'select', + 'options' => [ + 'disabled' => __('Disabled - Only Allow Access to User Data Key Allow List', 'contact-form-7-dynamic-text-extension'), + 'enabled' => __('Enabled - Allow Access to User Data', 'contact-form-7-dynamic-text-extension'), + ], + 'section' => 'user_data_access', + ], +]; + + +new CF7DTX_Plugin_Settings($sections, $fields); + + +function wpcf7dtx_get_admin_scan_screen_url($offset = 0) +{ + $path = 'admin.php?page=cf7dtx_settings&scan-meta-keys'; + if ($offset) { + $path .= '&offset=' . $offset; + } + return admin_url($path); +} +function wpcf7dtx_get_admin_settings_screen_url() +{ + return admin_url('admin.php?page=cf7dtx_settings'); +} + + +/** + * Search all CF7 forms for + */ +function wpcf7dtx_scan_forms_for_access_keys($num, $offset = 0) +{ + + $found = [ + 'forms' => [], + ]; + $forms = []; + + if (function_exists('wpcf7_contact_form')) { + + $cf7forms = get_posts([ + 'post_type' => 'wpcf7_contact_form', + // 'numberposts' => $numposts, // sanity check + 'posts_per_page' => $num, + 'offset' => $offset, + ]); + + $found['forms_scanned'] = count($cf7forms); + + // Loop through forms + foreach ($cf7forms as $form) { + + // Search for the custom fields shortcode + if ( + strpos($form->post_content, 'CF7_get_custom_field') !== false || + strpos($form->post_content, 'CF7_get_current_user') !== false + ) { + $cf7 = wpcf7_contact_form($form->ID); + + $forms[$form->ID] = [ + 'title' => $cf7->title(), + 'meta_keys' => [], + 'user_keys' => [], + 'admin_url' => admin_url("admin.php?page=wpcf7&post={$form->ID}&action=edit"), + ]; + + $tags = $cf7->scan_form_tags(); + + // Check each tag + foreach ($tags as $tag) { + // Find dynamic tags + if (str_starts_with($tag->type, 'dynamic')) { + // Check each value + foreach ($tag->values as $val) { + // Find CF7_get_custom_field + if (str_starts_with($val, 'CF7_get_custom_field')) { + // Parse out the shortcode atts + $atts = shortcode_parse_atts($val); + if ($atts) { + // Grab the meta key + $meta_key = $atts['key']; + + // Add meta key to the list + if ($meta_key) { + $forms[$form->ID]['meta_keys'][] = $meta_key; + } + } + } + // Find CF7_get_current_user + if (str_starts_with($val, 'CF7_get_current_user')) { + // Parse out the shortcode atts + $atts = shortcode_parse_atts($val); + if ($atts) { + // Grab user data key + $key = $atts['key']; + if ($key) { + $forms[$form->ID]['user_keys'][] = $key; + } + } + } + } + } + } + } + } + } + $found['forms'] = $forms; + return $found; +} diff --git a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/admin/update-check.php b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/admin/update-check.php index adc56c69..0c7169ef 100644 --- a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/admin/update-check.php +++ b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/admin/update-check.php @@ -1,97 +1,140 @@ -roles ) ) return; - - // If the status doesn't require intervention, don't do anything - $status = get_option( 'cf7dtx_v4_2_0_access_scan_check_status', '' ); - if( $status !== 'intervention_required' ){ - return; - } - ?> - - roles)) return; + + // If the status doesn't require intervention, don't do anything + $status = get_option('cf7dtx_v4_2_0_access_scan_check_status', ''); + if ($status !== 'intervention_required') { + return; + } +?> + + array(), 'name' => array(), 'value' => array(), - 'required' => array(), 'class' => array(), 'disabled' => array(), - 'readonly' => array(), 'tabindex' => array(), - 'size' => array(), 'title' => array(), - 'autofocus' => array(), // ARIA properties 'aria-invalid' => array(), 'aria-describedby' => array(), // DTX properties 'data-dtx-value' => array(), ); + if ($type != 'hidden') { + $allowed_properties['autofocus'] = array(); + $allowed_properties['readonly'] = array(); + $allowed_properties['required'] = array(); + } if (in_array($type, array('checkbox', 'radio', 'acceptance'))) { // Properties exclusive to checkboxes and radio buttons $allowed_properties['checked'] = array(); $allowed_properties['dtx-default'] = array(); - } elseif (in_array($type, array('number', 'range'))) { - // Properties exclusive to number inputs - $allowed_properties['step'] = array(); } elseif ($type == 'select') { // Properties exclusive to select fields + $allowed_properties['size'] = array(); $allowed_properties['multiple'] = array(); $allowed_properties['dtx-default'] = array(); - unset($allowed_properties['type'], $allowed_properties['value'], $allowed_properties['placeholder'], $allowed_properties['size']); // Remove invalid select attributes - } - if (!in_array($type, array('checkbox', 'radio', 'select', 'acceptance'))) { - // Allowed properties for all text-based inputs - $allowed_properties['placeholder'] = array(); + unset($allowed_properties['type'], $allowed_properties['value']); // Remove invalid select attributes + } else { + // Properties exclusive to text-based inputs $allowed_properties['autocomplete'] = array(); - $allowed_properties['minlength'] = array(); - $allowed_properties['maxlength'] = array(); - if (in_array($type, array('number', 'range', 'date', 'datetime-local', 'time'))) { - // Additional properties for number and date inputs - $allowed_properties['min'] = array(); - $allowed_properties['max'] = array(); + $allowed_properties['list'] = array(); + + // Placeholder + if (in_array($type, array('text', 'search', 'url', 'tel', 'email', 'password', 'number'))) { + $allowed_properties['placeholder'] = array(); } + + // Textarea if ($type == 'textarea') { // Additional properties exclusive to textarea fields $allowed_properties['cols'] = array(); $allowed_properties['rows'] = array(); + $allowed_properties['minlength'] = array(); + $allowed_properties['maxlength'] = array(); + $allowed_properties['wrap'] = array(); unset($allowed_properties['type'], $allowed_properties['value']); // Remove invalid textarea attributes - } elseif (in_array($type, array('text', 'date', 'url', 'tel', 'email', 'password'))) { - // Additional properties exclusive to specific text fields + } elseif (in_array($type, array('text', 'search', 'url', 'tel', 'email', 'password'))) { + // Additional properties exclusive to these text-based fields + $allowed_properties['size'] = array(); + $allowed_properties['minlength'] = array(); + $allowed_properties['maxlength'] = array(); $allowed_properties['pattern'] = array(); + } elseif (in_array($type, array('number', 'range', 'date', 'datetime-local', 'time'))) { + // Number and date inputs + $allowed_properties['min'] = array(); + $allowed_properties['max'] = array(); + $allowed_properties['step'] = array(); } } if (is_array($extra) && count($extra)) { @@ -554,8 +569,10 @@ function wpcf7dtx_textarea_html($atts) * group's options. It also accepts a string value of HTML already formatted as options or * option groups. It also accepts a string value of a self-closing shortcode that is * evaluated and its output is either options or option groups. - * @param bool $hide_blank Optional. If true, the first blank placeholder option will have the `hidden` attribute added to it. Default is false. - * @param bool $disable_blank Optional. If true, the first blank placeholder option will have the `disabled` attribute added to it. Default is false. + * @param bool $hide_blank Optional. If true, the first blank placeholder option will have the + * `hidden` attribute added to it. Default is false. + * @param bool $disable_blank Optional. If true, the first blank placeholder option will have + * the `disabled` attribute added to it. Default is false. * * @return string HTML output of select field */ @@ -644,9 +661,11 @@ function wpcf7dtx_select_html($atts, $options, $hide_blank = false, $disable_bla * * @param string|int $key The key to search for in the array. * @param array $array The array to search. - * @param mixed $default The default value to return if not found or is empty. Default is an empty string. + * @param mixed $default The default value to return if not found or is empty. Default is + * an empty string. * - * @return mixed The value of the key found in the array if it exists or the value of `$default` if not found or is empty. + * @return mixed The value of the key found in the array if it exists or the value of + * `$default` if not found or is empty. */ function wpcf7dtx_array_has_key($key, $array = array(), $default = '') { @@ -665,163 +684,163 @@ function wpcf7dtx_array_has_key($key, $array = array(), $default = '') /** * Check if admin has allowed access to a specific post meta key - * + * * @since 4.2.0 - * + * * @param string $meta_key The post meta key to test - * + * * @return bool True if this key can be accessed, false otherwise */ function wpcf7dtx_post_meta_key_access_is_allowed($meta_key) { // Get the DTX Settings - $settings = wpcf7dtx_get_settings();get_option('cf7dtx_settings', []); + $settings = wpcf7dtx_get_settings(); // Has access to all metadata been enabled? - if( isset($settings['post_meta_allow_all']) && $settings['post_meta_allow_all'] === 'enabled' ){ + if (isset($settings['post_meta_allow_all']) && $settings['post_meta_allow_all'] === 'enabled') { return true; } // If not, check the Allow List - - $allowed_keys; + $allowed_keys = array(); // No key list from settings - if( !isset($settings['post_meta_allow_keys'] ) || !is_string($settings['post_meta_allow_keys'])){ - $allowed_keys = []; - } - // Extract allowed keys from setting text area - else{ - // $allowed_keys = preg_split('/\r\n|\r|\n/', $settings['post_meta_allow_keys']); - $allowed_keys = wpcf7dtx_parse_allowed_keys( $settings['post_meta_allow_keys'] ); + if (isset($settings['post_meta_allow_keys']) && is_string($settings['post_meta_allow_keys'])) { + // Extract allowed keys from setting text area + $allowed_keys = wpcf7dtx_parse_allowed_keys($settings['post_meta_allow_keys']); } // Allow custom filters - $allowed_keys = apply_filters( 'wpcf7dtx_post_meta_key_allow_list', $allowed_keys ); + $allowed_keys = apply_filters('wpcf7dtx_post_meta_key_allow_list', $allowed_keys); // Check if the key is in the allow list - if( in_array( $meta_key, $allowed_keys ) ){ + if (in_array($meta_key, $allowed_keys)) { return true; // The key is allowed } // Everything is disallowed by default return false; - } - /** * Check if admin has allowed access to a specific user data - * + * * @since 4.2.0 - * + * * @param string $key The user data key to test - * + * * @return bool True if this key can be accessed, false otherwise */ -function wpcf7dtx_user_data_access_is_allowed( $key ) +function wpcf7dtx_user_data_access_is_allowed($key) { // Get the DTX Settings $settings = wpcf7dtx_get_settings(); //get_option('cf7dtx_settings', []); // Has access to all metadata been enabled? - if( isset($settings['user_data_allow_all']) && $settings['user_data_allow_all'] === 'enabled' ){ + if (isset($settings['user_data_allow_all']) && $settings['user_data_allow_all'] === 'enabled') { return true; } // If not, check the Allow List - - $allowed_keys; + $allowed_keys = array(); // No key list from settings - if( !isset($settings['user_data_allow_keys'] ) || !is_string($settings['user_data_allow_keys'])){ - $allowed_keys = []; - } - // Extract allowed keys from setting text area - else{ - // $allowed_keys = preg_split('/\r\n|\r|\n/', $settings['user_data_allow_keys']); + if (isset($settings['user_data_allow_keys']) && is_string($settings['user_data_allow_keys'])) { + // Extract allowed keys from setting text area $allowed_keys = wpcf7dtx_parse_allowed_keys($settings['user_data_allow_keys']); } // Allow custom filters - $allowed_keys = apply_filters( 'wpcf7dtx_user_data_key_allow_list', $allowed_keys ); + $allowed_keys = apply_filters('wpcf7dtx_user_data_key_allow_list', $allowed_keys); // Check if the key is in the allow list - if( in_array( $key, $allowed_keys ) ){ + if (in_array($key, $allowed_keys)) { return true; // The key is allowed } - // Everything is disallowed by default return false; - } - /** * Take the string saved in the options array from the allow list textarea and parse it into an array by newlines. * Also strip whitespace - * + * + * @since 4.2.0 + * * @param string $allowlist The string of allowed keys stored in the DB - * + * * @return array Array of allowed keys */ -function wpcf7dtx_parse_allowed_keys( $allowlist ){ +function wpcf7dtx_parse_allowed_keys($allowlist) +{ // Split by newlines - $keys = wpcf7dtx_split_newlines( $allowlist ); + $keys = wpcf7dtx_split_newlines($allowlist); // Trim whitespace - $keys = array_map( 'trim' , $keys ); + $keys = array_map('trim', $keys); return $keys; } -/** +/** * Used to parse strings stored in the database that are from text areas with one element per line into an array of strings - * + * + * @since 4.2.0 + * * @param string $str The multi-line string to be parsed into an array - * + * * @return array Array of parsed strings */ -function wpcf7dtx_split_newlines( $str ){ +function wpcf7dtx_split_newlines($str) +{ return preg_split('/\r\n|\r|\n/', $str); } /** * Gets the CF7 DTX settings field from the WP options table. Returns an empty array if option has not previously been set - * + * + * @since 4.2.0 + * * @return array The settings array */ -function wpcf7dtx_get_settings(){ - return get_option('cf7dtx_settings', []); +function wpcf7dtx_get_settings() +{ + return get_option('cf7dtx_settings', array()); } /** * Updates the CF7 DTX settings in the WP options table - * + * + * @since 4.2.0 + * * @param array $settings The settings array - * + * + * @return void + * */ -function wpcf7dtx_update_settings($settings){ - update_option( 'cf7dtx_settings', $settings ); +function wpcf7dtx_update_settings($settings) +{ + update_option('cf7dtx_settings', $settings); } /** * Outputs a useful PHP Warning message to users on how to allow-list denied meta and user keys - * + * + * @since 4.2.0 + * * @param string $key The post meta or user key to which access is currently denied * @param string $type Either 'post_meta' or 'user_data', used to display an appropriate message to the user + * + * @return void */ -function wpcf7dtx_access_denied_alert( $key, $type ){ - +function wpcf7dtx_access_denied_alert($key, $type) +{ // Only check on the front end - if( is_admin() || wp_doing_ajax() || wp_is_json_request() ) return; + if (is_admin() || wp_doing_ajax() || wp_is_json_request()) return; - $shortcode = ''; - $list_name = ''; - - switch( $type ){ + switch ($type) { case 'post_meta': $shortcode = 'CF7_get_custom_field'; $list_name = __('Meta Key Allow List', 'contact-form-7-dynamic-text-extension'); @@ -830,47 +849,21 @@ function wpcf7dtx_access_denied_alert( $key, $type ){ $shortcode = 'CF7_get_current_user'; $list_name = __('User Data Key Allow List', 'contact-form-7-dynamic-text-extension'); break; - default: + default: + $shortcode = ''; + $list_name = ''; + break; } $settings_page_url = admin_url('admin.php?page=cf7dtx_settings'); $msg = sprintf( - __('CF7 DTX: Access denied to key: "%1$s" in dynamic contact form shortcode: [%2$s]. Please add this key to the %3$s at %4$s','contact-form-7-dynamic-text-extension'), + __('CF7 DTX: Access denied to key: "%1$s" in dynamic contact form shortcode: [%2$s]. Please add this key to the %3$s at %4$s', 'contact-form-7-dynamic-text-extension'), $key, $shortcode, $list_name, $settings_page_url ); - trigger_error( $msg, E_USER_WARNING ); + trigger_error($msg, E_USER_WARNING); } - - -/** - * Helper function to output array and object data - */ -/* -function dtxpretty ($var, $print=true, $privobj=false) { - - $type = gettype($var); - - if( $privobj && $type === 'object' ){ - $p = ''.print_r($var, true).''; - } - else { - $p = '
'.$type . ' ' . json_encode( - $var, - JSON_UNESCAPED_SLASHES | - JSON_UNESCAPED_UNICODE | - JSON_PRETTY_PRINT | - JSON_PARTIAL_OUTPUT_ON_ERROR | - JSON_INVALID_UTF8_SUBSTITUTE - ).''; - } - if( $print ) { - echo $p; - } - return $p; -} -*/ \ No newline at end of file diff --git a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/validation.php b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/validation.php index 00d5bb49..47d9f6cb 100644 --- a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/validation.php +++ b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/includes/validation.php @@ -1,369 +1,373 @@ - array( - 'description' => __('There is a field with an invalid email address', 'contact-form-7-dynamic-text-extension'), - 'default' => __('Please enter a valid email address.', 'contact-form-7-dynamic-text-extension') - ), - 'dtx_invalid_tel' => array( - 'description' => __('There is a field with an invalid phone number', 'contact-form-7-dynamic-text-extension'), - 'default' => __('Please enter a valid phone number.', 'contact-form-7-dynamic-text-extension') - ), - 'dtx_invalid_number' => array( - 'description' => __('There is a field with an invalid number', 'contact-form-7-dynamic-text-extension'), - 'default' => __('Please enter a valid number.', 'contact-form-7-dynamic-text-extension') - ), - 'dtx_invalid_date' => array( - 'description' => __('There is a field with an invalid date', 'contact-form-7-dynamic-text-extension'), - 'default' => __('Please enter a valid date.', 'contact-form-7-dynamic-text-extension') - ), - )); -} -add_filter('wpcf7_messages', 'wpcf7dtx_messages'); - -/** - * Add DTX Error Code to Config Validator - * - * @since 5.0.0 - * - * @param array $error_codes A sequential array of available error codes in Contact Form 7. - * - * @return array A modified sequential array of available error codes in Contact Form 7. - */ -function wpcf7dtx_config_validator_available_error_codes($error_codes) -{ - $dtx_errors = array('dtx_disallowed'); - return array_merge($error_codes, $dtx_errors); -} -add_filter('wpcf7_config_validator_available_error_codes', 'wpcf7dtx_config_validator_available_error_codes'); - -/** - * Validate DTX Form Fields - * - * Frontend validation for DTX form tags - * - * @param WPCF7_Validation $result the current validation result object - * @param WPCF7_FormTag $tag the current form tag being filtered for validation - * - * @return WPCF7_Validation a possibly modified validation result object - */ -function wpcf7dtx_validation_filter($result, $tag) -{ - $type = str_replace(array('dynamic_', 'dynamic'), '', $tag->basetype); - if (empty($tag->name) || in_array($type, array('hidden', 'submit', 'reset'))) { - return $result; // Bail early for tags without names or if a specific type - } - - // Get the value - $user_value = wpcf7dtx_array_has_key($tag->name, $_POST); - if (is_array($user_value)) { - $selection_count = count($user_value); - if (!wpcf7_form_tag_supports($tag->type, 'selectable-values')) { - // Field passed selectable values when it's doesn't support them - $result->invalidate($tag, wpcf7_get_message('validation_error')); - return $result; - } elseif ($selection_count > 1) { - if (!wpcf7_form_tag_supports($tag->type, 'multiple-controls-container')) { - // Field passed multiple values when it's doesn't support them - $result->invalidate($tag, wpcf7_get_message('validation_error')); - return $result; - } - foreach ($user_value as $selection) { - // Validate each selected choice - $result = wpcf7dtx_validate_value($result, sanitize_textarea_field(strval($selection)), $tag, $type); - if (!$result->is_valid($tag->name)) { - return $result; // Return early if any are invalid - } - } - return $result; - } - $user_value = sanitize_text_field(strval(implode(' ', $user_value))); - } elseif ($type == 'textarea') { - $user_value = sanitize_textarea_field(strval($user_value)); - } else { - $user_value = sanitize_text_field(strval($user_value)); - } - // Validate and return - return wpcf7dtx_validate_value($result, $user_value, $tag, $type); -} - - -/** - * Validate Single Value - * - * @param WPCF7_Validation $result the current validation result object - * @param string $value the current value being validated, sanitized - * @param WPCF7_FormTag $tag the current form tag being filtered for validation - * @param string $type Optional. The type of the current form tag. Default is blank for lookup. - * - * @return WPCF7_Validation a possibly modified validation result object - */ -function wpcf7dtx_validate_value($result, $value, $tag, $type = '') -{ - $type = $type ? $type : str_replace(array('dynamic_', 'dynamic'), '', $tag->basetype); - - // Validate required fields for value - if ($tag->is_required() && empty($value)) { - $result->invalidate($tag, wpcf7_get_message('invalid_required')); - return $result; - } - - // Validate value by type - if (!empty($value)) { - switch ($type) { - case 'email': - if (!wpcf7_is_email($value)) { - $result->invalidate($tag, wpcf7_get_message('dtx_invalid_email')); - return $result; - } - break; - case 'tel': - if (!wpcf7_is_tel($value)) { - $result->invalidate($tag, wpcf7_get_message('dtx_invalid_tel')); - return $result; - } - break; - case 'number': - case 'range': - if (!wpcf7_is_number($value)) { - $result->invalidate($tag, wpcf7_get_message('dtx_invalid_number')); - return $result; - } - break; - case 'date': - if (!wpcf7_is_date($value)) { - $result->invalidate($tag, wpcf7_get_message('dtx_invalid_date')); - return $result; - } - break; - } - - // Finish validating text-based inputs - $maxlength = $tag->get_maxlength_option(); - $minlength = $tag->get_minlength_option(); - if ($maxlength && $minlength && $maxlength < $minlength) { - $maxlength = $minlength = null; - } - $code_units = wpcf7_count_code_units($value); - if (false !== $code_units) { - if ($maxlength && $maxlength < $code_units) { - $result->invalidate($tag, wpcf7_get_message('invalid_too_long')); - return $result; - } elseif ($minlength && $code_units < $minlength) { - $result->invalidate($tag, wpcf7_get_message('invalid_too_short')); - return $result; - } - } - } - - return $result; -} - -/** - * Backend Mail Configuration Validation - * - * Validate dynamic form tags used in mail configuration. - * - * @since 4.0.0 - * - * @param WPCF7_ConfigValidator - * - * @return void - */ -function wpcf7dtx_validate($validator) -{ - // Check for sensitive form tags - $manager = WPCF7_FormTagsManager::get_instance(); - $contact_form = $validator->contact_form(); - $form = $contact_form->prop('form'); - if (wpcf7_autop_or_not()) { - $form = $manager->replace_with_placeholders($form); - $form = wpcf7_autop($form); - $form = $manager->restore_from_placeholders($form); - } - $form = $manager->replace_all($form); - $tags = $manager->get_scanned_tags(); - foreach ($tags as $tag) { - /** @var WPCF7_FormTag $tag */ - - // Only validate DTX formtags - if (in_array($tag->basetype, array_merge( - array('dynamictext', 'dynamichidden'), // Deprecated DTX form tags - array_keys(wpcf7dtx_config()) // DTX form tags - ))) { - // Check value for sensitive data - $default = $tag->get_option('defaultvalue', '', true); - if (!$default) { - $default = $tag->get_default_option(strval(reset($tag->values))); - } - if ( - !empty($value = trim(wpcf7_get_hangover($tag->name, $default))) && // Has value - ($result = wpcf7dtx_validate_sensitive_value($value))['status'] // Has sensitive data - ) { - $validator->add_error('form.body', 'dtx_disallowed', array( - 'message' => sprintf( - __('[%1$s %2$s]: Access to key "%3$s" in shortcode "%4$s" is disallowed by default. To allow access, add "%3$s" to the %5$s Allow List.', 'contact-form-7-dynamic-text-extension'), - esc_html($tag->basetype), - esc_html($tag->name), - esc_html($result['key']), - esc_html($result['shortcode']), - esc_html($result['shortcode'] == 'CF7_get_current_user' ? __('User Data Key', 'contact-form-7-dynamic-text-extension') : __('Meta Key', 'contact-form-7-dynamic-text-extension')) - ), - 'link' => wpcf7dtx_get_admin_settings_screen_url() - )); - } - - // Check placeholder for sensitive data - if ( - ($tag->has_option('placeholder') || $tag->has_option('watermark')) && // Using placeholder - !empty($placeholder = trim(html_entity_decode(urldecode($tag->get_option('placeholder', '', true)), ENT_QUOTES))) && // Has value - ($result = wpcf7dtx_validate_sensitive_value($placeholder))['status'] // Has sensitive data - ) { - $validator->add_error('form.body', 'dtx_disallowed', array( - 'message' => sprintf( - __('[%1$s %2$s]: Access to key "%3$s" in shortcode "%4$s" is disallowed by default. To allow access, add "%3$s" to the %5$s Allow List.', 'contact-form-7-dynamic-text-extension'), - esc_html($tag->basetype), - esc_html($tag->name), - esc_html($result['key']), - esc_html($result['shortcode']), - esc_html($result['shortcode'] == 'CF7_get_current_user' ? __('User Data Key', 'contact-form-7-dynamic-text-extension') : __('Meta Key', 'contact-form-7-dynamic-text-extension')) - ), - 'link' => wpcf7dtx_get_admin_settings_screen_url() - )); - } - } - } - - // Validate email address - if (!$validator->is_valid()) { - $contact_form = null; - $form_tags = null; - foreach ($validator->collect_error_messages() as $component => $errors) { - $components = explode('.', $component); - if (count($components) === 2 && strpos($components[0], 'mail') === 0 && in_array($components[1], array('sender', 'recipient', 'additional_headers'))) { - foreach ($errors as $error) { - // Focus on email fields that flag the invalid mailbox syntax warning, have to test link because code isn't sent and message could be in any language - if (strpos(wpcf7dtx_array_has_key('link', $error), 'invalid-mailbox-syntax') !== false) { - if (is_null($contact_form)) { - $contact_form = $validator->contact_form(); - } - if (is_null($form_tags)) { - $form_tags = wpcf7_scan_form_tags(); - } - $raw_value = $contact_form->prop($components[0])[$components[1]]; - foreach ($form_tags as $tag) { - if (!empty($tag->name)) { - // Check if this form tag is in the raw value - $form_tag = '[' . $tag->name . ']'; - if (strpos($raw_value, $form_tag) !== false && in_array($tag->basetype, array_keys(wpcf7dtx_config()))) { - $validator->remove_error($component, 'invalid_mailbox_syntax'); // Remove error, this is ours to handle now - $utm_source = urlencode(home_url()); - if (!in_array($tag->basetype, array('dynamic_hidden', 'dynamic_email'))) { - $validator->add_error($component, 'invalid_mailbox_syntax', array( - 'message' => __('Only email, dynamic email, hidden, or dynamic hidden form tags can be used for email addresses.', 'contact-form-7-dynamic-text-extension'), - 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-invalid_mailbox_syntax#valid-form-tags', $utm_source)) - )); - } else { - $dynamic_value = wpcf7dtx_get_dynamic(false, $tag); // Get the dynamic value of this tag - if (empty($dynamic_value) && $tag->basetype == 'dynamic_hidden') { - $validator->add_error($component, 'maybe_empty', array( - 'message' => __('The dynamic hidden form tag must have a default value.', 'contact-form-7-dynamic-text-extension'), - 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-maybe_empty#maybe-empty', $utm_source)) - )); - } elseif (empty($dynamic_value) && !$tag->is_required()) { - $validator->add_error($component, 'maybe_empty', array( - 'message' => __('The dynamic form tag must be required or have a default value.', 'contact-form-7-dynamic-text-extension'), - 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-maybe_empty#maybe-empty', $utm_source)) - )); - } elseif (!empty($dynamic_value)) { - if (!wpcf7_is_email($dynamic_value)) { - $validator->add_error($component, 'invalid_mailbox_syntax', array( - 'message' => __('The default dynamic value does not result in a valid email address.', 'contact-form-7-dynamic-text-extension'), - 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-invalid_mailbox_syntax#invalid-email-address', $utm_source)) - )); - } elseif ($component[1] == 'sender' && !wpcf7_is_email_in_site_domain($dynamic_value)) { - $validator->add_error($component, 'email_not_in_site_domain', array( - 'message' => __('The dynamic email address for the sender does not belong to the site domain.', 'contact-form-7-dynamic-text-extension'), - 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-email_not_in_site_domain#invalid-site-domain', $utm_source)) - )); - } - } - } - } - } - } - } - } - } - } - } -} -add_action('wpcf7_config_validator_validate', 'wpcf7dtx_validate'); - -/** - * Validate Field Value for Sensitive Data - * - * @since 5.0.0 - * - * @see https://developer.wordpress.org/reference/functions/get_bloginfo/#description - * - * @param string $content The string to validate. - * - * @return array An associative array with keys `status` (bool), `shortcode` (string), and `key` (string). - * The value of `status` is true if the content is a shortcode that is attempting to access sensitive data. False - * otherwise. The value of `shortcode` is the the shortcode that is making the attempt if `status` is true. The - * value of `key` is the shortcode's `key` attribute of the attempt being made if `status` is true. - */ -function wpcf7dtx_validate_sensitive_value($content) -{ - $r = array( - 'status' => false, - 'shortcode' => '', - 'key' => '' - ); - - // Parse the attributes. [0] is the shortcode name. ['key'] is the key attribute - $atts = shortcode_parse_atts($content); - - // If we can't extract the atts, or the shortcode or `key` is not an att, don't validate - if( !is_array($atts) || !array_key_exists('key', $atts) || !array_key_exists('0', $atts) ) return $r; - - // Find the key and shortcode in question - $key = sanitize_text_field($atts['key']); - $shortcode = sanitize_text_field($atts['0']); - - // If the shortcode or key value does not exist, don't validate - if( empty($shortcode) || empty($key) ) return $r; - - $allowed = true; - switch( $shortcode ){ - case 'CF7_get_custom_field': - $allowed = wpcf7dtx_post_meta_key_access_is_allowed( $key ); - break; - case 'CF7_get_current_user': - $allowed = wpcf7dtx_user_data_access_is_allowed( $key ); - break; - default: - - } - - if( !$allowed ){ - $r['status'] = true; - $r['shortcode'] = $shortcode; - $r['key'] = $key; - } - - return $r; - -} + array( + 'description' => __('There is a field with an invalid email address', 'contact-form-7-dynamic-text-extension'), + 'default' => __('Please enter a valid email address.', 'contact-form-7-dynamic-text-extension') + ), + 'dtx_invalid_tel' => array( + 'description' => __('There is a field with an invalid phone number', 'contact-form-7-dynamic-text-extension'), + 'default' => __('Please enter a valid phone number.', 'contact-form-7-dynamic-text-extension') + ), + 'dtx_invalid_number' => array( + 'description' => __('There is a field with an invalid number', 'contact-form-7-dynamic-text-extension'), + 'default' => __('Please enter a valid number.', 'contact-form-7-dynamic-text-extension') + ), + 'dtx_invalid_date' => array( + 'description' => __('There is a field with an invalid date', 'contact-form-7-dynamic-text-extension'), + 'default' => __('Please enter a valid date.', 'contact-form-7-dynamic-text-extension') + ), + )); +} +add_filter('wpcf7_messages', 'wpcf7dtx_messages'); + +/** + * Add DTX Error Code to Config Validator + * + * @since 5.0.0 + * + * @param array $error_codes A sequential array of available error codes in Contact Form 7. + * + * @return array A modified sequential array of available error codes in Contact Form 7. + */ +function wpcf7dtx_config_validator_available_error_codes($error_codes) +{ + $dtx_errors = array('dtx_disallowed'); + return array_merge($error_codes, $dtx_errors); +} +add_filter('wpcf7_config_validator_available_error_codes', 'wpcf7dtx_config_validator_available_error_codes'); + +/** + * Validate DTX Form Fields + * + * Frontend validation for DTX form tags + * + * @param WPCF7_Validation $result the current validation result object + * @param WPCF7_FormTag $tag the current form tag being filtered for validation + * + * @return WPCF7_Validation a possibly modified validation result object + */ +function wpcf7dtx_validation_filter($result, $tag) +{ + $type = str_replace(array('dynamic_', 'dynamic'), '', $tag->basetype); + if (empty($tag->name) || in_array($type, array('hidden', 'submit', 'reset'))) { + return $result; // Bail early for tags without names or if a specific type + } + + // Get the value + $user_value = wpcf7dtx_array_has_key($tag->name, $_POST); + if (is_array($user_value)) { + $selection_count = count($user_value); + if (!wpcf7_form_tag_supports($tag->type, 'selectable-values')) { + // Field passed selectable values when it's doesn't support them + $result->invalidate($tag, wpcf7_get_message('validation_error')); + return $result; + } elseif ($selection_count > 1) { + if (!wpcf7_form_tag_supports($tag->type, 'multiple-controls-container')) { + // Field passed multiple values when it's doesn't support them + $result->invalidate($tag, wpcf7_get_message('validation_error')); + return $result; + } + foreach ($user_value as $selection) { + // Validate each selected choice + $result = wpcf7dtx_validate_value($result, sanitize_textarea_field(strval($selection)), $tag, $type); + if (!$result->is_valid($tag->name)) { + return $result; // Return early if any are invalid + } + } + return $result; + } + $user_value = sanitize_text_field(strval(implode(' ', $user_value))); + } elseif ($type == 'textarea') { + $user_value = sanitize_textarea_field(strval($user_value)); + } else { + $user_value = sanitize_text_field(strval($user_value)); + } + // Validate and return + return wpcf7dtx_validate_value($result, $user_value, $tag, $type); +} + + +/** + * Validate Single Value + * + * @param WPCF7_Validation $result the current validation result object + * @param string $value the current value being validated, sanitized + * @param WPCF7_FormTag $tag the current form tag being filtered for validation + * @param string $type Optional. The type of the current form tag. Default is blank for lookup. + * + * @return WPCF7_Validation a possibly modified validation result object + */ +function wpcf7dtx_validate_value($result, $value, $tag, $type = '') +{ + $type = $type ? $type : str_replace(array('dynamic_', 'dynamic'), '', $tag->basetype); + + // Validate required fields for value + if ($tag->is_required() && empty($value)) { + $result->invalidate($tag, wpcf7_get_message('invalid_required')); + return $result; + } + + // Validate value by type + if (!empty($value)) { + switch ($type) { + case 'email': + if (!wpcf7_is_email($value)) { + $result->invalidate($tag, wpcf7_get_message('dtx_invalid_email')); + return $result; + } + break; + case 'tel': + if (!wpcf7_is_tel($value)) { + $result->invalidate($tag, wpcf7_get_message('dtx_invalid_tel')); + return $result; + } + break; + case 'number': + case 'range': + if (!wpcf7_is_number($value)) { + $result->invalidate($tag, wpcf7_get_message('dtx_invalid_number')); + return $result; + } + break; + case 'date': + if (!wpcf7_is_date($value)) { + $result->invalidate($tag, wpcf7_get_message('dtx_invalid_date')); + return $result; + } + break; + } + + // Finish validating text-based inputs + $maxlength = $tag->get_maxlength_option(); + $minlength = $tag->get_minlength_option(); + if ($maxlength && $minlength && $maxlength < $minlength) { + $maxlength = $minlength = null; + } + $code_units = wpcf7_count_code_units($value); + if (false !== $code_units) { + if ($maxlength && $maxlength < $code_units) { + $result->invalidate($tag, wpcf7_get_message('invalid_too_long')); + return $result; + } elseif ($minlength && $code_units < $minlength) { + $result->invalidate($tag, wpcf7_get_message('invalid_too_short')); + return $result; + } + } + } + + return $result; +} + +/** + * Validator Requires Contact Form 7 Minimum Version + */ +if (wpcf7dtx_dependencies()) { + /** + * Backend Mail Configuration Validation + * + * Validate dynamic form tags used in mail configuration. + * + * @since 4.0.0 + * + * @param WPCF7_ConfigValidator + * + * @return void + */ + function wpcf7dtx_validate($validator) + { + // Check for sensitive form tags + $manager = WPCF7_FormTagsManager::get_instance(); + $contact_form = $validator->contact_form(); + $form = $contact_form->prop('form'); + if (wpcf7_autop_or_not()) { + $form = $manager->replace_with_placeholders($form); + $form = wpcf7_autop($form); + $form = $manager->restore_from_placeholders($form); + } + $form = $manager->replace_all($form); + $tags = $manager->get_scanned_tags(); + foreach ($tags as $tag) { + /** @var WPCF7_FormTag $tag */ + + // Only validate DTX formtags + if (in_array($tag->basetype, array_merge( + array('dynamictext', 'dynamichidden'), // Deprecated DTX form tags + array_keys(wpcf7dtx_config()) // DTX form tags + ))) { + // Check value for sensitive data + $default = $tag->get_option('defaultvalue', '', true); + if (!$default) { + $default = $tag->get_default_option(strval(reset($tag->values))); + } + if ( + !empty($value = trim(wpcf7_get_hangover($tag->name, $default))) && // Has value + ($result = wpcf7dtx_validate_sensitive_value($value))['status'] // Has sensitive data + ) { + $validator->add_error('form.body', 'dtx_disallowed', array( + 'message' => sprintf( + __('[%1$s %2$s]: Access to key "%3$s" in shortcode "%4$s" is disallowed by default. To allow access, add "%3$s" to the %5$s Allow List.', 'contact-form-7-dynamic-text-extension'), + esc_html($tag->basetype), + esc_html($tag->name), + esc_html($result['key']), + esc_html($result['shortcode']), + esc_html($result['shortcode'] == 'CF7_get_current_user' ? __('User Data Key', 'contact-form-7-dynamic-text-extension') : __('Meta Key', 'contact-form-7-dynamic-text-extension')) + ), + 'link' => wpcf7dtx_get_admin_settings_screen_url() + )); + } + + // Check placeholder for sensitive data + if ( + ($tag->has_option('placeholder') || $tag->has_option('watermark')) && // Using placeholder + !empty($placeholder = trim(html_entity_decode(urldecode($tag->get_option('placeholder', '', true)), ENT_QUOTES))) && // Has value + ($result = wpcf7dtx_validate_sensitive_value($placeholder))['status'] // Has sensitive data + ) { + $validator->add_error('form.body', 'dtx_disallowed', array( + 'message' => sprintf( + __('[%1$s %2$s]: Access to key "%3$s" in shortcode "%4$s" is disallowed by default. To allow access, add "%3$s" to the %5$s Allow List.', 'contact-form-7-dynamic-text-extension'), + esc_html($tag->basetype), + esc_html($tag->name), + esc_html($result['key']), + esc_html($result['shortcode']), + esc_html($result['shortcode'] == 'CF7_get_current_user' ? __('User Data Key', 'contact-form-7-dynamic-text-extension') : __('Meta Key', 'contact-form-7-dynamic-text-extension')) + ), + 'link' => wpcf7dtx_get_admin_settings_screen_url() + )); + } + } + } + + // Validate email address + if (!$validator->is_valid()) { + $contact_form = null; + $form_tags = null; + foreach ($validator->collect_error_messages() as $component => $errors) { + $components = explode('.', $component); + if (count($components) === 2 && strpos($components[0], 'mail') === 0 && in_array($components[1], array('sender', 'recipient', 'additional_headers'))) { + foreach ($errors as $error) { + // Focus on email fields that flag the invalid mailbox syntax warning, have to test link because code isn't sent and message could be in any language + if (strpos(wpcf7dtx_array_has_key('link', $error), 'invalid-mailbox-syntax') !== false) { + if (is_null($contact_form)) { + $contact_form = $validator->contact_form(); + } + if (is_null($form_tags)) { + $form_tags = wpcf7_scan_form_tags(); + } + $raw_value = $contact_form->prop($components[0])[$components[1]]; + foreach ($form_tags as $tag) { + if (!empty($tag->name)) { + // Check if this form tag is in the raw value + $form_tag = '[' . $tag->name . ']'; + if (strpos($raw_value, $form_tag) !== false && in_array($tag->basetype, array_keys(wpcf7dtx_config()))) { + $validator->remove_error($component, 'invalid_mailbox_syntax'); // Remove error, this is ours to handle now + $utm_source = urlencode(home_url()); + if (!in_array($tag->basetype, array('dynamic_hidden', 'dynamic_email'))) { + $validator->add_error($component, 'invalid_mailbox_syntax', array( + 'message' => __('Only email, dynamic email, hidden, or dynamic hidden form tags can be used for email addresses.', 'contact-form-7-dynamic-text-extension'), + 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-invalid_mailbox_syntax#valid-form-tags', $utm_source)) + )); + } else { + $dynamic_value = wpcf7dtx_get_dynamic(false, $tag); // Get the dynamic value of this tag + if (empty($dynamic_value) && $tag->basetype == 'dynamic_hidden') { + $validator->add_error($component, 'maybe_empty', array( + 'message' => __('The dynamic hidden form tag must have a default value.', 'contact-form-7-dynamic-text-extension'), + 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-maybe_empty#maybe-empty', $utm_source)) + )); + } elseif (empty($dynamic_value) && !$tag->is_required()) { + $validator->add_error($component, 'maybe_empty', array( + 'message' => __('The dynamic form tag must be required or have a default value.', 'contact-form-7-dynamic-text-extension'), + 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-maybe_empty#maybe-empty', $utm_source)) + )); + } elseif (!empty($dynamic_value)) { + if (!wpcf7_is_email($dynamic_value)) { + $validator->add_error($component, 'invalid_mailbox_syntax', array( + 'message' => __('The default dynamic value does not result in a valid email address.', 'contact-form-7-dynamic-text-extension'), + 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-invalid_mailbox_syntax#invalid-email-address', $utm_source)) + )); + } elseif ($component[1] == 'sender' && !wpcf7_is_email_in_site_domain($dynamic_value)) { + $validator->add_error($component, 'email_not_in_site_domain', array( + 'message' => __('The dynamic email address for the sender does not belong to the site domain.', 'contact-form-7-dynamic-text-extension'), + 'link' => esc_url(sprintf('https://aurisecreative.com/docs/contact-form-7-dynamic-text-extension/configuration-errors/?utm_source=%s&utm_medium=link&utm_campaign=contact-form-7-dynamic-text-extension&utm_content=config-error-email_not_in_site_domain#invalid-site-domain', $utm_source)) + )); + } + } + } + } + } + } + } + } + } + } + } + } + add_action('wpcf7_config_validator_validate', 'wpcf7dtx_validate'); +} + + +/** + * Validate Field Value for Sensitive Data + * + * @since 5.0.0 + * + * @see https://developer.wordpress.org/reference/functions/get_bloginfo/#description + * + * @param string $content The string to validate. + * + * @return array An associative array with keys `status` (bool), `shortcode` (string), and `key` (string). + * The value of `status` is true if the content is a shortcode that is attempting to access sensitive data. False + * otherwise. The value of `shortcode` is the the shortcode that is making the attempt if `status` is true. The + * value of `key` is the shortcode's `key` attribute of the attempt being made if `status` is true. + */ +function wpcf7dtx_validate_sensitive_value($content) +{ + $r = array( + 'status' => false, + 'shortcode' => '', + 'key' => '' + ); + + // Parse the attributes. [0] is the shortcode name. ['key'] is the key attribute + $atts = shortcode_parse_atts($content); + + // If we can't extract the atts, or the shortcode or `key` is not an att, don't validate + if (!is_array($atts) || !array_key_exists('key', $atts) || !array_key_exists('0', $atts)) return $r; + + // Find the key and shortcode in question + $key = sanitize_text_field($atts['key']); + $shortcode = sanitize_text_field($atts['0']); + + // If the shortcode or key value does not exist, don't validate + if (empty($shortcode) || empty($key)) return $r; + + $allowed = true; + switch ($shortcode) { + case 'CF7_get_custom_field': + $allowed = wpcf7dtx_post_meta_key_access_is_allowed($key); + break; + case 'CF7_get_current_user': + $allowed = wpcf7dtx_user_data_access_is_allowed($key); + break; + default: + } + + if (!$allowed) { + $r['status'] = true; + $r['shortcode'] = $shortcode; + $r['key'] = $key; + } + + return $r; +} diff --git a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/readme.txt b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/readme.txt index c9d9d1e3..b45db4e9 100644 --- a/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/readme.txt +++ b/wp/wp-content/plugins/contact-form-7-dynamic-text-extension/readme.txt @@ -3,7 +3,7 @@ Contributors: sevenspark, tessawatkinsllc Donate link: https://just1voice.com/donate/ Tags: Contact Form 7, autofill, prepopulate, input, form field, contact form, text, hidden, input, dynamic, GET, POST, title, slug, auto-fill, pre-populate Tested up to: 6.4.2 -Stable tag: 4.2.0 +Stable tag: 4.2.3 This plugin provides additional form tags for the Contact Form 7 plugin. It allows dynamic generation of content for text-based input fields like text, hidden, and email, checkboxes, radio buttons, and drop-down selections using any shortcode. @@ -380,16 +380,35 @@ Please check out the [FAQ on our website](https://aurisecreative.com/docs/contac == Upgrade Notice == -= 4.2.0 = -Extend functionality without losing your work! += 4.2.3 = +Resolved a bug where the `dynamic_select` displayed with a default size of 40 instead of 1. == Changelog == += 4.2.3 = + +* Fix: Resolved a bug where the `dynamic_select` displayed with a default size of 40 instead of 1. + += 4.2.2 = + +* Feature: Cache compatibility JavaScript triggers the custom `dtx_init` event on enabled input fields, [see support thread](https://wordpress.org/support/topic/dynamic_text-cf7_url-dont-fire-onchange-event/). + += 4.2.1 = + +* Feature: Allows text-based fields to use `autocapitalize` attribute +* Feature: Allows text-based fields to use `autofocus` attribute +* Feature: Allows text-based fields to use `list` attribute +* Feature: Allows text-based fields to use `pattern` attribute +* Feature: Allows textareas to use `wrap` attribute +* Fix: Resolved the bug that prevented the `dynamic_date` shortcode from using `min`, `max`, and `step` attributes, [see support thread](https://wordpress.org/support/topic/dynamic_date-min-max-step-options-ignored/). +* Fix: Added minimum version check for Contact Form 7, [see support thread](https://wordpress.org/support/topic/str_contains-is-php-8-0-only-broken-compatibility/). +* Fix: Resolved an issue that used a function introduced in PHP 8 while plugin compatibility setting is currently still set to 7.4+, [see support thread](https://wordpress.org/support/topic/str_contains-is-php-8-0-only-broken-compatibility/). + = 4.2.0 = * Security Update: ** Please be sure to review this doc, as you may need to adjust the settings: https://sevenspark.com/docs/contact-form-7-dynamic-text-extension/allow-data-access ** * Feature: Added Settings Screen with Allow Lists -* Feature: Added Form Scanner +* Feature: Added Form Scanner * Feature: Added Allow List key validation in CF7 Form Validator = 4.1.0 = diff --git a/wp/wp-content/plugins/contact-form-7/includes/formatting.php b/wp/wp-content/plugins/contact-form-7/includes/formatting.php index ab89c44e..3bf78135 100644 --- a/wp/wp-content/plugins/contact-form-7/includes/formatting.php +++ b/wp/wp-content/plugins/contact-form-7/includes/formatting.php @@ -261,7 +261,7 @@ function wpcf7_canonicalize( $text, $args = '' ) { * @return string Sanitized unit-tag. */ function wpcf7_sanitize_unit_tag( $tag ) { - $tag = preg_replace( '/[^A-Za-z0-9_-]/', '', $tag ); + $tag = preg_replace( '/[^A-Za-z0-9_-]/', '', (string) $tag ); return $tag; } diff --git a/wp/wp-content/plugins/contact-form-7/includes/rest-api.php b/wp/wp-content/plugins/contact-form-7/includes/rest-api.php index b3ff055a..e1a7d697 100644 --- a/wp/wp-content/plugins/contact-form-7/includes/rest-api.php +++ b/wp/wp-content/plugins/contact-form-7/includes/rest-api.php @@ -355,6 +355,13 @@ class WPCF7_REST_Controller { $request->get_param( '_wpcf7_unit_tag' ) ); + if ( empty( $unit_tag ) ) { + return new WP_Error( 'wpcf7_unit_tag_not_found', + __( "There is no valid unit tag.", 'contact-form-7' ), + array( 'status' => 400 ) + ); + } + $result = $item->submit(); $response = array_merge( $result, array( diff --git a/wp/wp-content/plugins/contact-form-7/modules/sendinblue/sendinblue.php b/wp/wp-content/plugins/contact-form-7/modules/sendinblue/sendinblue.php index 23c08edf..6a42e2fa 100644 --- a/wp/wp-content/plugins/contact-form-7/modules/sendinblue/sendinblue.php +++ b/wp/wp-content/plugins/contact-form-7/modules/sendinblue/sendinblue.php @@ -219,6 +219,18 @@ function wpcf7_sendinblue_collect_parameters() { } } + $params = array_map( + function ( $param ) { + if ( is_array( $param ) ) { + $param = wpcf7_array_flatten( $param ); + $param = reset( $param ); + } + + return $param; + }, + $params + ); + $params = apply_filters( 'wpcf7_sendinblue_collect_parameters', $params diff --git a/wp/wp-content/plugins/contact-form-7/readme.txt b/wp/wp-content/plugins/contact-form-7/readme.txt index ea80793d..5a938ef8 100644 --- a/wp/wp-content/plugins/contact-form-7/readme.txt +++ b/wp/wp-content/plugins/contact-form-7/readme.txt @@ -5,7 +5,7 @@ Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, mult Requires at least: 6.2 Requires PHP: 7.4 Tested up to: 6.4 -Stable tag: 5.8.6 +Stable tag: 5.8.7 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -78,6 +78,10 @@ Do you have questions or issues with Contact Form 7? Use these support channels For more information, see [Releases](https://contactform7.com/category/releases/). += 5.8.7 = + +[https://contactform7.com/contact-form-7-587/](https://contactform7.com/contact-form-7-587/) + = 5.8.6 = [https://contactform7.com/contact-form-7-586/](https://contactform7.com/contact-form-7-586/) diff --git a/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php b/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php index 1f85730b..1c63002a 100644 --- a/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php +++ b/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php @@ -7,12 +7,12 @@ * Author URI: https://ideasilo.wordpress.com/ * License: GPL v2 or later * License URI: https://www.gnu.org/licenses/gpl-2.0.html - * Version: 5.8.6 + * Version: 5.8.7 * Requires at least: 6.2 * Requires PHP: 7.4 */ -define( 'WPCF7_VERSION', '5.8.6' ); +define( 'WPCF7_VERSION', '5.8.7' ); define( 'WPCF7_REQUIRED_WP_VERSION', '6.2' ); diff --git a/wp/wp-content/plugins/ip-geo-block/LICENSE.txt b/wp/wp-content/plugins/ip-geo-block/LICENSE.txt deleted file mode 100644 index f288702d..00000000 --- a/wp/wp-content/plugins/ip-geo-block/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc.
'; - if ( 'updated' === $type ) - echo '', IP_Geo_Block_Util::kses( $msg ), ''; - else - echo 'IP Geo Block: ', IP_Geo_Block_Util::kses( $msg ); - echo '
%s. It seems to have failed downloading ZIP file from WordPress-IP-Geo-API. Try to deactivate IP Geo Block once and activate it again, or install ip-geo-api with write permission according to this instruction.', 'ip-geo-block' ),
- apply_filters( 'ip-geo-block-api-dir', $settings['api_dir'] ? $settings['api_dir'] : basename( WP_CONTENT_DIR ) )
- ) );
- }
-
- else {
- $providers = IP_Geo_Block_Provider::get_valid_providers( $settings, FALSE, FALSE, TRUE );
- if ( empty( $providers ) ) {
- $this->add_admin_notice( 'error', sprintf(
- __( 'You should select at least one API at Geolocation API settings. Otherwise you\'ll be blocked after the cache expires.', 'ip-geo-block' ),
- esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0, 'sec' => 4 ), $network ) ) . '#' . IP_Geo_Block::PLUGIN_NAME . '-section-4'
- ) );
- }
-
- else {
- $providers = IP_Geo_Block_Provider::get_addons( $settings['providers'] );
- if ( empty( $providers ) ) {
- $this->add_admin_notice( 'error', sprintf(
- __( 'You should select at least one API for local database at Geolocation API settings. Otherwise access to the external API may slow down the site.', 'ip-geo-block' ),
- esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME, 'tab' => 0, 'sec' => 4 ), $network ) ) . '#' . IP_Geo_Block::PLUGIN_NAME . '-section-4'
- ) );
- }
- }
- }
-
- // Check consistency of matching rule
- if ( -1 === (int)$settings['matching_rule'] ) {
- if ( FALSE !== $updating ) {
- self::add_admin_notice( 'notice-warning', sprintf(
- __( 'Now downloading geolocation databases in background. After a little while, please check your country code and “Matching rule” at Validation rules and behavior.', 'ip-geo-block' ),
- esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME ), $network ) )
- ) );
- }
- else {
- self::add_admin_notice( 'error', sprintf(
- __( 'The “Matching rule” is not set properly. Please confirm it at Validation rules and behavior.', 'ip-geo-block' ),
- esc_url( add_query_arg( array( 'page' => IP_Geo_Block::PLUGIN_NAME ), $network ) )
- ) );
- }
- }
-
- // Check to finish updating matching rule
- elseif ( 'done' === $updating ) {
- delete_transient( IP_Geo_Block::CRON_NAME );
- self::add_admin_notice( 'updated ', __( 'Local database and matching rule have been updated.', 'ip-geo-block' ) );
- }
-
- // Check self blocking (skip during updating)
- if ( FALSE === $updating && 1 === (int)$settings['validation']['login'] ) {
- $instance = IP_Geo_Block::get_instance();
- $validate = $instance->validate_ip( 'login', $settings, TRUE, FALSE ); // skip authentication check
-
- switch( $validate['result'] ) {
- case 'limited':
- self::add_admin_notice( 'error',
- __( 'Once you logout, you will be unable to login again because the number of login attempts reaches the limit.', 'ip-geo-block' ) . ' ' .
- sprintf(
- __( 'Please remove your IP address in “%1$sStatistics in IP address cache%2$s” on “%3$sStatistics%4$s” tab to prevent locking yourself out.', 'ip-geo-block' ),
- '', '',
- '', ''
- )
- );
- break;
-
- case 'blocked':
- case 'extra':
- self::add_admin_notice( 'error',
- ( $settings['matching_rule'] ?
- __( 'Once you logout, you will be unable to login again because your country code or IP address is in the blacklist.', 'ip-geo-block' ) :
- __( 'Once you logout, you will be unable to login again because your country code or IP address is not in the whitelist.', 'ip-geo-block' )
- ) . ' ' .
- ( 'ZZ' !== $validate['code'] ?
- sprintf(
- __( 'Please check your “%sValidation rules and behavior%s”.', 'ip-geo-block' ),
- '', ''
- ) :
- sprintf(
- __( 'Please confirm your local geolocation database files exist at “%sLocal database settings%s” section, or remove your IP address in cache at “%sStatistics in cache%s” section.', 'ip-geo-block' ),
- '', '',
- '', ''
- )
- )
- );
- break;
- }
- }
-
- // Check consistency of emergency login link
- if ( isset( $settings['login_link'] ) && $settings['login_link']['link'] && ! IP_Geo_Block_Util::verify_link( $settings['login_link']['link'], $settings['login_link']['hash'] ) ) {
- self::add_admin_notice( 'error',
- sprintf(
- __( 'Emergency login link is outdated. Please delete it once and generate again at “%sPlugin settings%s” section. Also do not forget to update favorites / bookmarks in your browser.', 'ip-geo-block' ),
- '', ''
- )
- );
- }
-
- // Check activation of IP Geo Allow
- if ( $settings['validation']['timing'] && is_plugin_active( 'ip-geo-allow/index.php' ) ) {
- self::add_admin_notice( 'error',
- __( '“mu-plugins” (ip-geo-block-mu.php) at “Validation timing” is imcompatible with IP Geo Allow. Please select “init” action hook.', 'ip-geo-block' )
- );
- }
- }
-
- /**
- * Setup menu and option page for this plugin
- *
- */
- public function setup_admin_page() {
- $settings = IP_Geo_Block::get_option();
-
- // Register the administration menu.
- $this->add_plugin_admin_menu( $settings );
-
- // Avoid multiple validation.
- if ( 'GET' === $_SERVER['REQUEST_METHOD'] )
- $this->diagnose_admin_screen( $settings );
-
- // Register settings page only if it is needed.
- if ( ( isset( $_GET ['page' ] ) && IP_Geo_Block::PLUGIN_NAME === $_GET ['page' ] ) ||
- ( isset( $_POST['option_page'] ) && IP_Geo_Block::PLUGIN_NAME === $_POST['option_page'] ) ) {
- $this->register_settings_tab();
- }
-
- // Add an action link pointing to the options page. @since 2.7
- else {
- add_filter( 'plugin_row_meta', array( $this, 'add_plugin_meta_links' ), 10, 2 );
- add_filter( 'plugin_action_links_' . IP_GEO_BLOCK_BASE, array( $this, 'add_action_links' ), 10, 1 );
- }
-
- // Register scripts for admin.
- add_action( 'admin_enqueue_scripts', array( 'IP_Geo_Block', 'enqueue_nonce' ), 0 );
-
- // Show admin notices at the place where it should be. @since 2.5.0
- add_action( 'admin_notices', array( $this, 'show_admin_notices' ) );
- add_action( 'network_admin_notices', array( $this, 'show_admin_notices' ) );
- }
-
- /**
- * Get cookie that indicates open/close section
- *
- */
- public function get_cookie() {
- static $cookie = array();
-
- if ( empty( $cookie ) && ! empty( $_COOKIE[ IP_Geo_Block::PLUGIN_NAME ] ) ) {
- foreach ( explode( '&', $_COOKIE[ IP_Geo_Block::PLUGIN_NAME ] ) as $i => $v ) {
- list( $i, $v ) = explode( '=', $v );
- $cookie[ $i ] = str_split( $v );
- }
- }
-
- return $cookie;
- }
-
- /**
- * Prints out all settings sections added to a particular settings page
- *
- * wp-admin/includes/template.php @since 2.7.0
- */
- private function do_settings_sections( $page, $tab ) {
- global $wp_settings_sections, $wp_settings_fields;
-
- // target section to be opened
- $target = isset( $_GET['sec'] ) ? (int)$_GET['sec'] : -1;
-
- if ( isset( $wp_settings_sections[ $page ] ) ) {
- $index = 0; // index of fieldset
- $cookie = $this->get_cookie();
-
- foreach ( (array) $wp_settings_sections[ $page ] as $section ) {
- // TRUE if open ('o') or FALSE if close ('x')
- $stat = empty( $cookie[ $tab ][ $index ] ) || 'x' !== $cookie[ $tab ][ $index ] || $index === $target;
-
- echo "\n", '\n";
- ++$index;
- }
- }
- }
-
- /**
- * Render the settings page for this plugin.
- *
- */
- public function display_plugin_admin_page() {
- $tab = $this->admin_tab;
- $tabs = array(
- 5 => __( 'Sites list', 'ip-geo-block' ),
- 0 => __( 'Settings', 'ip-geo-block' ),
- 1 => __( 'Statistics', 'ip-geo-block' ),
- 4 => __( 'Logs', 'ip-geo-block' ),
- 2 => __( 'Search', 'ip-geo-block' ),
- 3 => __( 'Attribution', 'ip-geo-block' ),
- );
-
- $settings = IP_Geo_Block::get_option();
- $cookie = $this->get_cookie();
- $title = esc_html( get_admin_page_title() );
-
- // Target page that depends on the network multisite or not.
- if ( 'options-general.php' === $GLOBALS['pagenow'] ) {
- $action = 'options.php';
- unset( $tabs[5] ); // Sites list
- if ( $this->is_network_admin ) {
- $title .= ' ';
- }
- }
-
- // '/wp-admin/network/admin.php'
- else {
- // `edit.php` is an action handler for Multisite administration dashboard.
- // `edit.php` ==> do action `network_admin_edit_ip-geo-block` ==> `validate_network_settings()`
- $action = 'edit.php?action=' . IP_Geo_Block::PLUGIN_NAME;
- if ( $this->is_network_admin ) {
- unset( $tabs[1], $tabs[4], $tabs[2], $tabs[3] ); // Statistics, Logs, Search, Attribution
- $title .= ' ';
- }
- }
-
-?>
-', implode( '
', $tab ), "
', __( 'Thanks for providing these great services for free.', 'ip-geo-block' ), "
\n";
- echo __( '(Most browsers will redirect you to each site without referrer when you click the link.)', 'ip-geo-block' ), "
', $desc, "
\n"; - - if ( 'select' === $args['type'] ) - break; - - echo "%s. Please check the permission.', 'ip-geo-block' ), '' . $file . ''
- ) );
- }
-
- // Force to finish update matching rule
- delete_transient( IP_Geo_Block::CRON_NAME );
-
- // start to update databases immediately
- do_action( IP_Geo_Block::PLUGIN_NAME . '-settings-updated', $options, TRUE );
-
- return $options;
- }
-
- /**
- * Validate settings and configure some features for network multisite.
- *
- * @see https://vedovini.net/2015/10/using-the-wordpress-settings-api-with-network-admin-pages/
- */
- public function validate_network_settings() {
- // Must check that the user has the required capability
- $this->check_admin_post( FALSE );
-
- // The list of registered options (IP_Geo_Block::OPTION_NAME).
- global $new_whitelist_options;
- $options = $new_whitelist_options[ IP_Geo_Block::PLUGIN_NAME ];
-
- // Go through the posted data and save the targetted options.
- foreach ( $options as $option ) {
- if ( isset( $_POST[ $option ] ) ) {
- $this->update_multisite_settings( $_POST[ $option ] );
- }
- }
-
- // Register a settings error to be displayed to the user
- self::add_admin_notice( 'updated', __( 'Settings saved.' ) );
-
- // Redirect in order to back to the settings page.
- wp_redirect( esc_url_raw(
- add_query_arg(
- array( 'page' => IP_Geo_Block::PLUGIN_NAME ),
- $this->dashboard_url( ! empty( $_POST[ $option ]['network_wide'] ) )
- )
- ) );
-
- exit;
- }
-
- /**
- * Update option in all blogs.
- *
- * @note: This function triggers `validate_settings()` on register_setting() in wp-include/option.php.
- */
- public function update_multisite_settings( $settings ) {
- global $wpdb;
- $blog_ids = $wpdb->get_col( "SELECT `blog_id` FROM `$wpdb->blogs`" );
- $ret = TRUE;
-
- foreach ( $blog_ids as $id ) {
- switch_to_blog( $id );
- $map = IP_Geo_Block::get_option( FALSE );
- $settings['api_key']['GoogleMap'] = $map['api_key']['GoogleMap'];
- $ret &= IP_Geo_Block::update_option( $settings, FALSE );
- restore_current_blog();
- }
-
- return $ret;
- }
-
- /**
- * Analyze entries in "Validation logs"
- *
- * @param array $logs An array including each entry where:
- * Array (
- * [0 DB row number] => 154
- * [1 Target ] => comment
- * [2 Time ] => 1534580897
- * [3 IP address ] => 102.177.147.***
- * [4 Country code ] => ZA
- * [5 Result ] => blocked
- * [6 AS number ] => AS328239
- * [7 Request ] => POST[80]:/wp-comments-post.php
- * [8 User agent ] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) ...
- * [9 HTTP headers ] => HTTP_ORIGIN=http://localhost,HTTP_X_FORWARDED_FOR=102.177.147.***
- * [10 $_POST data ] => comment=Hello.,author,email,url,comment_post_ID,comment_parent
- * )
- * And put a mark at "Target"
- * ¹¹: Passed in Whitelist
- * ¹²: Passed in Blacklist
- * ¹³: Passed not in list
- * ²¹: Blocked in Whitelist
- * ²²: Blocked in Blacklist
- * ²³: Blocked not in list
- */
- public function filter_logs( $logs ) {
- $settings = IP_Geo_Block::get_option();
-
- // White/Black list for back-end
- $white_backend = $settings['white_list'];
- $black_backend = $settings['black_list'];
-
- // White/Black list for front-end
- if ( $settings['public']['matching_rule'] < 0 ) {
- // Follow "Validation rule settings"
- $white_frontend = $white_backend;
- $black_frontend = $black_backend;
- } else {
- // Whitelist or Blacklist for "Public facing pages"
- $white_frontend = $settings['public']['white_list'];
- $black_frontend = $settings['public']['black_list'];
- }
-
- foreach ( $logs as $key => $log ) {
- // Passed or Blocked
- $mark = IP_Geo_Block::is_passed( $log[5] ) ? '¹' : '²';
-
- // Whitelisted, Blacklisted or N/A
- if ( 'public' === $log[1] ) {
- $mark .= IP_Geo_Block::is_listed( $log[4], $white_frontend ) ? '¹' : (
- IP_Geo_Block::is_listed( $log[4], $black_frontend ) ? '²' : '³' );
- } else {
- $mark .= IP_Geo_Block::is_listed( $log[4], $white_backend ) ? '¹' : (
- IP_Geo_Block::is_listed( $log[4], $black_backend ) ? '²' : '³' );
- }
-
- // Put a mark at "Target"
- $logs[ $key ][1] .= $mark;
- }
-
- return $logs;
- }
-
- /**
- * Register UI "Preset filters" at "Search in logs"
- *
- * @param array $filters An empty array by default.
- * @return array $filters The array of paired with 'title' and 'value'.
- */
- public function preset_filters( $filters = array() ) {
- return array(
- array( 'title' => '' . __( 'Passed in Whitelist', 'ip-geo-block' ), 'value' => '¹¹' ),
- array( 'title' => '' . __( 'Passed in Blacklist', 'ip-geo-block' ), 'value' => '¹²' ),
- array( 'title' => '' . __( 'Passed not in List', 'ip-geo-block' ), 'value' => '¹³' ),
- array( 'title' => '' . __( 'Blocked in Whitelist', 'ip-geo-block' ), 'value' => '²¹' ),
- array( 'title' => '' . __( 'Blocked in Blacklist', 'ip-geo-block' ), 'value' => '²²' ),
- array( 'title' => '' . __( 'Blocked not in List', 'ip-geo-block' ), 'value' => '²³' ),
- );
- }
-
- /**
- * Ajax callback function
- *
- * @link https://codex.wordpress.org/AJAX_in_Plugins
- * @link https://codex.wordpress.org/Function_Reference/check_ajax_referer
- * @link https://core.trac.wordpress.org/browser/trunk/wp-admin/admin-ajax.php
- */
- public function admin_ajax_callback() {
- require_once IP_GEO_BLOCK_PATH . 'admin/includes/class-admin-ajax.php';
-
- // Check request origin, nonce, capability.
- $this->check_admin_post( TRUE );
-
- // `$which` and `$cmd` should be restricted by whitelist in each function
- $settings = IP_Geo_Block::get_option();
- $which = isset( $_POST['which'] ) ? $_POST['which'] : NULL;
- $cmd = isset( $_POST['cmd' ] ) ? $_POST['cmd' ] : NULL;
-
- switch ( $cmd ) {
- case 'download':
- $res = IP_Geo_Block::get_instance();
- $res = $res->exec_update_db();
- break;
-
- case 'search': // Get geolocation by IP
- $res = array();
- foreach ( (array)$which as $cmd ) {
- $res[ $cmd ] = IP_Geo_Block_Admin_Ajax::search_ip( $cmd );
- }
- break;
-
- case 'scan-code': // Fetch providers to get country code
- $res = IP_Geo_Block_Admin_Ajax::scan_country( $which );
- break;
-
- case 'clear-statistics': // Set default values
- IP_Geo_Block_Logs::clear_stat();
- $res = array(
- 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME,
- 'tab' => 'tab=1'
- );
- break;
-
- case 'clear-cache': // Delete cache of IP address
- IP_Geo_Block_API_Cache::clear_cache();
- $res = array(
- 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME,
- 'tab' => 'tab=1'
- );
- break;
-
- case 'clear-logs': // Delete logs in MySQL DB
- IP_Geo_Block_Logs::clear_logs( $which );
- $res = array(
- 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME,
- 'tab' => 'tab=4'
- );
- break;
-
- case 'export-logs':// Export logs from MySQL DB
- IP_Geo_Block_Admin_Ajax::export_logs( $which );
- break;
-
- case 'restore-logs': // Get logs from MySQL DB
- has_filter( $cmd = IP_Geo_Block::PLUGIN_NAME . '-logs' ) or add_filter( $cmd, array( $this, 'filter_logs' ) );
- $res = IP_Geo_Block_Admin_Ajax::restore_logs( $which );
- break;
-
- case 'live-start': // Restore live log
- has_filter( $cmd = IP_Geo_Block::PLUGIN_NAME . '-logs' ) or add_filter( $cmd, array( $this, 'filter_logs' ) );
- if ( is_wp_error( $res = IP_Geo_Block_Admin_Ajax::restore_live_log( $which, $settings ) ) )
- $res = array( 'error' => $res->get_error_message() );
- break;
-
- case 'live-pause': // Pause live log
- if ( ! is_wp_error( $res = IP_Geo_Block_Admin_Ajax::catch_live_log() ) )
- $res = array( 'data' => array() );
- else
- $res = array( 'error' => $res->get_error_message() );
- break;
-
- case 'live-stop': // Stop live log
- if ( ! is_wp_error( $res = IP_Geo_Block_Admin_Ajax::release_live_log() ) )
- $res = array( 'data' => array() );
- else
- $res = array( 'error' => $res->get_error_message() );
- break;
-
- case 'reset-live': // Reset data source of live log
- $res = IP_Geo_Block_Admin_Ajax::reset_live_log();
- break;
-
- case 'validate': // Validate settings
- IP_Geo_Block_Admin_Ajax::validate_settings( $this );
- break;
-
- case 'import-default': // Import initial settings
- $res = IP_Geo_Block_Admin_Ajax::settings_to_json( IP_Geo_Block::get_default() );
- break;
-
- case 'import-preferred': // Import preference
- $res = IP_Geo_Block_Admin_Ajax::preferred_to_json();
- break;
-
- case 'gmap-error': // Reset Google Maps API key
- if ( $settings['api_key']['GoogleMap'] === 'default' ) {
- $settings['api_key']['GoogleMap'] = NULL;
- IP_Geo_Block::update_option( $settings );
- $res = array(
- 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME,
- 'tab' => 'tab=2'
- );
- }
- break;
-
- case 'generate-link': // Generate new link
- $res = array( 'link' => IP_Geo_Block_Util::generate_link( $this ) );
- break;
-
- case 'delete-link': // Delete existing link
- IP_Geo_Block_Util::delete_link( $this );
- break;
-
- case 'show-info': // Show system and debug information
- $res = IP_Geo_Block_Admin_Ajax::get_wp_info();
- break;
-
- case 'get-actions': // Get all the ajax/post actions
- $res = IP_Geo_Block_Util::get_registered_actions( TRUE );
- break;
-
- case 'export-cache': // Restore cache from database and format for DataTables
- IP_Geo_Block_Admin_Ajax::export_cache( $settings['anonymize'] );
- break;
-
- case 'restore-cache': // Restore cache from database and format for DataTables
- $res = IP_Geo_Block_Admin_Ajax::restore_cache( $settings['anonymize'] );
- break;
-
- case 'bulk-action-remove': // Delete specified IP addresses from cache
- $res = IP_Geo_Block_Logs::delete_cache_entry( $which['IP'] );
- break;
-
- case 'bulk-action-ip-erase':
- $res = IP_Geo_Block_Logs::delete_logs_entry( $which['IP'] );
- break;
-
- case 'bulk-action-ip-white':
- case 'bulk-action-ip-black':
- case 'bulk-action-as-white':
- case 'bulk-action-as-black':
- // Bulk actions for registration of settings
- $src = ( FALSE !== strpos( $cmd, '-ip-' ) ? 'IP' : 'AS' );
- $dst = ( FALSE !== strpos( $cmd, '-white' ) ? 'white_list' : 'black_list' );
-
- if ( empty( $which[ $src ] ) ) {
- $res = array( 'error' => sprintf( __( 'An error occurred while executing the ajax command `%s`.', 'ip-geo-block' ), $cmd ) );
- break;
- }
-
- foreach ( array_unique( (array)$which[ $src ] ) as $val ) {
- // replace anonymized IP address with CIDR (IPv4:256, IPv6:4096)
- $val = preg_replace(
- array( '/\.\*\*\*$/', '/:\w*\*\*\*$/', '/(::.*)::\/116$/' ),
- array( '.0/24', '::/116', '$1/116' ),
- trim( $val )
- );
- if ( ( filter_var( preg_replace( '/\/\d+$/', '', $val ), FILTER_VALIDATE_IP ) || preg_match( '/^AS\d+$/', $val ) ) &&
- ( FALSE === strpos( $settings['extra_ips'][ $dst ], $val ) ) ) {
- $settings['extra_ips'][ $dst ] .= "\n" . $val;
- }
- }
-
- if ( $this->is_network_admin && $settings['network_wide'] )
- $this->update_multisite_settings( $settings );
- else
- IP_Geo_Block::update_option( $settings );
-
- $res = array( 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME );
- break;
-
- case 'restore-network': // Restore blocked per target in logs
- $res = IP_Geo_Block_Admin_Ajax::restore_network( $which, (int)$_POST['offset'], (int)$_POST['length'], FALSE );
- break;
-
- case 'find-admin':
- case 'find-plugins':
- case 'find-themes':
- // Get slug in blocked requests for exceptions
- $res = IP_Geo_Block_Admin_Ajax::find_exceptions( $cmd );
- break;
-
- case 'diag-tables': // Check database tables
- IP_Geo_Block_Logs::diag_tables() or IP_Geo_Block_Logs::create_tables();
- $res = array( 'page' => 'options-general.php?page=' . IP_Geo_Block::PLUGIN_NAME );
- break;
- }
-
- if ( isset( $res ) ) // wp_send_json_{success,error}() @since 3.5.0
- wp_send_json( $res ); // @since 3.5.0
-
- die(); // End of ajax
- }
-
-}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/admin-icons.css b/wp/wp-content/plugins/ip-geo-block/admin/css/admin-icons.css
deleted file mode 100644
index 61110679..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/css/admin-icons.css
+++ /dev/null
@@ -1,79 +0,0 @@
-/*! IP Geo Block admin icons
- * This package includes the following icon font.
- * IcoMoon - Free / Designer: Keyamoon / License: GPL / CC BY 4.0
- * Zondicons / Designer: Steve Schoger / License: CC BY 4.0
- * Material Icons / Designer: Google / License: Apache License 2.0
- */
-@font-face {
- font-family: 'icomoon';
- src: url('fonts/icomoon.eot?jihakz');
- src: url('fonts/icomoon.eot?jihakz#iefix') format('embedded-opentype'),
- url('fonts/icomoon.ttf?jihakz') format('truetype'),
- url('fonts/icomoon.woff?jihakz') format('woff'),
- url('fonts/icomoon.svg?jihakz#icomoon') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-[class^="ip-geo-block-icon-"], [class*=" ip-geo-block-icon-"] {
- /* use !important to prevent issues with browser extensions that change fonts */
- font-family: 'icomoon' !important;
- speak: none;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
-
- /* Better Font Rendering =========== */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.ip-geo-block-icon-calc {
- margin-top: 0.2em !important;
-}
-.ip-geo-block-icon-calc:before {
- content: "\e901";
-}
-.ip-geo-block-icon-vpn_lock:before {
- content: "\e62f";
-}
-.ip-geo-block-icon-play:before {
- content: "\ea1c";
-}
-.ip-geo-block-icon-pause:before {
- content: "\ea1d";
-}
-.ip-geo-block-icon-stop:before {
- content: "\ea1e";
-}
-.ip-geo-block-icon-warning:before {
- content: "\e900";
-}
-.ip-geo-block-icon-happy:before {
- content: "\e9df";
-}
-.ip-geo-block-icon-grin2:before {
- content: "\e9ea";
-}
-.ip-geo-block-icon-cool:before {
- content: "\e9eb";
-}
-.ip-geo-block-icon-confused:before {
- content: "\e9f5";
-}
-.ip-geo-block-icon-confused2:before {
- content: "\e9f6";
-}
-.ip-geo-block-icon-crying:before {
- content: "\ea01";
-}
-
-/* Dashicons is the official icon font of the WordPress admin as of 3.8+. */
-#toplevel_page_ip-geo-block .dashicons-admin-generic:before {
- font-family: 'icomoon';
- content: "\e62f";
- font-size: 18px;
- margin-left: 2px;
-}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/admin-icons.min.css b/wp/wp-content/plugins/ip-geo-block/admin/css/admin-icons.min.css
deleted file mode 100644
index 6c9419fe..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/css/admin-icons.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! IP Geo Block admin icons
- * This package includes the following icon font.
- * IcoMoon - Free / Designer: Keyamoon / License: GPL / CC BY 4.0
- * Zondicons / Designer: Steve Schoger / License: CC BY 4.0
- * Material Icons / Designer: Google / License: Apache License 2.0
- */
-@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?jihakz);src:url(fonts/icomoon.eot?jihakz#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?jihakz) format('truetype'),url(fonts/icomoon.woff?jihakz) format('woff'),url(fonts/icomoon.svg?jihakz#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" ip-geo-block-icon-"],[class^=ip-geo-block-icon-]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ip-geo-block-icon-calc{margin-top:.2em!important}.ip-geo-block-icon-calc:before{content:"\e901"}.ip-geo-block-icon-vpn_lock:before{content:"\e62f"}.ip-geo-block-icon-play:before{content:"\ea1c"}.ip-geo-block-icon-pause:before{content:"\ea1d"}.ip-geo-block-icon-stop:before{content:"\ea1e"}.ip-geo-block-icon-warning:before{content:"\e900"}.ip-geo-block-icon-happy:before{content:"\e9df"}.ip-geo-block-icon-grin2:before{content:"\e9ea"}.ip-geo-block-icon-cool:before{content:"\e9eb"}.ip-geo-block-icon-confused:before{content:"\e9f5"}.ip-geo-block-icon-confused2:before{content:"\e9f6"}.ip-geo-block-icon-crying:before{content:"\ea01"}#toplevel_page_ip-geo-block .dashicons-admin-generic:before{font-family:icomoon;content:"\e62f";font-size:18px;margin-left:2px}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/admin.css b/wp/wp-content/plugins/ip-geo-block/admin/css/admin.css
deleted file mode 100644
index cf7a61d7..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/css/admin.css
+++ /dev/null
@@ -1,1015 +0,0 @@
-/*!
- * Project: WordPress IP Geo Block
- * Copyright (c) 2013-2019 tokkonopapa (tokkonopapa@yahoo.com)
- * This software is released under the MIT License.
- */
-dfn {
- cursor: help;
- border-bottom: 1px dotted #888;
-}
-
-/* style legend and fieldset as panel */
-fieldset, legend {
- padding: 0;
- margin: 0;
- border: 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-fieldset {
- min-width: 0;
-}
-legend {
- display: block;
- line-height: inherit;
- width: 100%;
-}
-label {
- display: inline-block;
- max-width: 100%;
-}
-.panel {
- border-color: #888;
- border: 1px solid #e5e5e5;
- -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.04);
- -moz-box-shadow: 0 1px 1px rgba(0,0,0,.04);
- box-shadow: 0 1px 1px rgba(0,0,0,.04);
- background: #f5f5f5;
-}
-.panel-heading {
- float: left !important;
- background: #fff;
-}
-.panel-default > .panel-heading {
- border-color: inherit;
-}
-.panel-body {
- width: 100%;
- padding: 0 1em;
- display: inline-block;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.panel-body:before,
-.panel-body:after {
- content: " ";
- display: table;
-}
-.panel-body:after {
- clear: both;
-}
-.ip-geo-block-navi-link {
- text-align: left;
-}
-.ip-geo-block-help-link {
- float: right;
- font-size: 90%;
- font-weight: normal;
-}
-.ip-geo-block-help-link a {
- box-shadow: none;
-}
-
-/* style legend and fieldset */
-fieldset label {
- vertical-align: text-middle;
-}
-fieldset input[type="checkbox"] {
- margin: 1px 2px 0;
-}
-fieldset.ip-geo-block-field {
-/* padding: 0 10px;*/
- margin: 1em 0;
-}
-fieldset.ip-geo-block-field h2,
-fieldset.ip-geo-block-field h3 {
- padding: 0;
- margin: 0;
- font-size: 14px !important;
-}
-fieldset.ip-geo-block-field h4 {
- margin: 0.75em 0 0.5em 0;
-}
-fieldset.ip-geo-block-field legend.panel-heading {
- padding: 10px;
-}
-
-fieldset.ip-geo-block-field .ip-geo-block-dropup,
-fieldset.ip-geo-block-field .ip-geo-block-dropdown {
- cursor: pointer;
- position: relative;
- padding-left: 1em;
-}
-fieldset.ip-geo-block-field .ip-geo-block-dropup:before,
-fieldset.ip-geo-block-field .ip-geo-block-dropdown:before {
- content: '';
- height: 0;
- width: 0;
- border: 0.4em solid transparent;
- position: absolute;
-}
-fieldset.ip-geo-block-field .ip-geo-block-dropup:before {
- border-left: 0.4em solid #555;
- left: 2px;
- top: 18%;
-}
-fieldset.ip-geo-block-field .ip-geo-block-dropdown:before {
- border-top: 0.4em solid #555;
- left: -2px;
- top: 38%;
-}
-fieldset.ip-geo-block-field .form-table .ip-geo-block-dropup,
-fieldset.ip-geo-block-field .form-table .ip-geo-block-dropdown {
- margin-top: 0.75em;
-}
-fieldset.ip-geo-block-field ul.ip-geo-block-dropup:before {
- top: 0.25em;
-}
-fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before {
- top: 0.5em;
-}
-fieldset.ip-geo-block-field table.form-table {
- margin: 0 0 0.5em;
- width: 100%;
-}
-
-/* Text */
-textarea.regular-text {
- width: 25em;
-}
-fieldset.ip-geo-block-field input.regular-text,
-fieldset.ip-geo-block-field textarea.regular-text {
- font-size: 95%;
-}
-
-/* Checkbox / Radio */
-p.ip-geo-block-navi-link input[type="checkbox"],
-fieldset.ip-geo-block-field input[type="checkbox"],
-fieldset.ip-geo-block-field input[type="radio"] {
- margin-right: 0.4em;
-}
-
-/* Plugins/Themes area, Geolocation API settings */
-input[id*="ip_geo_block_settings_rewrite_"] + label {
- margin-left: 0.25em;
-}
-input[id*="ip_geo_block_settings_providers"] + label {
- min-width: 7em;
-}
-
-/* Folding */
-.ip-geo-block-settings-folding {
- margin: 0.5em 0;
-}
-.ip-geo-block-settings-folding ul {
- margin-bottom: 0;
-}
-.ip-geo-block-settings-folding li {
- margin: 0.5em 0;
-}
-.folding-disable {
- pointer-events: none;
- opacity: 0.5;
-}
-.folding-inactive {
- opacity: 0.5;
- font-style:oblique !important;
-}
-
-/* Etc */
-.ip-geo-block-float li {
- display: inline-block;
- width: 18em;
- margin-top: 0;
-}
-.ip-geo-block-checked {
- list-style-type: disc;
-}
-.ip-geo-block-ip-addr {
- display: inline-block;
- padding-top: 5px;
-}
-.ip-geo-block-hide {
- display: none;
-}
-.ip-geo-block-sup {
- margin-left: 0.2em;
- display: inline-block;
-}
-.ip-geo-block-note {
- margin-top: 1em;
- list-style: disc inside;
-}
-.ip-geo-block-note li {
- text-indent: -1em;
- padding-left: 1em;
-}
-.ip-geo-block-border {
- border-top: inherit;
-}
-.ip-geo-block-notice {
- color: #dd3d36;
-}
-.ip-geo-block-title {
- width: 100px;
- display: inline-block;
-}
-.ip-geo-block-result {
- color: #2786C2;
- display: inline-block;
-}
-.ip-geo-block-primary {
- color: #fff !important;;
- background: #00838f !important;
- border-color: #00707a !important;
- text-shadow: none; /* for WordPress 3.7.21 */
-}
-.ip-geo-block-primary:hover {
- background-color: #00919e !important;
- border-color: #00525a !important;
-}
-ul#ip-geo-block-logs-preset {
- margin: 0.25em 0;
- max-width: 600px;
-}
-ul#ip-geo-block-logs-preset li {
- float: left;
- line-height: 1.5em;
- margin-right: 1em;
- min-width: 160px;
-}
-
-/* Loading image */
-.ip-geo-block-loading,
-#ip-geo-block-live-loading {
- height: 16px;
- width: 16px;
- background-size: 16px 16px;
- background-position: center center;
- background-repeat: no-repeat;
- margin-left: 1em;
- margin-top: 0.2em;
- display: inline-block;
- vertical-align: top;
-}
-.ip-geo-block-loading {
- background-image: url(data:image/gif;base64,R0lGODlhEAAQAPYCAKqqqsbGxlZWVsrKyvr6+ubm5tDQ0K6urmZmZmJiYuzs7IaGhvT09JycnLq6us7Ozurq6o6OjtbW1tra2vDw8CgoKCYmJvz8/NLS0kJCQlJSUqysrPLy8vb29pqamra2tm5ubujo6Kampvj4+IiIiMjIyEhISNzc3OLi4rKysj4+PlBQULi4uJKSkmRkZODg4KKiou7u7iQkJB4eHlpaWhISErCwsHh4eMDAwDIyMi4uLqSkpIKCgr6+vt7e3n5+fggICJCQkAwMDEpKSmBgYHZ2dhgYGBYWFnx8fF5eXk5OTiIiIjAwMIyMjISEhDQ0NJaWltTU1AQEBBwcHGpqaoqKiuTk5CoqKlhYWAoKCtjY2Hp6ehAQEJ6ensLCwkxMTJSUlCwsLAYGBnR0dDg4OFxcXLy8vKCgoA4ODsTExMzMzDw8PERERDY2NqioqHJycrS0tGhoaBQUFEZGRjo6OkBAQICAgHBwcFRUVCAgIGxsbP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgACACwAAAAAEAAQAEAHjIACgoOEhYJsbTGGghcPGIJRbFNNhgQKCheDDkllDQYMHSc4MAcvhTB0aFliggQjmYNEFQ6LAh0+VoIwbFW1GGamhCgfUE5NbgMKtQYLc0a1gjsyR3E2IYwMFASDYDJvtRRWFIJ1TMq1ElqCICpetQoBEoInVCsAhhI2XhyEPUgIIG7waALlwAloCAMBACH5BAkKAAIALAEAAQAOAA4AAAeDgAKCEmBYYRVKJAaCjAcrVzIzRjVoTw2MKRk5Ww4KECkuWTWCE0Rrl4yCTow7bAupsBcCW19psKkjBEQaFLeMHBwINBy+ggoxVQkPxSMFMXBUMMUQPhRWVUU9tyFRLwQCA048cCcjIyFaJQYxjA8NEVBnAClmahCwEANwbjYBJwyMAgEAIfkECQoABQAsAQABAA4ADgAAB4OABYInO29DbC5QUYKMZiBfbCptTBUmIow4LgJBaTExZkVLFTAFKD8JB4yMQUZrBixUXaqqVFwkUG8Ys4wpQiZOWwy7ghBiRk08HcOqblUTy4wlLWbLBCMFCgBdurMjFMoFE24ADxAXFwwKITEEjD5mH2YBDxI+IdeqHCcGAxgv7IwCAQAh+QQJCgAAACwBAAEADgAOAAAHhYAAglYfTVQJSCITgowDVSAISQJKJgkpjA8LWyIGHBQBJCoZBwAQDU44jIxdTxoSAxEfqqpbFWApUCezjA5LWCJdI7uCClNXGyLCwxBHFl4HBcMAKVxfEx8Y0glZCxwlOCjDUkwPACElAygMghftAB6MClpRJygQFB0EuyMKBQUKDPQxCgQAIfkECQoAAAAsAQABAA4ADgAAB4SAAIIKahstTQ0OVoKMJzYeLVU8W29OXowvBztePh0dUTtxVD0AHDgHEoyMKWVvPj4sBqqqLUoiGDgQs4wBJmNqARe7gjEqXxgPwsMxbWw+UQzDAGY6LjEnusNjFmAEBVbRs00zc1EAHRAKHYw2CHIyO4wEHAwjgmJCZDC7F8psC7IEBQIAIfkECQoARwAsAQABAA4ADgAAB4OAR4IMPgMfNg4PCoKMEA84LCkAMB47GIwxBiUTEAQjKD0REQ9HBD4YIYyMATwtBRQnqaqMG0UOEC8ds4wYIEEQBbuMHC4gMYvCRxw0CAwcF8kBGj8EHdDCJCYiRxfXsw0qCROqRDYQECw3ORkpqjpAQjVGMxYrB7MPC0MyFQItEowCAQAh+QQJCgACACwBAAEADgAOAAAHgIACghcUVhIYEigMgowjEC8nUQ8BOGkojAQxITEdAhcxEh9wPoIMFCOMjBMAKTEXHaipjGldDxcEsqkvUAe5sh1NLb6pHTxNbGK9vlE3DU5ZLsNnIA4GbTVVuQcJdpdnS0Z3LAoxXhF4LjiMMBl5FjptKiZ6ZrJRLUkqbCAwJ4yBACH5BAUKAAEALAEAAQAOAA4AAAd/gAGCARcjHDExHASDjAQdHAoFLy8Ugw2MgiMKWhIKAQ9MYpiCEA8YHQtZCaOCJ14vX2g2rAEKZgMyNRC0BCksFUa7rCMANgIzH7QvZw4tMmO0DlAPUV9hHqNeVTC7G2tkTmkUHA8iSFUGgzZlGSYaNC4gTWqYEzA3SQhVH1aDgQA7);
-}
-
-/* Google Map infomation window */
-#ip-geo-block-map {
- height: 400px;
- margin: 1em auto;
-}
-#ip-geo-block-apis div.nav-tab-wrapper {
- padding-top: 0;
- margin-bottom: 1em;
-}
-#ip-geo-block-geoinfo {
- white-space: normal;
- word-wrap: break-word;
- word-break: break-all;
-}
-#ip-geo-block-geoinfo ul {
- margin-top: 0;
- margin-left: 1em;
-}
-.gm-style-iw {
- width: 18em;
- height: auto !important;
- height: 100%;
- min-height: 100%:
-}
-.gm-style-iw ul {
- margin: 0.1em;
-}
-.gm-style-iw li {
- margin: 0.2em;
-}
-
-/* SVG in google chart */
-svg a {
- cursor: pointer;
-}
-svg a:hover > text {
- fill: #0096dd;
-}
-svg a > text {
- fill: #0073aa;
- text-decoration: underline;
-}
-
-/* table */
-table.ip-geo-block-statistics-table {
- float: right;
-}
-table.ip-geo-block-statistics-table th,
-table.ip-geo-block-statistics-table td {
- width: 12em;
- margin: 0;
- padding: 0.2em;
- text-align: right;
- line-height: 1.5em;
- word-wrap: break-word;
-}
-table.ip-geo-block-statistics-table tr:nth-child(even) {
- background-color: #eee;
-}
-table.ip-geo-block-statistics-table tr:nth-child(odd) {
-}
-table.ip-geo-block-table {
- margin: 1em 0;
- width: 100%;
- white-space: normal;
- word-wrap: break-word;
- word-break: break-all;
-}
-table.ip-geo-block-table td:first-child {
- min-width: 4.3em;
- max-width: 5.0em;
-}
-
-/* Whois */
-@media screen and (max-width:782px) {
- #ip-geo-block-whois .panel-body {
- padding: 0 0.5em;
- }
-}
-
-/* Scan the country code */
-#ip-geo-block-scan-code {
- vertical-align: middle;
-}
-#ip-geo-block-code-list {
- display: none;
- margin-bottom: 0;
-}
-
-/* Google Chart */
-#ip-geo-block-chart-countries {
- height: 200px;
-}
-#ip-geo-block-chart-daily {
- height: 240px;
-}
-#ip_geo_block_settings_validation_mimetype + label {
- padding-top: 0.25em;
-}
-#ip_geo_block_settings_validation_mimetype + label + ul {
- margin-top: 0.7em;
-}
-#ip_geo_block_settings_create_user {
- margin-bottom: 0.5em;
-}
-#ip-geo-block-toggle-sections,
-#ip-geo-block-back-to-top a {
- box-shadow: none;
-}
-#ip-geo-block-wp-info textarea {
- margin-top: 0.5em;
- overflow: auto;
- width: 100%;
- word-wrap: normal;
- word-break: normal;
- white-space: pre;
-}
-#ip-geo-block-back-to-top {
- margin:0;
- text-align:right;
-}
-#ip-geo-block-open-new,
-#ip-geo-block-live-update {
- margin-left: 1em;
-}
-
-/* Top menu link */
-.ip-geo-block-menu-link {
- font-size: 13px !important;
-}
-
-/* Icons */
-dfn ~ .ip-geo-block-icon {
- margin-left: 0.4em;
-}
-.ip-geo-block-icon {
- position: relative;
- cursor: pointer;
- outline: none;
- box-shadow: none;
- text-decoration: none;
- background-color: transparent;
-}
-.ip-geo-block-icon:active {
- top: 1px;
-}
-.ip-geo-block-icon span {
- height: 16px;
- width: 16px;
- margin: 0;
- border: none;
- display: inline-block;
- vertical-align: middle;
- background-size: 16px 16px;
- background-position: center center;
- background-repeat: no-repeat;
-}
-.ip-geo-block-icon-cycle span {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAh1BMVEUAda2otLp+rsSHprWHr8IBd7EpfKRGhaNajqeUqrRymKuKoq5yo7prlKgAcqoVe6w8gqQmgq5Tj6wIdqsVdKIshrEMea1Uhp+Anqw0hawDdq4gfKhljqE7hqoLdKYbgbM4jLQygKUGeK8CdawQd6gVeKcad6NKkrSerrZAj7UAc6sAc6rc3NySrVGQAAAALXRSTlP//////////////////////////////////////////////////////////wCl7wv9AAACOklEQVR4Ae2W15rzKgxF9xTZzhTX9B7S/gN6/9ebYqzzGZsw/S7LV3FZgCSIwD/kQ8FVcBU8xatZUczy8luC/ABNOn0DSHEsvyZ4PgLatNCYR3efFxyhTQ8g+qQgJxgv2JefERzJXATRh4LHOUwAHD4S7OGEztRJaN86hAUxtaNWDUf/bRdDBbQMWVDAO8jn89WUhag1MeyCAh6hHofyrliLgZKggDMYgzF3eVAwFq0uCZq5KY0TezjIHDDzC0qqmkwe2ctGDOQVLMkgu+F3/rGXwb4xIPcJ6P3JgkM8wFjmfcFAWfeKQywaAz33BJVuHsUcAt09gVbuLDThAJkdR687ggLmf4gDJLIGV7BydtB8yn3u+fbtuj/LS7G9wZAd1AKK+yxJ1x+aBmibTtgCcEHGHsh0wdbOgNLek4L7lI5BigY8nWuZUQ3qGEXes9JzOKGJztPaGtLslu3lIXJirdxCWkASHGDTMqg7V1DKPplygDG61YJukLHjEErGSXqCSos6xNSOgzP3BDmsQBcchNwkoV8oiNnPA78zIefUgCdJeGIfE7LmFWXsFTCFdzTJ/RlfEMRiSGnFXXbkC7AIeqcKDu4ynseozeouKJiSEYBDwkJyIC1nRUjgblkNWp/e/1vXc2gjoAoLksYgjrrFMi0oDgjEEIDij1scBXMJSH6DAj6RNl7o8MkuLak8Co15/Pk+MRmT0xilQJV/sdWNKg2kTaeroudvNNsDjmejYjSL+e6v2/2r4Cp4BXNajr0H7hRfAAAAAElFTkSuQmCC);
-}
-.ip-geo-block-icon-lock span {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==);
-}
-.ip-geo-block-icon-unlock span {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC);
-}
-.ip-geo-block-icon-find span {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NzS19rD0NWHtMpGk7kYfbAGda0Req+WtcTT1temwM4AcasAcqwAc6wAcKydvMt1pr8Ab6pqpcLX2doggrKoxdNYm7yzw8u/y9HO1tkKdq4th7Td3t6DrcLL0taxyNPGe/YhAAAAAXRSTlMAQObYZgAAARVJREFUeAGtkkeiwyAMRP2xDfxoRjElvd3/lOkNUlZ5u0GPruan/Bnz96Xadr21rvP/7+ujXsAjom78rj4ApCoERIipqfGB1H7wPmYhw1DXjZI6nOel1oJhVAmdUP0tTEDkVC4AYvqIbaDOCqFV6vwRF0tIeYoo6J/X7ICuPAJl9ZynwiIfB5DXxZlRChulbh8xZci0EHZK3TziJFDL504rEOZ+iR5cVj82DoS7XtSshLJpKqaB0Dg3ZjcsQWKaKiF1gVQlITwh/bw2pgKeEeURhE29yKSzUFF03p1V7Wqj2Y7GfrY9X/NirJsPxKsxfBLSSs5GmH8yjAWPSNd8Yoez4f4/G1nIsksqFtGK1i9e39o0P+EAqaoRLlQ+r94AAAAASUVORK5CYII=);
-}
-span.ip-geo-block-icon-alert,
-.ip-geo-block-icon-alert span {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEXc3Nzc2trWl5DHRDTFOyvOgXfc1tXCLBrEMiHEMyLNcmfaxMLDMSDDLx7bu7jRiYHDLhzDMB/LX1PaxsTDLh3YtrHMY1bWmpPJVknSjYXUkYnZuLTMZVnENCPWlI3QhXzENiXXrqrDLRzXsa3Oal7Pe3Hc2NjVn5nNbmPayMbbwb7ay8rUj4fc09Lbw8Db0dDBbRUDAAAAAXRSTlMAQObYZgAAAPVJREFUeAG9ktXWwyAQBonC12brFvff5f2frr4nBredK2DnTFS8Gst2XM8XZmypIGeWcT4PFABaGIXlClfWG1NiC4Ubu705oKRcY32wTAHl2MdTYEqEK8hIiHgHSnSJeaogMyEWO4BijZCvwII2MS9UJ2BXTh+hQidoEttboBOwq3WBnkCNpQlA2iyAhol2hRu71n97p4fw0Z9/ugoPHCfFA+o/iLfCkyBglRJdICBas7uuey+R56fF14wNanj+/QjwY3aX23cBFn6EiHmHNT/ICYxystv/wJy4UHWGlN2cuPB72tFqAq3dP/Hk3zs0E5LZVryGC/hqGNnUa0SVAAAAAElFTkSuQmCC);
- vertical-align: bottom;
-}
-
-table.form-table th .ip-geo-block-cycle span {
- vertical-align: text-bottom;
-}
-
-/* Option list */
-.ip-geo-block-list {
- margin-top: 0;
- margin-bottom: 0.7em;
-}
-@media screen and (min-width:782px) {
- ul.ip-geo-block-list .code {
- width: 15em;
- }
-}
-
-/* Exceptions */
-.ip-geo-block-list-exceptions label {
- display: inline-block;
-}
-.ip-geo-block-list-exceptions dfn {
- border: none;
-}
-.ip-geo-block-list-exceptions span.dashicons {
- font-size: 14px;
-}
-.ip-geo-block-list-exceptions a.ip-geo-block-icon {
- margin-left: 0.3em;
- outline: none;
- box-shadow: none;
- text-decoration: none;
- background-color: transparent;
-}
-
-/* Description */
-.form-table td p.ip-geo-block-desc,
-.form-table td p.ip-geo-block-find-desc {
- color: #666;
- font-size: 13px !important;
- margin: 4px 0 0.5em 0.5em;
-}
-.ip-geo-block-find-desc {
- display: none;
-}
-
-/* Action for admin post */
-.ip-geo-block-admin-post {
- color: #c43322;
- margin-left: 0.25em;
-}
-.ip-geo-block-warn {
- color: #c43322;
- font-weight: bold;
-}
-
-/* Badly-behaved bots and crawlers */
-input#ip_geo_block_settings_behavior_view,
-input#ip_geo_block_settings_behavior_time {
- width: 3.5em;
-}
-
-/* Statistics */
-.ip-geo-block-top-list {
- display: inline-table;
- list-style-position: outside;
- margin: 0 2em 0.5em 1.75em;
-}
-.ip-geo-block-top-list h4 {
- margin: 1em 0;
-}
-.ip-geo-block-top-list li code {
- background: none;
-}
-
-/* Embeded data for network site list */
-.ip-geo-block-network {
- margin-bottom: 1em;
-}
-
-/*------------------------------------------------------------
- * multi column for Site List
- * https://caniuse.com/#search=flexbox
- *------------------------------------------------------------*/
-.ip-geo-block-container {
- margin: 0 auto;
- padding: 0 1em;
- position: relative;
- width: 100%;
-}
-.ip-geo-block-row {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- align-items: stretch; /* baseline */
- padding: 0;
- width: 100%;
-}
-.ip-geo-block-row .ip-geo-block-column {
- display: block;
- flex: 1 1 auto;
- align-self: flex-start;
- margin-left: 0;
- max-width: 100%;
- width: 100%;
-}
-.ip-geo-block-row .ip-geo-block-column.column-20 {
- flex: 0 0 20%;
- max-width: 20%;
-}
-.ip-geo-block-row .ip-geo-block-column.column-25 {
- flex: 0 0 25%;
- max-width: 25%;
-}
-.ip-geo-block-row .ip-geo-block-column.column-33 {
- flex: 0 0 33.3333%;
- max-width: 33.3333%;
-}
-.ip-geo-block-row .ip-geo-block-column.column-50 {
- flex: 0 0 50%;
- max-width: 50%;
-}
-@media (min-width: 40rem) {
- .ip-geo-block-row {
- flex-direction: row;
- margin-left: -2em;
- width: calc(100% + 2em);
- }
- .ip-geo-block-row .ip-geo-block-column {
- margin-bottom: inherit;
- padding: 0 1em;
- }
-}
-
-/*------------------------------------------------------------
- * Customizing based on jquery.dataTables.css
- *------------------------------------------------------------*/
-table.ip-geo-block-dataTable {
- clear: none !important;
-}
-table.ip-geo-block-dataTable th,
-table.ip-geo-block-dataTable td {
- text-align: right;
-}
-table.ip-geo-block-dataTable th:nth-child(n+2),
-table.ip-geo-block-dataTable td:nth-child(n+2) {
- padding-left: 0 !important;
-}
-table.ip-geo-block-dataTable th {
- white-space: nowrap;
-}
-table.ip-geo-block-dataTable > thead > tr {
- line-height: 1.8em;
-}
-table.ip-geo-block-dataTable > tbody > tr {
- cursor: pointer;
-}
-table.ip-geo-block-dataTable > thead > tr > th,
-table.ip-geo-block-dataTable > thead > tr > td,
-table.ip-geo-block-dataTable.no-footer {
- border-bottom: 1px solid #ddd;
-}
-table.ip-geo-block-dataTable thead th,
-table.ip-geo-block-dataTable thead td {
- padding: 10px 16px;
-}
-/* country code */
-#ip-geo-block-statistics-cache td:nth-child(3),
-#ip-geo-block-validation-logs td:nth-child(4) {
- min-width: 1.6em;
-}
-
-/* Scroll bar */
-div[class*="ip-geo-block"] .dataTables_wrapper.no-footer .dataTables_scrollBody {
- border-bottom: 1px solid #ddd;
-}
-
-/* Size of column */
-table.ip-geo-block-dataTable.nowrap td,
-table.ip-geo-block-dataTable > tbody > tr > td span {
- white-space: normal !important;
- word-wrap: break-word !important;
- word-break: break-all !important;
-}
-table.ip-geo-block-dataTable > tbody > tr > td span {
- display: inline-block;
-}
-
-/* Checkbox */
-.ip-geo-block-settings-folding input[type="checkbox"] {
- margin-right: 0.5em;
-}
-table.ip-geo-block-dataTable input[type="checkbox"] {
- margin: 0;
- max-height: 16px;
- max-width: 16px;
- vertical-align: middle;
-}
-table.ip-geo-block-dataTable > thead > tr > th:first-child,
-table.ip-geo-block-dataTable > tbody > tr > td:first-child {
- padding: 8px 4px 8px 1.4em;
- text-align: left;
-}
-
-/* No data available in table */
-table.ip-geo-block-dataTable > tbody > tr > td.dataTables_empty,
-table.collapsed > tbody > tr > td.dataTables_empty:first-child::before {
- border: none;
- text-align: center;
-}
-
-/* Checkbox column */
-table.ip-geo-block-dataTable thead > tr > th:first-child.sorting_asc {
- background-image: none !important;
-}
-table.ip-geo-block-dataTable.display tbody tr.even > .sorting_1,
-table.ip-geo-block-dataTable.display tbody tr.odd > .sorting_1,
-table.ip-geo-block-dataTable.display tbody tr:hover > .sorting_1 {
- background-color: inherit !important;
-}
-
-/* Collapsed */
-table.ip-geo-block-dataTable.collapsed > tbody > tr > td:first-child {
- padding: 8px 4px 8px 8px !important;
-}
-table.collapsed > tbody > tr > td:first-child::before,
-table.collapsed > tbody > tr.parent > td:first-child::before {
- content: '';
- height: 0;
- width: 0;
- display: inline-block;
- border-radius: 0;
- border: 5px solid transparent;
- box-shadow: none;
- position: relative;
- background-color: transparent;
-}
-table.collapsed > tbody > tr > td:first-child::before {
- border-left: 5px solid #555;
- top: 1px;
- left: -2px;
-}
-table.collapsed > tbody > tr.parent > td:first-child::before {
- border-top: 5px solid #555;
- top: 4px;
- left: -4px;
-}
-table.collapsed > tbody > tr.child > td:first-child::before {
- border: none;
-}
-table.collapsed > tbody > tr.child > td.child > ul li {
- border: none;
- padding: 0;
- margin: 0;
- line-height: 1.8em;
-}
-table.collapsed > tbody > tr.child > td.child > ul li span.dtr-title,
-table.collapsed > tbody > tr.child > td.child > ul li span.dtr-data {
- font-size: 13px !important;
- display: block;
- white-space: normal;
- word-wrap: break-word;
- word-break: break-all;
-}
-table.collapsed > tbody > tr.child > td.child > ul li span.dtr-data {
- margin-left: 1.25em;
- margin-right: 0.3em;
-}
-
-/* Length menu */
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length {
- padding-top: 0.15em;
- margin: 0.5em 0 0 0.3em;
- position: relative;
- display: inline-block;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length:after {
- content: '';
- width: 6px;
- height: 6px;
- border: 0px;
- border-bottom: solid 2px #999;
- border-right: solid 2px #999;
- -ms-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
- transform: rotate(45deg);
- position: absolute;
- top: 50%;
- right: 10px;
- margin-top: -4px;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length select {
- padding-top: 0;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- font-size: 13px !important;
- line-height: 1.4em;
- width: 100%;
- height: 2.05em !important;
- background: transparent;
- position: relative;
- z-index: 1;
- padding: 0.125em 1.5em 0.125em 0.25em;
- border: 1px solid #ddd;
- border-radius: 4px;
- box-shadow: none;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length select::-ms-expand {
- display: none;
-}
-
-/* Pagenation */
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate {
- float: none;
- text-align: center;
- margin-bottom: 1em;
- margin-top: 0 !important;
-}
-@media screen and (min-width:640px) {
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length {
- margin: 0.5em 0 0 0.6em;
- }
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate {
- position: relative;
- left: -2.25em;
- }
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate span.ellipsis,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button:active,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active {
- min-width: 2em;
- background: inherit;
- border-color: #ddd;
- border-radius: 0;
- border-image: none;
- border-style: solid;
- border-width: 1px 1px 1px 0;
- box-shadow: none;
- margin: 0.5em 0 0 0;
- padding: 0.25em 0;
- display: inline-block;
- text-decoration: none;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate > a.paginate_button:first-child,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate:hover > a.paginate_button:first-child,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate:active > a.paginate_button:first-child {
- border-left-width: 1px;
- border-bottom-left-radius: 4px;
- border-top-left-radius: 4px;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate > a.paginate_button:last-child,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate:hover > a.paginate_button:last-child,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate:active > a.paginate_button:last-child {
- border-bottom-right-radius: 4px;
- border-top-right-radius: 4px;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button {
- color: #0073aa !important;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover {
- color: #0096dd !important;
- background-color: #fff;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate span.ellipsis,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active {
- cursor: default;
- color: #999 !important;
- background-color: transparent;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active {
- cursor: default;
- color: #444 !important;
- background-color: #fff !important;
-}
-
-/* Alignment of table */
-#ip-geo-block-1 #ip-geo-block-section-2 .panel-body,
-#ip-geo-block-4 #ip-geo-block-section-0 .panel-body {
- padding: 0;
-}
-#ip-geo-block-1 #ip-geo-block-section-2 table.form-table,
-#ip-geo-block-4 #ip-geo-block-section-0 table.form-table {
- margin-left: 1em;
- max-width: 95%;
-}
-
-/* Select target / Period to extract */
-#ip-geo-block-select-target,
-#ip-geo-block-select-layout,
-#ip-geo-block-select-duration {
- margin: 0;
-}
-#ip-geo-block-select-target li,
-#ip-geo-block-select-layout li,
-#ip-geo-block-select-duration li {
- float: left;
- margin-right: 1.5em;
-}
-#ip-geo-block-select-target li label,
-#ip-geo-block-select-duration li label {
- cursor: pointer;
-}
-
-/* Filter */
-#ip_geo_block_settings_search_filter {
- width: 16em;
- padding-top: 3px;
-}
-
-/* Transition for new row */
-table.ip-geo-block-dataTable.display tbody tr.ip-geo-block-passed {
- background-color: #edf6ff !important;
-}
-table.ip-geo-block-dataTable.display tbody tr.ip-geo-block-blocked {
- background-color: #ffefef !important;
-}
-.ip-geo-block-new-passed {
- animation: ip-geo-block-flash-passed 1s ease-out 0s 1 normal both running;
-}
-.ip-geo-block-new-blocked {
- animation: ip-geo-block-flash-blocked 1s ease-out 0s 1 normal both running;
-}
-@keyframes ip-geo-block-flash-passed {
- 0% { background-color: #ffd700; }
- 100% { background-color: #edf6ff; }
-}
-@keyframes ip-geo-block-flash-blocked {
- 0% { background-color: #ffd700; }
- 100% { background-color: #ffefef; }
-}
-
-/* Mark.js */
-mark {
- padding: 0;
- background: #ffd700; // Gold
-}
-
-/* Live update log */
-#ip-geo-block-live-log {
- margin: 0;
-}
-#ip-geo-block-live-log li {
- float: left;
- margin-right: 3em;
-}
-#ip-geo-block-live-log li:last-child {
- margin-right: 0;
-}
-#ip-geo-block-live-log li input[type=radio] {
- visibility: hidden;
- position: absolute;
-}
-#ip-geo-block-live-log li input[type=radio] + label {
- display:inline-block;
- margin:-2px;
- padding: 4px 12px;
- margin-bottom: 0;
- font-size: 14px;
- line-height: 20px;
- color: #333;
- text-align: center;
- text-shadow: 0 1px 1px rgba(255,255,255,0.75);
- vertical-align: middle;
- cursor: pointer;
- background-color: #f5f5f5;
- background-image: -moz-linear-gradient(top,#fff,#e6e6e6);
- background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));
- background-image: -webkit-linear-gradient(top,#fff,#e6e6e6);
- background-image: -o-linear-gradient(top,#fff,#e6e6e6);
- background-image: linear-gradient(to bottom,#fff,#e6e6e6);
- background-repeat: repeat-x;
- border: 1px solid #ccc;
- border-color: #e6e6e6 #e6e6e6 #bfbfbf;
- border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
- border-bottom-color: #b3b3b3;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
- -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
- -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
-}
-#ip-geo-block-live-log li input[type=radio]:checked + label {
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
- -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
- box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
- background-color: #e0e0e0;
-}
-
-/*----------------------------------------------------------------------
- * Timer animation based on https://codepen.io/paulobrien/pen/joptI
- *----------------------------------------------------------------------*/
-.ip-geo-block-live-timer {
- height: 1em;
- width: 1em;
- margin: 0;
- position: relative;
- top: 0;
- left: 0;
-}
-.ip-geo-block-live-timer:before {
- content: "";
- display: block;
- height: 1em;
- width: 1em;
- background: #0073aa;
- border-radius: 50%;
- position: absolute;
- top: 0;
- left: 0;
-}
-.ip-geo-block-live-timer:after {
- display: none
-}
-.ip-geo-block-live-timer > div {
- position: absolute;
- width: 1em;
- height: 1em;
- clip: rect(0, 1em, 1em, .5em);
-}
-.ip-geo-block-live-timer > div:before {
- content: " ";
- position: absolute;
- width: 1em;
- height: 1em;
- border-radius: .5em;
- clip: rect(0, .5em, 1em, 0);
- background-color: #f1f1f1;
- transform: rotate(0deg);
-}
-.ip-geo-block-live-timer > div:first-child:before {
- animation: 30s spin-timer linear forwards;
-}
-.ip-geo-block-live-timer > div:last-child {
- transform: rotate(180deg);
-}
-.ip-geo-block-live-timer > div:last-child:before {
- /* older webkit seems buggy with zero so use 0.00001 if you notice something strange */
- transform: rotate(0deg);
- animation: 30s spin-timer linear 30s forwards;
-}
-@keyframes spin-timer {
- 0% {transform: rotate( 0deg);}
- 100% {transform: rotate(180deg);}
-}
-
-/* sub items in settings */
-.ip-geo-block-subitem {
- margin-left: 1.7em
-}
-.ip-geo-block-subitem:before {
- content: "\00bb"; /* » */
- position: absolute;
- left: 2em;
-}
-.ip-geo-block-subitem dfn {
- vertical-align: middle;
-}
-.ip-geo-block-subitem-parent th,
-.ip-geo-block-subitem-parent td {
- padding-top: 0;
-}
-
-/* placeholder */
-:placeholder-shown { color: #888; }
-::-webkit-input-placeholder { color: #888; } /* Google Chrome, Safari, Opera 15+, Android, iOS */
-:-moz-placeholder { color: #888; opacity: 1; } /* Firefox 18- */
-::-moz-placeholder { color: #888; opacity: 1; } /* Firefox 19+ */
-:-ms-input-placeholder { color: #888; } /* IE 10+ */
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/admin.min.css b/wp/wp-content/plugins/ip-geo-block/admin/css/admin.min.css
deleted file mode 100644
index 50795951..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/css/admin.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Project: WordPress IP Geo Block
- * Copyright (c) 2013-2019 tokkonopapa (tokkonopapa@yahoo.com)
- * This software is released under the MIT License.
- */
-dfn{cursor:help;border-bottom:1px dotted #888}fieldset,legend{padding:0;margin:0;border:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}fieldset{min-width:0}legend{display:block;line-height:inherit;width:100%}label{display:inline-block;max-width:100%}.panel{border-color:#888;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);-moz-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#f5f5f5}.panel-heading{float:left!important;background:#fff}.panel-default>.panel-heading{border-color:inherit}.panel-body{width:100%;padding:0 1em;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-body:after{clear:both}.ip-geo-block-navi-link{text-align:left}.ip-geo-block-help-link{float:right;font-size:90%;font-weight:400}.ip-geo-block-help-link a{box-shadow:none}fieldset label{vertical-align:text-middle}fieldset input[type=checkbox]{margin:1px 2px 0}fieldset.ip-geo-block-field{margin:1em 0}fieldset.ip-geo-block-field h2,fieldset.ip-geo-block-field h3{padding:0;margin:0;font-size:14px!important}fieldset.ip-geo-block-field h4{margin:.75em 0 .5em 0}fieldset.ip-geo-block-field legend.panel-heading{padding:10px}fieldset.ip-geo-block-field .ip-geo-block-dropdown,fieldset.ip-geo-block-field .ip-geo-block-dropup{cursor:pointer;position:relative;padding-left:1em}fieldset.ip-geo-block-field .ip-geo-block-dropdown:before,fieldset.ip-geo-block-field .ip-geo-block-dropup:before{content:'';height:0;width:0;border:.4em solid transparent;position:absolute}fieldset.ip-geo-block-field .ip-geo-block-dropup:before{border-left:.4em solid #555;left:2px;top:18%}fieldset.ip-geo-block-field .ip-geo-block-dropdown:before{border-top:.4em solid #555;left:-2px;top:38%}fieldset.ip-geo-block-field .form-table .ip-geo-block-dropdown,fieldset.ip-geo-block-field .form-table .ip-geo-block-dropup{margin-top:.75em}fieldset.ip-geo-block-field ul.ip-geo-block-dropup:before{top:.25em}fieldset.ip-geo-block-field ul.ip-geo-block-dropdown:before{top:.5em}fieldset.ip-geo-block-field table.form-table{margin:0 0 .5em;width:100%}textarea.regular-text{width:25em}fieldset.ip-geo-block-field input.regular-text,fieldset.ip-geo-block-field textarea.regular-text{font-size:95%}fieldset.ip-geo-block-field input[type=checkbox],fieldset.ip-geo-block-field input[type=radio],p.ip-geo-block-navi-link input[type=checkbox]{margin-right:.4em}input[id*=ip_geo_block_settings_rewrite_]+label{margin-left:.25em}input[id*=ip_geo_block_settings_providers]+label{min-width:7em}.ip-geo-block-settings-folding{margin:.5em 0}.ip-geo-block-settings-folding ul{margin-bottom:0}.ip-geo-block-settings-folding li{margin:.5em 0}.folding-disable{pointer-events:none;opacity:.5}.folding-inactive{opacity:.5;font-style:oblique!important}.ip-geo-block-float li{display:inline-block;width:18em;margin-top:0}.ip-geo-block-checked{list-style-type:disc}.ip-geo-block-ip-addr{display:inline-block;padding-top:5px}.ip-geo-block-hide{display:none}.ip-geo-block-sup{margin-left:.2em;display:inline-block}.ip-geo-block-note{margin-top:1em;list-style:disc inside}.ip-geo-block-note li{text-indent:-1em;padding-left:1em}.ip-geo-block-border{border-top:inherit}.ip-geo-block-notice{color:#dd3d36}.ip-geo-block-title{width:100px;display:inline-block}.ip-geo-block-result{color:#2786c2;display:inline-block}.ip-geo-block-primary{color:#fff!important;background:#00838f!important;border-color:#00707a!important;text-shadow:none}.ip-geo-block-primary:hover{background-color:#00919e!important;border-color:#00525a!important}ul#ip-geo-block-logs-preset{margin:.25em 0;max-width:600px}ul#ip-geo-block-logs-preset li{float:left;line-height:1.5em;margin-right:1em;min-width:160px}#ip-geo-block-live-loading,.ip-geo-block-loading{height:16px;width:16px;background-size:16px 16px;background-position:center center;background-repeat:no-repeat;margin-left:1em;margin-top:.2em;display:inline-block;vertical-align:top}.ip-geo-block-loading{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPYCAKqqqsbGxlZWVsrKyvr6+ubm5tDQ0K6urmZmZmJiYuzs7IaGhvT09JycnLq6us7Ozurq6o6OjtbW1tra2vDw8CgoKCYmJvz8/NLS0kJCQlJSUqysrPLy8vb29pqamra2tm5ubujo6Kampvj4+IiIiMjIyEhISNzc3OLi4rKysj4+PlBQULi4uJKSkmRkZODg4KKiou7u7iQkJB4eHlpaWhISErCwsHh4eMDAwDIyMi4uLqSkpIKCgr6+vt7e3n5+fggICJCQkAwMDEpKSmBgYHZ2dhgYGBYWFnx8fF5eXk5OTiIiIjAwMIyMjISEhDQ0NJaWltTU1AQEBBwcHGpqaoqKiuTk5CoqKlhYWAoKCtjY2Hp6ehAQEJ6ensLCwkxMTJSUlCwsLAYGBnR0dDg4OFxcXLy8vKCgoA4ODsTExMzMzDw8PERERDY2NqioqHJycrS0tGhoaBQUFEZGRjo6OkBAQICAgHBwcFRUVCAgIGxsbP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgACACwAAAAAEAAQAEAHjIACgoOEhYJsbTGGghcPGIJRbFNNhgQKCheDDkllDQYMHSc4MAcvhTB0aFliggQjmYNEFQ6LAh0+VoIwbFW1GGamhCgfUE5NbgMKtQYLc0a1gjsyR3E2IYwMFASDYDJvtRRWFIJ1TMq1ElqCICpetQoBEoInVCsAhhI2XhyEPUgIIG7waALlwAloCAMBACH5BAkKAAIALAEAAQAOAA4AAAeDgAKCEmBYYRVKJAaCjAcrVzIzRjVoTw2MKRk5Ww4KECkuWTWCE0Rrl4yCTow7bAupsBcCW19psKkjBEQaFLeMHBwINBy+ggoxVQkPxSMFMXBUMMUQPhRWVUU9tyFRLwQCA048cCcjIyFaJQYxjA8NEVBnAClmahCwEANwbjYBJwyMAgEAIfkECQoABQAsAQABAA4ADgAAB4OABYInO29DbC5QUYKMZiBfbCptTBUmIow4LgJBaTExZkVLFTAFKD8JB4yMQUZrBixUXaqqVFwkUG8Ys4wpQiZOWwy7ghBiRk08HcOqblUTy4wlLWbLBCMFCgBdurMjFMoFE24ADxAXFwwKITEEjD5mH2YBDxI+IdeqHCcGAxgv7IwCAQAh+QQJCgAAACwBAAEADgAOAAAHhYAAglYfTVQJSCITgowDVSAISQJKJgkpjA8LWyIGHBQBJCoZBwAQDU44jIxdTxoSAxEfqqpbFWApUCezjA5LWCJdI7uCClNXGyLCwxBHFl4HBcMAKVxfEx8Y0glZCxwlOCjDUkwPACElAygMghftAB6MClpRJygQFB0EuyMKBQUKDPQxCgQAIfkECQoAAAAsAQABAA4ADgAAB4SAAIIKahstTQ0OVoKMJzYeLVU8W29OXowvBztePh0dUTtxVD0AHDgHEoyMKWVvPj4sBqqqLUoiGDgQs4wBJmNqARe7gjEqXxgPwsMxbWw+UQzDAGY6LjEnusNjFmAEBVbRs00zc1EAHRAKHYw2CHIyO4wEHAwjgmJCZDC7F8psC7IEBQIAIfkECQoARwAsAQABAA4ADgAAB4OAR4IMPgMfNg4PCoKMEA84LCkAMB47GIwxBiUTEAQjKD0REQ9HBD4YIYyMATwtBRQnqaqMG0UOEC8ds4wYIEEQBbuMHC4gMYvCRxw0CAwcF8kBGj8EHdDCJCYiRxfXsw0qCROqRDYQECw3ORkpqjpAQjVGMxYrB7MPC0MyFQItEowCAQAh+QQJCgACACwBAAEADgAOAAAHgIACghcUVhIYEigMgowjEC8nUQ8BOGkojAQxITEdAhcxEh9wPoIMFCOMjBMAKTEXHaipjGldDxcEsqkvUAe5sh1NLb6pHTxNbGK9vlE3DU5ZLsNnIA4GbTVVuQcJdpdnS0Z3LAoxXhF4LjiMMBl5FjptKiZ6ZrJRLUkqbCAwJ4yBACH5BAUKAAEALAEAAQAOAA4AAAd/gAGCARcjHDExHASDjAQdHAoFLy8Ugw2MgiMKWhIKAQ9MYpiCEA8YHQtZCaOCJ14vX2g2rAEKZgMyNRC0BCksFUa7rCMANgIzH7QvZw4tMmO0DlAPUV9hHqNeVTC7G2tkTmkUHA8iSFUGgzZlGSYaNC4gTWqYEzA3SQhVH1aDgQA7)}#ip-geo-block-map{height:400px;margin:1em auto}#ip-geo-block-apis div.nav-tab-wrapper{padding-top:0;margin-bottom:1em}#ip-geo-block-geoinfo{white-space:normal;word-wrap:break-word;word-break:break-all}#ip-geo-block-geoinfo ul{margin-top:0;margin-left:1em}.gm-style-iw{width:18em;height:auto!important;height:100%;min-height:100%:}.gm-style-iw ul{margin:.1em}.gm-style-iw li{margin:.2em}svg a{cursor:pointer}svg a:hover>text{fill:#0096dd}svg a>text{fill:#0073aa;text-decoration:underline}table.ip-geo-block-statistics-table{float:right}table.ip-geo-block-statistics-table td,table.ip-geo-block-statistics-table th{width:12em;margin:0;padding:.2em;text-align:right;line-height:1.5em;word-wrap:break-word}table.ip-geo-block-statistics-table tr:nth-child(even){background-color:#eee}table.ip-geo-block-table{margin:1em 0;width:100%;white-space:normal;word-wrap:break-word;word-break:break-all}table.ip-geo-block-table td:first-child{min-width:4.3em;max-width:5em}@media screen and (max-width:782px){#ip-geo-block-whois .panel-body{padding:0 .5em}}#ip-geo-block-scan-code{vertical-align:middle}#ip-geo-block-code-list{display:none;margin-bottom:0}#ip-geo-block-chart-countries{height:200px}#ip-geo-block-chart-daily{height:240px}#ip_geo_block_settings_validation_mimetype+label{padding-top:.25em}#ip_geo_block_settings_validation_mimetype+label+ul{margin-top:.7em}#ip_geo_block_settings_create_user{margin-bottom:.5em}#ip-geo-block-back-to-top a,#ip-geo-block-toggle-sections{box-shadow:none}#ip-geo-block-wp-info textarea{margin-top:.5em;overflow:auto;width:100%;word-wrap:normal;word-break:normal;white-space:pre}#ip-geo-block-back-to-top{margin:0;text-align:right}#ip-geo-block-live-update,#ip-geo-block-open-new{margin-left:1em}.ip-geo-block-menu-link{font-size:13px!important}dfn~.ip-geo-block-icon{margin-left:.4em}.ip-geo-block-icon{position:relative;cursor:pointer;outline:0;box-shadow:none;text-decoration:none;background-color:transparent}.ip-geo-block-icon:active{top:1px}.ip-geo-block-icon span{height:16px;width:16px;margin:0;border:none;display:inline-block;vertical-align:middle;background-size:16px 16px;background-position:center center;background-repeat:no-repeat}.ip-geo-block-icon-cycle span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAh1BMVEUAda2otLp+rsSHprWHr8IBd7EpfKRGhaNajqeUqrRymKuKoq5yo7prlKgAcqoVe6w8gqQmgq5Tj6wIdqsVdKIshrEMea1Uhp+Anqw0hawDdq4gfKhljqE7hqoLdKYbgbM4jLQygKUGeK8CdawQd6gVeKcad6NKkrSerrZAj7UAc6sAc6rc3NySrVGQAAAALXRSTlP//////////////////////////////////////////////////////////wCl7wv9AAACOklEQVR4Ae2W15rzKgxF9xTZzhTX9B7S/gN6/9ebYqzzGZsw/S7LV3FZgCSIwD/kQ8FVcBU8xatZUczy8luC/ABNOn0DSHEsvyZ4PgLatNCYR3efFxyhTQ8g+qQgJxgv2JefERzJXATRh4LHOUwAHD4S7OGEztRJaN86hAUxtaNWDUf/bRdDBbQMWVDAO8jn89WUhag1MeyCAh6hHofyrliLgZKggDMYgzF3eVAwFq0uCZq5KY0TezjIHDDzC0qqmkwe2ctGDOQVLMkgu+F3/rGXwb4xIPcJ6P3JgkM8wFjmfcFAWfeKQywaAz33BJVuHsUcAt09gVbuLDThAJkdR687ggLmf4gDJLIGV7BydtB8yn3u+fbtuj/LS7G9wZAd1AKK+yxJ1x+aBmibTtgCcEHGHsh0wdbOgNLek4L7lI5BigY8nWuZUQ3qGEXes9JzOKGJztPaGtLslu3lIXJirdxCWkASHGDTMqg7V1DKPplygDG61YJukLHjEErGSXqCSos6xNSOgzP3BDmsQBcchNwkoV8oiNnPA78zIefUgCdJeGIfE7LmFWXsFTCFdzTJ/RlfEMRiSGnFXXbkC7AIeqcKDu4ynseozeouKJiSEYBDwkJyIC1nRUjgblkNWp/e/1vXc2gjoAoLksYgjrrFMi0oDgjEEIDij1scBXMJSH6DAj6RNl7o8MkuLak8Co15/Pk+MRmT0xilQJV/sdWNKg2kTaeroudvNNsDjmejYjSL+e6v2/2r4Cp4BXNajr0H7hRfAAAAAElFTkSuQmCC)}.ip-geo-block-icon-lock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3Ny3y9Zzq8dRmb7M1dlXnsIFdK0AcawAcqwphrYAcKvZ29wAb6oJd680jrqlw9MBcqxmo8MUfbJLl75eoMI7kbzX2ttqp8VSmL1YnL8NeK+Tu89DlL1ImMEOebBNmL4OkqMoAAAAAXRSTlMAQObYZgAAAPlJREFUeAG9kAWyhTAQBIPOsCzufv9TPnf4Ll0CSbpmxXwNy3Yc23rz2fV8kPA99433AIQIiGDTCD0lojiOQPXCDSFJIbF16CMWItkQMkF+inZzSLYhFKLl+a9UKTZaqJTZJYtarZuo40chrv9CqJTN+behVi+Cm7RdDgRld6AMgLxrE/dxBz0BEjwBEmD/uIsWPAOAF9A+CE56ufSryr8oqfOYcBbQJ8YkES7COkFOYzTypqCDOTDo2wljaEw4vp1APYyWKd8WMBozylvCpcvmXeHQ5fCegHia4s1FgZcIVeVFeFx1M4MvYG4eBHdYWufC+addBtf8E3vdjBNhWnVQqAAAAABJRU5ErkJggg==)}.ip-geo-block-icon-unlock span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NyzydRzq8dRmb7I09hYnsEFdK0AcawAcqzP1toqhrYAcKvZ29wAb6oMeK8zjbqrxtQBcazBz9Zko8MVfbLF0thMmL07kbtpp8WjwtJSmL1YnL+Tu89DlL1JmMEPebBFV++UAAAAAXRSTlMAQObYZgAAAONJREFUeAG9kAWChDAMAIMmJaTFXf7/ynXflvMbnE5j8DU8Pwh8D1yEUYxEGEchWFEJEjEflESBhTQSQm2MRpIotQhZTmgKgMIg5ZlFKBmrGg7UFXJpEQKW8qIKN7YeikJdBJI2BTtXwfyx0L3XoPphvBEliNU49OoxqEa6g4cTST/OYshvi3hV8+FxSNfluG3jqxG8C6h7gF6jU+AODnTsFGSCA5O4I8wpQDq7I5CUAKWQW+AZYOYtoQPoGDeECWDaioBmWQxeBduoWURso+5WpBdw7R4ENTVDcGE435tJwT+xB+vMEnZRNB0YAAAAAElFTkSuQmCC)}.ip-geo-block-icon-find span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAYFBMVEXc3NzS19rD0NWHtMpGk7kYfbAGda0Req+WtcTT1temwM4AcasAcqwAc6wAcKydvMt1pr8Ab6pqpcLX2doggrKoxdNYm7yzw8u/y9HO1tkKdq4th7Td3t6DrcLL0taxyNPGe/YhAAAAAXRSTlMAQObYZgAAARVJREFUeAGtkkeiwyAMRP2xDfxoRjElvd3/lOkNUlZ5u0GPruan/Bnz96Xadr21rvP/7+ujXsAjom78rj4ApCoERIipqfGB1H7wPmYhw1DXjZI6nOel1oJhVAmdUP0tTEDkVC4AYvqIbaDOCqFV6vwRF0tIeYoo6J/X7ICuPAJl9ZynwiIfB5DXxZlRChulbh8xZci0EHZK3TziJFDL504rEOZ+iR5cVj82DoS7XtSshLJpKqaB0Dg3ZjcsQWKaKiF1gVQlITwh/bw2pgKeEeURhE29yKSzUFF03p1V7Wqj2Y7GfrY9X/NirJsPxKsxfBLSSs5GmH8yjAWPSNd8Yoez4f4/G1nIsksqFtGK1i9e39o0P+EAqaoRLlQ+r94AAAAASUVORK5CYII=)}.ip-geo-block-icon-alert span,span.ip-geo-block-icon-alert{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEXc3Nzc2trWl5DHRDTFOyvOgXfc1tXCLBrEMiHEMyLNcmfaxMLDMSDDLx7bu7jRiYHDLhzDMB/LX1PaxsTDLh3YtrHMY1bWmpPJVknSjYXUkYnZuLTMZVnENCPWlI3QhXzENiXXrqrDLRzXsa3Oal7Pe3Hc2NjVn5nNbmPayMbbwb7ay8rUj4fc09Lbw8Db0dDBbRUDAAAAAXRSTlMAQObYZgAAAPVJREFUeAG9ktXWwyAQBonC12brFvff5f2frr4nBredK2DnTFS8Gst2XM8XZmypIGeWcT4PFABaGIXlClfWG1NiC4Ubu705oKRcY32wTAHl2MdTYEqEK8hIiHgHSnSJeaogMyEWO4BijZCvwII2MS9UJ2BXTh+hQidoEttboBOwq3WBnkCNpQlA2iyAhol2hRu71n97p4fw0Z9/ugoPHCfFA+o/iLfCkyBglRJdICBas7uuey+R56fF14wNanj+/QjwY3aX23cBFn6EiHmHNT/ICYxystv/wJy4UHWGlN2cuPB72tFqAq3dP/Hk3zs0E5LZVryGC/hqGNnUa0SVAAAAAElFTkSuQmCC);vertical-align:bottom}table.form-table th .ip-geo-block-cycle span{vertical-align:text-bottom}.ip-geo-block-list{margin-top:0;margin-bottom:.7em}@media screen and (min-width:782px){ul.ip-geo-block-list .code{width:15em}}.ip-geo-block-list-exceptions label{display:inline-block}.ip-geo-block-list-exceptions dfn{border:none}.ip-geo-block-list-exceptions span.dashicons{font-size:14px}.ip-geo-block-list-exceptions a.ip-geo-block-icon{margin-left:.3em;outline:0;box-shadow:none;text-decoration:none;background-color:transparent}.form-table td p.ip-geo-block-desc,.form-table td p.ip-geo-block-find-desc{color:#666;font-size:13px!important;margin:4px 0 .5em .5em}.ip-geo-block-find-desc{display:none}.ip-geo-block-admin-post{color:#c43322;margin-left:.25em}.ip-geo-block-warn{color:#c43322;font-weight:700}input#ip_geo_block_settings_behavior_time,input#ip_geo_block_settings_behavior_view{width:3.5em}.ip-geo-block-top-list{display:inline-table;list-style-position:outside;margin:0 2em .5em 1.75em}.ip-geo-block-top-list h4{margin:1em 0}.ip-geo-block-top-list li code{background:0 0}.ip-geo-block-network{margin-bottom:1em}.ip-geo-block-container{margin:0 auto;padding:0 1em;position:relative;width:100%}.ip-geo-block-row{display:flex;flex-direction:column;align-items:flex-start;align-items:stretch;padding:0;width:100%}.ip-geo-block-row .ip-geo-block-column{display:block;flex:1 1 auto;align-self:flex-start;margin-left:0;max-width:100%;width:100%}.ip-geo-block-row .ip-geo-block-column.column-20{flex:0 0 20%;max-width:20%}.ip-geo-block-row .ip-geo-block-column.column-25{flex:0 0 25%;max-width:25%}.ip-geo-block-row .ip-geo-block-column.column-33{flex:0 0 33.3333%;max-width:33.3333%}.ip-geo-block-row .ip-geo-block-column.column-50{flex:0 0 50%;max-width:50%}@media (min-width:40rem){.ip-geo-block-row{flex-direction:row;margin-left:-2em;width:calc(100% + 2em)}.ip-geo-block-row .ip-geo-block-column{margin-bottom:inherit;padding:0 1em}}table.ip-geo-block-dataTable{clear:none!important}table.ip-geo-block-dataTable td,table.ip-geo-block-dataTable th{text-align:right}table.ip-geo-block-dataTable td:nth-child(n+2),table.ip-geo-block-dataTable th:nth-child(n+2){padding-left:0!important}table.ip-geo-block-dataTable th{white-space:nowrap}table.ip-geo-block-dataTable>thead>tr{line-height:1.8em}table.ip-geo-block-dataTable>tbody>tr{cursor:pointer}table.ip-geo-block-dataTable.no-footer,table.ip-geo-block-dataTable>thead>tr>td,table.ip-geo-block-dataTable>thead>tr>th{border-bottom:1px solid #ddd}table.ip-geo-block-dataTable thead td,table.ip-geo-block-dataTable thead th{padding:10px 16px}#ip-geo-block-statistics-cache td:nth-child(3),#ip-geo-block-validation-logs td:nth-child(4){min-width:1.6em}div[class*=ip-geo-block] .dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #ddd}table.ip-geo-block-dataTable.nowrap td,table.ip-geo-block-dataTable>tbody>tr>td span{white-space:normal!important;word-wrap:break-word!important;word-break:break-all!important}table.ip-geo-block-dataTable>tbody>tr>td span{display:inline-block}.ip-geo-block-settings-folding input[type=checkbox]{margin-right:.5em}table.ip-geo-block-dataTable input[type=checkbox]{margin:0;max-height:16px;max-width:16px;vertical-align:middle}table.ip-geo-block-dataTable>tbody>tr>td:first-child,table.ip-geo-block-dataTable>thead>tr>th:first-child{padding:8px 4px 8px 1.4em;text-align:left}table.collapsed>tbody>tr>td.dataTables_empty:first-child::before,table.ip-geo-block-dataTable>tbody>tr>td.dataTables_empty{border:none;text-align:center}table.ip-geo-block-dataTable thead>tr>th:first-child.sorting_asc{background-image:none!important}table.ip-geo-block-dataTable.display tbody tr.even>.sorting_1,table.ip-geo-block-dataTable.display tbody tr.odd>.sorting_1,table.ip-geo-block-dataTable.display tbody tr:hover>.sorting_1{background-color:inherit!important}table.ip-geo-block-dataTable.collapsed>tbody>tr>td:first-child{padding:8px 4px 8px 8px!important}table.collapsed>tbody>tr.parent>td:first-child::before,table.collapsed>tbody>tr>td:first-child::before{content:'';height:0;width:0;display:inline-block;border-radius:0;border:5px solid transparent;box-shadow:none;position:relative;background-color:transparent}table.collapsed>tbody>tr>td:first-child::before{border-left:5px solid #555;top:1px;left:-2px}table.collapsed>tbody>tr.parent>td:first-child::before{border-top:5px solid #555;top:4px;left:-4px}table.collapsed>tbody>tr.child>td:first-child::before{border:none}table.collapsed>tbody>tr.child>td.child>ul li{border:none;padding:0;margin:0;line-height:1.8em}table.collapsed>tbody>tr.child>td.child>ul li span.dtr-data,table.collapsed>tbody>tr.child>td.child>ul li span.dtr-title{font-size:13px!important;display:block;white-space:normal;word-wrap:break-word;word-break:break-all}table.collapsed>tbody>tr.child>td.child>ul li span.dtr-data{margin-left:1.25em;margin-right:.3em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{padding-top:.15em;margin:.5em 0 0 .3em;position:relative;display:inline-block}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length:after{content:'';width:6px;height:6px;border:0;border-bottom:solid 2px #999;border-right:solid 2px #999;-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:50%;right:10px;margin-top:-4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length select{padding-top:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:13px!important;line-height:1.4em;width:100%;height:2.05em!important;background:0 0;position:relative;z-index:1;padding:.125em 1.5em .125em .25em;border:1px solid #ddd;border-radius:4px;box-shadow:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length select::-ms-expand{display:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{float:none;text-align:center;margin-bottom:1em;margin-top:0!important}@media screen and (min-width:640px){div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{margin:.5em 0 0 .6em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{position:relative;left:-2.25em}}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate span.ellipsis{min-width:2em;background:inherit;border-color:#ddd;border-radius:0;border-image:none;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;margin:.5em 0 0 0;padding:.25em 0;display:inline-block;text-decoration:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:active>a.paginate_button:first-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:first-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate>a.paginate_button:first-child{border-left-width:1px;border-bottom-left-radius:4px;border-top-left-radius:4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:active>a.paginate_button:last-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate:hover>a.paginate_button:last-child,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate>a.paginate_button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button{color:#0073aa!important}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button:hover{color:#0096dd!important;background-color:#fff}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled:hover,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate span.ellipsis{cursor:default;color:#999!important;background-color:transparent}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate a.paginate_button.current:hover{cursor:default;color:#444!important;background-color:#fff!important}#ip-geo-block-1 #ip-geo-block-section-2 .panel-body,#ip-geo-block-4 #ip-geo-block-section-0 .panel-body{padding:0}#ip-geo-block-1 #ip-geo-block-section-2 table.form-table,#ip-geo-block-4 #ip-geo-block-section-0 table.form-table{margin-left:1em;max-width:95%}#ip-geo-block-select-duration,#ip-geo-block-select-layout,#ip-geo-block-select-target{margin:0}#ip-geo-block-select-duration li,#ip-geo-block-select-layout li,#ip-geo-block-select-target li{float:left;margin-right:1.5em}#ip-geo-block-select-duration li label,#ip-geo-block-select-target li label{cursor:pointer}#ip_geo_block_settings_search_filter{width:16em;padding-top:3px}table.ip-geo-block-dataTable.display tbody tr.ip-geo-block-passed{background-color:#edf6ff!important}table.ip-geo-block-dataTable.display tbody tr.ip-geo-block-blocked{background-color:#ffefef!important}.ip-geo-block-new-passed{animation:ip-geo-block-flash-passed 1s ease-out 0s 1 normal both running}.ip-geo-block-new-blocked{animation:ip-geo-block-flash-blocked 1s ease-out 0s 1 normal both running}@keyframes ip-geo-block-flash-passed{0%{background-color:gold}100%{background-color:#edf6ff}}@keyframes ip-geo-block-flash-blocked{0%{background-color:gold}100%{background-color:#ffefef}}mark{padding:0;background:gold}// Gold #ip-geo-block-live-log{margin:0}#ip-geo-block-live-log li{float:left;margin-right:3em}#ip-geo-block-live-log li:last-child{margin-right:0}#ip-geo-block-live-log li input[type=radio]{visibility:hidden;position:absolute}#ip-geo-block-live-log li input[type=radio]+label{display:inline-block;margin:-2px;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-bottom-color:#b3b3b3;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}#ip-geo-block-live-log li input[type=radio]:checked+label{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#e0e0e0}.ip-geo-block-live-timer{height:1em;width:1em;margin:0;position:relative;top:0;left:0}.ip-geo-block-live-timer:before{content:"";display:block;height:1em;width:1em;background:#0073aa;border-radius:50%;position:absolute;top:0;left:0}.ip-geo-block-live-timer:after{display:none}.ip-geo-block-live-timer>div{position:absolute;width:1em;height:1em;clip:rect(0,1em,1em,.5em)}.ip-geo-block-live-timer>div:before{content:" ";position:absolute;width:1em;height:1em;border-radius:.5em;clip:rect(0,.5em,1em,0);background-color:#f1f1f1;transform:rotate(0)}.ip-geo-block-live-timer>div:first-child:before{animation:30s spin-timer linear forwards}.ip-geo-block-live-timer>div:last-child{transform:rotate(180deg)}.ip-geo-block-live-timer>div:last-child:before{transform:rotate(0);animation:30s spin-timer linear 30s forwards}@keyframes spin-timer{0%{transform:rotate(0)}100%{transform:rotate(180deg)}}.ip-geo-block-subitem{margin-left:1.7em}.ip-geo-block-subitem:before{content:"\00bb";position:absolute;left:2em}.ip-geo-block-subitem dfn{vertical-align:middle}.ip-geo-block-subitem-parent td,.ip-geo-block-subitem-parent th{padding-top:0}:placeholder-shown{color:#888}::-webkit-input-placeholder{color:#888}:-moz-placeholder{color:#888;opacity:1}::-moz-placeholder{color:#888;opacity:1}:-ms-input-placeholder{color:#888}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/cidr.min.css b/wp/wp-content/plugins/ip-geo-block/admin/css/cidr.min.css
deleted file mode 100644
index 09539b5c..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/css/cidr.min.css
+++ /dev/null
@@ -1 +0,0 @@
-*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:8xp;font-size:14px;line-height:1.4}.container{margin:0;padding:0}.clr:after,.col:after,.container:after,.row:after{content:"";display:table;clear:both}.row{padding-bottom:0}.col{display:block;float:left;width:100%}.span_2{width:8.33333333333%}.span_11{width:45.8333333333%}.span_24{width:100%}fieldset{border:none;margin:0;padding:.5rem}textarea{width:100%;height:4.5rem;resize:horizontal;border:1px solid #ccc;font-size:12px;font-family:Consolas,Monaco,monospace}legend input[type=button]{margin-left:.5rem;vertical-align:middle}#j,#i{display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;justify-content:center;align-items:center}#j{padding:0 .5rem}ul#h{padding:1.5rem 0 0;list-style:none}ul#h li{width:100%;margin:.1rem 0;display:inline-block}ul#h li input{padding:0}#g{height:3em;text-align:center;border:1px solid #ccc;padding:.5rem;font-size:12px;font-family:Consolas,Monaco,monospace}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.eot b/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.eot
deleted file mode 100644
index ae697d38..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.eot and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.svg b/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.svg
deleted file mode 100644
index 3d17dedf..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.ttf b/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.ttf
deleted file mode 100644
index 8868e55a..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.ttf and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.woff b/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.woff
deleted file mode 100644
index 51e97329..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/css/fonts/icomoon.woff and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables-all.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables-all.css
deleted file mode 100644
index 5734bbdd..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables-all.css
+++ /dev/null
@@ -1,679 +0,0 @@
-/*! DataTables 1.10.16
- * 2008-2017 SpryMedia Ltd - datatables.net/license
- */
-
-table.ip-geo-block-dataTable {
- width: 100%;
- margin: 0 auto;
- clear: both;
- border-collapse: separate;
- border-spacing: 0;
- /*
- * Header and footer styles
- */
- /*
- * Body styles
- */
-}
-table.ip-geo-block-dataTable thead th,
-table.ip-geo-block-dataTable tfoot th {
- font-weight: bold;
-}
-table.ip-geo-block-dataTable thead th,
-table.ip-geo-block-dataTable thead td {
- padding: 10px 18px;
- border-bottom: 1px solid #111;
-}
-table.ip-geo-block-dataTable thead th:active,
-table.ip-geo-block-dataTable thead td:active {
- outline: none;
-}
-table.ip-geo-block-dataTable tfoot th,
-table.ip-geo-block-dataTable tfoot td {
- padding: 10px 18px 6px 18px;
- border-top: 1px solid #111;
-}
-table.ip-geo-block-dataTable thead .sorting,
-table.ip-geo-block-dataTable thead .sorting_asc,
-table.ip-geo-block-dataTable thead .sorting_desc,
-table.ip-geo-block-dataTable thead .sorting_asc_disabled,
-table.ip-geo-block-dataTable thead .sorting_desc_disabled {
- cursor: pointer;
- *cursor: hand;
- background-repeat: no-repeat;
- background-position: center right;
-}
-table.ip-geo-block-dataTable thead .sorting {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAAN0lEQVR4AWO4c+cORZhmBvyH4QEx4D86pqsB/3Fjwgb8J4RpaQBhPES8gE/z0ElI9M9MA1+gAAD5jWGc4eZ87AAAAABJRU5ErkJggg==); /*url("../images/sort_both.png");*/
-}
-table.ip-geo-block-dataTable thead .sorting_asc {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAIAAAAWBRqYAAAABnRSTlMA3ADcANwpVcdiAAAAdUlEQVR4AWO4QyKgWMONG3eWrrh76xbRGtZvulPTdHfzVuI0nDl7p7XrblXD3Y7eu+fPE6FhwWKgaihasuIuAQ2Hj95pbENoqG+9e/QYbg3Xr9+ZPB2iFIGmzrp78yYODdt3gvxa24yCgCK79pAcD8NEw6gGAPv5+lejjyPQAAAAAElFTkSuQmCC); /*url("../images/sort_asc.png");*/
-}
-table.ip-geo-block-dataTable thead .sorting_desc {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAIAAAAWBRqYAAAABnRSTlMA3ADcANwpVcdiAAAAcklEQVR4AWO4QyIY2hpGNezac6em6W5tMwoCimzfiUPDzZt3ps66W9WAgiZPv3v9Om4nHT12p74Vobqx7e7ho4T8sGQFQsOCxXcJe/r8+TsdvSDVrV13z5wlLpQ2bwX5fv0mooP11q07S1fcvXFjACMOAM7v+leNDkNAAAAAAElFTkSuQmCC); /*url("../images/sort_desc.png");*/
-}
-table.ip-geo-block-dataTable thead .sorting_asc_disabled {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAALklEQVR4AWO4c+cORZhmBvyH4QEx4D86pqsB/3Fjwgb8J4RpZsDAJ6RRA0YNAAAd2DjFaOCLnQAAAABJRU5ErkJggg==); /*url("../images/sort_asc_disabled.png");*/
-}
-table.ip-geo-block-dataTable thead .sorting_desc_disabled {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAALUlEQVR4AWO4c+cORZjqBowaMGrAf0KYlgYQNoToMMClma4GMKBrpqsB9E9IAFTzOMWpD7f6AAAAAElFTkSuQmCC); /*url("../images/sort_desc_disabled.png");*/
-}
-table.ip-geo-block-dataTable tbody tr {
- background-color: #ffffff;
-}
-table.ip-geo-block-dataTable tbody tr.selected {
- background-color: #B0BED9;
-}
-table.ip-geo-block-dataTable tbody th,
-table.ip-geo-block-dataTable tbody td {
- padding: 8px 10px;
-}
-table.ip-geo-block-dataTable.row-border tbody th,
-table.ip-geo-block-dataTable.row-border tbody td,
-table.ip-geo-block-dataTable.display tbody th,
-table.ip-geo-block-dataTable.display tbody td {
- border-top: 1px solid #ddd;
-}
-table.ip-geo-block-dataTable.row-border tbody tr:first-child th,
-table.ip-geo-block-dataTable.row-border tbody tr:first-child td,
-table.ip-geo-block-dataTable.display tbody tr:first-child th,
-table.ip-geo-block-dataTable.display tbody tr:first-child td {
- border-top: none;
-}
-table.ip-geo-block-dataTable.cell-border tbody th,
-table.ip-geo-block-dataTable.cell-border tbody td {
- border-top: 1px solid #ddd;
- border-right: 1px solid #ddd;
-}
-table.ip-geo-block-dataTable.cell-border tbody tr th:first-child,
-table.ip-geo-block-dataTable.cell-border tbody tr td:first-child {
- border-left: 1px solid #ddd;
-}
-table.ip-geo-block-dataTable.cell-border tbody tr:first-child th,
-table.ip-geo-block-dataTable.cell-border tbody tr:first-child td {
- border-top: none;
-}
-table.ip-geo-block-dataTable.stripe tbody tr.odd,
-table.ip-geo-block-dataTable.display tbody tr.odd {
- background-color: #f9f9f9;
-}
-table.ip-geo-block-dataTable.stripe tbody tr.odd.selected,
-table.ip-geo-block-dataTable.display tbody tr.odd.selected {
- background-color: #acbad4;
-}
-table.ip-geo-block-dataTable.hover tbody tr:hover,
-table.ip-geo-block-dataTable.display tbody tr:hover {
- background-color: #f6f6f6;
-}
-table.ip-geo-block-dataTable.hover tbody tr:hover.selected,
-table.ip-geo-block-dataTable.display tbody tr:hover.selected {
- background-color: #aab7d1;
-}
-table.ip-geo-block-dataTable.order-column tbody tr > .sorting_1,
-table.ip-geo-block-dataTable.order-column tbody tr > .sorting_2,
-table.ip-geo-block-dataTable.order-column tbody tr > .sorting_3,
-table.ip-geo-block-dataTable.display tbody tr > .sorting_1,
-table.ip-geo-block-dataTable.display tbody tr > .sorting_2,
-table.ip-geo-block-dataTable.display tbody tr > .sorting_3 {
- background-color: #fafafa;
-}
-table.ip-geo-block-dataTable.order-column tbody tr.selected > .sorting_1,
-table.ip-geo-block-dataTable.order-column tbody tr.selected > .sorting_2,
-table.ip-geo-block-dataTable.order-column tbody tr.selected > .sorting_3,
-table.ip-geo-block-dataTable.display tbody tr.selected > .sorting_1,
-table.ip-geo-block-dataTable.display tbody tr.selected > .sorting_2,
-table.ip-geo-block-dataTable.display tbody tr.selected > .sorting_3 {
- background-color: #acbad5;
-}
-table.ip-geo-block-dataTable.display tbody tr.odd > .sorting_1,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
- background-color: #f1f1f1;
-}
-table.ip-geo-block-dataTable.display tbody tr.odd > .sorting_2,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
- background-color: #f3f3f3;
-}
-table.ip-geo-block-dataTable.display tbody tr.odd > .sorting_3,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
- background-color: whitesmoke;
-}
-table.ip-geo-block-dataTable.display tbody tr.odd.selected > .sorting_1,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
- background-color: #a6b4cd;
-}
-table.ip-geo-block-dataTable.display tbody tr.odd.selected > .sorting_2,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
- background-color: #a8b5cf;
-}
-table.ip-geo-block-dataTable.display tbody tr.odd.selected > .sorting_3,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
- background-color: #a9b7d1;
-}
-table.ip-geo-block-dataTable.display tbody tr.even > .sorting_1,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.even > .sorting_1 {
- background-color: #fafafa;
-}
-table.ip-geo-block-dataTable.display tbody tr.even > .sorting_2,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.even > .sorting_2 {
- background-color: #fcfcfc;
-}
-table.ip-geo-block-dataTable.display tbody tr.even > .sorting_3,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.even > .sorting_3 {
- background-color: #fefefe;
-}
-table.ip-geo-block-dataTable.display tbody tr.even.selected > .sorting_1,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
- background-color: #acbad5;
-}
-table.ip-geo-block-dataTable.display tbody tr.even.selected > .sorting_2,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
- background-color: #aebcd6;
-}
-table.ip-geo-block-dataTable.display tbody tr.even.selected > .sorting_3,
-table.ip-geo-block-dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
- background-color: #afbdd8;
-}
-table.ip-geo-block-dataTable.display tbody tr:hover > .sorting_1,
-table.ip-geo-block-dataTable.order-column.hover tbody tr:hover > .sorting_1 {
- background-color: #eaeaea;
-}
-table.ip-geo-block-dataTable.display tbody tr:hover > .sorting_2,
-table.ip-geo-block-dataTable.order-column.hover tbody tr:hover > .sorting_2 {
- background-color: #ececec;
-}
-table.ip-geo-block-dataTable.display tbody tr:hover > .sorting_3,
-table.ip-geo-block-dataTable.order-column.hover tbody tr:hover > .sorting_3 {
- background-color: #efefef;
-}
-table.ip-geo-block-dataTable.display tbody tr:hover.selected > .sorting_1,
-table.ip-geo-block-dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
- background-color: #a2aec7;
-}
-table.ip-geo-block-dataTable.display tbody tr:hover.selected > .sorting_2,
-table.ip-geo-block-dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
- background-color: #a3b0c9;
-}
-table.ip-geo-block-dataTable.display tbody tr:hover.selected > .sorting_3,
-table.ip-geo-block-dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
- background-color: #a5b2cb;
-}
-table.ip-geo-block-dataTable.no-footer {
- border-bottom: 1px solid #111;
-}
-table.ip-geo-block-dataTable.nowrap th,
-table.ip-geo-block-dataTable.nowrap td {
- white-space: nowrap;
-}
-table.ip-geo-block-dataTable.compact thead th,
-table.ip-geo-block-dataTable.compact thead td {
- padding: 4px 17px 4px 4px;
-}
-table.ip-geo-block-dataTable.compact tfoot th,
-table.ip-geo-block-dataTable.compact tfoot td {
- padding: 4px;
-}
-table.ip-geo-block-dataTable.compact tbody th,
-table.ip-geo-block-dataTable.compact tbody td {
- padding: 4px;
-}
-table.ip-geo-block-dataTable th.dt-left,
-table.ip-geo-block-dataTable td.dt-left {
- text-align: left;
-}
-table.ip-geo-block-dataTable th.dt-center,
-table.ip-geo-block-dataTable td.dt-center,
-table.ip-geo-block-dataTable td.dataTables_empty {
- text-align: center;
-}
-table.ip-geo-block-dataTable th.dt-right,
-table.ip-geo-block-dataTable td.dt-right {
- text-align: right;
-}
-table.ip-geo-block-dataTable th.dt-justify,
-table.ip-geo-block-dataTable td.dt-justify {
- text-align: justify;
-}
-table.ip-geo-block-dataTable th.dt-nowrap,
-table.ip-geo-block-dataTable td.dt-nowrap {
- white-space: nowrap;
-}
-table.ip-geo-block-dataTable thead th.dt-head-left,
-table.ip-geo-block-dataTable thead td.dt-head-left,
-table.ip-geo-block-dataTable tfoot th.dt-head-left,
-table.ip-geo-block-dataTable tfoot td.dt-head-left {
- text-align: left;
-}
-table.ip-geo-block-dataTable thead th.dt-head-center,
-table.ip-geo-block-dataTable thead td.dt-head-center,
-table.ip-geo-block-dataTable tfoot th.dt-head-center,
-table.ip-geo-block-dataTable tfoot td.dt-head-center {
- text-align: center;
-}
-table.ip-geo-block-dataTable thead th.dt-head-right,
-table.ip-geo-block-dataTable thead td.dt-head-right,
-table.ip-geo-block-dataTable tfoot th.dt-head-right,
-table.ip-geo-block-dataTable tfoot td.dt-head-right {
- text-align: right;
-}
-table.ip-geo-block-dataTable thead th.dt-head-justify,
-table.ip-geo-block-dataTable thead td.dt-head-justify,
-table.ip-geo-block-dataTable tfoot th.dt-head-justify,
-table.ip-geo-block-dataTable tfoot td.dt-head-justify {
- text-align: justify;
-}
-table.ip-geo-block-dataTable thead th.dt-head-nowrap,
-table.ip-geo-block-dataTable thead td.dt-head-nowrap,
-table.ip-geo-block-dataTable tfoot th.dt-head-nowrap,
-table.ip-geo-block-dataTable tfoot td.dt-head-nowrap {
- white-space: nowrap;
-}
-table.ip-geo-block-dataTable tbody th.dt-body-left,
-table.ip-geo-block-dataTable tbody td.dt-body-left {
- text-align: left;
-}
-table.ip-geo-block-dataTable tbody th.dt-body-center,
-table.ip-geo-block-dataTable tbody td.dt-body-center {
- text-align: center;
-}
-table.ip-geo-block-dataTable tbody th.dt-body-right,
-table.ip-geo-block-dataTable tbody td.dt-body-right {
- text-align: right;
-}
-table.ip-geo-block-dataTable tbody th.dt-body-justify,
-table.ip-geo-block-dataTable tbody td.dt-body-justify {
- text-align: justify;
-}
-table.ip-geo-block-dataTable tbody th.dt-body-nowrap,
-table.ip-geo-block-dataTable tbody td.dt-body-nowrap {
- white-space: nowrap;
-}
-
-table.ip-geo-block-dataTable,
-table.ip-geo-block-dataTable th,
-table.ip-geo-block-dataTable td {
- box-sizing: content-box;
-}
-
-/*
- * Control feature layout
- */
-div[class*="ip-geo-block"] .dataTables_wrapper {
- position: relative;
- clear: both;
- *zoom: 1;
- zoom: 1;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length {
- float: left;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_filter {
- float: right;
- text-align: right;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_filter input {
- margin-left: 0.5em;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_info {
- clear: both;
- float: left;
- padding-top: 0.755em;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate {
- float: right;
- text-align: right;
- padding-top: 0.25em;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button {
- box-sizing: border-box;
- display: inline-block;
- min-width: 1.5em;
- padding: 0.5em 1em;
- margin-left: 2px;
- text-align: center;
- text-decoration: none !important;
- cursor: pointer;
- *cursor: hand;
- color: #333 !important;
- border: 1px solid transparent;
- border-radius: 2px;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button.current,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
- color: #333 !important;
- border: 1px solid #979797;
- background-color: white;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* Chrome10+,Safari5.1+ */
- background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* FF3.6+ */
- background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* IE10+ */
- background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* Opera 11.10+ */
- background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
- /* W3C */
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
- cursor: default;
- color: #666 !important;
- border: 1px solid transparent;
- background: transparent;
- box-shadow: none;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
- color: white !important;
- border: 1px solid #111;
- background-color: #585858;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
- /* Chrome10+,Safari5.1+ */
- background: -moz-linear-gradient(top, #585858 0%, #111 100%);
- /* FF3.6+ */
- background: -ms-linear-gradient(top, #585858 0%, #111 100%);
- /* IE10+ */
- background: -o-linear-gradient(top, #585858 0%, #111 100%);
- /* Opera 11.10+ */
- background: linear-gradient(to bottom, #585858 0%, #111 100%);
- /* W3C */
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .paginate_button:active {
- outline: none;
- background-color: #2b2b2b;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* Chrome10+,Safari5.1+ */
- background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* FF3.6+ */
- background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* IE10+ */
- background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* Opera 11.10+ */
- background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
- /* W3C */
- box-shadow: inset 0 0 3px #111;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate .ellipsis {
- padding: 0 1em;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_processing {
- position: absolute;
- top: 50%;
- left: 50%;
- width: 100%;
- height: 40px;
- margin-left: -50%;
- margin-top: -25px;
- padding-top: 20px;
- text-align: center;
- font-size: 1.2em;
- background-color: white;
- background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
- background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_filter,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_info,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_processing,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate {
- color: #333;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll {
- clear: both;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
- *margin-top: -1px;
- -webkit-overflow-scrolling: touch;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
- vertical-align: middle;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
-div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
- height: 0;
- overflow: hidden;
- margin: 0 !important;
- padding: 0 !important;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper.no-footer .dataTables_scrollBody {
- border-bottom: 1px solid #111;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper.no-footer div.dataTables_scrollHead table.ip-geo-block-dataTable,
-div[class*="ip-geo-block"] .dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
- border-bottom: none;
-}
-div[class*="ip-geo-block"] .dataTables_wrapper:after {
- visibility: hidden;
- display: block;
- content: "";
- clear: both;
- height: 0;
-}
-
-@media screen and (max-width: 767px) {
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_info,
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate {
- float: none;
- text-align: center;
- }
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_paginate {
- margin-top: 0.5em;
- }
-}
-@media screen and (max-width: 640px) {
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_length,
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_filter {
- float: none;
- text-align: center;
- }
- div[class*="ip-geo-block"] .dataTables_wrapper .dataTables_filter {
- margin-top: 0.5em;
- }
-}
-
-/*! Responsive 2.1.1
- * 2014-2016 SpryMedia Ltd - datatables.net/license
- */
-
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > td.child,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > th.child,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
- cursor: default !important;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
- display: none !important;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > td:first-child,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > th:first-child {
- position: relative;
- padding-left: 30px;
- cursor: pointer;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before {
- top: 9px;
- left: 4px;
- height: 14px;
- width: 14px;
- display: block;
- position: absolute;
- color: white;
- border: 2px solid white;
- border-radius: 14px;
- box-shadow: 0 0 3px #444;
- box-sizing: content-box;
- text-align: center;
- font-family: 'Courier New', Courier, monospace;
- line-height: 14px;
- content: '+';
- background-color: #31b131;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
- content: '-';
- background-color: #d33333;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed > tbody > tr.child td:before {
- display: none;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
-table.ip-geo-block-dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
- padding-left: 27px;
-}
-table.ip-geo-block-dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
-table.ip-geo-block-dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
- top: 5px;
- left: 4px;
- height: 14px;
- width: 14px;
- border-radius: 14px;
- line-height: 14px;
- text-indent: 3px;
-}
-table.ip-geo-block-dataTable.dtr-column > tbody > tr > td.control,
-table.ip-geo-block-dataTable.dtr-column > tbody > tr > th.control {
- position: relative;
- cursor: pointer;
-}
-table.ip-geo-block-dataTable.dtr-column > tbody > tr > td.control:before,
-table.ip-geo-block-dataTable.dtr-column > tbody > tr > th.control:before {
- top: 50%;
- left: 50%;
- height: 16px;
- width: 16px;
- margin-top: -10px;
- margin-left: -10px;
- display: block;
- position: absolute;
- color: white;
- border: 2px solid white;
- border-radius: 14px;
- box-shadow: 0 0 3px #444;
- box-sizing: content-box;
- text-align: center;
- font-family: 'Courier New', Courier, monospace;
- line-height: 14px;
- content: '+';
- background-color: #31b131;
-}
-table.ip-geo-block-dataTable.dtr-column > tbody > tr.parent td.control:before,
-table.ip-geo-block-dataTable.dtr-column > tbody > tr.parent th.control:before {
- content: '-';
- background-color: #d33333;
-}
-table.ip-geo-block-dataTable > tbody > tr.child {
- padding: 0.5em 1em;
-}
-table.ip-geo-block-dataTable > tbody > tr.child:hover {
- background: transparent !important;
-}
-table.ip-geo-block-dataTable > tbody > tr.child ul.dtr-details {
- display: inline-block;
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-table.ip-geo-block-dataTable > tbody > tr.child ul.dtr-details li {
- border-bottom: 1px solid #efefef;
- padding: 0.5em 0;
-}
-table.ip-geo-block-dataTable > tbody > tr.child ul.dtr-details li:first-child {
- padding-top: 0;
-}
-table.ip-geo-block-dataTable > tbody > tr.child ul.dtr-details li:last-child {
- border-bottom: none;
-}
-table.ip-geo-block-dataTable > tbody > tr.child span.dtr-title {
- display: inline-block;
- min-width: 75px;
- font-weight: bold;
-}
-
-div.dtr-modal {
- position: fixed;
- box-sizing: border-box;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
- z-index: 100;
- padding: 10em 1em;
-}
-div.dtr-modal div.dtr-modal-display {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- width: 50%;
- height: 50%;
- overflow: auto;
- margin: auto;
- z-index: 102;
- overflow: auto;
- background-color: #f5f5f7;
- border: 1px solid black;
- border-radius: 0.5em;
- box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
-}
-div.dtr-modal div.dtr-modal-content {
- position: relative;
- padding: 1em;
-}
-div.dtr-modal div.dtr-modal-close {
- position: absolute;
- top: 6px;
- right: 6px;
- width: 22px;
- height: 22px;
- border: 1px solid #eaeaea;
- background-color: #f9f9f9;
- text-align: center;
- border-radius: 3px;
- cursor: pointer;
- z-index: 12;
-}
-div.dtr-modal div.dtr-modal-close:hover {
- background-color: #eaeaea;
-}
-div.dtr-modal div.dtr-modal-background {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- z-index: 101;
- background: rgba(0, 0, 0, 0.6);
-}
-
-@media screen and (max-width: 767px) {
- div.dtr-modal div.dtr-modal-display {
- width: 95%;
- }
-}
-
-/*! datatables.mark.js v2.0.1
- * Copyright (c) 2016-2017 Julian Motz
- * https://github.com/julmot/datatables.mark.js/blob/master/LICENSE
- */
-
-mark {
- background: orange;
- color: black;
-}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables-all.min.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables-all.min.css
deleted file mode 100644
index 330a13cf..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables-all.min.css
+++ /dev/null
@@ -1,15 +0,0 @@
-/*! DataTables 1.10.16
- * 2008-2017 SpryMedia Ltd - datatables.net/license
- */
-table.ip-geo-block-dataTable tbody td.dt-body-nowrap,table.ip-geo-block-dataTable tbody th.dt-body-nowrap,table.ip-geo-block-dataTable td.dt-nowrap,table.ip-geo-block-dataTable tfoot td.dt-head-nowrap,table.ip-geo-block-dataTable tfoot th.dt-head-nowrap,table.ip-geo-block-dataTable th.dt-nowrap,table.ip-geo-block-dataTable thead td.dt-head-nowrap,table.ip-geo-block-dataTable thead th.dt-head-nowrap,table.ip-geo-block-dataTable.nowrap td,table.ip-geo-block-dataTable.nowrap th{white-space:nowrap}table.ip-geo-block-dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.ip-geo-block-dataTable tfoot th,table.ip-geo-block-dataTable thead th{font-weight:700}table.ip-geo-block-dataTable thead td,table.ip-geo-block-dataTable thead th{padding:10px 18px;border-bottom:1px solid #111}table.ip-geo-block-dataTable thead td:active,table.ip-geo-block-dataTable thead th:active{outline:0}table.ip-geo-block-dataTable tfoot td,table.ip-geo-block-dataTable tfoot th{padding:10px 18px 6px;border-top:1px solid #111}table.ip-geo-block-dataTable thead .sorting,table.ip-geo-block-dataTable thead .sorting_asc,table.ip-geo-block-dataTable thead .sorting_asc_disabled,table.ip-geo-block-dataTable thead .sorting_desc,table.ip-geo-block-dataTable thead .sorting_desc_disabled{cursor:pointer;background-repeat:no-repeat;background-position:center right}table.ip-geo-block-dataTable thead .sorting{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAAN0lEQVR4AWO4c+cORZhmBvyH4QEx4D86pqsB/3Fjwgb8J4RpaQBhPES8gE/z0ElI9M9MA1+gAAD5jWGc4eZ87AAAAABJRU5ErkJggg==)}table.ip-geo-block-dataTable thead .sorting_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAIAAAAWBRqYAAAABnRSTlMA3ADcANwpVcdiAAAAdUlEQVR4AWO4QyKgWMONG3eWrrh76xbRGtZvulPTdHfzVuI0nDl7p7XrblXD3Y7eu+fPE6FhwWKgaihasuIuAQ2Hj95pbENoqG+9e/QYbg3Xr9+ZPB2iFIGmzrp78yYODdt3gvxa24yCgCK79pAcD8NEw6gGAPv5+lejjyPQAAAAAElFTkSuQmCC)}table.ip-geo-block-dataTable thead .sorting_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAIAAAAWBRqYAAAABnRSTlMA3ADcANwpVcdiAAAAcklEQVR4AWO4QyIY2hpGNezac6em6W5tMwoCimzfiUPDzZt3ps66W9WAgiZPv3v9Om4nHT12p74Vobqx7e7ho4T8sGQFQsOCxXcJe/r8+TsdvSDVrV13z5wlLpQ2bwX5fv0mooP11q07S1fcvXFjACMOAM7v+leNDkNAAAAAAElFTkSuQmCC)}table.ip-geo-block-dataTable thead .sorting_asc_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAALklEQVR4AWO4c+cORZhmBvyH4QEx4D86pqsB/3Fjwgb8J4RpZsDAJ6RRA0YNAAAd2DjFaOCLnQAAAABJRU5ErkJggg==)}table.ip-geo-block-dataTable thead .sorting_desc_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAALUlEQVR4AWO4c+cORZjqBowaMGrAf0KYlgYQNoToMMClma4GMKBrpqsB9E9IAFTzOMWpD7f6AAAAAElFTkSuQmCC)}table.ip-geo-block-dataTable tbody tr{background-color:#fff}table.ip-geo-block-dataTable tbody tr.selected{background-color:#B0BED9}table.ip-geo-block-dataTable tbody td,table.ip-geo-block-dataTable tbody th{padding:8px 10px}table.ip-geo-block-dataTable.display tbody td,table.ip-geo-block-dataTable.display tbody th,table.ip-geo-block-dataTable.row-border tbody td,table.ip-geo-block-dataTable.row-border tbody th{border-top:1px solid #ddd}table.ip-geo-block-dataTable.display tbody tr:first-child td,table.ip-geo-block-dataTable.display tbody tr:first-child th,table.ip-geo-block-dataTable.row-border tbody tr:first-child td,table.ip-geo-block-dataTable.row-border tbody tr:first-child th{border-top:none}table.ip-geo-block-dataTable.cell-border tbody td,table.ip-geo-block-dataTable.cell-border tbody th{border-top:1px solid #ddd;border-right:1px solid #ddd}table.ip-geo-block-dataTable.cell-border tbody tr td:first-child,table.ip-geo-block-dataTable.cell-border tbody tr th:first-child{border-left:1px solid #ddd}table.ip-geo-block-dataTable.cell-border tbody tr:first-child td,table.ip-geo-block-dataTable.cell-border tbody tr:first-child th{border-top:none}table.ip-geo-block-dataTable.display tbody tr.odd,table.ip-geo-block-dataTable.stripe tbody tr.odd{background-color:#f9f9f9}table.ip-geo-block-dataTable.display tbody tr.odd.selected,table.ip-geo-block-dataTable.stripe tbody tr.odd.selected{background-color:#acbad4}table.ip-geo-block-dataTable.display tbody tr:hover,table.ip-geo-block-dataTable.hover tbody tr:hover{background-color:#f6f6f6}table.ip-geo-block-dataTable.display tbody tr:hover.selected,table.ip-geo-block-dataTable.hover tbody tr:hover.selected{background-color:#aab7d1}table.ip-geo-block-dataTable.display tbody tr>.sorting_1,table.ip-geo-block-dataTable.display tbody tr>.sorting_2,table.ip-geo-block-dataTable.display tbody tr>.sorting_3,table.ip-geo-block-dataTable.order-column tbody tr>.sorting_1,table.ip-geo-block-dataTable.order-column tbody tr>.sorting_2,table.ip-geo-block-dataTable.order-column tbody tr>.sorting_3{background-color:#fafafa}table.ip-geo-block-dataTable.display tbody tr.selected>.sorting_1,table.ip-geo-block-dataTable.display tbody tr.selected>.sorting_2,table.ip-geo-block-dataTable.display tbody tr.selected>.sorting_3,table.ip-geo-block-dataTable.order-column tbody tr.selected>.sorting_1,table.ip-geo-block-dataTable.order-column tbody tr.selected>.sorting_2,table.ip-geo-block-dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad5}table.ip-geo-block-dataTable.display tbody tr.odd>.sorting_1,table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.ip-geo-block-dataTable.display tbody tr.odd>.sorting_2,table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.ip-geo-block-dataTable.display tbody tr.odd>.sorting_3,table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.ip-geo-block-dataTable.display tbody tr.odd.selected>.sorting_1,table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.ip-geo-block-dataTable.display tbody tr.odd.selected>.sorting_2,table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.ip-geo-block-dataTable.display tbody tr.odd.selected>.sorting_3,table.ip-geo-block-dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.ip-geo-block-dataTable.display tbody tr.even>.sorting_1,table.ip-geo-block-dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.ip-geo-block-dataTable.display tbody tr.even>.sorting_2,table.ip-geo-block-dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.ip-geo-block-dataTable.display tbody tr.even>.sorting_3,table.ip-geo-block-dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.ip-geo-block-dataTable.display tbody tr.even.selected>.sorting_1,table.ip-geo-block-dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.ip-geo-block-dataTable.display tbody tr.even.selected>.sorting_2,table.ip-geo-block-dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.ip-geo-block-dataTable.display tbody tr.even.selected>.sorting_3,table.ip-geo-block-dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.ip-geo-block-dataTable.display tbody tr:hover>.sorting_1,table.ip-geo-block-dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.ip-geo-block-dataTable.display tbody tr:hover>.sorting_2,table.ip-geo-block-dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.ip-geo-block-dataTable.display tbody tr:hover>.sorting_3,table.ip-geo-block-dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.ip-geo-block-dataTable.display tbody tr:hover.selected>.sorting_1,table.ip-geo-block-dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.ip-geo-block-dataTable.display tbody tr:hover.selected>.sorting_2,table.ip-geo-block-dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.ip-geo-block-dataTable.display tbody tr:hover.selected>.sorting_3,table.ip-geo-block-dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.ip-geo-block-dataTable.no-footer{border-bottom:1px solid #111}table.ip-geo-block-dataTable.compact thead td,table.ip-geo-block-dataTable.compact thead th{padding:4px 17px 4px 4px}table.ip-geo-block-dataTable.compact tbody td,table.ip-geo-block-dataTable.compact tbody th,table.ip-geo-block-dataTable.compact tfoot td,table.ip-geo-block-dataTable.compact tfoot th{padding:4px}table.ip-geo-block-dataTable td.dt-left,table.ip-geo-block-dataTable th.dt-left{text-align:left}table.ip-geo-block-dataTable td.dataTables_empty,table.ip-geo-block-dataTable td.dt-center,table.ip-geo-block-dataTable th.dt-center{text-align:center}table.ip-geo-block-dataTable td.dt-right,table.ip-geo-block-dataTable th.dt-right{text-align:right}table.ip-geo-block-dataTable td.dt-justify,table.ip-geo-block-dataTable th.dt-justify{text-align:justify}table.ip-geo-block-dataTable tfoot td.dt-head-left,table.ip-geo-block-dataTable tfoot th.dt-head-left,table.ip-geo-block-dataTable thead td.dt-head-left,table.ip-geo-block-dataTable thead th.dt-head-left{text-align:left}table.ip-geo-block-dataTable tfoot td.dt-head-center,table.ip-geo-block-dataTable tfoot th.dt-head-center,table.ip-geo-block-dataTable thead td.dt-head-center,table.ip-geo-block-dataTable thead th.dt-head-center{text-align:center}table.ip-geo-block-dataTable tfoot td.dt-head-right,table.ip-geo-block-dataTable tfoot th.dt-head-right,table.ip-geo-block-dataTable thead td.dt-head-right,table.ip-geo-block-dataTable thead th.dt-head-right{text-align:right}table.ip-geo-block-dataTable tfoot td.dt-head-justify,table.ip-geo-block-dataTable tfoot th.dt-head-justify,table.ip-geo-block-dataTable thead td.dt-head-justify,table.ip-geo-block-dataTable thead th.dt-head-justify{text-align:justify}table.ip-geo-block-dataTable tbody td.dt-body-left,table.ip-geo-block-dataTable tbody th.dt-body-left{text-align:left}table.ip-geo-block-dataTable tbody td.dt-body-center,table.ip-geo-block-dataTable tbody th.dt-body-center{text-align:center}table.ip-geo-block-dataTable tbody td.dt-body-right,table.ip-geo-block-dataTable tbody th.dt-body-right{text-align:right}table.ip-geo-block-dataTable tbody td.dt-body-justify,table.ip-geo-block-dataTable tbody th.dt-body-justify{text-align:justify}table.ip-geo-block-dataTable,table.ip-geo-block-dataTable td,table.ip-geo-block-dataTable th{box-sizing:content-box}div[class*=ip-geo-block] .dataTables_wrapper{position:relative;clear:both;zoom:1}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{float:left}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_filter{float:right;text-align:right}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_filter input{margin-left:.5em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none!important;cursor:pointer;color:#333!important;border:1px solid transparent;border-radius:2px}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button.current,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333!important;border:1px solid #979797;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#dcdcdc));background:-webkit-linear-gradient(top,#fff 0,#dcdcdc 100%);background:-moz-linear-gradient(top,#fff 0,#dcdcdc 100%);background:-ms-linear-gradient(top,#fff 0,#dcdcdc 100%);background:-o-linear-gradient(top,#fff 0,#dcdcdc 100%);background:linear-gradient(to bottom,#fff 0,#dcdcdc 100%)}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{cursor:default;color:#666!important;border:1px solid transparent;background:0 0;box-shadow:none}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:#fff!important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#585858),color-stop(100%,#111));background:-webkit-linear-gradient(top,#585858 0,#111 100%);background:-moz-linear-gradient(top,#585858 0,#111 100%);background:-ms-linear-gradient(top,#585858 0,#111 100%);background:-o-linear-gradient(top,#585858 0,#111 100%);background:linear-gradient(to bottom,#585858 0,#111 100%)}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:0;background-color:#2b2b2b;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#2b2b2b),color-stop(100%,#0c0c0c));background:-webkit-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-moz-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-ms-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-o-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:linear-gradient(to bottom,#2b2b2b 0,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_filter,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_info,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_processing{color:#333}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll{clear:both}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{-webkit-overflow-scrolling:touch}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th{vertical-align:middle}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}div[class*=ip-geo-block] .dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}div[class*=ip-geo-block] .dataTables_wrapper.no-footer div.dataTables_scrollBody>table,div[class*=ip-geo-block] .dataTables_wrapper.no-footer div.dataTables_scrollHead table.ip-geo-block-dataTable{border-bottom:none}div[class*=ip-geo-block] .dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){div[class*=ip-geo-block] .dataTables_wrapper .dataTables_info,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{float:none;text-align:center}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){div[class*=ip-geo-block] .dataTables_wrapper .dataTables_filter,div[class*=ip-geo-block] .dataTables_wrapper .dataTables_length{float:none;text-align:center}div[class*=ip-geo-block] .dataTables_wrapper .dataTables_filter{margin-top:.5em}}
-
-/*! Responsive 2.1.1
- * 2014-2016 SpryMedia Ltd - datatables.net/license
- */
-table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:#fff;border:2px solid #fff;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New',Courier,monospace;line-height:14px;content:'+';background-color:#31b131}table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.ip-geo-block-dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}table.ip-geo-block-dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.ip-geo-block-dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.ip-geo-block-dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.ip-geo-block-dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.ip-geo-block-dataTable.dtr-column>tbody>tr>td.control,table.ip-geo-block-dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.ip-geo-block-dataTable.dtr-column>tbody>tr>td.control:before,table.ip-geo-block-dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:#fff;border:2px solid #fff;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New',Courier,monospace;line-height:14px;content:'+';background-color:#31b131}table.ip-geo-block-dataTable.dtr-column>tbody>tr.parent td.control:before,table.ip-geo-block-dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.ip-geo-block-dataTable>tbody>tr.child{padding:.5em 1em}table.ip-geo-block-dataTable>tbody>tr.child:hover{background:0 0!important}table.ip-geo-block-dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.ip-geo-block-dataTable>tbody>tr.child ul.dtr-details li{border-bottom:1px solid #efefef;padding:.5em 0}table.ip-geo-block-dataTable>tbody>tr.child ul.dtr-details li:first-child{padding-top:0}table.ip-geo-block-dataTable>tbody>tr.child ul.dtr-details li:last-child{border-bottom:none}table.ip-geo-block-dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;box-shadow:0 12px 30px rgba(0,0,0,.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){div.dtr-modal div.dtr-modal-display{width:95%}}
-
-/*! datatables.mark.js v2.0.1
- * Copyright (c) 2016-2017 Julian Motz
- * https://github.com/julmot/datatables.mark.js/blob/master/LICENSE
- */
-mark{background:orange;color:#000}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables.mark.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables.mark.css
deleted file mode 100644
index 15046205..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables.mark.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*! datatables.mark.js v2.0.1
- * Copyright (c) 2016–2017 Julian Motz
- * https://github.com/julmot/datatables.mark.js/blob/master/LICENSE
- */
-
-mark {
- background: orange;
- color: black;
-}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables.mark.min.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables.mark.min.css
deleted file mode 100644
index 722870b7..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/datatables.mark.min.css
+++ /dev/null
@@ -1 +0,0 @@
-mark{background:orange;color:black;}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/jquery.dataTables.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/jquery.dataTables.css
deleted file mode 100644
index 8235019d..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/jquery.dataTables.css
+++ /dev/null
@@ -1,449 +0,0 @@
-/*! DataTables 1.10.16
- * 2008-2017 SpryMedia Ltd - datatables.net/license
- */
-
-table.dataTable {
- width: 100%;
- margin: 0 auto;
- clear: both;
- border-collapse: separate;
- border-spacing: 0;
- /*
- * Header and footer styles
- */
- /*
- * Body styles
- */
-}
-table.dataTable thead th,
-table.dataTable tfoot th {
- font-weight: bold;
-}
-table.dataTable thead th,
-table.dataTable thead td {
- padding: 10px 18px;
- border-bottom: 1px solid #111;
-}
-table.dataTable thead th:active,
-table.dataTable thead td:active {
- outline: none;
-}
-table.dataTable tfoot th,
-table.dataTable tfoot td {
- padding: 10px 18px 6px 18px;
- border-top: 1px solid #111;
-}
-table.dataTable thead .sorting,
-table.dataTable thead .sorting_asc,
-table.dataTable thead .sorting_desc,
-table.dataTable thead .sorting_asc_disabled,
-table.dataTable thead .sorting_desc_disabled {
- cursor: pointer;
- *cursor: hand;
- background-repeat: no-repeat;
- background-position: center right;
-}
-table.dataTable thead .sorting {
- background-image: url("../images/sort_both.png");
-}
-table.dataTable thead .sorting_asc {
- background-image: url("../images/sort_asc.png");
-}
-table.dataTable thead .sorting_desc {
- background-image: url("../images/sort_desc.png");
-}
-table.dataTable thead .sorting_asc_disabled {
- background-image: url("../images/sort_asc_disabled.png");
-}
-table.dataTable thead .sorting_desc_disabled {
- background-image: url("../images/sort_desc_disabled.png");
-}
-table.dataTable tbody tr {
- background-color: #ffffff;
-}
-table.dataTable tbody tr.selected {
- background-color: #B0BED9;
-}
-table.dataTable tbody th,
-table.dataTable tbody td {
- padding: 8px 10px;
-}
-table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
- border-top: 1px solid #ddd;
-}
-table.dataTable.row-border tbody tr:first-child th,
-table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
-table.dataTable.display tbody tr:first-child td {
- border-top: none;
-}
-table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
- border-top: 1px solid #ddd;
- border-right: 1px solid #ddd;
-}
-table.dataTable.cell-border tbody tr th:first-child,
-table.dataTable.cell-border tbody tr td:first-child {
- border-left: 1px solid #ddd;
-}
-table.dataTable.cell-border tbody tr:first-child th,
-table.dataTable.cell-border tbody tr:first-child td {
- border-top: none;
-}
-table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
- background-color: #f9f9f9;
-}
-table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
- background-color: #acbad4;
-}
-table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
- background-color: #f6f6f6;
-}
-table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
- background-color: #aab7d1;
-}
-table.dataTable.order-column tbody tr > .sorting_1,
-table.dataTable.order-column tbody tr > .sorting_2,
-table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
-table.dataTable.display tbody tr > .sorting_2,
-table.dataTable.display tbody tr > .sorting_3 {
- background-color: #fafafa;
-}
-table.dataTable.order-column tbody tr.selected > .sorting_1,
-table.dataTable.order-column tbody tr.selected > .sorting_2,
-table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
-table.dataTable.display tbody tr.selected > .sorting_2,
-table.dataTable.display tbody tr.selected > .sorting_3 {
- background-color: #acbad5;
-}
-table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
- background-color: #f1f1f1;
-}
-table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
- background-color: #f3f3f3;
-}
-table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
- background-color: whitesmoke;
-}
-table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
- background-color: #a6b4cd;
-}
-table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
- background-color: #a8b5cf;
-}
-table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
- background-color: #a9b7d1;
-}
-table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
- background-color: #fafafa;
-}
-table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
- background-color: #fcfcfc;
-}
-table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
- background-color: #fefefe;
-}
-table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
- background-color: #acbad5;
-}
-table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
- background-color: #aebcd6;
-}
-table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
- background-color: #afbdd8;
-}
-table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
- background-color: #eaeaea;
-}
-table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
- background-color: #ececec;
-}
-table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
- background-color: #efefef;
-}
-table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
- background-color: #a2aec7;
-}
-table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
- background-color: #a3b0c9;
-}
-table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
- background-color: #a5b2cb;
-}
-table.dataTable.no-footer {
- border-bottom: 1px solid #111;
-}
-table.dataTable.nowrap th, table.dataTable.nowrap td {
- white-space: nowrap;
-}
-table.dataTable.compact thead th,
-table.dataTable.compact thead td {
- padding: 4px 17px 4px 4px;
-}
-table.dataTable.compact tfoot th,
-table.dataTable.compact tfoot td {
- padding: 4px;
-}
-table.dataTable.compact tbody th,
-table.dataTable.compact tbody td {
- padding: 4px;
-}
-table.dataTable th.dt-left,
-table.dataTable td.dt-left {
- text-align: left;
-}
-table.dataTable th.dt-center,
-table.dataTable td.dt-center,
-table.dataTable td.dataTables_empty {
- text-align: center;
-}
-table.dataTable th.dt-right,
-table.dataTable td.dt-right {
- text-align: right;
-}
-table.dataTable th.dt-justify,
-table.dataTable td.dt-justify {
- text-align: justify;
-}
-table.dataTable th.dt-nowrap,
-table.dataTable td.dt-nowrap {
- white-space: nowrap;
-}
-table.dataTable thead th.dt-head-left,
-table.dataTable thead td.dt-head-left,
-table.dataTable tfoot th.dt-head-left,
-table.dataTable tfoot td.dt-head-left {
- text-align: left;
-}
-table.dataTable thead th.dt-head-center,
-table.dataTable thead td.dt-head-center,
-table.dataTable tfoot th.dt-head-center,
-table.dataTable tfoot td.dt-head-center {
- text-align: center;
-}
-table.dataTable thead th.dt-head-right,
-table.dataTable thead td.dt-head-right,
-table.dataTable tfoot th.dt-head-right,
-table.dataTable tfoot td.dt-head-right {
- text-align: right;
-}
-table.dataTable thead th.dt-head-justify,
-table.dataTable thead td.dt-head-justify,
-table.dataTable tfoot th.dt-head-justify,
-table.dataTable tfoot td.dt-head-justify {
- text-align: justify;
-}
-table.dataTable thead th.dt-head-nowrap,
-table.dataTable thead td.dt-head-nowrap,
-table.dataTable tfoot th.dt-head-nowrap,
-table.dataTable tfoot td.dt-head-nowrap {
- white-space: nowrap;
-}
-table.dataTable tbody th.dt-body-left,
-table.dataTable tbody td.dt-body-left {
- text-align: left;
-}
-table.dataTable tbody th.dt-body-center,
-table.dataTable tbody td.dt-body-center {
- text-align: center;
-}
-table.dataTable tbody th.dt-body-right,
-table.dataTable tbody td.dt-body-right {
- text-align: right;
-}
-table.dataTable tbody th.dt-body-justify,
-table.dataTable tbody td.dt-body-justify {
- text-align: justify;
-}
-table.dataTable tbody th.dt-body-nowrap,
-table.dataTable tbody td.dt-body-nowrap {
- white-space: nowrap;
-}
-
-table.dataTable,
-table.dataTable th,
-table.dataTable td {
- box-sizing: content-box;
-}
-
-/*
- * Control feature layout
- */
-.dataTables_wrapper {
- position: relative;
- clear: both;
- *zoom: 1;
- zoom: 1;
-}
-.dataTables_wrapper .dataTables_length {
- float: left;
-}
-.dataTables_wrapper .dataTables_filter {
- float: right;
- text-align: right;
-}
-.dataTables_wrapper .dataTables_filter input {
- margin-left: 0.5em;
-}
-.dataTables_wrapper .dataTables_info {
- clear: both;
- float: left;
- padding-top: 0.755em;
-}
-.dataTables_wrapper .dataTables_paginate {
- float: right;
- text-align: right;
- padding-top: 0.25em;
-}
-.dataTables_wrapper .dataTables_paginate .paginate_button {
- box-sizing: border-box;
- display: inline-block;
- min-width: 1.5em;
- padding: 0.5em 1em;
- margin-left: 2px;
- text-align: center;
- text-decoration: none !important;
- cursor: pointer;
- *cursor: hand;
- color: #333 !important;
- border: 1px solid transparent;
- border-radius: 2px;
-}
-.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
- color: #333 !important;
- border: 1px solid #979797;
- background-color: white;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* Chrome10+,Safari5.1+ */
- background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* FF3.6+ */
- background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* IE10+ */
- background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
- /* Opera 11.10+ */
- background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
- /* W3C */
-}
-.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
- cursor: default;
- color: #666 !important;
- border: 1px solid transparent;
- background: transparent;
- box-shadow: none;
-}
-.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
- color: white !important;
- border: 1px solid #111;
- background-color: #585858;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
- /* Chrome10+,Safari5.1+ */
- background: -moz-linear-gradient(top, #585858 0%, #111 100%);
- /* FF3.6+ */
- background: -ms-linear-gradient(top, #585858 0%, #111 100%);
- /* IE10+ */
- background: -o-linear-gradient(top, #585858 0%, #111 100%);
- /* Opera 11.10+ */
- background: linear-gradient(to bottom, #585858 0%, #111 100%);
- /* W3C */
-}
-.dataTables_wrapper .dataTables_paginate .paginate_button:active {
- outline: none;
- background-color: #2b2b2b;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* Chrome10+,Safari5.1+ */
- background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* FF3.6+ */
- background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* IE10+ */
- background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
- /* Opera 11.10+ */
- background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
- /* W3C */
- box-shadow: inset 0 0 3px #111;
-}
-.dataTables_wrapper .dataTables_paginate .ellipsis {
- padding: 0 1em;
-}
-.dataTables_wrapper .dataTables_processing {
- position: absolute;
- top: 50%;
- left: 50%;
- width: 100%;
- height: 40px;
- margin-left: -50%;
- margin-top: -25px;
- padding-top: 20px;
- text-align: center;
- font-size: 1.2em;
- background-color: white;
- background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
- background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
- background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
-}
-.dataTables_wrapper .dataTables_length,
-.dataTables_wrapper .dataTables_filter,
-.dataTables_wrapper .dataTables_info,
-.dataTables_wrapper .dataTables_processing,
-.dataTables_wrapper .dataTables_paginate {
- color: #333;
-}
-.dataTables_wrapper .dataTables_scroll {
- clear: both;
-}
-.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
- *margin-top: -1px;
- -webkit-overflow-scrolling: touch;
-}
-.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
- vertical-align: middle;
-}
-.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
-.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
-.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
- height: 0;
- overflow: hidden;
- margin: 0 !important;
- padding: 0 !important;
-}
-.dataTables_wrapper.no-footer .dataTables_scrollBody {
- border-bottom: 1px solid #111;
-}
-.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
-.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
- border-bottom: none;
-}
-.dataTables_wrapper:after {
- visibility: hidden;
- display: block;
- content: "";
- clear: both;
- height: 0;
-}
-
-@media screen and (max-width: 767px) {
- .dataTables_wrapper .dataTables_info,
- .dataTables_wrapper .dataTables_paginate {
- float: none;
- text-align: center;
- }
- .dataTables_wrapper .dataTables_paginate {
- margin-top: 0.5em;
- }
-}
-@media screen and (max-width: 640px) {
- .dataTables_wrapper .dataTables_length,
- .dataTables_wrapper .dataTables_filter {
- float: none;
- text-align: center;
- }
- .dataTables_wrapper .dataTables_filter {
- margin-top: 0.5em;
- }
-}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/jquery.dataTables.min.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/jquery.dataTables.min.css
deleted file mode 100644
index 6565b406..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/jquery.dataTables.min.css
+++ /dev/null
@@ -1 +0,0 @@
-table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/responsive.dataTables.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/responsive.dataTables.css
deleted file mode 100644
index d9f36e94..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/responsive.dataTables.css
+++ /dev/null
@@ -1,182 +0,0 @@
-/*! Responsive 2.1.1
- * 2014-2016 SpryMedia Ltd - datatables.net/license
- */
-
-table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
-table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
-table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
- cursor: default !important;
-}
-table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
-table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
-table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
- display: none !important;
-}
-table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child,
-table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child {
- position: relative;
- padding-left: 30px;
- cursor: pointer;
-}
-table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before,
-table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before {
- top: 9px;
- left: 4px;
- height: 14px;
- width: 14px;
- display: block;
- position: absolute;
- color: white;
- border: 2px solid white;
- border-radius: 14px;
- box-shadow: 0 0 3px #444;
- box-sizing: content-box;
- text-align: center;
- font-family: 'Courier New', Courier, monospace;
- line-height: 14px;
- content: '+';
- background-color: #31b131;
-}
-table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
-table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
- content: '-';
- background-color: #d33333;
-}
-table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before {
- display: none;
-}
-table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
-table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
- padding-left: 27px;
-}
-table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
-table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
- top: 5px;
- left: 4px;
- height: 14px;
- width: 14px;
- border-radius: 14px;
- line-height: 14px;
- text-indent: 3px;
-}
-table.dataTable.dtr-column > tbody > tr > td.control,
-table.dataTable.dtr-column > tbody > tr > th.control {
- position: relative;
- cursor: pointer;
-}
-table.dataTable.dtr-column > tbody > tr > td.control:before,
-table.dataTable.dtr-column > tbody > tr > th.control:before {
- top: 50%;
- left: 50%;
- height: 16px;
- width: 16px;
- margin-top: -10px;
- margin-left: -10px;
- display: block;
- position: absolute;
- color: white;
- border: 2px solid white;
- border-radius: 14px;
- box-shadow: 0 0 3px #444;
- box-sizing: content-box;
- text-align: center;
- font-family: 'Courier New', Courier, monospace;
- line-height: 14px;
- content: '+';
- background-color: #31b131;
-}
-table.dataTable.dtr-column > tbody > tr.parent td.control:before,
-table.dataTable.dtr-column > tbody > tr.parent th.control:before {
- content: '-';
- background-color: #d33333;
-}
-table.dataTable > tbody > tr.child {
- padding: 0.5em 1em;
-}
-table.dataTable > tbody > tr.child:hover {
- background: transparent !important;
-}
-table.dataTable > tbody > tr.child ul.dtr-details {
- display: inline-block;
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-table.dataTable > tbody > tr.child ul.dtr-details li {
- border-bottom: 1px solid #efefef;
- padding: 0.5em 0;
-}
-table.dataTable > tbody > tr.child ul.dtr-details li:first-child {
- padding-top: 0;
-}
-table.dataTable > tbody > tr.child ul.dtr-details li:last-child {
- border-bottom: none;
-}
-table.dataTable > tbody > tr.child span.dtr-title {
- display: inline-block;
- min-width: 75px;
- font-weight: bold;
-}
-
-div.dtr-modal {
- position: fixed;
- box-sizing: border-box;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
- z-index: 100;
- padding: 10em 1em;
-}
-div.dtr-modal div.dtr-modal-display {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- width: 50%;
- height: 50%;
- overflow: auto;
- margin: auto;
- z-index: 102;
- overflow: auto;
- background-color: #f5f5f7;
- border: 1px solid black;
- border-radius: 0.5em;
- box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
-}
-div.dtr-modal div.dtr-modal-content {
- position: relative;
- padding: 1em;
-}
-div.dtr-modal div.dtr-modal-close {
- position: absolute;
- top: 6px;
- right: 6px;
- width: 22px;
- height: 22px;
- border: 1px solid #eaeaea;
- background-color: #f9f9f9;
- text-align: center;
- border-radius: 3px;
- cursor: pointer;
- z-index: 12;
-}
-div.dtr-modal div.dtr-modal-close:hover {
- background-color: #eaeaea;
-}
-div.dtr-modal div.dtr-modal-background {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- z-index: 101;
- background: rgba(0, 0, 0, 0.6);
-}
-
-@media screen and (max-width: 767px) {
- div.dtr-modal div.dtr-modal-display {
- width: 95%;
- }
-}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/responsive.dataTables.min.css b/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/responsive.dataTables.min.css
deleted file mode 100644
index db2f7d9c..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/css/responsive.dataTables.min.css
+++ /dev/null
@@ -1 +0,0 @@
-table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/Sorting icons.psd b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/Sorting icons.psd
deleted file mode 100644
index 53b2e068..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/Sorting icons.psd and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/favicon.ico b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/favicon.ico
deleted file mode 100644
index 6eeaa2a0..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/favicon.ico and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_asc.png b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_asc.png
deleted file mode 100644
index 5381d92d..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_asc.png and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_asc_disabled.png b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_asc_disabled.png
deleted file mode 100644
index f9c80eec..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_asc_disabled.png and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_both.png b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_both.png
deleted file mode 100644
index c4fbedfe..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_both.png and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_desc.png b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_desc.png
deleted file mode 100644
index 9c9601f1..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_desc.png and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_desc_disabled.png b/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_desc_disabled.png
deleted file mode 100644
index 49843662..00000000
Binary files a/wp/wp-content/plugins/ip-geo-block/admin/datatables/images/sort_desc_disabled.png and /dev/null differ
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/js/LICENSE b/wp/wp-content/plugins/ip-geo-block/admin/datatables/js/LICENSE
deleted file mode 100644
index 605df390..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/js/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016–2017 Julian Motz
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/wp/wp-content/plugins/ip-geo-block/admin/datatables/js/dataTables.responsive.js b/wp/wp-content/plugins/ip-geo-block/admin/datatables/js/dataTables.responsive.js
deleted file mode 100644
index 4abce0bd..00000000
--- a/wp/wp-content/plugins/ip-geo-block/admin/datatables/js/dataTables.responsive.js
+++ /dev/null
@@ -1,1255 +0,0 @@
-/*! Responsive 2.1.1
- * 2014-2016 SpryMedia Ltd - datatables.net/license
- */
-
-/**
- * @summary Responsive
- * @description Responsive tables plug-in for DataTables
- * @version 2.1.1
- * @file dataTables.responsive.js
- * @author SpryMedia Ltd (www.sprymedia.co.uk)
- * @contact www.sprymedia.co.uk/contact
- * @copyright Copyright 2014-2016 SpryMedia Ltd.
- *
- * This source file is free software, available under the following license:
- * MIT license - https://datatables.net/license/mit
- *
- * This source file is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
- *
- * For details please refer to: https://www.datatables.net
- */
-(function( factory ){
- if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( ['jquery', 'datatables.net'], function ( $ ) {
- return factory( $, window, document );
- } );
- }
- else if ( typeof exports === 'object' ) {
- // CommonJS
- module.exports = function (root, $) {
- if ( ! root ) {
- root = window;
- }
-
- if ( ! $ || ! $.fn.dataTable ) {
- $ = require('datatables.net')(root, $).$;
- }
-
- return factory( $, root, root.document );
- };
- }
- else {
- // Browser
- factory( jQuery, window, document );
- }
-}(function( $, window, document, undefined ) {
-'use strict';
-var DataTable = $.fn.dataTable;
-
-
-/**
- * Responsive is a plug-in for the DataTables library that makes use of
- * DataTables' ability to change the visibility of columns, changing the
- * visibility of columns so the displayed columns fit into the table container.
- * The end result is that complex tables will be dynamically adjusted to fit
- * into the viewport, be it on a desktop, tablet or mobile browser.
- *
- * Responsive for DataTables has two modes of operation, which can used
- * individually or combined:
- *
- * * Class name based control - columns assigned class names that match the
- * breakpoint logic can be shown / hidden as required for each breakpoint.
- * * Automatic control - columns are automatically hidden when there is no
- * room left to display them. Columns removed from the right.
- *
- * In additional to column visibility control, Responsive also has built into
- * options to use DataTables' child row display to show / hide the information
- * from the table that has been hidden. There are also two modes of operation
- * for this child row display:
- *
- * * Inline - when the control element that the user can use to show / hide
- * child rows is displayed inside the first column of the table.
- * * Column - where a whole column is dedicated to be the show / hide control.
- *
- * Initialisation of Responsive is performed by:
- *
- * * Adding the class `responsive` or `dt-responsive` to the table. In this case
- * Responsive will automatically be initialised with the default configuration
- * options when the DataTable is created.
- * * Using the `responsive` option in the DataTables configuration options. This
- * can also be used to specify the configuration options, or simply set to
- * `true` to use the defaults.
- *
- * @class
- * @param {object} settings DataTables settings object for the host table
- * @param {object} [opts] Configuration options
- * @requires jQuery 1.7+
- * @requires DataTables 1.10.3+
- *
- * @example
- * $('#example').DataTable( {
- * responsive: true
- * } );
- * } );
- */
-var Responsive = function ( settings, opts ) {
- // Sanity check that we are using DataTables 1.10 or newer
- if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.3' ) ) {
- throw 'DataTables Responsive requires DataTables 1.10.3 or newer';
- }
-
- this.s = {
- dt: new DataTable.Api( settings ),
- columns: [],
- current: []
- };
-
- // Check if responsive has already been initialised on this table
- if ( this.s.dt.settings()[0].responsive ) {
- return;
- }
-
- // details is an object, but for simplicity the user can give it as a string
- // or a boolean
- if ( opts && typeof opts.details === 'string' ) {
- opts.details = { type: opts.details };
- }
- else if ( opts && opts.details === false ) {
- opts.details = { type: false };
- }
- else if ( opts && opts.details === true ) {
- opts.details = { type: 'inline' };
- }
-
- this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts );
- settings.responsive = this;
- this._constructor();
-};
-
-$.extend( Responsive.prototype, {
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Constructor
- */
-
- /**
- * Initialise the Responsive instance
- *
- * @private
- */
- _constructor: function ()
- {
- var that = this;
- var dt = this.s.dt;
- var dtPrivateSettings = dt.settings()[0];
- var oldWindowWidth = $(window).width();
-
- dt.settings()[0]._responsive = this;
-
- // Use DataTables' throttle function to avoid processor thrashing on
- // resize
- $(window).on( 'resize.dtr orientationchange.dtr', DataTable.util.throttle( function () {
- // iOS has a bug whereby resize can fire when only scrolling
- // See: https://stackoverflow.com/questions/8898412
- var width = $(window).width();
-
- if ( width !== oldWindowWidth ) {
- that._resize();
- oldWindowWidth = width;
- }
- } ) );
-
- // DataTables doesn't currently trigger an event when a row is added, so
- // we need to hook into its private API to enforce the hidden rows when
- // new data is added
- dtPrivateSettings.oApi._fnCallbackReg( dtPrivateSettings, 'aoRowCreatedCallback', function (tr, data, idx) {
- if ( $.inArray( false, that.s.current ) !== -1 ) {
- $('>td, >th', tr).each( function ( i ) {
- var idx = dt.column.index( 'toData', i );
-
- if ( that.s.current[idx] === false ) {
- $(this).css('display', 'none');
- }
- } );
- }
- } );
-
- // Destroy event handler
- dt.on( 'destroy.dtr', function () {
- dt.off( '.dtr' );
- $( dt.table().body() ).off( '.dtr' );
- $(window).off( 'resize.dtr orientationchange.dtr' );
-
- // Restore the columns that we've hidden
- $.each( that.s.current, function ( i, val ) {
- if ( val === false ) {
- that._setColumnVis( i, true );
- }
- } );
- } );
-
- // Reorder the breakpoints array here in case they have been added out
- // of order
- this.c.breakpoints.sort( function (a, b) {
- return a.width < b.width ? 1 :
- a.width > b.width ? -1 : 0;
- } );
-
- this._classLogic();
- this._resizeAuto();
-
- // Details handler
- var details = this.c.details;
-
- if ( details.type !== false ) {
- that._detailsInit();
-
- // DataTables will trigger this event on every column it shows and
- // hides individually
- dt.on( 'column-visibility.dtr', function (e, ctx, col, vis) {
- that._classLogic();
- that._resizeAuto();
- that._resize();
- } );
-
- // Redraw the details box on each draw which will happen if the data
- // has changed. This is used until DataTables implements a native
- // `updated` event for rows
- dt.on( 'draw.dtr', function () {
- that._redrawChildren();
- } );
-
- $(dt.table().node()).addClass( 'dtr-'+details.type );
- }
-
- dt.on( 'column-reorder.dtr', function (e, settings, details) {
- that._classLogic();
- that._resizeAuto();
- that._resize();
- } );
-
- // Change in column sizes means we need to calc
- dt.on( 'column-sizing.dtr', function () {
- that._resizeAuto();
- that._resize();
- });
-
- // On Ajax reload we want to reopen any child rows which are displayed
- // by responsive
- dt.on( 'preXhr.dtr', function () {
- var rowIds = [];
- dt.rows().every( function () {
- if ( this.child.isShown() ) {
- rowIds.push( this.id(true) );
- }
- } );
-
- dt.one( 'draw.dtr', function () {
- dt.rows( rowIds ).every( function () {
- that._detailsDisplay( this, false );
- } );
- } );
- });
-
- dt.on( 'init.dtr', function (e, settings, details) {
- that._resizeAuto();
- that._resize();
-
- // If columns were hidden, then DataTables needs to adjust the
- // column sizing
- if ( $.inArray( false, that.s.current ) ) {
- dt.columns.adjust();
- }
- } );
-
- // First pass - draw the table for the current viewport size
- this._resize();
- },
-
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Private methods
- */
-
- /**
- * Calculate the visibility for the columns in a table for a given
- * breakpoint. The result is pre-determined based on the class logic if
- * class names are used to control all columns, but the width of the table
- * is also used if there are columns which are to be automatically shown
- * and hidden.
- *
- * @param {string} breakpoint Breakpoint name to use for the calculation
- * @return {array} Array of boolean values initiating the visibility of each
- * column.
- * @private
- */
- _columnsVisiblity: function ( breakpoint )
- {
- var dt = this.s.dt;
- var columns = this.s.columns;
- var i, ien;
-
- // Create an array that defines the column ordering based first on the
- // column's priority, and secondly the column index. This allows the
- // columns to be removed from the right if the priority matches
- var order = columns
- .map( function ( col, idx ) {
- return {
- columnIdx: idx,
- priority: col.priority
- };
- } )
- .sort( function ( a, b ) {
- if ( a.priority !== b.priority ) {
- return a.priority - b.priority;
- }
- return a.columnIdx - b.columnIdx;
- } );
-
- // Class logic - determine which columns are in this breakpoint based
- // on the classes. If no class control (i.e. `auto`) then `-` is used
- // to indicate this to the rest of the function
- var display = $.map( columns, function ( col ) {
- return col.auto && col.minWidth === null ?
- false :
- col.auto === true ?
- '-' :
- $.inArray( breakpoint, col.includeIn ) !== -1;
- } );
-
- // Auto column control - first pass: how much width is taken by the
- // ones that must be included from the non-auto columns
- var requiredWidth = 0;
- for ( i=0, ien=display.length ; i