Version Description
- Added notification for Modula 2.0
- Added Compatibility with AO
Download this release
Release Info
Developer | machothemes |
Plugin | ![]() |
Version | 1.3.3 |
Comparing to | |
See all releases |
Code changes from version 1.3.2 to 1.3.3
- Modula.php +156 -5
- README.txt +21 -1
- admin/css/materialdesignicons.css +0 -0
- admin/fancybox/jquery.fancybox.css +771 -0
- admin/fancybox/jquery.fancybox.js +5629 -0
- admin/fancybox/jquery.fancybox.min.css +1 -0
- admin/fancybox/jquery.fancybox.min.js +13 -0
- admin/font/material-design-icons/license.txt +0 -0
- admin/font/material-design-icons/materialdesignicons-webfont.eot +0 -0
- admin/font/material-design-icons/materialdesignicons-webfont.svg +0 -0
- admin/font/material-design-icons/materialdesignicons-webfont.ttf +0 -0
- admin/font/material-design-icons/materialdesignicons-webfont.woff +0 -0
- admin/font/material-design-icons/materialdesignicons-webfont.woff2 +0 -0
- admin/font/roboto/Roboto-Bold-webfont.eot +0 -0
- admin/font/roboto/Roboto-Bold-webfont.svg +0 -0
- admin/font/roboto/Roboto-Bold-webfont.ttf +0 -0
- admin/font/roboto/Roboto-Bold-webfont.woff +0 -0
- admin/font/roboto/Roboto-Light-webfont.eot +0 -0
- admin/font/roboto/Roboto-Light-webfont.svg +0 -0
- admin/font/roboto/Roboto-Light-webfont.ttf +0 -0
- admin/font/roboto/Roboto-Light-webfont.woff +0 -0
- admin/font/roboto/Roboto-Regular-webfont.eot +0 -0
- admin/font/roboto/Roboto-Regular-webfont.svg +0 -0
- admin/font/roboto/Roboto-Regular-webfont.ttf +0 -0
- admin/font/roboto/Roboto-Regular-webfont.woff +0 -0
- admin/images/captions-settings.jpg +0 -0
- admin/images/creative-gallery-settings.jpg +0 -0
- admin/images/custom-grid-settings.jpg +0 -0
- admin/images/customizations-settings.jpg +0 -0
- admin/images/drag-and-drop-upload.jpg +0 -0
- admin/images/galleries-list.jpg +0 -0
- admin/images/gallery-edit.jpg +0 -0
- admin/images/helper-grid.jpg +0 -0
- admin/images/hover-effects-settings.jpg +0 -0
- admin/images/landscape-portrait.jpg +0 -0
- admin/images/live-preview.jpg +0 -0
- admin/images/loading-effects-settings.jpg +0 -0
- admin/images/modula-v2-custom-grid.png +0 -0
- admin/images/modula-v2-drag-and-drop-upload.png +0 -0
- admin/images/modula-v2-familiar-dashboard.png +0 -0
- admin/images/modula-v2-helper-grid.png +0 -0
- admin/images/modula-v2-intuitive-settings.png +0 -0
- admin/images/modula-v2-landscape-or-portrait.png +0 -0
- admin/images/modula-v2-live-preview.png +0 -0
- admin/images/modula.svg +48 -0
- admin/images/social-settings.jpg +0 -0
- admin/images/style-settings.jpg +0 -0
- admin/modula-v2.php +99 -0
- admin/welcome-screen/sections/modula-v2.php +11 -0
- lib/class-modula-plugin-rollback.php +71 -0
- lib/class-modula-review.php +177 -0
- lib/class-modula-rollback.php +178 -0
- lib/install-db.php +1 -3
- scripts/rollback.js +11 -0
Modula.php
CHANGED
@@ -5,13 +5,18 @@
|
|
5 |
* Description: Modula is one of the best & most creative WordPress gallery plugins. Use it to create a great grid or
|
6 |
* masonry image gallery.
|
7 |
* Author: Macho Themes
|
8 |
-
* Version: 1.3.
|
9 |
* Author URI: https://www.machothemes.com/
|
10 |
*/
|
11 |
|
12 |
define( 'MODULA_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) );
|
13 |
define( 'MODULA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
|
14 |
|
|
|
|
|
|
|
|
|
|
|
15 |
function modula_lite_create_db_tables() {
|
16 |
include_once( WP_PLUGIN_DIR . '/modula-best-grid-gallery/lib/install-db.php' );
|
17 |
modula_lite_install_db();
|
@@ -23,7 +28,7 @@ if ( ! class_exists( "ModulaLite" ) ) {
|
|
23 |
private $loadedData;
|
24 |
private $fields = array();
|
25 |
|
26 |
-
private $version = "1.3.
|
27 |
|
28 |
private $defaultValues = array(
|
29 |
'width' => 100,
|
@@ -109,6 +114,9 @@ if ( ! class_exists( "ModulaLite" ) ) {
|
|
109 |
add_filter( 'plugin_row_meta', array( $this, 'register_links' ), 10, 2 );
|
110 |
add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
|
111 |
|
|
|
|
|
|
|
112 |
|
113 |
// Set fields
|
114 |
$this->fields[ __( 'General', 'modula-gallery' ) ] = array(
|
@@ -454,6 +462,17 @@ if ( ! class_exists( "ModulaLite" ) ) {
|
|
454 |
|
455 |
}
|
456 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
457 |
//Define textdomain
|
458 |
public function create_textdomain() {
|
459 |
$plugin_dir = basename( dirname( __FILE__ ) );
|
@@ -875,6 +894,10 @@ if ( ! class_exists( "ModulaLite" ) ) {
|
|
875 |
$this,
|
876 |
'upgrade',
|
877 |
) );
|
|
|
|
|
|
|
|
|
878 |
|
879 |
|
880 |
add_action( 'load-' . $overview, array( $this, 'gallery_admin_init' ) );
|
@@ -897,6 +920,10 @@ if ( ! class_exists( "ModulaLite" ) ) {
|
|
897 |
include( "admin/add-gallery.php" );
|
898 |
}
|
899 |
|
|
|
|
|
|
|
|
|
900 |
public function fix() {
|
901 |
global $wpdb;
|
902 |
include( "admin/fix.php" );
|
@@ -1252,8 +1279,9 @@ class ModulaLiteTools {
|
|
1252 |
$metadata = wp_get_attachment_metadata( $img->imageId );
|
1253 |
|
1254 |
if ( $img->imageId > 0 ) {
|
1255 |
-
$
|
1256 |
-
$
|
|
|
1257 |
$res_name = ModulaLiteTools::resize_image( $img->imageId, $size );
|
1258 |
|
1259 |
if ( ! ( array_key_exists( "image_meta", $metadata ) && array_key_exists( "resized_images", $metadata["image_meta"] ) && in_array( $size . "x" . $size, $metadata["image_meta"]["resized_images"] ) ) ) {
|
@@ -1278,4 +1306,127 @@ if ( class_exists( "ModulaLite" ) ) {
|
|
1278 |
global $ob_ModulaLite;
|
1279 |
$ob_ModulaLite = new ModulaLite();
|
1280 |
}
|
1281 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
* Description: Modula is one of the best & most creative WordPress gallery plugins. Use it to create a great grid or
|
6 |
* masonry image gallery.
|
7 |
* Author: Macho Themes
|
8 |
+
* Version: 1.3.3
|
9 |
* Author URI: https://www.machothemes.com/
|
10 |
*/
|
11 |
|
12 |
define( 'MODULA_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) );
|
13 |
define( 'MODULA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
|
14 |
|
15 |
+
define( 'MODULA_VERSION', '1.3.3' );
|
16 |
+
define( 'MODULA_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
17 |
+
define( 'MODULA_PREVIOUS_PLUGIN_VERSION', '1.3.2' );
|
18 |
+
define( 'MODULA_FILE_', __FILE__ );
|
19 |
+
|
20 |
function modula_lite_create_db_tables() {
|
21 |
include_once( WP_PLUGIN_DIR . '/modula-best-grid-gallery/lib/install-db.php' );
|
22 |
modula_lite_install_db();
|
28 |
private $loadedData;
|
29 |
private $fields = array();
|
30 |
|
31 |
+
private $version = "1.3.3";
|
32 |
|
33 |
private $defaultValues = array(
|
34 |
'width' => 100,
|
114 |
add_filter( 'plugin_row_meta', array( $this, 'register_links' ), 10, 2 );
|
115 |
add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
|
116 |
|
117 |
+
// Enqueue Fancybox for Modula 2.0 Page
|
118 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'modula_beta_scripts' ) );
|
119 |
+
|
120 |
|
121 |
// Set fields
|
122 |
$this->fields[ __( 'General', 'modula-gallery' ) ] = array(
|
462 |
|
463 |
}
|
464 |
|
465 |
+
public function modula_beta_scripts( $hook ) {
|
466 |
+
|
467 |
+
if ( 'modula_page_modula-lite-gallery-v2' != $hook ) {
|
468 |
+
return;
|
469 |
+
}
|
470 |
+
|
471 |
+
wp_enqueue_script( 'modula-fancybox', plugins_url() . '/modula-best-grid-gallery/admin/fancybox/jquery.fancybox.min.js', array( 'jquery' ) );
|
472 |
+
wp_enqueue_style( 'modula-fancybox', plugins_url() . '/modula-best-grid-gallery/admin/fancybox/jquery.fancybox.min.css' );
|
473 |
+
|
474 |
+
}
|
475 |
+
|
476 |
//Define textdomain
|
477 |
public function create_textdomain() {
|
478 |
$plugin_dir = basename( dirname( __FILE__ ) );
|
894 |
$this,
|
895 |
'upgrade',
|
896 |
) );
|
897 |
+
$v2 = add_submenu_page( 'modula-lite-admin', __( 'Try Modula 2.0', 'modula-gallery' ), __( 'Try Modula 2.0', 'modula-gallery' ), 'edit_posts', 'modula-lite-gallery-v2', array(
|
898 |
+
$this,
|
899 |
+
'new_modula',
|
900 |
+
) );
|
901 |
|
902 |
|
903 |
add_action( 'load-' . $overview, array( $this, 'gallery_admin_init' ) );
|
920 |
include( "admin/add-gallery.php" );
|
921 |
}
|
922 |
|
923 |
+
public function new_modula() {
|
924 |
+
include( "admin/modula-v2.php" );
|
925 |
+
}
|
926 |
+
|
927 |
public function fix() {
|
928 |
global $wpdb;
|
929 |
include( "admin/fix.php" );
|
1279 |
$metadata = wp_get_attachment_metadata( $img->imageId );
|
1280 |
|
1281 |
if ( $img->imageId > 0 ) {
|
1282 |
+
$uploads = wp_get_upload_dir();
|
1283 |
+
$file = get_post_meta( $img->imageId, '_wp_attached_file', true );
|
1284 |
+
$baseurl = $uploads['baseurl'] . '/' . str_replace( basename( $file ), "", $file );
|
1285 |
$res_name = ModulaLiteTools::resize_image( $img->imageId, $size );
|
1286 |
|
1287 |
if ( ! ( array_key_exists( "image_meta", $metadata ) && array_key_exists( "resized_images", $metadata["image_meta"] ) && in_array( $size . "x" . $size, $metadata["image_meta"]["resized_images"] ) ) ) {
|
1306 |
global $ob_ModulaLite;
|
1307 |
$ob_ModulaLite = new ModulaLite();
|
1308 |
}
|
1309 |
+
|
1310 |
+
function modula_lite_check_for_review() {
|
1311 |
+
|
1312 |
+
if ( ! is_admin() ) {
|
1313 |
+
return;
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
require_once MODULA_PLUGIN_DIR_PATH . 'lib/class-modula-review.php';
|
1317 |
+
|
1318 |
+
Modula_Review::get_instance( array(
|
1319 |
+
'slug' => 'modula-best-grid-gallery',
|
1320 |
+
'messages' => array(
|
1321 |
+
'notice' => __( "Hey, I noticed you have created %s galleries - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.<br><br><strong>~ Cristian Raiber</strong>,<br><strong>CEO Modula</strong>.", 'modula-gallery' ),
|
1322 |
+
'rate' => __( 'Ok, you deserve it', 'modula-gallery' ),
|
1323 |
+
'rated' => __( 'I already did', 'modula-gallery' ),
|
1324 |
+
'no_rate' => __( 'No, not good enough', 'modula-gallery' ),
|
1325 |
+
),
|
1326 |
+
) );
|
1327 |
+
|
1328 |
+
}
|
1329 |
+
modula_lite_check_for_review();
|
1330 |
+
|
1331 |
+
// Add compatibility with AO
|
1332 |
+
add_filter('autoptimize_filter_js_exclude','modula_lite_override_jsexclude',90,1);
|
1333 |
+
function modula_lite_override_jsexclude( $exclude ) {
|
1334 |
+
if ( is_array( $exclude ) ) {
|
1335 |
+
$exclude[] = 'jquery.modula.js';
|
1336 |
+
}else{
|
1337 |
+
$exclude .= ", jquery.modula.js";
|
1338 |
+
}
|
1339 |
+
return $exclude;
|
1340 |
+
}
|
1341 |
+
|
1342 |
+
// Beta Testing.
|
1343 |
+
add_action( 'admin_notices', 'modula_beta_notices' );
|
1344 |
+
add_action( 'wp_ajax_modula_beta_testing', 'modula_beta_ajax' );
|
1345 |
+
add_action( 'admin_print_footer_scripts', 'modula_beta_ajax_script', 99 );
|
1346 |
+
|
1347 |
+
function modula_beta_notices() {
|
1348 |
+
|
1349 |
+
$options = get_option( 'modula-checks', array() );
|
1350 |
+
|
1351 |
+
if ( isset( $options['beta-testing'] ) ) {
|
1352 |
+
return;
|
1353 |
+
}
|
1354 |
+
?>
|
1355 |
+
<style type="text/css">
|
1356 |
+
#modula-beta-testing-info {
|
1357 |
+
display: inline-block;
|
1358 |
+
margin-left: 15px;
|
1359 |
+
}
|
1360 |
+
</style>
|
1361 |
+
<div id="modula-beta-testing" class="notice notice-success is-dismissible">
|
1362 |
+
<h3>Try Modula 2.0 !!</h3>
|
1363 |
+
<p>We’ve been working on an awesome update to Modula over the last few months and can’t wait to release it to the public. But, before that can happen, we need the help of amazing users in the WordPress community (just like you) to improve Modula 2.0’s first beta.</p>
|
1364 |
+
<p class="actions">
|
1365 |
+
<a id="modula-beta-testing-dwn" href="https://machothemes.com/downloads/modula-2.0.0.zip" target="_blank" class="button button-primary modula-beta-testing-button"><?php echo __( 'Download Modula 2.0 Beta', 'modula-gallery' ); ?></a>
|
1366 |
+
<a id="modula-beta-testing-info" href="<?php echo admin_url( 'admin.php?page=modula-lite-gallery-v2' ) ?>" target="_blank" class="modula-beta-testing-button"><?php echo __( 'Find more', 'modula-gallery' ); ?></a>
|
1367 |
+
</p>
|
1368 |
+
</div>
|
1369 |
+
<?php
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
function modula_beta_ajax() {
|
1373 |
+
|
1374 |
+
check_ajax_referer( 'modula-beta-testing', 'security' );
|
1375 |
+
|
1376 |
+
$options = get_option( 'modula-checks', array() );
|
1377 |
+
$options['beta-testing'] = 1;
|
1378 |
+
|
1379 |
+
update_option( 'modula-checks', $options );
|
1380 |
+
|
1381 |
+
wp_die( 'ok' );
|
1382 |
+
|
1383 |
+
}
|
1384 |
+
|
1385 |
+
function modula_beta_ajax_script() {
|
1386 |
+
|
1387 |
+
$ajax_nonce = wp_create_nonce( "modula-beta-testing" );
|
1388 |
+
|
1389 |
+
?>
|
1390 |
+
|
1391 |
+
<script type="text/javascript">
|
1392 |
+
jQuery( document ).ready( function( $ ){
|
1393 |
+
|
1394 |
+
$( '.modula-beta-testing-button' ).click( function( evt ){
|
1395 |
+
var href = $(this).attr('href'),
|
1396 |
+
id = $(this).attr('id');
|
1397 |
+
|
1398 |
+
var data = {
|
1399 |
+
action: 'modula_beta_testing',
|
1400 |
+
security: '<?php echo $ajax_nonce; ?>',
|
1401 |
+
};
|
1402 |
+
|
1403 |
+
$.post( '<?php echo admin_url( 'admin-ajax.php' ) ?>', data, function( response ) {
|
1404 |
+
$( '#modula-beta-testing' ).slideUp( 'fast', function() {
|
1405 |
+
$( this ).remove();
|
1406 |
+
} );
|
1407 |
+
});
|
1408 |
+
|
1409 |
+
} );
|
1410 |
+
|
1411 |
+
});
|
1412 |
+
</script>
|
1413 |
+
|
1414 |
+
<?php
|
1415 |
+
}
|
1416 |
+
|
1417 |
+
/* RollBack functionality */
|
1418 |
+
require MODULA_PLUGIN_DIR_PATH . '/lib/class-modula-plugin-rollback.php';
|
1419 |
+
require MODULA_PLUGIN_DIR_PATH . '/lib/class-modula-rollback.php';
|
1420 |
+
|
1421 |
+
/**
|
1422 |
+
* Insert Rollback link for plugin in plugins page
|
1423 |
+
*/
|
1424 |
+
|
1425 |
+
function modula_lite_rollback_link( $links ) {
|
1426 |
+
|
1427 |
+
$links['rollback'] = sprintf( '<a href="%s" class="modula-rollback-button">%s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=modula_rollback' ), 'modula_rollback' ), __( 'Rollback version', 'modula-gallery' ) );
|
1428 |
+
|
1429 |
+
return $links;
|
1430 |
+
}
|
1431 |
+
|
1432 |
+
add_action( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'modula_lite_rollback_link' );
|
README.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: machothemes, silkalns
|
|
3 |
Tags: best gallery plugin, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, wordpress portfolio plugin, masonry gallery, fancy gallery, media gallery, mosaic gallery, polaroid gallery, portfolio gallery
|
4 |
Requires at least: 3.8
|
5 |
Tested up to: 4.9
|
6 |
-
Stable tag: 1.3.
|
7 |
License: GPLv3 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -13,6 +13,14 @@ Photo Gallery by Modula - an advanced solution for Photo Gallery users. Create b
|
|
13 |
|
14 |
Modula Image Gallery is a creative and original WordPress plugin perfect for creating custom, unique, and responsive image galleries. Modula is available in both a Lite/free version and a premium version and it is currently the easiest and fastest photo gallery plugin for WordPress. Directly from its dashboard you are able to build stunning galleries in a few seconds, unlike many other WordPress plugins.
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
= See a 60s video of Modula in action =
|
17 |
|
18 |
https://www.youtube.com/watch?v=tq8yUYxgtnA
|
@@ -135,6 +143,14 @@ If you get blurry and pixellated images then you need to raise the "Minimum imag
|
|
135 |
|
136 |
The PRO license bundles 6 different lightboxes. However you can use any other lightbox you want also with the Lite license. If you have installed a lightbox plugin then you just need to select "Direct link to image" in the "Lightbox" settings.
|
137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
= How can I get support? =
|
139 |
|
140 |
Free support is included only with a PRO license: [Buy Modula PRO](https://wp-modula.com/#buy "Buy Modula PRO")
|
@@ -157,6 +173,10 @@ Free support is included only with a PRO license: [Buy Modula PRO](https://wp-mo
|
|
157 |
|
158 |
== Changelog ==
|
159 |
|
|
|
|
|
|
|
|
|
160 |
= 1.3.2 =
|
161 |
* Validated HTML markup
|
162 |
|
3 |
Tags: best gallery plugin, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, wordpress portfolio plugin, masonry gallery, fancy gallery, media gallery, mosaic gallery, polaroid gallery, portfolio gallery
|
4 |
Requires at least: 3.8
|
5 |
Tested up to: 4.9
|
6 |
+
Stable tag: 1.3.3
|
7 |
License: GPLv3 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
13 |
|
14 |
Modula Image Gallery is a creative and original WordPress plugin perfect for creating custom, unique, and responsive image galleries. Modula is available in both a Lite/free version and a premium version and it is currently the easiest and fastest photo gallery plugin for WordPress. Directly from its dashboard you are able to build stunning galleries in a few seconds, unlike many other WordPress plugins.
|
15 |
|
16 |
+
= Try Modula 2.0 Beta =
|
17 |
+
|
18 |
+
We’ve been working on an awesome update to Modula over the last few months and can’t wait to release it to the public. But, before that can happen, we need the help of amazing users in the WordPress community (just like you) to improve Modula 2.0’s first beta. You can download our new plugin from <a href="https://machothemes.com/downloads/modula-2.0.0.zip" target="_blank">here</a>.
|
19 |
+
|
20 |
+
Below is a video that showcases the new features of Modula 2.0.
|
21 |
+
|
22 |
+
https://www.youtube.com/watch?v=NxrTXQNExh4
|
23 |
+
|
24 |
= See a 60s video of Modula in action =
|
25 |
|
26 |
https://www.youtube.com/watch?v=tq8yUYxgtnA
|
143 |
|
144 |
The PRO license bundles 6 different lightboxes. However you can use any other lightbox you want also with the Lite license. If you have installed a lightbox plugin then you just need to select "Direct link to image" in the "Lightbox" settings.
|
145 |
|
146 |
+
= How can I change the lightbox's background? =
|
147 |
+
|
148 |
+
You can change the lightbox popup background color using the following code:
|
149 |
+
|
150 |
+
`body .lg-backdrop {
|
151 |
+
background-color: white;
|
152 |
+
}`
|
153 |
+
|
154 |
= How can I get support? =
|
155 |
|
156 |
Free support is included only with a PRO license: [Buy Modula PRO](https://wp-modula.com/#buy "Buy Modula PRO")
|
173 |
|
174 |
== Changelog ==
|
175 |
|
176 |
+
= 1.3.3 =
|
177 |
+
* Added notification for Modula 2.0
|
178 |
+
* Added Compatibility with AO
|
179 |
+
|
180 |
= 1.3.2 =
|
181 |
* Validated HTML markup
|
182 |
|
admin/css/materialdesignicons.css
CHANGED
File without changes
|
admin/fancybox/jquery.fancybox.css
ADDED
@@ -0,0 +1,771 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body.compensate-for-scrollbar {
|
2 |
+
overflow: hidden; }
|
3 |
+
|
4 |
+
.fancybox-active {
|
5 |
+
height: auto; }
|
6 |
+
|
7 |
+
.fancybox-is-hidden {
|
8 |
+
left: -9999px;
|
9 |
+
margin: 0;
|
10 |
+
position: absolute !important;
|
11 |
+
top: -9999px;
|
12 |
+
visibility: hidden; }
|
13 |
+
|
14 |
+
.fancybox-container {
|
15 |
+
-webkit-backface-visibility: hidden;
|
16 |
+
height: 100%;
|
17 |
+
left: 0;
|
18 |
+
outline: none;
|
19 |
+
position: fixed;
|
20 |
+
-webkit-tap-highlight-color: transparent;
|
21 |
+
top: 0;
|
22 |
+
-ms-touch-action: manipulation;
|
23 |
+
touch-action: manipulation;
|
24 |
+
-webkit-transform: translateZ(0);
|
25 |
+
transform: translateZ(0);
|
26 |
+
width: 100%;
|
27 |
+
z-index: 99992; }
|
28 |
+
|
29 |
+
.fancybox-container * {
|
30 |
+
box-sizing: border-box; }
|
31 |
+
|
32 |
+
.fancybox-outer,
|
33 |
+
.fancybox-inner,
|
34 |
+
.fancybox-bg,
|
35 |
+
.fancybox-stage {
|
36 |
+
bottom: 0;
|
37 |
+
left: 0;
|
38 |
+
position: absolute;
|
39 |
+
right: 0;
|
40 |
+
top: 0; }
|
41 |
+
|
42 |
+
.fancybox-outer {
|
43 |
+
-webkit-overflow-scrolling: touch;
|
44 |
+
overflow-y: auto; }
|
45 |
+
|
46 |
+
.fancybox-bg {
|
47 |
+
background: #1e1e1e;
|
48 |
+
opacity: 0;
|
49 |
+
transition-duration: inherit;
|
50 |
+
transition-property: opacity;
|
51 |
+
transition-timing-function: cubic-bezier(0.47, 0, 0.74, 0.71); }
|
52 |
+
|
53 |
+
.fancybox-is-open .fancybox-bg {
|
54 |
+
opacity: .9;
|
55 |
+
transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1); }
|
56 |
+
|
57 |
+
.fancybox-infobar,
|
58 |
+
.fancybox-toolbar,
|
59 |
+
.fancybox-caption,
|
60 |
+
.fancybox-navigation .fancybox-button {
|
61 |
+
direction: ltr;
|
62 |
+
opacity: 0;
|
63 |
+
position: absolute;
|
64 |
+
transition: opacity .25s ease, visibility 0s ease .25s;
|
65 |
+
visibility: hidden;
|
66 |
+
z-index: 99997; }
|
67 |
+
|
68 |
+
.fancybox-show-infobar .fancybox-infobar,
|
69 |
+
.fancybox-show-toolbar .fancybox-toolbar,
|
70 |
+
.fancybox-show-caption .fancybox-caption,
|
71 |
+
.fancybox-show-nav .fancybox-navigation .fancybox-button {
|
72 |
+
opacity: 1;
|
73 |
+
transition: opacity .25s ease 0s, visibility 0s ease 0s;
|
74 |
+
visibility: visible; }
|
75 |
+
|
76 |
+
.fancybox-infobar {
|
77 |
+
color: #ccc;
|
78 |
+
font-size: 13px;
|
79 |
+
-webkit-font-smoothing: subpixel-antialiased;
|
80 |
+
height: 44px;
|
81 |
+
left: 0;
|
82 |
+
line-height: 44px;
|
83 |
+
min-width: 44px;
|
84 |
+
mix-blend-mode: difference;
|
85 |
+
padding: 0 10px;
|
86 |
+
pointer-events: none;
|
87 |
+
top: 0;
|
88 |
+
-webkit-touch-callout: none;
|
89 |
+
-webkit-user-select: none;
|
90 |
+
-moz-user-select: none;
|
91 |
+
-ms-user-select: none;
|
92 |
+
user-select: none; }
|
93 |
+
|
94 |
+
.fancybox-toolbar {
|
95 |
+
right: 0;
|
96 |
+
top: 0; }
|
97 |
+
|
98 |
+
.fancybox-stage {
|
99 |
+
direction: ltr;
|
100 |
+
overflow: visible;
|
101 |
+
-webkit-transform: translateZ(0);
|
102 |
+
transform: translateZ(0);
|
103 |
+
z-index: 99994; }
|
104 |
+
|
105 |
+
.fancybox-is-open .fancybox-stage {
|
106 |
+
overflow: hidden; }
|
107 |
+
|
108 |
+
.fancybox-slide {
|
109 |
+
-webkit-backface-visibility: hidden;
|
110 |
+
/* Using without prefix would break IE11 */
|
111 |
+
display: none;
|
112 |
+
height: 100%;
|
113 |
+
left: 0;
|
114 |
+
outline: none;
|
115 |
+
overflow: auto;
|
116 |
+
-webkit-overflow-scrolling: touch;
|
117 |
+
padding: 44px;
|
118 |
+
position: absolute;
|
119 |
+
text-align: center;
|
120 |
+
top: 0;
|
121 |
+
transition-property: opacity, -webkit-transform;
|
122 |
+
transition-property: transform, opacity;
|
123 |
+
transition-property: transform, opacity, -webkit-transform;
|
124 |
+
white-space: normal;
|
125 |
+
width: 100%;
|
126 |
+
z-index: 99994; }
|
127 |
+
|
128 |
+
.fancybox-slide::before {
|
129 |
+
content: '';
|
130 |
+
display: inline-block;
|
131 |
+
font-size: 0;
|
132 |
+
height: 100%;
|
133 |
+
vertical-align: middle;
|
134 |
+
width: 0; }
|
135 |
+
|
136 |
+
.fancybox-is-sliding .fancybox-slide,
|
137 |
+
.fancybox-slide--previous,
|
138 |
+
.fancybox-slide--current,
|
139 |
+
.fancybox-slide--next {
|
140 |
+
display: block; }
|
141 |
+
|
142 |
+
.fancybox-slide--image {
|
143 |
+
overflow: hidden;
|
144 |
+
padding: 44px 0; }
|
145 |
+
|
146 |
+
.fancybox-slide--image::before {
|
147 |
+
display: none; }
|
148 |
+
|
149 |
+
.fancybox-slide--html {
|
150 |
+
padding: 6px; }
|
151 |
+
|
152 |
+
.fancybox-content {
|
153 |
+
background: #fff;
|
154 |
+
display: inline-block;
|
155 |
+
margin: 0;
|
156 |
+
max-width: 100%;
|
157 |
+
overflow: auto;
|
158 |
+
-webkit-overflow-scrolling: touch;
|
159 |
+
padding: 44px;
|
160 |
+
position: relative;
|
161 |
+
text-align: left;
|
162 |
+
vertical-align: middle; }
|
163 |
+
|
164 |
+
.fancybox-slide--image .fancybox-content {
|
165 |
+
-webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.14, 1);
|
166 |
+
animation-timing-function: cubic-bezier(0.5, 0, 0.14, 1);
|
167 |
+
-webkit-backface-visibility: hidden;
|
168 |
+
background: transparent;
|
169 |
+
background-repeat: no-repeat;
|
170 |
+
background-size: 100% 100%;
|
171 |
+
left: 0;
|
172 |
+
max-width: none;
|
173 |
+
overflow: visible;
|
174 |
+
padding: 0;
|
175 |
+
position: absolute;
|
176 |
+
top: 0;
|
177 |
+
-webkit-transform-origin: top left;
|
178 |
+
-ms-transform-origin: top left;
|
179 |
+
transform-origin: top left;
|
180 |
+
transition-property: opacity, -webkit-transform;
|
181 |
+
transition-property: transform, opacity;
|
182 |
+
transition-property: transform, opacity, -webkit-transform;
|
183 |
+
-webkit-user-select: none;
|
184 |
+
-moz-user-select: none;
|
185 |
+
-ms-user-select: none;
|
186 |
+
user-select: none;
|
187 |
+
z-index: 99995; }
|
188 |
+
|
189 |
+
.fancybox-can-zoomOut .fancybox-content {
|
190 |
+
cursor: -webkit-zoom-out;
|
191 |
+
cursor: zoom-out; }
|
192 |
+
|
193 |
+
.fancybox-can-zoomIn .fancybox-content {
|
194 |
+
cursor: -webkit-zoom-in;
|
195 |
+
cursor: zoom-in; }
|
196 |
+
|
197 |
+
.fancybox-can-swipe .fancybox-content,
|
198 |
+
.fancybox-can-pan .fancybox-content {
|
199 |
+
cursor: -webkit-grab;
|
200 |
+
cursor: grab; }
|
201 |
+
|
202 |
+
.fancybox-is-grabbing .fancybox-content {
|
203 |
+
cursor: -webkit-grabbing;
|
204 |
+
cursor: grabbing; }
|
205 |
+
|
206 |
+
.fancybox-container [data-selectable='true'] {
|
207 |
+
cursor: text; }
|
208 |
+
|
209 |
+
.fancybox-image,
|
210 |
+
.fancybox-spaceball {
|
211 |
+
background: transparent;
|
212 |
+
border: 0;
|
213 |
+
height: 100%;
|
214 |
+
left: 0;
|
215 |
+
margin: 0;
|
216 |
+
max-height: none;
|
217 |
+
max-width: none;
|
218 |
+
padding: 0;
|
219 |
+
position: absolute;
|
220 |
+
top: 0;
|
221 |
+
-webkit-user-select: none;
|
222 |
+
-moz-user-select: none;
|
223 |
+
-ms-user-select: none;
|
224 |
+
user-select: none;
|
225 |
+
width: 100%; }
|
226 |
+
|
227 |
+
.fancybox-spaceball {
|
228 |
+
z-index: 1; }
|
229 |
+
|
230 |
+
.fancybox-slide--video .fancybox-content,
|
231 |
+
.fancybox-slide--map .fancybox-content,
|
232 |
+
.fancybox-slide--pdf .fancybox-content,
|
233 |
+
.fancybox-slide--iframe .fancybox-content {
|
234 |
+
height: 100%;
|
235 |
+
overflow: visible;
|
236 |
+
padding: 0;
|
237 |
+
width: 100%; }
|
238 |
+
|
239 |
+
.fancybox-slide--video .fancybox-content {
|
240 |
+
background: #000; }
|
241 |
+
|
242 |
+
.fancybox-slide--map .fancybox-content {
|
243 |
+
background: #e5e3df; }
|
244 |
+
|
245 |
+
.fancybox-slide--iframe .fancybox-content {
|
246 |
+
background: #fff; }
|
247 |
+
|
248 |
+
.fancybox-video,
|
249 |
+
.fancybox-iframe {
|
250 |
+
background: transparent;
|
251 |
+
border: 0;
|
252 |
+
display: block;
|
253 |
+
height: 100%;
|
254 |
+
margin: 0;
|
255 |
+
overflow: hidden;
|
256 |
+
padding: 0;
|
257 |
+
width: 100%; }
|
258 |
+
|
259 |
+
/* Fix iOS */
|
260 |
+
.fancybox-iframe {
|
261 |
+
left: 0;
|
262 |
+
position: absolute;
|
263 |
+
top: 0; }
|
264 |
+
|
265 |
+
.fancybox-error {
|
266 |
+
background: #fff;
|
267 |
+
cursor: default;
|
268 |
+
max-width: 400px;
|
269 |
+
padding: 40px;
|
270 |
+
width: 100%; }
|
271 |
+
|
272 |
+
.fancybox-error p {
|
273 |
+
color: #444;
|
274 |
+
font-size: 16px;
|
275 |
+
line-height: 20px;
|
276 |
+
margin: 0;
|
277 |
+
padding: 0; }
|
278 |
+
|
279 |
+
/* Buttons */
|
280 |
+
.fancybox-button {
|
281 |
+
background: rgba(30, 30, 30, 0.6);
|
282 |
+
border: 0;
|
283 |
+
border-radius: 0;
|
284 |
+
box-shadow: none;
|
285 |
+
cursor: pointer;
|
286 |
+
display: inline-block;
|
287 |
+
height: 44px;
|
288 |
+
margin: 0;
|
289 |
+
padding: 10px;
|
290 |
+
position: relative;
|
291 |
+
transition: color .2s;
|
292 |
+
vertical-align: top;
|
293 |
+
visibility: inherit;
|
294 |
+
width: 44px; }
|
295 |
+
|
296 |
+
.fancybox-button,
|
297 |
+
.fancybox-button:visited,
|
298 |
+
.fancybox-button:link {
|
299 |
+
color: #ccc; }
|
300 |
+
|
301 |
+
.fancybox-button:hover {
|
302 |
+
color: #fff; }
|
303 |
+
|
304 |
+
.fancybox-button:focus {
|
305 |
+
outline: none; }
|
306 |
+
|
307 |
+
.fancybox-button.fancybox-focus {
|
308 |
+
outline: 1px dotted; }
|
309 |
+
|
310 |
+
.fancybox-button[disabled],
|
311 |
+
.fancybox-button[disabled]:hover {
|
312 |
+
color: #888;
|
313 |
+
cursor: default;
|
314 |
+
outline: none; }
|
315 |
+
|
316 |
+
/* Fix IE11 */
|
317 |
+
.fancybox-button div {
|
318 |
+
height: 100%; }
|
319 |
+
|
320 |
+
.fancybox-button svg {
|
321 |
+
display: block;
|
322 |
+
height: 100%;
|
323 |
+
overflow: visible;
|
324 |
+
position: relative;
|
325 |
+
width: 100%; }
|
326 |
+
|
327 |
+
.fancybox-button svg path {
|
328 |
+
fill: currentColor;
|
329 |
+
stroke-width: 0; }
|
330 |
+
|
331 |
+
.fancybox-button--play svg:nth-child(2),
|
332 |
+
.fancybox-button--fsenter svg:nth-child(2) {
|
333 |
+
display: none; }
|
334 |
+
|
335 |
+
.fancybox-button--pause svg:nth-child(1),
|
336 |
+
.fancybox-button--fsexit svg:nth-child(1) {
|
337 |
+
display: none; }
|
338 |
+
|
339 |
+
.fancybox-progress {
|
340 |
+
background: #ff5268;
|
341 |
+
height: 2px;
|
342 |
+
left: 0;
|
343 |
+
position: absolute;
|
344 |
+
right: 0;
|
345 |
+
top: 0;
|
346 |
+
-webkit-transform: scaleX(0);
|
347 |
+
-ms-transform: scaleX(0);
|
348 |
+
transform: scaleX(0);
|
349 |
+
-webkit-transform-origin: 0;
|
350 |
+
-ms-transform-origin: 0;
|
351 |
+
transform-origin: 0;
|
352 |
+
transition-property: -webkit-transform;
|
353 |
+
transition-property: transform;
|
354 |
+
transition-property: transform, -webkit-transform;
|
355 |
+
transition-timing-function: linear;
|
356 |
+
z-index: 99998; }
|
357 |
+
|
358 |
+
/* Close button on the top right corner of html content */
|
359 |
+
.fancybox-close-small {
|
360 |
+
background: transparent;
|
361 |
+
border: 0;
|
362 |
+
border-radius: 0;
|
363 |
+
color: #ccc;
|
364 |
+
cursor: pointer;
|
365 |
+
opacity: .8;
|
366 |
+
padding: 8px;
|
367 |
+
position: absolute;
|
368 |
+
right: -12px;
|
369 |
+
top: -44px;
|
370 |
+
z-index: 401; }
|
371 |
+
|
372 |
+
.fancybox-close-small:hover {
|
373 |
+
color: #fff;
|
374 |
+
opacity: 1; }
|
375 |
+
|
376 |
+
.fancybox-slide--html .fancybox-close-small {
|
377 |
+
color: currentColor;
|
378 |
+
padding: 10px;
|
379 |
+
right: 0;
|
380 |
+
top: 0; }
|
381 |
+
|
382 |
+
.fancybox-slide--image.fancybox-is-scaling .fancybox-content {
|
383 |
+
overflow: hidden; }
|
384 |
+
|
385 |
+
.fancybox-is-scaling .fancybox-close-small,
|
386 |
+
.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small {
|
387 |
+
display: none; }
|
388 |
+
|
389 |
+
/* Navigation arrows */
|
390 |
+
.fancybox-navigation .fancybox-button {
|
391 |
+
background-clip: content-box;
|
392 |
+
height: 100px;
|
393 |
+
opacity: 0;
|
394 |
+
position: absolute;
|
395 |
+
top: calc(50% - 50px);
|
396 |
+
width: 70px; }
|
397 |
+
|
398 |
+
.fancybox-navigation .fancybox-button div {
|
399 |
+
padding: 7px; }
|
400 |
+
|
401 |
+
.fancybox-navigation .fancybox-button--arrow_left {
|
402 |
+
left: 0;
|
403 |
+
padding: 31px 26px 31px 6px; }
|
404 |
+
|
405 |
+
.fancybox-navigation .fancybox-button--arrow_right {
|
406 |
+
padding: 31px 6px 31px 26px;
|
407 |
+
right: 0; }
|
408 |
+
|
409 |
+
/* Caption */
|
410 |
+
.fancybox-caption {
|
411 |
+
bottom: 0;
|
412 |
+
color: #eee;
|
413 |
+
font-size: 14px;
|
414 |
+
font-weight: 400;
|
415 |
+
left: 0;
|
416 |
+
line-height: 1.5;
|
417 |
+
padding: 25px 44px 25px 44px;
|
418 |
+
right: 0;
|
419 |
+
text-align: center;
|
420 |
+
z-index: 99996; }
|
421 |
+
|
422 |
+
.fancybox-caption::before {
|
423 |
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAD6CAQAAADKSeXYAAAAYklEQVQoz42RwQ3AMAgDjfcfup8WoRykfBAK5mQHKSz5rbXJPis1hjiV3CIqgG0hLZPkVkA4p4x5oR1bVeDrdCLrW2Q0D5bcwY3TGMHbdw3mPRuOtaspYP1w//G1OIcW148H0DMCqI/3mMMAAAAASUVORK5CYII=);
|
424 |
+
background-repeat: repeat-x;
|
425 |
+
background-size: contain;
|
426 |
+
bottom: 0;
|
427 |
+
content: '';
|
428 |
+
display: block;
|
429 |
+
left: 0;
|
430 |
+
pointer-events: none;
|
431 |
+
position: absolute;
|
432 |
+
right: 0;
|
433 |
+
top: -44px;
|
434 |
+
z-index: -1; }
|
435 |
+
|
436 |
+
.fancybox-caption a,
|
437 |
+
.fancybox-caption a:link,
|
438 |
+
.fancybox-caption a:visited {
|
439 |
+
color: #ccc;
|
440 |
+
text-decoration: none; }
|
441 |
+
|
442 |
+
.fancybox-caption a:hover {
|
443 |
+
color: #fff;
|
444 |
+
text-decoration: underline; }
|
445 |
+
|
446 |
+
/* Loading indicator */
|
447 |
+
.fancybox-loading {
|
448 |
+
-webkit-animation: fancybox-rotate 1s linear infinite;
|
449 |
+
animation: fancybox-rotate 1s linear infinite;
|
450 |
+
background: transparent;
|
451 |
+
border: 4px solid #888;
|
452 |
+
border-bottom-color: #fff;
|
453 |
+
border-radius: 50%;
|
454 |
+
height: 50px;
|
455 |
+
left: 50%;
|
456 |
+
margin: -25px 0 0 -25px;
|
457 |
+
opacity: .7;
|
458 |
+
padding: 0;
|
459 |
+
position: absolute;
|
460 |
+
top: 50%;
|
461 |
+
width: 50px;
|
462 |
+
z-index: 99999; }
|
463 |
+
|
464 |
+
@-webkit-keyframes fancybox-rotate {
|
465 |
+
100% {
|
466 |
+
-webkit-transform: rotate(360deg);
|
467 |
+
transform: rotate(360deg); } }
|
468 |
+
|
469 |
+
@keyframes fancybox-rotate {
|
470 |
+
100% {
|
471 |
+
-webkit-transform: rotate(360deg);
|
472 |
+
transform: rotate(360deg); } }
|
473 |
+
|
474 |
+
/* Transition effects */
|
475 |
+
.fancybox-animated {
|
476 |
+
transition-timing-function: cubic-bezier(0, 0, 0.25, 1); }
|
477 |
+
|
478 |
+
/* transitionEffect: slide */
|
479 |
+
.fancybox-fx-slide.fancybox-slide--previous {
|
480 |
+
opacity: 0;
|
481 |
+
-webkit-transform: translate3d(-100%, 0, 0);
|
482 |
+
transform: translate3d(-100%, 0, 0); }
|
483 |
+
|
484 |
+
.fancybox-fx-slide.fancybox-slide--next {
|
485 |
+
opacity: 0;
|
486 |
+
-webkit-transform: translate3d(100%, 0, 0);
|
487 |
+
transform: translate3d(100%, 0, 0); }
|
488 |
+
|
489 |
+
.fancybox-fx-slide.fancybox-slide--current {
|
490 |
+
opacity: 1;
|
491 |
+
-webkit-transform: translate3d(0, 0, 0);
|
492 |
+
transform: translate3d(0, 0, 0); }
|
493 |
+
|
494 |
+
/* transitionEffect: fade */
|
495 |
+
.fancybox-fx-fade.fancybox-slide--previous,
|
496 |
+
.fancybox-fx-fade.fancybox-slide--next {
|
497 |
+
opacity: 0;
|
498 |
+
transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
|
499 |
+
|
500 |
+
.fancybox-fx-fade.fancybox-slide--current {
|
501 |
+
opacity: 1; }
|
502 |
+
|
503 |
+
/* transitionEffect: zoom-in-out */
|
504 |
+
.fancybox-fx-zoom-in-out.fancybox-slide--previous {
|
505 |
+
opacity: 0;
|
506 |
+
-webkit-transform: scale3d(1.5, 1.5, 1.5);
|
507 |
+
transform: scale3d(1.5, 1.5, 1.5); }
|
508 |
+
|
509 |
+
.fancybox-fx-zoom-in-out.fancybox-slide--next {
|
510 |
+
opacity: 0;
|
511 |
+
-webkit-transform: scale3d(0.5, 0.5, 0.5);
|
512 |
+
transform: scale3d(0.5, 0.5, 0.5); }
|
513 |
+
|
514 |
+
.fancybox-fx-zoom-in-out.fancybox-slide--current {
|
515 |
+
opacity: 1;
|
516 |
+
-webkit-transform: scale3d(1, 1, 1);
|
517 |
+
transform: scale3d(1, 1, 1); }
|
518 |
+
|
519 |
+
/* transitionEffect: rotate */
|
520 |
+
.fancybox-fx-rotate.fancybox-slide--previous {
|
521 |
+
opacity: 0;
|
522 |
+
-webkit-transform: rotate(-360deg);
|
523 |
+
-ms-transform: rotate(-360deg);
|
524 |
+
transform: rotate(-360deg); }
|
525 |
+
|
526 |
+
.fancybox-fx-rotate.fancybox-slide--next {
|
527 |
+
opacity: 0;
|
528 |
+
-webkit-transform: rotate(360deg);
|
529 |
+
-ms-transform: rotate(360deg);
|
530 |
+
transform: rotate(360deg); }
|
531 |
+
|
532 |
+
.fancybox-fx-rotate.fancybox-slide--current {
|
533 |
+
opacity: 1;
|
534 |
+
-webkit-transform: rotate(0deg);
|
535 |
+
-ms-transform: rotate(0deg);
|
536 |
+
transform: rotate(0deg); }
|
537 |
+
|
538 |
+
/* transitionEffect: circular */
|
539 |
+
.fancybox-fx-circular.fancybox-slide--previous {
|
540 |
+
opacity: 0;
|
541 |
+
-webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
|
542 |
+
transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); }
|
543 |
+
|
544 |
+
.fancybox-fx-circular.fancybox-slide--next {
|
545 |
+
opacity: 0;
|
546 |
+
-webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
|
547 |
+
transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); }
|
548 |
+
|
549 |
+
.fancybox-fx-circular.fancybox-slide--current {
|
550 |
+
opacity: 1;
|
551 |
+
-webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
|
552 |
+
transform: scale3d(1, 1, 1) translate3d(0, 0, 0); }
|
553 |
+
|
554 |
+
/* transitionEffect: tube */
|
555 |
+
.fancybox-fx-tube.fancybox-slide--previous {
|
556 |
+
-webkit-transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg);
|
557 |
+
transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); }
|
558 |
+
|
559 |
+
.fancybox-fx-tube.fancybox-slide--next {
|
560 |
+
-webkit-transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg);
|
561 |
+
transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg); }
|
562 |
+
|
563 |
+
.fancybox-fx-tube.fancybox-slide--current {
|
564 |
+
-webkit-transform: translate3d(0, 0, 0) scale(1);
|
565 |
+
transform: translate3d(0, 0, 0) scale(1); }
|
566 |
+
|
567 |
+
/* Styling for Small-Screen Devices */
|
568 |
+
@media all and (max-height: 576px) {
|
569 |
+
.fancybox-caption {
|
570 |
+
padding: 12px; }
|
571 |
+
.fancybox-slide {
|
572 |
+
padding-left: 6px;
|
573 |
+
padding-right: 6px; }
|
574 |
+
.fancybox-slide--image {
|
575 |
+
padding: 6px 0; }
|
576 |
+
.fancybox-close-small {
|
577 |
+
right: -6px; }
|
578 |
+
.fancybox-slide--image .fancybox-close-small {
|
579 |
+
background: #4e4e4e;
|
580 |
+
color: #f2f4f6;
|
581 |
+
height: 36px;
|
582 |
+
opacity: 1;
|
583 |
+
padding: 6px;
|
584 |
+
right: 0;
|
585 |
+
top: 0;
|
586 |
+
width: 36px; } }
|
587 |
+
|
588 |
+
/* Share */
|
589 |
+
.fancybox-share {
|
590 |
+
background: #f4f4f4;
|
591 |
+
border-radius: 3px;
|
592 |
+
max-width: 90%;
|
593 |
+
padding: 30px;
|
594 |
+
text-align: center; }
|
595 |
+
|
596 |
+
.fancybox-share h1 {
|
597 |
+
color: #222;
|
598 |
+
font-size: 35px;
|
599 |
+
font-weight: 700;
|
600 |
+
margin: 0 0 20px 0; }
|
601 |
+
|
602 |
+
.fancybox-share p {
|
603 |
+
margin: 0;
|
604 |
+
padding: 0; }
|
605 |
+
|
606 |
+
.fancybox-share__button {
|
607 |
+
border: 0;
|
608 |
+
border-radius: 3px;
|
609 |
+
display: inline-block;
|
610 |
+
font-size: 14px;
|
611 |
+
font-weight: 700;
|
612 |
+
line-height: 40px;
|
613 |
+
margin: 0 5px 10px 5px;
|
614 |
+
min-width: 130px;
|
615 |
+
padding: 0 15px;
|
616 |
+
text-decoration: none;
|
617 |
+
transition: all .2s;
|
618 |
+
-webkit-user-select: none;
|
619 |
+
-moz-user-select: none;
|
620 |
+
-ms-user-select: none;
|
621 |
+
user-select: none;
|
622 |
+
white-space: nowrap; }
|
623 |
+
|
624 |
+
.fancybox-share__button:visited,
|
625 |
+
.fancybox-share__button:link {
|
626 |
+
color: #fff; }
|
627 |
+
|
628 |
+
.fancybox-share__button:hover {
|
629 |
+
text-decoration: none; }
|
630 |
+
|
631 |
+
.fancybox-share__button--fb {
|
632 |
+
background: #3b5998; }
|
633 |
+
|
634 |
+
.fancybox-share__button--fb:hover {
|
635 |
+
background: #344e86; }
|
636 |
+
|
637 |
+
.fancybox-share__button--pt {
|
638 |
+
background: #bd081d; }
|
639 |
+
|
640 |
+
.fancybox-share__button--pt:hover {
|
641 |
+
background: #aa0719; }
|
642 |
+
|
643 |
+
.fancybox-share__button--tw {
|
644 |
+
background: #1da1f2; }
|
645 |
+
|
646 |
+
.fancybox-share__button--tw:hover {
|
647 |
+
background: #0d95e8; }
|
648 |
+
|
649 |
+
.fancybox-share__button svg {
|
650 |
+
height: 25px;
|
651 |
+
margin-right: 7px;
|
652 |
+
position: relative;
|
653 |
+
top: -1px;
|
654 |
+
vertical-align: middle;
|
655 |
+
width: 25px; }
|
656 |
+
|
657 |
+
.fancybox-share__button svg path {
|
658 |
+
fill: #fff; }
|
659 |
+
|
660 |
+
.fancybox-share__input {
|
661 |
+
background: transparent;
|
662 |
+
border: 0;
|
663 |
+
border-bottom: 1px solid #d7d7d7;
|
664 |
+
border-radius: 0;
|
665 |
+
color: #5d5b5b;
|
666 |
+
font-size: 14px;
|
667 |
+
margin: 10px 0 0 0;
|
668 |
+
outline: none;
|
669 |
+
padding: 10px 15px;
|
670 |
+
width: 100%; }
|
671 |
+
|
672 |
+
/* Thumbs */
|
673 |
+
.fancybox-thumbs {
|
674 |
+
background: #ddd;
|
675 |
+
bottom: 0;
|
676 |
+
display: none;
|
677 |
+
margin: 0;
|
678 |
+
-webkit-overflow-scrolling: touch;
|
679 |
+
-ms-overflow-style: -ms-autohiding-scrollbar;
|
680 |
+
padding: 2px 2px 4px 2px;
|
681 |
+
position: absolute;
|
682 |
+
right: 0;
|
683 |
+
-webkit-tap-highlight-color: transparent;
|
684 |
+
top: 0;
|
685 |
+
width: 212px;
|
686 |
+
z-index: 99995; }
|
687 |
+
|
688 |
+
.fancybox-thumbs-x {
|
689 |
+
overflow-x: auto;
|
690 |
+
overflow-y: hidden; }
|
691 |
+
|
692 |
+
.fancybox-show-thumbs .fancybox-thumbs {
|
693 |
+
display: block; }
|
694 |
+
|
695 |
+
.fancybox-show-thumbs .fancybox-inner {
|
696 |
+
right: 212px; }
|
697 |
+
|
698 |
+
.fancybox-thumbs__list {
|
699 |
+
font-size: 0;
|
700 |
+
height: 100%;
|
701 |
+
list-style: none;
|
702 |
+
margin: 0;
|
703 |
+
overflow-x: hidden;
|
704 |
+
overflow-y: auto;
|
705 |
+
padding: 0;
|
706 |
+
position: absolute;
|
707 |
+
position: relative;
|
708 |
+
white-space: nowrap;
|
709 |
+
width: 100%; }
|
710 |
+
|
711 |
+
.fancybox-thumbs-x .fancybox-thumbs__list {
|
712 |
+
overflow: hidden; }
|
713 |
+
|
714 |
+
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar {
|
715 |
+
width: 7px; }
|
716 |
+
|
717 |
+
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track {
|
718 |
+
background: #fff;
|
719 |
+
border-radius: 10px;
|
720 |
+
box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); }
|
721 |
+
|
722 |
+
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb {
|
723 |
+
background: #2a2a2a;
|
724 |
+
border-radius: 10px; }
|
725 |
+
|
726 |
+
.fancybox-thumbs__list a {
|
727 |
+
-webkit-backface-visibility: hidden;
|
728 |
+
backface-visibility: hidden;
|
729 |
+
background-color: rgba(0, 0, 0, 0.1);
|
730 |
+
background-position: center center;
|
731 |
+
background-repeat: no-repeat;
|
732 |
+
background-size: cover;
|
733 |
+
cursor: pointer;
|
734 |
+
float: left;
|
735 |
+
height: 75px;
|
736 |
+
margin: 2px;
|
737 |
+
max-height: calc(100% - 8px);
|
738 |
+
max-width: calc(50% - 4px);
|
739 |
+
outline: none;
|
740 |
+
overflow: hidden;
|
741 |
+
padding: 0;
|
742 |
+
position: relative;
|
743 |
+
-webkit-tap-highlight-color: transparent;
|
744 |
+
width: 100px; }
|
745 |
+
|
746 |
+
.fancybox-thumbs__list a::before {
|
747 |
+
border: 6px solid #ff5268;
|
748 |
+
bottom: 0;
|
749 |
+
content: '';
|
750 |
+
left: 0;
|
751 |
+
opacity: 0;
|
752 |
+
position: absolute;
|
753 |
+
right: 0;
|
754 |
+
top: 0;
|
755 |
+
transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
756 |
+
z-index: 99991; }
|
757 |
+
|
758 |
+
.fancybox-thumbs__list a:focus::before {
|
759 |
+
opacity: .5; }
|
760 |
+
|
761 |
+
.fancybox-thumbs__list a.fancybox-thumbs-active::before {
|
762 |
+
opacity: 1; }
|
763 |
+
|
764 |
+
/* Styling for Small-Screen Devices */
|
765 |
+
@media all and (max-width: 576px) {
|
766 |
+
.fancybox-thumbs {
|
767 |
+
width: 110px; }
|
768 |
+
.fancybox-show-thumbs .fancybox-inner {
|
769 |
+
right: 110px; }
|
770 |
+
.fancybox-thumbs__list a {
|
771 |
+
max-width: calc(100% - 10px); } }
|
admin/fancybox/jquery.fancybox.js
ADDED
@@ -0,0 +1,5629 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|